Skip to content

Add types and providers for Pulpcore RPM resources#408

Open
alexjfisher wants to merge 1 commit into
theforeman:masterfrom
alexjfisher:pulpcore_types
Open

Add types and providers for Pulpcore RPM resources#408
alexjfisher wants to merge 1 commit into
theforeman:masterfrom
alexjfisher:pulpcore_types

Conversation

@alexjfisher

Copy link
Copy Markdown
Contributor

Added types for managing RPM 'remotes', 'repositories' and 'distributions' resources using the pulp CLI.

Providers are layered so the common logic can be shared and the CLI implementation swapped later, (with perhaps direct calls to the REST API, or the autogenerated ruby bindings??)

  • A grandparent provider holds the lifecycle/prefetch/flush mechanics, the property getter/setter macros, and the href->name lookup.
  • A per-resource parent maps the Pulp API hash to Puppet properties.
  • A CLI mixin shells out to pulp and parses its JSON responses.
  • A concrete cli provider wires them together.

Coverage is intentionally partial, starting with the properties I needed today. Adding any additional properties should be fairly straightforward.

Attribution: The type and provider implementation is my own work. The unit tests were largely drafted with help from ChatGPT. The code review and the resulting cleanup refactors were co-authored with Claude, (which also helped refine the tests).

Added types for managing RPM 'remotes', 'repositories' and 'distributions'
resources using the `pulp` CLI.

Providers are layered so the common logic can be shared and the CLI
implementation swapped later, (with perhaps direct calls to the REST API, or
the autogenerated ruby bindings??)

* A grandparent provider holds the lifecycle/prefetch/flush mechanics, the
property getter/setter macros, and the href->name lookup.
* A per-resource parent maps the Pulp API hash to Puppet properties.
* A CLI mixin shells out to `pulp` and parses its JSON responses.
* A concrete `cli` provider wires them together.

Coverage is intentionally partial, starting with the properties I needed today.
Adding any additional properties should be fairly straightforward.

Attribution: The type and provider implementation is my own work. The unit
tests were largely drafted with help from ChatGPT. The code review and the
resulting cleanup refactors were co-authored with Claude, (which also helped
refine the tests).

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant