From 98579924ef3a0ce0688f9a0f8c81d238f42996aa Mon Sep 17 00:00:00 2001 From: Bill Maxwell Date: Mon, 3 Feb 2014 22:30:11 -0700 Subject: [PATCH] added logstash plugin support and fixed test typo Added new test cases in wrappers fixtures. Updated setup.py to include the new wrapper entry point. Added the logstash plugin to the wrapper module. made the default the localhost for host. Added an if around the use redis bool. If Redis parameters are not defined, use an empty dict to use all defaults. Change-Id: Iee950a7d05a56d3a45b5f93ccd77306b37662d25 --- jenkins_jobs/modules/wrappers.py | 60 ++++++++++++++++++++++++ setup.py | 1 + tests/wrappers/fixtures/logstash001.xml | 16 +++++++ tests/wrappers/fixtures/logstash001.yaml | 10 ++++ tests/wrappers/fixtures/logstash002.xml | 16 +++++++ tests/wrappers/fixtures/logstash002.yaml | 3 ++ tests/wrappers/fixtures/logstash003.xml | 8 ++++ tests/wrappers/fixtures/logstash003.yaml | 3 ++ 8 files changed, 117 insertions(+) create mode 100644 tests/wrappers/fixtures/logstash001.xml create mode 100644 tests/wrappers/fixtures/logstash001.yaml create mode 100644 tests/wrappers/fixtures/logstash002.xml create mode 100644 tests/wrappers/fixtures/logstash002.yaml create mode 100644 tests/wrappers/fixtures/logstash003.xml create mode 100644 tests/wrappers/fixtures/logstash003.yaml diff --git a/jenkins_jobs/modules/wrappers.py b/jenkins_jobs/modules/wrappers.py index df3994e37..ea9b2a1bc 100644 --- a/jenkins_jobs/modules/wrappers.py +++ b/jenkins_jobs/modules/wrappers.py @@ -863,6 +863,66 @@ def pre_scm_buildstep(parser, xml_parent, data): bs.append(edited_node) +def logstash(parser, xml_parent, data): + """yaml: logstash build wrapper + Dump the Jenkins console output to Logstash + Requires the Jenkins `logstash plugin. + `_ + + :arg use-redis: Boolean to use Redis. (default: true) + :arg redis: Redis config params + + :Parameter: * **host** (`str`) Redis hostname\ + (default 'localhost') + :Parameter: * **port** (`int`) Redis port number (default 6397) + :Parameter: * **database-number** (`int`)\ + Redis database number (default 0) + :Parameter: * **database-password** (`str`)\ + Redis database password (default '') + :Parameter: * **data-type** (`str`)\ + Redis database type (default 'list') + :Parameter: * **key** (`str`) Redis key (default 'logstash') + + Example: + + .. literalinclude:: /../../tests/wrappers/fixtures/logstash001.yaml + + """ + logstash = XML.SubElement(xml_parent, + 'jenkins.plugins.logstash.' + 'LogstashBuildWrapper') + logstash.set('plugin', 'logstash@0.8.0') + + redis_bool = XML.SubElement(logstash, 'useRedis') + redis_bool.text = str(data.get('use-redis', True)).lower() + + if data.get('use-redis'): + redis_config = data.get('redis', {}) + redis_sub_element = XML.SubElement(logstash, 'redis') + + host_sub_element = XML.SubElement(redis_sub_element, 'host') + host_sub_element.text = str( + redis_config.get('host', 'localhost')) + + port_sub_element = XML.SubElement(redis_sub_element, 'port') + port_sub_element.text = str(redis_config.get('port', '6379')) + + database_numb_sub_element = XML.SubElement(redis_sub_element, 'numb') + database_numb_sub_element.text = \ + str(redis_config.get('database-number', '0')) + + database_pass_sub_element = XML.SubElement(redis_sub_element, 'pass') + database_pass_sub_element.text = \ + str(redis_config.get('database-password', '')) + + data_type_sub_element = XML.SubElement(redis_sub_element, 'dataType') + data_type_sub_element.text = \ + str(redis_config.get('data-type', 'list')) + + key_sub_element = XML.SubElement(redis_sub_element, 'key') + key_sub_element.text = str(redis_config.get('key', 'logstash')) + + class Wrappers(jenkins_jobs.modules.base.Base): sequence = 80 diff --git a/setup.py b/setup.py index 4a7c542b9..897ae597d 100644 --- a/setup.py +++ b/setup.py @@ -202,6 +202,7 @@ setuptools.setup( 'inject-passwords=jenkins_jobs.modules.wrappers:inject_passwords', 'jclouds=jenkins_jobs.modules.wrappers:jclouds', 'locks=jenkins_jobs.modules.wrappers:locks', + 'logstash=jenkins_jobs.modules.wrappers:logstash', 'mask-passwords=jenkins_jobs.modules.wrappers:mask_passwords', 'pathignore=jenkins_jobs.modules.wrappers:pathignore', 'port-allocator=jenkins_jobs.modules.wrappers:port_allocator', diff --git a/tests/wrappers/fixtures/logstash001.xml b/tests/wrappers/fixtures/logstash001.xml new file mode 100644 index 000000000..fe664e2a8 --- /dev/null +++ b/tests/wrappers/fixtures/logstash001.xml @@ -0,0 +1,16 @@ + + + + + true + + localhost + 6379 + 0 + password + list + logstash + + + + diff --git a/tests/wrappers/fixtures/logstash001.yaml b/tests/wrappers/fixtures/logstash001.yaml new file mode 100644 index 000000000..aaf6b7d91 --- /dev/null +++ b/tests/wrappers/fixtures/logstash001.yaml @@ -0,0 +1,10 @@ +wrappers: + - logstash: + use-redis: True + redis: + host: 'localhost' + port: 6379 + database-number: 0 + database-password: 'password' + data-type: 'list' + key: 'logstash' diff --git a/tests/wrappers/fixtures/logstash002.xml b/tests/wrappers/fixtures/logstash002.xml new file mode 100644 index 000000000..c7fc6e278 --- /dev/null +++ b/tests/wrappers/fixtures/logstash002.xml @@ -0,0 +1,16 @@ + + + + + true + + localhost + 6379 + 0 + + list + logstash + + + + diff --git a/tests/wrappers/fixtures/logstash002.yaml b/tests/wrappers/fixtures/logstash002.yaml new file mode 100644 index 000000000..ba8883c50 --- /dev/null +++ b/tests/wrappers/fixtures/logstash002.yaml @@ -0,0 +1,3 @@ +wrappers: + - logstash: + use-redis: True diff --git a/tests/wrappers/fixtures/logstash003.xml b/tests/wrappers/fixtures/logstash003.xml new file mode 100644 index 000000000..00aa0399a --- /dev/null +++ b/tests/wrappers/fixtures/logstash003.xml @@ -0,0 +1,8 @@ + + + + + false + + + diff --git a/tests/wrappers/fixtures/logstash003.yaml b/tests/wrappers/fixtures/logstash003.yaml new file mode 100644 index 000000000..656f5e79b --- /dev/null +++ b/tests/wrappers/fixtures/logstash003.yaml @@ -0,0 +1,3 @@ +wrappers: + - logstash: + use-redis: False