@@ -27,6 +27,12 @@ type Driver struct {
27
27
// The CloudControl region code
28
28
CloudControlRegion string
29
29
30
+ // The name of the target network domain.
31
+ NetworkDomainName string
32
+
33
+ // The Id of the data centre in which the target network domain is located.
34
+ DataCenterID string
35
+
30
36
// The Id of the target network domain.
31
37
NetworkDomainID string
32
38
@@ -72,12 +78,17 @@ func (driver *Driver) GetCreateFlags() []mcnflag.Flag {
72
78
Value : "" ,
73
79
},
74
80
mcnflag.StringFlag {
75
- Name : "network-domain-id" ,
76
- Usage : "The Id of the target CloudControl network domain" ,
81
+ Name : "networkdomain" ,
82
+ Usage : "The name of the target CloudControl network domain" ,
83
+ Value : "" ,
84
+ },
85
+ mcnflag.StringFlag {
86
+ Name : "datacenter" ,
87
+ Usage : "The Id of the data centre in which the the target CloudControl network domain is located" ,
77
88
Value : "" ,
78
89
},
79
90
mcnflag.StringFlag {
80
- Name : "vlan-id " ,
91
+ Name : "vlan" ,
81
92
Usage : "The Id of the target CloudControl VLAN" ,
82
93
Value : "" ,
83
94
},
@@ -113,8 +124,9 @@ func (driver *Driver) SetConfigFromFlags(flags drivers.DriverOptions) error {
113
124
driver .CloudControlPassword = flags .String ("cloudcontrol-password" )
114
125
driver .CloudControlRegion = flags .String ("cloudcontrol-region" )
115
126
116
- driver .NetworkDomainID = flags .String ("network-domain-id" )
117
- driver .VLANID = flags .String ("vlan-id" )
127
+ driver .NetworkDomainName = flags .String ("networkdomain" )
128
+ driver .DataCenterID = flags .String ("datacenter" )
129
+ driver .VLANID = flags .String ("vlan" )
118
130
driver .ImageName = DefaultImageName
119
131
120
132
driver .SSHUser = flags .String ("ssh-user" )
@@ -126,47 +138,31 @@ func (driver *Driver) SetConfigFromFlags(flags drivers.DriverOptions) error {
126
138
127
139
// PreCreateCheck validates the configuration before making any changes.
128
140
func (driver * Driver ) PreCreateCheck () error {
129
- client , err := driver .getCloudControlClient ()
130
- if err != nil {
131
- return err
132
- }
133
-
134
141
log .Info ("Examining target network domain (Id = '%s', region = '%s')..." , driver .NetworkDomainID , driver .CloudControlRegion )
135
142
136
- networkDomain , err := client . GetNetworkDomain ( driver .NetworkDomainID )
143
+ err := driver .resolveNetworkDomain ( )
137
144
if err != nil {
138
- log .Errorf ("Failed to retrieve network domain '%s': %s" , driver .NetworkDomainID , err .Error ())
139
-
140
145
return err
141
146
}
142
- if networkDomain == nil {
143
- log .Errorf ("Network domain '%s' was not found in region '%s'." , driver .NetworkDomainID , driver .CloudControlRegion )
144
-
145
- return fmt .Errorf ("Network domain '%s' was not found" , driver .NetworkDomainID )
146
- }
147
147
148
148
log .Info ("Will create machine '%s' in network domain '%s' (data centre '%s')." ,
149
149
driver .MachineName ,
150
- networkDomain . Name ,
151
- networkDomain . DatacenterID ,
150
+ driver . NetworkDomainName ,
151
+ driver . DataCenterID ,
152
152
)
153
153
154
154
log .Info ("Examining target VLAN (Id = '%s')..." , driver .VLANID )
155
- vlan , err := client . GetVLAN ( driver .VLANID )
155
+ vlan , err := driver .getVLAN ( )
156
156
if err != nil {
157
- log .Errorf ("Failed to retrieve VLAN '%s': %s" , driver .VLANID , err .Error ())
158
-
159
157
return err
160
158
}
161
- if networkDomain == nil {
159
+ if vlan == nil {
162
160
log .Errorf ("VLAN '%s' was not found in network domain '%s'." , driver .VLANID , driver .NetworkDomainID )
163
161
164
162
return fmt .Errorf ("VLAN '%s' was not found" , driver .VLANID )
165
163
}
166
164
167
- if vlan .NetworkDomain .ID != networkDomain .ID {
168
- log .Errorf ("Cannot use VLAN '%s' because it belongs to network domain '%s' (not '%s')." , driver .VLANID , vlan .NetworkDomain .ID , networkDomain .ID )
169
-
165
+ if vlan .NetworkDomain .ID != driver .NetworkDomainID {
170
166
return fmt .Errorf ("Cannot use VLAN '%s' because it belongs to a different network domain ('%s')" , driver .VLANID , vlan .NetworkDomain .ID )
171
167
}
172
168
@@ -179,14 +175,16 @@ func (driver *Driver) Create() error {
179
175
if err != nil {
180
176
return err
181
177
}
182
-
183
178
log .Info ("Local machine's public IP address is '%s'." , localPublicIP )
184
179
180
+ log .Info ("Deploying server '%s'..." , driver .MachineName )
185
181
server , err := driver .deployServer ()
186
182
if err != nil {
187
183
return err
188
184
}
189
185
186
+ log .Info ("Server '%s' has private IP '%s'." , driver .MachineName , driver .IPAddress )
187
+
190
188
// TODO: Create NAT and firewall rules, if required.
191
189
192
190
log .Info ("Configuring SSH key for server '%s'..." )
0 commit comments