# Licensed under the Apache License, Version 2.0 (the "License"); you may # not use this file except in compliance with the License. You may obtain # a copy of the License at # # http://www.apache.org/licenses/LICENSE-2.0 # # Unless required by applicable law or agreed to in writing, software # distributed under the License is distributed on an "AS IS" BASIS, WITHOUT # WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the # License for the specific language governing permissions and limitations # under the License. Namespaces: =: com.example srv: com.example.apache db: com.example.databases std: io.murano res: io.murano.resources sys: io.murano.system Name: SugarCRM Extends: std:Application Properties: server: Contract: $.class(srv:ApacheHttpServer).notNull() database: Contract: $.class(db:MySql).notNull() dbName: Contract: $.string().notNull() dbUser: Contract: $.string().notNull() dbPassword: Contract: $.string().notNull() adminUser: Contract: $.string().notNull() adminPassword: Contract: $.string().notNull() demoData: Contract: $.bool().notNull() Methods: .init: Body: - $._environment: $.find(std:Environment).require() deploy: Body: - If: not $.getAttr(deployed, false) Then: - $._environment.reporter.report($this, 'Ensuring Apache is deployed.') - $.server.deploy() - $resources: new(sys:Resources) # create DB and user in mysql - $._environment.reporter.report($this, 'Ensuring Database is deployed.') - $.database.deploy() - $._environment.reporter.report($this, 'Creating sugar database and user') - $.database.createDatabase($.dbName) - $.database.createUser($.dbUser, $.dbPassword) - $.database.assignUser($.dbUser, $.dbName) # Deploy Sugar - $._environment.reporter.report($this, 'Installing SugarCRM') - $demoData: '' - If: $.demoData Then: - $demoData: 'yes' Else: - $demoData: 'no' - $template: $resources.yaml('deploySugar.template').bind(dict( dbHost => $.database.instance.ipAddresses[0], dbName => $.dbName, adminName => $.adminUser, adminPassword => $.adminPassword, dbUser => $.dbUser, dbPassword => $.dbPassword, host => $.server.instance.floatingIpAddress, demoData => $demoData )) - $.server.instance.agent.call($template, $resources) - $._environment.reporter.report($this, 'SugarCRM is installed') - If: $.server.instance.assignFloatingIp Then: - $address: $.server.instance.floatingIpAddress + '/Sugar' - $._environment.reporter.report($this, format('SugarCRM is running at http://{0}', $address)) - $.setAttr(deployed, true) clear: Usage: Action Body: - $resources: new(sys:Resources) - $template: $resources.yaml('reset.template').bind(dict(withData=>false)) - $.server.instance.agent.call($template, $resources) populateDemoData: Usage: Action Body: - $resources: new(sys:Resources) - $template: $resources.yaml('reset.template').bind(dict(withData=>true)) - $.server.instance.agent.call($template, $resources)