mirror of
https://github.com/siderolabs/talos.git
synced 2025-08-25 08:31:13 +02:00
This reworks a bunch of the formatting for the userdata generation to output a cleaner talos config when using IPv6 masters and `osctl config generate`. Please note that this changes the scope of concern for master indexing, keeping `osctl` blissfully unaware of the master-reference chaining. All it does is report the index of the master it is trying to generate. The generator itself handles the reference chaining. Fixes #916, fixes #917, and fixes #918 Signed-off-by: Seán C McCord <ulexus@gmail.com>
142 lines
4.1 KiB
Go
142 lines
4.1 KiB
Go
/* This Source Code Form is subject to the terms of the Mozilla Public
|
|
* License, v. 2.0. If a copy of the MPL was not distributed with this
|
|
* file, You can obtain one at http://mozilla.org/MPL/2.0/. */
|
|
|
|
package generate_test
|
|
|
|
import (
|
|
"fmt"
|
|
"net"
|
|
"testing"
|
|
|
|
"github.com/stretchr/testify/suite"
|
|
"github.com/talos-systems/talos/pkg/userdata"
|
|
"github.com/talos-systems/talos/pkg/userdata/generate"
|
|
"gopkg.in/yaml.v2"
|
|
)
|
|
|
|
var (
|
|
input *generate.Input
|
|
inputv6 *generate.Input
|
|
)
|
|
|
|
type GenerateSuite struct {
|
|
suite.Suite
|
|
}
|
|
|
|
func TestGenerateSuite(t *testing.T) {
|
|
suite.Run(t, new(GenerateSuite))
|
|
}
|
|
|
|
func (suite *GenerateSuite) SetupSuite() {
|
|
var err error
|
|
input, err = generate.NewInput("test", []string{"10.0.1.5", "10.0.1.6", "10.0.1.7"})
|
|
suite.Require().NoError(err)
|
|
|
|
inputv6, err = generate.NewInput("test", []string{"2001:db8::1", "2001:db8::2", "2001:db8::3"})
|
|
suite.Require().NoError(err)
|
|
}
|
|
|
|
// TODO: this is triggering a false positive for the dupl test, between TestGenerateControlPlaneSuccess
|
|
// nolint: dupl
|
|
func (suite *GenerateSuite) TestGenerateInitSuccess() {
|
|
input.IP = net.ParseIP("10.0.1.5")
|
|
dataString, err := generate.Userdata(generate.TypeInit, input)
|
|
suite.Require().NoError(err)
|
|
data := &userdata.UserData{}
|
|
err = yaml.Unmarshal([]byte(dataString), data)
|
|
suite.Require().NoError(err)
|
|
|
|
inputv6.IP = net.ParseIP("2001:db8::1")
|
|
dataString, err = generate.Userdata(generate.TypeInit, inputv6)
|
|
suite.Require().NoError(err)
|
|
data = &userdata.UserData{}
|
|
err = yaml.Unmarshal([]byte(dataString), data)
|
|
suite.Require().NoError(err)
|
|
}
|
|
|
|
// TODO: this is triggering a false positive for the dupl test, between TestGenerateInitSuccess
|
|
// nolint: dupl
|
|
func (suite *GenerateSuite) TestGenerateControlPlaneSuccess() {
|
|
input.IP = net.ParseIP("10.0.1.6")
|
|
dataString, err := generate.Userdata(generate.TypeControlPlane, input)
|
|
suite.Require().NoError(err)
|
|
data := &userdata.UserData{}
|
|
err = yaml.Unmarshal([]byte(dataString), data)
|
|
suite.Require().NoError(err)
|
|
|
|
inputv6.IP = net.ParseIP("2001:db8::2")
|
|
dataString, err = generate.Userdata(generate.TypeControlPlane, inputv6)
|
|
suite.Require().NoError(err)
|
|
data = &userdata.UserData{}
|
|
err = yaml.Unmarshal([]byte(dataString), data)
|
|
suite.Require().NoError(err)
|
|
}
|
|
|
|
func (suite *GenerateSuite) TestGenerateWorkerSuccess() {
|
|
dataString, err := generate.Userdata(generate.TypeJoin, input)
|
|
suite.Require().NoError(err)
|
|
data := &userdata.UserData{}
|
|
err = yaml.Unmarshal([]byte(dataString), data)
|
|
suite.Require().NoError(err)
|
|
|
|
dataString, err = generate.Userdata(generate.TypeJoin, inputv6)
|
|
suite.Require().NoError(err)
|
|
data = &userdata.UserData{}
|
|
err = yaml.Unmarshal([]byte(dataString), data)
|
|
suite.Require().NoError(err)
|
|
}
|
|
|
|
func (suite *GenerateSuite) TestGenerateTalosconfigSuccess() {
|
|
_, err := generate.Talosconfig(input)
|
|
suite.Require().NoError(err)
|
|
|
|
_, err = generate.Talosconfig(inputv6)
|
|
suite.Require().NoError(err)
|
|
}
|
|
|
|
func (suite *GenerateSuite) TestGetControlPlaneEndpoint() {
|
|
ep := input.GetControlPlaneEndpoint("6443")
|
|
suite.Require().Equal(input.MasterIPs[0]+":6443", ep)
|
|
|
|
ep = input.GetControlPlaneEndpoint("443")
|
|
suite.Require().Equal(input.MasterIPs[0]+":443", ep)
|
|
|
|
ep = inputv6.GetControlPlaneEndpoint("6443")
|
|
suite.Require().Equal(fmt.Sprintf("[%s]:6443", inputv6.MasterIPs[0]), ep)
|
|
|
|
ep = input.GetControlPlaneEndpoint("")
|
|
suite.Require().Equal(input.MasterIPs[0], ep)
|
|
|
|
ep = inputv6.GetControlPlaneEndpoint("")
|
|
suite.Require().Equal(fmt.Sprintf("[%s]", inputv6.MasterIPs[0]), ep)
|
|
|
|
inputv6.IP = net.ParseIP("2001:db8::1")
|
|
inputv6.Index = 0
|
|
suite.Require().Equal(
|
|
fmt.Sprintf("[%s]", inputv6.MasterIPs[0]),
|
|
inputv6.GetControlPlaneEndpoint(""),
|
|
)
|
|
|
|
inputv6.IP = net.ParseIP("2001:db8::2")
|
|
inputv6.Index = 1
|
|
suite.Require().Equal(
|
|
fmt.Sprintf("[%s]", inputv6.MasterIPs[0]),
|
|
inputv6.GetControlPlaneEndpoint(""),
|
|
)
|
|
|
|
inputv6.IP = net.ParseIP("2001:db8::3")
|
|
inputv6.Index = 2
|
|
suite.Require().Equal(
|
|
fmt.Sprintf("[%s]", inputv6.MasterIPs[1]),
|
|
inputv6.GetControlPlaneEndpoint(""),
|
|
)
|
|
|
|
inputv6.IP = net.ParseIP("2001:db8::d")
|
|
inputv6.Index = 0
|
|
suite.Require().Equal(
|
|
fmt.Sprintf("[%s]", inputv6.MasterIPs[0]),
|
|
inputv6.GetControlPlaneEndpoint(""),
|
|
)
|
|
}
|