[DO-1026] create_license (!34)
Reviewed-on: https://git.avroid.tech/DevOps/jenkins-pipelines/pulls/34 Reviewed-by: Aleksandr Vodyanov <aleksandr.vodyanov@avroid.tech>
This commit is contained in:
102
pipelines/License-server/create-license.groovy
Normal file
102
pipelines/License-server/create-license.groovy
Normal file
@@ -0,0 +1,102 @@
|
||||
@Library('shared-lib') _
|
||||
|
||||
properties([
|
||||
buildDiscarder(logRotator(artifactNumToKeepStr: '10',
|
||||
numToKeepStr: '10')),
|
||||
disableConcurrentBuilds(),
|
||||
parameters([
|
||||
string(name: 'LICENSE_COUNT', defaultValue: '', description: 'Количество лицензии'),
|
||||
string(name: 'PRODUCT_ID', defaultValue: '', description: 'Идентификатор продукта к которому будут привязаны лицензии'),
|
||||
choice(
|
||||
name: 'LICENSE_KIND',
|
||||
choices: ["SINGLE","MULTIPLE"],
|
||||
description: 'Eдиничная или множественная лицензия'
|
||||
),
|
||||
choice(
|
||||
name: 'LICENSE_TYPE',
|
||||
choices: ["TRIAL","COMMERCIAL","UNLIMITED"],
|
||||
description: 'Коммерческая, Триальная или Бессрочная'
|
||||
),
|
||||
string(name: 'LICENSE_DURATION', defaultValue: '', description: 'Валидный период лицензии в месяцах'),
|
||||
string(name: 'OWNER_TITLE', defaultValue: '', description: 'Название новой компании'),
|
||||
string(name: 'OWNER_ID', defaultValue: '', description: 'Идентификатор существующего Владельца'),
|
||||
string(name: 'INSTALLATION_LIMIT', defaultValue: '1', description: 'Количество возможных созданных инсталляции'),
|
||||
string(name: 'KEY_LIMIT', defaultValue: '1', description: 'Максимальное количество созданных ключей'),
|
||||
string(name: 'VALIDATION_PERIOD', defaultValue: '1', description: 'Проверка в часах'),
|
||||
string(name: 'ADMIN_EMAIL', defaultValue: '', description: 'Почта администратора'),
|
||||
string(name: 'OPERATOR_LOGIN', defaultValue: '', description: 'Логин оператор'),
|
||||
string(name: 'COMMENT', defaultValue: '', description: 'Комментарий (необязательно)'),
|
||||
]),
|
||||
])
|
||||
|
||||
if (params.LICENSE_COUNT == '' ||
|
||||
params.LICENSE_DURATION == '' ||
|
||||
(params.OWNER_TITLE == '' && params.OWNER_ID == '') ||
|
||||
params.INSTALLATION_LIMIT == '' ||
|
||||
params.KEY_LIMIT == '' ||
|
||||
params.VALIDATION_PERIOD == '' ||
|
||||
params.ADMIN_EMAIL == '' ||
|
||||
params.OPERATOR_LOGIN == ''){
|
||||
|
||||
print "Все обязательные параметры должны быть заполнены"
|
||||
currentBuild.result = 'FAILURE'
|
||||
|
||||
return
|
||||
}
|
||||
|
||||
String licApiServer = 'h-license-manager-api-test.avroid.cloud'
|
||||
|
||||
Map configuration = [
|
||||
vaultUrl: 'https://vault.avroid.tech',
|
||||
vaultCredentialId: 'vault-role',
|
||||
engineVersion: 2
|
||||
]
|
||||
|
||||
List sshPassword = [
|
||||
[path: 'team-devops/accounts/ldap/service_accounts/svc_jenkins', engineVersion: 2, secretValues:
|
||||
[
|
||||
[vaultKey: 'password'],
|
||||
]
|
||||
]
|
||||
]
|
||||
|
||||
String cmd = "docker exec license_server-api-1 python manage.py avl_mass_license_operator_create" +
|
||||
" --license-count ${params.LICENSE_COUNT}" +
|
||||
" --product-id ${params.PRODUCT_ID}" +
|
||||
" --license-kind ${params.LICENSE_KIND}" +
|
||||
" --license-type ${params.LICENSE_TYPE}" +
|
||||
" --license-duration ${params.LICENSE_DURATION}" +
|
||||
" --installation-limit ${params.INSTALLATION_LIMIT}" +
|
||||
" --key-limit ${params.KEY_LIMIT}" +
|
||||
" --validation-period ${params.VALIDATION_PERIOD}" +
|
||||
" --admin-email ${params.ADMIN_EMAIL}" +
|
||||
" --operator-login ${params.OPERATOR_LOGIN}"
|
||||
|
||||
if (params.OWNER_ID != '' && params.OWNER_TITLE != '') {
|
||||
print "Только один из этих параметров должен быть передан (OWNER_ID, OWNER_TITLE)"
|
||||
currentBuild.result = 'FAILURE'
|
||||
return
|
||||
}
|
||||
|
||||
if (params.OWNER_TITLE != '') {
|
||||
cmd = cmd + " --owner-title \'${params.OWNER_TITLE}\'"
|
||||
}
|
||||
|
||||
if (params.OWNER_ID != '') {
|
||||
cmd = cmd + " --owner-id ${params.OWNER_ID}"
|
||||
}
|
||||
|
||||
if (params.COMMENT != '') {
|
||||
cmd = cmd + " --comment \'${params.COMMENT}\'"
|
||||
}
|
||||
|
||||
node('slave01') {
|
||||
stage('Create license') {
|
||||
print cmd
|
||||
withVault([configuration: configuration, vaultSecrets: sshPassword]) {
|
||||
sh """
|
||||
sshpass -p $password ssh jenkins@${licApiServer} \"${cmd}\"
|
||||
"""
|
||||
}
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user