def test_get_service_custom_resource(self): main_container = k8s_schemas.V1Container(name="main") sidecar_containers = [k8s_schemas.V1Container(name="sidecar")] init_containers = [k8s_schemas.V1Container(name="init")] termination = V1Termination(timeout=10) environment = V1Environment( labels={"foo": "bar"}, annotations={"foo": "bar"}, node_selector={"foo": "bar"}, node_name="foo", restart_policy="never", ) metadata, pod_spec = get_pod_spec( namespace="default", main_container=main_container, sidecar_containers=sidecar_containers, init_containers=init_containers, resource_name="foo", volumes=[], environment=environment, labels=environment.labels, ) custom_object = { "serviceSpec": { "template": get_pod_template_spec(metadata=metadata, pod_spec=pod_spec), }, "termination": { "activeDeadlineSeconds": termination.timeout }, "collectLogs": True, "syncStatuses": True, "notifications": [], } expected_crd = get_custom_object( namespace="default", resource_name="foo", kind="Operation", api_version="core.polyaxon.com/v1", labels={"foo": "bar"}, custom_object=custom_object, ) crd = get_service_custom_resource( namespace="default", resource_name="foo", main_container=main_container, sidecar_containers=sidecar_containers, init_containers=init_containers, volumes=[], termination=termination, environment=environment, labels=environment.labels, collect_logs=True, sync_statuses=True, notifications=None, ports=[], ) assert crd == expected_crd
def test_get_service_custom_resource_missing_keys(self): main_container = k8s_schemas.V1Container(name="main") metadata, pod_spec = get_pod_spec( namespace="default", main_container=main_container, sidecar_containers=None, init_containers=None, resource_name="foo", volumes=[], environment=None, labels=None, annotations=None, ) notifications = [ V1Notification(connections=["test"], trigger=V1Statuses.DONE) ] custom_object = { "template": get_pod_template_spec(metadata=metadata, pod_spec=pod_spec), "ports": [12, 121, 12], } expected_crd = get_custom_object( namespace="default", resource_name="foo", kind="Operation", api_version="core.polyaxon.com/v1", labels=None, annotations=None, custom_object={ "serviceSpec": custom_object, "collectLogs": False, "syncStatuses": False, "notifications": [n.to_operator() for n in notifications], }, ) crd = get_service_custom_resource( namespace="default", resource_name="foo", main_container=main_container, sidecar_containers=None, init_containers=None, volumes=[], termination=None, collect_logs=None, sync_statuses=None, notifications=notifications, environment=None, labels=None, annotations=None, ports=[12, 121, 12], ) assert crd == expected_crd
def get_resource( self, compiled_operation: V1CompiledOperation, artifacts_store: V1ConnectionType, connection_by_names: Dict[str, V1ConnectionType], secrets: Optional[Iterable[V1K8sResourceType]], config_maps: Optional[Iterable[V1K8sResourceType]], default_sa: str = None, default_auth: bool = False, ) -> Dict: service = compiled_operation.run # type: V1Service plugins = compiled_operation.plugins or V1Plugins() contexts = PluginsContextsSpec.from_config(plugins, default_auth=default_auth) replica_spec = self.get_replica_resource( plugins=plugins, contexts=contexts, environment=service.environment, volumes=service.volumes, init=service.init, sidecars=service.sidecars, container=service.container, artifacts_store=artifacts_store, connections=service.connections, connection_by_names=connection_by_names, secrets=secrets, config_maps=config_maps, default_sa=default_sa, ports=service.ports, ) return get_service_custom_resource( namespace=self.namespace, main_container=replica_spec.main_container, sidecar_containers=replica_spec.sidecar_containers, init_containers=replica_spec.init_containers, resource_name=self.resource_name, volumes=replica_spec.volumes, environment=replica_spec.environment, termination=compiled_operation.termination, collect_logs=contexts.collect_logs, sync_statuses=contexts.sync_statuses, notifications=plugins.notifications, labels=replica_spec.labels, annotations=self.annotations, ports=service.ports, )