def NewFromJsonDict(data): '''Create a new instance base on a JSON dict Args: data: A JSON dict, as converted from the JSON in the kubernetes API Returns: A kubernetes.ServiceList instance ''' items = [] metadata = data.get('metadata') if 'items' in data and data['items']: from kubernetes import Service items = [Service.NewFromJsonDict(service) for service in data['items']] return ServiceList( Kind=data.get('kind', None), APIVersion=data.get('apiVersion', None), Name=metadata.get('name', None), UID=metadata.get('uid', None), CreationTimestamp=metadata.get('creationTimestamp', None), SelfLink=metadata.get('selfLink', None), ResourceVersion=metadata.get('resourceVersion', None), Namespace=metadata.get('namespace', None), Annotations=metadata.get('annotations', None), Items=items)
def NewFromJsonDict(data): '''Create a new instance base on a JSON dict Args: data: A JSON dict, as converted from the JSON in the kubernetes API Returns: A kubernetes.Service instance ''' metadata = data.get('metadata') spec = data.get('spec') selector = spec.get('selector') return Service( Kind=data.get('kind', None), APIVersion=data.get('apiVersion', None), Name=metadata.get('name', None), UID=metadata.get('uid', None), CreationTimestamp=metadata.get('creationTimestamp', None), SelfLink=metadata.get('selfLink', None), ResourceVersion=metadata.get('resourceVersion', None), Namespace=metadata.get('namespace', None), Annotations=metadata.get('annotations', None), Selector=selector, ExternalIPs=spec.get('externalIPs', None), Ports=spec.get('ports', None), Protocol=spec.get('protocol', None), Labels=spec.get('labels', None), CreateExternalLoadBalancer=spec.get('createExternalLoadBalancer', None), ContainerPort=spec.get('containerPort', None), ClusterIP=spec.get('clusterIP', None), ProxyPort=spec.get('proxyPort', None))
def list_service(self): """Returns list of services""" entities = [] entities_j = self.api.get('service')[1]['items'] for entity_j in entities_j: meta, spec = entity_j['metadata'], entity_j['spec'] entity = Service(meta['name'], meta['namespace'], spec['portalIP'], spec['sessionAffinity']) entities.append(entity) return entities
def CreateService(self, data, namespace='default'): '''Create a new Service''' url = ('%(base_url)s/namespaces/%(ns)s/services' % { "base_url": self.base_url, "ns": namespace }) json = self._RequestUrl(url, 'POST', data) if json.status_code is not 201: raise KubernetesError(json.json()['message'], json.status_code) result = self._ParseAndCheckKubernetes(json.content) return Service.NewFromJsonDict(result)
def GetService(self, name, namespace='default'): '''List the specific service on this cluster''' # Make and send requests url = ('%(base_url)s/namespaces/%(ns)s/services/%(name)s' % { "base_url": self.base_url, "ns": namespace, "name": name }) json = self._RequestUrl(url, 'GET') if json.status_code == 404: #not exit, just return None return None data = self._ParseAndCheckKubernetes(json.content) return Service.NewFromJsonDict(data)