2 # Copyright (c) 2017 GigaSpaces Technologies Ltd. All rights reserved
4 # Licensed under the Apache License, Version 2.0 (the "License");
5 # you may not use this file except in compliance with the License.
6 # You may obtain a copy of the License at
8 # http://www.apache.org/licenses/LICENSE-2.0
10 # Unless required by applicable law or agreed to in writing, software
11 # distributed under the License is distributed on an "AS IS" BASIS,
12 # * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13 # * See the License for the specific language governing permissions and
14 # * limitations under the License.
16 import cloudify_kubernetes.tasks as kubernetes_plugin
17 from cloudify import ctx
18 from cloudify.exceptions import NonRecoverableError
20 import deployment_result
23 def do_create_namespace():
24 namespace = _retrieve_namespace()
25 ctx.logger.info('Creating namespace: {0}'.format(namespace))
27 namespace_resource_template = _prepare_namespace_resource_template(
32 'Kubernetes object which will be deployed: {0}'
33 .format(namespace_resource_template)
36 kubernetes_plugin.custom_resource_create(**namespace_resource_template)
37 deployment_result.save_deployment_result('namespace')
38 ctx.logger.info('Namespace created successfully')
41 def do_delete_namespace():
42 namespace = _retrieve_namespace()
43 ctx.logger.info('Deleting namespace: {0}'.format(namespace))
45 namespace_resource_template = _prepare_namespace_resource_template(
50 'Kubernetes object which will be deleted: {0}'
51 .format(namespace_resource_template)
54 deployment_result.set_deployment_result('namespace')
55 kubernetes_plugin.custom_resource_delete(**namespace_resource_template)
56 ctx.logger.info('Namespace deleted successfully')
60 def _retrieve_namespace():
62 default_namespace = ctx.node.properties.get('options', {}).get('namespace')
63 namespace = ctx.node.properties.get('namespace', default_namespace)
66 raise NonRecoverableError(
67 'Namespace is not defined (node={})'.format(ctx.node.name)
73 def _prepare_namespace_resource_template(name):
88 'method': 'create_namespace',
89 'payload': 'V1Namespace'
93 'method': 'read_namespace',
97 'method': 'delete_namespace',
98 'payload': 'V1DeleteOptions'