@click.command()
+@click.option('--name', type=str, default="token-created-by-lftools",
+ help='set token name')
@click.pass_context
-def change(ctx):
+def change(ctx, name):
"""Generate a new API token."""
jenkins = ctx.obj['jenkins']
username = ctx.obj['username']
log.error('Username or password not set.')
sys.exit(1)
- log.info(get_token(jenkins.url, change=True,
+ log.info(get_token(name, jenkins.url, change=True,
username=username, password=password))
log = logging.getLogger(__name__)
-def get_token(url, username, password, change=False):
+def get_token(name, url, username, password, change=False):
"""Get API token.
This function uses the global username / password for Jenkins from
password=password)
get_token = """
+import hudson.model.*
+import jenkins.model.*
import jenkins.security.*
+import jenkins.security.apitoken.*
User u = User.get("{}")
ApiTokenProperty t = u.getProperty(ApiTokenProperty.class)
-if ({}) {{
- t.changeApiToken()
-}}
-def token = t.getApiToken()
-println "$token"
-""".format(username, str(change).lower())
+def token = t.tokenStore.generateNewToken("{}")
+println token.plainValue
+""".format(username, name)
token = server.run_script(get_token)
return token