Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion README.md
Original file line number Diff line number Diff line change
Expand Up @@ -74,7 +74,7 @@ Use "pf9ctl [command] --help" for more information about a command.
```sh
#pf9ctl version

pf9ctl version: v1.15
pf9ctl version: v1.16

```
- **Upgrading**
Expand Down
12 changes: 3 additions & 9 deletions cmd/attachNode.go
Original file line number Diff line number Diff line change
Expand Up @@ -58,25 +58,19 @@ func attachNodeRun(cmd *cobra.Command, args []string) {

detachedMode := cmd.Flags().Changed("no-prompt")

if cmdexec.CheckRemote(nc) {
if !config.ValidateNodeConfig(nc, !detachedMode) {
zap.S().Fatal("Invalid remote node config (Username/Password/IP), use 'single quotes' to pass password")
}
}

var err error
if detachedMode {
err = config.LoadConfig(util.Pf9DBLoc, cfg, nc)
err = config.LoadConfig(util.Pf9DBLoc, cfg)
} else {
err = config.LoadConfigInteractive(util.Pf9DBLoc, cfg, nc)
err = config.LoadConfigInteractive(util.Pf9DBLoc, cfg)
}
if err != nil {
zap.S().Fatalf("Unable to load the context: %s\n", err.Error())
}
fmt.Println(color.Green("✓ ") + "Loaded Config Successfully")
zap.S().Debug("Loaded Config Successfully")
var executor cmdexec.Executor
if executor, err = cmdexec.GetExecutor(cfg.Spec.ProxyURL, nc); err != nil {
if executor, err = cmdexec.GetExecutor(cfg.Spec.ProxyURL, util.Node, nc); err != nil {
zap.S().Fatalf("Unable to create executor: %s\n", err.Error())
}

Expand Down
12 changes: 3 additions & 9 deletions cmd/authoriseNode.go
Original file line number Diff line number Diff line change
Expand Up @@ -38,25 +38,19 @@ func authNodeRun(cmd *cobra.Command, args []string) {

detachedMode := cmd.Flags().Changed("no-prompt")

if cmdexec.CheckRemote(nc) {
if !config.ValidateNodeConfig(nc, !detachedMode) {
zap.S().Fatal("Invalid remote node config (Username/Password/IP), use 'single quotes' to pass password")
}
}

var err error
if detachedMode {
err = config.LoadConfig(util.Pf9DBLoc, cfg, nc)
err = config.LoadConfig(util.Pf9DBLoc, cfg)
} else {
err = config.LoadConfigInteractive(util.Pf9DBLoc, cfg, nc)
err = config.LoadConfigInteractive(util.Pf9DBLoc, cfg)
}
if err != nil {
zap.S().Fatalf("Unable to load the context: %s\n", err.Error())
}
fmt.Println(color.Green("✓ ") + "Loaded Config Successfully")
zap.S().Debug("Loaded Config Successfully")
var executor cmdexec.Executor
if executor, err = cmdexec.GetExecutor(cfg.Spec.ProxyURL, nc); err != nil {
if executor, err = cmdexec.GetExecutor(cfg.Spec.ProxyURL, util.Node, nc); err != nil {
zap.S().Fatalf("Unable to create executor: %s\n", err.Error())
}

Expand Down
21 changes: 10 additions & 11 deletions cmd/bootstrap.go
Original file line number Diff line number Diff line change
Expand Up @@ -14,7 +14,6 @@ import (
"github.com/platform9/pf9ctl/pkg/color"
"github.com/platform9/pf9ctl/pkg/config"
"github.com/platform9/pf9ctl/pkg/log"
"github.com/platform9/pf9ctl/pkg/objects"
"github.com/platform9/pf9ctl/pkg/pmk"
"github.com/platform9/pf9ctl/pkg/qbert"
"github.com/platform9/pf9ctl/pkg/supportBundle"
Expand Down Expand Up @@ -100,16 +99,16 @@ var bootstrapCmd = &cobra.Command{
},

PreRun: func(cmd *cobra.Command, args []string) {
if node.Hostname != "" {
nc.Spec.Nodes = append(nc.Spec.Nodes, node)
if util.Node.Hostname != "" {
nc.Spec.Nodes = append(nc.Spec.Nodes, util.Node)
}
},

Example: "pf9ctl bootstrap <clusterName> --pmk-version <version>",
Run: bootstrapCmdRun,
}

var node objects.Node
//var node objects.Node

func init() {
bootstrapCmd.Flags().IntVar(&networkStack, "network-stack", 0, "0 for ipv4 and 1 for ipv6")
Expand Down Expand Up @@ -142,10 +141,10 @@ func init() {
bootstrapCmd.Flags().BoolVar(&privileged, "privileged", true, "Enable privileged mode for K8s API, use either --privileged or --privileged=false to change")
bootstrapCmd.Flags().BoolVar(&allowWorkloadsOnMaster, "allow-workloads-on-master", true, "Taint master nodes ( to enable workloads ), use either --allow-workloads-on-master or --allow-workloads-on-master=false to change")
bootstrapCmd.Flags().StringVar(&networkPlugin, "network-plugin", "calico", "Specify network plugin ( Possible values: flannel or calico )")
bootstrapCmd.Flags().StringVarP(&node.Hostname, "user", "u", "", "Ssh username for the node")
bootstrapCmd.Flags().StringVarP(&util.Node.Hostname, "user", "u", "", "Ssh username for the node")
bootstrapCmd.Flags().StringVarP(&nc.Password, "password", "p", "", "Ssh password for the node (use 'single quotes' to pass password)")
bootstrapCmd.Flags().StringVarP(&nc.SshKey, "ssh-key", "s", "", "Ssh key file for connecting to the node")
bootstrapCmd.Flags().StringVarP(&node.Ip, "ip", "i", "", "IP address of the host to be prepared")
bootstrapCmd.Flags().StringVarP(&util.Node.Ip, "ip", "i", "", "IP address of the host to be prepared")
bootstrapCmd.Flags().StringVar(&util.MFA, "mfa", "", "MFA token")
bootstrapCmd.Flags().StringVarP(&util.SudoPassword, "sudo-pass", "e", "", "Sudo password for user on remote host")
bootstrapCmd.Flags().BoolVarP(&util.RemoveExistingPkgs, "remove-existing-pkgs", "r", false, "Will remove previous installation if found (default false)")
Expand Down Expand Up @@ -207,7 +206,7 @@ func bootstrapCmdRun(cmd *cobra.Command, args []string) {
}

detachedMode := cmd.Flags().Changed("no-prompt")
isRemote := cmdexec.CheckRemote(nc)
isRemote := cmdexec.CheckRemote(util.Node)

isEtcdBackupDisabled := cmd.Flags().Changed("etcd-backup")
qbert.IsMonitoringDisabled = cmd.Flags().Changed("monitoring")
Expand All @@ -229,16 +228,16 @@ func bootstrapCmdRun(cmd *cobra.Command, args []string) {
}

if isRemote {
if !config.ValidateNodeConfig(nc, !detachedMode) {
if !config.ValidateNodeConfig(util.Node, nc, !detachedMode) {
zap.S().Fatal("Invalid remote node config (Username/Password/IP), use 'single quotes' to pass password")
}
}

var err error
if detachedMode {
err = config.LoadConfig(util.Pf9DBLoc, cfg, nc)
err = config.LoadConfig(util.Pf9DBLoc, cfg)
} else {
err = config.LoadConfigInteractive(util.Pf9DBLoc, cfg, nc)
err = config.LoadConfigInteractive(util.Pf9DBLoc, cfg)
}
if err != nil {
zap.S().Fatalf("Unable to load the context: %s\n", err.Error())
Expand All @@ -247,7 +246,7 @@ func bootstrapCmdRun(cmd *cobra.Command, args []string) {
fmt.Println(color.Green("✓ ") + "Loaded Config Successfully")
zap.S().Debug("Loaded Config Successfully")
var executor cmdexec.Executor
if executor, err = cmdexec.GetExecutor(cfg.Spec.ProxyURL, nc); err != nil {
if executor, err = cmdexec.GetExecutor(cfg.Spec.ProxyURL, util.Node, nc); err != nil {
zap.S().Fatalf("Unable to create executor: %s\n", err.Error())
}

Expand Down
18 changes: 9 additions & 9 deletions cmd/checkNode.go
Original file line number Diff line number Diff line change
Expand Up @@ -26,18 +26,18 @@ var (
at https://platform9.com/blog/support/managed-container-cloud-requirements-checklist/`,
Run: checkNodeRun,
PreRun: func(cmd *cobra.Command, args []string) {
if node.Hostname != "" {
nc.Spec.Nodes = append(nc.Spec.Nodes, node)
if util.Node.Hostname != "" {
nc.Spec.Nodes = append(nc.Spec.Nodes, util.Node)
}
},
}
)

func init() {
checkNodeCmd.Flags().StringVarP(&node.Hostname, "user", "u", "", "ssh username for the nodes")
checkNodeCmd.Flags().StringVarP(&util.Node.Hostname, "user", "u", "", "ssh username for the nodes")
checkNodeCmd.Flags().StringVarP(&nc.Password, "password", "p", "", "ssh password for the nodes (use 'single quotes' to pass password)")
checkNodeCmd.Flags().StringVarP(&nc.SshKey, "ssh-key", "s", "", "ssh key file for connecting to the nodes")
checkNodeCmd.Flags().StringVarP(&node.Ip, "ip", "i", "", "IP address of host to be prepared")
checkNodeCmd.Flags().StringVarP(&util.Node.Ip, "ip", "i", "", "IP address of host to be prepared")
checkNodeCmd.Flags().StringVar(&util.MFA, "mfa", "", "MFA token")
checkNodeCmd.Flags().StringVarP(&util.SudoPassword, "sudo-pass", "e", "", "sudo password for user on remote host")
checkNodeCmd.Flags().BoolVarP(&util.RemoveExistingPkgs, "remove-existing-pkgs", "r", false, "Will remove previous installation if found (default false)")
Expand All @@ -61,20 +61,20 @@ func checkNodeRun(cmd *cobra.Command, args []string) {
}

detachedMode := cmd.Flags().Changed("no-prompt")
isRemote := cmdexec.CheckRemote(nc)
isRemote := cmdexec.CheckRemote(util.Node)

if isRemote {
if !config.ValidateNodeConfig(nc, !detachedMode) {
if !config.ValidateNodeConfig(util.Node, nc, !detachedMode) {
zap.S().Fatal("Invalid remote node config (Username/Password/IP), use 'single quotes' to pass password")
}
}

var err error
if detachedMode {
util.RemoveExistingPkgs = true
err = config.LoadConfig(util.Pf9DBLoc, cfg, nc)
err = config.LoadConfig(util.Pf9DBLoc, cfg)
} else {
err = config.LoadConfigInteractive(util.Pf9DBLoc, cfg, nc)
err = config.LoadConfigInteractive(util.Pf9DBLoc, cfg)
}
if err != nil {
zap.S().Fatalf("Unable to load the context: %s\n", err.Error())
Expand All @@ -83,7 +83,7 @@ func checkNodeRun(cmd *cobra.Command, args []string) {
fmt.Println(color.Green("✓ ") + "Loaded Config Successfully")
zap.S().Debug("Loaded Config Successfully")
var executor cmdexec.Executor
if executor, err = cmdexec.GetExecutor(cfg.Spec.ProxyURL, nc); err != nil {
if executor, err = cmdexec.GetExecutor(cfg.Spec.ProxyURL, util.Node, nc); err != nil {
zap.S().Fatalf("Unable to create executor: %s\n", err.Error())
}

Expand Down
7 changes: 3 additions & 4 deletions cmd/cloudProviders.go
Original file line number Diff line number Diff line change
Expand Up @@ -7,7 +7,6 @@ import (

"github.com/platform9/pf9ctl/pkg/color"
"github.com/platform9/pf9ctl/pkg/config"
"github.com/platform9/pf9ctl/pkg/objects"
"github.com/platform9/pf9ctl/pkg/pmk"
"github.com/spf13/cobra"
"github.com/spf13/pflag"
Expand Down Expand Up @@ -68,7 +67,7 @@ func checkGoogleProviderRun(cmd *cobra.Command, args []string) {
os.Exit(1)
}
} else {
err = config.GetConfigRecursive("google.json", cfg, &objects.NodeConfig{})
err = config.GetConfigRecursive("google.json", cfg)
}
if err != nil {
zap.S().Fatalf("Unable to load the context: %s\n", err.Error())
Expand All @@ -89,7 +88,7 @@ func checkAmazonProviderRun(cmd *cobra.Command, args []string) {
os.Exit(1)
}
} else {
err = config.GetConfigRecursive("amazon.json", cfg, &objects.NodeConfig{})
err = config.GetConfigRecursive("amazon.json", cfg)
}
if err != nil {
zap.S().Fatalf("Unable to load the context: %s\n", err.Error())
Expand All @@ -109,7 +108,7 @@ func checkAzureProviderRun(cmd *cobra.Command, args []string) {
os.Exit(1)
}
} else {
err = config.GetConfigRecursive("azure.json", cfg, &objects.NodeConfig{})
err = config.GetConfigRecursive("azure.json", cfg)
}
if err != nil {
zap.S().Fatalf("Unable to load the context: %s\n")
Expand Down
6 changes: 3 additions & 3 deletions cmd/clusterListCmd.go
Original file line number Diff line number Diff line change
Expand Up @@ -29,17 +29,17 @@ func listClusterCmdRun(cmd *cobra.Command, args []string) {

var err error
if detachedMode {
err = config.LoadConfig(util.Pf9DBLoc, cfg, nc)
err = config.LoadConfig(util.Pf9DBLoc, cfg)
} else {
err = config.LoadConfigInteractive(util.Pf9DBLoc, cfg, nc)
err = config.LoadConfigInteractive(util.Pf9DBLoc, cfg)
}
if err != nil {
zap.S().Fatalf("Unable to load the context: %s\n", err.Error())
}
fmt.Println(color.Green("✓ ") + "Loaded Config Successfully")

var executor cmdexec.Executor
if executor, err = cmdexec.GetExecutor(cfg.Spec.ProxyURL, nc); err != nil {
if executor, err = cmdexec.GetExecutor(cfg.Spec.ProxyURL, util.Node, nc); err != nil {
zap.S().Fatalf("Unable to create executor: %s\n", err.Error())
}

Expand Down
5 changes: 3 additions & 2 deletions cmd/config.go
Original file line number Diff line number Diff line change
Expand Up @@ -75,6 +75,7 @@ var (
}

nc = &objects.NodeConfig{}
//host = objects.Node{}
)

func init() {
Expand All @@ -100,7 +101,7 @@ func configCmdCreateRun(cmd *cobra.Command, args []string) {
}

if cmd.Flags().Changed("no-prompt") {
if err = config.ValidateUserCredentials(cfg, &objects.NodeConfig{}); err != nil {
if err = config.ValidateUserCredentials(cfg); err != nil {
zap.S().Fatal(color.Red("x "), err)
}

Expand All @@ -109,7 +110,7 @@ func configCmdCreateRun(cmd *cobra.Command, args []string) {
}

} else {
if err = config.GetConfigRecursive(util.Pf9DBLoc, cfg, &objects.NodeConfig{}); err != nil {
if err = config.GetConfigRecursive(util.Pf9DBLoc, cfg); err != nil {
zap.S().Fatal(color.Red("x "), err)
}
}
Expand Down
12 changes: 3 additions & 9 deletions cmd/deauthoriseNode.go
Original file line number Diff line number Diff line change
Expand Up @@ -37,25 +37,19 @@ func deauthNodeRun(cmd *cobra.Command, args []string) {

detachedMode := cmd.Flags().Changed("no-prompt")

if cmdexec.CheckRemote(nc) {
if !config.ValidateNodeConfig(nc, !detachedMode) {
zap.S().Fatal("Invalid remote node config (Username/Password/IP), use 'single quotes' to pass password")
}
}

var err error
if detachedMode {
err = config.LoadConfig(util.Pf9DBLoc, cfg, nc)
err = config.LoadConfig(util.Pf9DBLoc, cfg)
} else {
err = config.LoadConfigInteractive(util.Pf9DBLoc, cfg, nc)
err = config.LoadConfigInteractive(util.Pf9DBLoc, cfg)
}
if err != nil {
zap.S().Fatalf("Unable to load the context: %s\n", err.Error())
}
fmt.Println(color.Green("✓ ") + "Loaded Config Successfully")
zap.S().Debug("Loaded Config Successfully")
var executor cmdexec.Executor
if executor, err = cmdexec.GetExecutor(cfg.Spec.ProxyURL, nc); err != nil {
if executor, err = cmdexec.GetExecutor(cfg.Spec.ProxyURL, util.Node, nc); err != nil {
zap.S().Fatalf("Unable to create executor: %s\n", err.Error())
}

Expand Down
17 changes: 9 additions & 8 deletions cmd/decomissionNode.go
Original file line number Diff line number Diff line change
Expand Up @@ -25,18 +25,18 @@ var decommissionNodeCmd = &cobra.Command{
},
Run: decommissionNodeRun,
PreRun: func(cmd *cobra.Command, args []string) {
if node.Hostname != "" {
nc.Spec.Nodes = append(nc.Spec.Nodes, node)
if util.Node.Hostname != "" {
nc.Spec.Nodes = append(nc.Spec.Nodes, util.Node)
}
},
}

func init() {
decommissionNodeCmd.Flags().StringVar(&util.MFA, "mfa", "", "MFA token")
decommissionNodeCmd.Flags().StringVarP(&node.Hostname, "user", "u", "", "ssh username for the nodes")
decommissionNodeCmd.Flags().StringVarP(&util.Node.Hostname, "user", "u", "", "ssh username for the nodes")
decommissionNodeCmd.Flags().StringVarP(&nc.Password, "password", "p", "", "ssh password for the nodes (use 'single quotes' to pass password)")
decommissionNodeCmd.Flags().StringVarP(&nc.SshKey, "ssh-key", "s", "", "ssh key file for connecting to the nodes")
decommissionNodeCmd.Flags().StringVarP(&node.Ip, "ip", "i", "", "IP address of host to be decommissioned")
decommissionNodeCmd.Flags().StringVarP(&util.Node.Ip, "ip", "i", "", "IP address of host to be decommissioned")
decommissionNodeCmd.Flags().StringVar(&ConfigPath, "user-config", "", "Path of user-config file")
decommissionNodeCmd.Flags().StringVar(&NodeConfigPath, "node-config", "", "Path of node-config file")
nodeCmd.AddCommand(decommissionNodeCmd)
Expand All @@ -50,21 +50,22 @@ func decommissionNodeRun(cmd *cobra.Command, args []string) {

if cmd.Flags().Changed("node-config") {
config.LoadNodeConfig(nc, NodeConfigPath)
util.Node = nc.Spec.Nodes[0]
}

detachedMode := cmd.Flags().Changed("no-prompt")

if cmdexec.CheckRemote(nc) {
if !config.ValidateNodeConfig(nc, !detachedMode) {
if cmdexec.CheckRemote(util.Node) {
if !config.ValidateNodeConfig(util.Node, nc, !detachedMode) {
zap.S().Fatal("Invalid remote node config (Username/Password/IP), use 'single quotes' to pass password")
}
}

var err error
if detachedMode {
err = config.LoadConfig(util.Pf9DBLoc, cfg, nc)
err = config.LoadConfig(util.Pf9DBLoc, cfg)
} else {
err = config.LoadConfigInteractive(util.Pf9DBLoc, cfg, nc)
err = config.LoadConfigInteractive(util.Pf9DBLoc, cfg)
}
if err != nil {
zap.S().Fatalf("Unable to load the context: %s\n", err.Error())
Expand Down
12 changes: 3 additions & 9 deletions cmd/deleteCluster.go
Original file line number Diff line number Diff line change
Expand Up @@ -47,25 +47,19 @@ func deleteClusterRun(cmd *cobra.Command, args []string) {

detachedMode := cmd.Flags().Changed("no-prompt")

if cmdexec.CheckRemote(nc) {
if !config.ValidateNodeConfig(nc, !detachedMode) {
zap.S().Fatal("Invalid remote node config (Username/Password/IP), use 'single quotes' to pass password")
}
}

var err error
if detachedMode {
err = config.LoadConfig(util.Pf9DBLoc, cfg, nc)
err = config.LoadConfig(util.Pf9DBLoc, cfg)
} else {
err = config.LoadConfigInteractive(util.Pf9DBLoc, cfg, nc)
err = config.LoadConfigInteractive(util.Pf9DBLoc, cfg)
}
if err != nil {
zap.S().Fatalf("Unable to load the context: %s\n", err.Error())
}
fmt.Println(color.Green("✓ ") + "Loaded Config Successfully")
zap.S().Debug("Loaded Config Successfully")
var executor cmdexec.Executor
if executor, err = cmdexec.GetExecutor(cfg.Spec.ProxyURL, nc); err != nil {
if executor, err = cmdexec.GetExecutor(cfg.Spec.ProxyURL, util.Node, nc); err != nil {
zap.S().Fatalf("Unable to create executor: %s\n", err.Error())
}

Expand Down
Loading