summaryrefslogtreecommitdiffstats
path: root/TOSCA/cloudify-environment-setup/scripts/manager/tasks.py
diff options
context:
space:
mode:
Diffstat (limited to 'TOSCA/cloudify-environment-setup/scripts/manager/tasks.py')
-rw-r--r--TOSCA/cloudify-environment-setup/scripts/manager/tasks.py206
1 files changed, 206 insertions, 0 deletions
diff --git a/TOSCA/cloudify-environment-setup/scripts/manager/tasks.py b/TOSCA/cloudify-environment-setup/scripts/manager/tasks.py
new file mode 100644
index 0000000000..e929d55098
--- /dev/null
+++ b/TOSCA/cloudify-environment-setup/scripts/manager/tasks.py
@@ -0,0 +1,206 @@
+# ============LICENSE_START==========================================
+# ===================================================================
+# Copyright (c) 2018 AT&T
+#
+# 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.
+#============LICENSE_END============================================
+
+from tempfile import NamedTemporaryFile
+from fabric.api import get, sudo, run
+from cloudify import ctx
+from cloudify.exceptions import NonRecoverableError, RecoverableError
+
+CONFIG_PATH = '/etc/cloudify/config.yaml'
+
+
+def install_rpm(_rpm):
+ try:
+ sudo("rpm -i {0}".format(_rpm))
+ except Exception as e:
+ raise NonRecoverableError(str(e))
+ return True
+
+
+def install_requirements():
+ try:
+ sudo("sudo yum install -y python-backports-ssl_match_hostname "
+ "python-setuptools python-backports")
+ except Exception as e:
+ raise NonRecoverableError(str(e))
+ return True
+
+
+def update_config(private, public, _config_path):
+ SED = "sed -i 's|{0}|{1}|g' {2}"
+
+ old_private_ip = " private_ip: \\x27\\x27"
+ new_private_ip = " private_ip: \\x27{0}\\x27".format(private)
+
+ try:
+ sudo(SED.format(old_private_ip, new_private_ip, _config_path))
+ except Exception as e:
+ raise NonRecoverableError(str(e))
+
+ old_public_ip = " public_ip: \\x27\\x27"
+ new_public_ip = " public_ip: \\x27{0}\\x27".format(public)
+
+ try:
+ sudo(SED.format(old_public_ip, new_public_ip, _config_path))
+ except Exception as e:
+ raise NonRecoverableError(str(e))
+
+ old_networks = " networks: {}"
+ new_networks = " networks: {{ \\x27default\\x27: \\x27{0}\\x27, \\x27external\\x27: \\x27{1}\\x27 }}".format(
+ private, public)
+
+ try:
+ sudo(SED.format(old_networks, new_networks, _config_path))
+ sudo("chmod 775 {0}".format(_config_path))
+ except Exception as e:
+ raise NonRecoverableError(str(e))
+ return True
+
+
+def cfy_install(password, old=False):
+ sudo("chmod 777 {0}".format(CONFIG_PATH))
+
+ install_string = 'cfy_manager install'
+
+ if password:
+ install_string = \
+ install_string + ' ' + '--admin-password {0}'.format(
+ password)
+ if old:
+ install_string = install_string + ' --clean-db'
+ elif not old:
+ try:
+ sudo("sudo yum install -y openssl-1.0.2k")
+ except Exception as e:
+ raise NonRecoverableError(str(e))
+
+ try:
+ run(install_string)
+ except Exception as e:
+ ctx.logger.error(str(e))
+ return False
+
+ sudo("chmod 775 {0}".format(CONFIG_PATH))
+
+ return True
+
+
+def plugins_upload():
+ try:
+ run("cfy plugins bundle-upload")
+ except Exception as e:
+ raise NonRecoverableError(str(e))
+
+ return True
+
+
+def secrets_create(secret_key, secret_value):
+ try:
+ run("cfy secrets create {0} -s \"{1}\"".format(
+ secret_key, secret_value))
+ except Exception as e:
+ raise NonRecoverableError(str(e))
+
+ return True
+
+
+def blueprints_upload(file, name, url):
+ try:
+ run("cfy blueprints upload -n {0} -b {1} {2}".format(file, name, url))
+ except Exception as e:
+ raise NonRecoverableError(str(e))
+
+ return True
+
+
+def create(private_ip,
+ public_ip,
+ rpm,
+ secrets,
+ blueprints,
+ config_path=CONFIG_PATH,
+ password=None,
+ **_):
+ ctx.logger.info("Installing Cloudify Manager components.")
+
+ try:
+ run("echo Hello")
+ except Exception as e:
+ raise RecoverableError(str(e))
+
+ if not ctx.instance.runtime_properties.get('installed_rpm'):
+ install_requirements()
+ ctx.instance.runtime_properties['installed_rpm'] = install_rpm(rpm)
+
+ if not ctx.instance.runtime_properties.get('updated_config'):
+ ctx.instance.runtime_properties['updated_config'] = \
+ update_config(private_ip, public_ip, config_path)
+
+ if 'cfy_installed' not in ctx.instance.runtime_properties:
+ cfy_install_output = cfy_install(password)
+ else:
+ cfy_install_output = cfy_install(password, old=True)
+
+ ctx.instance.runtime_properties['cfy_installed'] = cfy_install_output
+ if not cfy_install_output:
+ raise RecoverableError('cfy install failed.')
+
+ if not ctx.instance.runtime_properties.get('plugins_uploaded'):
+ try:
+ run(
+ "cfy plugins upload https://nexus.onap.org/content/sites/raw/org.onap.ccsdk.platform.plugins/plugins/helm-3.0.0-py27-none-linux_x86_64.wgn -y https://nexus.onap.org/content/sites/raw/org.onap.ccsdk.platform.plugins/type_files/helm/1.1.0/helm-type.yaml")
+ except Exception as e:
+ raise NonRecoverableError(str(e))
+ ctx.instance.runtime_properties['plugins_uploaded'] = plugins_upload()
+
+ more_secrets = [
+ {'key': 'cfy_user', 'value': 'admin'},
+ {'key': 'kubernetes_master_port', 'value': 'kubernetes_master_port'},
+ {'key': 'kubernetes-admin_client_certificate_data',
+ 'value': 'kubernetes-admin_client_certificate_data'},
+ {'key': 'kubernetes_master_ip', 'value': 'kubernetes_master_ip'},
+ {'key': 'kubernetes_certificate_authority_data',
+ 'value': 'kubernetes_certificate_authority_data'},
+ {'key': 'kubernetes-admin_client_key_data',
+ 'value': 'kubernetes-admin_client_key_data'},
+ {'key': 'cfy_password', 'value': password or 'cfy_password'},
+ {'key': 'cfy_tenant', 'value': 'default_tenant'},
+ {'key': 'kubernetes_token', 'value': 'kubernetes_token'}
+ ]
+ for ms in more_secrets:
+ secrets.append(ms)
+
+ for secret in secrets:
+ secrets_create(
+ secret.get('key'),
+ secret.get('value'))
+
+ for blueprint in blueprints:
+ blueprints_upload(
+ blueprint.get('file'),
+ blueprint.get('name'),
+ blueprint.get('url'))
+
+ ctx.logger.info(
+ "Initialize your CLI profile: "
+ "`cfy profiles use "
+ "{0} -u admin -p {1} -t default_tenant`".format(public_ip,
+ password or "_"))
+ if not password:
+ ctx.logger.info(
+ "Since you did not provide a password, scroll up though "
+ "the execution log and search for \"Manager password is\".")