diff --git a/jenkins_jobs/modules/wrappers.py b/jenkins_jobs/modules/wrappers.py index 71b6cf0b0..0bea0e3d5 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 569f0c41c..c7ccb997f 100644 --- a/setup.py +++ b/setup.py @@ -207,6 +207,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