3 from cloudify import ctx
4 from cloudify.exceptions import NonRecoverableError
7 def _import_or_install():
11 pip.main(["install", "pyaml"])
14 import cloudify_kubernetes.tasks as kubernetes_plugin
18 "https://github.com/cloudify-incubator/cloudify-kubernetes-plugin/archive/1.2.1rc1.zip"
22 import cloudify_kubernetes.tasks as kubernetes_plugin
24 return yaml, kubernetes_plugin
27 def _retrieve_namespace():
28 namespace = ctx.node.properties.get(
32 .get('namespace', None)
36 raise NonRecoverableError(
37 'Namespace is not defined (node={})'.format(ctx.node.name)
43 def _prepare_namespace_resource_template(name):
58 'method': 'create_namespace',
59 'payload': 'V1Namespace'
63 'method': 'read_namespace',
67 'method': 'delete_namespace',
68 'payload': 'V1DeleteOptions'
74 def _set_deployment_result(key):
75 result = ctx.instance.runtime_properties.pop(key)
76 ctx.instance.runtime_properties['kubernetes'] = result
79 def _do_delete_namespace(kubernetes_plugin):
80 namespace = _retrieve_namespace()
81 ctx.logger.info('Deleting namespace: {0}'.format(namespace))
83 namespace_resource_template = _prepare_namespace_resource_template(
88 'Kubernetes object which will be deleted: {0}'
89 .format(namespace_resource_template)
92 _set_deployment_result('namespace')
93 kubernetes_plugin.custom_resource_delete(**namespace_resource_template)
94 ctx.logger.info('Namespace deleted successfully')
97 if __name__ == '__main__':
98 _, kubernetes_plugin = _import_or_install()
100 _do_delete_namespace(kubernetes_plugin)