forked from IBM-Cloud/bluemix-go
/
main.go
109 lines (87 loc) · 2.44 KB
/
main.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
100
101
102
103
104
105
106
107
108
109
package main
import (
"flag"
"fmt"
"log"
"os"
bluemix "github.com/IBM-Cloud/bluemix-go"
"github.com/IBM-Cloud/bluemix-go/helpers"
"github.com/IBM-Cloud/bluemix-go/session"
"github.com/IBM-Cloud/bluemix-go/api/account/accountv2"
v1 "github.com/IBM-Cloud/bluemix-go/api/container/containerv1"
"github.com/IBM-Cloud/bluemix-go/api/mccp/mccpv2"
)
var clusterInfo = v1.ClusterCreateRequest{
Name: "my_cluster",
Datacenter: "dal10",
MachineType: "free",
WorkerNum: 1,
PrivateVlan: "vlan",
PublicVlan: "vlan",
Isolation: "public",
}
func main() {
c := new(bluemix.Config)
flag.StringVar(&c.IBMID, "ibmid", "", "The IBM ID. You can also source it from env IBMID")
flag.StringVar(&c.IBMIDPassword, "ibmidpass", "", "The IBMID Password. You can also source it from IBMID_PASSWORD")
flag.StringVar(&c.Region, "region", "us-south", "The Bluemix region. You can source it from env IC_REGION or BLUEMIX_REGION")
flag.BoolVar(&c.Debug, "debug", false, "Show full trace if on")
var org string
flag.StringVar(&org, "org", "", "Bluemix Organization")
var space string
flag.StringVar(&space, "space", "", "Bluemix Space")
var endpoint string
flag.StringVar(&endpoint, "endpoint", "", "Cluster endpoint")
var skipDeletion bool
flag.BoolVar(&skipDeletion, "no-delete", false, "If provided will delete the resources created")
flag.Parse()
if org == "" || space == "" || endpoint == "" {
flag.Usage()
os.Exit(1)
}
sess, err := session.New(c)
if err != nil {
log.Fatal(err)
}
client, err := mccpv2.New(sess)
if err != nil {
log.Fatal(err)
}
region := sess.Config.Region
orgAPI := client.Organizations()
myorg, err := orgAPI.FindByName(org, region)
if err != nil {
log.Fatal(err)
}
spaceAPI := client.Spaces()
myspace, err := spaceAPI.FindByNameInOrg(myorg.GUID, space, region)
if err != nil {
log.Fatal(err)
}
accClient, err := accountv2.New(sess)
if err != nil {
log.Fatal(err)
}
accountAPI := accClient.Accounts()
myAccount, err := accountAPI.FindByOrg(myorg.GUID, c.Region)
if err != nil {
log.Fatal(err)
}
target := v1.ClusterTargetHeader{
OrgID: myorg.GUID,
SpaceID: myspace.GUID,
AccountID: myAccount.GUID,
}
clusterClient, err := v1.New(sess.Copy(&bluemix.Config{
Endpoint: helpers.String(endpoint),
}))
if err != nil {
log.Fatal(err)
}
clustersAPI := clusterClient.Clusters()
out, err := clustersAPI.Create(clusterInfo, target)
if err != nil {
log.Fatal(err)
}
fmt.Println(out)
}