ci-cd-pipeline-app-murano/murano-apps/CiCdEnvironment/package/Classes/CiCdEnvironment.yaml

209 lines
6.9 KiB
YAML

Namespaces:
=: org.openstack.ci_cd_pipeline_murano_app
std: io.murano
ci_cd_pipeline_murano_app: org.openstack.ci_cd_pipeline_murano_app
puppet: org.openstack.ci_cd_pipeline_murano_app.puppet
net: org.openstack.ci_cd_pipeline_murano_app.utils.net
Name: CiCdEnvironment
Extends: std:Application
Properties:
ldap:
Contract: $.class(ci_cd_pipeline_murano_app:OpenLDAP)
Usage: Out
gerrit:
Contract: $.class(ci_cd_pipeline_murano_app:Gerrit)
Usage: Out
jenkins:
Contract: $.class(ci_cd_pipeline_murano_app:Jenkins)
Usage: Out
zuul:
Contract: $.class(ci_cd_pipeline_murano_app:Zuul)
Usage: Out
nodepool:
Contract: $.class(ci_cd_pipeline_murano_app:Nodepool)
Usage: Out
systemConfigRepo:
Contract: $.class(puppet:SystemConfig)
zuulNodepoolHelper:
Contract: $.class(ci_cd_pipeline_murano_app:ZuulNodepoolHelper)
ldapRootUser:
Contract: $.string().notNull()
ldapRootPass:
Contract: $.string().notNull()
ldapRootEmail:
Contract: $.string().notNull()
ldapUser:
Contract: $.string()
ldapPass:
Contract: $.string()
ldapEmail:
Contract: $.string()
userSSH:
Contract: $.string()
instance_name:
Contract: $.string().notNull()
flavor:
Contract: $.string().notNull()
image:
Contract: $.string().notNull()
keyname:
Contract: $.string().notNull()
availabilityZone:
Contract: $.string().notNull()
Default: nova
assignFloatingIp:
Contract: $.bool().notNull()
Default: true
Methods:
.init:
Body:
- $._environment: $.find(std:Environment).require()
deploy:
Body:
- $._environment.reporter.report($this, 'Deploying CI/CD')
# OpenLDAP
- If: $this.ldap = null
Then:
- $ldapInstanceName: concat($.instance_name, '-ldap')
- $ldapInstance: new(puppet:PuppetInstance, $._environment,
name => $ldapInstanceName,
flavor => $.flavor,
image => $.image,
keyname => $.keyname,
availabilityZone => $.availabilityZone,
assignFloatingIp => $.assignFloatingIp)
- $this.ldap: new(ci_cd_pipeline_murano_app:OpenLDAP, $._environment,
name => 'OpenLDAP',
instance => $ldapInstance,
domain => 'infra.local',
ldapRootUser => $.ldapRootUser,
ldapRootPass => $.ldapRootPass,
ldapRootEmail => $.ldapRootEmail,
ldapUser => $.ldapUser,
ldapPass => $.ldapPass,
ldapEmail => $.ldapEmail)
# Gerrit
- If: $this.gerrit = null
Then:
- $gerritInstanceName: concat($.instance_name, '-gerrit')
- $gerritInstance: new(puppet:PuppetInstance, $._environment,
name => $gerritInstanceName,
flavor => $.flavor,
image => $.image,
keyname => $.keyname,
availabilityZone => $.availabilityZone,
assignFloatingIp => $.assignFloatingIp)
- $this.gerrit: new(ci_cd_pipeline_murano_app:Gerrit, $this,
name => 'Gerrit',
instance => $gerritInstance,
ldap => $this.ldap,
userSSH => $this.userSSH,
systemConfigRepo => $.systemConfigRepo)
# Jenkins
# set user and mail for accessing to Gerrit from Jenkins
- If: $this.jenkins = null
Then:
- $._environment.reporter.report($this,
'Jenkins credentials user={0}, password={1}'.format(
$.ldapUser, $.ldapPass))
- $jenkinsInstanceName: concat($.instance_name, '-jenkins')
- $jenkinsInstance: new(puppet:PuppetInstance, $._environment,
name => $jenkinsInstanceName,
flavor => $.flavor,
image => $.image,
keyname => $.keyname,
availabilityZone => $.availabilityZone,
assignFloatingIp => $.assignFloatingIp)
- $this.jenkins: new(ci_cd_pipeline_murano_app:Jenkins, $._environment,
name => 'Jenkins',
instance => $jenkinsInstance,
ldap => $this.ldap,
gerrit => $this.gerrit,
cfplugin => false,
gitUser => $.ldapUser,
gitEmail => $.ldapEmail,
systemConfigRepo => $.systemConfigRepo)
# Zuul
- If: $this.zuul = null and $this.zuulNodepoolHelper != null
Then:
- $zuulInstanceName: concat($.instance_name, '-zuul')
- $zuulInstance: new(puppet:PuppetInstance, $._environment,
name => $zuulInstanceName,
flavor => $.flavor,
image => $.image,
keyname => $.keyname,
availabilityZone => $.availabilityZone,
assignFloatingIp => $.assignFloatingIp)
- $this.zuul: new(ci_cd_pipeline_murano_app:Zuul, $._environment,
name => 'Zuul',
instance => $zuulInstance,
gerrit => $this.gerrit,
systemConfigRepo => $.systemConfigRepo)
# Nodepool
- If: $this.nodepool = null and $this.zuulNodepoolHelper != null
Then:
- $nodepoolInstanceName: concat($.instance_name, '-nodepool')
- $nodepoolInstance: new(puppet:PuppetInstance, $._environment,
name => $nodepoolInstanceName,
flavor => $.flavor,
image => $.image,
keyname => $.keyname,
availabilityZone => $.availabilityZone,
assignFloatingIp => $.assignFloatingIp)
- $this.nodepool: new(ci_cd_pipeline_murano_app:Nodepool, $._environment,
name => 'Nodepool',
instance => $nodepoolInstance,
jenkins => $this.jenkins,
zuul => $this.zuul,
authUrl => $this.zuulNodepoolHelper.authUrl,
username => $this.zuulNodepoolHelper.username,
tenant => $this.zuulNodepoolHelper.tenant,
password => $this.zuulNodepoolHelper.password,
systemConfigRepo => $.systemConfigRepo)
# Deploy all
- $applications:
- $this.ldap
- $this.gerrit
- $this.jenkins
- If: $this.zuulNodepoolHelper != null
Then:
- $applications: $applications.append($this.zuul, $this.nodepool)
- $applications.pselect($.deploy())
- $._environment.reporter.report($this, 'Adding hosts...')
- $hosts: new(net:Hosts)
- $applications.select($hosts.addHostByInstance($.instance))
- $applications.select($hosts.applyTo($.instance))
- $._environment.reporter.report($this, 'Hosts added.')
deleteNodepool:
Usage: Action
Body:
- If: $this.nodepool = null
Then:
- Return:
- $._environment.reporter.report($this, 'Deleting Nodepool...')
- $this.nodepool.releaseResources()
- $this.nodepool: null
- $._environment.reporter.report($this, 'Nodepool is deleted. Now you can safely delete environment.')