Sergey Kraynev 3d62edef39 Move system-config url to properties
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
2016-07-20 18:47:15 +03:00

230 lines
8.4 KiB
YAML

Namespaces:
=: org.openstack.ci_cd_pipeline_murano_app
std: io.murano
sys: io.murano.system
ci_cd_pipeline_murano_app: org.openstack.ci_cd_pipeline_murano_app
puppet: org.openstack.ci_cd_pipeline_murano_app.puppet
conf: io.murano.configuration
Name: Gerrit
Extends: std:Application
Properties:
instance:
Contract: $.class(puppet:PuppetInstance).notNull()
name:
Contract: $.string().notNull()
warUrl:
Contract: $.string()
Default: 'http://tarballs.openstack.org/ci/test/gerrit-v2.11.9.3.eb6e48d.war'
ldap:
Contract: $.class(ci_cd_pipeline_murano_app:OpenLDAP)
userSSH:
Contract: $.string()
systemConfigRepo:
Contract: $.class(puppet:SystemConfig)
Methods:
initialize:
Body:
- $._environment: $.find(std:Environment).require()
deploy:
Body:
- super($this, $.deploy())
- If: $.getAttr(deployed, false)
Then:
Return:
- $securityGroupIngress:
- ToPort: 80
FromPort: 80
IpProtocol: tcp
External: true
- ToPort: 443
FromPort: 443
IpProtocol: tcp
External: true
- ToPort: 8081
FromPort: 8081
IpProtocol: tcp
External: true
- ToPort: 29418
FromPort: 29418
IpProtocol: tcp
External: true
- $._environment.securityGroupManager.addGroupIngress($securityGroupIngress)
- $._environment.reporter.report($this, 'Creating VM for Gerrit "{0}"'.format($.instance.name))
- $.instance.deploy()
- $._environment.reporter.report($this, 'Gerrit VM "{0}" with id {1} created'.format($.instance.name, $.instance.openstackId))
- $._environment.reporter.report($this, 'Installing puppet modules...')
# initialize System Config
- If: $.systemConfigRepo = null
Then:
- $this.systemConfig: new(puppet:SystemConfig)
Else:
- $this.systemConfig: $.systemConfigRepo
- $this.systemConfig.installOnTheNode($this.instance)
- If: $.ldap != null
Then:
- $._environment.reporter.report($this, 'Waiting while LDAP is being deployed...')
- $.ldap.deploy()
- $.createConfiguration()
- $._deployGerrit()
- $._environment.reporter.report($this, 'Switching Gerrit to a local project-config')
- $._switchProjectConfig()
- If: $.ldap != null and not $.userSSH in [null, ''] and not $.ldap.ldapUser in [null, '']
Then:
- $._environment.reporter.report($this, "Adding user's SSH public key to Gerrit.")
- $.createAccount('', $.ldap.ldapUser, $.ldap.ldapEmail, $.userSSH, $.ldap.ldapUser)
- $._environment.reporter.report($this, 'Gerrit is deployed.')
- $linux: new(conf:Linux)
- $gerritHost: $linux.runCommand($.instance.agent, 'hostname -f').stdout
- If: $.instance.assignFloatingIp
Then:
- $gerritIP: $.instance.floatingIpAddress
Else:
- $gerritIP: $.instance.ipAddresses[0]
- $._environment.reporter.report($this, format('Gerrit service is launched on host {0} accessing by IP {1}.', $gerritHost, $gerritIP))
- $._environment.reporter.report($this, format('Gerrit is available at http://{0}:80 or http://{0}:8081', $gerritIP))
- $.setAttr(deployed, true)
_deployGerrit:
Body:
- $._environment.reporter.report($this, 'Deploying Gerrit...')
- $resources: new(sys:Resources)
- $template: $resources.yaml('DeployGerrit.template')
- $.instance.agent.call($template, $resources)
#
# Project-config local repo
#
getProjectConfigRepo:
Body:
- Return: format('https://{0}/open-paas/project-config', $this.instance.ipAddresses[0])
#
# Switch to newly created project-config repo
#
_switchProjectConfig:
Body:
- $.instance.putHieraData({'project_config_repo' => $.getProjectConfigRepo()})
_createLdapConfiguration:
Body:
- $ldapInstance: $.ldap.instance
- If: $ldapInstance.assignFloatingIp
Then:
- $ldapHost: $ldapInstance.floatingIpAddress
Else:
- $ldapHost: $ldapInstance.ipAddresses[0]
- $data:
ldap_ip: $ldapHost
ldap_domain: $.ldap.domain
ldap_root_user: $.ldap.ldapRootUser
ldap_root_password: $.ldap.ldapRootPass
ldap_user: $.ldap.ldapUser
ldap_password: $.ldap.ldapPass
- $this.instance.putHieraData($data)
createConfiguration:
Body:
- If: $this.ldap != null
Then:
- $._createLdapConfiguration()
- $data:
gerrit_war_url: $this.warUrl
gerrit_github_token: ''
github_project_username: 'mirademo'
gerrit_mysql_host: 'localhost'
gerritbot_password: 'P@ssw0rd'
gerrit_db_user: 'gerrit2'
gerrit_db_password: '12345'
gerrit_db_root_password: 'P@ssw0rd'
gerrit_acls_dir: '/etc/project-config/gerrit/acls'
gerrit_notify_impact_file: '/etc/project-config/gerrit/notify_impact.yaml'
jeepyb_project_file: '/etc/project-config/gerrit/projects.yaml'
project_config_config_dir: '/etc/project-config/'
github_project_password: 'dummy content. to be done'
gerrit_email_private_key: 'dummy content. to be done'
gerrit_rest_token_private_key: 'dummy content. to be done'
welcome_message_gerrit_ssh_private_key: 'dummy content. to be done'
welcome_message_gerrit_ssh_public_key: 'dummy content. to be done'
ssh_replication_rsa_key_contents: 'dummy content. to be done'
gerrit_replication_ssh_rsa_pubkey_contents: 'dummy content. to be done'
gerrit_lp_consumer_key: 'dummy content. to be done'
gerrit_lp_access_token: 'dummy content. to be done'
gerrit_lp_access_secret: 'dummy content. to be done'
gerrit_contactstore_appsec: 'dummy content. to be done'
gerrit_contactstore_pubkey: 'dummy content. to be done'
swift_store_user: 'dummy content. to be done'
swift_store_key: 'dummy content. to be done'
# This fields autogenerated on vm
# TODO: These values should be stored in Murano too
# gerritbot_ssh_rsa_key_contents: 'dummy content. the value should be autogenerated'
# gerritbot_ssh_rsa_pubkey_contents: 'dummy content. the value should be autogenerated'
# gerrit_ssh_dsa_key_contents: 'dummy content. the value should be autogenerated'
# gerrit_ssh_dsa_pubkey_contents: 'dummy content. the value should be autogenerated'
# gerrit_ssh_rsa_key_contents: 'dummy content. the value should be autogenerated'
# gerrit_ssh_rsa_pubkey_contents: 'dummy content. the value should be autogenerated'
# gerrit_ssh_project_rsa_key_contents: 'dummy content. the value should be autogenerated'
# gerrit_ssh_project_rsa_pubkey_contents: 'dummy content. the value should be autogenerated'
# gerrit_ssl_cert_file_contents: 'dummy content. the value should be autogenerated'
# gerrit_ssl_key_file_contents: 'dummy content. the value should be autogenerated'
# gerrit_ssl_chain_file_contents: 'dummy content. the value should be autogenerated'
- $this.instance.putHieraData($data)
- $this.instance.syncHieraData()
#NOTE: this method doesn't work without ldap
createAccount:
Arguments:
- group:
Contract: $.string()
- fullName:
Contract: $.string().notNull()
- email:
Contract: $.string().notNull()
- sshKey:
Contract: $.string().notNull()
- name:
Contract: $.string().notNull()
Body:
- $resources: new(sys:Resources)
- $template: $resources.yaml('CreateAccount.template').bind(dict(
gerritUser => $.ldap.ldapRootUser,
group => $group,
fullName => $fullName,
email => $email,
sshKey => $sshKey,
name => $name))
- $.instance.agent.call($template, $resources)
createLabels:
Body:
- $._environment.reporter.report($this, 'Creating label "Verified" in Gerrit...')
- $linux: new(conf:Linux)
- $resource: new(sys:Resources)
- $script: $resource.string('create_gerrit_labels.sh')
- $linux.runCommand($.instance.agent, $script)
- $._environment.reporter.report($this, 'Label "Verified" is successfully created.')
destroy:
Body:
- $.reportDestroyed()
- $.setAttr(deployed, false)