def test_multi_connections(self): assert (len( get_volume_mounts( contexts=None, init=[], connections=[ self.s3_store, self.gcs_store, self.az_store, self.claim_store, self.host_path_store, ], secrets=[], config_maps=[], )) == 2) assert (len( get_volume_mounts( contexts=None, init=[ V1Init(connection=self.s3_store.name, path="/test-1"), V1Init(connection=self.gcs_store.name, path="/test-2"), V1Init(connection=self.az_store.name, path="/test-3"), V1Init(connection=self.claim_store.name, path="/test-4"), V1Init(connection=self.host_path_store.name, path="/test-5"), ], connections=[], secrets=[], config_maps=[], )) == 5) assert (len( get_volume_mounts( contexts=None, init=[ V1Init(connection=self.s3_store.name, path="/test-1"), V1Init(connection=self.gcs_store.name, path="/test-2"), V1Init(connection=self.az_store.name, path="/test-3"), V1Init(connection=self.claim_store.name, path="/test-4"), V1Init(connection=self.host_path_store.name, path="/test-5"), ], connections=[ self.s3_store, self.gcs_store, self.az_store, self.claim_store, self.host_path_store, ], secrets=[], config_maps=[], )) == 7)
def test_get_volume_mounts(self): assert (get_volume_mounts( contexts=None, init=None, connections=None, secrets=None, config_maps=None, ) == []) assert (get_volume_mounts(contexts=None, init=[], connections=[], secrets=[], config_maps=[]) == [])
def assert_config_map(config_map, results): assert (get_volume_mounts( contexts=None, init=[], connections=[], secrets=[], config_maps=[config_map], ) == results)
def assert_single_init_store(store, results): assert (get_volume_mounts( contexts=None, init=[V1Init(connection=store.name, path="/test")], connections=[], secrets=[], config_maps=[], ) == results)
def test_multiple_resources(self): assert get_volume_mounts( contexts=None, init=[], connections=[], secrets=[ self.non_mount_resource1, self.non_mount_resource1, self.mount_resource1, self.mount_resource2, ], config_maps=[ self.non_mount_resource1, self.non_mount_resource1, self.mount_resource1, self.mount_resource2, ], ) == [ get_mount_from_resource(resource=self.mount_resource1), get_mount_from_resource(resource=self.mount_resource2), get_mount_from_resource(resource=self.mount_resource1), get_mount_from_resource(resource=self.mount_resource2), ]
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, )
def test_all_volumes(self): assert ( len( get_volume_mounts( contexts=PluginsContextsSpec.from_config( V1Plugins(collect_logs=False, collect_artifacts=True)), init=[ V1Init(connection=self.s3_store.name, path="/test-1"), V1Init(connection=self.gcs_store.name, path="/test-2"), V1Init(connection=self.az_store.name, path="/test-3"), V1Init(connection=self.claim_store.name, path="/test-4"), V1Init(connection=self.host_path_store.name, path="/test-5"), ], connections=[ self.s3_store, self.gcs_store, self.az_store, self.claim_store, self.host_path_store, ], secrets=[ self.non_mount_resource1, self.non_mount_resource1, self.mount_resource1, self.mount_resource2, ], config_maps=[ self.non_mount_resource1, self.non_mount_resource1, self.mount_resource1, self.mount_resource2, ], )) # 1: output store # 7: 5 managed contexts + 2 mounts # 4: 4 mount resources (secrets + configs) == 1 + 7 + 4) assert ( len( get_volume_mounts( contexts=None, init=[ V1Init(connection=self.s3_store.name, path="/test-1"), V1Init(connection=self.gcs_store.name, path="/test-2"), V1Init(connection=self.az_store.name, path="/test-3"), V1Init(connection=self.claim_store.name, path="/test-4"), V1Init(connection=self.host_path_store.name, path="/test-5"), ], connections=[ self.s3_store, self.gcs_store, self.az_store, self.claim_store, self.host_path_store, ], secrets=[ self.non_mount_resource1, self.non_mount_resource1, self.mount_resource1, self.mount_resource2, ], config_maps=[ self.non_mount_resource1, self.non_mount_resource1, self.mount_resource1, self.mount_resource2, ], )) # 7: 5 managed contexts + 2 mounts # 4: 4 mount resources (secrets + configs) == 7 + 4) assert ( len( get_volume_mounts( contexts=PluginsContextsSpec.from_config( V1Plugins(collect_logs=True, collect_artifacts=True)), init=[ V1Init(connection=self.s3_store.name, path="/test-1"), V1Init(connection=self.gcs_store.name, path="/test-2"), V1Init(connection=self.az_store.name, path="/test-3"), V1Init(connection=self.claim_store.name, path="/test-4"), V1Init(connection=self.host_path_store.name, path="/test-5"), ], connections=[ self.s3_store, self.gcs_store, self.az_store, self.claim_store, self.host_path_store, ], secrets=[ self.non_mount_resource1, self.non_mount_resource1, self.mount_resource1, self.mount_resource2, ], config_maps=[ self.non_mount_resource1, self.non_mount_resource1, self.mount_resource1, self.mount_resource2, ], )) # 1: outputs context store # 7: 5 managed contexts + 2 mounts # 4: 4 mount resources (secrets + configs) == 1 + 7 + 4) assert ( len( get_volume_mounts( contexts=PluginsContextsSpec.from_config( V1Plugins(collect_logs=True, collect_artifacts=False)), init=[ V1Init(connection=self.s3_store.name, path="/test-1"), V1Init(connection=self.gcs_store.name, path="/test-2"), V1Init(connection=self.az_store.name, path="/test-3"), V1Init(connection=self.claim_store.name, path="/test-4"), V1Init(connection=self.host_path_store.name, path="/test-5"), ], connections=[ self.s3_store, self.gcs_store, self.az_store, self.claim_store, self.host_path_store, ], secrets=[ self.non_mount_resource1, self.non_mount_resource1, self.mount_resource1, self.mount_resource2, ], config_maps=[ self.non_mount_resource1, self.non_mount_resource1, self.mount_resource1, self.mount_resource2, ], )) # 7: 5 managed contexts + 2 mounts # 4: 4 mount resources (secrets + configs) == 7 + 4)
def assert_secret(secret, results): assert (get_volume_mounts(contexts=None, init=[], connections=[], secrets=[secret], config_maps=[]) == results)
def assert_single_store(store, results): assert (get_volume_mounts(contexts=None, init=[], connections=[store], secrets=[], config_maps=[]) == results)
def assert_contexts_store(contexts, results): assert (get_volume_mounts(contexts=contexts, init=[], connections=[], secrets=[], config_maps=[]) == results)