Merge pull request #1542 from JasonYangShadow/issue/1503

fix issue that --nettagdel does not work properly
This commit is contained in:
Christian Goll
2024-11-11 10:06:28 +01:00
committed by GitHub
4 changed files with 147 additions and 48 deletions

View File

@@ -91,6 +91,7 @@ The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/).
- Return non-zero exit code on overlay sub-commands #1423
- Simplify passing of arguments to commands through `wwctl container exec`. #253
- Don't update IPMI if password isn't set. #638
- Fix issue that `--nettagdel` does not work properly. #1503
## v4.5.8, 2024-10-01

View File

@@ -4,7 +4,6 @@ import (
"bytes"
"os"
"strings"
"testing"
warewulfconf "github.com/warewulf/warewulf/internal/pkg/config"
@@ -157,7 +156,8 @@ nodes:
n01:
profiles:
- default
`},
`,
},
{
name: "node list profile with comment",
args: []string{"-a"},
@@ -176,7 +176,8 @@ nodes:
n01:
profiles:
- default
`},
`,
},
{
name: "node list profile with comment superseded",
args: []string{"-a"},
@@ -196,7 +197,8 @@ nodes:
comment: nodecomment
profiles:
- default
`},
`,
},
{
name: "node list profile with ipmi user",
args: []string{"-i"},
@@ -215,7 +217,8 @@ nodes:
n01:
profiles:
- default
`},
`,
},
{
name: "node list profile with ipmi user superseded",
args: []string{"-i"},
@@ -236,7 +239,8 @@ nodes:
username: user
profiles:
- default
`},
`,
},
{
name: "multiple profiles list",
args: []string{},
@@ -255,7 +259,8 @@ nodes:
profiles:
- p1
- p2
`},
`,
},
{
name: "multiple profiles list all",
args: []string{"-a"},
@@ -274,7 +279,8 @@ nodes:
profiles:
- p1
- p2
`},
`,
},
{
name: "multiple overlays list long with negation",
args: []string{"-l"},
@@ -294,7 +300,8 @@ nodes:
n01:
profiles:
- p1
`},
`,
},
{
name: "multiple overlays list long",
args: []string{"-l"},
@@ -319,7 +326,8 @@ nodes:
runtime overlay:
- nop1
- ~rop1
`},
`,
},
{
name: "multiple overlays list all with negation",
args: []string{"-a"},
@@ -346,7 +354,8 @@ nodes:
runtime overlay:
- nop1
- ~rop1
`},
`,
},
{
name: "multiple overlays list all",
args: []string{"-a"},
@@ -369,7 +378,8 @@ nodes:
- p1
runtime overlay:
- nop1
`},
`,
},
{
name: "network onboot",
args: []string{"-a"},
@@ -385,7 +395,8 @@ nodes:
network devices:
default:
onboot: true
`},
`,
},
{
name: "empty network device",
args: []string{"-a"},
@@ -399,7 +410,8 @@ nodes:
wwnode1:
network devices:
default: {}
`},
`,
},
}
conf_yml := `WW_INTERNAL: 0`
@@ -437,7 +449,6 @@ nodes:
err := baseCmd.Execute()
assert.NoError(t, err)
assert.Equal(t, strings.TrimSpace(tt.stdout), strings.TrimSpace(buf.String()))
})
}
}
@@ -496,6 +507,7 @@ nodes:
"Interface": "",
"EscapeChar": "",
"Write": "",
"Template": "",
"Tags": {}
},
"Init": "",
@@ -545,6 +557,7 @@ nodes:
"Interface": "",
"EscapeChar": "",
"Write": "",
"Template": "",
"Tags": {}
},
"Init": "",
@@ -578,6 +591,7 @@ nodes:
"Interface": "",
"EscapeChar": "",
"Write": "",
"Template": "",
"Tags": {}
},
"Init": "",

View File

