feat: catalog-based generic workloads (--from-catalog)#194
Merged
Conversation
Introduce CatalogEntry, CatalogManifest, and RoleDefinition types with LoadCatalogEntry() for reading user-supplied systemd unit workloads from a catalog directory. Includes manifest YAML parsing, service file discovery, multi-role service-to-role mapping, and comprehensive validation. Stubs for GenericWorkload and GenericMultiWorkload added for compilation. Signed-off-by: Melvin Hillsman <mhillsma@redhat.com>
…tion Signed-off-by: Melvin Hillsman <mhillsma@redhat.com>
… substitution Signed-off-by: Melvin Hillsman <mhillsma@redhat.com>
Signed-off-by: Melvin Hillsman <mhillsma@redhat.com>
Load --from-catalog entries into the registry before planning VMs, check for name conflicts with built-in workloads, and merge catalog names into the workload list. Signed-off-by: Melvin Hillsman <mhillsma@redhat.com>
When --from-catalog is set without --workloads, clear default built-in workloads so only catalog entries run. Validate built-in names only. Require at least one workload source (--workloads or --from-catalog). Signed-off-by: Melvin Hillsman <mhillsma@redhat.com>
|
[APPROVALNOTIFIER] This PR is APPROVED This pull-request has been approved by: mrhillsman The full list of commands accepted by this bot can be found here. The pull request process is described here DetailsNeeds approval from an approver in each of these files:
Approvers can indicate their approval by writing |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
--from-catalogand--catalog-dirflags that let users deploy custom workloads from systemd unit files in~/.virtwork/catalog/<entry>/without writing Go code.servicefile) and multi-role (manifest withworkload.yamldeclaring roles + per-role.servicefiles){{key}}placeholders), packages, and per-workload config (--params) all work with catalog entries the same as built-in workloadsWhat changed
internal/workloads/catalog.go):LoadCatalogEntry()reads an entry directory, parses optionalworkload.yamlmanifest, discovers.servicefiles, and returns aCatalogEntrythat can produce aWorkloadFactoryandParamSchemainternal/workloads/generic.go): Single-role catalog workload — writes service files via cloud-init, enables them with systemd, substitutes paramsinternal/workloads/generic_multi.go): Multi-role catalog workload following theNetworkWorkloadpattern —RoleDistribution(),UserdataForRole(), per-role cloud-initinternal/config/config.go):CatalogDirandFromCatalogfields,--catalog-dir/--from-catalogflags, env var supportinternal/orchestrator/orchestrator.go): Loads catalog entries into the registry at runtime, checks for name conflicts with built-ins, merges catalog + built-in workload listscmd/virtwork/main.go): When--from-catalogis set without--workloads, clears default built-in workloads; requires at least one workload sourceResolves #185