def get_labels(self, task_type, task_idx, job_uuid): labels = self.resource_manager.get_labels(task_type=task_type, task_idx=task_idx, job_uuid=job_uuid) return get_labels(default_labels=labels, labels=self.labels.get(task_type, {}).get(task_idx))
def start_notebook(self, persistence_outputs=None, persistence_data=None, outputs_refs_jobs=None, outputs_refs_experiments=None, resources=None, labels=None, annotations=None, secret_refs=None, config_map_refs=None, node_selector=None, affinity=None, tolerations=None, backend=None, max_restarts=None, reconcile_url=None, mount_code_in_notebooks=False): ports = [self.request_notebook_port()] target_ports = [self.port] volumes, volume_mounts = get_pod_volumes(persistence_outputs=persistence_outputs, persistence_data=persistence_data) refs_volumes, refs_volume_mounts = get_pod_refs_outputs_volumes( outputs_refs=outputs_refs_jobs, persistence_outputs=persistence_outputs) volumes += refs_volumes volume_mounts += refs_volume_mounts refs_volumes, refs_volume_mounts = get_pod_refs_outputs_volumes( outputs_refs=outputs_refs_experiments, persistence_outputs=persistence_outputs) volumes += refs_volumes volume_mounts += refs_volume_mounts shm_volumes, shm_volume_mounts = get_shm_volumes() volumes += shm_volumes volume_mounts += shm_volume_mounts context_volumes, context_mounts = get_auth_context_volumes() volumes += context_volumes volume_mounts += context_mounts if mount_code_in_notebooks: code_volume, code_volume_mount = self.get_notebook_code_volume() volumes.append(code_volume) volume_mounts.append(code_volume_mount) resource_name = self.resource_manager.get_resource_name() args = self.get_notebook_args(deployment_name=resource_name, mount_code_in_notebooks=mount_code_in_notebooks, backend=backend) command = ["/bin/sh", "-c"] labels = get_labels(default_labels=self.resource_manager.labels, labels=labels) deployment = self.resource_manager.get_deployment( resource_name=resource_name, volume_mounts=volume_mounts, volumes=volumes, labels=labels, env_vars=None, command=command, args=args, init_env_vars=self.get_init_env_vars(), persistence_outputs=persistence_outputs, persistence_data=persistence_data, outputs_refs_jobs=outputs_refs_jobs, outputs_refs_experiments=outputs_refs_experiments, secret_refs=secret_refs, config_map_refs=config_map_refs, resources=resources, annotations=annotations, ephemeral_token=None, node_selector=node_selector, affinity=affinity, tolerations=tolerations, ports=target_ports, init_context_mounts=context_mounts, reconcile_url=reconcile_url, max_restarts=max_restarts, restart_policy=get_deployment_restart_policy(max_restarts)) dep_resp, _ = self.create_or_update_deployment(name=resource_name, body=deployment, reraise=True) service = services.get_service( namespace=self.namespace, name=resource_name, labels=self.resource_manager.get_labels(), ports=ports, target_ports=target_ports, service_type=self._get_service_type()) service_resp, _ = self.create_or_update_service(name=resource_name, body=service, reraise=True) results = {'deployment': dep_resp.to_dict(), 'service': service_resp.to_dict()} if self._use_ingress(): annotations = json.loads(conf.get(K8S_INGRESS_ANNOTATIONS)) paths = [{ 'path': '/notebooks/{}'.format(self.project_name.replace('.', '/')), 'backend': { 'serviceName': resource_name, 'servicePort': ports[0] } }] ingress = ingresses.get_ingress(namespace=self.namespace, name=resource_name, labels=self.resource_manager.get_labels(), annotations=annotations, paths=paths) self.create_or_update_ingress(name=resource_name, body=ingress, reraise=True) return results
def start_dockerizer(self, image_name: str, image_tag: str, from_image: str, nocache: bool, dockerfile_path: str, lang_env: str, context_path: str, commit: str, env_vars: Optional[List[Tuple[str, str]]], build_steps: Optional[List[str]], insecure: bool, creds_secret_ref: str, creds_secret_items: List[str], secret_refs=None, config_map_refs=None, resources=None, labels=None, annotations=None, node_selector=None, affinity=None, tolerations=None, reconcile_url=None, max_restarts=None): volumes, volume_mounts = get_docker_volumes() context_volumes, context_mounts = get_build_context_volumes() volumes += context_volumes volume_mounts += context_mounts registry_auth_volumes, registry_auth_mounts = self.get_docker_credentials_volumes( secret_ref=creds_secret_ref, secret_items=creds_secret_items ) volumes += registry_auth_volumes volume_mounts += registry_auth_mounts resource_name = self.resource_manager.get_resource_name() command, args = self.get_pod_command_args(image_name=image_name, image_tag=image_tag, nocache=nocache, insecure=insecure) init_command, init_args = self.get_init_command_args( from_image=from_image, dockerfile_path=dockerfile_path, lang_env=lang_env, context_path=context_path, commit=commit, env_vars=env_vars, build_steps=build_steps, ) labels = get_labels(default_labels=self.resource_manager.labels, labels=labels) pod = self.resource_manager.get_pod( resource_name=resource_name, volume_mounts=volume_mounts, volumes=volumes, labels=labels, env_vars=self.get_env_vars(), command=command, args=args, init_command=init_command, init_args=init_args, init_env_vars=self.get_init_env_vars(), persistence_outputs=None, persistence_data=None, outputs_refs_jobs=None, outputs_refs_experiments=None, secret_refs=secret_refs, config_map_refs=config_map_refs, resources=resources, annotations=annotations, ephemeral_token=None, node_selector=node_selector, affinity=affinity, tolerations=tolerations, init_context_mounts=context_mounts, reconcile_url=reconcile_url, max_restarts=max_restarts, restart_policy=get_pod_restart_policy(max_restarts)) pod_resp, _ = self.create_or_update_pod(name=resource_name, body=pod, reraise=True) return pod_resp.to_dict()
def start_job(self, container_cmd_callback, persistence_outputs=None, persistence_data=None, outputs_refs_jobs=None, outputs_refs_experiments=None, resources=None, labels=None, annotations=None, secret_refs=None, config_map_refs=None, node_selector=None, affinity=None, tolerations=None, reconcile_url=None, max_restarts=None): # Set and validate volumes volumes, volume_mounts = get_pod_volumes( persistence_outputs=persistence_outputs, persistence_data=persistence_data) refs_volumes, refs_volume_mounts = get_pod_refs_outputs_volumes( outputs_refs=outputs_refs_jobs, persistence_outputs=persistence_outputs) volumes += refs_volumes volume_mounts += refs_volume_mounts refs_volumes, refs_volume_mounts = get_pod_refs_outputs_volumes( outputs_refs=outputs_refs_experiments, persistence_outputs=persistence_outputs) volumes += refs_volumes volume_mounts += refs_volume_mounts shm_volumes, shm_volume_mounts = get_shm_volumes() volumes += shm_volumes volume_mounts += shm_volume_mounts context_volumes, context_mounts = get_auth_context_volumes() volumes += context_volumes volume_mounts += context_mounts command, args = container_cmd_callback() resource_name = self.resource_manager.get_resource_name() labels = get_labels(default_labels=self.resource_manager.labels, labels=labels) pod = self.resource_manager.get_pod( resource_name=resource_name, volume_mounts=volume_mounts, volumes=volumes, labels=labels, env_vars=None, command=command, args=args, init_env_vars=self.get_init_env_vars(), persistence_outputs=persistence_outputs, persistence_data=persistence_data, outputs_refs_jobs=outputs_refs_jobs, outputs_refs_experiments=outputs_refs_experiments, secret_refs=secret_refs, config_map_refs=config_map_refs, resources=resources, annotations=annotations, ephemeral_token=None, node_selector=node_selector, affinity=affinity, tolerations=tolerations, init_context_mounts=context_mounts, reconcile_url=reconcile_url, max_restarts=max_restarts, restart_policy=get_pod_restart_policy(max_restarts)) pod_resp, _ = self.create_or_update_pod(name=resource_name, body=pod, reraise=True) return pod_resp.to_dict()
def get_labels(self, task_type, task_idx, job_uuid): labels = self.resource_manager.get_labels(task_type=task_type, task_idx=task_idx, job_uuid=job_uuid) return get_labels(default_labels=labels, labels=self.spec.master_labels)