fix wwctl profile set for disk/fs/part
Signed-off-by: Jonathon Anderson <janderson@ciq.com>
This commit is contained in:
committed by
Jonathon Anderson
parent
bb323c8878
commit
e72368cd26
@@ -14,6 +14,7 @@ The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/).
|
||||
|
||||
- Updated 70-persistent-net.rules.ww to use `(lower $netdev.Type)` for case-insensitive comparison of "infiniband".
|
||||
- Fixed a regression in SELinux support by restoring the `/run` mount during wwinit. #1910
|
||||
- Fixed `wwctl profile set` for disks, partitions and file systems. #1883
|
||||
|
||||
### Changed
|
||||
|
||||
|
||||
@@ -24,26 +24,26 @@ func CobraRunE(vars *variables) func(cmd *cobra.Command, args []string) (err err
|
||||
vars.profileConf.NetDevs[vars.profileAdd.Net].Tags = vars.profileAdd.NetTagsAdd
|
||||
}
|
||||
delete(vars.profileConf.NetDevs, "UNDEF")
|
||||
if vars.fsName != "" {
|
||||
if !strings.HasPrefix(vars.fsName, "/dev") {
|
||||
if vars.fsName == vars.partName {
|
||||
vars.fsName = "/dev/disk/by-partlabel/" + vars.partName
|
||||
if vars.profileAdd.FsName != "" {
|
||||
if !strings.HasPrefix(vars.profileAdd.FsName, "/dev") {
|
||||
if vars.profileAdd.FsName == vars.profileAdd.PartName {
|
||||
vars.profileAdd.FsName = "/dev/disk/by-partlabel/" + vars.profileAdd.PartName
|
||||
} else {
|
||||
return fmt.Errorf("filesystems need to have a underlying blockdev")
|
||||
}
|
||||
}
|
||||
fs := *vars.profileConf.FileSystems["UNDEF"]
|
||||
vars.profileConf.FileSystems[vars.fsName] = &fs
|
||||
vars.profileConf.FileSystems[vars.profileAdd.FsName] = &fs
|
||||
}
|
||||
delete(vars.profileConf.FileSystems, "UNDEF")
|
||||
if vars.diskName != "" && vars.partName != "" {
|
||||
if vars.profileAdd.DiskName != "" && vars.profileAdd.PartName != "" {
|
||||
prt := *vars.profileConf.Disks["UNDEF"].Partitions["UNDEF"]
|
||||
vars.profileConf.Disks["UNDEF"].Partitions[vars.partName] = &prt
|
||||
vars.profileConf.Disks["UNDEF"].Partitions[vars.profileAdd.PartName] = &prt
|
||||
delete(vars.profileConf.Disks["UNDEF"].Partitions, "UNDEF")
|
||||
dsk := *vars.profileConf.Disks["UNDEF"]
|
||||
vars.profileConf.Disks[vars.diskName] = &dsk
|
||||
vars.profileConf.Disks[vars.profileAdd.DiskName] = &dsk
|
||||
}
|
||||
if (vars.diskName != "") != (vars.partName != "") {
|
||||
if (vars.profileAdd.DiskName != "") != (vars.profileAdd.PartName != "") {
|
||||
return fmt.Errorf("partition and disk must be specified")
|
||||
}
|
||||
delete(vars.profileConf.Disks, "UNDEF")
|
||||
@@ -55,10 +55,10 @@ func CobraRunE(vars *variables) func(cmd *cobra.Command, args []string) (err err
|
||||
wwlog.Debug("sending following values: %s", string(buffer))
|
||||
set := wwapiv1.ConfSetParameter{
|
||||
NodeConfYaml: string(buffer[:]),
|
||||
NetdevDelete: vars.setNetDevDel,
|
||||
PartitionDelete: vars.setPartDel,
|
||||
DiskDelete: vars.setDiskDel,
|
||||
FilesystemDelete: vars.setFsDel,
|
||||
NetdevDelete: vars.profileDel.NetDel,
|
||||
PartitionDelete: vars.profileDel.PartDel,
|
||||
DiskDelete: vars.profileDel.DiskDel,
|
||||
FilesystemDelete: vars.profileDel.FsDel,
|
||||
TagAdd: vars.profileAdd.TagsAdd,
|
||||
TagDel: vars.profileDel.TagsDel,
|
||||
NetTagAdd: vars.profileAdd.NetTagsAdd,
|
||||
|
||||
@@ -104,6 +104,66 @@ nodeprofiles:
|
||||
default:
|
||||
tags:
|
||||
mytag: 0.0.0.0
|
||||
nodes: {}`,
|
||||
},
|
||||
"set fs,part and disk": {
|
||||
args: []string{"--fsname=var", "--fspath=/var", "--fsformat=btrfs", "--partname=var", "--partnumber=1", "--diskname=/dev/vda", "default"},
|
||||
inDB: `
|
||||
nodeprofiles:
|
||||
default: {}
|
||||
nodes: {}`,
|
||||
outDb: `
|
||||
nodeprofiles:
|
||||
default:
|
||||
disks:
|
||||
/dev/vda:
|
||||
partitions:
|
||||
var:
|
||||
number: "1"
|
||||
filesystems:
|
||||
/dev/disk/by-partlabel/var:
|
||||
format: btrfs
|
||||
path: /var
|
||||
nodes: {}`,
|
||||
},
|
||||
"single delete not existing fs": {
|
||||
args: []string{"--fsdel=foo", "default"},
|
||||
wantErr: true,
|
||||
inDB: `
|
||||
nodeprofiles:
|
||||
default: {}
|
||||
nodes: {} `,
|
||||
outDb: `
|
||||
nodeprofiles:
|
||||
default: {}
|
||||
nodes: {}`,
|
||||
},
|
||||
|
||||
"single node delete existing partition": {
|
||||
args: []string{"--partdel=var", "default"},
|
||||
wantErr: false,
|
||||
inDB: `
|
||||
nodeprofiles:
|
||||
default:
|
||||
disks:
|
||||
/dev/vda:
|
||||
partitions:
|
||||
var:
|
||||
number: "1"
|
||||
path: /var
|
||||
filesystems:
|
||||
/dev/disk/by-partlabel/var:
|
||||
format: btrfs
|
||||
path: /var
|
||||
nodes: {}
|
||||
`,
|
||||
outDb: `
|
||||
nodeprofiles:
|
||||
default:
|
||||
filesystems:
|
||||
/dev/disk/by-partlabel/var:
|
||||
format: btrfs
|
||||
path: /var
|
||||
nodes: {}`,
|
||||
},
|
||||
}
|
||||
|
||||
@@ -8,19 +8,12 @@ import (
|
||||
)
|
||||
|
||||
type variables struct {
|
||||
setNetDevDel string
|
||||
setDiskDel string
|
||||
setPartDel string
|
||||
setFsDel string
|
||||
setNodeAll bool
|
||||
setYes bool
|
||||
setForce bool
|
||||
partName string
|
||||
diskName string
|
||||
fsName string
|
||||
profileConf node.Profile
|
||||
profileDel node.NodeConfDel
|
||||
profileAdd node.NodeConfAdd
|
||||
setNodeAll bool
|
||||
setYes bool
|
||||
setForce bool
|
||||
profileConf node.Profile
|
||||
profileDel node.NodeConfDel
|
||||
profileAdd node.NodeConfAdd
|
||||
}
|
||||
|
||||
func GetCommand() *cobra.Command {
|
||||
|
||||
Reference in New Issue
Block a user