-
Notifications
You must be signed in to change notification settings - Fork 49
/
bootstrap_remotedirect.go
72 lines (57 loc) · 1.98 KB
/
bootstrap_remotedirect.go
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
package bootstrap
import (
"github.com/spf13/cobra"
"opendev.org/airship/airshipctl/pkg/environment"
alog "opendev.org/airship/airshipctl/pkg/log"
remote "opendev.org/airship/airshipctl/pkg/remote"
)
// RemoteDirect settings for remotedirect command
type RemoteDirectSettings struct {
*environment.AirshipCTLSettings
RemoteConfig remote.RemoteDirectConfig
}
// InitFlags adds flags and their default settings for Remote Direct command
func (cmdSetting *RemoteDirectSettings) InitFlags(cmd *cobra.Command) {
flags := cmd.Flags()
// TODO: Remove CLI flags after reading configuration from config documents
// ========================================================================
flags.StringVar(&cmdSetting.RemoteConfig.RemoteURL,
"remote-url",
"http://localhost:8000",
"[Temporary. Will be removed] Remote Redfish/Smash URL")
flags.StringVar(&cmdSetting.RemoteConfig.EphemeralNodeId,
"eph-node-id",
"",
"[Temporary. Will be removed] Ephemeral Node ID")
flags.StringVar(&cmdSetting.RemoteConfig.IsoPath,
"iso-path",
"",
"[Temporary. Will be removed] Remote ISO path for ephemeral node")
flags.StringVar(&cmdSetting.RemoteConfig.RemoteType,
"remote-type",
"redfish",
"Remote type e.g. redfish, smash etc.")
err := cmd.MarkFlagRequired("eph-node-id")
if err != nil {
alog.Fatal(err)
}
err = cmd.MarkFlagRequired("iso-path")
if err != nil {
alog.Fatal(err)
}
}
// New Bootstrap remote direct subcommand
func NewRemoteDirectCommand(rootSettings *environment.AirshipCTLSettings) *cobra.Command {
settings := &RemoteDirectSettings{AirshipCTLSettings: rootSettings}
remoteDirect := &cobra.Command{
Use: "remotedirect",
Short: "Bootstrap ephemeral node",
RunE: func(cmd *cobra.Command, args []string) error {
/* TODO: Get config from settings.GetCurrentContext() and remove cli arguments */
/* Trigger remotedirect based on remote type */
return remote.DoRemoteDirect(settings.RemoteConfig)
},
}
settings.InitFlags(remoteDirect)
return remoteDirect
}