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
12 changes: 12 additions & 0 deletions .github/workflows/lint.yml
Original file line number Diff line number Diff line change
Expand Up @@ -43,3 +43,15 @@ jobs:
uses: golangci/golangci-lint-action@ba0d7d2ec06a0ea1cb5fa41b2e4a3ab91d21278a # v9.3.0
with:
version: v2.9.0
commit-lint:
runs-on: ubuntu-latest
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
steps:
- name: Check out repository
# https://github.com/actions/checkout
uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1
with:
fetch-depth: 0
- name: Commitlint
uses: wagoid/commitlint-github-action@b948419dd99f3fd78a6548d48f94e3df7f6bf3ed # v6.2.1
8 changes: 4 additions & 4 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:
- 2f0ff03f17ae957cac65d9ef033a98e8d597145a # v4.0.0a4
- v4.0.0b1
fail-fast: false
steps:
- name: Check out code into the Go module directory
Expand All @@ -36,9 +36,9 @@ jobs:
- name: Get dependencies
run: |
go mod download
- name: Replace git version hash
- name: Replace Cobbler image tag
run: |
sed -i "s/cobbler_commit=.*/cobbler_commit=${{ matrix.cobbler_version }}/" testing/start.sh
sed -i "s/cobbler_image_tag=.*/cobbler_image_tag=${{ matrix.cobbler_version }}/" testing/start.sh
- name: Restore OS ISO
id: cache-iso-restore
# https://github.com/actions/cache
Expand All @@ -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 == 'df356046f3cf27be62a61001b982d5983800cfd9'
if: matrix.cobbler_version == 'v4.0.0b1'
# https://github.com/actions/upload-artifact
uses: actions/upload-artifact@ea165f8d65b6e75b540449e92b4886f43607fa02 # v4.6.2
with:
Expand Down
2 changes: 1 addition & 1 deletion .pre-commit-config.yaml
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
# -*- coding: utf-8 -*-
# vim: ft=yaml
---
default_stages: [commit]
default_stages: [pre-commit]
repos:
- repo: https://github.com/alessandrojcm/commitlint-pre-commit-hook
rev: v9.26.0
Expand Down
2 changes: 1 addition & 1 deletion Makefile
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
BINARY_NAME=cobbler
EXECUTOR?=docker
COBBLER_SERVER_URL=http://localhost:8081/cobbler_api
COBBLER_SERVER_URL=http://localhost:25151/
TEST?=$$(go list ./... |grep -v 'vendor')
VERSION=0.0.1

Expand Down
7 changes: 7 additions & 0 deletions cmd/distro.go
Original file line number Diff line number Diff line change
Expand Up @@ -211,6 +211,13 @@ func updateDistroFromFlags(cmd *cobra.Command, distro *cobbler.Distro) error {
return
}
distro.RedhatManagementKey = distroNewRedhatManagementKey
case "source-tree-path":
var distroNewSourceTreePath string
distroNewSourceTreePath, err = cmd.Flags().GetString("source-tree-path")
if err != nil {
return
}
distro.SourceTreePath = distroNewSourceTreePath
case "template-files":
var newTemplateFiles map[string]string
newTemplateFiles, err = cmd.Flags().GetStringToString("template-files")
Expand Down
56 changes: 56 additions & 0 deletions cmd/distro_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -183,6 +183,62 @@ func Test_DistroEditCmd(t *testing.T) {
}
}

func Test_DistroEditCmd_SourceTreePath(t *testing.T) {
type args struct {
command []string
}
tests := []struct {
name string
args args
want string
wantErr bool
}{
{
// The path must be an absolute path that exists on the server; /extracted_iso_image
// is bind-mounted into the test Cobbler container by testing/compose.yml.
name: "plain",
args: args{command: []string{"--config", "../testing/.cobbler.yaml", "distro", "edit", "--name", "test-distro-edit-source-tree-path", "--source-tree-path", "/extracted_iso_image"}},
want: "Event ID:",
wantErr: false,
},
}
for _, tt := range tests {
t.Run(tt.name, func(t *testing.T) {
// Cleanup
var err error
defer func() {
// Client is initialized since this is the cleanup
cleanupErr := removeDistro(Client, tt.args.command[5])
cobbler.FailOnError(t, cleanupErr)
}()
// Arrange
setupClient(t)
_, err = createDistro(Client, tt.args.command[5])
cobbler.FailOnError(t, err)
cobra.OnInitialize(initConfig, setupLogger)
rootCmd := NewRootCmd()
rootCmd.SetArgs(tt.args.command)
stdout := bytes.NewBufferString("")
stderr := bytes.NewBufferString("")
rootCmd.SetOut(stdout)
rootCmd.SetErr(stderr)

// Act
err = rootCmd.Execute()

// Assert
cobbler.FailOnError(t, err)
FailOnNonEmptyStream(t, stderr)
FailOnNonEmptyStream(t, stdout)
updatedDistro, err := Client.GetDistro(tt.args.command[5], false, false)
cobbler.FailOnError(t, err)
if updatedDistro.SourceTreePath != "/extracted_iso_image" {
t.Fatal("distro source-tree-path update wasn't successful")
}
})
}
}

