def __init__(self, kube_client=None, in_cluster=True, cluster_context=None, extract_xcom=False): super(PodLauncher, self).__init__() self._client = kube_client or get_kube_client(in_cluster=in_cluster, cluster_context=cluster_context) self._watch = watch.Watch() self.extract_xcom = extract_xcom self.kube_req_factory = pod_factory.ExtractXcomPodRequestFactory( ) if extract_xcom else pod_factory.SimplePodRequestFactory()
def __init__(self, kube_client=None, in_cluster=True, cluster_context=None): super(PodLauncher, self).__init__() self._client = kube_client or get_kube_client( in_cluster=in_cluster, cluster_context=cluster_context) self._watch = watch.Watch() self.kube_req_factory = pod_fac.SimplePodRequestFactory()
def __init__(self, kube_client=None, in_cluster=True, cluster_context=None, extract_xcom=False): """ Creates the launcher. :param kube_client: kubernetes client :param in_cluster: whether we are in cluster :param cluster_context: context of the cluster :param extract_xcom: whether we should extract xcom """ super(PodLauncher, self).__init__() self._client = kube_client or get_kube_client( in_cluster=in_cluster, cluster_context=cluster_context) self._watch = watch.Watch() self.extract_xcom = extract_xcom self.kube_req_factory = pod_factory.ExtractXcomPodRequestFactory( ) if extract_xcom else pod_factory.SimplePodRequestFactory()
def __init__(self, kube_client=None): super(PodLauncher, self).__init__() self._client = kube_client or get_kube_client() self._watch = watch.Watch() self.kube_req_factory = pod_fac.SimplePodRequestFactory()
def prepare_and_update_body(self): # call to prepare the raw body. super().prepare_and_update_body() pod_body = None if pod_generator is not None: # old pod generator gen = pod_generator.PodGenerator() for port in self.ports: gen.add_port(port) for mount in self.volume_mounts: gen.add_mount(mount) for volume in self.volumes: gen.add_volume(volume) job_obj = self.job_runner.body[0] # selecting appropriate pod values. all_labels = {} all_labels.update(self.labels) all_labels.update(job_obj["spec"]["template"]["metadata"].get( "labels", {})) image = self.image or job_obj["spec"]["template"]["spec"][ "containers"][0].get("image", None) cmds = self.command or job_obj["spec"]["template"]["spec"][ "containers"][0].get("command", []) arguments = self.arguments or job_obj["spec"]["template"]["spec"][ "containers"][0].get("args", []) pod = gen.make_pod( namespace=job_obj["metadata"]["namespace"], image=image, pod_id=job_obj["metadata"]["name"], cmds=cmds, arguments=arguments, labels=all_labels, ) pod.service_account_name = self.service_account_name pod.secrets = self.secrets pod.envs = self.envs pod.image_pull_policy = self.image_pull_policy pod.image_pull_secrets = self.image_pull_secrets pod.annotations = self.annotations pod.resources = self.resources pod.affinity = self.affinity pod.node_selectors = self.node_selectors pod.hostnetwork = self.hostnetwork pod.tolerations = self.tolerations pod.configmaps = self.configmaps pod.security_context = self.security_context pod.pod_runtime_info_envs = self.pod_runtime_info_envs pod.dnspolicy = self.dnspolicy # old pod generation.. moving to new one pod_body = pod_request_factory.SimplePodRequestFactory().create( pod) else: pod_body = k8s.V1Pod( api_version="v1", kind="Pod", metadata=k8s.V1ObjectMeta( namespace=self.namespace, labels=self.labels, name="legacy", annotations=self.annotations, ), spec=k8s.V1PodSpec( node_selector=self.node_selectors, affinity=self.affinity, tolerations=self.tolerations, init_containers=self.init_containers, containers=[ k8s.V1Container( image=self.image, name="main", command=self.command, ports=self.ports, resources=self.resources, volume_mounts=self.volume_mounts, args=self.arguments, env=None if self.envs is None else self._get_kubernetes_env_list(), env_from=self.env_from, ) ], image_pull_secrets=self.image_pull_secrets, service_account_name=self.service_account_name, host_network=self.hostnetwork, security_context=self.security_context, dns_policy=self.dnspolicy, scheduler_name=self.schedulername, restart_policy="Never", priority_class_name=self.priority_class_name, volumes=self.volumes, ), ) pod_body = { "metadata": self.job_runner.client.api_client.sanitize_for_serialization( pod_body.metadata), "spec": self.job_runner.client.api_client.sanitize_for_serialization( pod_body.spec), } # reset the name del pod_body["metadata"]["name"] pod_body["metadata"].update( self.job_runner.body[0]["spec"]["template"]["metadata"]) self.job_runner.body[0]["spec"]["template"] = pod_body