Add state to manage Jira sites
Closes-PROD: https://mirantis.jira.com/browse/PROD-19349
Change-Id: Ic5a2a397b3a6e7d4159c9393317ce984dda320d0
diff --git a/_states/jenkins_jira.py b/_states/jenkins_jira.py
new file mode 100644
index 0000000..739b248
--- /dev/null
+++ b/_states/jenkins_jira.py
@@ -0,0 +1,71 @@
+import json
+import logging
+
+logger = logging.getLogger(__name__)
+
+def __virtual__():
+ '''
+ Only load if jenkins_common module exist.
+ '''
+ if 'jenkins_common.call_groovy_script' not in __salt__:
+ return (
+ False,
+ 'The jenkins_jira state module cannot be loaded: '
+ 'jenkins_common not found')
+ return True
+
+def present (name, sites, **kwargs):
+ """
+ Jenkins Jira instance state method
+
+ :param name: ID name
+ :param sites:Jira sites dict
+ :
+ :sites[name] params:
+ :param link_url: root URL of JIRA installation for "normal" access
+ :param http_auth: connect to JIRA using HTTP Basic Authentication
+ :param use_wiki_notation: enable if JIRA supports Wiki notation
+ :param record_scm: record scm changes in JIRAA
+ :param disable_changelog: do not create JIRA hyperlinks in the changeset
+ :param issue_pattern: custom pattern to search for JIRA issue ids
+ :param any_build_result: update issues on any build result
+ :param user: JIRA user name
+ :param password: JIRA user password
+ :param conn_timeout: connection timeout for JIRA REST API calls
+ :param visible_for_group: allow to read comments for JIRA group
+ :param visible_for_project: allow to read comments for JIRA project
+ :param timestamps: enable SCM change date and time entries
+ :param timestamp_format: timestamp format
+ :
+ :returns: salt-specified state dict
+ """
+
+ template = __salt__['jenkins_common.load_template'](
+ 'salt://jenkins/files/groovy/jira.template',
+ __env__)
+ return __salt__['jenkins_common.api_call'](name, template,
+ ["CREATED", "EXISTS"],
+ {
+ 'sites': json.dumps(sites),
+ 'absent': False
+ },
+ 'JIRA server')
+
+def absent(name):
+ """
+ Jenkins Jira instance absence state method
+
+ :param name: ID name
+ :returns: salt-specified state dict
+ """
+ template = __salt__['jenkins_common.load_template'](
+ 'salt://jenkins/files/groovy/jira.template',
+ __env__)
+ return __salt__['jenkins_common.api_call'](name, template,
+ ["REMOVED", "NOT PRESENT"],
+ {
+ 'sites': '{}',
+ 'absent': True
+ },
+ 'JIRA server')
+