func Test_DistroFindCmd(t *testing.T) {
type args struct {
command []string
Expand Down
7 changes: 7 additions & 0 deletions cmd/image.go
Original file line number Diff line number Diff line change
Expand Up @@ -287,6 +287,13 @@ func updateImageFromFlags(cmd *cobra.Command, image *cobbler.Image) error {
return
}
image.Virt.Type = imageNewVirtType
case "virt-uefi":
var imageNewVirtUEFI bool
imageNewVirtUEFI, err = cmd.Flags().GetBool("virt-uefi")
if err != nil {
return
}
image.Virt.UEFI = imageNewVirtUEFI
}
})
return err
Expand Down
54 changes: 54 additions & 0 deletions cmd/image_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -181,6 +181,60 @@ func Test_ImageEditCmd(t *testing.T) {
}
}

func Test_ImageEditCmd_VirtUEFI(t *testing.T) {
type args struct {
command []string
}
tests := []struct {
name string
args args
want string
wantErr bool
}{
{
name: "plain",
args: args{command: []string{"--config", "../testing/.cobbler.yaml", "image", "edit", "--name", "test-image-edit-virt-uefi", "--virt-uefi=true"}},
want: "Event ID:",
wantErr: false,
},
}
for _, tt := range tests {
t.Run(tt.name, func(t *testing.T) {
// Cleanup
var err error
defer func() {
// Client is initialized since this is the cleanup
cleanupErr := removeImage(Client, tt.args.command[5])
cobbler.FailOnError(t, cleanupErr)
}()
// Arrange
setupClient(t)
_, err = createImage(Client, tt.args.command[5])
cobbler.FailOnError(t, err)
cobra.OnInitialize(initConfig, setupLogger)
rootCmd := NewRootCmd()
rootCmd.SetArgs(tt.args.command)
stdout := bytes.NewBufferString("")
stderr := bytes.NewBufferString("")
rootCmd.SetOut(stdout)
rootCmd.SetErr(stderr)

// Act
err = rootCmd.Execute()

// Assert
cobbler.FailOnError(t, err)
FailOnNonEmptyStream(t, stderr)
FailOnNonEmptyStream(t, stdout)
updatedImage, err := Client.GetImage(tt.args.command[5], false, false)
cobbler.FailOnError(t, err)
if !updatedImage.Virt.UEFI {
t.Fatal("image virt-uefi update wasn't successful")
}
})
}
}

func Test_ImageFindCmd(t *testing.T) {
type args struct {
command []string
Expand Down
20 changes: 20 additions & 0 deletions cmd/metadata.go
Original file line number Diff line number Diff line change
Expand Up @@ -78,6 +78,11 @@ var distroStringFlagMetadata = map[string]FlagMetadata[string]{
DefaultValue: "",
Usage: "RedHat management key (registration key for RHN, Spacewalk, or Satellite)",
},
"source-tree-path": {
Name: "source-tree-path",
DefaultValue: "",
Usage: "the original location of the distro's source tree on disk (for use by the dynamic_httpd manager)",
},
}

var distroStringSliceFlagMetadata = map[string]FlagMetadata[[]string]{
Expand Down Expand Up @@ -209,6 +214,11 @@ var profileBoolFlagMetadata = map[string]FlagMetadata[bool]{
DefaultValue: false,
Usage: "auto boot this VM?",
},
"virt-uefi": {
Name: "virt-uefi",
DefaultValue: false,
Usage: "boot this VM via UEFI firmware instead of legacy BIOS?",
},
}

var profileIntFlagMetadata = map[string]FlagMetadata[int]{
Expand Down Expand Up @@ -369,6 +379,11 @@ var systemBoolFlagMetadata = map[string]FlagMetadata[bool]{
DefaultValue: false,
Usage: "use PXE to build this VM?",
},
"virt-uefi": {
Name: "virt-uefi",
DefaultValue: false,
Usage: "boot this VM via UEFI firmware instead of legacy BIOS?",
},
}

var systemIntFlagMetadata = map[string]FlagMetadata[int]{
Expand Down Expand Up @@ -704,6 +719,11 @@ var imageBoolFlagMetadata = map[string]FlagMetadata[bool]{
DefaultValue: false,
Usage: "auto boot this VM?",
},
"virt-uefi": {
Name: "virt-uefi",
DefaultValue: false,
Usage: "boot this VM via UEFI firmware instead of legacy BIOS?",
},
}

var imageStringSliceFlagMetadata = map[string]FlagMetadata[[]string]{
Expand Down
7 changes: 7 additions & 0 deletions cmd/profile.go
Original file line number Diff line number Diff line change
Expand Up @@ -400,6 +400,13 @@ func updateProfileFromFlags(cmd *cobra.Command, profile *cobbler.Profile) error
return
}
profile.Virt.Type = profileNewVirtType
case "virt-uefi":
var profileNewVirtUEFI bool
profileNewVirtUEFI, err = cmd.Flags().GetBool("virt-uefi")
if err != nil {
return
}
profile.Virt.UEFI = profileNewVirtUEFI
}
})
return nil
Expand Down
54 changes: 54 additions & 0 deletions cmd/profile_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -191,6 +191,60 @@ func Test_ProfileEditCmd(t *testing.T) {
}
}

