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