From 41c5ed8b27c1440eab32667c7724aaa94edaf83c Mon Sep 17 00:00:00 2001 From: Snihyr Kostyantyn Date: Tue, 23 Aug 2016 16:43:42 +0300 Subject: [PATCH] Add scaleIn actions and scripts Change-Id: I77cd4d27f7d7379ba91350838aab2c818af0db4f --- Clearwater/package/Classes/Clearwater.yaml | 33 ++++++++++++++++++ .../base/ClearwaterComponentBase.yaml | 34 +++++++++++++++++-- Clearwater/package/Resources/Bono/scaleIn.sh | 8 +++++ Clearwater/package/Resources/Ellis/scaleIn.sh | 7 ++++ Clearwater/package/Resources/Homer/scaleIn.sh | 7 ++++ .../package/Resources/Homestead/scaleIn.sh | 8 +++++ Clearwater/package/Resources/Ralf/scaleIn.sh | 7 ++++ .../package/Resources/Sprout/scaleIn.sh | 7 ++++ Clearwater/package/manifest.yaml | 2 +- 9 files changed, 109 insertions(+), 4 deletions(-) create mode 100644 Clearwater/package/Resources/Bono/scaleIn.sh create mode 100644 Clearwater/package/Resources/Ellis/scaleIn.sh create mode 100644 Clearwater/package/Resources/Homer/scaleIn.sh create mode 100644 Clearwater/package/Resources/Homestead/scaleIn.sh create mode 100644 Clearwater/package/Resources/Ralf/scaleIn.sh create mode 100644 Clearwater/package/Resources/Sprout/scaleIn.sh diff --git a/Clearwater/package/Classes/Clearwater.yaml b/Clearwater/package/Classes/Clearwater.yaml index 01343139..594a2e9d 100644 --- a/Clearwater/package/Classes/Clearwater.yaml +++ b/Clearwater/package/Classes/Clearwater.yaml @@ -149,4 +149,37 @@ Methods: Body: - $this.components.where($ is components:Ralf).first().scaleOut() + scaleInSprout: + Meta: + - meta:Title: + text: "Scale in Sprout" + + Scope: Public + Body: + - $this.components.where($ is components:Sprout).first().scaleIn() + + scaleInBono: + Meta: + - meta:Title: + text: "Scale in Bono" + Scope: Public + Body: + - $this.components.where($ is components:Bono).first().scaleIn() + + scaleInHomestead: + Meta: + - meta:Title: + text: "Scale in Homestead" + Scope: Public + Body: + - $this.components.where($ is components:Homestead).first().scaleIn() + + scaleInRalf: + Meta: + - meta:Title: + text: "Scale in Ralf" + Scope: Public + Body: + - $this.components.where($ is components:Ralf).first().scaleIn() + diff --git a/Clearwater/package/Classes/components/base/ClearwaterComponentBase.yaml b/Clearwater/package/Classes/components/base/ClearwaterComponentBase.yaml index d6f858e7..7a319ab3 100644 --- a/Clearwater/package/Classes/components/base/ClearwaterComponentBase.yaml +++ b/Clearwater/package/Classes/components/base/ClearwaterComponentBase.yaml @@ -21,6 +21,24 @@ Namespaces: +--- #-------------------------------------------------------------# --- + +Name: ClearwaterServerProvider +Extends: apps:TemplateServerProvider + +Methods: + releaseReplicas: + Arguments: + replicas: + Contract: + - $.class(res:Instance) + Body: + - $owner: $.find(ClearwaterComponentBase) + - $replicas.select($owner.releaseServer($)) + - cast($this, apps:TemplateServerProvider).releaseReplicas($replicas) + +--- #-------------------------------------------------------------# --- + Name: ClearwaterComponentBase Extends: @@ -37,7 +55,7 @@ Properties: Usage: Out serverProvider: - Contract: $.class(apps:TemplateServerProvider) + Contract: $.class(ClearwaterServerProvider) Usage: Out Methods: @@ -57,7 +75,8 @@ Methods: "%PRIVATE_NETWORK_GATEWAY%": $instance.joinedNetworks.first().network.describe().gateway "%ZONE%": $.parent.dnsApp.zoneName "%DNSSEC_KEY%": $.parent.dnsApp.dnsSecKey - "%DNS_PRIVATE_IP%": $.parent.dnsApp.instance.joinedNetworks.first().ipList.where($ = $instance.floatingIpAddress).first() + "%DNS_PRIVATE_IP%": $.parent.dnsApp.instance.joinedNetworks.first().ipList + .where($ = $instance.floatingIpAddress).first() "%ETCD_IP%": $.parent.etcdClusterIp or $instancePrivateIp getDeployScriptName: @@ -73,7 +92,7 @@ Methods: - $._environment: $.find(std:Environment).require() - $.componentName: typeinfo($).name.split(".").last() - $.parent: $.find(cw:Clearwater).require() - - $.serverProvider: $.serverProvider or new(apps:TemplateServerProvider, $this, + - $.serverProvider: $.serverProvider or new(ClearwaterServerProvider, $this, template => $.parent.instanceTemplate, serverNamePattern => $this.componentName + "-{}") - $.cluster: $.cluster or new(apps:ServerReplicationGroup, $this, @@ -110,6 +129,15 @@ Methods: - $file: sys:Resources.string($.getConfigureScriptName()).replace($replacements) - conf:Linux.runCommand($instance.agent, $file) + releaseServer: + Arguments: + - instance: + Contract: $.class(res:LinuxInstance).notNull() + Body: + - $index: $.cluster.getServers().indexWhere($.name = $instance.name) + - $file: sys:Resources.string($.getUninstallScriptName()) + - conf:Linux.runCommand($instance.agent, $file) + deploy: diff --git a/Clearwater/package/Resources/Bono/scaleIn.sh b/Clearwater/package/Resources/Bono/scaleIn.sh new file mode 100644 index 00000000..ee056df7 --- /dev/null +++ b/Clearwater/package/Resources/Bono/scaleIn.sh @@ -0,0 +1,8 @@ +#!/usr/bin/env bash + +monit unmonitor -g bono +sudo service bono quiesce +sudo monit unmonitor clearwater_cluster_manager +sudo monit unmonitor clearwater_config_manager +sudo monit unmonitor -g etcd +sudo service clearwater-etcd decommission \ No newline at end of file diff --git a/Clearwater/package/Resources/Ellis/scaleIn.sh b/Clearwater/package/Resources/Ellis/scaleIn.sh new file mode 100644 index 00000000..e438fc78 --- /dev/null +++ b/Clearwater/package/Resources/Ellis/scaleIn.sh @@ -0,0 +1,7 @@ +#!/usr/bin/env bash +monit unmonitor -g ellis +sudo service ellis stop +sudo monit unmonitor clearwater_cluster_manager +sudo monit unmonitor clearwater_config_manager +sudo monit unmonitor -g etcd +sudo service clearwater-etcd decommission \ No newline at end of file diff --git a/Clearwater/package/Resources/Homer/scaleIn.sh b/Clearwater/package/Resources/Homer/scaleIn.sh new file mode 100644 index 00000000..7fc726c7 --- /dev/null +++ b/Clearwater/package/Resources/Homer/scaleIn.sh @@ -0,0 +1,7 @@ +#!/usr/bin/env bash +monit unmonitor -g homer +sudo service homer stop +sudo monit unmonitor clearwater_cluster_manager +sudo monit unmonitor clearwater_config_manager +sudo monit unmonitor -g etcd +sudo service clearwater-etcd decommission \ No newline at end of file diff --git a/Clearwater/package/Resources/Homestead/scaleIn.sh b/Clearwater/package/Resources/Homestead/scaleIn.sh new file mode 100644 index 00000000..51bbe107 --- /dev/null +++ b/Clearwater/package/Resources/Homestead/scaleIn.sh @@ -0,0 +1,8 @@ +#!/usr/bin/env bash +monit unmonitor -g homestead +monit unmonitor -g homestead-prov +sudo service homestead stop && sudo service homestead-prov stop +sudo monit unmonitor clearwater_cluster_manager +sudo monit unmonitor clearwater_config_manager +sudo monit unmonitor -g etcd +sudo service clearwater-etcd decommission \ No newline at end of file diff --git a/Clearwater/package/Resources/Ralf/scaleIn.sh b/Clearwater/package/Resources/Ralf/scaleIn.sh new file mode 100644 index 00000000..b61839ac --- /dev/null +++ b/Clearwater/package/Resources/Ralf/scaleIn.sh @@ -0,0 +1,7 @@ +#!/usr/bin/env bash +monit unmonitor -g ralf +sudo service ralf stop +sudo monit unmonitor clearwater_cluster_manager +sudo monit unmonitor clearwater_config_manager +sudo monit unmonitor -g etcd +sudo service clearwater-etcd decommission \ No newline at end of file diff --git a/Clearwater/package/Resources/Sprout/scaleIn.sh b/Clearwater/package/Resources/Sprout/scaleIn.sh new file mode 100644 index 00000000..2b4bb7e4 --- /dev/null +++ b/Clearwater/package/Resources/Sprout/scaleIn.sh @@ -0,0 +1,7 @@ +#!/usr/bin/env bash +monit unmonitor -g sprout +sudo service sprout quiesce +sudo monit unmonitor clearwater_cluster_manager +sudo monit unmonitor clearwater_config_manager +sudo monit unmonitor -g etcd +sudo service clearwater-etcd decommission \ No newline at end of file diff --git a/Clearwater/package/manifest.yaml b/Clearwater/package/manifest.yaml index de0ce70c..c6821c60 100644 --- a/Clearwater/package/manifest.yaml +++ b/Clearwater/package/manifest.yaml @@ -19,7 +19,7 @@ Description: | Author: 'Mirantis, Inc' Tags: [vIMS] Classes: - com.mirantis.clearwater.components.base.ClearwaterReplicaProvider: components/base/ClearwaterComponentBase.yaml + com.mirantis.clearwater.components.base.ClearwaterServerProvider: components/base/ClearwaterComponentBase.yaml com.mirantis.clearwater.Clearwater: Clearwater.yaml com.mirantis.clearwater.components.base.ClearwaterComponentBase: components/base/ClearwaterComponentBase.yaml com.mirantis.clearwater.components.Bono: components/Bono.yaml