Fixing tests in review of #1568
Signed-off-by: Jonathon Anderson <janderson@ciq.com>
This commit is contained in:
@@ -103,7 +103,7 @@ func CobraRunE(cmd *cobra.Command, args []string) (err error) {
|
||||
}
|
||||
overlays := filteredNodes[0].SystemOverlay
|
||||
overlays = append(overlays, filteredNodes[0].RuntimeOverlay...)
|
||||
err = overlay.BuildOverlayIndir(filteredNodes[0], allNodes, overlays, path.Join(runDir, "nodeoverlay"))
|
||||
err = overlay.BuildOverlayIndir(filteredNodes[0], allNodes, nodeDB.Resources, overlays, path.Join(runDir, "nodeoverlay"))
|
||||
if err != nil {
|
||||
return fmt.Errorf("could not build overlay: %s", err)
|
||||
}
|
||||
|
||||
@@ -480,7 +480,7 @@ nodes:
|
||||
"PrimaryNetDev": "",
|
||||
"Disks": null,
|
||||
"FileSystems": null,
|
||||
"ResourceList": null
|
||||
"Resources": null
|
||||
}
|
||||
]
|
||||
`,
|
||||
@@ -531,7 +531,7 @@ nodes:
|
||||
"PrimaryNetDev": "",
|
||||
"Disks": null,
|
||||
"FileSystems": null,
|
||||
"ResourceList": null
|
||||
"Resources": null
|
||||
},
|
||||
{
|
||||
"Discoverable": "",
|
||||
@@ -566,7 +566,7 @@ nodes:
|
||||
"PrimaryNetDev": "",
|
||||
"Disks": null,
|
||||
"FileSystems": null,
|
||||
"ResourceList": null
|
||||
"Resources": null
|
||||
}
|
||||
]
|
||||
`,
|
||||
|
||||
@@ -57,7 +57,7 @@ func CobraRunE(cmd *cobra.Command, args []string) error {
|
||||
}
|
||||
|
||||
for _, node := range filteredNodes {
|
||||
return overlay.BuildOverlayIndir(node, allNodes, OverlayNames, OverlayDir)
|
||||
return overlay.BuildOverlayIndir(node, allNodes, nodeDB.Resources, OverlayNames, OverlayDir)
|
||||
}
|
||||
} else {
|
||||
return errors.New("must specify a node to build overlay")
|
||||
@@ -68,9 +68,9 @@ func CobraRunE(cmd *cobra.Command, args []string) error {
|
||||
defer syscall.Umask(oldMask)
|
||||
|
||||
if len(OverlayNames) > 0 {
|
||||
err = overlay.BuildSpecificOverlays(filteredNodes, allNodes, OverlayNames, Workers)
|
||||
err = overlay.BuildSpecificOverlays(filteredNodes, allNodes, nodeDB.Resources, OverlayNames, Workers)
|
||||
} else {
|
||||
err = overlay.BuildAllOverlays(filteredNodes, allNodes, Workers)
|
||||
err = overlay.BuildAllOverlays(filteredNodes, allNodes, nodeDB.Resources, Workers)
|
||||
}
|
||||
|
||||
if err != nil {
|
||||
|
||||
@@ -86,7 +86,7 @@ func CobraRunE(cmd *cobra.Command, args []string) (err error) {
|
||||
}
|
||||
}
|
||||
|
||||
return overlay.BuildSpecificOverlays(updateNodes, nodes, []string{overlayName}, Workers)
|
||||
return overlay.BuildSpecificOverlays(updateNodes, nodes, n.Resources, []string{overlayName}, Workers)
|
||||
}
|
||||
|
||||
return nil
|
||||
|
||||
@@ -62,7 +62,7 @@ func CobraRunE(cmd *cobra.Command, args []string) error {
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
tstruct, err := overlay.InitStruct(overlayName, nodeConf, allNodes)
|
||||
tstruct, err := overlay.InitStruct(overlayName, nodeConf, allNodes, nodeDB.Resources)
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
|
||||
@@ -170,7 +170,7 @@ nodes:
|
||||
"PrimaryNetDev": "",
|
||||
"Disks": null,
|
||||
"FileSystems": null,
|
||||
"ResourceList": null
|
||||
"Resources": null
|
||||
}
|
||||
}
|
||||
`,
|
||||
@@ -222,7 +222,7 @@ nodes:
|
||||
"PrimaryNetDev": "",
|
||||
"Disks": null,
|
||||
"FileSystems": null,
|
||||
"ResourceList": null
|
||||
"Resources": null
|
||||
},
|
||||
"test": {
|
||||
"Profiles": null,
|
||||
@@ -241,7 +241,7 @@ nodes:
|
||||
"PrimaryNetDev": "",
|
||||
"Disks": null,
|
||||
"FileSystems": null,
|
||||
"ResourceList": null
|
||||
"Resources": null
|
||||
}
|
||||
}
|
||||
`,
|
||||
|
||||
@@ -14,17 +14,17 @@ func CobraRunE(vars *variables) func(cmd *cobra.Command, args []string) (err err
|
||||
if err != nil {
|
||||
return fmt.Errorf("failed to load node configuration: %s", err)
|
||||
}
|
||||
if ok := nodeYml.Resource[args[0]] != nil; ok {
|
||||
if ok := nodeYml.Resources[args[0]] != nil; ok {
|
||||
return fmt.Errorf("resource %s already exists", args[0])
|
||||
}
|
||||
if nodeYml.Resource == nil {
|
||||
nodeYml.Resource = make(map[string]node.RemoteRes)
|
||||
if nodeYml.Resources == nil {
|
||||
nodeYml.Resources = make(map[string]node.Resource)
|
||||
}
|
||||
res := node.RemoteRes{}
|
||||
res := node.Resource{}
|
||||
for key, val := range vars.tags {
|
||||
res[key] = val
|
||||
}
|
||||
nodeYml.Resource[args[0]] = res
|
||||
nodeYml.Resources[args[0]] = res
|
||||
err = nodeYml.Persist()
|
||||
return err
|
||||
}
|
||||
|
||||
@@ -28,15 +28,15 @@ nodes: {}
|
||||
`,
|
||||
outDb: `nodeprofiles: {}
|
||||
nodes: {}
|
||||
resource:
|
||||
resources:
|
||||
test:
|
||||
foo: baar
|
||||
`}}
|
||||
env := testenv.New(t)
|
||||
defer env.RemoveAll(t)
|
||||
defer env.RemoveAll()
|
||||
warewulfd.SetNoDaemon()
|
||||
for _, tt := range tests {
|
||||
env.WriteFile(t, "etc/warewulf/nodes.conf", tt.inDB)
|
||||
env.WriteFile("etc/warewulf/nodes.conf", tt.inDB)
|
||||
t.Run(tt.name, func(t *testing.T) {
|
||||
baseCmd := GetCommand()
|
||||
baseCmd.SetArgs(tt.args)
|
||||
@@ -49,7 +49,7 @@ resource:
|
||||
} else {
|
||||
assert.NoError(t, err)
|
||||
assert.Equal(t, buf.String(), tt.stdout)
|
||||
content := env.ReadFile(t, "etc/warewulf/nodes.conf")
|
||||
content := env.ReadFile("etc/warewulf/nodes.conf")
|
||||
assert.YAMLEq(t, tt.outDb, content)
|
||||
}
|
||||
})
|
||||
|
||||
@@ -5,7 +5,7 @@ import (
|
||||
)
|
||||
|
||||
type variables struct {
|
||||
tags map[string]string
|
||||
tags map[string]string
|
||||
}
|
||||
|
||||
// GetRootCommand returns the root cobra.Command for the application.
|
||||
|
||||
@@ -15,10 +15,10 @@ func CobraRunE(vars *variables) func(cmd *cobra.Command, args []string) (err err
|
||||
return fmt.Errorf("failed to load node configuration: %s", err)
|
||||
}
|
||||
for _, res := range args {
|
||||
if _, ok := nodeYml.Resource[res]; !ok {
|
||||
if _, ok := nodeYml.Resources[res]; !ok {
|
||||
return fmt.Errorf("resource %s does not exist", res)
|
||||
}
|
||||
delete(nodeYml.Resource, res)
|
||||
delete(nodeYml.Resources, res)
|
||||
}
|
||||
return nodeYml.Persist()
|
||||
}
|
||||
|
||||
@@ -26,22 +26,22 @@ func Test_resource_set(t *testing.T) {
|
||||
args: []string{"test1"},
|
||||
inDB: `nodeprofiles: {}
|
||||
nodes: {}
|
||||
resource:
|
||||
resources:
|
||||
test1: {}
|
||||
test2: {}
|
||||
`,
|
||||
|
||||
outDb: `nodeprofiles: {}
|
||||
nodes: {}
|
||||
resource:
|
||||
resources:
|
||||
test2: {}
|
||||
`},
|
||||
}
|
||||
env := testenv.New(t)
|
||||
defer env.RemoveAll(t)
|
||||
defer env.RemoveAll()
|
||||
warewulfd.SetNoDaemon()
|
||||
for _, tt := range tests {
|
||||
env.WriteFile(t, "etc/warewulf/nodes.conf", tt.inDB)
|
||||
env.WriteFile("etc/warewulf/nodes.conf", tt.inDB)
|
||||
t.Run(tt.name, func(t *testing.T) {
|
||||
baseCmd := GetCommand()
|
||||
baseCmd.SetArgs(tt.args)
|
||||
@@ -53,8 +53,8 @@ resource:
|
||||
assert.Error(t, err)
|
||||
} else {
|
||||
assert.NoError(t, err)
|
||||
assert.Equal(t, buf.String(), tt.stdout)
|
||||
content := env.ReadFile(t, "etc/warewulf/nodes.conf")
|
||||
assert.Equal(t, tt.stdout, buf.String())
|
||||
content := env.ReadFile("etc/warewulf/nodes.conf")
|
||||
assert.YAMLEq(t, tt.outDb, content)
|
||||
}
|
||||
})
|
||||
|
||||
@@ -28,7 +28,7 @@ test2
|
||||
`,
|
||||
inDB: `nodeprofiles: {}
|
||||
nodes: {}
|
||||
resource:
|
||||
resources:
|
||||
test1: {}
|
||||
test2: {}
|
||||
`,
|
||||
@@ -43,17 +43,17 @@ test foo baar
|
||||
`,
|
||||
inDB: `nodeprofiles: {}
|
||||
nodes: {}
|
||||
resource:
|
||||
resources:
|
||||
test:
|
||||
foo: baar
|
||||
`,
|
||||
},
|
||||
}
|
||||
env := testenv.New(t)
|
||||
defer env.RemoveAll(t)
|
||||
defer env.RemoveAll()
|
||||
warewulfd.SetNoDaemon()
|
||||
for _, tt := range tests {
|
||||
env.WriteFile(t, "etc/warewulf/nodes.conf", tt.inDB)
|
||||
env.WriteFile("etc/warewulf/nodes.conf", tt.inDB)
|
||||
t.Run(tt.name, func(t *testing.T) {
|
||||
baseCmd := GetCommand()
|
||||
baseCmd.SetArgs(tt.args)
|
||||
@@ -66,7 +66,7 @@ resource:
|
||||
assert.Error(t, err)
|
||||
} else {
|
||||
assert.NoError(t, err)
|
||||
assert.Equal(t, buf.String(), tt.stdout)
|
||||
assert.Equal(t, tt.stdout, buf.String())
|
||||
}
|
||||
})
|
||||
|
||||
|
||||
@@ -14,11 +14,11 @@ func CobraRunE(vars *variables) func(cmd *cobra.Command, args []string) (err err
|
||||
if err != nil {
|
||||
return fmt.Errorf("failed to load node configuration: %s", err)
|
||||
}
|
||||
if ok := nodeYml.Resource[args[0]] != nil; ok {
|
||||
if nodeYml.Resource == nil {
|
||||
nodeYml.Resource = make(map[string]node.RemoteRes)
|
||||
if ok := nodeYml.Resources[args[0]] != nil; ok {
|
||||
if nodeYml.Resources == nil {
|
||||
nodeYml.Resources = make(map[string]node.Resource)
|
||||
}
|
||||
res := nodeYml.Resource[args[0]]
|
||||
res := nodeYml.Resources[args[0]]
|
||||
for key, val := range vars.tags {
|
||||
res[key] = val
|
||||
}
|
||||
|
||||
@@ -26,13 +26,13 @@ func Test_resource_set(t *testing.T) {
|
||||
stdout: "",
|
||||
inDB: `nodeprofiles: {}
|
||||
nodes: {}
|
||||
resource:
|
||||
resources:
|
||||
test:
|
||||
foo: baar
|
||||
`,
|
||||
outDb: `nodeprofiles: {}
|
||||
nodes: {}
|
||||
resource:
|
||||
resources:
|
||||
test:
|
||||
foo: test
|
||||
`},
|
||||
@@ -43,17 +43,17 @@ resource:
|
||||
stdout: "",
|
||||
inDB: `nodeprofiles: {}
|
||||
nodes: {}
|
||||
resource:
|
||||
resources:
|
||||
test:
|
||||
foo: baar
|
||||
`,
|
||||
outDb: ``},
|
||||
}
|
||||
env := testenv.New(t)
|
||||
defer env.RemoveAll(t)
|
||||
defer env.RemoveAll()
|
||||
warewulfd.SetNoDaemon()
|
||||
for _, tt := range tests {
|
||||
env.WriteFile(t, "etc/warewulf/nodes.conf", tt.inDB)
|
||||
env.WriteFile("etc/warewulf/nodes.conf", tt.inDB)
|
||||
t.Run(tt.name, func(t *testing.T) {
|
||||
baseCmd := GetCommand()
|
||||
baseCmd.SetArgs(tt.args)
|
||||
@@ -65,8 +65,8 @@ resource:
|
||||
assert.Error(t, err)
|
||||
} else {
|
||||
assert.NoError(t, err)
|
||||
assert.Equal(t, buf.String(), tt.stdout)
|
||||
content := env.ReadFile(t, "etc/warewulf/nodes.conf")
|
||||
assert.Equal(t, tt.stdout, buf.String())
|
||||
content := env.ReadFile("etc/warewulf/nodes.conf")
|
||||
assert.YAMLEq(t, tt.outDb, content)
|
||||
}
|
||||
})
|
||||
|
||||
@@ -31,7 +31,7 @@ func Hostfile() (err error) {
|
||||
}
|
||||
|
||||
hostname, _ := os.Hostname()
|
||||
tstruct, err := overlay.InitStruct(overlay_.Name(), node.NewNode(hostname), allNodes)
|
||||
tstruct, err := overlay.InitStruct(overlay_.Name(), node.NewNode(hostname), allNodes, nil)
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
|
||||
@@ -188,7 +188,7 @@ Return the names of all available remote resources
|
||||
*/
|
||||
func (config *NodesYaml) ListAllResources() []string {
|
||||
var resList []string
|
||||
for name := range config.Resource {
|
||||
for name := range config.Resources {
|
||||
resList = append(resList, name)
|
||||
}
|
||||
sort.Strings(resList)
|
||||
@@ -227,8 +227,8 @@ func (config *NodesYaml) FindDiscoverableNode() (Node, string, error) {
|
||||
/*
|
||||
get the given resource
|
||||
*/
|
||||
func (config *NodesYaml) GetResource(id string) (res RemoteRes, err error) {
|
||||
if found, ok := config.Resource[id]; ok {
|
||||
func (config *NodesYaml) GetResource(id string) (res Resource, err error) {
|
||||
if found, ok := config.Resources[id]; ok {
|
||||
return found, nil
|
||||
}
|
||||
return res, ErrNotFound
|
||||
|
||||
@@ -22,7 +22,7 @@ nodes:
|
||||
network devices:
|
||||
net0:
|
||||
device: eth0
|
||||
resource_list:
|
||||
resources:
|
||||
- NFSHOME
|
||||
test_node2:
|
||||
primary network: net1
|
||||
@@ -53,7 +53,7 @@ nodes:
|
||||
network devices:
|
||||
override:
|
||||
device: ib1
|
||||
resource:
|
||||
resources:
|
||||
NFSHOME:
|
||||
mountpoint: /home
|
||||
`
|
||||
@@ -123,8 +123,8 @@ func Test_Primary_Network(t *testing.T) {
|
||||
assert.Equal(t, "profile", test_node6.NetDevs["override"].Type)
|
||||
})
|
||||
t.Run("resource is defined", func(t *testing.T) {
|
||||
assert.Contains(t, test_node1.ResourceList, "NFSHOME")
|
||||
res, err := c.GetResource(test_node1.ResourceList[0])
|
||||
assert.Contains(t, test_node1.Resources, "NFSHOME")
|
||||
res, err := c.GetResource(test_node1.Resources[0])
|
||||
assert.NoError(t, err)
|
||||
assert.Contains(t, res, "mountpoint")
|
||||
})
|
||||
|
||||
@@ -15,9 +15,9 @@ const undef string = "UNDEF"
|
||||
Structure of which goes to disk
|
||||
*/
|
||||
type NodesYaml struct {
|
||||
NodeProfiles map[string]*Profile
|
||||
Nodes map[string]*Node
|
||||
Resource map[string]RemoteRes `yaml:"resource,omitempty"`
|
||||
NodeProfiles map[string]*Profile `yaml:"nodeprofiles"`
|
||||
Nodes map[string]*Node `yaml:"nodes"`
|
||||
Resources map[string]Resource `yaml:"resources,omitempty"`
|
||||
}
|
||||
|
||||
/*
|
||||
@@ -54,7 +54,7 @@ type Profile struct {
|
||||
PrimaryNetDev string `yaml:"primary network,omitempty" lopt:"primarynet" sopt:"p" comment:"Set the primary network interface"`
|
||||
Disks map[string]*Disk `yaml:"disks,omitempty"`
|
||||
FileSystems map[string]*FileSystem `yaml:"filesystems,omitempty"`
|
||||
ResourceList []string `yaml:"resource_list,omitempty" lopt:"resources" comment:"Set the resources available to the node or profile"`
|
||||
Resources []string `yaml:"resources,omitempty" lopt:"resources" comment:"Set the resources available to the node or profile"`
|
||||
}
|
||||
|
||||
type IpmiConf struct {
|
||||
@@ -127,13 +127,4 @@ type FileSystem struct {
|
||||
MountOptions string `yaml:"mount_options,omitempty" comment:"any special options to be passed to the mount command"`
|
||||
}
|
||||
|
||||
/*
|
||||
Definition of any remote. Can be a nfs share or other FS types
|
||||
*/
|
||||
|
||||
type RemoteRes map[string]string
|
||||
|
||||
// always return so that the resource isn't marshalled
|
||||
// func (res RemoteRes) IsZero() bool {
|
||||
// return true
|
||||
// }
|
||||
type Resource map[string]string
|
||||
|
||||
@@ -142,6 +142,7 @@ func Test_listFields(t *testing.T) {
|
||||
"NetDevs[default].Tags[nettag]",
|
||||
"Tags[tag]",
|
||||
"PrimaryNetDev",
|
||||
"Resources",
|
||||
},
|
||||
},
|
||||
"profile": {
|
||||
@@ -192,6 +193,7 @@ func Test_listFields(t *testing.T) {
|
||||
"NetDevs[default].Tags[nettag]",
|
||||
"Tags[tag]",
|
||||
"PrimaryNetDev",
|
||||
"Resources",
|
||||
},
|
||||
},
|
||||
}
|
||||
|
||||
@@ -37,7 +37,7 @@ type TemplateStruct struct {
|
||||
Tftp warewulfconf.TFTPConf
|
||||
Paths warewulfconf.BuildConfig
|
||||
AllNodes []node.Node
|
||||
Resource map[string]node.RemoteRes
|
||||
Resources map[string]node.Resource
|
||||
node.Node
|
||||
// backward compatiblity
|
||||
Container string
|
||||
@@ -47,7 +47,7 @@ type TemplateStruct struct {
|
||||
/*
|
||||
Initialize an TemplateStruct with the given node.NodeInfo
|
||||
*/
|
||||
func InitStruct(overlayName string, nodeData node.Node, allNodes []node.Node) (TemplateStruct, error) {
|
||||
func InitStruct(overlayName string, nodeData node.Node, allNodes []node.Node, resources map[string]node.Resource) (TemplateStruct, error) {
|
||||
var tstruct TemplateStruct
|
||||
tstruct.Overlay = overlayName
|
||||
hostname, _ := os.Hostname()
|
||||
@@ -82,7 +82,7 @@ func InitStruct(overlayName string, nodeData node.Node, allNodes []node.Node) (T
|
||||
tstruct.BuildTime = dt.Format("01-02-2006 15:04:05 MST")
|
||||
tstruct.BuildTimeUnix = strconv.FormatInt(dt.Unix(), 10)
|
||||
// tstruct.Node.Tags = map[string]string{}
|
||||
tstruct.Resource = nodeDB.Resource
|
||||
tstruct.Resources = resources
|
||||
var buf bytes.Buffer
|
||||
enc := gob.NewEncoder(&buf)
|
||||
dec := gob.NewDecoder(&buf)
|
||||
|
||||
@@ -101,7 +101,7 @@ func (this Overlay) IsDistributionOverlay() bool {
|
||||
return path.Dir(this.Path()) == config.Get().Paths.DistributionOverlaydir()
|
||||
}
|
||||
|
||||
func BuildAllOverlays(nodes []node.Node, allNodes []node.Node, workerCount int) error {
|
||||
func BuildAllOverlays(nodes []node.Node, allNodes []node.Node, resources map[string]node.Resource, workerCount int) error {
|
||||
nodeChan := make(chan node.Node, len(nodes))
|
||||
errChan := make(chan error, len(nodes)*2)
|
||||
|
||||
@@ -109,12 +109,12 @@ func BuildAllOverlays(nodes []node.Node, allNodes []node.Node, workerCount int)
|
||||
worker := func() {
|
||||
for n := range nodeChan {
|
||||
wwlog.Info("Building system overlays for %s: [%s]", n.Id(), strings.Join(n.SystemOverlay, ", "))
|
||||
if err := BuildOverlay(n, allNodes, "system", n.SystemOverlay); err != nil {
|
||||
if err := BuildOverlay(n, allNodes, resources, "system", n.SystemOverlay); err != nil {
|
||||
errChan <- fmt.Errorf("could not build system overlays %v for node %s: %w", n.SystemOverlay, n.Id(), err)
|
||||
}
|
||||
|
||||
wwlog.Info("Building runtime overlays for %s: [%s]", n.Id(), strings.Join(n.RuntimeOverlay, ", "))
|
||||
if err := BuildOverlay(n, allNodes, "runtime", n.RuntimeOverlay); err != nil {
|
||||
if err := BuildOverlay(n, allNodes, resources, "runtime", n.RuntimeOverlay); err != nil {
|
||||
errChan <- fmt.Errorf("could not build runtime overlays %v for node %s: %w", n.RuntimeOverlay, n.Id(), err)
|
||||
}
|
||||
}
|
||||
@@ -139,7 +139,7 @@ func BuildAllOverlays(nodes []node.Node, allNodes []node.Node, workerCount int)
|
||||
return nil
|
||||
}
|
||||
|
||||
func BuildSpecificOverlays(nodes []node.Node, allNodes []node.Node, overlayNames []string, workerCount int) error {
|
||||
func BuildSpecificOverlays(nodes []node.Node, allNodes []node.Node, resources map[string]node.Resource, overlayNames []string, workerCount int) error {
|
||||
nodeChan := make(chan node.Node, len(nodes))
|
||||
errChan := make(chan error, len(nodes))
|
||||
|
||||
@@ -148,7 +148,7 @@ func BuildSpecificOverlays(nodes []node.Node, allNodes []node.Node, overlayNames
|
||||
for n := range nodeChan {
|
||||
wwlog.Info("Building overlay for %s: %v", n, overlayNames)
|
||||
for _, overlayName := range overlayNames {
|
||||
err := BuildOverlay(n, allNodes, "", []string{overlayName})
|
||||
err := BuildOverlay(n, allNodes, resources, "", []string{overlayName})
|
||||
if err != nil {
|
||||
errChan <- fmt.Errorf("could not build overlay %s for node %s: %w", overlayName, n.Id(), err)
|
||||
}
|
||||
@@ -199,7 +199,7 @@ func BuildHostOverlay() error {
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
return BuildOverlayIndir(hostData, allNodes, []string{"host"}, "/")
|
||||
return BuildOverlayIndir(hostData, allNodes, registry.Resources, []string{"host"}, "/")
|
||||
}
|
||||
|
||||
/*
|
||||
@@ -229,7 +229,7 @@ func FindOverlays() (overlayList []string, err error) {
|
||||
/*
|
||||
Build the given overlays for a node and create a Image for them
|
||||
*/
|
||||
func BuildOverlay(nodeConf node.Node, allNodes []node.Node, context string, overlayNames []string) error {
|
||||
func BuildOverlay(nodeConf node.Node, allNodes []node.Node, resources map[string]node.Resource, context string, overlayNames []string) error {
|
||||
if len(overlayNames) == 0 && context == "" {
|
||||
return nil
|
||||
}
|
||||
@@ -254,7 +254,7 @@ func BuildOverlay(nodeConf node.Node, allNodes []node.Node, context string, over
|
||||
|
||||
wwlog.Debug("Created temporary directory for %s: %s", name, buildDir)
|
||||
|
||||
err = BuildOverlayIndir(nodeConf, allNodes, overlayNames, buildDir)
|
||||
err = BuildOverlayIndir(nodeConf, allNodes, resources, overlayNames, buildDir)
|
||||
if err != nil {
|
||||
return fmt.Errorf("failed to generate files for %s: %w", name, err)
|
||||
}
|
||||
@@ -283,7 +283,7 @@ func init() {
|
||||
}
|
||||
|
||||
// Build the given overlays for a node in the given directory.
|
||||
func BuildOverlayIndir(nodeData node.Node, allNodes []node.Node, overlayNames []string, outputDir string) error {
|
||||
func BuildOverlayIndir(nodeData node.Node, allNodes []node.Node, resources map[string]node.Resource, overlayNames []string, outputDir string) error {
|
||||
if len(overlayNames) == 0 {
|
||||
return nil
|
||||
}
|
||||
@@ -332,7 +332,7 @@ func BuildOverlayIndir(nodeData node.Node, allNodes []node.Node, overlayNames []
|
||||
} else if filepath.Ext(walkPath) == ".ww" {
|
||||
originalOutputPath := outputPath
|
||||
outputPath := strings.TrimSuffix(outputPath, ".ww")
|
||||
tstruct, err := InitStruct(overlayName, nodeData, allNodes)
|
||||
tstruct, err := InitStruct(overlayName, nodeData, allNodes, resources)
|
||||
if err != nil {
|
||||
return fmt.Errorf("failed to initial data for %s: %w", nodeData.Id(), err)
|
||||
}
|
||||
|
||||
@@ -229,7 +229,7 @@ T3
|
||||
|
||||
env.MkdirAll(tt.outputDir)
|
||||
|
||||
assert.NoError(t, BuildOverlayIndir(tt.node, []node.Node{tt.node}, tt.overlays, env.GetPath(tt.outputDir)))
|
||||
assert.NoError(t, BuildOverlayIndir(tt.node, []node.Node{tt.node}, nil, tt.overlays, env.GetPath(tt.outputDir)))
|
||||
dirFiles := tt.outputDirs
|
||||
for outputFile, _ := range tt.outputFiles {
|
||||
dirFiles = append(dirFiles, outputFile)
|
||||
@@ -400,7 +400,7 @@ func Test_BuildOverlay(t *testing.T) {
|
||||
for _, tt := range tests {
|
||||
nodeInfo := node.NewNode(tt.nodeName)
|
||||
t.Run(tt.description, func(t *testing.T) {
|
||||
err := BuildOverlay(nodeInfo, []node.Node{nodeInfo}, tt.context, tt.overlays)
|
||||
err := BuildOverlay(nodeInfo, []node.Node{nodeInfo}, nil, tt.context, tt.overlays)
|
||||
assert.NoError(t, err)
|
||||
if tt.image != "" {
|
||||
image := env.GetPath(path.Join("srv/warewulf/overlays", tt.image))
|
||||
@@ -523,7 +523,7 @@ func Test_BuildAllOverlays(t *testing.T) {
|
||||
}
|
||||
nodes = append(nodes, nodeInfo)
|
||||
}
|
||||
err := BuildAllOverlays(nodes, nodes, runtime.NumCPU())
|
||||
err := BuildAllOverlays(nodes, nodes, nil, runtime.NumCPU())
|
||||
assert.NoError(t, err)
|
||||
if tt.createdOverlays == nil {
|
||||
dirName := path.Join(provisionDir, "overlays")
|
||||
@@ -615,7 +615,7 @@ func Test_BuildSpecificOverlays(t *testing.T) {
|
||||
nodeInfo := node.NewNode(nodeName)
|
||||
nodes = append(nodes, nodeInfo)
|
||||
}
|
||||
err := BuildSpecificOverlays(nodes, nodes, tt.overlays, runtime.NumCPU())
|
||||
err := BuildSpecificOverlays(nodes, nodes, nil, tt.overlays, runtime.NumCPU())
|
||||
if !tt.succeed {
|
||||
assert.Error(t, err)
|
||||
} else {
|
||||
|
||||
@@ -72,9 +72,9 @@ func getOverlayFile(n node.Node, context string, stage_overlays []string, autobu
|
||||
return "", err
|
||||
}
|
||||
if len(stage_overlays) > 0 {
|
||||
err = overlay.BuildSpecificOverlays([]node.Node{n}, allNodes, stage_overlays, 1)
|
||||
err = overlay.BuildSpecificOverlays([]node.Node{n}, allNodes, registry.Resources, stage_overlays, 1)
|
||||
} else {
|
||||
err = overlay.BuildAllOverlays([]node.Node{n}, allNodes, 1)
|
||||
err = overlay.BuildAllOverlays([]node.Node{n}, allNodes, registry.Resources, 1)
|
||||
}
|
||||
if err != nil {
|
||||
wwlog.Error("Failed to build overlay: %s, %s, %s\n%s",
|
||||
|
||||
Reference in New Issue
Block a user