diff --git a/CHANGES/pulp-glue/+cleanup_3.49.removal b/CHANGES/pulp-glue/+cleanup_3.49.removal new file mode 100644 index 000000000..8eb8845f0 --- /dev/null +++ b/CHANGES/pulp-glue/+cleanup_3.49.removal @@ -0,0 +1 @@ +Removed compatibility checks and workaround for pulpcore < 3.49. diff --git a/pulp-glue/src/pulp_glue/certguard/context.py b/pulp-glue/src/pulp_glue/certguard/context.py index 73853a191..68f138ec3 100644 --- a/pulp-glue/src/pulp_glue/certguard/context.py +++ b/pulp-glue/src/pulp_glue/certguard/context.py @@ -12,7 +12,7 @@ class PulpX509CertGuardContext(PulpContentGuardContext): ENTITIES = _("x509 certguards") HREF = "certguard_x509_cert_guard_href" ID_PREFIX = "contentguards_certguard_x509" - NEEDS_PLUGINS = [PluginRequirement("certguard", specifier=">=1.4.0")] + NEEDS_PLUGINS = [PluginRequirement("certguard")] class PulpRHSMCertGuardContext(PulpContentGuardContext): @@ -22,4 +22,4 @@ class PulpRHSMCertGuardContext(PulpContentGuardContext): ENTITIES = _("RHSM certguards") HREF = "certguard_r_h_s_m_cert_guard_href" ID_PREFIX = "contentguards_certguard_rhsm" - NEEDS_PLUGINS = [PluginRequirement("certguard", specifier=">=1.4.0")] + NEEDS_PLUGINS = [PluginRequirement("certguard")] diff --git a/pulp-glue/src/pulp_glue/common/context.py b/pulp-glue/src/pulp_glue/common/context.py index bdcc20d5e..2b72e156b 100644 --- a/pulp-glue/src/pulp_glue/common/context.py +++ b/pulp-glue/src/pulp_glue/common/context.py @@ -205,38 +205,6 @@ def _patch_api_hook(spec: t.Any) -> t.Any: return spec -@api_spec_quirk(PluginRequirement("core", specifier="<3.20.0")) -def patch_ordering_filters(api_spec: t.Any) -> t.Any: - for path, method, operation_id, operation in walk_operations(api_spec): - if method == "get" and "parameters" in operation: - for parameter in operation["parameters"]: - if ( - parameter["name"] == "ordering" - and parameter["in"] == "query" - and "schema" in parameter - and parameter["schema"]["type"] == "string" - ): - parameter["schema"] = {"type": "array", "items": {"type": "string"}} - parameter["explode"] = False - parameter["style"] = "form" - return api_spec - - -@api_spec_quirk(PluginRequirement("core", specifier="<3.22.0")) -def patch_field_select_filters(api_spec: t.Any) -> t.Any: - for path, method, operation_id, operation in walk_operations(api_spec): - if method == "get" and "parameters" in operation: - for parameter in operation["parameters"]: - if ( - parameter["name"] in ["fields", "exclude_fields"] - and parameter["in"] == "query" - and "schema" in parameter - and parameter["schema"]["type"] == "string" - ): - parameter["schema"] = {"type": "array", "items": {"type": "string"}} - return api_spec - - @api_spec_quirk(PluginRequirement("core", specifier="<99.99.0")) def patch_content_in_query_filters(api_spec: t.Any) -> t.Any: # https://github.com/pulp/pulpcore/issues/3634 @@ -259,13 +227,6 @@ def patch_content_in_query_filters(api_spec: t.Any) -> t.Any: return api_spec -@api_spec_quirk(PluginRequirement("core", specifier=">=3.23,<3.30.0")) -def patch_upstream_pulp_replicate_request_body(api_spec: t.Any) -> t.Any: - operation = api_spec["paths"]["{upstream_pulp_href}replicate/"]["post"] - operation.pop("requestBody", None) - return api_spec - - @api_spec_quirk(PluginRequirement("core", specifier="<3.85")) def patch_security_scheme_mutual_tls(api_spec: t.Any) -> t.Any: # Trick to allow tls cert auth on older Pulp. @@ -342,6 +303,7 @@ def __init__( # If this is "only" true and we have the PULP_CA_BUNDLE variable set, use it. self.verify_ssl = os.environ.get("PULP_CA_BUNDLE", True) self._needed_plugins: list[PluginRequirement] = [ + # This should be the currently oldest supported release branch. PluginRequirement("core", specifier=">=3.49.0") ] self.pulp_domain: str = domain @@ -823,15 +785,16 @@ class PulpEntityContext(PulpViewSetContext): """ List of capabilities this entity provides. - Subclasses can specify version dependent capabilities here + Subclasses can specify version dependent capabilities here. Example: ``` CAPABILITIES = { "feature1": [ PluginRequirement("file"), - PluginRequirement("core", specifier=">=3.7.0") + PluginRequirement("core", specifier=">=5.6.7") ] + "feature2": [], # Feature2 does not depend on any extra versions/plugins. } ``` """ @@ -1239,20 +1202,19 @@ def set_label(self, key: str, value: str, non_blocking: bool = False) -> t.Any: assert self._entity is not None self._entity["pulp_labels"][key] = value return None - if self.pulp_ctx.has_plugin(PluginRequirement("core", specifier=">=3.34.0")): - try: - return self.call( - "set_label", - parameters={self.HREF: self.pulp_href}, - body={"key": key, "value": value}, - ) - except PulpHTTPError as e: - if e.status_code != 403: - raise - # Workaround for broken access policies: Try the old mechanism. - labels = self.entity["pulp_labels"] - labels[key] = value - return self.update(body={"pulp_labels": labels}, non_blocking=non_blocking) + try: + return self.call( + "set_label", + parameters={self.HREF: self.pulp_href}, + body={"key": key, "value": value}, + ) + except PulpHTTPError as e: + if e.status_code != 403: + raise + # Workaround for broken access policies: Try the old mechanism. + labels = self.entity["pulp_labels"] + labels[key] = value + return self.update(body={"pulp_labels": labels}, non_blocking=non_blocking) def unset_label(self, key: str, non_blocking: bool = False) -> t.Any: """ @@ -1268,23 +1230,23 @@ def unset_label(self, key: str, non_blocking: bool = False) -> t.Any: assert self._entity is not None self._entity["pulp_labels"].pop(key) return None - if self.pulp_ctx.has_plugin(PluginRequirement("core", specifier=">=3.34.0")): - try: - return self.call( - "unset_label", - parameters={self.HREF: self.pulp_href}, - body={"key": key}, - ) - except PulpHTTPError as e: - if e.status_code != 403: - raise - # Workaround for broken access policies: Try the old mechanism. - labels = self.entity["pulp_labels"] + try: - labels.pop(key) - except KeyError: - raise PulpException(_("Could not find label with key '{key}'.").format(key=key)) - return self.update(body={"pulp_labels": labels}, non_blocking=non_blocking) + return self.call( + "unset_label", + parameters={self.HREF: self.pulp_href}, + body={"key": key}, + ) + except PulpHTTPError as e: + if e.status_code != 403: + raise + # Workaround for broken access policies: Try the old mechanism. + labels = self.entity["pulp_labels"] + try: + labels.pop(key) + except KeyError: + raise PulpException(_("Could not find label with key '{key}'.").format(key=key)) + return self.update(body={"pulp_labels": labels}, non_blocking=non_blocking) def show_label(self, key: str) -> str | None: """ @@ -1477,13 +1439,6 @@ def __init_subclass__(cls, **kwargs: t.Any) -> None: ) cls.TYPE_REGISTRY[f"{cls.PLUGIN}:{cls.RESOURCE_TYPE}"] = cls - def list(self, limit: int, offset: int, parameters: dict[str, t.Any]) -> list[t.Any]: - if parameters.get("repository") is not None: - self.pulp_ctx.needs_plugin( - PluginRequirement("core", specifier=">=3.20.0", feature=_("repository filter")) - ) - return super().list(limit, offset, parameters) - class PulpDistributionContext(PulpEntityContext): """Base class for distribution contexts.""" @@ -1621,17 +1576,6 @@ def get_version_context( pulp_ctx=self.pulp_ctx, repository_ctx=self, pulp_href=version_href ) - def preprocess_entity(self, body: EntityDefinition, partial: bool = False) -> EntityDefinition: - body = super().preprocess_entity(body, partial=partial) - if "retain_repo_versions" in body: - self.pulp_ctx.needs_plugin(PluginRequirement("core", specifier=">=3.13.0")) - if self.pulp_ctx.has_plugin(PluginRequirement("core", specifier=">=3.13.0,<3.15.0")): - # "retain_repo_versions" has been named "retained_versions" until pulpcore 3.15 - # https://github.com/pulp/pulpcore/pull/1472 - if "retain_repo_versions" in body: - body["retained_versions"] = body.pop("retain_repo_versions") - return body - def sync(self, body: EntityDefinition | None = None) -> t.Any: """ Trigger a sync task for this repository. @@ -1692,7 +1636,6 @@ def reclaim( Returns: Record of the reclaim space task. """ - self.pulp_ctx.needs_plugin(PluginRequirement("core", specifier=">=3.19.0")) body: dict[str, t.Any] = {} body["repo_hrefs"] = repo_hrefs if repo_versions_keeplist: @@ -1753,17 +1696,12 @@ def _prepare_upload( if not self.pulp_ctx.fake_mode: # Skip the uploading part in fake_mode if _chunk_size is None or _chunk_size > size: body["file"] = file - elif self.pulp_ctx.has_plugin(PluginRequirement("core", specifier=">=3.20.0")): + else: self.needs_capability("upload") from pulp_glue.core.context import PulpUploadContext upload_href = PulpUploadContext(self.pulp_ctx).upload_file(file, _chunk_size) body["upload"] = upload_href - else: - from pulp_glue.core.context import PulpArtifactContext - - artifact_href = PulpArtifactContext(self.pulp_ctx).upload(file, _chunk_size) - body["artifact"] = artifact_href def create( self, diff --git a/pulp-glue/src/pulp_glue/core/context.py b/pulp-glue/src/pulp_glue/core/context.py index cd70a6187..53cffcf2a 100644 --- a/pulp-glue/src/pulp_glue/core/context.py +++ b/pulp-glue/src/pulp_glue/core/context.py @@ -27,16 +27,8 @@ class PulpAccessPolicyContext(PulpEntityContext): ID_PREFIX = "access_policies" def reset(self) -> t.Any: - self.pulp_ctx.needs_plugin(PluginRequirement("core", specifier=">=3.17.0")) return self.call("reset", parameters={self.HREF: self.pulp_href}) - def preprocess_entity(self, body: EntityDefinition, partial: bool = False) -> EntityDefinition: - body = super().preprocess_entity(body, partial=partial) - if not self.pulp_ctx.has_plugin(PluginRequirement("core", specifier=">=3.17.0")): - if "creation_hooks" in body: - body["permissions_assignment"] = body.pop("creation_hooks") - return body - class PulpArtifactContext(PulpEntityContext): ENTITY = _("artifact") @@ -101,7 +93,6 @@ class PulpDomainContext(PulpEntityContext): ENTITIES = _("Pulp domains") HREF = "domain_href" ID_PREFIX = "domains" - NEEDS_PLUGINS = [PluginRequirement("core", specifier=">=3.23.0")] class PulpExporterContext(PulpEntityContext): @@ -126,16 +117,9 @@ def scope(self) -> dict[str, t.Any]: class PulpGroupContext(PulpEntityContext): ENTITY = _("user group") ENTITIES = _("user groups") - # Handled by a workaround - # HREF = "group_href" + HREF = "group_href" ID_PREFIX = "groups" - CAPABILITIES = {"roles": [PluginRequirement("core", specifier=">=3.17.0")]} - - @property - def HREF(self) -> str: # type:ignore - if not self.pulp_ctx.has_plugin(PluginRequirement("core", specifier=">=3.17.0")): - return "auth_group_href" - return "group_href" + CAPABILITIES = {"roles": []} def add_user(self, user: "PulpUserContext") -> None: pass @@ -150,94 +134,12 @@ def remove_user(self, user: "PulpUserContext") -> None: group_user_ctx.delete() -class PulpGroupPermissionContext(PulpEntityContext): - ENTITY = _("group permission") - ENTITIES = _("group permissions") - NEEDS_PLUGINS = [PluginRequirement("core", specifier="<3.20.0", feature=_("group permissions"))] - group_ctx: PulpGroupContext - - def __init__(self, pulp_ctx: PulpContext, group_ctx: PulpGroupContext) -> None: - super().__init__(pulp_ctx) - self.group_ctx = group_ctx - - def call( - self, - operation: str, - non_blocking: bool = False, - parameters: dict[str, t.Any] | None = None, - body: dict[str, t.Any] | None = None, - validate_body: bool = False, - ) -> t.Any: - # Workaroud because the openapi spec for GroupPermissions has always been broken. - # - # This will probably not be fixed upstream, and GroupPermissions are removed from pulpcore. - # So we just skip linting here. - return super().call( - operation, - non_blocking=non_blocking, - parameters=parameters, - body=body, - validate_body=validate_body, - ) - - def find(self, **kwargs: t.Any) -> t.Any: - # Workaroud the missing ability to filter. - # # TODO fix upstream and adjust to guard for the proper version - # # https://pulp.plan.io/issues/8241 - # if self.pulp_ctx.has_plugin(PluginRequirement("core", specifier=">=3.99.dev")): - # # Workaround not needed anymore - # return super().find(**kwargs) - search_result = self.list(limit=sys.maxsize, offset=0, parameters={}) - for key, value in kwargs.items(): - search_result = [res for res in search_result if res[key] == value] - if len(search_result) != 1: - raise PulpException( - _("Could not find {entity} with {kwargs}.").format( - entity=self.ENTITY, kwargs=kwargs - ) - ) - return search_result[0] - - @property - def scope(self) -> dict[str, t.Any]: - return {self.group_ctx.HREF: self.group_ctx.pulp_href} - - -class PulpGroupModelPermissionContext(PulpGroupPermissionContext): - ENTITY = _("group model permission") - ENTITIES = _("group model permissions") - # Handled by a workaround - # HREF = "groups_model_permission_href" - ID_PREFIX = "groups_model_permissions" - - @property - def HREF(self) -> str: # type:ignore - if not self.pulp_ctx.has_plugin(PluginRequirement("core", specifier=">=3.17.0")): - return "auth_groups_model_permission_href" - return "groups_model_permission_href" - - -class PulpGroupObjectPermissionContext(PulpGroupPermissionContext): - ENTITY = _("group object permission") - ENTITIES = _("group object permissions") - # Handled by a workaround - # HREF = "groups_object_permission_href" - ID_PREFIX = "groups_object_permissions" - - @property - def HREF(self) -> str: # type:ignore - if not self.pulp_ctx.has_plugin(PluginRequirement("core", specifier=">=3.17.0")): - return "auth_groups_object_permission_href" - return "groups_object_permission_href" - - class PulpGroupRoleContext(PulpEntityContext): ENTITY = _("group role") ENTITIES = _("group roles") HREF = "groups_group_role_href" ID_PREFIX = "groups_roles" NULLABLES = {"content_object"} - NEEDS_PLUGINS = [PluginRequirement("core", specifier=">=3.17.0", feature=_("group roles"))] group_ctx: PulpGroupContext def __init__(self, pulp_ctx: PulpContext, group_ctx: PulpGroupContext) -> None: @@ -252,17 +154,10 @@ def scope(self) -> dict[str, t.Any]: class PulpGroupUserContext(PulpEntityContext): ENTITY = _("group user") ENTITIES = _("group users") - # Handled by a workaround - # HREF = "groups_user_href" + HREF = "groups_user_href" ID_PREFIX = "groups_users" group_ctx: PulpGroupContext - @property - def HREF(self) -> str: # type:ignore - if not self.pulp_ctx.has_plugin(PluginRequirement("core", specifier=">=3.17.0")): - return "auth_groups_user_href" - return "groups_user_href" - def __init__(self, pulp_ctx: PulpContext, group_ctx: PulpGroupContext) -> None: super().__init__(pulp_ctx) self.group_ctx = group_ctx @@ -285,21 +180,9 @@ class PulpOrphanContext(PulpViewSetContext): def cleanup(self, body: dict[str, t.Any] | None = None) -> t.Any: if body is not None: body = preprocess_payload(body) - if "orphan_protection_time" in body: - self.pulp_ctx.needs_plugin(PluginRequirement("core", specifier=">=3.15.0")) else: body = {} - if self.pulp_ctx.has_plugin(PluginRequirement("core", specifier=">=3.14.0")): - result = self.call("cleanup", body=body) - else: - if body: - self.pulp_ctx.needs_plugin(PluginRequirement("core", specifier=">=3.14.0")) - if not self.pulp_ctx.fake_mode: - result = self.pulp_ctx.call("orphans_delete") - else: - # Do we need something better? - result = {} - return result + return self.call("cleanup", body=body) class PulpCompositeContentGuardContext(PulpContentGuardContext): @@ -309,7 +192,6 @@ class PulpCompositeContentGuardContext(PulpContentGuardContext): ENTITIES = "composite content guards" HREF = "composite_content_guard_href" ID_PREFIX = "contentguards_core_composite" - NEEDS_PLUGINS = [PluginRequirement("core", specifier=">=3.43.0")] class PulpContentRedirectContentGuardContext(PulpContentGuardContext): @@ -319,7 +201,6 @@ class PulpContentRedirectContentGuardContext(PulpContentGuardContext): ENTITIES = "content redirect content guards" HREF = "content_redirect_content_guard_href" ID_PREFIX = "contentguards_core_content_redirect" - NEEDS_PLUGINS = [PluginRequirement("core", specifier=">=3.18.0")] class PulpHeaderContentGuardContext(PulpContentGuardContext): @@ -329,7 +210,6 @@ class PulpHeaderContentGuardContext(PulpContentGuardContext): ENTITIES = "header content guards" HREF = "header_content_guard_href" ID_PREFIX = "contentguards_core_header" - NEEDS_PLUGINS = [PluginRequirement("core", specifier=">=3.39.0")] class PulpRbacContentGuardContext(PulpContentGuardContext): @@ -340,8 +220,7 @@ class PulpRbacContentGuardContext(PulpContentGuardContext): HREF = "r_b_a_c_content_guard_href" ID_PREFIX = "contentguards_core_rbac" DOWNLOAD_ROLE: t.ClassVar[str] = "core.rbaccontentguard_downloader" - CAPABILITIES = {"roles": [PluginRequirement("core", specifier=">=3.17.0")]} - NEEDS_PLUGINS = [PluginRequirement("core", specifier=">=3.15.0")] + CAPABILITIES = {"roles": []} def assign( self, @@ -349,15 +228,9 @@ def assign( users: list[str] | None = None, groups: list[str] | None = None, ) -> t.Any: - if self.pulp_ctx.has_plugin(PluginRequirement("core", specifier=">=3.17.0")): - body: EntityDefinition = {"users": users, "groups": groups} - body["role"] = self.DOWNLOAD_ROLE - return self.call("add_role", parameters={self.HREF: href or self.pulp_href}, body=body) - else: - body = {"usernames": users, "groupnames": groups} - return self.call( - "assign_permission", parameters={self.HREF: href or self.pulp_href}, body=body - ) + body: EntityDefinition = {"users": users, "groups": groups} + body["role"] = self.DOWNLOAD_ROLE + return self.call("add_role", parameters={self.HREF: href or self.pulp_href}, body=body) def remove( self, @@ -365,17 +238,9 @@ def remove( users: list[str] | None = None, groups: list[str] | None = None, ) -> t.Any: - if self.pulp_ctx.has_plugin(PluginRequirement("core", specifier=">=3.17.0")): - body: EntityDefinition = {"users": users, "groups": groups} - body["role"] = self.DOWNLOAD_ROLE - return self.call( - "remove_role", parameters={self.HREF: href or self.pulp_href}, body=body - ) - else: - body = {"usernames": users, "groupnames": groups} - return self.call( - "remove_permission", parameters={self.HREF: href or self.pulp_href}, body=body - ) + body: EntityDefinition = {"users": users, "groups": groups} + body["role"] = self.DOWNLOAD_ROLE + return self.call("remove_role", parameters={self.HREF: href or self.pulp_href}, body=body) class PulpRoleContext(PulpEntityContext): @@ -384,7 +249,6 @@ class PulpRoleContext(PulpEntityContext): HREF = "role_href" ID_PREFIX = "roles" NULLABLES = {"description"} - NEEDS_PLUGINS = [PluginRequirement("core", specifier=">=3.17.0")] class PulpSigningServiceContext(PulpEntityContext): @@ -400,49 +264,13 @@ class PulpTaskContext(PulpEntityContext): ENTITIES = _("tasks") HREF = "task_href" ID_PREFIX = "tasks" - CAPABILITIES = {"roles": [PluginRequirement("core", specifier=">=3.17.0")]} + CAPABILITIES = {"roles": []} PLUGIN = "core" MODEL = "task" HREF_TEMPLATE = "tasks/{pulp_id}/" resource_context: PulpEntityContext | None = None - def _list(self, limit: int, offset: int, parameters: dict[str, t.Any]) -> list[t.Any]: - if ( - parameters.get("logging_cid") is not None - or parameters.get("logging_cid__contains") is not None - ): - self.pulp_ctx.needs_plugin(PluginRequirement("core", specifier=">=3.14.0")) - if not self.pulp_ctx.has_plugin(PluginRequirement("core", specifier=">=3.22.0")): - parameters = parameters.copy() - reserved_resources = parameters.pop("reserved_resources", None) - exclusive_resources = parameters.pop("exclusive_resources", None) - shared_resources = parameters.pop("shared_resources", None) - if ( - parameters.pop("reserved_resources__in", None) - or parameters.pop("exclusive_resources__in", None) - or parameters.pop("shared_resources__in", None) - ): - self.pulp_ctx.needs_plugin(PluginRequirement("core", specifier=">=3.22.0")) - reserved_resources_record = [] - if reserved_resources: - reserved_resources_record.append(reserved_resources) - if exclusive_resources: - reserved_resources_record.append(exclusive_resources) - if shared_resources: - reserved_resources_record.append("shared:" + shared_resources) - if len(reserved_resources_record) > 1: - self.pulp_ctx.needs_plugin( - PluginRequirement( - "core", - specifier=">=3.22.0", - feature=_("specify multiple reserved resources"), - ), - ) - parameters["reserved_resources_record"] = reserved_resources_record - - return super().list(limit=limit, offset=offset, parameters=parameters) - def cancel(self, task_href: str | None = None, background: bool = False) -> t.Any: task_href = task_href or self.pulp_href task = self.call( @@ -468,10 +296,7 @@ def profile_artifact_urls(self) -> dict[str, str]: @property def scope(self) -> dict[str, t.Any]: if self.resource_context: - if self.pulp_ctx.has_plugin(PluginRequirement("core", specifier=">=3.22.0")): - return {"reserved_resources": self.resource_context.pulp_href} - else: - return {"reserved_resources_record": [self.resource_context.pulp_href]} + return {"reserved_resources": self.resource_context.pulp_href} else: return {} @@ -480,7 +305,6 @@ def purge( finished_before: datetime.datetime | None, states: list[str] | None, ) -> t.Any: - self.pulp_ctx.needs_plugin(PluginRequirement("core", specifier=">=3.17.0")) body: dict[str, t.Any] = {} if finished_before: body["finished_before"] = finished_before @@ -492,20 +316,21 @@ def purge( ) def summary(self) -> dict[str, int]: - task_states = ["waiting", "skipped", "running", "completed", "failed", "canceled"] - if self.pulp_ctx.has_plugin(PluginRequirement("core", specifier=">=3.14.0")): - task_states.append("canceling") + task_states = [ + "waiting", + "skipped", + "running", + "completed", + "failed", + "canceling", + "canceled", + ] result = {} for state in task_states: payload = {"limit": 1, "state": state} result[state] = self.call("list", parameters=payload)["count"] return result - # "list" should be a reserverd word in Python... - # In this scope, we want to use the global "list" for typing hints. - list = _list - del _list - class PulpTaskGroupContext(PulpEntityContext): ENTITY = _("task group") @@ -608,7 +433,6 @@ class PulpUpstreamPulpContext(PulpEntityContext): HREF = "upstream_pulp_href" ID_PREFIX = "upstream_pulps" HREF_PATTERN = r"upstream-pulps/" - NEEDS_PLUGINS = [PluginRequirement("core", specifier=">=3.23.0")] def find(self, **kwargs: t.Any) -> t.Any: # Workaroud the missing ability to filter. diff --git a/pulp-glue/src/pulp_glue/file/context.py b/pulp-glue/src/pulp_glue/file/context.py index 76f88cf07..a19054213 100644 --- a/pulp-glue/src/pulp_glue/file/context.py +++ b/pulp-glue/src/pulp_glue/file/context.py @@ -10,7 +10,6 @@ PulpRemoteContext, PulpRepositoryContext, PulpRepositoryVersionContext, - api_spec_quirk, ) from pulp_glue.common.i18n import get_translation @@ -18,13 +17,6 @@ _ = translation.gettext -@api_spec_quirk(PluginRequirement("file", specifier=">=1.10.0,<1.11.0")) -def patch_file_acs_refresh_request_body(api_spec: t.Any) -> t.Any: - operation = api_spec["paths"]["{file_file_alternate_content_source_href}refresh/"]["post"] - operation.pop("requestBody", None) - return api_spec - - class PulpFileACSContext(PulpACSContext): PLUGIN = "file" RESOURCE_TYPE = "file" @@ -32,8 +24,8 @@ class PulpFileACSContext(PulpACSContext): ENTITIES = _("file ACSes") HREF = "file_file_alternate_content_source_href" ID_PREFIX = "acs_file_file" - NEEDS_PLUGINS = [PluginRequirement("file", specifier=">=1.9.0")] - CAPABILITIES = {"roles": [PluginRequirement("file", specifier=">=1.11.0")]} + NEEDS_PLUGINS = [PluginRequirement("file")] + CAPABILITIES = {"roles": []} class PulpFileContentContext(PulpContentContext): @@ -43,7 +35,7 @@ class PulpFileContentContext(PulpContentContext): ENTITIES = _("file content") HREF = "file_file_content_href" ID_PREFIX = "content_file_files" - NEEDS_PLUGINS = [PluginRequirement("file", specifier=">=1.6.0")] + NEEDS_PLUGINS = [PluginRequirement("file")] CAPABILITIES = {"upload": []} def create( @@ -77,16 +69,15 @@ class PulpFileDistributionContext(PulpDistributionContext): ENTITIES = _("file distributions") HREF = "file_file_distribution_href" ID_PREFIX = "distributions_file_file" - CAPABILITIES = {"roles": [PluginRequirement("file", specifier=">=1.11.0")]} - NEEDS_PLUGINS = [PluginRequirement("file", specifier=">=1.6.0")] + CAPABILITIES = {"roles": []} + NEEDS_PLUGINS = [PluginRequirement("file")] def preprocess_entity(self, body: EntityDefinition, partial: bool = False) -> EntityDefinition: body = super().preprocess_entity(body, partial=partial) - if self.pulp_ctx.has_plugin(PluginRequirement("core", specifier=">=3.16.0")): - if "repository" in body and "publication" not in body: - body["publication"] = None - if "repository" not in body and "publication" in body: - body["repository"] = None + if "repository" in body and "publication" not in body: + body["publication"] = None + if "repository" not in body and "publication" in body: + body["repository"] = None return body @@ -97,9 +88,9 @@ class PulpFilePublicationContext(PulpPublicationContext): ENTITIES = _("file publications") HREF = "file_file_publication_href" ID_PREFIX = "publications_file_file" - CAPABILITIES = {"roles": [PluginRequirement("file", specifier=">=1.11.0")]} + CAPABILITIES = {"roles": []} NULLABLES = PulpPublicationContext.NULLABLES | {"manifest"} - NEEDS_PLUGINS = [PluginRequirement("file", specifier=">=1.6.0")] + NEEDS_PLUGINS = [PluginRequirement("file")] def preprocess_entity(self, body: EntityDefinition, partial: bool = False) -> EntityDefinition: body = super().preprocess_entity(body, partial=partial) @@ -117,8 +108,8 @@ class PulpFileRemoteContext(PulpRemoteContext): ENTITIES = _("file remotes") HREF = "file_file_remote_href" ID_PREFIX = "remotes_file_file" - CAPABILITIES = {"roles": [PluginRequirement("file", specifier=">=1.11.0")]} - NEEDS_PLUGINS = [PluginRequirement("file", specifier=">=1.6.0")] + CAPABILITIES = {"roles": []} + NEEDS_PLUGINS = [PluginRequirement("file")] class PulpFileGitRemoteContext(PulpRemoteContext): @@ -135,7 +126,7 @@ class PulpFileGitRemoteContext(PulpRemoteContext): class PulpFileRepositoryVersionContext(PulpRepositoryVersionContext): HREF = "file_file_repository_version_href" ID_PREFIX = "repositories_file_file_versions" - NEEDS_PLUGINS = [PluginRequirement("file", specifier=">=1.6.0")] + NEEDS_PLUGINS = [PluginRequirement("file")] class PulpFileRepositoryContext(PulpRepositoryContext): @@ -147,15 +138,9 @@ class PulpFileRepositoryContext(PulpRepositoryContext): ID_PREFIX = "repositories_file_file" VERSION_CONTEXT = PulpFileRepositoryVersionContext CAPABILITIES = { - "sync": [PluginRequirement("file")], - "pulpexport": [PluginRequirement("file")], - "roles": [PluginRequirement("file", specifier=">=1.11.0")], + "sync": [], + "pulpexport": [], + "roles": [], } NULLABLES = PulpRepositoryContext.NULLABLES | {"manifest", "remote"} - NEEDS_PLUGINS = [PluginRequirement("file", specifier=">=1.6.0")] - - def preprocess_entity(self, body: EntityDefinition, partial: bool = False) -> EntityDefinition: - body = super().preprocess_entity(body, partial=partial) - if "autopublish" in body: - self.pulp_ctx.needs_plugin(PluginRequirement("file", specifier=">=1.7.0")) - return body + NEEDS_PLUGINS = [PluginRequirement("file")] diff --git a/pulp-glue/src/pulp_glue/python/context.py b/pulp-glue/src/pulp_glue/python/context.py index 5b309d368..dd86f663b 100644 --- a/pulp-glue/src/pulp_glue/python/context.py +++ b/pulp-glue/src/pulp_glue/python/context.py @@ -72,11 +72,10 @@ def preprocess_entity(self, body: EntityDefinition, partial: bool = False) -> En self.pulp_ctx.needs_plugin(PluginRequirement("python", specifier=">=3.6.0")) if "version" in body: self.pulp_ctx.needs_plugin(PluginRequirement("python", specifier=">=3.21.0")) - if self.pulp_ctx.has_plugin(PluginRequirement("core", specifier=">=3.16.0")): - if "repository" in body and "publication" not in body: - body["publication"] = None - if "repository" not in body and "publication" in body: - body["repository"] = None + if "repository" in body and "publication" not in body: + body["publication"] = None + if "repository" not in body and "publication" in body: + body["repository"] = None version = body.pop("version", None) if version is not None: diff --git a/pulp-glue/src/pulp_glue/rpm/context.py b/pulp-glue/src/pulp_glue/rpm/context.py index ca7c9d50a..32c5d2613 100644 --- a/pulp-glue/src/pulp_glue/rpm/context.py +++ b/pulp-glue/src/pulp_glue/rpm/context.py @@ -81,11 +81,10 @@ class PulpRpmDistributionContext(PulpDistributionContext): def preprocess_entity(self, body: EntityDefinition, partial: bool = False) -> EntityDefinition: body = super().preprocess_entity(body, partial=partial) - if self.pulp_ctx.has_plugin(PluginRequirement("core", specifier=">=3.16.0")): - if "repository" in body and "publication" not in body: - body["publication"] = None - if "repository" not in body and "publication" in body: - body["repository"] = None + if "repository" in body and "publication" not in body: + body["publication"] = None + if "repository" not in body and "publication" in body: + body["repository"] = None if body.get("generate_repo_config") is False: self.pulp_ctx.needs_plugin( PluginRequirement( diff --git a/pulp-glue/tests/test_api_quirks.py b/pulp-glue/tests/test_api_quirks.py index 26b763459..f01aca30f 100644 --- a/pulp-glue/tests/test_api_quirks.py +++ b/pulp-glue/tests/test_api_quirks.py @@ -16,11 +16,7 @@ def test_api_quirks_idempotent(pulp_ctx: PulpContext) -> None: """ assert { "patch_content_in_query_filters", - "patch_field_select_filters", - "patch_file_acs_refresh_request_body", - "patch_upstream_pulp_replicate_request_body", "patch_python_remote_includes_excludes", - "patch_ordering_filters", "patch_rpm_copy_scheme", } <= {quirk[1].__name__ for quirk in _REGISTERED_API_SPEC_QUIRKS} diff --git a/src/pulp_cli/generic.py b/src/pulp_cli/generic.py index 1fed6dba4..528dcb30c 100644 --- a/src/pulp_cli/generic.py +++ b/src/pulp_cli/generic.py @@ -1374,7 +1374,6 @@ def _type_callback(ctx: click.Context, param: click.Parameter, value: str | None retained_versions_option = pulp_option( "--retain-repo-versions", - needs_plugins=[PluginRequirement("core", specifier=">=3.13.0")], help=_("Number of repository versions to keep."), type=int_or_empty, ) diff --git a/src/pulpcore/cli/container/distribution.py b/src/pulpcore/cli/container/distribution.py index 34ab08b0a..8b271b748 100644 --- a/src/pulpcore/cli/container/distribution.py +++ b/src/pulpcore/cli/container/distribution.py @@ -103,7 +103,6 @@ def update( distribution: EntityDefinition = distribution_ctx.entity body: EntityDefinition = {} - if private is not None: body["private"] = private if base_path is not None: diff --git a/src/pulpcore/cli/core/distribution.py b/src/pulpcore/cli/core/distribution.py index e6a95c2a3..b4cd8f304 100644 --- a/src/pulpcore/cli/core/distribution.py +++ b/src/pulpcore/cli/core/distribution.py @@ -1,6 +1,6 @@ import click -from pulp_glue.common.context import PluginRequirement, PulpDistributionContext +from pulp_glue.common.context import PulpDistributionContext from pulp_cli.generic import ( PulpCLIContext, @@ -21,7 +21,6 @@ def distribution(ctx: click.Context, pulp_ctx: PulpCLIContext, /) -> None: Please look for the plugin specific distribution commands for more detailed actions. i.e. 'pulp file distribution <...>' """ - pulp_ctx.needs_plugin(PluginRequirement("core", specifier=">=3.19.0")) ctx.obj = PulpDistributionContext(pulp_ctx) diff --git a/src/pulpcore/cli/core/generic.py b/src/pulpcore/cli/core/generic.py index 24e8d7201..b11c90b85 100644 --- a/src/pulpcore/cli/core/generic.py +++ b/src/pulpcore/cli/core/generic.py @@ -3,7 +3,7 @@ import click -from pulp_glue.common.context import DATETIME_FORMATS, PluginRequirement, PulpEntityContext +from pulp_glue.common.context import DATETIME_FORMATS, PulpEntityContext from pulp_glue.common.i18n import get_translation from pulp_glue.core.context import PulpTaskContext, PulpWorkerContext @@ -61,7 +61,6 @@ def __call__(self, ctx: click.Context, param: click.Parameter, value: str | None "--cid", "logging_cid__contains", help=_("List only tasks with this correlation id."), - needs_plugins=[PluginRequirement("core", specifier=">=3.14.0")], ), click.option( "--state", diff --git a/src/pulpcore/cli/core/group.py b/src/pulpcore/cli/core/group.py index c04a875b3..d777fc6f4 100644 --- a/src/pulpcore/cli/core/group.py +++ b/src/pulpcore/cli/core/group.py @@ -1,13 +1,10 @@ import click -from pulp_glue.common.context import PluginRequirement, PulpEntityContext +from pulp_glue.common.context import PulpEntityContext from pulp_glue.common.i18n import get_translation from pulp_glue.core.context import ( PulpDomainContext, PulpGroupContext, - PulpGroupModelPermissionContext, - PulpGroupObjectPermissionContext, - PulpGroupPermissionContext, PulpGroupRoleContext, PulpGroupUserContext, PulpUserContext, @@ -36,19 +33,6 @@ pass_group_context = click.make_pass_decorator(PulpGroupContext) -def _object_callback(ctx: click.Context, param: click.Parameter, value: str) -> str: - entity_ctx = ctx.find_object(PulpGroupPermissionContext) - assert entity_ctx is not None - if value is not None: - if isinstance(entity_ctx, PulpGroupObjectPermissionContext): - entity_ctx.entity = {"obj": value} - else: - raise click.ClickException(_("This type of Permission does not have an object.")) - elif isinstance(entity_ctx, PulpGroupObjectPermissionContext): - raise click.ClickException(_("This type of Permission needs an object.")) - return value - - def _object_required_callback(ctx: click.Context, param: click.Parameter, value: str) -> str: # Ensure --object is specified with "" when --domain is not being used if value is None: @@ -78,7 +62,6 @@ def _object_required_grouprole_lookup_callback( "core:domain": PulpDomainContext, }, "help": _("Domain the role is applied in"), - "needs_plugins": (PluginRequirement("core", specifier=">=3.23"),), } domain_option = resource_option("--domain", **domain_field_options) domain_group_lookup_option = resource_option( @@ -103,78 +86,7 @@ def group(ctx: click.Context, pulp_ctx: PulpCLIContext, /) -> None: group.add_command(show_command(decorators=lookup_options)) group.add_command(destroy_command(decorators=lookup_options)) group.add_command(create_command(decorators=create_options)) -group.add_command( - role_command( - decorators=lookup_options, - needs_plugins=[PluginRequirement("core", specifier=">=3.17.0")], - ) -) - - -@group.group(needs_plugins=[PluginRequirement("core", specifier="<3.20.0")]) -@click.option( - "-t", - "--type", - "perm_type", - type=click.Choice(["model", "object"], case_sensitive=False), - default="model", -) -@pass_group_context -@pass_pulp_context -@click.pass_context -def permission( - ctx: click.Context, - pulp_ctx: PulpCLIContext, - group_ctx: PulpGroupContext, - /, - perm_type: str, -) -> None: - if perm_type == "model": - ctx.obj = PulpGroupModelPermissionContext(pulp_ctx, group_ctx) - elif perm_type == "object": - ctx.obj = PulpGroupObjectPermissionContext(pulp_ctx, group_ctx) - else: - raise NotImplementedError() - - -permission.add_command( - list_command( - help=_("Show a list of the permissioons granted to a group."), - decorators=[group_option], - ) -) - - -@permission.command(name="add", help=_("Grant a permission to the group.")) -@group_option -@click.option("--permission", required=True) -@click.option("--object", "obj", callback=_object_callback) -@pass_entity_context -def add_permission(entity_ctx: PulpEntityContext, /, permission: str, obj: str | None) -> None: - assert isinstance(entity_ctx, PulpGroupPermissionContext) - - body = {"permission": permission} - if obj: - body["obj"] = obj - entity_ctx.create(body=body) - - -permission.add_command( - destroy_command( - name="remove", - help=_("Revoke a permission from the group."), - decorators=[ - group_option, - click.option( - "--permission", - required=True, - callback=lookup_callback("permission", PulpGroupPermissionContext), - expose_value=False, - ), - click.option("--object", callback=_object_callback, expose_value=False), - ], - ) -) +group.add_command(role_command(decorators=lookup_options)) @group.group() diff --git a/src/pulpcore/cli/core/orphan.py b/src/pulpcore/cli/core/orphan.py index 1cdd0b0a6..4c1686eaa 100644 --- a/src/pulpcore/cli/core/orphan.py +++ b/src/pulpcore/cli/core/orphan.py @@ -2,7 +2,7 @@ import click -from pulp_glue.common.context import PluginRequirement, PulpViewSetContext +from pulp_glue.common.context import PulpViewSetContext from pulp_glue.common.i18n import get_translation from pulp_glue.core.context import PulpOrphanContext @@ -36,7 +36,6 @@ def orphan(ctx: click.Context, pulp_ctx: PulpCLIContext, /) -> None: "--content-hrefs", help=_("List of specific Contents to delete if they are orphans"), callback=load_json_callback, - needs_plugins=[PluginRequirement("core", specifier=">=3.14.0")], ) @pulp_option( "--protection-time", @@ -46,7 +45,6 @@ def orphan(ctx: click.Context, pulp_ctx: PulpCLIContext, /) -> None: "How long in minutes Pulp should hold orphan Content and Artifacts before becoming" " candidates for cleanup task" ), - needs_plugins=[PluginRequirement("core", specifier=">=3.15.0")], ) @pass_view_set_context @pass_pulp_context diff --git a/src/pulpcore/cli/core/publication.py b/src/pulpcore/cli/core/publication.py index 1ea923efd..1640146bf 100644 --- a/src/pulpcore/cli/core/publication.py +++ b/src/pulpcore/cli/core/publication.py @@ -1,7 +1,6 @@ import click from pulp_glue.common.context import ( - PluginRequirement, PulpPublicationContext, PulpRepositoryContext, ) @@ -18,7 +17,6 @@ repository_option = resource_option( "--repository", context_table=PulpRepositoryContext.TYPE_REGISTRY, - needs_plugins=[PluginRequirement("core", specifier=">=3.20.0")], ) diff --git a/src/pulpcore/cli/core/task.py b/src/pulpcore/cli/core/task.py index 88c172ea2..b62f052f2 100644 --- a/src/pulpcore/cli/core/task.py +++ b/src/pulpcore/cli/core/task.py @@ -7,7 +7,6 @@ from pulp_glue.common.context import ( DATETIME_FORMATS, - PluginRequirement, PulpEntityContext, ) from pulp_glue.common.exceptions import PulpException @@ -70,7 +69,6 @@ def task(ctx: click.Context, pulp_ctx: PulpCLIContext, /) -> None: "reserved_resources__in", multiple=True, help=_("Href of a resource reserved by the task. May be specified multiple times."), - needs_plugins=[PluginRequirement("core", specifier=">=3.22.0")], ), pulp_option( "--exclusive-resource", @@ -85,7 +83,6 @@ def task(ctx: click.Context, pulp_ctx: PulpCLIContext, /) -> None: "Href of a resource reserved exclusively by the task." " May be specified multiple times." ), - needs_plugins=[PluginRequirement("core", specifier=">=3.22.0")], ), pulp_option( "--shared-resource", @@ -97,18 +94,12 @@ def task(ctx: click.Context, pulp_ctx: PulpCLIContext, /) -> None: "shared_resources__in", multiple=True, help=_("Href of a resource shared by the task. May be specified multiple times."), - needs_plugins=[PluginRequirement("core", specifier=">=3.22.0")], ), ] ) ) task.add_command(destroy_command(decorators=[href_option, uuid_option])) -task.add_command( - role_command( - decorators=[href_option, uuid_option], - needs_plugins=[PluginRequirement("core", specifier=">=3.17.0")], - ) -) +task.add_command(role_command(decorators=[href_option, uuid_option])) @task.command() diff --git a/src/pulpcore/cli/core/user.py b/src/pulpcore/cli/core/user.py index 820831080..db215941f 100644 --- a/src/pulpcore/cli/core/user.py +++ b/src/pulpcore/cli/core/user.py @@ -1,6 +1,6 @@ import click -from pulp_glue.common.context import PluginRequirement, PulpEntityContext +from pulp_glue.common.context import PulpEntityContext from pulp_glue.common.i18n import get_translation from pulp_glue.core.context import PulpDomainContext, PulpUserContext, PulpUserRoleContext @@ -44,8 +44,6 @@ def _object_required_userrole_lookup_callback( return userrole_lookup_callback(ctx, param, value) -req_core_3_17 = PluginRequirement("core", specifier=">=3.17.0") - username_option = pulp_option( "--username", help=_("Username of the {entity}"), @@ -59,7 +57,6 @@ def _object_required_userrole_lookup_callback( "core:domain": PulpDomainContext, }, "help": _("Domain the role is applied in"), - "needs_plugins": (PluginRequirement("core", specifier=">=3.23"),), } domain_option = resource_option("--domain", **domain_field_options) domain_user_lookup_option = resource_option( @@ -99,11 +96,9 @@ def user(ctx: click.Context, pulp_ctx: PulpCLIContext, /) -> None: user.add_command(list_command()) user.add_command(show_command(decorators=lookup_options)) -user.add_command(create_command(decorators=create_options, needs_plugins=[req_core_3_17])) -user.add_command( - update_command(decorators=lookup_options + update_options, needs_plugins=[req_core_3_17]) -) -user.add_command(destroy_command(decorators=lookup_options, needs_plugins=[req_core_3_17])) +user.add_command(create_command(decorators=create_options)) +user.add_command(update_command(decorators=lookup_options + update_options)) +user.add_command(destroy_command(decorators=lookup_options)) @user.group(name="role-assignment") @@ -113,7 +108,6 @@ def user(ctx: click.Context, pulp_ctx: PulpCLIContext, /) -> None: def role(ctx: click.Context, pulp_ctx: PulpCLIContext, user_ctx: PulpEntityContext, /) -> None: assert isinstance(user_ctx, PulpUserContext) - pulp_ctx.needs_plugin(req_core_3_17) ctx.obj = PulpUserRoleContext(pulp_ctx, user_ctx) diff --git a/src/pulpcore/cli/file/repository.py b/src/pulpcore/cli/file/repository.py index b923c43d5..ba2c3d9cd 100644 --- a/src/pulpcore/cli/file/repository.py +++ b/src/pulpcore/cli/file/repository.py @@ -5,7 +5,6 @@ from pulp_glue.common.context import ( EntityFieldDefinition, - PluginRequirement, PulpRemoteContext, PulpRepositoryContext, ) @@ -102,11 +101,7 @@ def repository() -> None: click.option("--description"), remote_option, click.option("--manifest"), - pulp_option( - "--autopublish/--no-autopublish", - needs_plugins=[PluginRequirement("file", specifier=">=1.7.0")], - default=None, - ), + pulp_option("--autopublish/--no-autopublish", default=None), retained_versions_option, retain_checkpoints_option, pulp_labels_option, diff --git a/tests/scripts/pulp_ansible/test_content.sh b/tests/scripts/pulp_ansible/test_content.sh index 83414def9..24b691e1b 100755 --- a/tests/scripts/pulp_ansible/test_content.sh +++ b/tests/scripts/pulp_ansible/test_content.sh @@ -72,11 +72,8 @@ expect_succ pulp ansible repository content --type "role" add --repository "cli_ expect_succ pulp ansible repository content --type "role" list --repository "cli_test_ansible_content_repository" --version 2 test "$(echo "$OUTPUT" | jq -r length)" -eq "1" -if pulp debug has-plugin --name "core" --specifier ">=3.11.0" -then - expect_succ pulp ansible repository content list --repository "cli_test_ansible_content_repository" --version 2 --all-types - test "$(echo "$OUTPUT" | jq -r length)" -eq "2" -fi +expect_succ pulp ansible repository content list --repository "cli_test_ansible_content_repository" --version 2 --all-types +test "$(echo "$OUTPUT" | jq -r length)" -eq "2" expect_succ pulp ansible repository content remove --repository "cli_test_ansible_content_repository" --href "$content_href" expect_succ pulp ansible repository content remove --repository "cli_test_ansible_content_repository" --href "$content2_href" diff --git a/tests/scripts/pulp_file/test_distribution.sh b/tests/scripts/pulp_file/test_distribution.sh index e1fe3bc2e..6ec7fcbaf 100755 --- a/tests/scripts/pulp_file/test_distribution.sh +++ b/tests/scripts/pulp_file/test_distribution.sh @@ -38,12 +38,9 @@ expect_succ pulp file distribution update \ --publication "$PUBLICATION_HREF" \ --content-guard "" -if pulp debug has-plugin --name "file" --specifier ">=1.7.0" -then - expect_succ pulp file distribution update \ - --distribution "cli_test_file_distro" \ - --repository "cli_test_file_distribution_repository" -fi +expect_succ pulp file distribution update \ + --distribution "cli_test_file_distro" \ + --repository "cli_test_file_distribution_repository" expect_succ pulp file distribution list --base-path "cli_test_file_distro" test "$(echo "$OUTPUT" | jq -r length)" -eq 1 diff --git a/tests/scripts/pulp_file/test_publication.sh b/tests/scripts/pulp_file/test_publication.sh index 3fe693bd8..1b6ce09ec 100755 --- a/tests/scripts/pulp_file/test_publication.sh +++ b/tests/scripts/pulp_file/test_publication.sh @@ -22,11 +22,8 @@ PUBLICATION_HREF="$(echo "$OUTPUT" | jq -r .pulp_href)" expect_succ pulp file publication destroy --href "$PUBLICATION_HREF" expect_succ pulp file publication create --repository "cli_test_file_publication_repository" --version 0 PUBLICATION_HREF="$(echo "$OUTPUT" | jq -r .pulp_href)" -if pulp debug has-plugin --name "core" --specifier ">=3.20.0" -then - expect_succ pulp file publication list --repository "cli_test_file_publication_repository" - test "$(echo "$OUTPUT" | jq -r length)" -eq 1 - expect_succ pulp publication list --repository "file:file:cli_test_file_publication_repository" - test "$(echo "$OUTPUT" | jq -r length)" -eq 1 -fi +expect_succ pulp file publication list --repository "cli_test_file_publication_repository" +test "$(echo "$OUTPUT" | jq -r length)" -eq 1 +expect_succ pulp publication list --repository "file:file:cli_test_file_publication_repository" +test "$(echo "$OUTPUT" | jq -r length)" -eq 1 expect_succ pulp file publication destroy --href "$PUBLICATION_HREF" diff --git a/tests/scripts/pulp_file/test_repository.sh b/tests/scripts/pulp_file/test_repository.sh index 5f035542e..eed38568c 100755 --- a/tests/scripts/pulp_file/test_repository.sh +++ b/tests/scripts/pulp_file/test_repository.sh @@ -53,17 +53,11 @@ then test "$(echo "$OUTPUT" | jq -r '.retain_checkpoints')" = "null" fi -if pulp debug has-plugin --name "file" --specifier ">=1.7.0" -then - expect_succ pulp file repository update --repository "cli_test_file_repo" --manifest "manifest.csv" +expect_succ pulp file repository update --repository "cli_test_file_repo" --manifest "manifest.csv" - if pulp debug has-plugin --name "file" --specifier ">=1.12.0" - then - expect_succ pulp file repository update --repository "cli_test_file_repo" --manifest "" - expect_succ pulp file repository show --repository "cli_test_file_repo" - test "$(echo "$OUTPUT" | jq -r '.manifest')" = "null" - fi -fi +expect_succ pulp file repository update --repository "cli_test_file_repo" --manifest "" +expect_succ pulp file repository show --repository "cli_test_file_repo" +test "$(echo "$OUTPUT" | jq -r '.manifest')" = "null" expect_succ pulp repository list test "$(echo "$OUTPUT" | jq -r '.|length')" != "0" diff --git a/tests/scripts/pulpcore/test_content_guards.sh b/tests/scripts/pulpcore/test_content_guards.sh index 3169a125c..d9c196175 100755 --- a/tests/scripts/pulpcore/test_content_guards.sh +++ b/tests/scripts/pulpcore/test_content_guards.sh @@ -28,21 +28,15 @@ expect_succ pulp content-guard rbac show --name "cli_test_rbac_guard" test "$(echo "$OUTPUT" | jq -r '.users' | jq -r length)" -eq "0" test "$(echo "$OUTPUT" | jq -r '.groups' | jq -r length)" -eq "0" -if pulp debug has-plugin --name "core" --specifier ">=3.39.0" -then - # Header content guard - expect_succ pulp content-guard header create --name "cli_test_header_guard" --header-name "to" --header-value "ken" - if pulp debug has-plugin --name "core" --specifier ">=3.43.0" - then - # Composite content guard - expect_succ pulp content-guard composite create --name "cli_test_composite_guard" --guard "rbac:cli_test_rbac_guard" --guard "header:cli_test_header_guard" - test "$(echo "$OUTPUT" | jq -r '.guards' | jq -r length)" -eq "2" - expect_succ pulp content-guard composite update --name "cli_test_composite_guard" --guard "rbac:cli_test_rbac_guard" --description "Updated composite guard" - expect_succ pulp content-guard composite show --name "cli_test_composite_guard" - test "$(echo "$OUTPUT" | jq -r '.guards' | jq -r length)" -eq "1" - expect_succ pulp content-guard composite destroy --name "cli_test_composite_guard" - fi - expect_succ pulp content-guard header destroy --name "cli_test_header_guard" -fi +# Header content guard +expect_succ pulp content-guard header create --name "cli_test_header_guard" --header-name "to" --header-value "ken" +# Composite content guard +expect_succ pulp content-guard composite create --name "cli_test_composite_guard" --guard "rbac:cli_test_rbac_guard" --guard "header:cli_test_header_guard" +test "$(echo "$OUTPUT" | jq -r '.guards' | jq -r length)" -eq "2" +expect_succ pulp content-guard composite update --name "cli_test_composite_guard" --guard "rbac:cli_test_rbac_guard" --description "Updated composite guard" +expect_succ pulp content-guard composite show --name "cli_test_composite_guard" +test "$(echo "$OUTPUT" | jq -r '.guards' | jq -r length)" -eq "1" +expect_succ pulp content-guard composite destroy --name "cli_test_composite_guard" +expect_succ pulp content-guard header destroy --name "cli_test_header_guard" expect_succ pulp content-guard rbac destroy --name "cli_test_rbac_guard" diff --git a/tests/scripts/pulpcore/test_task.sh b/tests/scripts/pulpcore/test_task.sh index 4b5d74769..d139b7c93 100755 --- a/tests/scripts/pulpcore/test_task.sh +++ b/tests/scripts/pulpcore/test_task.sh @@ -28,25 +28,21 @@ expect_succ pulp file remote create --name "cli_test_core_task_large_remote" --u expect_succ pulp file repository create --name "cli_test_core_task_repository" --remote "cli_test_core_task_remote" repository_href="$(echo "$OUTPUT" | jq -r '.pulp_href')" -# Test canceling a task introduced in 3.12, but not reliable in 3.18 -if pulp debug has-plugin --name "core" --specifier ">=3.21.0" +expect_succ pulp --background file repository sync --name "cli_test_core_task_repository" --remote "cli_test_core_task_large_remote" +task="$(echo "$ERROUTPUT" | grep -E -o "${PULP_API_ROOT}([-_a-zA-Z0-9]+/)?api/v3/tasks/[-[:xdigit:]]*/")" +if expect_succ pulp task cancel --href "$task" then - expect_succ pulp --background file repository sync --name "cli_test_core_task_repository" --remote "cli_test_core_task_large_remote" - task="$(echo "$ERROUTPUT" | grep -E -o "${PULP_API_ROOT}([-_a-zA-Z0-9]+/)?api/v3/tasks/[-[:xdigit:]]*/")" - if expect_succ pulp task cancel --href "$task" - then - expect_succ pulp task list --name $sync_task --state canceled - expect_succ test "$(echo "$OUTPUT" | jq -r length)" -eq $((count + 1)) - expect_succ pulp task show --href "$task" - expect_succ test "$(echo "$OUTPUT" | jq -r '.state')" = "canceled" - else - expect_succ pulp task list --name $sync_task --state canceled - expect_succ test "$(echo "$OUTPUT" | jq -r length)" -eq $((count + 0)) - expect_succ pulp task show --href "$task" - expect_succ test "$(echo "$OUTPUT" | jq -r '.state')" = "completed" - fi - expected_repo_task_count=$((expected_repo_task_count + 1)) + expect_succ pulp task list --name $sync_task --state canceled + expect_succ test "$(echo "$OUTPUT" | jq -r length)" -eq $((count + 1)) + expect_succ pulp task show --href "$task" + expect_succ test "$(echo "$OUTPUT" | jq -r '.state')" = "canceled" +else + expect_succ pulp task list --name $sync_task --state canceled + expect_succ test "$(echo "$OUTPUT" | jq -r length)" -eq $((count + 0)) + expect_succ pulp task show --href "$task" + expect_succ test "$(echo "$OUTPUT" | jq -r '.state')" = "completed" fi +expected_repo_task_count=$((expected_repo_task_count + 1)) expect_fail pulp --dry-run task cancel --all @@ -76,23 +72,17 @@ then expect_succ test -f "task_profile-pulp_file.app.tasks.synchronizing.synchronize-${task_uuid}/memory_profile" fi -if pulp debug has-plugin --name "core" --specifier ">=3.22.0" -then - # New style task resource filters - expect_succ pulp task list --reserved-resource-in "$repository_href" --reserved-resource-in "$remote_href" - expect_succ test "$(echo "$OUTPUT" | jq -r length)" -eq 1 - expect_succ pulp task list --reserved-resource "$repository_href" - expect_succ test "$(echo "$OUTPUT" | jq -r length)" -eq 2 - expect_succ pulp task list --exclusive-resource "$repository_href" - expect_succ test "$(echo "$OUTPUT" | jq -r length)" -eq 2 - expect_succ pulp task list --exclusive-resource "$remote_href" - expect_succ test "$(echo "$OUTPUT" | jq -r length)" -eq 0 - expect_succ pulp task list --shared-resource "$remote_href" - expect_succ test "$(echo "$OUTPUT" | jq -r length)" -eq 1 -else - expect_succ pulp task list --reserved-resource "$repository_href" - expect_succ test "$(echo "$OUTPUT" | jq -r length)" -eq "$expected_repo_task_count" -fi +# New style task resource filters +expect_succ pulp task list --reserved-resource-in "$repository_href" --reserved-resource-in "$remote_href" +expect_succ test "$(echo "$OUTPUT" | jq -r length)" -eq 1 +expect_succ pulp task list --reserved-resource "$repository_href" +expect_succ test "$(echo "$OUTPUT" | jq -r length)" -eq 2 +expect_succ pulp task list --exclusive-resource "$repository_href" +expect_succ test "$(echo "$OUTPUT" | jq -r length)" -eq 2 +expect_succ pulp task list --exclusive-resource "$remote_href" +expect_succ test "$(echo "$OUTPUT" | jq -r length)" -eq 0 +expect_succ pulp task list --shared-resource "$remote_href" +expect_succ test "$(echo "$OUTPUT" | jq -r length)" -eq 1 expect_fail pulp task list --state=cannotwork expect_succ pulp task list --state=COmPLetED diff --git a/tests/scripts/test_debug.sh b/tests/scripts/test_debug.sh index 889705c4b..4948078a2 100755 --- a/tests/scripts/test_debug.sh +++ b/tests/scripts/test_debug.sh @@ -5,7 +5,7 @@ set -eu . "$(dirname "$(realpath "$0")")"/config.source expect_succ pulp debug has-cli-plugin --name "common" --specifier ">=0.24.0" -expect_succ pulp debug has-plugin --name "core" --specifier "<4.0" +expect_succ pulp debug has-plugin --name "core" --specifier "<99.0" expect_succ pulp debug openapi spec expect_succ pulp debug openapi operation-ids expect_succ pulp debug openapi operation --id tasks_list diff --git a/tests/test_prn_unit.py b/tests/test_prn_regex.py similarity index 100% rename from tests/test_prn_unit.py rename to tests/test_prn_regex.py