def scheduler(name, node, namespace="default"): body = client.V1Binding() target = client.V1ObjectReference() target.kind = 'Node' target.apiVersion = 'v1' target.name = node meta = client.V1ObjectMeta() meta.name = name body.target = target body.metadata = meta try: # Method changed in clinet v6.0 # return v1.create_namespaced_binding(body, namespace) # For v2.0 res = v1.create_namespaced_binding_binding(name, namespace, body) if res: # print 'POD '+name+' scheduled and placed on '+node return True except Exception as a: print( "Exception when calling CoreV1Api->create_namespaced_binding: %s\n" % a) return False
def scheduler(name, model, ns): ## #Step 3 - Selecting a node ## node = get_nodes(model) logging.info("Putting {0} on {1} in namespace: {2}".format(name, node, ns)) # #https://github.com/kubernetes-client/python/issues/547 #https://github.com/kubernetes-client/python/issues/547#issuecomment-455362558 ## target = client.V1ObjectReference() target.kind = "Node" target.apiVersion = "v1" target.name = node meta = client.V1ObjectMeta() meta.name = name body = client.V1Binding(target=target, metadata=meta) ## #Step 4 - Bind the pod to a node #Finished ## return v1_api.create_namespaced_binding(namespace=ns, body=body)
def bind_to_node(self, pod_name, node_name, namespace='default'): """ Bind Pod to a Node :param str pod_name: pod name which we are binding :param str node_name: node name which pod has to be binded :param str namespace: namespace of pod :return: True if pod was bound successfully, False otherwise """ target = client.V1ObjectReference() target.kind = "Node" target.api_version = "v1" target.name = node_name meta = client.V1ObjectMeta() meta.name = pod_name body = client.V1Binding(target=target) body.target = target body.metadata = meta try: self.v1.create_namespaced_binding(namespace, body) return True except Exception as e: """ create_namespaced_binding() throws exception: Invalid value for `target`, must not be `None` or despite the fact this exception is being thrown, Pod is bound to a Node and Pod is running """ print('here') print('exception' + str(e)) return False
def BindPodToNode(self, podname, node, ns): """ Binds a pod to a node to start the deployment process. """ try: target = client.V1ObjectReference() target.kind = "Node" target.apiVersion = "v1" target.name = node meta = client.V1ObjectMeta() meta.name = podname body = client.V1Binding(target=target, metadata=meta) body.target = target body.metadata = meta return self.v1.create_namespaced_binding(namespace=ns, body=body) except ApiException as e: self.logger.error( f'Failed to bind pod {podname} to node {node} in namespace {ns}: {e}' ) return False except ValueError as e: # This is not a real error. It's a problem in the API waiting to be fixed: # https://github.com/kubernetes-client/python/issues/547 pass return True
def scheduler(name, node, namespace): target=client.V1ObjectReference(api_version='v1', kind="Node", name=node) meta=client.V1ObjectMeta() meta.name=name body=client.V1Binding(metadata=meta, target=target) return core_api.create_namespaced_binding(namespace, body, _preload_content=False)
def schedule(name, node, namespace='default'): target = client.V1ObjectReference(kind = 'Node', api_version = 'v1', name = node) meta = client.V1ObjectMeta(name = name) body = client.V1Binding(target = target, metadata = meta) try: client.CoreV1Api().create_namespaced_binding(namespace=namespace, body=body) except ValueError: print ("Exception")
def create_k8s_binding(name, node): target = client.V1ObjectReference() target.kind = "Node" target.apiVersion = "v1" target.name = node meta = client.V1ObjectMeta() meta.name = name body = client.V1Binding(metadata=meta, target=target) return body
def schedule_pod(cli, name): target = client.V1ObjectReference() target.kind = 'Node' target.apiVersion = 'v1' target.name = 'k3d-k3s-default-worker-1' meta = client.V1ObjectMeta() meta.name = name body = client.V1Binding(metadata=meta, target=target) return cli.create_namespaced_binding('default', body)
def scheduler(name, node, namespace='default'): target = client.V1ObjectReference() target.kind = 'Node' target.apiVersion = 'corev1' target.name = node print('target', target) meta = client.V1ObjectMeta() meta.name = name body = client.V1Binding(metadata=meta, target=target) return corev1.create_namespaced_binding(namespace=namespace, body=body)
def schedule(self, name, node, namespace='default'): '''Create a binding object to schedule the pod.''' target = client.V1ObjectReference(kind='Node', api_version='v1', name=node) meta = client.V1ObjectMeta(name=name) body = client.V1Binding(target=target, metadata=meta) self.api.create_namespaced_binding(namespace=namespace, body=body, _preload_content=False)
def scheduler(name, node, namespace="custom-scheduler"): body = client.V1Binding() target = client.V1ObjectReference() target.kind = "Node" target.apiVersion = "v1" target.name = node meta = client.V1ObjectMeta() meta.name = name body.target = target body.metadata = meta return v1.create_namespaced_binding(namespace, body)
def scheduler(name, node, namespace='default'): body = client.V1Binding() target = client.V1ObjectReference() target.kind = 'Node' target.apiVersion = 'v1' target.name = node meta = client.V1ObjectMeta() meta.name = name body.target = target body.metadata = meta return v1.create_namespaced_binding(name, namespace, body)
def scheduler(name, node, namespace="default"): print(name) print(node) target=client.V1ObjectReference() target.kind="Node" target.apiVersion="v1" target.name= node meta=client.V1ObjectMeta() meta.name=name body=client.V1Binding(metadata=meta, target=target) return v1.create_namespaced_binding(namespace, body)
def scheduler(name, node, namespace="default"): target = client.V1ObjectReference(kind="Node", api_version="v1", name=node) meta = client.V1ObjectMeta(name=name) body = client.V1Binding(metadata=meta, target=target) print("assign {} to {}".format(body.target.name, body.metadata.name)) res = None try: res = v1.create_namespaced_binding(namespace, body) except client.rest.ApiException: print('ValueError as Expected') finally: return res
def schedule_pod(pod_name, node_name): body = client.V1Binding(target=client.V1ObjectReference(kind="Node", api_version="v1", name=node_name), metadata=client.V1ObjectMeta(name=pod_name)) # From issue https://github.com/kubernetes-client/python/issues/547 try: v1.create_namespaced_binding(namespace=namespace_name, body=body) except ValueError: pass print("Scheduled {} into {}".format(pod_name, node_name))
def scheduler(name, node, namespace='default'): target = client.V1ObjectReference() target.kind = "Node" target.api_version = "v1" target.name = node meta = client.V1ObjectMeta() meta.name = name body = client.V1Binding(metadata=meta, target=target) body.target = target body.metadata = meta return v1.create_namespaced_binding(namespace, body)
def scheduler(name, node, namespace): target=client.V1ObjectReference(api_version='v1', kind="Node", name=node) #target.kind="Node" #target.apiVersion="v1" #target.name= node #pprint(target) meta=client.V1ObjectMeta() meta.name=name #pprint(meta) body=client.V1Binding(metadata=meta, target=target) #body.target=target #body.metadata=meta return apis_api.create_namespaced_binding(namespace, body, _preload_content=False)
def scheduler(t_name, t_node, t_namespace="default"): target = client.V1ObjectReference() target.kind = "Node" target.apiVersion = "v1" target.name = t_node meta = client.V1ObjectMeta() meta.name = t_name body = client.V1Binding(target=target, metadata=meta) return v1.create_namespaced_binding(namespace=t_namespace, body=body, _preload_content=False)
def scheduler(name, node, namespace='default'): """ Bind a pod to a node :param name: pod name :param node: node name :param namespace: kubernetes namespace :return: """ target = client.V1ObjectReference(kind = 'Node', api_version = 'v1', name = node) meta = client.V1ObjectMeta(name = name) body = client.V1Binding(target = target, metadata = meta) try: client.CoreV1Api().create_namespaced_binding(namespace=namespace, body=body) except ValueError: # PRINT SOMETHING or PASS pass
def scheduler(name, node, namespace="default"): #body = client.V1ConfigMap() body = client.V1Binding() target = client.V1ObjectReference() target.kind = "Node" target.apiVersion = "v1" target.name = node meta = client.V1ObjectMeta() meta.name = name body.target = target body.metadata = meta return v1.create_namespaced_binding(namespace, body, _preload_content=False)
def bind(self, pod, node, namespace="default"): target = client.V1ObjectReference(api_version='v1', kind='Node', name=node) meta = client.V1ObjectMeta() meta.name = pod.metadata.name body = client.V1Binding(target=target, metadata=meta) try: print("INFO Pod: %s placed on: %s\n" % (pod.metadata.name, node)) api_response = self.v1.create_namespaced_pod_binding( name=pod.metadata.name, namespace=namespace, body=body) print(api_response) return api_response except Exception as e: print( "Warning when calling CoreV1Api->create_namespaced_pod_binding: %s\n" % e)
def place_pod_on_node(self, pod: Pod, node: Node): # Update the internal state of the super class super(KubeClusterContext, self).place_pod_on_node(pod, node) # But also actually create the placmement in kubernetes target = client.V1ObjectReference() target.kind = '' target.apiVersion = 'v1' target.name = node.name meta = client.V1ObjectMeta() meta.name = pod.name body = client.V1Binding(target=target, metadata=meta) logging.info('Creating namespaced binding: Pod %s on Node %s', pod.name, node.name) try: self.api.create_namespaced_binding(pod.namespace, body) except ValueError: # Due to a bug in the library, an error was thrown (but everything most likely worked fine). # https://github.com/kubernetes-client/python/issues/547 pass