Cloudify support for OOM
[oom.git] / cloudify-onap / plugins / onap-installation-plugin / k8s_installer / common / namespace.py
@@ -1,37 +1,67 @@
-import pip
-
+########
+# Copyright (c) 2017 GigaSpaces Technologies Ltd. All rights reserved
+#
+# 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.
+
+import cloudify_kubernetes.tasks as kubernetes_plugin
 from cloudify import ctx
 from cloudify.exceptions import NonRecoverableError
 
+import deployment_result
 
-def _import_or_install():
-    try:
-        import yaml
-    except ImportError:
-        pip.main(["install", "pyaml"])
 
-    try:
-        import cloudify_kubernetes.tasks as kubernetes_plugin
-    except ImportError:
-        pip.main([
-            "install",
-            "https://github.com/cloudify-incubator/cloudify-kubernetes-plugin/archive/1.2.1rc1.zip"
-        ])
+def do_create_namespace():
+    namespace = _retrieve_namespace()
+    ctx.logger.info('Creating namespace: {0}'.format(namespace))
 
-    import yaml
-    import cloudify_kubernetes.tasks as kubernetes_plugin
+    namespace_resource_template = _prepare_namespace_resource_template(
+        namespace
+    )
 
-    return yaml, kubernetes_plugin
+    ctx.logger.debug(
+        'Kubernetes object which will be deployed: {0}'
+            .format(namespace_resource_template)
+    )
 
+    kubernetes_plugin.custom_resource_create(**namespace_resource_template)
+    deployment_result.save_deployment_result('namespace')
+    ctx.logger.info('Namespace created successfully')
 
-def _retrieve_namespace():
-    namespace = ctx.node.properties.get(
-        'namespace',
-        ctx.node.properties
-            .get('options', {})
-            .get('namespace', None)
+
+def do_delete_namespace():
+    namespace = _retrieve_namespace()
+    ctx.logger.info('Deleting namespace: {0}'.format(namespace))
+
+    namespace_resource_template = _prepare_namespace_resource_template(
+        namespace
+    )
+
+    ctx.logger.debug(
+        'Kubernetes object which will be deleted: {0}'
+            .format(namespace_resource_template)
     )
 
+    deployment_result.set_deployment_result('namespace')
+    kubernetes_plugin.custom_resource_delete(**namespace_resource_template)
+    ctx.logger.info('Namespace deleted successfully')
+
+
+
+def _retrieve_namespace():
+
+    default_namespace = ctx.node.properties.get('options', {}).get('namespace')
+    namespace = ctx.node.properties.get('namespace', default_namespace)
+
     if not namespace:
         raise NonRecoverableError(
             'Namespace is not defined (node={})'.format(ctx.node.name)
@@ -69,33 +99,3 @@ def _prepare_namespace_resource_template(name):
             }
         }
     }
-
-
-def _save_deployment_result(key):
-    result = ctx.instance.runtime_properties['kubernetes']
-    ctx.instance.runtime_properties[key] = result
-    ctx.instance.runtime_properties['kubernetes'] = {}
-
-
-def _do_create_namespace(kubernetes_plugin):
-    namespace = _retrieve_namespace()
-    ctx.logger.info('Creating namespace: {0}'.format(namespace))
-
-    namespace_resource_template = _prepare_namespace_resource_template(
-        namespace
-    )
-
-    ctx.logger.debug(
-        'Kubernetes object which will be deployed: {0}'
-            .format(namespace_resource_template)
-    )
-
-    kubernetes_plugin.custom_resource_create(**namespace_resource_template)
-    _save_deployment_result('namespace')
-    ctx.logger.info('Namespace created successfully')
-
-
-if __name__ == '__main__':
-    _, kubernetes_plugin = _import_or_install()
-
-    _do_create_namespace(kubernetes_plugin)