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 _save_deployment_result(key):
75 result = ctx.instance.runtime_properties['kubernetes']
76 ctx.instance.runtime_properties[key] = result
77 ctx.instance.runtime_properties['kubernetes'] = {}
80 def _do_create_namespace(kubernetes_plugin):
81 namespace = _retrieve_namespace()
82 ctx.logger.info('Creating namespace: {0}'.format(namespace))
84 namespace_resource_template = _prepare_namespace_resource_template(
89 'Kubernetes object which will be deployed: {0}'
90 .format(namespace_resource_template)
93 kubernetes_plugin.custom_resource_create(**namespace_resource_template)
94 _save_deployment_result('namespace')
95 ctx.logger.info('Namespace created successfully')
98 if __name__ == '__main__':
99 _, kubernetes_plugin = _import_or_install()
101 _do_create_namespace(kubernetes_plugin)