def test_get_env_vars_with_config_maps(self): assert (get_env_vars( contexts=None, log_level=None, kv_env_vars=None, artifacts_store_name=None, connections=None, secrets=None, config_maps=[self.resource1, self.resource2], ) == get_items_from_config_map(config_map=self.resource1) + get_items_from_config_map(config_map=self.resource2)) assert (get_env_vars( contexts=None, log_level=None, kv_env_vars=None, artifacts_store_name=None, connections=None, secrets=None, config_maps=[ self.resource1, self.resource2, self.resource3, self.resource4, ], ) == get_items_from_config_map(config_map=self.resource1) + get_items_from_config_map(config_map=self.resource2) + get_items_from_config_map(config_map=self.resource3) + get_items_from_config_map(config_map=self.resource4))
def test_get_env_vars_with_kv_env_vars(self): # Check wrong kv env vars with self.assertRaises(PolypodException): get_env_vars( contexts=None, log_level=None, kv_env_vars=["x", "y", "z"], artifacts_store_name=None, connections=None, secrets=None, config_maps=None, ) with self.assertRaises(PolypodException): get_env_vars( contexts=None, log_level=None, kv_env_vars={"x": "y"}, artifacts_store_name=None, connections=None, secrets=None, config_maps=None, ) # Valid kv env vars assert (get_env_vars( contexts=None, log_level=None, kv_env_vars=[["key1", "val1"], ["key2", "val2"]], artifacts_store_name=None, connections=None, secrets=None, config_maps=None, ) == get_kv_env_vars([["key1", "val1"], ["key2", "val2"]]))
def test_get_env_vars_with_secrets(self): assert (get_env_vars( contexts=None, log_level=None, kv_env_vars=None, connections=None, secrets=[self.resource1, self.resource2], config_maps=None, ) == get_items_from_secret(secret=self.resource1) + get_items_from_secret(secret=self.resource2)) assert (get_env_vars( contexts=None, log_level=None, kv_env_vars=None, connections=None, secrets=[ self.resource1, self.resource2, self.resource3, self.resource4, ], config_maps=None, ) == get_items_from_secret(secret=self.resource1) + get_items_from_secret(secret=self.resource2) + get_items_from_secret(secret=self.resource3) + get_items_from_secret(secret=self.resource4))
def test_get_env_vars_with_artifacts_store(self): assert (get_env_vars( contexts=None, log_level=None, kv_env_vars=None, connections=None, secrets=None, config_maps=None, ) == []) assert get_env_vars( contexts=PluginsContextsSpec.from_config( V1Plugins(collect_logs=False, collect_artifacts=True, collect_resources=True)), log_level=None, kv_env_vars=None, connections=None, secrets=None, config_maps=None, ) == [ get_env_var(name=POLYAXON_KEYS_COLLECT_ARTIFACTS, value=True), get_env_var(name=POLYAXON_KEYS_COLLECT_RESOURCES, value=True), ] assert (get_env_vars( contexts=PluginsContextsSpec.from_config( V1Plugins( collect_logs=False, collect_artifacts=False, collect_resources=False, )), log_level=None, kv_env_vars=None, connections=None, secrets=None, config_maps=None, ) == []) assert (get_env_vars( contexts=None, log_level=None, kv_env_vars=None, connections=None, secrets=None, config_maps=None, ) == []) assert get_env_vars( contexts=PluginsContextsSpec.from_config( V1Plugins(collect_logs=False, collect_artifacts=True, collect_resources=False)), log_level=None, kv_env_vars=None, connections=None, secrets=None, config_maps=None, ) == [get_env_var(name=POLYAXON_KEYS_COLLECT_ARTIFACTS, value=True)]
def test_get_env_vars_with_all(self): connection = V1ConnectionType( name="test_s3", kind=V1ConnectionKind.S3, schema=V1BucketConnection(bucket="s3//:foo"), secret=self.resource6.schema, ) env_vars = get_env_vars( contexts=PluginsContextsSpec.from_config( V1Plugins(collect_logs=False, collect_artifacts=True, collect_resources=True)), log_level="info", kv_env_vars=[["key1", "val1"], ["key2", "val2"]], artifacts_store_name="test", connections=[connection], secrets=[ self.resource1, self.resource2, self.resource3, self.resource4, self.resource6, ], config_maps=[ self.resource1, self.resource2, self.resource3, self.resource4, ], ) expected = [ get_env_var(name=POLYAXON_KEYS_LOG_LEVEL, value="info"), get_env_var(name=POLYAXON_KEYS_COLLECT_ARTIFACTS, value=True), get_env_var(name=POLYAXON_KEYS_COLLECT_RESOURCES, value=True), get_env_var(name=POLYAXON_KEYS_ARTIFACTS_STORE_NAME, value="test"), ] expected += get_connection_env_var(connection=connection, secret=self.resource6) expected += get_kv_env_vars([["key1", "val1"], ["key2", "val2"]]) expected += get_env_vars_from_k8s_resources( secrets=[ self.resource1, self.resource2, self.resource3, self.resource4, self.resource6, ], config_maps=[ self.resource1, self.resource2, self.resource3, self.resource4, ], ) assert env_vars == expected
def test_get_env_vars(self): assert (get_env_vars( contexts=None, log_level=None, kv_env_vars=None, connections=None, secrets=None, config_maps=None, ) == [])
def get_main_container( container_id: str, main_container: k8s_schemas.V1Container, volume_mounts: List[k8s_schemas.V1VolumeMount], contexts: PluginsContextsSpec, artifacts_store: Optional[V1ConnectionType], init: Optional[List[V1Init]], connections: Optional[List[str]], connection_by_names: Dict[str, V1ConnectionType], secrets: Optional[Iterable[V1K8sResourceType]], config_maps: Optional[Iterable[V1K8sResourceType]], log_level: str, run_path: Optional[str], kv_env_vars=None, env: List[k8s_schemas.V1EnvVar] = None, ports: List[int] = None, ) -> k8s_schemas.V1Container: """Pod job container for task.""" connections = connections or [] connection_by_names = connection_by_names or {} secrets = secrets or [] config_maps = config_maps or [] if artifacts_store and not run_path: raise PolypodException("Run path is required for main container.") if artifacts_store and not contexts.collect_artifacts: if artifacts_store.name not in connection_by_names: connection_by_names[artifacts_store.name] = artifacts_store connections.append(artifacts_store.name) requested_connections = [connection_by_names[c] for c in connections] requested_config_maps = get_requested_config_maps( config_maps=config_maps, connections=requested_connections) requested_secrets = get_requested_secrets( secrets=secrets, connections=requested_connections) # Mounts volume_mounts = to_list(volume_mounts, check_none=True) volume_mounts = volume_mounts + get_volume_mounts( contexts=contexts, init=init, connections=requested_connections, secrets=requested_secrets, config_maps=requested_config_maps, ) # Env vars env = to_list(env, check_none=True) env = env + get_env_vars( contexts=contexts, log_level=log_level, kv_env_vars=kv_env_vars, connections=requested_connections, secrets=requested_secrets, config_maps=requested_config_maps, ) # Env from env_from = get_env_from_k8s_resources(secrets=requested_secrets, config_maps=requested_config_maps) ports = [ k8s_schemas.V1ContainerPort(container_port=port) for port in to_list(ports, check_none=True) ] return patch_container( container=main_container, name=container_id, env=env, env_from=env_from, volume_mounts=volume_mounts, ports=ports or None, )