patch specs with node role specific settings

This commit is contained in:
iwilltry42 2019-09-30 13:54:48 +02:00
parent 7583340d23
commit cd72e22dce
2 changed files with 36 additions and 7 deletions

View File

@ -39,8 +39,13 @@ func CreateCluster(cluster *k3d.Cluster, runtime k3drt.Runtime) error {
workerCount := 0
for _, node := range cluster.Nodes {
suffix := 0
// cluster specific settings
node.Labels = make(map[string]string)
node.Labels["cluster"] = cluster.Name
// node role specific settings
suffix := 0
if node.Role == "master" {
// name suffix
suffix = masterCount
@ -55,7 +60,7 @@ func CreateCluster(cluster *k3d.Cluster, runtime k3drt.Runtime) error {
// create node
log.Infoln("Creating node", node.Name)
if err := runtime.CreateNode(&node); err != nil {
if err := CreateNode(&node, runtime); err != nil {
log.Errorln("...failed")
}
}

View File

@ -50,15 +50,25 @@ func CreateNode(node *k3d.Node, runtime k3drt.Runtime) error {
*/
// global node configuration (applies for any node role)
node.Labels = k3d.DefaultObjectLabels
labels := make(map[string]string)
for k, v := range k3d.DefaultObjectLabels {
labels[k] = v
}
for k, v := range node.Labels {
labels[k] = v
}
node.Labels = labels
// specify options depending on node role
if node.Role == "worker" { // TODO: check here AND in CLI or only here?
node.Args = append([]string{"agent"}, node.Args...)
node.Labels["role"] = "worker"
if err := patchWorkerSpec(node); err != nil {
return err
}
} else if node.Role == "master" {
node.Args = append([]string{"server"}, node.Args...)
node.Labels["role"] = "master"
if err := patchMasterSpec(node); err != nil {
return err
}
log.Debugf("spec = %+v\n", node)
} else {
return fmt.Errorf("Unknown node role '%s'", node.Role)
}
@ -90,3 +100,17 @@ func DeleteNode(node *k3d.Node, runtimeChoice string) error {
log.Debugln("...success")
return nil
}
// patchWorkerSpec adds worker node specific settings to a node
func patchWorkerSpec(node *k3d.Node) error {
node.Args = append([]string{"agent"}, node.Args...)
node.Labels["role"] = "worker" // TODO: maybe put those in a global var DefaultWorkerNodeSpec?
return nil
}
// patchMasterSpec adds worker node specific settings to a node
func patchMasterSpec(node *k3d.Node) error {
node.Args = append([]string{"server"}, node.Args...)
node.Labels["role"] = "master" // TODO: maybe put those in a global var DefaultMasterNodeSpec?
return nil
}