
Make system-config url available for configuring by setting it out of the class. Also add property for choosing which branch should be used stable or master. By default it will be "master" branch with url pointing on fuel-infra repository. Also add UI form for SystemConfig package, which will be used later by UI forms of Applications. Change-Id: I52779d9b190ddee1de2243de812e3f7133584b6d
132 lines
4.7 KiB
YAML
132 lines
4.7 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)
|
|
systemConfigRepo:
|
|
Contract: $.class(puppet:SystemConfig)
|
|
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))
|
|
|
|
# initialize System Config
|
|
- If: $.systemConfigRepo = null
|
|
Then:
|
|
- $this.systemConfig: new(puppet:SystemConfig)
|
|
Else:
|
|
- $this.systemConfig: $.systemConfigRepo
|
|
- $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('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('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('update_layout.pp')
|
|
- $this.instance.applyManifest($manifest, 60)
|
|
|
|
destroy:
|
|
Body:
|
|
- $.reportDestroyed()
|
|
- $.setAttr(deployed, false)
|