diff --git a/internal/role/p2p/k3s.go b/internal/role/p2p/k3s.go index 73f726b..e237a6f 100644 --- a/internal/role/p2p/k3s.go +++ b/internal/role/p2p/k3s.go @@ -281,11 +281,19 @@ func (k *K3sNode) Env() map[string]string { func (k *K3sNode) Args() []string { c := k.ProviderConfig() + var args []string + if k.IsWorker() { - return c.K3sAgent.Args + args = c.K3sAgent.Args + } else { + args = c.K3s.Args + // Add embedded registry flag if enabled (for non-p2p mode, server only) + if c.K3s.EmbeddedRegistry { + args = append(args, "--embedded-registry") + } } - return c.K3s.Args + return args } func (k *K3sNode) EnvFile() string { diff --git a/internal/role/p2p/k3s_test.go b/internal/role/p2p/k3s_test.go new file mode 100644 index 0000000..ebe43b5 --- /dev/null +++ b/internal/role/p2p/k3s_test.go @@ -0,0 +1,97 @@ +package role + +import ( + providerConfig "github.com/kairos-io/provider-kairos/v2/internal/provider/config" + . "github.com/onsi/ginkgo/v2" + . "github.com/onsi/gomega" +) + +var _ = Describe("K3sNode Args", func() { + Context("embedded registry flag", func() { + It("should include --embedded-registry flag for master when enabled", func() { + config := &providerConfig.Config{ + K3s: providerConfig.K3s{ + Enabled: true, + EmbeddedRegistry: true, + Args: []string{"--existing-arg"}, + }, + } + + node := &K3sNode{ + providerConfig: config, + role: "master", + } + + args := node.Args() + + Expect(args).To(ContainElement("--existing-arg")) + Expect(args).To(ContainElement("--embedded-registry")) + }) + + It("should not include --embedded-registry flag for worker when enabled", func() { + config := &providerConfig.Config{ + K3s: providerConfig.K3s{ + Enabled: true, + EmbeddedRegistry: true, + Args: []string{"--existing-arg"}, + }, + K3sAgent: providerConfig.K3s{ + Enabled: true, + Args: []string{"--worker-arg"}, + }, + } + + node := &K3sNode{ + providerConfig: config, + role: "worker", + } + + args := node.Args() + + Expect(args).To(ContainElement("--worker-arg")) + Expect(args).NotTo(ContainElement("--embedded-registry")) + }) + + It("should not include --embedded-registry flag when disabled", func() { + config := &providerConfig.Config{ + K3s: providerConfig.K3s{ + Enabled: true, + EmbeddedRegistry: false, + Args: []string{"--existing-arg"}, + }, + } + + node := &K3sNode{ + providerConfig: config, + role: "master", + } + + args := node.Args() + + Expect(args).To(ContainElement("--existing-arg")) + Expect(args).NotTo(ContainElement("--embedded-registry")) + }) + + It("should preserve existing args when embedded registry is enabled", func() { + config := &providerConfig.Config{ + K3s: providerConfig.K3s{ + Enabled: true, + EmbeddedRegistry: true, + Args: []string{"--arg1", "--arg2"}, + }, + } + + node := &K3sNode{ + providerConfig: config, + role: "master", + } + + args := node.Args() + + Expect(args).To(ContainElement("--arg1")) + Expect(args).To(ContainElement("--arg2")) + Expect(args).To(ContainElement("--embedded-registry")) + Expect(len(args)).To(Equal(3)) + }) + }) +}) diff --git a/internal/role/p2p/suite_test.go b/internal/role/p2p/suite_test.go new file mode 100644 index 0000000..0806fe7 --- /dev/null +++ b/internal/role/p2p/suite_test.go @@ -0,0 +1,13 @@ +package role + +import ( + "testing" + + . "github.com/onsi/ginkgo/v2" + . "github.com/onsi/gomega" +) + +func TestP2P(t *testing.T) { + RegisterFailHandler(Fail) + RunSpecs(t, "P2P Suite") +}