Skip to content

Commit

Permalink
Centralize feature names (#604)
Browse files Browse the repository at this point in the history
Centralize feature names
  • Loading branch information
HomayoonAlimohammadi authored Aug 15, 2024
1 parent 2f39ac2 commit 1e5a99b
Show file tree
Hide file tree
Showing 20 changed files with 190 additions and 144 deletions.
10 changes: 9 additions & 1 deletion src/k8s/cmd/k8s/k8s.go
Original file line number Diff line number Diff line change
Expand Up @@ -4,11 +4,19 @@ import (
"time"

cmdutil "github.com/canonical/k8s/cmd/util"
"github.com/canonical/k8s/pkg/k8sd/features"
"github.com/spf13/cobra"
)

var (
featureList = []string{"network", "dns", "gateway", "ingress", "local-storage", "load-balancer"}
featureList = []string{
string(features.Network),
string(features.DNS),
string(features.Gateway),
string(features.Ingress),
string(features.LocalStorage),
string(features.LoadBalancer),
}

outputFormatter cmdutil.Formatter
)
Expand Down
15 changes: 8 additions & 7 deletions src/k8s/cmd/k8s/k8s_bootstrap.go
Original file line number Diff line number Diff line change
Expand Up @@ -14,6 +14,7 @@ import (
apiv1 "github.com/canonical/k8s/api/v1"
cmdutil "github.com/canonical/k8s/cmd/util"
"github.com/canonical/k8s/pkg/config"
"github.com/canonical/k8s/pkg/k8sd/features"
"github.com/canonical/k8s/pkg/utils"
"github.com/spf13/cobra"
"gopkg.in/yaml.v2"
Expand Down Expand Up @@ -185,22 +186,22 @@ func getConfigInteractively(stdin io.Reader, stdout io.Writer, stderr io.Writer)
stdin, stdout, stderr,
"Which features would you like to enable?",
featureList,
"network, dns, gateway, local-storage",
fmt.Sprintf("%s, %s, %s, %s", features.Network, features.DNS, features.Gateway, features.LocalStorage),
nil,
)
for _, component := range strings.FieldsFunc(components, func(r rune) bool { return unicode.IsSpace(r) || r == ',' }) {
switch component {
case "network":
case string(features.Network):
config.ClusterConfig.Network.Enabled = utils.Pointer(true)
case "dns":
case string(features.DNS):
config.ClusterConfig.DNS.Enabled = utils.Pointer(true)
case "ingress":
case string(features.Ingress):
config.ClusterConfig.Ingress.Enabled = utils.Pointer(true)
case "load-balancer":
case string(features.LoadBalancer):
config.ClusterConfig.LoadBalancer.Enabled = utils.Pointer(true)
case "gateway":
case string(features.Gateway):
config.ClusterConfig.Gateway.Enabled = utils.Pointer(true)
case "local-storage":
case string(features.LocalStorage):
config.ClusterConfig.LocalStorage.Enabled = utils.Pointer(true)
}
}
Expand Down
15 changes: 8 additions & 7 deletions src/k8s/cmd/k8s/k8s_disable.go
Original file line number Diff line number Diff line change
Expand Up @@ -6,6 +6,7 @@ import (
"strings"
"time"

"github.com/canonical/k8s/pkg/k8sd/features"
"github.com/canonical/k8s/pkg/utils"

api "github.com/canonical/k8s/api/v1"
Expand Down Expand Up @@ -42,31 +43,31 @@ func newDisableCmd(env cmdutil.ExecutionEnvironment) *cobra.Command {

for _, feature := range args {
switch feature {
case "network":
case string(features.Network):
config.Network = api.NetworkConfig{
Enabled: utils.Pointer(false),
}
case "dns":
case string(features.DNS):
config.DNS = api.DNSConfig{
Enabled: utils.Pointer(false),
}
case "gateway":
case string(features.Gateway):
config.Gateway = api.GatewayConfig{
Enabled: utils.Pointer(false),
}
case "ingress":
case string(features.Ingress):
config.Ingress = api.IngressConfig{
Enabled: utils.Pointer(false),
}
case "local-storage":
case string(features.LocalStorage):
config.LocalStorage = api.LocalStorageConfig{
Enabled: utils.Pointer(false),
}
case "load-balancer":
case string(features.LoadBalancer):
config.LoadBalancer = api.LoadBalancerConfig{
Enabled: utils.Pointer(false),
}
case "metrics-server":
case string(features.MetricsServer):
config.MetricsServer = api.MetricsServerConfig{
Enabled: utils.Pointer(false),
}
Expand Down
5 changes: 3 additions & 2 deletions src/k8s/cmd/k8s/k8s_disable_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -8,6 +8,7 @@ import (
"github.com/canonical/k8s/cmd/k8s"
cmdutil "github.com/canonical/k8s/cmd/util"
k8sdmock "github.com/canonical/k8s/pkg/client/k8sd/mock"
"github.com/canonical/k8s/pkg/k8sd/features"
snapmock "github.com/canonical/k8s/pkg/snap/mock"
"github.com/canonical/k8s/pkg/utils"
. "github.com/onsi/gomega"
Expand All @@ -30,7 +31,7 @@ func TestDisableCmd(t *testing.T) {
},
{
name: "one",
funcs: []string{"gateway"},
funcs: []string{string(features.Gateway)},
expectedCall: apiv1.UpdateClusterConfigRequest{
Config: apiv1.UserFacingClusterConfig{
Gateway: apiv1.GatewayConfig{Enabled: utils.Pointer(false)},
Expand All @@ -40,7 +41,7 @@ func TestDisableCmd(t *testing.T) {
},
{
name: "multiple",
funcs: []string{"load-balancer", "gateway"},
funcs: []string{string(features.LoadBalancer), string(features.Gateway)},
expectedCall: apiv1.UpdateClusterConfigRequest{
Config: apiv1.UserFacingClusterConfig{
Gateway: apiv1.GatewayConfig{Enabled: utils.Pointer(false)},
Expand Down
15 changes: 8 additions & 7 deletions src/k8s/cmd/k8s/k8s_enable.go
Original file line number Diff line number Diff line change
Expand Up @@ -6,6 +6,7 @@ import (
"strings"
"time"

"github.com/canonical/k8s/pkg/k8sd/features"
"github.com/canonical/k8s/pkg/utils"

api "github.com/canonical/k8s/api/v1"
Expand Down Expand Up @@ -42,31 +43,31 @@ func newEnableCmd(env cmdutil.ExecutionEnvironment) *cobra.Command {

for _, feature := range args {
switch feature {
case "network":
case string(features.Network):
config.Network = api.NetworkConfig{
Enabled: utils.Pointer(true),
}
case "dns":
case string(features.DNS):
config.DNS = api.DNSConfig{
Enabled: utils.Pointer(true),
}
case "gateway":
case string(features.Gateway):
config.Gateway = api.GatewayConfig{
Enabled: utils.Pointer(true),
}
case "ingress":
case string(features.Ingress):
config.Ingress = api.IngressConfig{
Enabled: utils.Pointer(true),
}
case "local-storage":
case string(features.LocalStorage):
config.LocalStorage = api.LocalStorageConfig{
Enabled: utils.Pointer(true),
}
case "load-balancer":
case string(features.LoadBalancer):
config.LoadBalancer = api.LoadBalancerConfig{
Enabled: utils.Pointer(true),
}
case "metrics-server":
case string(features.MetricsServer):
config.MetricsServer = api.MetricsServerConfig{
Enabled: utils.Pointer(true),
}
Expand Down
5 changes: 3 additions & 2 deletions src/k8s/cmd/k8s/k8s_enable_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -8,6 +8,7 @@ import (
"github.com/canonical/k8s/cmd/k8s"
cmdutil "github.com/canonical/k8s/cmd/util"
k8sdmock "github.com/canonical/k8s/pkg/client/k8sd/mock"
"github.com/canonical/k8s/pkg/k8sd/features"
snapmock "github.com/canonical/k8s/pkg/snap/mock"
"github.com/canonical/k8s/pkg/utils"
. "github.com/onsi/gomega"
Expand All @@ -30,7 +31,7 @@ func TestK8sEnableCmd(t *testing.T) {
},
{
name: "one",
funcs: []string{"gateway"},
funcs: []string{string(features.Gateway)},
expectedCall: apiv1.UpdateClusterConfigRequest{
Config: apiv1.UserFacingClusterConfig{
Gateway: apiv1.GatewayConfig{Enabled: utils.Pointer(true)},
Expand All @@ -40,7 +41,7 @@ func TestK8sEnableCmd(t *testing.T) {
},
{
name: "multiple",
funcs: []string{"load-balancer", "gateway"},
funcs: []string{string(features.LoadBalancer), string(features.Gateway)},
expectedCall: apiv1.UpdateClusterConfigRequest{
Config: apiv1.UserFacingClusterConfig{
Gateway: apiv1.GatewayConfig{Enabled: utils.Pointer(true)},
Expand Down
57 changes: 29 additions & 28 deletions src/k8s/cmd/k8s/k8s_get.go
Original file line number Diff line number Diff line change
Expand Up @@ -8,6 +8,7 @@ import (

apiv1 "github.com/canonical/k8s/api/v1"
cmdutil "github.com/canonical/k8s/cmd/util"
"github.com/canonical/k8s/pkg/k8sd/features"
"github.com/spf13/cobra"
)

Expand Down Expand Up @@ -58,61 +59,61 @@ func newGetCmd(env cmdutil.ExecutionEnvironment) *cobra.Command {
switch key {
case "":
output = config
case "network":
case string(features.Network):
output = config.Network
case "dns":
case string(features.DNS):
output = config.DNS
case "gateway":
case string(features.Gateway):
output = config.Gateway
case "ingress":
case string(features.Ingress):
output = config.Ingress
case "local-storage":
case string(features.LocalStorage):
output = config.LocalStorage
case "load-balancer":
case string(features.LoadBalancer):
output = config.LoadBalancer
case "network.enabled":
case fmt.Sprintf("%s.enabled", features.Network):
output = config.Network.GetEnabled()
case "dns.enabled":
case fmt.Sprintf("%s.enabled", features.DNS):
output = config.DNS.GetEnabled()
case "dns.upstream-nameservers":
case fmt.Sprintf("%s.upstream-nameservers", features.DNS):
output = config.DNS.GetUpstreamNameservers()
case "dns.cluster-domain":
case fmt.Sprintf("%s.cluster-domain", features.DNS):
output = config.DNS.GetClusterDomain()
case "dns.service-ip":
case fmt.Sprintf("%s.service-ip", features.DNS):
output = config.DNS.GetServiceIP()
case "gateway.enabled":
case fmt.Sprintf("%s.enabled", features.Gateway):
output = config.Gateway.GetEnabled()
case "ingress.enabled":
case fmt.Sprintf("%s.enabled", features.Ingress):
output = config.Ingress.GetEnabled()
case "ingress.default-tls-secret":
case fmt.Sprintf("%s.default-tls-secret", features.Ingress):
output = config.Ingress.GetDefaultTLSSecret()
case "ingress.enable-proxy-protocol":
case fmt.Sprintf("%s.enable-proxy-protocol", features.Ingress):
output = config.Ingress.GetEnableProxyProtocol()
case "local-storage.enabled":
case fmt.Sprintf("%s.enabled", features.LocalStorage):
output = config.LocalStorage.GetEnabled()
case "local-storage.local-path":
case fmt.Sprintf("%s.local-path", features.LocalStorage):
output = config.LocalStorage.GetLocalPath()
case "local-storage.reclaim-policy":
case fmt.Sprintf("%s.reclaim-policy", features.LocalStorage):
output = config.LocalStorage.GetReclaimPolicy()
case "local-storage.default":
case fmt.Sprintf("%s.default", features.LocalStorage):
output = config.LocalStorage.GetDefault()
case "load-balancer.enabled":
case fmt.Sprintf("%s.enabled", features.LoadBalancer):
output = config.LoadBalancer.GetEnabled()
case "load-balancer.cidrs":
case fmt.Sprintf("%s.cidrs", features.LoadBalancer):
output = config.LoadBalancer.GetCIDRs()
case "load-balancer.l2-mode":
case fmt.Sprintf("%s.l2-mode", features.LoadBalancer):
output = config.LoadBalancer.GetL2Mode()
case "load-balancer.l2-interfaces":
case fmt.Sprintf("%s.l2-interfaces", features.LoadBalancer):
output = config.LoadBalancer.GetL2Interfaces()
case "load-balancer.bgp-mode":
case fmt.Sprintf("%s.bgp-mode", features.LoadBalancer):
output = config.LoadBalancer.GetBGPMode()
case "load-balancer.bgp-local-asn":
case fmt.Sprintf("%s.bgp-local-asn", features.LoadBalancer):
output = config.LoadBalancer.GetBGPLocalASN()
case "load-balancer.bgp-peer-address":
case fmt.Sprintf("%s.bgp-peer-address", features.LoadBalancer):
output = config.LoadBalancer.GetBGPPeerAddress()
case "load-balancer.bgp-peer-port":
case fmt.Sprintf("%s.bgp-peer-port", features.LoadBalancer):
output = config.LoadBalancer.GetBGPPeerPort()
case "load-balancer.bgp-peer-asn":
case fmt.Sprintf("%s.bgp-peer-asn", features.LoadBalancer):
output = config.LoadBalancer.GetBGPPeerASN()
default:
cmd.PrintErrf("Error: Unknown config key %q.\n", key)
Expand Down
51 changes: 26 additions & 25 deletions src/k8s/cmd/k8s/k8s_set.go
Original file line number Diff line number Diff line change
Expand Up @@ -8,6 +8,7 @@ import (

apiv1 "github.com/canonical/k8s/api/v1"
cmdutil "github.com/canonical/k8s/cmd/util"
"github.com/canonical/k8s/pkg/k8sd/features"
"github.com/canonical/k8s/pkg/utils"
"github.com/mitchellh/mapstructure"
"github.com/spf13/cobra"
Expand Down Expand Up @@ -78,31 +79,31 @@ func newSetCmd(env cmdutil.ExecutionEnvironment) *cobra.Command {
}

var knownSetKeys = map[string]struct{}{
"annotations": {},
"cloud-provider": {},
"dns.cluster-domain": {},
"dns.enabled": {},
"dns.service-ip": {},
"dns.upstream-nameservers": {},
"gateway.enabled": {},
"ingress.default-tls-secret": {},
"ingress.enable-proxy-protocol": {},
"ingress.enabled": {},
"load-balancer.bgp-local-asn": {},
"load-balancer.bgp-mode": {},
"load-balancer.bgp-peer-address": {},
"load-balancer.bgp-peer-asn": {},
"load-balancer.bgp-peer-port": {},
"load-balancer.cidrs": {},
"load-balancer.enabled": {},
"load-balancer.l2-interfaces": {},
"load-balancer.l2-mode": {},
"local-storage.default": {},
"local-storage.enabled": {},
"local-storage.local-path": {},
"local-storage.reclaim-policy": {},
"metrics-server.enabled": {},
"network.enabled": {},
"annotations": {},
"cloud-provider": {},
fmt.Sprintf("%s.cluster-domain", features.DNS): {},
fmt.Sprintf("%s.enabled", features.DNS): {},
fmt.Sprintf("%s.service-ip", features.DNS): {},
fmt.Sprintf("%s.upstream-nameservers", features.DNS): {},
fmt.Sprintf("%s.enabled", features.Gateway): {},
fmt.Sprintf("%s.default-tls-secret", features.Ingress): {},
fmt.Sprintf("%s.enable-proxy-protocol", features.Ingress): {},
fmt.Sprintf("%s.enabled", features.Ingress): {},
fmt.Sprintf("%s.bgp-local-asn", features.LoadBalancer): {},
fmt.Sprintf("%s.bgp-mode", features.LoadBalancer): {},
fmt.Sprintf("%s.bgp-peer-address", features.LoadBalancer): {},
fmt.Sprintf("%s.bgp-peer-asn", features.LoadBalancer): {},
fmt.Sprintf("%s.bgp-peer-port", features.LoadBalancer): {},
fmt.Sprintf("%s.cidrs", features.LoadBalancer): {},
fmt.Sprintf("%s.enabled", features.LoadBalancer): {},
fmt.Sprintf("%s.l2-interfaces", features.LoadBalancer): {},
fmt.Sprintf("%s.l2-mode", features.LoadBalancer): {},
fmt.Sprintf("%s.default", features.LocalStorage): {},
fmt.Sprintf("%s.enabled", features.LocalStorage): {},
fmt.Sprintf("%s.local-path", features.LocalStorage): {},
fmt.Sprintf("%s.reclaim-policy", features.LocalStorage): {},
fmt.Sprintf("%s.enabled", features.MetricsServer): {},
fmt.Sprintf("%s.enabled", features.Network): {},
}

func updateConfigMapstructure(config *apiv1.UserFacingClusterConfig, arg string) error {
Expand Down
2 changes: 1 addition & 1 deletion src/k8s/cmd/k8s/k8s_x_cleanup.go
Original file line number Diff line number Diff line change
Expand Up @@ -15,7 +15,7 @@ func newXCleanupCmd(env cmdutil.ExecutionEnvironment) *cobra.Command {
}

cleanupNetworkCmd := &cobra.Command{
Use: "network",
Use: string(features.Network),
Short: "Cleanup left-over network resources",
Run: func(cmd *cobra.Command, args []string) {
ctx, cancel := context.WithTimeout(cmd.Context(), opts.timeout)
Expand Down
4 changes: 2 additions & 2 deletions src/k8s/cmd/k8s/k8s_x_wait_for.go
Original file line number Diff line number Diff line change
Expand Up @@ -15,7 +15,7 @@ func newXWaitForCmd(env cmdutil.ExecutionEnvironment) *cobra.Command {
timeout time.Duration
}
waitForDNSCmd := &cobra.Command{
Use: "dns",
Use: string(features.DNS),
Short: "Wait for DNS to be ready",
Run: func(cmd *cobra.Command, args []string) {
ctx, cancel := context.WithTimeout(cmd.Context(), opts.timeout)
Expand All @@ -35,7 +35,7 @@ func newXWaitForCmd(env cmdutil.ExecutionEnvironment) *cobra.Command {
waitForDNSCmd.Flags().DurationVar(&opts.timeout, "timeout", 5*time.Minute, "maximum time to wait")

waitForNetworkCmd := &cobra.Command{
Use: "network",
Use: string(features.Network),
Short: "Wait for Network to be ready",
Run: func(cmd *cobra.Command, args []string) {
ctx, cancel := context.WithTimeout(cmd.Context(), opts.timeout)
Expand Down
Loading

0 comments on commit 1e5a99b

Please sign in to comment.