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

125 lines
4.5 KiB
YAML

Namespaces:
=: org.openstack.ci_cd_pipeline_murano_app
std: io.murano
sys: io.murano.system
puppet: org.openstack.ci_cd_pipeline_murano_app.puppet
conf: io.murano.configuration
Name: Zuul
Extends: std:Application
Properties:
name:
Contract: $.string()
Default: Zuul
instance:
Contract: $.class(puppet:PuppetInstance).notNull()
gerrit:
Contract: $.class(Gerrit)
Methods:
.init:
Body:
- $._environment: $.find(std:Environment).require()
deploy:
Body:
- super($this, $.deploy())
- If: not $.getAttr(deployed, false)
Then:
- $._environment.reporter.report($this, 'Creating security group for Zuul')
- $securityGroupIngress:
- ToPort: 80
FromPort: 80
IpProtocol: tcp
External: true
- ToPort: 443
FromPort: 443
IpProtocol: tcp
External: true
- ToPort: 4730
FromPort: 4730
IpProtocol: tcp
External: true
- $._environment.securityGroupManager.addGroupIngress($securityGroupIngress)
- $._environment.reporter.report($this, 'Creating VM for Zuul "{0}"'.format($.instance.name))
- $.instance.deploy()
- $._environment.reporter.report($this, 'Zuul VM "{0}" with id {1} created'.format($.instance.name, $.instance.openstackId))
- $this.systemConfig: new(puppet:SystemConfig)
- $this.systemConfig.installOnTheNode($this.instance)
- $._environment.reporter.report($this, 'Zuul is waiting while Gerrit is being deployed...')
- $.gerrit.deploy()
- If: $.instance.assignFloatingIp
Then:
- $host: $.instance.floatingIpAddress
Else:
- $host: $.instance.ipAddresses[0]
- $.createConfiguration()
- $.instance.setHieraValue('zuul_host', $host)
- $resources: new(sys:Resources)
- $template: $resources.yaml('DeployZuul.template')
- $._environment.reporter.report($this, 'Zuul is deploying...')
- $.instance.agent.call($template, $resources)
- $._environment.reporter.report($this, 'Creating Zuul user in Gerrit')
- $zuul_pubkey: $.instance.getHieraValue('zuul_ssh_pubkey_contents')
- $.gerrit.createAccount('Non-Interactive Users', 'Zuul', 'zuul@lists.openstack.org', $zuul_pubkey, 'zuul')
- $linux: new(conf:Linux)
- $linux.runCommand($.instance.agent, 'service zuul start')
- $linux.runCommand($.instance.agent, 'service zuul-merger restart')
- $._switchProjectConfig()
- $._createPeriodicLayoutUpdate()
- $._environment.reporter.report($this, 'Zuul is available at http://{0}:80'.format($host))
- $.setAttr(deployed, true)
createConfiguration:
Body:
- $gerritInstance: $.gerrit.instance
- If: $gerritInstance.assignFloatingIp
Then:
- $gerritHost: $gerritInstance.floatingIpAddress
Else:
- $gerritHost: $gerritInstance.ipAddresses[0]
- $.instance.setHieraValue('gerrit_server', $gerritHost)
- $.instance.setHieraValue('gerrit_user', 'zuul')
- $.instance.setHieraValue('gerrit_ssh_host_key', $.gerrit.instance.getHieraValue('gerrit_ssh_rsa_pubkey_contents'))
_switchProjectConfig:
Body:
- $resources: new(sys:Resources)
- $linux: new(conf:Linux)
- $script: $resources.string('scripts/switch_to_local_project_config.sh')
- $._environment.reporter.report($this, '[Zuul] Switching to project-config from installed Gerrit...')
- $projectConfigURL: format(
'ssh://{0}@{1}:29418/open-paas/project-config',
$.instance.getHieraValue('gerrit_user'),
$.instance.getHieraValue('gerrit_server')
)
- $.instance.setHieraValue('project_config_repo', $projectConfigURL)
- $linux.runCommand($.instance.agent, $script)
_createPeriodicLayoutUpdate:
Body:
- $resources: new(sys:Resources)
- $linux: new(conf:Linux)
- $script: $resources.string('scripts/update_layout.sh')
- $._environment.reporter.report($this, '[Zuul] Creating autoupdating layout.yaml file...')
- $linux.putFile($.instance.agent, $script, '/usr/local/bin/update_layout.sh')
- $manifest: $resources.string('scripts/update_layout.pp')
- $this.instance.applyManifest($manifest, 60)
destroy:
Body:
- $.reportDestroyed()
- $.setAttr(deployed, false)