Refactor configuration
- split client SLS to config and repo
- replace modules artifactory_config and artifactory_repo by the single
module named `artifactory`
Change-Id: I0fa2dadc2443dbbd40bb10f3745dc4330f0c4578
diff --git a/_states/artifactory.py b/_states/artifactory.py
new file mode 100644
index 0000000..ac40b1a
--- /dev/null
+++ b/_states/artifactory.py
@@ -0,0 +1,129 @@
+# -*- coding: utf-8 -*-
+'''
+Management of artifactory configuration
+=======================================
+'''
+
+
+def __virtual__():
+ if 'artifactory.get_license' in __salt__:
+ return 'artifactory'
+ else:
+ return False, 'Execution module "artifactory" is not loaded'
+
+
+def add_license_key(name, license_key, **kwargs):
+
+ kwargs = __salt__['pillar.get']('artifactory:client:server')
+ kwargs.pop('license_key', None)
+
+ result, old_license_data = __salt__['artifactory.get_license'](**kwargs)
+
+ result, res_data = __salt__['artifactory.add_license'](
+ license_key,
+ **kwargs
+ )
+
+ # Prepare data to return
+ ret = {
+ 'name': name,
+ 'changes': {},
+ 'result': result,
+ 'comment': '',
+ 'pchanges': {},
+ }
+
+ if result:
+ result, new_license_data = __salt__['artifactory.get_license'](**kwargs)
+
+ if old_license_data != new_license_data:
+ ret['changes'] = {
+ 'old': json.dumps(old_license_data),
+ 'new': json.dumps(new_license_data),
+ }
+ ret['comment'] = res_data
+ else:
+ ret['comment'] = res_data['message']
+ if ret['comment'] == ('License could not be installed due '
+ 'to an error: License already exists.'):
+ ret['result'] = True
+
+ return ret
+
+def configure_ldap(name, uri, base=None, enabled=True, dn_pattern=None,
+ manager_dn=None, manager_pass=None, search_subtree=True,
+ search_filter='(&(objectClass=inetOrgPerson)(uid={0}))',
+ attr_mail='mail', create_users=True, safe_search=True):
+
+ kwargs = __salt__['pillar.get']('artifactory:client:server')
+
+ result, ldap_config_old = __salt__['artifactory.get_ldap_config'](name, **kwargs)
+
+ result, res_data = __salt__['artifactory.set_ldap_config'](
+ name, uri, base, enabled, dn_pattern, manager_dn, manager_pass,
+ search_subtree, search_filter, attr_mail, create_users, safe_search,
+ **kwargs
+ )
+
+ # Prepare data to return
+ ret = {
+ 'name': name,
+ 'changes': {},
+ 'result': result,
+ 'comment': '',
+ 'pchanges': {},
+ }
+
+ if result:
+ result, ldap_config_new = __salt__['artifactory.get_ldap_config'](name, **kwargs)
+ if ldap_config_old != ldap_config_new:
+ ret['changes'] = {
+ 'old': ldap_config_old,
+ 'new': ldap_config_new,
+ }
+ ret['comment'] = res_data
+ else:
+ ret['comment'] = res_data.get('errors')[0]['message']
+
+ return ret
+
+def configure_repo(name, **kwargs):
+
+ repo_config = kwargs
+ repo_name = repo_config['key']
+
+ rclass = repo_config.pop('repo_type', 'local')
+ if 'rclass' not in repo_config:
+ repo_config['rclass'] = rclass
+
+ packageType = repo_config.pop('package_type', 'generic')
+ if 'packageType' not in repo_config:
+ repo_config['packageType'] = packageType
+
+ kwargs = __salt__['pillar.get']('artifactory:client:server')
+
+ result, repo_config_old = __salt__['artifactory.get_repo'](repo_name, **kwargs)
+
+ # Prepare data to return
+ ret = {
+ 'name': name,
+ 'changes': {},
+ 'result': result,
+ 'comment': '',
+ 'pchanges': {},
+ }
+
+ result, res_data = __salt__['artifactory.set_repo'](repo_name, repo_config, **kwargs)
+
+ if result:
+ result, repo_config_new = __salt__['artifactory.get_repo'](repo_name, **kwargs)
+ if repo_config_old != repo_config_new:
+ ret['changes'] = {
+ 'old': repo_config_old,
+ 'new': repo_config_new,
+ }
+ ret['comment'] = res_data
+ else:
+ ret['comment'] = res_data.get('errors')[0]['message']
+
+ return ret