From f683ec34b376bda9a19345db0c4fe4a704f5e8f0 Mon Sep 17 00:00:00 2001 From: Dmytro Dovbii Date: Fri, 22 Apr 2016 20:55:05 +0300 Subject: [PATCH] Initial commit for lbaas library * adds lbaas interfaces * adds HAProxy implementation This commit makes refactoring for old python-based version of LbaaS and makes LbaaS-interface library and haproxy-based-lbaas packages deprecated. Change-Id: I93e0fbb59959a04b11adaf8fb13e901f3dfa61a4 --- .../HAProxy/package/Classes/HAProxy.yaml | 146 ++++++++++++++++++ .../HAProxy/package/Classes/HAProxyPool.yaml | 65 ++++++++ .../package/Resources/backEndConfig.template | 4 + .../HAProxy/package/Resources/base_config.cfg | 23 +++ .../package/Resources/deploy_haproxy.sh | 13 ++ .../package/Resources/frontEndConfig.template | 4 + .../HAProxy/package/Resources/stats.cfg | 4 + murano-apps/HAProxy/package/UI/ui.yaml | 126 +++++++++++++++ murano-apps/HAProxy/package/logo.png | Bin 0 -> 11275 bytes murano-apps/HAProxy/package/manifest.yaml | 28 ++++ .../package/Classes/HAProxyListener.yaml | 37 +++++ .../package/Resources/frontEndConfig.template | 4 + .../HAProxyListener/package/UI/ui.yaml | 49 ++++++ murano-apps/HAProxyListener/package/logo.png | Bin 0 -> 11275 bytes .../HAProxyListener/package/manifest.yaml | 27 ++++ murano-apps/LBaaS-interface/manifest.yaml | 1 + .../package/Classes/Listener.yaml | 42 +++++ .../package/Classes/LoadBalancer.yaml | 57 +++++++ .../LbaaSLibrary/package/Classes/Pool.yaml | 39 +++++ .../LbaaSLibrary/package/manifest.yaml | 25 +++ murano-apps/haproxy-based-lbaas/manifest.yaml | 1 + 21 files changed, 695 insertions(+) create mode 100644 murano-apps/HAProxy/package/Classes/HAProxy.yaml create mode 100644 murano-apps/HAProxy/package/Classes/HAProxyPool.yaml create mode 100644 murano-apps/HAProxy/package/Resources/backEndConfig.template create mode 100644 murano-apps/HAProxy/package/Resources/base_config.cfg create mode 100755 murano-apps/HAProxy/package/Resources/deploy_haproxy.sh create mode 100644 murano-apps/HAProxy/package/Resources/frontEndConfig.template create mode 100644 murano-apps/HAProxy/package/Resources/stats.cfg create mode 100644 murano-apps/HAProxy/package/UI/ui.yaml create mode 100644 murano-apps/HAProxy/package/logo.png create mode 100644 murano-apps/HAProxy/package/manifest.yaml create mode 100644 murano-apps/HAProxyListener/package/Classes/HAProxyListener.yaml create mode 100644 murano-apps/HAProxyListener/package/Resources/frontEndConfig.template create mode 100644 murano-apps/HAProxyListener/package/UI/ui.yaml create mode 100644 murano-apps/HAProxyListener/package/logo.png create mode 100644 murano-apps/HAProxyListener/package/manifest.yaml create mode 100644 murano-apps/LbaaSLibrary/package/Classes/Listener.yaml create mode 100644 murano-apps/LbaaSLibrary/package/Classes/LoadBalancer.yaml create mode 100644 murano-apps/LbaaSLibrary/package/Classes/Pool.yaml create mode 100644 murano-apps/LbaaSLibrary/package/manifest.yaml diff --git a/murano-apps/HAProxy/package/Classes/HAProxy.yaml b/murano-apps/HAProxy/package/Classes/HAProxy.yaml new file mode 100644 index 0000000..325bf19 --- /dev/null +++ b/murano-apps/HAProxy/package/Classes/HAProxy.yaml @@ -0,0 +1,146 @@ +# 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: + =: org.openstack.murano.lbaas + res: io.murano.resources + conf: io.murano.configuration + sys: io.murano.system + std: io.murano + +Name: HAProxy + +Extends: + - std:Application + - LoadBalancer + +Properties: + user: + Contract: $.string().notNull() + + pass: + Contract: $.string().notNull() + + port: + Contract: $.int().notNull() + + instance: + Contract: $.class(res:LinuxMuranoInstance).notNull() + + pools: + Usage: InOut + Contract: + $.string().notNull(): $.class(HAProxyPool).notNull() + +Methods: + .init: + Body: + - $._linux: new(conf:Linux) + - $._resources: new(sys:Resources) + - $._environment: $.find(std:Environment).require() + - $._lbConfig: null + + deploy: + Body: + - If: not $.getAttr(installed, false) + Then: + - $securityGroupIngress: + - ToPort: $this.port + FromPort: $this.port + IpProtocol: tcp + External: true + - $._environment.securityGroupManager.addGroupIngress($securityGroupIngress) + - $this.installLB() + - $.setAttr(installed, true) + - $this.syncSettings() + - $._environment.reporter.report($this, format('HA-proxy is available at {0}', $this.getEndpoint())) + + createPool: + Arguments: + - name: + Contract: $.string().notNull() + - algorithm: + Contract: $.string().notNull() + - protocol: + Contract: $.string().notNull() + - listener: + Contract: $.class(HAProxyListener).notNull() + Body: + - $pool: new(HAProxyPool, $this, listener=>$listener, name=>$name, algorithm=>$algorithm, protocol=>$protocol) + - $this.pools[$name]: $pool + - Return: $pool + + addHostToPool: + Arguments: + - poolName: + Contract: $.string().notNull() + - host: + Contract: $.string().notNull() + - ip: + Contract: $.string().notNull() + - port: + Contract: $.int().check($>0) + Body: + - $pool: $this.pools.get($poolName) + - $pool.addMember($host, $ip, $port) + - $this.pools[$poolName]: $pool + + installLB: + Body: + - $this.instance.deploy() + - $command: $._resources.string('deploy_haproxy.sh') + - $this._environment.reporter.report($this, 'Installing HAProxy...') + - $this._linux.runCommand($this.instance.agent, $command) + - $this._environment.reporter.report($this, 'HAProxy is installed.') + + restartLB: + Body: + $this._linux.runCommand($.instance.agent, 'sudo service haproxy restart') + + syncSettings: + Body: + - $config: $this.generateConfiguration() + - $this._environment.reporter.report($this, 'Replacing HAProxy settings') + - $this._linux.putFile($.instance.agent, $config, '/etc/haproxy/haproxy.cfg') + - $this.restartLB() + + generateConfiguration: + Body: + - $defaultConfig: $._getDefaults() + - $stats: $._getStatsConfig() + - If: len($this.pools) > 0 + Then: + $balanceConfig: $this.pools.values().select($.generateConfiguration()).join('\n\n') + Else: + $balanceConfig: '' + + - Return: list($defaultConfig, $balanceConfig, $stats).join('\n\n') + + _getStatsConfig: + Body: + Return: $._resources.string('stats.cfg').replace( + dict('$user'=>$this.user, + '$pass'=>$this.pass, + '$port'=>$this.port)) + + getEndpoint: + Body: + - If: $this.instance.assignFloatingIp + Then: + - $host: $this.instance.floatingIpAddress + Else: + - $host: $this.instance.ipAddresses.first() + - Return: format("http://{0}:{1}", $host, $this.port) + + _getDefaults: + Body: + Return: $._resources.string('base_config.cfg') diff --git a/murano-apps/HAProxy/package/Classes/HAProxyPool.yaml b/murano-apps/HAProxy/package/Classes/HAProxyPool.yaml new file mode 100644 index 0000000..df6080f --- /dev/null +++ b/murano-apps/HAProxy/package/Classes/HAProxyPool.yaml @@ -0,0 +1,65 @@ +# 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: + =: org.openstack.murano.lbaas + res: io.murano.resources + conf: io.murano.configuration + sys: io.murano.system + +Name: HAProxyPool +Extends: Pool + +Properties: + + algorithm: + Contract: $.string().check($ in ['roundrobin', 'leastconn', 'source']) + + protocol: + Contract: $.string().check($ in ['http', 'tcp']) + + listener: + Contract: $.class(HAProxyListener).notNull() + + +Methods: + addMember: + Arguments: + - host: + Contract: $.string().notNull() + - address: + Contract: $.string().notNull() + - port: + Contract: $.int().check($>0) + Body: + - $m: + host: $host + port: $port + address: $address + - If: not $m in $this.members + Then: + - $this.members: $this.members.append($m) + + + generateConfiguration: + Body: + - $serverString: $this.members.select(format(' server {0} {1}:{2}', $.host, $.address, $.port)).join('\n') + - $res: new(sys:Resources) + + - $backEndConfig: $res.string('backEndConfig.template').replace( + dict('$name'=> name($this), + '$servers'=>$serverString, + '$mode'=>$this.listener.protocol, + '$balance'=>$this.algorithm)) + + - $frontEndConfig: $this.listener.generateConfiguration(name($this)) + - Return: list($backEndConfig, $frontEndConfig).join('\n\n') diff --git a/murano-apps/HAProxy/package/Resources/backEndConfig.template b/murano-apps/HAProxy/package/Resources/backEndConfig.template new file mode 100644 index 0000000..2e8300f --- /dev/null +++ b/murano-apps/HAProxy/package/Resources/backEndConfig.template @@ -0,0 +1,4 @@ +backend $name + mode $mode + balance $balance +$servers \ No newline at end of file diff --git a/murano-apps/HAProxy/package/Resources/base_config.cfg b/murano-apps/HAProxy/package/Resources/base_config.cfg new file mode 100644 index 0000000..eab9781 --- /dev/null +++ b/murano-apps/HAProxy/package/Resources/base_config.cfg @@ -0,0 +1,23 @@ +global + log /dev/log local0 + log /dev/log local1 notice + chroot /var/lib/haproxy + user haproxy + group haproxy + daemon + +defaults + log global + mode http + option httplog + option dontlognull + contimeout 5000 + clitimeout 50000 + srvtimeout 50000 + errorfile 400 /etc/haproxy/errors/400.http + errorfile 403 /etc/haproxy/errors/403.http + errorfile 408 /etc/haproxy/errors/408.http + errorfile 500 /etc/haproxy/errors/500.http + errorfile 502 /etc/haproxy/errors/502.http + errorfile 503 /etc/haproxy/errors/503.http + errorfile 504 /etc/haproxy/errors/504.http \ No newline at end of file diff --git a/murano-apps/HAProxy/package/Resources/deploy_haproxy.sh b/murano-apps/HAProxy/package/Resources/deploy_haproxy.sh new file mode 100755 index 0000000..0c5f3a5 --- /dev/null +++ b/murano-apps/HAProxy/package/Resources/deploy_haproxy.sh @@ -0,0 +1,13 @@ +sudo add-apt-repository ppa:vbernat/haproxy-1.5 -y + +sudo apt-get update +sudo apt-get install -y haproxy + +# Enabling HAProxy. +sudo sed -i 's/^ENABLED=.*/ENABLED=1/' /etc/default/haproxy + +sudo chown -R $USER:$USER /etc/haproxy + +# Starting HAProxy. +#sudo service haproxy restart + diff --git a/murano-apps/HAProxy/package/Resources/frontEndConfig.template b/murano-apps/HAProxy/package/Resources/frontEndConfig.template new file mode 100644 index 0000000..fd7eca4 --- /dev/null +++ b/murano-apps/HAProxy/package/Resources/frontEndConfig.template @@ -0,0 +1,4 @@ +frontend $name +$binds + mode $mode + default_backend $default_backend \ No newline at end of file diff --git a/murano-apps/HAProxy/package/Resources/stats.cfg b/murano-apps/HAProxy/package/Resources/stats.cfg new file mode 100644 index 0000000..ec740e7 --- /dev/null +++ b/murano-apps/HAProxy/package/Resources/stats.cfg @@ -0,0 +1,4 @@ +listen stats *:$port + stats enable + stats uri / + stats auth $user:$pass \ No newline at end of file diff --git a/murano-apps/HAProxy/package/UI/ui.yaml b/murano-apps/HAProxy/package/UI/ui.yaml new file mode 100644 index 0000000..d4524e3 --- /dev/null +++ b/murano-apps/HAProxy/package/UI/ui.yaml @@ -0,0 +1,126 @@ +# 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. + +Version: 2.2 + +Templates: + customJoinNet: + - ?: + type: io.murano.resources.ExistingNeutronNetwork + internalNetworkName: $.instanceConfiguration.network[0] + internalSubnetworkName: $.instanceConfiguration.network[1] + +Application: + ?: + type: org.openstack.murano.lbaas.HAProxy + port: $.appConfiguration.port + user: $.appConfiguration.user + pass: $.appConfiguration.pass + instance: + ?: + type: io.murano.resources.LinuxMuranoInstance + name: generateHostname($.instanceConfiguration.unitNamingPattern, 1) + flavor: $.instanceConfiguration.flavor + image: $.instanceConfiguration.osImage + keyname: $.instanceConfiguration.keyPair + availabilityZone: $.instanceConfiguration.availabilityZone + assignFloatingIp: $.appConfiguration.assignFloatingIP + networks: + useEnvironmentNetwork: $.instanceConfiguration.network[0]=null + useFlatNetwork: false + customNetworks: switch($.instanceConfiguration.network[0], $=null=>list(), $!=null=>$customJoinNet) + +Forms: + - appConfiguration: + fields: + - name: license + type: string + description: Apache License, Version 2.0 + hidden: true + required: false + - name: user + type: string + label: Username + description: >- + Specify the name for user, which will be use + to access ha-proxy stats page + - name: pass + type: password + label: User password + description: >- + Specify the password for user + - name: port + type: integer + label: Port + initial: 8080 + description: >- + Specify provide the port where ha-proxy stats + will be available + - name: assignFloatingIP + type: boolean + label: Assign Floating IP + description: >- + Select to true to assign floating IP automatically + initial: false + required: false + + - instanceConfiguration: + fields: + - name: title + type: string + required: false + hidden: true + description: Specify some instance parameters on which the application would be created + - name: flavor + type: flavor + label: Instance flavor + description: >- + Select registered in Openstack flavor. Consider that application performance + depends on this parameter. + required: false + - name: osImage + type: image + imageType: linux + label: Instance image + description: >- + Select valid image for the application. Image should already be prepared and + registered in glance. + - name: keyPair + type: keypair + label: Key Pair + description: >- + Select the Key Pair to control access to instances. You can login to + instances using this KeyPair after the deployment of application. + required: false + - name: availabilityZone + type: azone + label: Availability zone + description: Select availability zone where application would be installed. + required: false + - name: network + type: network + label: Network + description: Select a network to join. 'Auto' corresponds to a default environment's network. + required: false + murano_networks: translate + - name: unitNamingPattern + type: string + label: Instance Naming Pattern + required: false + maxLength: 64 + regexpValidator: '^[a-zA-z][-_\w]*$' + errorMessages: + invalid: Just letters, numbers, underscores and hyphens are allowed. + helpText: Just letters, numbers, underscores and hyphens are allowed. + description: >- + Specify a string, that will be used in instance hostname. + Just A-Z, a-z, 0-9, dash and underline are allowed. diff --git a/murano-apps/HAProxy/package/logo.png b/murano-apps/HAProxy/package/logo.png new file mode 100644 index 0000000000000000000000000000000000000000..46e9e04cc5ede5bddea5950d6085b92efc192dc6 GIT binary patch literal 11275 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 name($this), + '$binds' => $bindString, + '$mode' => $this.protocol, + '$default_backend' => $backend)) + - Return: $frontEndConfig diff --git a/murano-apps/HAProxyListener/package/Resources/frontEndConfig.template b/murano-apps/HAProxyListener/package/Resources/frontEndConfig.template new file mode 100644 index 0000000..fd7eca4 --- /dev/null +++ b/murano-apps/HAProxyListener/package/Resources/frontEndConfig.template @@ -0,0 +1,4 @@ +frontend $name +$binds + mode $mode + default_backend $default_backend \ No newline at end of file diff --git a/murano-apps/HAProxyListener/package/UI/ui.yaml b/murano-apps/HAProxyListener/package/UI/ui.yaml new file mode 100644 index 0000000..54e9800 --- /dev/null +++ b/murano-apps/HAProxyListener/package/UI/ui.yaml @@ -0,0 +1,49 @@ +# 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. + +Version: 2.2 + +Application: + ?: + type: org.openstack.murano.lbaas.HAProxyListener + address: $.appConfiguration.address + algorithm: $.appConfiguration.algorithm + port: $.appConfiguration.port + protocol: $.appConfiguration.protocol + loadBalancer: $.appConfiguration.loadBalancer + +Forms: + - appConfiguration: + fields: + - name: title + type: string + required: false + hidden: true + description: Specify some instance parameters on which the application would be created + - name: address + type: string + initial: '*' + label: Listener address + required: false + - name: algorithm + type: string + label: Algorithm of balancing + initial: 'roundrobin' + - name: port + type: integer + label: Port + - name: protocol + type: string + label: Protocol + - name: loadBalancer + type: org.openstack.murano.lbaas.HAProxy + label: Load Balancer diff --git a/murano-apps/HAProxyListener/package/logo.png b/murano-apps/HAProxyListener/package/logo.png new file mode 100644 index 0000000000000000000000000000000000000000..46e9e04cc5ede5bddea5950d6085b92efc192dc6 GIT binary patch literal 11275 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 + +Methods: + + addMember: + + deleteMember: diff --git a/murano-apps/LbaaSLibrary/package/manifest.yaml b/murano-apps/LbaaSLibrary/package/manifest.yaml new file mode 100644 index 0000000..e04011e --- /dev/null +++ b/murano-apps/LbaaSLibrary/package/manifest.yaml @@ -0,0 +1,25 @@ +# 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. + +Format: 1.0 +Type: Library +FullName: org.openstack.murano.lbaas +Name: LbaaS Library +Description: | + LbaaS library prototype for Murano +Author: 'Mirantis, Inc' +Tags: [MuranoPL, LbaaS] + +Classes: + org.openstack.murano.lbaas.Listener: Listener.yaml + org.openstack.murano.lbaas.LoadBalancer: LoadBalancer.yaml + org.openstack.murano.lbaas.Pool: Pool.yaml \ No newline at end of file diff --git a/murano-apps/haproxy-based-lbaas/manifest.yaml b/murano-apps/haproxy-based-lbaas/manifest.yaml index 95ae92f..477e721 100644 --- a/murano-apps/haproxy-based-lbaas/manifest.yaml +++ b/murano-apps/haproxy-based-lbaas/manifest.yaml @@ -18,6 +18,7 @@ Description: | HAProxy is a free, very fast and reliable solution offering high availability, load balancing, and proxying for TCP and HTTP-based applications. + Deprecated: use org.openstack.murano.lbaas.HAProxy package instead Author: 'Mirantis, Inc' Tags: [HTTP, TCP, Load Balancing as a Service, HAProxy] Classes: