# 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 std: io.murano sys: io.murano.system srv: com.example.apache conf: io.murano.configuration Name: Guacamole Extends: std:Application Properties: username: Contract: $.string().notNull() password: Contract: $.string().notNull() server: Contract: $.class(srv:Tomcat).notNull() Methods: .init: Body: - $._environment: $.find(std:Environment).require() deploy: Body: - If: not $.getAttr(deployed, false) Then: # Deploy Tomcat - $._environment.reporter.report($this, 'Ensuring Tomcat is deployed') - $.server.deploy() # Deploy Guacamole - $._environment.reporter.report($this, 'Deploying Guacamole') - $replacements: "%USERNAME%": $.username "%PASSWORD%": $.password - $file: sys:Resources.string('deployGuacamole.sh').replace($replacements) - conf:Linux.runCommand($.server.instance.agent, $file) - If: $.server.instance.assignFloatingIp Then: - $address: $.server.instance.floatingIpAddress Else: - $address: $.server.instance.ipAddresses.first() - $._environment.reporter.report($this, 'Guacamole application is available at http://{0}:{1}/guacamole'.format($address, 8080)) - $.setAttr(deployed, true)