func Test_ProfileEditCmd_VirtUEFI(t *testing.T) {
type args struct {
command []string
}
tests := []struct {
name string
args args
want string
wantErr bool
}{
{
name: "plain",
args: args{command: []string{"--config", "../testing/.cobbler.yaml", "profile", "edit", "--name", "test-profile-edit-virt-uefi", "--virt-uefi=true"}},
want: "Event ID:",
wantErr: false,
},
}
for _, tt := range tests {
t.Run(tt.name, func(t *testing.T) {
// Cleanup
var err error
defer func() {
// Client is initialized since this is the cleanup
cleanupErr := removeProfile(Client, tt.args.command[5])
cobbler.FailOnError(t, cleanupErr)
}()
// Arrange
setupClient(t)
_, err = createProfile(Client, tt.args.command[5])
cobbler.FailOnError(t, err)
cobra.OnInitialize(initConfig, setupLogger)
rootCmd := NewRootCmd()
rootCmd.SetArgs(tt.args.command)
stdout := bytes.NewBufferString("")
stderr := bytes.NewBufferString("")
rootCmd.SetOut(stdout)
rootCmd.SetErr(stderr)

// Act
err = rootCmd.Execute()

// Assert
cobbler.FailOnError(t, err)
FailOnNonEmptyStream(t, stderr)
FailOnNonEmptyStream(t, stdout)
updatedProfile, err := Client.GetProfile(tt.args.command[5], false, false)
cobbler.FailOnError(t, err)
if !updatedProfile.Virt.UEFI {
t.Fatal("profile virt-uefi update wasn't successful")
}
})
}
}

func Test_ProfileFindCmd(t *testing.T) {
type args struct {
command []string
Expand Down
3 changes: 2 additions & 1 deletion cmd/signature.go
Original file line number Diff line number Diff line change
Expand Up @@ -112,7 +112,8 @@ func NewSignatureReloadCmd() *cobra.Command {
return err
}

_, _ = fmt.Fprintln(cmd.OutOrStdout(), "This functionality cannot be used in the new CLI until https://github.com/cobbler/cobbler/issues/3791 is implemented!")
eventId, _ := Client.BackgroundSignatureReload()
_, _ = fmt.Fprintf(cmd.OutOrStdout(), "Event ID: %s\n", eventId)
return nil
},
}
Expand Down
4 changes: 2 additions & 2 deletions cmd/signature_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -31,9 +31,9 @@ func Test_SignatureReloadCmd(t *testing.T) {
t.Fatal(err)
}
stdoutString := string(stdoutBytes)
if !strings.Contains(stdoutString, "This functionality cannot be used in the new CLI") {
if !strings.Contains(stdoutString, "Event ID:") {
fmt.Println(stdoutString)
t.Fatal("No missing feature message present")
t.Fatal("No Event ID present")
}
}

Expand Down
7 changes: 7 additions & 0 deletions cmd/system.go
Original file line number Diff line number Diff line change
Expand Up @@ -297,6 +297,13 @@ func updateSystemFromFlags(cmd *cobra.Command, system *cobbler.System) error {
return
}
system.Virt.Type = systemNewVirtType
case "virt-uefi":
var systemNewVirtUEFI bool
systemNewVirtUEFI, err = cmd.Flags().GetBool("virt-uefi")
if err != nil {
return
}
system.Virt.UEFI = systemNewVirtUEFI
case "gateway":
var systemNewGateway string
systemNewGateway, err = cmd.Flags().GetString("gateway")
Expand Down
Loading
Loading