def remove(self, data):
     cluster_info = db_resource.Cluster().list({'name': data['name']})
     result = {'id': '', 'name': '', 'correlation_id': ''}
     if cluster_info:
         cluster_info = cluster_info[0]
         ref_count, refs = db_resource.Cluster().delete(cluster_info['id'])
         result = refs[0]
     return result
 def apply(self, data):
     cluster_info = db_resource.Cluster().list({'name': data['name']})
     result = None
     if not cluster_info:
         data['id'] = 'cluster-' + data['name']
         result = db_resource.Cluster().create(data)
     else:
         cluster_info = cluster_info[0]
         # for token decryption
         data['id'] = cluster_info['id']
         result_before, result = db_resource.Cluster().update(cluster_info['id'], data)
     return result
Esempio n. 3
0
 def list(self, filters=None):
     clusters = db_resource.Cluster().list()
     # all cached as default(3s)
     results = self.cached_all(clusters)
     if filters:
         # The following options of operator is required by wecube-platform: eq/neq/is/isnot/gt/lt/like/in
         # but kubernetes plugin supports for more: gte/lte/notin/regex/set/notset
         # set test false/0/''/[]/{}/None as false
         # you can also use regex to match the value
         results = [
             ret for ret in results if jsonfilter.match_all(filters, ret)
         ]
     return results
 def remove(self, data):
     cluster_info = db_resource.Cluster().list({'name': data['cluster']})
     if not cluster_info:
         raise exceptions.ValidationError(attribute='cluster',
                                          msg=_('name of cluster(%(name)s) not found' % {'name': data['cluster']}))
     cluster_info = cluster_info[0]
     k8s_auth = k8s.AuthToken(cluster_info['api_server'], cluster_info['token'])
     k8s_client = k8s.Client(k8s_auth)
     resource_name = api_utils.escape_name(data['name'])
     exists_resource = k8s_client.get_service(resource_name, data['namespace'])
     if exists_resource is not None:
         k8s_client.delete_service(resource_name, data['namespace'])
     # TODO: k8s为异步接口,是否需要等待真正执行完毕
     return {'id': '', 'name': '', 'correlation_id': ''}
 def apply(self, data):
     resource_id = data['correlation_id']
     cluster_info = db_resource.Cluster().list({'name': data['cluster']})
     if not cluster_info:
         raise exceptions.ValidationError(attribute='cluster',
                                          msg=_('name of cluster(%(name)s) not found' % {'name': data['cluster']}))
     cluster_info = cluster_info[0]
     k8s_auth = k8s.AuthToken(cluster_info['api_server'], cluster_info['token'])
     k8s_client = k8s.Client(k8s_auth)
     k8s_client.ensure_namespace(data['namespace'])
     resource_name = api_utils.escape_name(data['name'])
     exists_resource = k8s_client.get_deployment(resource_name, data['namespace'])
     if exists_resource is None:
         exists_resource = k8s_client.create_deployment(data['namespace'], self.to_resource(k8s_client, data))
     else:
         exists_resource = k8s_client.update_deployment(resource_name, data['namespace'],
                                                        self.to_resource(k8s_client, data))
     # TODO: k8s为异步接口,是否需要等待真正执行完毕
     return {
         'id': exists_resource.metadata.uid,
         'name': exists_resource.metadata.name,
         'correlation_id': resource_id
     }