Skip to content
Snippets Groups Projects
Commit 105008a6 authored by Martin Lang's avatar Martin Lang
Browse files

Merge branch '52-allow-arbitrary-branch-deployment-for-development' into 'main'

Resolve "Allow arbitrary branch deployment for development."

Closes #52

See merge request !142
parents 3273ccb6 4ddc7df2
No related branches found
No related tags found
1 merge request!142Resolve "Allow arbitrary branch deployment for development."
Pipeline #444389 passed
......@@ -7,7 +7,7 @@ name = "mpsd_software_manager"
authors = [{name = "SSU-Computational Science (Fangohr et al)", email = "ssu-cs@mpsd.mpg.de"}]
license = {file = "LICENSE"}
classifiers = ["License :: OSI Approved :: MIT License"]
version = "2024.01.10"
version = "2024.02.27"
readme = "README.rst"
requires-python = ">=3.9"
dependencies = [
......
......@@ -10,7 +10,9 @@ from mpsd_software_manager import config_vars
from mpsd_software_manager.utils.filesystem_utils import clone_repo
def get_available_package_sets(mpsd_release: str) -> List[str]:
def get_available_package_sets(
mpsd_release: str, allow_unreleased_branch: bool = False
) -> List[str]:
"""Given a release, return the available package_sets.
This is based on the spack-environment's repository [1]. For this function
......@@ -21,6 +23,14 @@ def get_available_package_sets(mpsd_release: str) -> List[str]:
[1] https://gitlab.gwdg.de/mpsd-cs/spack-environments.git
Parameters
----------
mpsd_release : str
The release to check for available package_sets.
allow_unreleased_branch : bool, optional
If True, allow the use of unreleased branches. Defaults to False.
Returns
-------
package_sets : List[str]
......@@ -48,10 +58,12 @@ def get_available_package_sets(mpsd_release: str) -> List[str]:
tmp_dir_path = Path(tmp_dir.name)
# find package_sets by cloning repository and checking out right branch
spe_branch = mpsd_release if allow_unreleased_branch else f"releases/{mpsd_release}"
clone_repo(
tmp_dir_path,
config_vars.spack_environments_repo,
branch=f"releases/{mpsd_release}",
branch=spe_branch,
)
# look for directories defining the package_sets
......
......@@ -15,7 +15,9 @@ from mpsd_software_manager.utils.logging import write_to_cmd_log
from mpsd_software_manager.utils.run import run
def prepare_environment(mpsd_release: str, root_dir: Path) -> List[str]:
def prepare_environment(
mpsd_release: str, root_dir: Path, allow_unreleased_branch: bool = False
) -> List[str]:
"""
Create the directory structure for the given MPSD release.
......@@ -32,6 +34,8 @@ def prepare_environment(mpsd_release: str, root_dir: Path) -> List[str]:
root_dir : pathlib.Path
The base directory to create the release folder and
clone the spack-environments repository into.
allow_unreleased_branch : bool, optional
If True, allow the use of unreleased branches. Defaults to False.
Returns
-------
......@@ -68,7 +72,10 @@ def prepare_environment(mpsd_release: str, root_dir: Path) -> List[str]:
else:
repo_url = config_vars.spack_environments_repo
logging.info(f"cloning repository {folders.repo_path} from {repo_url}")
clone_repo(folders.repo_path, repo_url, branch=f"releases/{mpsd_release}")
spe_branch = (
mpsd_release if allow_unreleased_branch else f"releases/{mpsd_release}"
)
clone_repo(folders.repo_path, repo_url, branch=spe_branch)
logging.getLogger("print").info(
f"Release {mpsd_release} is prepared in {folders.release_base_dir}"
......
......@@ -99,6 +99,14 @@ def main():
parser.add_argument("--version", action="version", version=__version__)
parser.add_argument(
"-d",
"--develop",
action="store_true",
default=False,
help="Allow the use of unreleased branches",
)
subparsers = parser.add_subparsers(
dest="action",
title="actions",
......@@ -246,10 +254,10 @@ def main():
elif args.action == "status":
environment_status(args.release, root_dir, args.package_set)
elif args.action == "prepare":
prepare_environment(args.release, root_dir)
prepare_environment(args.release, root_dir, args.develop)
elif args.action == "available":
if args.release:
get_available_package_sets(args.release)
get_available_package_sets(args.release, args.develop)
else:
get_available_releases(print_result=True)
sys.exit(0)
......
import pytest
from mpsd_software_manager.cmds import available
......@@ -28,3 +30,9 @@ def test_get_available_package_sets():
"global_generic",
]
)
# Expect an Exception when develop is queried without allow_unreleased_branch
with pytest.raises(RuntimeError):
available.get_available_package_sets("develop")
# Expect no Exception when develop is queried with allow_unreleased_branch
available.get_available_package_sets("develop", allow_unreleased_branch=True)
......@@ -61,3 +61,14 @@ def test_prepare_environment(tmp_path, create_mock_git_repository):
result = prepare.prepare_environment(
mpsd_release="wrong-mpsd-release", root_dir=(root_dir)
)
# Expect an Exception when develop is prepared wihtout allow_unreleased_branch
with pytest.raises(RuntimeError):
result = prepare.prepare_environment(
mpsd_release="develop", root_dir=(root_dir)
)
# Expect no Exception when develop is prepared with allow_unreleased_branch
result = prepare.prepare_environment(
mpsd_release="develop", root_dir=(root_dir), allow_unreleased_branch=True
)
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment