Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion .github/workflows/lint.yml
Original file line number Diff line number Diff line change
Expand Up @@ -42,7 +42,7 @@ jobs:
# https://github.com/golangci/golangci-lint-action
uses: golangci/golangci-lint-action@ba0d7d2ec06a0ea1cb5fa41b2e4a3ab91d21278a # v9.3.0
with:
version: v2.9.0
version: v2.13.1
commit-lint:
runs-on: ubuntu-latest
env:
Expand Down
4 changes: 2 additions & 2 deletions .github/workflows/testing.yml
Original file line number Diff line number Diff line change
Expand Up @@ -18,7 +18,7 @@ jobs:
strategy:
matrix:
cobbler_version:
- v4.0.0b1
- v4.0.0b5
fail-fast: false
steps:
- name: Check out code into the Go module directory
Expand Down Expand Up @@ -59,7 +59,7 @@ jobs:
*.iso
key: ${{ steps.cache-iso-restore.outputs.cache-primary-key }}
- name: Upload coverage report to GH artifacts
if: matrix.cobbler_version == 'v4.0.0b1'
if: matrix.cobbler_version == 'v4.0.0b5'
# https://github.com/actions/upload-artifact
uses: actions/upload-artifact@ea165f8d65b6e75b540449e92b4886f43607fa02 # v4.6.2
with:
Expand Down
110 changes: 82 additions & 28 deletions cmd/distro.go
Original file line number Diff line number Diff line change
Expand Up @@ -359,20 +359,28 @@ func NewDistroCopyCmd() (*cobra.Command, error) {
if err != nil {
return err
}
duid, err := cmd.Flags().GetString("uid")
if err != nil {
return err
}
distroNewName, err := cmd.Flags().GetString("newname")
if err != nil {
return err
}

dhandle, err := Client.GetDistroHandle(dname)
dhandle, err := resolveUID(&Client, "distro", dname, duid)
if err != nil {
return err
}
err = Client.CopyDistro(dhandle, distroNewName)
if err != nil {
return err
}
newDistro, err := Client.GetDistro(distroNewName, false, false)
newDistroHandle, err := Client.GetDistroHandle(distroNewName)
if err != nil {
return err
}
newDistro, err := Client.GetDistro(newDistroHandle, false, false)
if err != nil {
return err
}
Expand All @@ -391,6 +399,7 @@ func NewDistroCopyCmd() (*cobra.Command, error) {
addMapFlags(distroCopyCmd, distroMapFlagMetadata)
distroCopyCmd.Flags().String("newname", "", "the new distro name")
distroCopyCmd.Flags().Bool("in-place", false, "edit items in kopts or autoinstall without clearing the other items")
addUIDFlag(distroCopyCmd, "distro")
return distroCopyCmd, nil
}

Expand All @@ -405,13 +414,21 @@ func NewDistroEditCmd() (*cobra.Command, error) {
return err
}

// find distro through its name
// find distro through its name/uid
dname, err := cmd.Flags().GetString("name")
if err != nil {
return err
}
duid, err := cmd.Flags().GetString("uid")
if err != nil {
return err
}
resolvedUID, err := resolveUID(&Client, "distro", dname, duid)
if err != nil {
return err
}
// Get distro from the API
updateDistro, err := Client.GetDistro(dname, false, false)
updateDistro, err := Client.GetDistro(resolvedUID, false, false)
if err != nil {
return err
}
Expand All @@ -422,7 +439,7 @@ func NewDistroEditCmd() (*cobra.Command, error) {
}
if updateDistro.Meta.IsDirty {
updateDistro, err = Client.GetDistro(
updateDistro.Name,
updateDistro.Uid,
updateDistro.Meta.IsFlattened,
updateDistro.Meta.IsResolved,
)
Expand All @@ -439,6 +456,7 @@ func NewDistroEditCmd() (*cobra.Command, error) {
addStringSliceFlags(distroEditCmd, distroStringSliceFlagMetadata)
addMapFlags(distroEditCmd, distroMapFlagMetadata)
distroEditCmd.Flags().Bool("in-place", false, "edit items in kopts or autoinstall without clearing the other items")
addUIDFlag(distroEditCmd, "distro")
return distroEditCmd, nil
}

Expand Down Expand Up @@ -504,15 +522,24 @@ func NewDistroRemoveCmd() (*cobra.Command, error) {
if err != nil {
return err
}
duid, err := cmd.Flags().GetString("uid")
if err != nil {
return err
}
recursiveDelete, err := cmd.Flags().GetBool("recursive")
if err != nil {
return err
}
return Client.DeleteDistroRecursive(dname, recursiveDelete)
resolvedUID, err := resolveUID(&Client, "distro", dname, duid)
if err != nil {
return err
}
return Client.DeleteDistroRecursive(resolvedUID, recursiveDelete)
},
}
distroRemoveCmd.Flags().String("name", "", "the distro name")
distroRemoveCmd.Flags().Bool("recursive", false, "also delete child objects")
addUIDFlag(distroRemoveCmd, "distro")
return distroRemoveCmd, nil
}

Expand All @@ -527,18 +554,22 @@ func NewDistroRenameCmd() (*cobra.Command, error) {
return err
}

// Get the name and newname flags
// Get the name/uid and newname flags
distroName, err := cmd.Flags().GetString("name")
if err != nil {
return err
}
distroUID, err := cmd.Flags().GetString("uid")
if err != nil {
return err
}
distroNewName, err := cmd.Flags().GetString("newname")
if err != nil {
return err
}

// Get the distro API handle
distroHandle, err := Client.GetDistroHandle(distroName)
distroHandle, err := resolveUID(&Client, "distro", distroName, distroUID)
if err != nil {
return err
}
Expand All @@ -548,7 +579,11 @@ func NewDistroRenameCmd() (*cobra.Command, error) {
return err
}
// Retrieve the renamed distro from the API
newDistro, err := Client.GetDistro(distroNewName, false, false)
newDistroHandle, err := Client.GetDistroHandle(distroNewName)
if err != nil {
return err
}
newDistro, err := Client.GetDistro(newDistroHandle, false, false)
if err != nil {
return err
}
Expand All @@ -567,15 +602,12 @@ func NewDistroRenameCmd() (*cobra.Command, error) {
addMapFlags(distroRenameCmd, distroMapFlagMetadata)
distroRenameCmd.Flags().String("newname", "", "the new distro name")
distroRenameCmd.Flags().Bool("in-place", false, "edit items in kopts or autoinstall without clearing the other items")
addUIDFlag(distroRenameCmd, "distro")
return distroRenameCmd, nil
}

func reportDistros(cmd *cobra.Command, distroNames []string) error {
for _, itemName := range distroNames {
distro, err := Client.GetDistro(itemName, false, false)
if err != nil {
return err
}
func reportDistros(cmd *cobra.Command, distros []*cobbler.Distro) error {
for _, distro := range distros {
printStructured(cmd, distro)
_, _ = fmt.Fprintln(cmd.OutOrStdout(), "")
}
Expand All @@ -597,19 +629,32 @@ func NewDistroReportCmd() (*cobra.Command, error) {
if err != nil {
return err
}
itemNames := make([]string, 0)
if name == "" {
itemNames, err = Client.ListDistroNames()
uid, err := cmd.Flags().GetString("uid")
if err != nil {
return err
}
var distros []*cobbler.Distro
if name == "" && uid == "" {
distros, err = Client.GetDistros()
if err != nil {
return err
}
} else {
itemNames = append(itemNames, name)
resolvedUID, err := resolveUID(&Client, "distro", name, uid)
if err != nil {
return err
}
distro, err := Client.GetDistro(resolvedUID, false, false)
if err != nil {
return err
}
distros = []*cobbler.Distro{distro}
}
return reportDistros(cmd, itemNames)
return reportDistros(cmd, distros)
},
}
distroReportCmd.Flags().String("name", "", "the distro name")
addUIDFlag(distroReportCmd, "distro")
return distroReportCmd, nil
}

Expand Down Expand Up @@ -638,26 +683,34 @@ func NewDistroExportCmd() *cobra.Command {
if err != nil {
return err
}
uid, err := cmd.Flags().GetString("uid")
if err != nil {
return err
}
formatOption, err := cmd.Flags().GetString("format")
if err != nil {
return err
}

itemNames := make([]string, 0)
if name == "" {
itemNames, err = Client.ListDistroNames()
var distros []*cobbler.Distro
if name == "" && uid == "" {
distros, err = Client.GetDistros()
if err != nil {
return err
}
} else {
itemNames = append(itemNames, name)
}

for _, itemName := range itemNames {
distro, err := Client.GetDistro(itemName, false, false)
resolvedUID, err := resolveUID(&Client, "distro", name, uid)
if err != nil {
return err
}
distro, err := Client.GetDistro(resolvedUID, false, false)
if err != nil {
return err
}
distros = []*cobbler.Distro{distro}
}

for _, distro := range distros {
if formatOption == "json" {
jsonDocument, err := json.Marshal(distro)
if err != nil {
Expand All @@ -679,5 +732,6 @@ func NewDistroExportCmd() *cobra.Command {
}
distroExportCmd.Flags().String("name", "", "the distro name")
distroExportCmd.Flags().String(exportStringMetadata["format"].Name, exportStringMetadata["format"].DefaultValue, exportStringMetadata["format"].Usage)
addUIDFlag(distroExportCmd, "distro")
return distroExportCmd
}
Loading
Loading