@@ -66,6 +66,7 @@ func CobraRunE(vars *variables) func(cmd *cobra.Command, args []string) (err err
NetTagDel: vars.nodeDel.NetTagsDel,
IpmiTagAdd: vars.nodeAdd.IpmiTagsAdd,
IpmiTagDel: vars.nodeDel.IpmiTagsDel,
Netdev: vars.nodeAdd.Net,
AllConfs: vars.setNodeAll,
Force: vars.setForce,
ConfList: args,

View File

@@ -72,7 +72,8 @@ nodes:
n01:
profiles:
- foo
`}
`,
}
run_test(t, test)
}
@@ -94,7 +95,8 @@ nodes:
n01:
profiles:
- default
`}
`,
}
run_test(t, test)
}
@@ -114,9 +116,11 @@ nodes:
n01:
ipmi:
write: "true"
`}
`,
}
run_test(t, test)
}
func Test_Set_Ipmi_Write_Implicit(t *testing.T) {
test := test_description{
args: []string{"--ipmiwrite", "n01"},
@@ -133,7 +137,8 @@ nodes:
n01:
ipmi:
write: "true"
`}
`,
}
run_test(t, test)
}
@@ -153,9 +158,11 @@ nodes:
nodeprofiles: {}
nodes:
n01: {}
`}
`,
}
run_test(t, test)
}
func Test_Unset_Ipmi_Write_False(t *testing.T) {
test := test_description{
args: []string{"--ipmiwrite=UNDEF", "n01"},
@@ -172,9 +179,11 @@ nodes:
nodeprofiles: {}
nodes:
n01: {}
`}
`,
}
run_test(t, test)
}
func Test_Ipmi_Hidden_False(t *testing.T) {
test := test_description{
args: []string{"--ipmiwrite=false", "n01"},
@@ -201,13 +210,62 @@ nodes:
- default
ipmi:
write: "false"
`}
`,
}
run_test(t, test)
}
func Test_Add_NetTags(t *testing.T) {
test := test_description{
args: []string{"--nettagadd=dns=1.1.1.1", "n01"},
wantErr: false,
stdout: "",
inDB: `WW_INTERNAL: 43
nodeprofiles: {}
nodes:
n01: {}
`,
outDb: `WW_INTERNAL: 43
nodeprofiles: {}
nodes:
n01:
network devices:
default:
tags:
dns: 1.1.1.1
`,
}
run_test(t, test)
}
func Test_Del_NetTags(t *testing.T) {
test := test_description{
args: []string{"--netname=default", "--nettagdel=dns1,dns2", "n01"},
wantErr: false,
stdout: "",
inDB: `WW_INTERNAL: 43
nodeprofiles: {}
nodes:
n01:
network devices:
default:
tags:
dns1: 1.1.1.1
dns2: 2.2.2.2
`,
outDb: `WW_INTERNAL: 43
nodeprofiles: {}
nodes:
n01: {}
`,
}
run_test(t, test)
}
func Test_Multiple_Set_Tests(t *testing.T) {
tests := []test_description{
{name: "single node change profile",
{
name: "single node change profile",
args: []string{"--profile=foo", "n01"},
wantErr: false,
stdout: "",
@@ -227,8 +285,10 @@ nodes:
n01:
profiles:
- foo
`},
{name: "multiple nodes change profile",
`,
},
{
name: "multiple nodes change profile",
args: []string{"--profile=foo", "n0[1-2]"},
wantErr: false,
stdout: "",
@@ -254,8 +314,10 @@ nodes:
n02:
profiles:
- foo
`},
{name: "single node set ipmitag",
`,
},
{
name: "single node set ipmitag",
args: []string{"--ipmitagadd", "foo=baar", "n01"},
wantErr: false,
stdout: "",
@@ -278,8 +340,10 @@ nodes:
ipmi:
tags:
foo: baar
`},
{name: "single node delete tag",
`,
},
{
name: "single node delete tag",
args: []string{"--tagdel", "tag1", "n01"},
wantErr: false,
stdout: "",
@@ -304,8 +368,10 @@ nodes:
- default
tags:
tag2: value2
`},
{name: "single node set fs,part and disk",
`,
},
{
name: "single node set fs,part and disk",
args: []string{"--fsname=var", "--fspath=/var", "--fsformat=btrfs", "--partname=var", "--partnumber=1", "--diskname=/dev/vda", "n01"},
wantErr: false,
stdout: "",
@@ -335,8 +401,10 @@ nodes:
/dev/disk/by-partlabel/var:
format: btrfs
path: /var
`},
{name: "single delete not existing fs",
`,
},
{
name: "single delete not existing fs",
args: []string{"--fsdel=foo", "n01"},
wantErr: true,
stdout: "",
@@ -376,8 +444,10 @@ nodes:
/dev/disk/by-partlabel/var:
format: btrfs
path: /var
`},
{name: "single node delete existing fs",
`,
},
{
name: "single node delete existing fs",
args: []string{"--fsdel=/dev/disk/by-partlabel/var", "n01"},
wantErr: false,
stdout: "",
@@ -413,8 +483,10 @@ nodes:
partitions:
var:
number: "1"
`},
{name: "single node delete existing partition",
`,
},
{
name: "single node delete existing partition",
args: []string{"--partdel=var", "n01"},
wantErr: false,
stdout: "",
@@ -449,8 +521,10 @@ nodes:
/dev/disk/by-partlabel/var:
format: btrfs
path: /var
`},
{name: "single node delete existing disk",
`,
},
{
name: "single node delete existing disk",
args: []string{"--diskdel=/dev/vda", "n01"},
wantErr: false,
stdout: "",
@@ -484,8 +558,10 @@ nodes:
/dev/disk/by-partlabel/var:
format: btrfs
path: /var
`},
{name: "single node set mtu",
`,
},
{
name: "single node set mtu",
args: []string{"--mtu", "1234", "--netname=mynet", "n01"},
wantErr: false,
stdout: "",
@@ -508,8 +584,10 @@ nodes:
network devices:
mynet:
mtu: "1234"
`},
{name: "single node set ipmitag",
`,
},
{
name: "single node set ipmitag",
args: []string{"--tagadd", "nodetag1=nodevalue1", "n01"},
wantErr: false,
stdout: "",
@@ -545,8 +623,10 @@ nodes:
- p2
tags:
nodetag1: nodevalue1
`},
{name: "single node set comma in comment",
`,
},
{
name: "single node set comma in comment",
args: []string{"n01", "--comment", "This is a , comment"},
wantErr: false,
stdout: "",
@@ -560,7 +640,8 @@ nodeprofiles: {}
nodes:
n01:
comment: This is a , comment
`},
`,
},
}
conf_yml := `WW_INTERNAL: 0`
@@ -610,7 +691,8 @@ nodes:
- default
tags:
email: node
`},
`,
},
{
args: []string{"--tagadd=newtag=newval", "n01"},
wantErr: false,
@@ -640,7 +722,8 @@ nodes:
tags:
email: node
newtag: newval
`},
`,
},
}
for _, tt := range tests {