sensu-plugins-stackstorm 0.0.2 → 0.1.1
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/bin/st2_handler.py +82 -29
- data/bin/st2_handler.rb +5 -0
- data/lib/sensu-plugins-stackstorm.rb +1 -0
- data/lib/sensu-plugins-stackstorm/command.rb +10 -0
- data/lib/sensu-plugins-stackstorm/version.rb +3 -0
- metadata +10 -12
- data/.gitignore +0 -2
- data/.travis.yml +0 -34
- data/Gemfile +0 -3
- data/README.md +0 -7
- data/Rakefile +0 -6
- data/etc/st2_handler.conf +0 -14
- data/lib/.gitkeep +0 -0
- data/sensu-plugins-stackstorm.gemspec +0 -20
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 33eeae3a3a44a8091ccb1a0ed48defe122ef6bdb
|
4
|
+
data.tar.gz: e94b67363bf388bb9cd9954f8784f21aca3ea04a
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 846c6217e64faaff9ff015f93ec46d3633cbee498d5c5bd4c8cb4d876653fb3258cb40194c4a67d262fad31aba65162f013d4abfd9c3006bb5c45e99541fed65
|
7
|
+
data.tar.gz: f98ccc752e68e9f90f2b80fad7c91baadd905fe601c15731b2c047196e2f3d097d6ef5708271b5cfe0cec571a8104d8213d7a3a5a29e0900cc159be4976a8316
|
data/bin/st2_handler.py
CHANGED
@@ -25,6 +25,9 @@ except ImportError:
|
|
25
25
|
raise ImportError('Missing dependency "pyyaml". \
|
26
26
|
Do ``pip install pyyaml``.')
|
27
27
|
|
28
|
+
import re
|
29
|
+
import six
|
30
|
+
|
28
31
|
# ST2 configuration
|
29
32
|
|
30
33
|
ST2_API_BASE_URL = None # 'https://localhost/api/v1/'
|
@@ -60,6 +63,56 @@ TOKEN_AUTH_HEADER = 'X-Auth-Token'
|
|
60
63
|
API_KEY_AUTH_HEADER = 'St2-Api-Key'
|
61
64
|
|
62
65
|
|
66
|
+
class ConfigMeta(type):
|
67
|
+
def __getitem__(kls, key):
|
68
|
+
loaded_config = {}
|
69
|
+
for fpath in kls.get_config_files():
|
70
|
+
with open(fpath, 'r') as f:
|
71
|
+
loaded_config.update(json.loads(f.read()))
|
72
|
+
|
73
|
+
return loaded_config.get(key)
|
74
|
+
|
75
|
+
def __contains__(kls, key):
|
76
|
+
is_contains = False
|
77
|
+
for fpath in kls.get_config_files():
|
78
|
+
if is_contains:
|
79
|
+
break
|
80
|
+
|
81
|
+
with open(fpath, 'r') as f:
|
82
|
+
is_contains = key in json.loads(f.read())
|
83
|
+
|
84
|
+
return is_contains
|
85
|
+
|
86
|
+
class ConfigBase(six.with_metaclass(ConfigMeta)):
|
87
|
+
@classmethod
|
88
|
+
def get_config_files(kls):
|
89
|
+
config_files = []
|
90
|
+
if (os.environ.get('SENSU_LOADED_TEMPFILE') and
|
91
|
+
os.path.exists(os.environ.get('SENSU_LOADED_TEMPFILE'))):
|
92
|
+
with open(os.environ.get('SENSU_LOADED_TEMPFILE'), 'r') as f:
|
93
|
+
config_files = f.read().split(':')
|
94
|
+
return config_files
|
95
|
+
|
96
|
+
elif os.environ.get('SENSU_CONFIG_FILES'):
|
97
|
+
return os.environ.get('SENSU_CONFIG_FILES').split(':')
|
98
|
+
|
99
|
+
else:
|
100
|
+
for basedir, _, files in os.walk(kls.CONFIG_DIR_BASE):
|
101
|
+
config_files.extend(['%s/%s' % (basedir, x) for x in files
|
102
|
+
if re.match(".*\.json$", x)])
|
103
|
+
return config_files
|
104
|
+
|
105
|
+
@classmethod
|
106
|
+
def get(kls, key, default=None):
|
107
|
+
if key not in kls:
|
108
|
+
return default
|
109
|
+
else:
|
110
|
+
return kls[key]
|
111
|
+
|
112
|
+
class Config(ConfigBase):
|
113
|
+
CONFIG_DIR_BASE = '/etc/sensu'
|
114
|
+
|
115
|
+
|
63
116
|
def _get_sensu_request_headers():
|
64
117
|
b64auth = base64.b64encode(
|
65
118
|
"%s:%s" %
|
@@ -293,7 +346,7 @@ def _register_with_st2(verbose=False):
|
|
293
346
|
sys.exit(2)
|
294
347
|
|
295
348
|
|
296
|
-
def _set_config_opts(
|
349
|
+
def _set_config_opts(verbose=False, unauthed=False, ssl_verify=False):
|
297
350
|
global ST2_USERNAME
|
298
351
|
global ST2_PASSWORD
|
299
352
|
global ST2_API_KEY
|
@@ -312,29 +365,33 @@ def _set_config_opts(config_file, verbose=False, unauthed=False, ssl_verify=Fals
|
|
312
365
|
UNAUTHED = unauthed
|
313
366
|
ST2_SSL_VERIFY = ssl_verify
|
314
367
|
|
315
|
-
|
316
|
-
|
317
|
-
|
368
|
+
# These are default configurations
|
369
|
+
config = {
|
370
|
+
'st2_username': 'st2admin',
|
371
|
+
'st2_password': 'password',
|
372
|
+
'st2_api_key': '',
|
373
|
+
'st2_api_base_url': 'http://localhost:9101/v1/',
|
374
|
+
'st2_auth_base_url': 'http://localhost:9100/',
|
375
|
+
}
|
318
376
|
|
319
|
-
|
320
|
-
config = yaml.safe_load(f)
|
377
|
+
config.update(Config.get('st2_handler', {}))
|
321
378
|
|
322
|
-
|
323
|
-
|
324
|
-
|
325
|
-
|
326
|
-
|
327
|
-
|
328
|
-
|
329
|
-
|
330
|
-
|
331
|
-
|
332
|
-
|
333
|
-
|
334
|
-
|
335
|
-
|
336
|
-
|
337
|
-
|
379
|
+
if verbose:
|
380
|
+
print('Contents of config file: %s' % config)
|
381
|
+
|
382
|
+
ST2_USERNAME = config['st2_username']
|
383
|
+
ST2_PASSWORD = config['st2_password']
|
384
|
+
ST2_API_KEY = config['st2_api_key']
|
385
|
+
ST2_API_BASE_URL = config['st2_api_base_url']
|
386
|
+
if not ST2_API_BASE_URL.endswith('/'):
|
387
|
+
ST2_API_BASE_URL += '/'
|
388
|
+
ST2_AUTH_BASE_URL = config['st2_auth_base_url']
|
389
|
+
if not ST2_AUTH_BASE_URL.endswith('/'):
|
390
|
+
ST2_AUTH_BASE_URL += '/'
|
391
|
+
SENSU_HOST = Config['api'].get('host', 'localhost')
|
392
|
+
SENSU_PORT = Config['api'].get('port', '4567')
|
393
|
+
SENSU_USER = Config['api'].get('user', None)
|
394
|
+
SENSU_PASS = Config['api'].get('password', None)
|
338
395
|
|
339
396
|
if ST2_API_KEY:
|
340
397
|
IS_API_KEY_AUTH = True
|
@@ -356,17 +413,14 @@ def _set_config_opts(config_file, verbose=False, unauthed=False, ssl_verify=Fals
|
|
356
413
|
sys.exit(1)
|
357
414
|
|
358
415
|
|
359
|
-
def main(
|
360
|
-
_set_config_opts(
|
361
|
-
ssl_verify=ssl_verify)
|
416
|
+
def main(payload, verbose=False, unauthed=False, ssl_verify=False):
|
417
|
+
_set_config_opts(unauthed=unauthed, verbose=verbose, ssl_verify=ssl_verify)
|
362
418
|
_register_with_st2(verbose=verbose)
|
363
419
|
_post_event_to_st2(payload, verbose=verbose)
|
364
420
|
|
365
421
|
|
366
422
|
if __name__ == '__main__':
|
367
423
|
parser = argparse.ArgumentParser(description='StackStorm sensu event handler.')
|
368
|
-
parser.add_argument('config_path',
|
369
|
-
help='Exchange to listen on')
|
370
424
|
parser.add_argument('--verbose', '-v', required=False, action='store_true',
|
371
425
|
help='Verbose mode.')
|
372
426
|
parser.add_argument('--unauthed', '-u', required=False, action='store_true',
|
@@ -376,5 +430,4 @@ if __name__ == '__main__':
|
|
376
430
|
help='Turn on SSL verification for st2 APIs.')
|
377
431
|
args = parser.parse_args()
|
378
432
|
payload = sys.stdin.read().strip()
|
379
|
-
main(
|
380
|
-
unauthed=args.unauthed, ssl_verify=args.ssl_verify)
|
433
|
+
main(payload=payload, verbose=args.verbose, unauthed=args.unauthed, ssl_verify=args.ssl_verify)
|
data/bin/st2_handler.rb
ADDED
@@ -0,0 +1 @@
|
|
1
|
+
require 'sensu-plugins-stackstorm/command'
|
@@ -0,0 +1,10 @@
|
|
1
|
+
module SensuPluginsStackStorm
|
2
|
+
class Command
|
3
|
+
def self.run_python(*argv)
|
4
|
+
bin_dir = File.expand_path(File.dirname(__FILE__)) + '/../../bin/'
|
5
|
+
shell_script_path = File.join(bin_dir, File.basename($PROGRAM_NAME, '.rb') + '.py')
|
6
|
+
|
7
|
+
exec shell_script_path, *argv
|
8
|
+
end
|
9
|
+
end
|
10
|
+
end
|
metadata
CHANGED
@@ -1,14 +1,15 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: sensu-plugins-stackstorm
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 0.1.1
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
|
+
- StackStorm, Inc.
|
7
8
|
- Hiroyasu OHYAMA
|
8
9
|
autorequire:
|
9
10
|
bindir: bin
|
10
11
|
cert_chain: []
|
11
|
-
date: 2017-09-
|
12
|
+
date: 2017-09-13 00:00:00.000000000 Z
|
12
13
|
dependencies:
|
13
14
|
- !ruby/object:Gem::Dependency
|
14
15
|
name: rspec
|
@@ -40,21 +41,18 @@ dependencies:
|
|
40
41
|
version: '12.0'
|
41
42
|
description: ''
|
42
43
|
email:
|
44
|
+
- info@stackstorm.com
|
43
45
|
- user.localhost2000@gmail.com
|
44
46
|
executables:
|
45
|
-
- st2_handler.
|
47
|
+
- st2_handler.rb
|
46
48
|
extensions: []
|
47
49
|
extra_rdoc_files: []
|
48
50
|
files:
|
49
|
-
- ".gitignore"
|
50
|
-
- ".travis.yml"
|
51
|
-
- Gemfile
|
52
|
-
- README.md
|
53
|
-
- Rakefile
|
54
51
|
- bin/st2_handler.py
|
55
|
-
-
|
56
|
-
- lib
|
57
|
-
- sensu-plugins-stackstorm.
|
52
|
+
- bin/st2_handler.rb
|
53
|
+
- lib/sensu-plugins-stackstorm.rb
|
54
|
+
- lib/sensu-plugins-stackstorm/command.rb
|
55
|
+
- lib/sensu-plugins-stackstorm/version.rb
|
58
56
|
homepage: https://github.com/userlocalhost2000/sensu-plugins-stackstorm
|
59
57
|
licenses:
|
60
58
|
- Apache-2.0
|
@@ -75,7 +73,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
75
73
|
version: '0'
|
76
74
|
requirements: []
|
77
75
|
rubyforge_project:
|
78
|
-
rubygems_version: 2.6.
|
76
|
+
rubygems_version: 2.6.13
|
79
77
|
signing_key:
|
80
78
|
specification_version: 4
|
81
79
|
summary: Sensu plugins for StackStorm
|
data/.gitignore
DELETED
data/.travis.yml
DELETED
@@ -1,34 +0,0 @@
|
|
1
|
-
language: ruby
|
2
|
-
cache:
|
3
|
-
- bundler
|
4
|
-
install:
|
5
|
-
- bundle install
|
6
|
-
rvm:
|
7
|
-
- 2.0
|
8
|
-
- 2.1
|
9
|
-
- 2.2
|
10
|
-
- 2.3.0
|
11
|
-
- 2.4.1
|
12
|
-
notifications:
|
13
|
-
email:
|
14
|
-
recipients:
|
15
|
-
- user.localhost2000@gmail.com
|
16
|
-
on_success: change
|
17
|
-
on_failure: always
|
18
|
-
script:
|
19
|
-
- bundle exec rake default
|
20
|
-
- gem build sensu-plugins-stackstorm.gemspec
|
21
|
-
- gem install sensu-plugins-stackstorm-*.gem
|
22
|
-
deploy:
|
23
|
-
provider: rubygems
|
24
|
-
api_key:
|
25
|
-
secure: m6eh9IW8L2RCDzfFcnVNuWyr74ywhw+G+4WWwvTTUb7kp5cPu1dkqSeyVM8UobwKuFDwiJTh5rsGVfa2gTnPkaj7jaAWOVDAJcjs8q+oYxMob+dpe++eu3N1adbsqZC27wNH2AlfmIiuEohTHNTMYv6CTiIkr6OVkZCLeD1lLxx9+OyhNaxkb53hmPPgvADmvITK1ZKKyAKb43rCGrKV1/nQDFu+aL/+CmqlH0JLw7vYrx3uVFOmjoVmPWM5VWS1BO2xOZIJ2leInql85C4DK4K3FoqIDhAg+d1o5RqMEz9DvfLHhl2f2EWgHxGk2PyolVUu7JxIoPT1WgCQnKjZ4vOZZBpsdMLzjvnFJBHrFIp0wUTAUgDxHzCA16BKLEoZg0IMcPh+aVPd3jdVJg+RsUuhCr+5wZEsu8LB/LfKiLhSdaM70sjM6CsZXyfhrLFN809f32vGm/fFc3FOKy/ZHEDaVG2jIspcg2pwDwzaQ8wPYwsgp9q+RDpFF49zyk+5f9FjEyftcUwaZhzDb1WIvzQCKtR2dBNgooUZJKrCicyc/L409P1Q1XMeV7BFew+fXChteh4upbzYiqp1yile1EO3QDIDmHpPALh2CbWRwyCmpbn0y8ZfAE4YDs0Bd1V1rJqdsuUFJlEDw7coKrR9uPWzB66om8nlz3KQGfyva3I=
|
26
|
-
gem: sensu-plugins-stackstorm
|
27
|
-
on:
|
28
|
-
tags: true
|
29
|
-
all_branches: true
|
30
|
-
rvm: 2.4.1
|
31
|
-
repo: sensu-plugins/sensu-plugins-stackstorm
|
32
|
-
addons:
|
33
|
-
code_climate:
|
34
|
-
repo_token:
|
data/Gemfile
DELETED
data/README.md
DELETED
data/Rakefile
DELETED
data/etc/st2_handler.conf
DELETED
@@ -1,14 +0,0 @@
|
|
1
|
-
---
|
2
|
-
# st2 credentials. you can either use username/password combo or specify an API key.
|
3
|
-
st2_username: ""
|
4
|
-
st2_password: ""
|
5
|
-
st2_api_key: ""
|
6
|
-
|
7
|
-
# trailing slash mandatory
|
8
|
-
st2_api_base_url: "https://localhost/api/v1/"
|
9
|
-
st2_auth_base_url: "https://localhost/auth/v1/"
|
10
|
-
|
11
|
-
sensu_host: localhost
|
12
|
-
sensu_port: 4567
|
13
|
-
sensu_user: sensu
|
14
|
-
sensu_pass: ""
|
data/lib/.gitkeep
DELETED
File without changes
|
@@ -1,20 +0,0 @@
|
|
1
|
-
# coding: utf-8
|
2
|
-
|
3
|
-
Gem::Specification.new do |spec|
|
4
|
-
spec.name = "sensu-plugins-stackstorm"
|
5
|
-
spec.version = '0.0.2'
|
6
|
-
spec.authors = ["Hiroyasu OHYAMA"]
|
7
|
-
spec.email = ["user.localhost2000@gmail.com"]
|
8
|
-
|
9
|
-
spec.summary = %q{Sensu plugins for StackStorm}
|
10
|
-
spec.description = %q{}
|
11
|
-
spec.homepage = "https://github.com/userlocalhost2000/sensu-plugins-stackstorm"
|
12
|
-
|
13
|
-
spec.files = `git ls-files -z`.split("\x0").reject { |f| f.match(%r{^(test|spec|features)/}) }
|
14
|
-
spec.bindir = "bin"
|
15
|
-
spec.executables = spec.files.grep(%r{^bin/}) { |f| File.basename(f) }
|
16
|
-
spec.license = "Apache-2.0"
|
17
|
-
|
18
|
-
spec.add_development_dependency 'rspec', '~> 3.6'
|
19
|
-
spec.add_development_dependency 'rake', '~> 12.0'
|
20
|
-
end
|