diff --git a/dedal/spack_factory/SpackOperationCreator.py b/dedal/spack_factory/SpackOperationCreator.py index fdc929d34866dcb254a775e9e8f8a24ee893029d..f8cb870eb2984186e34231a22e793b807f7db7ae 100644 --- a/dedal/spack_factory/SpackOperationCreator.py +++ b/dedal/spack_factory/SpackOperationCreator.py @@ -1,3 +1,5 @@ +import os + from dedal.configuration.SpackConfig import SpackConfig from dedal.spack_factory.SpackOperation import SpackOperation from dedal.spack_factory.SpackOperationCreateCache import SpackOperationCreateCache @@ -7,7 +9,16 @@ from dedal.spack_factory.SpackOperationUseCache import SpackOperationUseCache class SpackOperationCreator: @staticmethod def get_spack_operator(spack_config: SpackConfig = None, use_cache: bool = False) -> SpackOperation: - if spack_config is None: + env_vars = [os.environ.get('CONCRETIZE_OCI_HOST'), + os.environ.get('CONCRETIZE_OCI_PROJECT'), + os.environ.get('CONCRETIZE_OCI_USERNAME'), + os.environ.get('CONCRETIZE_OCI_PASSWORD'), + os.environ.get('BUILDCACHE_OCI_HOST'), + os.environ.get('BUILDCACHE_OCI_PROJECT'), + os.environ.get('BUILDCACHE_OCI_USERNAME'), + os.environ.get('BUILDCACHE_OCI_PASSWORD') + ] + if spack_config is None or None in env_vars: return SpackOperation() elif spack_config.concretization_dir is None and spack_config.buildcache_dir is None: return SpackOperation(spack_config) diff --git a/dedal/tests/integration_tests/spack_operation_creator_test.py b/dedal/tests/integration_tests/spack_operation_creator_test.py index 226184b00a5c7136c97f5ef12761ac44c71286a1..c93d039dc44fd9084655fb261d422862850b51f3 100644 --- a/dedal/tests/integration_tests/spack_operation_creator_test.py +++ b/dedal/tests/integration_tests/spack_operation_creator_test.py @@ -1,3 +1,5 @@ +import os + from dedal.spack_factory.SpackOperationCreateCache import SpackOperationCreateCache from dedal.configuration.SpackConfig import SpackConfig @@ -29,6 +31,18 @@ def test_spack_creator_scratch_3(): spack_operation = SpackOperationCreator.get_spack_operator(spack_config) assert isinstance(spack_operation, SpackOperation) +def test_spack_creator_scratch_4(tmp_path): + concretize_oci_host = os.environ.get('CONCRETIZE_OCI_HOST') + os.environ.pop('CONCRETIZE_OCI_HOST', None) + install_dir = tmp_path + env = SpackDescriptor('test-spack-env', install_dir, test_spack_env_git) + repo = SpackDescriptor('ebrains-spack-builds', install_dir, ebrains_spack_builds_git) + spack_config = SpackConfig(env, install_dir=install_dir, concretization_dir=install_dir, buildcache_dir=install_dir) + spack_config.add_repo(repo) + spack_operation = SpackOperationCreator.get_spack_operator(spack_config) + os.environ['CONCRETIZE_OCI_HOST'] = concretize_oci_host + assert isinstance(spack_operation, SpackOperation) + def test_spack_creator_create_cache(tmp_path): install_dir = tmp_path