コード例 #1
0
    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)
コード例 #2
0
 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=[]) == [])
コード例 #3
0
 def assert_config_map(config_map, results):
     assert (get_volume_mounts(
         contexts=None,
         init=[],
         connections=[],
         secrets=[],
         config_maps=[config_map],
     ) == results)
コード例 #4
0
 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)
コード例 #5
0
 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),
     ]
コード例 #6
0
ファイル: container.py プロジェクト: knowledgehacker/polyaxon
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,
    )
コード例 #7
0
    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)
コード例 #8
0
 def assert_secret(secret, results):
     assert (get_volume_mounts(contexts=None,
                               init=[],
                               connections=[],
                               secrets=[secret],
                               config_maps=[]) == results)
コード例 #9
0
 def assert_single_store(store, results):
     assert (get_volume_mounts(contexts=None,
                               init=[],
                               connections=[store],
                               secrets=[],
                               config_maps=[]) == results)
コード例 #10
0
 def assert_contexts_store(contexts, results):
     assert (get_volume_mounts(contexts=contexts,
                               init=[],
                               connections=[],
                               secrets=[],
                               config_maps=[]) == results)