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
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 }