diff --git a/.bumpversion.cfg b/.bumpversion.cfg index 9e78927f02..a895a27d52 100644 --- a/.bumpversion.cfg +++ b/.bumpversion.cfg @@ -1,5 +1,5 @@ [bumpversion] -current_version = 4.10.0dev +current_version = 4.10.0 commit = False tag = False parse = (?P\d+)\.(?P\d+)\.(?P\d+)(\.(?P[a-z]+))? @@ -17,5 +17,3 @@ values = [bumpversion:file:./galaxy_ng/app/__init__.py] [bumpversion:file:./setup.py] - -# [bumpversion:file:./docs/conf.py] diff --git a/CHANGES.md b/CHANGES.md index 58fa3c8dd0..0062408501 100644 --- a/CHANGES.md +++ b/CHANGES.md @@ -1,3 +1,25 @@ +## 4.10.0 (2024-09-19) {: #4.10.0 } + +#### Bugfixes + +- Support SVG avatar image on namespaces + [#2836](https://github.com/ansible/galaxy_ng/issues/2836) +- Fixed issue where group members were also showing up as users in the Namespace owners list. + [#3121](https://github.com/ansible/galaxy_ng/issues/3121) +- Parameterize ansible-test importer resource requirements + [#3190](https://github.com/ansible/galaxy_ng/issues/3190) + +#### Improved Documentation + +- echo "add skeleton for galaxy_collection docs" + [#2420](https://github.com/ansible/galaxy_ng/issues/2420) + +#### Misc + +- [#2822](https://github.com/ansible/galaxy_ng/issues/2822), [#3036](https://github.com/ansible/galaxy_ng/issues/3036), [#3064](https://github.com/ansible/galaxy_ng/issues/3064), [#3358](https://github.com/ansible/galaxy_ng/issues/3358), [#18825](https://github.com/ansible/galaxy_ng/issues/18825) + +--- + ========= Changelog ========= diff --git a/CHANGES/.TEMPLATE.md b/CHANGES/.TEMPLATE.md new file mode 100644 index 0000000000..2308193b90 --- /dev/null +++ b/CHANGES/.TEMPLATE.md @@ -0,0 +1,39 @@ +{# TOWNCRIER TEMPLATE #} +{% for section, _ in sections.items() %} +{%- set section_slug = "-" + section|replace(" ", "-")|replace("_", "-")|lower %} +{%- if section %} + +### {{section}} {: #{{versiondata.version}}{{section_slug}} } +{% else %} +{%- set section_slug = "" %} +{% endif %} +{% if sections[section] %} +{% for category, val in definitions.items() if category in sections[section]%} + +#### {{ definitions[category]['name'] }} {: #{{versiondata.version}}{{section_slug}}-{{category}} } + +{% if definitions[category]['showcontent'] %} +{% for text, values in sections[section][category].items() %} +- {{ text }} +{% if values %} + {{ values|join(',\n ') }} +{% endif %} +{% endfor %} +{% else %} +- {{ sections[section][category]['']|join(', ') }} +{% endif %} +{% if sections[section][category]|length == 0 %} + +No significant changes. +{% else %} +{% endif %} +{% endfor %} +{% else %} + +No significant changes. +{% endif %} +{% endfor %} + +--- + + diff --git a/CHANGES/18825.misc b/CHANGES/18825.misc deleted file mode 100644 index 8a4911b508..0000000000 --- a/CHANGES/18825.misc +++ /dev/null @@ -1 +0,0 @@ -Integrate gateway resources api \ No newline at end of file diff --git a/CHANGES/2420.doc b/CHANGES/2420.doc deleted file mode 100644 index 8d872c462f..0000000000 --- a/CHANGES/2420.doc +++ /dev/null @@ -1 +0,0 @@ -echo "add skeleton for galaxy_collection docs" diff --git a/CHANGES/2822.misc b/CHANGES/2822.misc deleted file mode 100644 index b4d385add0..0000000000 --- a/CHANGES/2822.misc +++ /dev/null @@ -1 +0,0 @@ -Make the api root accessible without authentication \ No newline at end of file diff --git a/CHANGES/2836.bugfix b/CHANGES/2836.bugfix deleted file mode 100644 index ab10cfb81c..0000000000 --- a/CHANGES/2836.bugfix +++ /dev/null @@ -1 +0,0 @@ -Support SVG avatar image on namespaces diff --git a/CHANGES/3036.misc b/CHANGES/3036.misc deleted file mode 100644 index 7fb5380cff..0000000000 --- a/CHANGES/3036.misc +++ /dev/null @@ -1 +0,0 @@ -adds IMPORTER_JOB_TIMEOUT to pulp-worker on crc, and increases the timeout to 1800 seconds \ No newline at end of file diff --git a/CHANGES/3064.misc b/CHANGES/3064.misc deleted file mode 100644 index dc929fa263..0000000000 --- a/CHANGES/3064.misc +++ /dev/null @@ -1 +0,0 @@ -Bump pulp* versions diff --git a/CHANGES/3121.bugfix b/CHANGES/3121.bugfix deleted file mode 100644 index 66b9471a4e..0000000000 --- a/CHANGES/3121.bugfix +++ /dev/null @@ -1 +0,0 @@ -Fixed issue where group members were also showing up as users in the Namespace owners list. diff --git a/CHANGES/3190.bugfix b/CHANGES/3190.bugfix deleted file mode 100644 index e2ed619813..0000000000 --- a/CHANGES/3190.bugfix +++ /dev/null @@ -1 +0,0 @@ -Parameterize ansible-test importer resource requirements diff --git a/CHANGES/3358.misc b/CHANGES/3358.misc deleted file mode 100644 index a903be2120..0000000000 --- a/CHANGES/3358.misc +++ /dev/null @@ -1 +0,0 @@ -sync RBAC assignments from JWT, specific Team Member role, to the pulp group users relationship diff --git a/galaxy_ng/__init__.py b/galaxy_ng/__init__.py index 9356c9407d..cdfc3b1f78 100644 --- a/galaxy_ng/__init__.py +++ b/galaxy_ng/__init__.py @@ -3,6 +3,6 @@ sys.modules.setdefault("automated_logging", automated_logging) -__version__ = "4.10.0dev" +__version__ = "4.10.0" default_app_config = "galaxy_ng.app.PulpGalaxyPluginAppConfig" diff --git a/galaxy_ng/app/__init__.py b/galaxy_ng/app/__init__.py index 6ef47877e4..23b5aa3923 100644 --- a/galaxy_ng/app/__init__.py +++ b/galaxy_ng/app/__init__.py @@ -10,7 +10,7 @@ class PulpGalaxyPluginAppConfig(PulpPluginAppConfig): name = "galaxy_ng.app" label = "galaxy" - version = "4.10.0dev" + version = "4.10.0" python_package_name = "galaxy-ng" def ready(self): diff --git a/galaxy_ng/tests/integration/aap/test_aap_user_migrations.py b/galaxy_ng/tests/integration/aap/test_aap_user_migrations.py index d74aac99e2..176783360c 100644 --- a/galaxy_ng/tests/integration/aap/test_aap_user_migrations.py +++ b/galaxy_ng/tests/integration/aap/test_aap_user_migrations.py @@ -7,7 +7,7 @@ @pytest.mark.ldap -@pytest.mark.min_hub_version("4.10dev") +@pytest.mark.min_hub_version("4.10") def test_aap_renamed_ldap_user( ansible_config, settings, diff --git a/galaxy_ng/tests/integration/api/test_api_base.py b/galaxy_ng/tests/integration/api/test_api_base.py index 7d1857fd9f..9ecacfbe58 100644 --- a/galaxy_ng/tests/integration/api/test_api_base.py +++ b/galaxy_ng/tests/integration/api/test_api_base.py @@ -3,7 +3,7 @@ from ..utils.iqe_utils import remove_from_cache -@pytest.mark.min_hub_version("4.10dev") +@pytest.mark.min_hub_version("4.10") @pytest.mark.deployment_standalone @pytest.mark.skip_in_gw def test_galaxy_api_root_standalone_no_auth_access(galaxy_client): diff --git a/galaxy_ng/tests/integration/api/test_auth.py b/galaxy_ng/tests/integration/api/test_auth.py index c0b6c3045c..576cd71302 100644 --- a/galaxy_ng/tests/integration/api/test_auth.py +++ b/galaxy_ng/tests/integration/api/test_auth.py @@ -27,7 +27,7 @@ def test_token_auth(profile, galaxy_client, ansible_config): """ hub_version = get_hub_version(ansible_config) expected_status_code = 401 - if parse_version(hub_version) < parse_version('4.10.0dev'): + if parse_version(hub_version) < parse_version('4.10.0'): expected_status_code = 403 gc = galaxy_client(profile) @@ -49,7 +49,7 @@ def test_auth_admin(galaxy_client, ansible_config): """Test whether admin can not access collections page using invalid token.""" hub_version = get_hub_version(ansible_config) expected_status_code = 401 - if parse_version(hub_version) < parse_version('4.10.0dev'): + if parse_version(hub_version) < parse_version('4.10.0'): expected_status_code = 403 gc = galaxy_client("admin") @@ -67,7 +67,7 @@ def test_auth_exception(galaxy_client, ansible_config): """Test whether an HTTP exception when using an invalid token.""" hub_version = get_hub_version(ansible_config) expected_status_code = 401 - if parse_version(hub_version) < parse_version('4.10.0dev'): + if parse_version(hub_version) < parse_version('4.10.0'): expected_status_code = 403 gc = galaxy_client("basic_user") diff --git a/galaxy_ng/tests/integration/api/test_hubjwt.py b/galaxy_ng/tests/integration/api/test_hubjwt.py index 0ad2380e26..188b558661 100644 --- a/galaxy_ng/tests/integration/api/test_hubjwt.py +++ b/galaxy_ng/tests/integration/api/test_hubjwt.py @@ -1,7 +1,7 @@ import pytest -@pytest.mark.min_hub_version("4.10dev") +@pytest.mark.min_hub_version("4.10") @pytest.mark.skip(reason='TBD') def test_hub_jwt_auth(): pass diff --git a/galaxy_ng/tests/integration/api/test_ui_paths.py b/galaxy_ng/tests/integration/api/test_ui_paths.py index cfc178c85c..d6fa3b90f4 100644 --- a/galaxy_ng/tests/integration/api/test_ui_paths.py +++ b/galaxy_ng/tests/integration/api/test_ui_paths.py @@ -765,7 +765,7 @@ def test_api_ui_v1_collection_detail_view(ansible_config, published): # /api/automation-hub/_ui/v1/settings/ @pytest.mark.deployment_standalone @pytest.mark.api_ui -@pytest.mark.min_hub_version("4.10dev") +@pytest.mark.min_hub_version("4.10") @pytest.mark.skip_in_gw def test_api_ui_v1_settings(ansible_config): diff --git a/galaxy_ng/tests/integration/dab/test_dab_rbac.py b/galaxy_ng/tests/integration/dab/test_dab_rbac.py index cce8b7d5fb..7c97d3829d 100644 --- a/galaxy_ng/tests/integration/dab/test_dab_rbac.py +++ b/galaxy_ng/tests/integration/dab/test_dab_rbac.py @@ -42,7 +42,7 @@ def test_dab_roledefs_match_pulp_roles(galaxy_client): @pytest.mark.deployment_standalone -@pytest.mark.min_hub_version("4.10dev") +@pytest.mark.min_hub_version("4.10") @pytest.mark.skipif( os.environ.get('JWT_PROXY') is not None, reason="Skipped because jwt proxy is in use" @@ -141,7 +141,7 @@ def test_dab_rbac_repository_owner_by_user_or_team( @pytest.mark.deployment_standalone -@pytest.mark.min_hub_version("4.10dev") +@pytest.mark.min_hub_version("4.10") @pytest.mark.skipif( os.environ.get('JWT_PROXY') is not None, reason="Skipped because jwt proxy is in use" @@ -292,7 +292,7 @@ def test_dab_rbac_namespace_owner_by_user_or_team( os.environ.get('JWT_PROXY') is not None, reason="Skipped because jwt proxy is in use" ) -@pytest.mark.min_hub_version("4.10dev") +@pytest.mark.min_hub_version("4.10") def test_dab_user_platform_auditor_bidirectional_sync( settings, galaxy_client, @@ -385,7 +385,7 @@ def test_dab_user_platform_auditor_bidirectional_sync( @pytest.mark.deployment_standalone -@pytest.mark.min_hub_version("4.10dev") +@pytest.mark.min_hub_version("4.10") def test_dab_team_platform_auditor_bidirectional_sync( settings, galaxy_client, @@ -488,7 +488,7 @@ def test_dab_team_platform_auditor_bidirectional_sync( @pytest.mark.deployment_standalone -@pytest.mark.min_hub_version("4.10dev") +@pytest.mark.min_hub_version("4.10") def test_dab_user_assignment_filtering_as_user( settings, galaxy_client, @@ -551,7 +551,7 @@ def test_dab_user_assignment_filtering_as_user( @pytest.mark.deployment_standalone -@pytest.mark.min_hub_version("4.10dev") +@pytest.mark.min_hub_version("4.10") @pytest.mark.skipif( os.environ.get('JWT_PROXY') is not None, reason="Skipped because jwt proxy is in use" diff --git a/galaxy_ng/tests/integration/dab/test_dab_rbac_contract.py b/galaxy_ng/tests/integration/dab/test_dab_rbac_contract.py index 928e71df09..dedc5e32ed 100644 --- a/galaxy_ng/tests/integration/dab/test_dab_rbac_contract.py +++ b/galaxy_ng/tests/integration/dab/test_dab_rbac_contract.py @@ -13,7 +13,7 @@ # This tests the basic DAB RBAC contract using custom roles to do things. @pytest.mark.deployment_standalone -@pytest.mark.min_hub_version("4.10dev") +@pytest.mark.min_hub_version("4.10") def test_list_namespace_permissions(galaxy_client): gc = galaxy_client("admin") r = gc.get("_ui/v2/role_metadata/") @@ -33,7 +33,7 @@ def test_list_namespace_permissions(galaxy_client): # look for the content_type choices @pytest.mark.deployment_standalone -@pytest.mark.min_hub_version("4.10dev") +@pytest.mark.min_hub_version("4.10") def test_role_definition_options(galaxy_client): gc = galaxy_client("admin") # TODO: add support for options in GalaxyClient in galaxykit @@ -203,7 +203,7 @@ def check_system_role_user_assignments(client: GalaxyClient, user: dict, role: d @pytest.mark.deployment_standalone -@pytest.mark.min_hub_version("4.10dev") +@pytest.mark.min_hub_version("4.10") @pytest.mark.parametrize("by_api", ["dab", "pulp"]) def test_create_custom_namespace_system_admin_role(custom_role_factory, galaxy_client, by_api): if by_api == "dab": @@ -226,7 +226,7 @@ def test_create_custom_namespace_system_admin_role(custom_role_factory, galaxy_c @pytest.mark.deployment_standalone -@pytest.mark.min_hub_version("4.10dev") +@pytest.mark.min_hub_version("4.10") def test_give_user_custom_role_system(settings, galaxy_client, custom_role_factory, namespace): if settings.get('ALLOW_LOCAL_RESOURCE_MANAGEMENT', True) is not True: @@ -295,7 +295,7 @@ def test_give_user_custom_role_system(settings, galaxy_client, custom_role_facto @pytest.mark.deployment_standalone -@pytest.mark.min_hub_version("4.10dev") +@pytest.mark.min_hub_version("4.10") def test_give_team_custom_role_system( settings, galaxy_client, @@ -367,7 +367,7 @@ def test_give_team_custom_role_system( # TODO: We need another version of it for a team @pytest.mark.deployment_standalone -@pytest.mark.min_hub_version("4.10dev") +@pytest.mark.min_hub_version("4.10") @pytest.mark.parametrize("by_role_api", ["dab", "pulp"]) @pytest.mark.parametrize("by_assignment_api", ["dab", "pulp"]) def test_give_user_custom_role_object( @@ -457,7 +457,7 @@ def test_give_user_custom_role_object( assert_object_role_assignments(admin_client, user, namespace, 0) -@pytest.mark.min_hub_version("4.10dev") +@pytest.mark.min_hub_version("4.10") @pytest.mark.deployment_standalone def test_give_team_custom_role_object( settings, @@ -545,7 +545,7 @@ def test_give_team_custom_role_object( assert ctx.value.response.status_code == HTTPStatus.FORBIDDEN -@pytest.mark.min_hub_version("4.10dev") +@pytest.mark.min_hub_version("4.10") def test_object_role_permission_validation(galaxy_client, custom_role_factory, namespace): gc = galaxy_client("admin") @@ -625,7 +625,7 @@ def assure_user_not_in_group(): return (user, group) -@pytest.mark.min_hub_version("4.10dev") +@pytest.mark.min_hub_version("4.10") def test_group_sync_from_pulp_to_dab(galaxy_client, assert_user_in_group, user_and_group): gc = galaxy_client("admin") user, group = user_and_group @@ -670,7 +670,7 @@ def test_team_member_sync_from_dab_to_pulp(galaxy_client, assert_user_in_group, assert_user_in_group(user["id"], group["id"], expected=True) -@pytest.mark.min_hub_version("4.10dev") +@pytest.mark.min_hub_version("4.10") def test_team_members_are_migrated(galaxy_client, assert_user_in_group): "Make sure any existing team memberships are correct" gc = galaxy_client("admin") diff --git a/galaxy_ng/tests/integration/dab/test_dab_rbac_pagination.py b/galaxy_ng/tests/integration/dab/test_dab_rbac_pagination.py index aadb919c52..846ca1e165 100644 --- a/galaxy_ng/tests/integration/dab/test_dab_rbac_pagination.py +++ b/galaxy_ng/tests/integration/dab/test_dab_rbac_pagination.py @@ -5,7 +5,7 @@ @pytest.mark.deployment_standalone -@pytest.mark.min_hub_version("4.10dev") +@pytest.mark.min_hub_version("4.10") def test_dab_rbac_pagination(galaxy_client): gc = galaxy_client("admin", ignore_cache=True) roledefs = gc.get('_ui/v2/role_definitions/?page_size=1') diff --git a/galaxy_ng/tests/integration/dab/test_system_auditor.py b/galaxy_ng/tests/integration/dab/test_system_auditor.py index a04c49b8bf..3752276592 100644 --- a/galaxy_ng/tests/integration/dab/test_system_auditor.py +++ b/galaxy_ng/tests/integration/dab/test_system_auditor.py @@ -9,7 +9,7 @@ @pytest.mark.deployment_standalone -@pytest.mark.min_hub_version("4.10dev") +@pytest.mark.min_hub_version("4.10") @pytest.mark.skipif( os.getenv("ENABLE_DAB_TESTS"), reason="Skipping test because ENABLE_DAB_TESTS is set" diff --git a/galaxy_ng/tests/integration/dab/test_ui_v2.py b/galaxy_ng/tests/integration/dab/test_ui_v2.py index 26f637caa3..45c233c1c6 100644 --- a/galaxy_ng/tests/integration/dab/test_ui_v2.py +++ b/galaxy_ng/tests/integration/dab/test_ui_v2.py @@ -14,7 +14,7 @@ @pytest.mark.deployment_standalone -@pytest.mark.min_hub_version("4.10dev") +@pytest.mark.min_hub_version("4.10") @pytest.mark.parametrize("user_payload", [ {}, {"email": "foobar@foobar.com"}, @@ -65,7 +65,7 @@ def test_ui_v2_user_create( @pytest.mark.deployment_standalone -@pytest.mark.min_hub_version("4.10dev") +@pytest.mark.min_hub_version("4.10") @pytest.mark.parametrize("invalid_payload", [ ({"email": "invalidemail"}, "Enter a valid email address."), ({"email": "@whoops"}, "Enter a valid email address."), @@ -107,7 +107,7 @@ def test_ui_v2_user_create_invalid_data( @pytest.mark.deployment_standalone -@pytest.mark.min_hub_version("4.10dev") +@pytest.mark.min_hub_version("4.10") def test_ui_v2_user_edit( settings, galaxy_client, @@ -150,7 +150,7 @@ def test_ui_v2_user_edit( @pytest.mark.deployment_standalone -@pytest.mark.min_hub_version("4.10dev") +@pytest.mark.min_hub_version("4.10") @pytest.mark.parametrize("invalid_payload", [ ({"email": "invalidemail"}, "Enter a valid email address."), ({"email": "@whoops"}, "Enter a valid email address."), @@ -205,7 +205,7 @@ def test_ui_v2_user_edit_invalid_data( @pytest.mark.deployment_standalone -@pytest.mark.min_hub_version("4.10dev") +@pytest.mark.min_hub_version("4.10") def test_ui_v2_teams( settings, galaxy_client, @@ -248,7 +248,7 @@ def test_ui_v2_teams( @pytest.mark.deployment_standalone -@pytest.mark.min_hub_version("4.10dev") +@pytest.mark.min_hub_version("4.10") def test_ui_v2_teams_membership_local_and_nonlocal( settings, galaxy_client, diff --git a/setup.cfg b/setup.cfg index f28261ca8d..9df68426dd 100644 --- a/setup.cfg +++ b/setup.cfg @@ -1,5 +1,5 @@ [bumpversion] -current_version = 4.10.0dev +current_version = 4.10.0 commit = False tag = False parse = (?P\d+)\.(?P\d+)\.(?P\d+)((?P[a-z]+))?((?P\d+))? diff --git a/setup.py b/setup.py index 0b3606ffe7..824cf82c8c 100644 --- a/setup.py +++ b/setup.py @@ -13,7 +13,7 @@ from setuptools.command.sdist import sdist as _SDistCommand package_name = os.environ.get("GALAXY_NG_ALTERNATE_NAME", "galaxy-ng") -version = "4.10.0dev" +version = "4.10.0" class PrepareStaticCommand(Command):