/
cloud_accounts_cmd.go
99 lines (82 loc) · 2.85 KB
/
cloud_accounts_cmd.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
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
package cmd
import (
"github.com/codegangsta/cli"
"github.com/flexiant/concerto/api/settings"
"github.com/flexiant/concerto/utils"
"github.com/flexiant/concerto/utils/format"
)
// WireUpCloudAccount prepares common resources to send request to Concerto API
func WireUpCloudAccount(c *cli.Context) (ds *settings.CloudAccountService, f format.Formatter) {
f = format.GetFormatter()
config, err := utils.GetConcertoConfig()
if err != nil {
f.PrintFatal("Couldn't wire up config", err)
}
hcs, err := utils.NewHTTPConcertoService(config)
if err != nil {
f.PrintFatal("Couldn't wire up concerto service", err)
}
ds, err = settings.NewCloudAccountService(hcs)
if err != nil {
f.PrintFatal("Couldn't wire up cloudAccount service", err)
}
return ds, f
}
// CloudAccountList subcommand function
func CloudAccountList(c *cli.Context) error {
debugCmdFuncInfo(c)
cloudAccountSvc, formatter := WireUpCloudAccount(c)
cloudAccounts, err := cloudAccountSvc.GetCloudAccountList()
if err != nil {
formatter.PrintFatal("Couldn't receive cloudAccount data", err)
}
if err = formatter.PrintList(cloudAccounts); err != nil {
formatter.PrintFatal("Couldn't print/format result", err)
}
return nil
}
// CloudAccountCreate subcommand function
func CloudAccountCreate(c *cli.Context) error {
debugCmdFuncInfo(c)
cloudAccountSvc, formatter := WireUpCloudAccount(c)
checkRequiredFlags(c, []string{"cloud_provider_id", "credentials"}, formatter)
//cloudAccount, err := cloudAccountSvc.CreateCloudAccount(utils.FlagConvertParams(c))
// parse json parameter values
params, err := utils.FlagConvertParamsJSON(c, []string{"credentials"})
if err != nil {
formatter.PrintFatal("Error parsing parameters", err)
}
cloudAccount, err := cloudAccountSvc.CreateCloudAccount(params)
if err != nil {
formatter.PrintFatal("Couldn't create cloudAccount", err)
}
if err = formatter.PrintItem(*cloudAccount); err != nil {
formatter.PrintFatal("Couldn't print/format result", err)
}
return nil
}
// CloudAccountUpdate subcommand function
func CloudAccountUpdate(c *cli.Context) error {
debugCmdFuncInfo(c)
cloudAccountSvc, formatter := WireUpCloudAccount(c)
checkRequiredFlags(c, []string{"id"}, formatter)
cloudAccount, err := cloudAccountSvc.UpdateCloudAccount(utils.FlagConvertParams(c), c.String("id"))
if err != nil {
formatter.PrintFatal("Couldn't update cloudAccount", err)
}
if err = formatter.PrintItem(*cloudAccount); err != nil {
formatter.PrintFatal("Couldn't print/format result", err)
}
return nil
}
// CloudAccountDelete subcommand function
func CloudAccountDelete(c *cli.Context) error {
debugCmdFuncInfo(c)
cloudAccountSvc, formatter := WireUpCloudAccount(c)
checkRequiredFlags(c, []string{"id"}, formatter)
err := cloudAccountSvc.DeleteCloudAccount(c.String("id"))
if err != nil {
formatter.PrintFatal("Couldn't delete cloudAccount", err)
}
return nil
}