blob: 29a2f64f5c2b2ca14eb41e7881e904c7b759f616 [file] [log] [blame]
Jakub Josef3de91af2016-12-08 17:03:33 +01001import logging
2logger = logging.getLogger(__name__)
3
4create_admin_groovy = u"""\
5import jenkins.model.*
6import hudson.security.*
7def instance = Jenkins.getInstance()
8def hudsonRealm = new HudsonPrivateSecurityRealm(false)
9def result=hudsonRealm.createAccount("{username}","{password}")
10instance.setSecurityRealm(hudsonRealm)
11def strategy = new hudson.security.FullControlOnceLoggedInAuthorizationStrategy()
12strategy.setAllowAnonymousRead(false)
13instance.setAuthorizationStrategy(strategy)
14instance.save()
15print(result)
16""" #noqa
17
18
19create_user_groovy = u"""\
20def result=jenkins.model.Jenkins.instance.securityRealm.createAccount("{username}", "{password}")
21print(result)
22""" # noqa
23
24
25def present(name, username, password, admin=False):
26 """
27 Main jenkins users state method
28
29 :param username: user name
30 :param password: user password
31 :param admin: is admin user flag (username will be always admin)
32 :returns: salt-specified state dict
33 """
34 test = __opts__['test'] # noqa
35 ret = {
36 'name': username,
37 'changes': {},
38 'result': False,
39 'comment': '',
40 }
41
42 result = False
43 if test:
44 status = 'CREATED'
45 ret['changes'][username] = status
46 ret['comment'] = 'User %s %s' % (username, status.lower())
47 else:
48 call_result = __salt__['jenkins_common.call_groovy_script'](create_admin_groovy if admin else create_user_groovy, {"username": username, "password":password})
49 if call_result["code"] == 200 and call_result["msg"].count(username) == 1:
50 status = "CREATED" if not admin else "ADMIN CREATED"
51 ret['changes'][username] = status
52 ret['comment'] = 'User %s %s' % (username, status.lower())
53 result = True
54 else:
55 status = 'FAILED'
56 logger.error("Jenkins user API call failure: %s", call_result["msg"])
57 ret['comment'] = 'Jenkins user API call failure: %s' % (call_result["msg"])
58 ret['result'] = None if test else result
59 return ret