mirror of
https://github.com/kubesphere/kubekey.git
synced 2025-12-26 01:22:51 +00:00
fix: clear default inventory and configuration logic. (#2632)
Signed-off-by: joyceliu <joyceliu@yunify.com>
This commit is contained in:
parent
e530832452
commit
9ade693b0f
|
|
@ -29,6 +29,7 @@ import (
|
|||
"github.com/spf13/cobra"
|
||||
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
|
||||
"k8s.io/apimachinery/pkg/apis/meta/v1/unstructured"
|
||||
"k8s.io/apimachinery/pkg/util/yaml"
|
||||
cliflag "k8s.io/component-base/cli/flag"
|
||||
|
||||
"github.com/kubesphere/kubekey/v4/cmd/kk/app/options"
|
||||
|
|
@ -39,10 +40,22 @@ import (
|
|||
// NewAddNodeOptions creates a new AddNodeOptions with default values
|
||||
func NewAddNodeOptions() *AddNodeOptions {
|
||||
// set default value
|
||||
return &AddNodeOptions{
|
||||
o := &AddNodeOptions{
|
||||
CommonOptions: options.NewCommonOptions(),
|
||||
Kubernetes: defaultKubeVersion,
|
||||
}
|
||||
|
||||
o.CommonOptions.GetConfigFunc = func() (*kkcorev1.Config, error) {
|
||||
data, err := getConfig(o.Kubernetes)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
config := &kkcorev1.Config{}
|
||||
return config, errors.Wrapf(yaml.Unmarshal(data, config), "failed to unmarshal local configFile for kube_version: %q.", o.Kubernetes)
|
||||
}
|
||||
o.CommonOptions.GetInventoryFunc = getInventory
|
||||
|
||||
return o
|
||||
}
|
||||
|
||||
// AddNodeOptions contains options for adding nodes to a cluster
|
||||
|
|
@ -91,12 +104,6 @@ func (o *AddNodeOptions) Complete(cmd *cobra.Command, args []string) (*kkcorev1.
|
|||
Debug: o.Debug,
|
||||
}
|
||||
// override kube_version in config
|
||||
if err := completeConfig(o.Kubernetes, o.CommonOptions.ConfigFile, o.CommonOptions.Config); err != nil {
|
||||
return nil, err
|
||||
}
|
||||
if err := completeInventory(o.CommonOptions.InventoryFile, o.CommonOptions.Inventory); err != nil {
|
||||
return nil, err
|
||||
}
|
||||
if err := o.CommonOptions.Complete(playbook); err != nil {
|
||||
return nil, err
|
||||
}
|
||||
|
|
|
|||
|
|
@ -41,7 +41,10 @@ type ArtifactExportOptions struct {
|
|||
// NewArtifactExportOptions for newArtifactExportCommand
|
||||
func NewArtifactExportOptions() *ArtifactExportOptions {
|
||||
// set default value
|
||||
return &ArtifactExportOptions{CommonOptions: options.NewCommonOptions()}
|
||||
o := &ArtifactExportOptions{CommonOptions: options.NewCommonOptions()}
|
||||
o.CommonOptions.GetInventoryFunc = getInventory
|
||||
|
||||
return o
|
||||
}
|
||||
|
||||
// Flags add to newArtifactExportCommand
|
||||
|
|
@ -72,9 +75,6 @@ func (o *ArtifactExportOptions) Complete(cmd *cobra.Command, args []string) (*kk
|
|||
Debug: o.Debug,
|
||||
SkipTags: []string{"certs"},
|
||||
}
|
||||
if err := completeInventory(o.CommonOptions.InventoryFile, o.CommonOptions.Inventory); err != nil {
|
||||
return nil, err
|
||||
}
|
||||
if err := o.CommonOptions.Complete(playbook); err != nil {
|
||||
return nil, err
|
||||
}
|
||||
|
|
@ -93,8 +93,10 @@ type ArtifactImagesOptions struct {
|
|||
|
||||
// NewArtifactImagesOptions for newArtifactImagesCommand
|
||||
func NewArtifactImagesOptions() *ArtifactImagesOptions {
|
||||
// set default value
|
||||
return &ArtifactImagesOptions{CommonOptions: options.NewCommonOptions()}
|
||||
o := &ArtifactImagesOptions{CommonOptions: options.NewCommonOptions()}
|
||||
o.CommonOptions.GetInventoryFunc = getInventory
|
||||
|
||||
return o
|
||||
}
|
||||
|
||||
// Flags add to newArtifactImagesCommand
|
||||
|
|
@ -125,9 +127,6 @@ func (o *ArtifactImagesOptions) Complete(cmd *cobra.Command, args []string) (*kk
|
|||
Debug: o.Debug,
|
||||
Tags: []string{"only_image"},
|
||||
}
|
||||
if err := completeInventory(o.CommonOptions.InventoryFile, o.CommonOptions.Inventory); err != nil {
|
||||
return nil, err
|
||||
}
|
||||
|
||||
if err := o.CommonOptions.Complete(playbook); err != nil {
|
||||
return nil, errors.WithStack(err)
|
||||
|
|
|
|||
|
|
@ -22,7 +22,6 @@ package builtin
|
|||
import (
|
||||
"bytes"
|
||||
"fmt"
|
||||
"os"
|
||||
"text/template"
|
||||
|
||||
"github.com/cockroachdb/errors"
|
||||
|
|
@ -30,6 +29,7 @@ import (
|
|||
"k8s.io/apimachinery/pkg/util/yaml"
|
||||
|
||||
"github.com/kubesphere/kubekey/v4/builtin/core"
|
||||
"github.com/kubesphere/kubekey/v4/cmd/kk/app/options"
|
||||
)
|
||||
|
||||
const (
|
||||
|
|
@ -41,40 +41,17 @@ const (
|
|||
defaultGroupWorker = "kube_worker"
|
||||
)
|
||||
|
||||
func completeInventory(inventoryFile string, inventory *kkcorev1.Inventory) error {
|
||||
if inventoryFile != "" {
|
||||
data, err := os.ReadFile(inventoryFile)
|
||||
if err != nil {
|
||||
return errors.Wrapf(err, "failed to get inventory for inventoryFile: %q", inventoryFile)
|
||||
}
|
||||
return errors.Wrapf(yaml.Unmarshal(data, inventory), "failed to unmarshal inventoryFile %s", inventoryFile)
|
||||
}
|
||||
var getInventory options.InventoryFunc = func() (*kkcorev1.Inventory, error) {
|
||||
data, err := core.Defaults.ReadFile("defaults/inventory/localhost.yaml")
|
||||
if err != nil {
|
||||
return errors.Wrap(err, "failed to get local inventory. Please set it by \"--inventory\"")
|
||||
return nil, errors.Wrap(err, "failed to get local inventory. Please set it by \"--inventory\"")
|
||||
}
|
||||
|
||||
return errors.Wrapf(yaml.Unmarshal(data, inventory), "failed to unmarshal local inventoryFile %q", inventoryFile)
|
||||
inventory := &kkcorev1.Inventory{}
|
||||
return inventory, errors.Wrap(yaml.Unmarshal(data, inventory), "failed to unmarshal local inventory file: %q.")
|
||||
}
|
||||
|
||||
func completeConfig(kubeVersion string, configFile string, config *kkcorev1.Config) error {
|
||||
data, err := getConfig(kubeVersion, configFile)
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
|
||||
return errors.Wrapf(yaml.Unmarshal(data, config), "failed to unmarshal local configFile for kube_version: %q.", kubeVersion)
|
||||
}
|
||||
|
||||
func getConfig(kubeVersion string, configFile string) ([]byte, error) {
|
||||
if configFile != "" {
|
||||
data, err := os.ReadFile(configFile)
|
||||
if err != nil {
|
||||
return nil, errors.Wrapf(err, "failed to get configFile %q", configFile)
|
||||
}
|
||||
|
||||
return data, nil
|
||||
}
|
||||
func getConfig(kubeVersion string) ([]byte, error) {
|
||||
t, err := template.ParseFS(core.Defaults, fmt.Sprintf("defaults/config/%s.yaml", kubeVersion[:5]))
|
||||
if err != nil {
|
||||
return nil, errors.Wrapf(err, "failed to get local configFile template for kube_version: %q. Please set it by \"--config\"", kubeVersion)
|
||||
|
|
|
|||
|
|
@ -32,7 +32,10 @@ import (
|
|||
// NewCertsRenewOptions for newCertsRenewCommand
|
||||
func NewCertsRenewOptions() *CertsRenewOptions {
|
||||
// set default value
|
||||
return &CertsRenewOptions{CommonOptions: options.NewCommonOptions()}
|
||||
o := &CertsRenewOptions{CommonOptions: options.NewCommonOptions()}
|
||||
o.CommonOptions.GetInventoryFunc = getInventory
|
||||
|
||||
return o
|
||||
}
|
||||
|
||||
// CertsRenewOptions for NewCertsRenewOptions
|
||||
|
|
@ -66,9 +69,6 @@ func (o *CertsRenewOptions) Complete(cmd *cobra.Command, args []string) (*kkcore
|
|||
Debug: o.Debug,
|
||||
Tags: []string{"certs"},
|
||||
}
|
||||
if err := completeInventory(o.CommonOptions.InventoryFile, o.CommonOptions.Inventory); err != nil {
|
||||
return nil, err
|
||||
}
|
||||
|
||||
return playbook, o.CommonOptions.Complete(playbook)
|
||||
}
|
||||
|
|
|
|||
|
|
@ -29,6 +29,7 @@ import (
|
|||
"github.com/spf13/cobra"
|
||||
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
|
||||
"k8s.io/apimachinery/pkg/apis/meta/v1/unstructured"
|
||||
"k8s.io/apimachinery/pkg/util/yaml"
|
||||
cliflag "k8s.io/component-base/cli/flag"
|
||||
|
||||
"github.com/kubesphere/kubekey/v4/cmd/kk/app/options"
|
||||
|
|
@ -41,10 +42,21 @@ import (
|
|||
// NewCreateClusterOptions for newCreateClusterCommand
|
||||
func NewCreateClusterOptions() *CreateClusterOptions {
|
||||
// set default value
|
||||
return &CreateClusterOptions{
|
||||
o := &CreateClusterOptions{
|
||||
CommonOptions: options.NewCommonOptions(),
|
||||
Kubernetes: defaultKubeVersion,
|
||||
}
|
||||
o.CommonOptions.GetConfigFunc = func() (*kkcorev1.Config, error) {
|
||||
data, err := getConfig(o.Kubernetes)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
config := &kkcorev1.Config{}
|
||||
return config, errors.Wrapf(yaml.Unmarshal(data, config), "failed to unmarshal local configFile for kube_version: %q.", o.Kubernetes)
|
||||
}
|
||||
o.CommonOptions.GetInventoryFunc = getInventory
|
||||
|
||||
return o
|
||||
}
|
||||
|
||||
// CreateClusterOptions for NewCreateClusterOptions
|
||||
|
|
@ -85,13 +97,6 @@ func (o *CreateClusterOptions) Complete(cmd *cobra.Command, args []string) (*kkc
|
|||
Playbook: o.Playbook,
|
||||
Debug: o.Debug,
|
||||
}
|
||||
// override kube_version in config
|
||||
if err := completeConfig(o.Kubernetes, o.CommonOptions.ConfigFile, o.CommonOptions.Config); err != nil {
|
||||
return nil, err
|
||||
}
|
||||
if err := completeInventory(o.CommonOptions.InventoryFile, o.CommonOptions.Inventory); err != nil {
|
||||
return nil, err
|
||||
}
|
||||
if err := o.CommonOptions.Complete(playbook); err != nil {
|
||||
return nil, err
|
||||
}
|
||||
|
|
@ -144,7 +149,7 @@ func (o *CreateConfigOptions) Flags() cliflag.NamedFlagSets {
|
|||
// If an output directory is specified, it creates a config file named "config-<kubernetes-version>.yaml".
|
||||
func (o *CreateConfigOptions) Run() error {
|
||||
// Read the default config file for the specified Kubernetes version
|
||||
data, err := getConfig(o.Kubernetes, "")
|
||||
data, err := getConfig(o.Kubernetes)
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
|
|
|
|||
|
|
@ -27,6 +27,7 @@ import (
|
|||
"github.com/spf13/cobra"
|
||||
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
|
||||
"k8s.io/apimachinery/pkg/apis/meta/v1/unstructured"
|
||||
"k8s.io/apimachinery/pkg/util/yaml"
|
||||
cliflag "k8s.io/component-base/cli/flag"
|
||||
|
||||
"github.com/kubesphere/kubekey/v4/cmd/kk/app/options"
|
||||
|
|
@ -39,10 +40,21 @@ import (
|
|||
// NewDeleteClusterOptions creates a new DeleteClusterOptions with default values
|
||||
func NewDeleteClusterOptions() *DeleteClusterOptions {
|
||||
// set default value
|
||||
return &DeleteClusterOptions{
|
||||
o := &DeleteClusterOptions{
|
||||
CommonOptions: options.NewCommonOptions(),
|
||||
Kubernetes: defaultKubeVersion,
|
||||
}
|
||||
o.CommonOptions.GetConfigFunc = func() (*kkcorev1.Config, error) {
|
||||
data, err := getConfig(o.Kubernetes)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
config := &kkcorev1.Config{}
|
||||
return config, errors.Wrapf(yaml.Unmarshal(data, config), "failed to unmarshal local configFile for kube_version: %q.", o.Kubernetes)
|
||||
}
|
||||
o.CommonOptions.GetInventoryFunc = getInventory
|
||||
|
||||
return o
|
||||
}
|
||||
|
||||
// DeleteClusterOptions contains options for deleting a Kubernetes cluster
|
||||
|
|
@ -86,14 +98,6 @@ func (o *DeleteClusterOptions) Complete(cmd *cobra.Command, args []string) (*kkc
|
|||
Debug: o.Debug,
|
||||
}
|
||||
|
||||
// Complete configuration with kubernetes version and inventory
|
||||
if err := completeConfig(o.Kubernetes, o.CommonOptions.ConfigFile, o.CommonOptions.Config); err != nil {
|
||||
return nil, err
|
||||
}
|
||||
if err := completeInventory(o.CommonOptions.InventoryFile, o.CommonOptions.Inventory); err != nil {
|
||||
return nil, err
|
||||
}
|
||||
|
||||
// Complete common options
|
||||
if err := o.CommonOptions.Complete(playbook); err != nil {
|
||||
return nil, err
|
||||
|
|
@ -120,10 +124,21 @@ func (o *DeleteClusterOptions) completeConfig() error {
|
|||
// NewDeleteNodesOptions creates a new DeleteNodesOptions with default values
|
||||
func NewDeleteNodesOptions() *DeleteNodesOptions {
|
||||
// set default value
|
||||
return &DeleteNodesOptions{
|
||||
o := &DeleteNodesOptions{
|
||||
CommonOptions: options.NewCommonOptions(),
|
||||
Kubernetes: defaultKubeVersion,
|
||||
}
|
||||
o.CommonOptions.GetConfigFunc = func() (*kkcorev1.Config, error) {
|
||||
data, err := getConfig(o.Kubernetes)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
config := &kkcorev1.Config{}
|
||||
return config, errors.Wrapf(yaml.Unmarshal(data, config), "failed to unmarshal local configFile for kube_version: %q.", o.Kubernetes)
|
||||
}
|
||||
o.CommonOptions.GetInventoryFunc = getInventory
|
||||
|
||||
return o
|
||||
}
|
||||
|
||||
// DeleteNodesOptions contains options for deleting a Kubernetes cluster nodes
|
||||
|
|
@ -168,14 +183,6 @@ func (o *DeleteNodesOptions) Complete(cmd *cobra.Command, args []string) (*kkcor
|
|||
Debug: o.Debug,
|
||||
}
|
||||
|
||||
// Complete configuration with kubernetes version and inventory
|
||||
if err := completeConfig(o.Kubernetes, o.CommonOptions.ConfigFile, o.CommonOptions.Config); err != nil {
|
||||
return nil, err
|
||||
}
|
||||
if err := completeInventory(o.CommonOptions.InventoryFile, o.CommonOptions.Inventory); err != nil {
|
||||
return nil, err
|
||||
}
|
||||
|
||||
// Complete common options
|
||||
if err := o.CommonOptions.Complete(playbook); err != nil {
|
||||
return nil, err
|
||||
|
|
|
|||
|
|
@ -45,7 +45,10 @@ type InitOSOptions struct {
|
|||
// NewInitOSOptions for newInitOSCommand
|
||||
func NewInitOSOptions() *InitOSOptions {
|
||||
// set default value
|
||||
return &InitOSOptions{CommonOptions: options.NewCommonOptions()}
|
||||
o := &InitOSOptions{CommonOptions: options.NewCommonOptions()}
|
||||
o.CommonOptions.GetInventoryFunc = getInventory
|
||||
|
||||
return o
|
||||
}
|
||||
|
||||
// Flags add to newInitOSCommand
|
||||
|
|
@ -75,9 +78,6 @@ func (o *InitOSOptions) Complete(cmd *cobra.Command, args []string) (*kkcorev1.P
|
|||
Playbook: o.Playbook,
|
||||
Debug: o.Debug,
|
||||
}
|
||||
if err := completeInventory(o.CommonOptions.InventoryFile, o.CommonOptions.Inventory); err != nil {
|
||||
return nil, err
|
||||
}
|
||||
|
||||
if err := o.CommonOptions.Complete(playbook); err != nil {
|
||||
return nil, err
|
||||
|
|
@ -115,7 +115,10 @@ type InitRegistryOptions struct {
|
|||
// NewInitRegistryOptions for newInitRegistryCommand
|
||||
func NewInitRegistryOptions() *InitRegistryOptions {
|
||||
// set default value
|
||||
return &InitRegistryOptions{CommonOptions: options.NewCommonOptions()}
|
||||
o := &InitRegistryOptions{CommonOptions: options.NewCommonOptions()}
|
||||
o.CommonOptions.GetInventoryFunc = getInventory
|
||||
|
||||
return o
|
||||
}
|
||||
|
||||
// Flags add to newInitRegistryCommand
|
||||
|
|
@ -145,9 +148,6 @@ func (o *InitRegistryOptions) Complete(cmd *cobra.Command, args []string) (*kkco
|
|||
Playbook: o.Playbook,
|
||||
Debug: o.Debug,
|
||||
}
|
||||
if err := completeInventory(o.CommonOptions.InventoryFile, o.CommonOptions.Inventory); err != nil {
|
||||
return nil, err
|
||||
}
|
||||
|
||||
return playbook, o.CommonOptions.Complete(playbook)
|
||||
}
|
||||
|
|
|
|||
|
|
@ -20,10 +20,13 @@ limitations under the License.
|
|||
package builtin
|
||||
|
||||
import (
|
||||
"fmt"
|
||||
|
||||
"github.com/cockroachdb/errors"
|
||||
kkcorev1 "github.com/kubesphere/kubekey/api/core/v1"
|
||||
"github.com/spf13/cobra"
|
||||
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
|
||||
"k8s.io/apimachinery/pkg/util/yaml"
|
||||
cliflag "k8s.io/component-base/cli/flag"
|
||||
|
||||
"github.com/kubesphere/kubekey/v4/cmd/kk/app/options"
|
||||
|
|
@ -32,17 +35,37 @@ import (
|
|||
// NewPreCheckOptions for newPreCheckCommand
|
||||
func NewPreCheckOptions() *PreCheckOptions {
|
||||
// set default value
|
||||
return &PreCheckOptions{CommonOptions: options.NewCommonOptions()}
|
||||
o := &PreCheckOptions{
|
||||
CommonOptions: options.NewCommonOptions(),
|
||||
Kubernetes: defaultKubeVersion,
|
||||
}
|
||||
o.CommonOptions.GetConfigFunc = func() (*kkcorev1.Config, error) {
|
||||
data, err := getConfig(o.Kubernetes)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
config := &kkcorev1.Config{}
|
||||
return config, errors.Wrapf(yaml.Unmarshal(data, config), "failed to unmarshal local configFile for kube_version: %q.", o.Kubernetes)
|
||||
}
|
||||
o.CommonOptions.GetInventoryFunc = getInventory
|
||||
|
||||
return o
|
||||
}
|
||||
|
||||
// PreCheckOptions for NewPreCheckOptions
|
||||
type PreCheckOptions struct {
|
||||
options.CommonOptions
|
||||
// kubernetes version which the cluster will install.
|
||||
Kubernetes string
|
||||
}
|
||||
|
||||
// Flags add to newPreCheckCommand
|
||||
func (o *PreCheckOptions) Flags() cliflag.NamedFlagSets {
|
||||
return o.CommonOptions.Flags()
|
||||
fss := o.CommonOptions.Flags()
|
||||
kfs := fss.FlagSet("config")
|
||||
kfs.StringVar(&o.Kubernetes, "with-kubernetes", o.Kubernetes, fmt.Sprintf("Specify a supported version of kubernetes. default is %s", o.Kubernetes))
|
||||
|
||||
return fss
|
||||
}
|
||||
|
||||
// Complete options. create Playbook, Config and Inventory
|
||||
|
|
@ -73,9 +96,6 @@ func (o *PreCheckOptions) Complete(cmd *cobra.Command, args []string) (*kkcorev1
|
|||
Debug: o.Debug,
|
||||
Tags: tags,
|
||||
}
|
||||
if err := completeInventory(o.CommonOptions.InventoryFile, o.CommonOptions.Inventory); err != nil {
|
||||
return nil, err
|
||||
}
|
||||
|
||||
return playbook, o.CommonOptions.Complete(playbook)
|
||||
}
|
||||
|
|
|
|||
|
|
@ -25,6 +25,7 @@ import (
|
|||
|
||||
"github.com/cockroachdb/errors"
|
||||
kkcorev1 "github.com/kubesphere/kubekey/api/core/v1"
|
||||
"gopkg.in/yaml.v3"
|
||||
corev1 "k8s.io/api/core/v1"
|
||||
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
|
||||
"k8s.io/apimachinery/pkg/apis/meta/v1/unstructured"
|
||||
|
|
@ -39,8 +40,13 @@ import (
|
|||
"github.com/kubesphere/kubekey/v4/pkg/proxy"
|
||||
)
|
||||
|
||||
// // CTX cancel by shutdown signal
|
||||
// var CTX = signals.SetupSignalHandler()
|
||||
// InventoryFunc defines a function type that returns a pointer to a kkcorev1.Inventory and an error.
|
||||
// It is used to provide a custom way to retrieve or generate an Inventory object.
|
||||
type InventoryFunc func() (*kkcorev1.Inventory, error)
|
||||
|
||||
// ConfigFunc defines a function type that returns a pointer to a kkcorev1.Config and an error.
|
||||
// It is used to provide a custom way to retrieve or generate a Config object.
|
||||
type ConfigFunc func() (*kkcorev1.Config, error)
|
||||
|
||||
// CommonOptions holds the configuration options for executing a playbook.
|
||||
// It includes paths to various configuration files, runtime settings, and
|
||||
|
|
@ -65,9 +71,11 @@ type CommonOptions struct {
|
|||
Namespace string
|
||||
|
||||
// Config is the kubekey core configuration.
|
||||
Config *kkcorev1.Config
|
||||
Config *kkcorev1.Config
|
||||
GetConfigFunc ConfigFunc
|
||||
// Inventory is the kubekey core inventory.
|
||||
Inventory *kkcorev1.Inventory
|
||||
Inventory *kkcorev1.Inventory
|
||||
GetInventoryFunc InventoryFunc
|
||||
}
|
||||
|
||||
// NewCommonOptions creates a new CommonOptions object with default values.
|
||||
|
|
@ -100,7 +108,7 @@ func NewCommonOptions() CommonOptions {
|
|||
APIVersion: kkcorev1.SchemeGroupVersion.String(),
|
||||
Kind: "Inventory",
|
||||
},
|
||||
ObjectMeta: metav1.ObjectMeta{Name: "default"},
|
||||
ObjectMeta: metav1.ObjectMeta{Namespace: metav1.NamespaceDefault, Name: "default"},
|
||||
}
|
||||
|
||||
return o
|
||||
|
|
@ -175,13 +183,47 @@ func (o *CommonOptions) Complete(playbook *kkcorev1.Playbook) error {
|
|||
}
|
||||
o.Workdir = filepath.Join(wd, o.Workdir)
|
||||
}
|
||||
// Generate and complete the configuration.
|
||||
|
||||
if o.ConfigFile != "" {
|
||||
data, err := os.ReadFile(o.ConfigFile)
|
||||
if err != nil {
|
||||
return errors.Wrapf(err, "failed to get config from file %q", o.ConfigFile)
|
||||
}
|
||||
if err := yaml.Unmarshal(data, o.Config); err != nil {
|
||||
return errors.Wrapf(err, "failed to unmarshal config from file %q", o.ConfigFile)
|
||||
}
|
||||
} else if o.GetConfigFunc != nil {
|
||||
config, err := o.GetConfigFunc()
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
o.Config = config
|
||||
}
|
||||
if o.InventoryFile != "" {
|
||||
data, err := os.ReadFile(o.InventoryFile)
|
||||
if err != nil {
|
||||
return errors.Wrapf(err, "failed to get inventory from file %q", o.InventoryFile)
|
||||
}
|
||||
if err := yaml.Unmarshal(data, o.Inventory); err != nil {
|
||||
return errors.Wrapf(err, "failed to unmarshal inventory from file %q", o.InventoryFile)
|
||||
}
|
||||
} else if o.GetInventoryFunc != nil {
|
||||
inventory, err := o.GetInventoryFunc()
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
o.Inventory = inventory
|
||||
}
|
||||
|
||||
// Complete the configuration.
|
||||
if err := o.completeConfig(); err != nil {
|
||||
return err
|
||||
}
|
||||
playbook.Spec.Config = ptr.Deref(o.Config, kkcorev1.Config{})
|
||||
// Complete the inventory reference.
|
||||
o.completeInventory(o.Inventory)
|
||||
if err := o.completeInventory(o.Inventory); err != nil {
|
||||
return err
|
||||
}
|
||||
playbook.Spec.InventoryRef = &corev1.ObjectReference{
|
||||
Kind: o.Inventory.Kind,
|
||||
Namespace: o.Inventory.Namespace,
|
||||
|
|
@ -224,11 +266,13 @@ func (o *CommonOptions) completeConfig() error {
|
|||
}
|
||||
|
||||
// genConfig generate config by ConfigFile and set value by command args.
|
||||
func (o *CommonOptions) completeInventory(inventory *kkcorev1.Inventory) {
|
||||
func (o *CommonOptions) completeInventory(inventory *kkcorev1.Inventory) error {
|
||||
// set value by command args
|
||||
if o.Namespace != "" {
|
||||
inventory.Namespace = o.Namespace
|
||||
}
|
||||
|
||||
return nil
|
||||
}
|
||||
|
||||
// setValue sets a value in the config based on a key-value pair.
|
||||
|
|
|
|||
Loading…
Reference in New Issue