Skip to content

Commit bd48881

Browse files
committed
fix: clear default inventory and configuration logic.
Signed-off-by: joyceliu <[email protected]>
1 parent e530832 commit bd48881

File tree

9 files changed

+156
-97
lines changed

9 files changed

+156
-97
lines changed

cmd/kk/app/options/builtin/add.go

Lines changed: 14 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -29,6 +29,7 @@ import (
2929
"github.com/spf13/cobra"
3030
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
3131
"k8s.io/apimachinery/pkg/apis/meta/v1/unstructured"
32+
"k8s.io/apimachinery/pkg/util/yaml"
3233
cliflag "k8s.io/component-base/cli/flag"
3334

3435
"github.com/kubesphere/kubekey/v4/cmd/kk/app/options"
@@ -39,10 +40,22 @@ import (
3940
// NewAddNodeOptions creates a new AddNodeOptions with default values
4041
func NewAddNodeOptions() *AddNodeOptions {
4142
// set default value
42-
return &AddNodeOptions{
43+
o := &AddNodeOptions{
4344
CommonOptions: options.NewCommonOptions(),
4445
Kubernetes: defaultKubeVersion,
4546
}
47+
48+
o.CommonOptions.GetConfigFunc = func() (*kkcorev1.Config, error) {
49+
data, err := getConfig(o.Kubernetes)
50+
if err != nil {
51+
return nil, err
52+
}
53+
config := &kkcorev1.Config{}
54+
return config, errors.Wrapf(yaml.Unmarshal(data, config), "failed to unmarshal local configFile for kube_version: %q.", o.Kubernetes)
55+
}
56+
o.CommonOptions.GetInventoryFunc = getInventory
57+
58+
return o
4659
}
4760

4861
// AddNodeOptions contains options for adding nodes to a cluster
@@ -91,12 +104,6 @@ func (o *AddNodeOptions) Complete(cmd *cobra.Command, args []string) (*kkcorev1.
91104
Debug: o.Debug,
92105
}
93106
// override kube_version in config
94-
if err := completeConfig(o.Kubernetes, o.CommonOptions.ConfigFile, o.CommonOptions.Config); err != nil {
95-
return nil, err
96-
}
97-
if err := completeInventory(o.CommonOptions.InventoryFile, o.CommonOptions.Inventory); err != nil {
98-
return nil, err
99-
}
100107
if err := o.CommonOptions.Complete(playbook); err != nil {
101108
return nil, err
102109
}

cmd/kk/app/options/builtin/artifact.go

Lines changed: 8 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -41,7 +41,10 @@ type ArtifactExportOptions struct {
4141
// NewArtifactExportOptions for newArtifactExportCommand
4242
func NewArtifactExportOptions() *ArtifactExportOptions {
4343
// set default value
44-
return &ArtifactExportOptions{CommonOptions: options.NewCommonOptions()}
44+
o := &ArtifactExportOptions{CommonOptions: options.NewCommonOptions()}
45+
o.CommonOptions.GetInventoryFunc = getInventory
46+
47+
return o
4548
}
4649

4750
// Flags add to newArtifactExportCommand
@@ -72,9 +75,6 @@ func (o *ArtifactExportOptions) Complete(cmd *cobra.Command, args []string) (*kk
7275
Debug: o.Debug,
7376
SkipTags: []string{"certs"},
7477
}
75-
if err := completeInventory(o.CommonOptions.InventoryFile, o.CommonOptions.Inventory); err != nil {
76-
return nil, err
77-
}
7878
if err := o.CommonOptions.Complete(playbook); err != nil {
7979
return nil, err
8080
}
@@ -93,8 +93,10 @@ type ArtifactImagesOptions struct {
9393

9494
// NewArtifactImagesOptions for newArtifactImagesCommand
9595
func NewArtifactImagesOptions() *ArtifactImagesOptions {
96-
// set default value
97-
return &ArtifactImagesOptions{CommonOptions: options.NewCommonOptions()}
96+
o := &ArtifactImagesOptions{CommonOptions: options.NewCommonOptions()}
97+
o.CommonOptions.GetInventoryFunc = getInventory
98+
99+
return o
98100
}
99101

100102
// Flags add to newArtifactImagesCommand
@@ -125,9 +127,6 @@ func (o *ArtifactImagesOptions) Complete(cmd *cobra.Command, args []string) (*kk
125127
Debug: o.Debug,
126128
Tags: []string{"only_image"},
127129
}
128-
if err := completeInventory(o.CommonOptions.InventoryFile, o.CommonOptions.Inventory); err != nil {
129-
return nil, err
130-
}
131130

132131
if err := o.CommonOptions.Complete(playbook); err != nil {
133132
return nil, errors.WithStack(err)

cmd/kk/app/options/builtin/builtin.go

Lines changed: 6 additions & 29 deletions
Original file line numberDiff line numberDiff line change
@@ -22,14 +22,14 @@ package builtin
2222
import (
2323
"bytes"
2424
"fmt"
25-
"os"
2625
"text/template"
2726

2827
"github.com/cockroachdb/errors"
2928
kkcorev1 "github.com/kubesphere/kubekey/api/core/v1"
3029
"k8s.io/apimachinery/pkg/util/yaml"
3130

3231
"github.com/kubesphere/kubekey/v4/builtin/core"
32+
"github.com/kubesphere/kubekey/v4/cmd/kk/app/options"
3333
)
3434

3535
const (
@@ -41,40 +41,17 @@ const (
4141
defaultGroupWorker = "kube_worker"
4242
)
4343

44-
func completeInventory(inventoryFile string, inventory *kkcorev1.Inventory) error {
45-
if inventoryFile != "" {
46-
data, err := os.ReadFile(inventoryFile)
47-
if err != nil {
48-
return errors.Wrapf(err, "failed to get inventory for inventoryFile: %q", inventoryFile)
49-
}
50-
return errors.Wrapf(yaml.Unmarshal(data, inventory), "failed to unmarshal inventoryFile %s", inventoryFile)
51-
}
44+
var getInventory options.InventoryFunc = func() (*kkcorev1.Inventory, error) {
5245
data, err := core.Defaults.ReadFile("defaults/inventory/localhost.yaml")
5346
if err != nil {
54-
return errors.Wrap(err, "failed to get local inventory. Please set it by \"--inventory\"")
55-
}
56-
57-
return errors.Wrapf(yaml.Unmarshal(data, inventory), "failed to unmarshal local inventoryFile %q", inventoryFile)
58-
}
59-
60-
func completeConfig(kubeVersion string, configFile string, config *kkcorev1.Config) error {
61-
data, err := getConfig(kubeVersion, configFile)
62-
if err != nil {
63-
return err
47+
return nil, errors.Wrap(err, "failed to get local inventory. Please set it by \"--inventory\"")
6448
}
6549

66-
return errors.Wrapf(yaml.Unmarshal(data, config), "failed to unmarshal local configFile for kube_version: %q.", kubeVersion)
50+
inventory := &kkcorev1.Inventory{}
51+
return inventory, errors.Wrap(yaml.Unmarshal(data, inventory), "failed to unmarshal local inventory file: %q.")
6752
}
6853

69-
func getConfig(kubeVersion string, configFile string) ([]byte, error) {
70-
if configFile != "" {
71-
data, err := os.ReadFile(configFile)
72-
if err != nil {
73-
return nil, errors.Wrapf(err, "failed to get configFile %q", configFile)
74-
}
75-
76-
return data, nil
77-
}
54+
func getConfig(kubeVersion string) ([]byte, error) {
7855
t, err := template.ParseFS(core.Defaults, fmt.Sprintf("defaults/config/%s.yaml", kubeVersion[:5]))
7956
if err != nil {
8057
return nil, errors.Wrapf(err, "failed to get local configFile template for kube_version: %q. Please set it by \"--config\"", kubeVersion)

cmd/kk/app/options/builtin/certs.go

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -32,7 +32,10 @@ import (
3232
// NewCertsRenewOptions for newCertsRenewCommand
3333
func NewCertsRenewOptions() *CertsRenewOptions {
3434
// set default value
35-
return &CertsRenewOptions{CommonOptions: options.NewCommonOptions()}
35+
o := &CertsRenewOptions{CommonOptions: options.NewCommonOptions()}
36+
o.CommonOptions.GetInventoryFunc = getInventory
37+
38+
return o
3639
}
3740

3841
// CertsRenewOptions for NewCertsRenewOptions
@@ -66,9 +69,6 @@ func (o *CertsRenewOptions) Complete(cmd *cobra.Command, args []string) (*kkcore
6669
Debug: o.Debug,
6770
Tags: []string{"certs"},
6871
}
69-
if err := completeInventory(o.CommonOptions.InventoryFile, o.CommonOptions.Inventory); err != nil {
70-
return nil, err
71-
}
7272

7373
return playbook, o.CommonOptions.Complete(playbook)
7474
}

cmd/kk/app/options/builtin/create.go

Lines changed: 14 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -29,6 +29,7 @@ import (
2929
"github.com/spf13/cobra"
3030
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
3131
"k8s.io/apimachinery/pkg/apis/meta/v1/unstructured"
32+
"k8s.io/apimachinery/pkg/util/yaml"
3233
cliflag "k8s.io/component-base/cli/flag"
3334

3435
"github.com/kubesphere/kubekey/v4/cmd/kk/app/options"
@@ -41,10 +42,21 @@ import (
4142
// NewCreateClusterOptions for newCreateClusterCommand
4243
func NewCreateClusterOptions() *CreateClusterOptions {
4344
// set default value
44-
return &CreateClusterOptions{
45+
o := &CreateClusterOptions{
4546
CommonOptions: options.NewCommonOptions(),
4647
Kubernetes: defaultKubeVersion,
4748
}
49+
o.CommonOptions.GetConfigFunc = func() (*kkcorev1.Config, error) {
50+
data, err := getConfig(o.Kubernetes)
51+
if err != nil {
52+
return nil, err
53+
}
54+
config := &kkcorev1.Config{}
55+
return config, errors.Wrapf(yaml.Unmarshal(data, config), "failed to unmarshal local configFile for kube_version: %q.", o.Kubernetes)
56+
}
57+
o.CommonOptions.GetInventoryFunc = getInventory
58+
59+
return o
4860
}
4961

5062
// CreateClusterOptions for NewCreateClusterOptions
@@ -85,13 +97,6 @@ func (o *CreateClusterOptions) Complete(cmd *cobra.Command, args []string) (*kkc
8597
Playbook: o.Playbook,
8698
Debug: o.Debug,
8799
}
88-
// override kube_version in config
89-
if err := completeConfig(o.Kubernetes, o.CommonOptions.ConfigFile, o.CommonOptions.Config); err != nil {
90-
return nil, err
91-
}
92-
if err := completeInventory(o.CommonOptions.InventoryFile, o.CommonOptions.Inventory); err != nil {
93-
return nil, err
94-
}
95100
if err := o.CommonOptions.Complete(playbook); err != nil {
96101
return nil, err
97102
}
@@ -144,7 +149,7 @@ func (o *CreateConfigOptions) Flags() cliflag.NamedFlagSets {
144149
// If an output directory is specified, it creates a config file named "config-<kubernetes-version>.yaml".
145150
func (o *CreateConfigOptions) Run() error {
146151
// Read the default config file for the specified Kubernetes version
147-
data, err := getConfig(o.Kubernetes, "")
152+
data, err := getConfig(o.Kubernetes)
148153
if err != nil {
149154
return err
150155
}

cmd/kk/app/options/builtin/delete.go

Lines changed: 25 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -27,6 +27,7 @@ import (
2727
"github.com/spf13/cobra"
2828
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
2929
"k8s.io/apimachinery/pkg/apis/meta/v1/unstructured"
30+
"k8s.io/apimachinery/pkg/util/yaml"
3031
cliflag "k8s.io/component-base/cli/flag"
3132

3233
"github.com/kubesphere/kubekey/v4/cmd/kk/app/options"
@@ -39,10 +40,21 @@ import (
3940
// NewDeleteClusterOptions creates a new DeleteClusterOptions with default values
4041
func NewDeleteClusterOptions() *DeleteClusterOptions {
4142
// set default value
42-
return &DeleteClusterOptions{
43+
o := &DeleteClusterOptions{
4344
CommonOptions: options.NewCommonOptions(),
4445
Kubernetes: defaultKubeVersion,
4546
}
47+
o.CommonOptions.GetConfigFunc = func() (*kkcorev1.Config, error) {
48+
data, err := getConfig(o.Kubernetes)
49+
if err != nil {
50+
return nil, err
51+
}
52+
config := &kkcorev1.Config{}
53+
return config, errors.Wrapf(yaml.Unmarshal(data, config), "failed to unmarshal local configFile for kube_version: %q.", o.Kubernetes)
54+
}
55+
o.CommonOptions.GetInventoryFunc = getInventory
56+
57+
return o
4658
}
4759

4860
// DeleteClusterOptions contains options for deleting a Kubernetes cluster
@@ -86,14 +98,6 @@ func (o *DeleteClusterOptions) Complete(cmd *cobra.Command, args []string) (*kkc
8698
Debug: o.Debug,
8799
}
88100

89-
// Complete configuration with kubernetes version and inventory
90-
if err := completeConfig(o.Kubernetes, o.CommonOptions.ConfigFile, o.CommonOptions.Config); err != nil {
91-
return nil, err
92-
}
93-
if err := completeInventory(o.CommonOptions.InventoryFile, o.CommonOptions.Inventory); err != nil {
94-
return nil, err
95-
}
96-
97101
// Complete common options
98102
if err := o.CommonOptions.Complete(playbook); err != nil {
99103
return nil, err
@@ -120,10 +124,21 @@ func (o *DeleteClusterOptions) completeConfig() error {
120124
// NewDeleteNodesOptions creates a new DeleteNodesOptions with default values
121125
func NewDeleteNodesOptions() *DeleteNodesOptions {
122126
// set default value
123-
return &DeleteNodesOptions{
127+
o := &DeleteNodesOptions{
124128
CommonOptions: options.NewCommonOptions(),
125129
Kubernetes: defaultKubeVersion,
126130
}
131+
o.CommonOptions.GetConfigFunc = func() (*kkcorev1.Config, error) {
132+
data, err := getConfig(o.Kubernetes)
133+
if err != nil {
134+
return nil, err
135+
}
136+
config := &kkcorev1.Config{}
137+
return config, errors.Wrapf(yaml.Unmarshal(data, config), "failed to unmarshal local configFile for kube_version: %q.", o.Kubernetes)
138+
}
139+
o.CommonOptions.GetInventoryFunc = getInventory
140+
141+
return o
127142
}
128143

129144
// DeleteNodesOptions contains options for deleting a Kubernetes cluster nodes
@@ -168,14 +183,6 @@ func (o *DeleteNodesOptions) Complete(cmd *cobra.Command, args []string) (*kkcor
168183
Debug: o.Debug,
169184
}
170185

171-
// Complete configuration with kubernetes version and inventory
172-
if err := completeConfig(o.Kubernetes, o.CommonOptions.ConfigFile, o.CommonOptions.Config); err != nil {
173-
return nil, err
174-
}
175-
if err := completeInventory(o.CommonOptions.InventoryFile, o.CommonOptions.Inventory); err != nil {
176-
return nil, err
177-
}
178-
179186
// Complete common options
180187
if err := o.CommonOptions.Complete(playbook); err != nil {
181188
return nil, err

cmd/kk/app/options/builtin/init.go

Lines changed: 8 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -45,7 +45,10 @@ type InitOSOptions struct {
4545
// NewInitOSOptions for newInitOSCommand
4646
func NewInitOSOptions() *InitOSOptions {
4747
// set default value
48-
return &InitOSOptions{CommonOptions: options.NewCommonOptions()}
48+
o := &InitOSOptions{CommonOptions: options.NewCommonOptions()}
49+
o.CommonOptions.GetInventoryFunc = getInventory
50+
51+
return o
4952
}
5053

5154
// Flags add to newInitOSCommand
@@ -75,9 +78,6 @@ func (o *InitOSOptions) Complete(cmd *cobra.Command, args []string) (*kkcorev1.P
7578
Playbook: o.Playbook,
7679
Debug: o.Debug,
7780
}
78-
if err := completeInventory(o.CommonOptions.InventoryFile, o.CommonOptions.Inventory); err != nil {
79-
return nil, err
80-
}
8181

8282
if err := o.CommonOptions.Complete(playbook); err != nil {
8383
return nil, err
@@ -115,7 +115,10 @@ type InitRegistryOptions struct {
115115
// NewInitRegistryOptions for newInitRegistryCommand
116116
func NewInitRegistryOptions() *InitRegistryOptions {
117117
// set default value
118-
return &InitRegistryOptions{CommonOptions: options.NewCommonOptions()}
118+
o := &InitRegistryOptions{CommonOptions: options.NewCommonOptions()}
119+
o.CommonOptions.GetInventoryFunc = getInventory
120+
121+
return o
119122
}
120123

121124
// Flags add to newInitRegistryCommand
@@ -145,9 +148,6 @@ func (o *InitRegistryOptions) Complete(cmd *cobra.Command, args []string) (*kkco
145148
Playbook: o.Playbook,
146149
Debug: o.Debug,
147150
}
148-
if err := completeInventory(o.CommonOptions.InventoryFile, o.CommonOptions.Inventory); err != nil {
149-
return nil, err
150-
}
151151

152152
return playbook, o.CommonOptions.Complete(playbook)
153153
}

0 commit comments

Comments
 (0)