Skip to content

Commit a8f8059

Browse files
committed
Tidy up code.
1 parent ac99702 commit a8f8059

File tree

2 files changed

+58
-33
lines changed

2 files changed

+58
-33
lines changed

client.go

Lines changed: 32 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -71,6 +71,36 @@ func (driver *Driver) getNetworkDomain() (*compute.NetworkDomain, error) {
7171
return client.GetNetworkDomain(driver.ServerID)
7272
}
7373

74+
// Resolve (find) the target network domain by name and data centre Id.
75+
func (driver *Driver) resolveNetworkDomain() error {
76+
driver.NetworkDomainID = ""
77+
78+
if driver.NetworkDomainName == "" {
79+
return errors.New("Network domain name has not been configured")
80+
}
81+
82+
if driver.DataCenterID == "" {
83+
return errors.New("Data centre Id has not been configured")
84+
}
85+
86+
client, err := driver.getCloudControlClient()
87+
if err != nil {
88+
return err
89+
}
90+
91+
networkDomain, err := client.GetNetworkDomainByName(driver.NetworkDomainName, driver.DataCenterID)
92+
if err != nil {
93+
return err
94+
}
95+
if networkDomain == nil {
96+
return fmt.Errorf("No network domain named '%s' was found in data centre '%s'", driver.NetworkDomainName, driver.DataCenterID)
97+
}
98+
99+
driver.NetworkDomainID = networkDomain.ID
100+
101+
return nil
102+
}
103+
74104
// Retrieve the target VLAN.
75105
func (driver *Driver) getVLAN() (*compute.VLAN, error) {
76106
if driver.VLANID == "" {
@@ -87,9 +117,7 @@ func (driver *Driver) getVLAN() (*compute.VLAN, error) {
87117

88118
// Resolve (find) the target OS image.
89119
func (driver *Driver) resolveOSImage() error {
90-
if driver.ImageID != "" {
91-
return nil
92-
}
120+
driver.ImageID = ""
93121

94122
networkDomain, err := driver.getNetworkDomain()
95123
if err != nil {
@@ -155,16 +183,15 @@ func (driver *Driver) deployServer() (*compute.Server, error) {
155183

156184
log.Debug("Deploying server '%s' ('%s')...", driver.ServerID, driver.MachineName)
157185

158-
log.Info("Server '%s' is being provisioned...")
159186
resource, err := client.WaitForDeploy(compute.ResourceTypeServer, driver.ServerID, 15*time.Minute)
160187
if err != nil {
161188
return nil, err
162189
}
163190
server := resource.(*compute.Server)
191+
164192
log.Debug("Server '%s' ('%s') has been successfully provisioned...", driver.ServerID, server.Name)
165193

166194
driver.IPAddress = *server.Network.PrimaryAdapter.PrivateIPv4Address
167-
log.Info("Server '%s' has private IP '%s'.", server.Name, driver.IPAddress)
168195

169196
return server, nil
170197
}

driver.go

Lines changed: 26 additions & 28 deletions
Original file line numberDiff line numberDiff line change
@@ -27,6 +27,12 @@ type Driver struct {
2727
// The CloudControl region code
2828
CloudControlRegion string
2929

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+
3036
// The Id of the target network domain.
3137
NetworkDomainID string
3238

@@ -72,12 +78,17 @@ func (driver *Driver) GetCreateFlags() []mcnflag.Flag {
7278
Value: "",
7379
},
7480
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",
7788
Value: "",
7889
},
7990
mcnflag.StringFlag{
80-
Name: "vlan-id",
91+
Name: "vlan",
8192
Usage: "The Id of the target CloudControl VLAN",
8293
Value: "",
8394
},
@@ -113,8 +124,9 @@ func (driver *Driver) SetConfigFromFlags(flags drivers.DriverOptions) error {
113124
driver.CloudControlPassword = flags.String("cloudcontrol-password")
114125
driver.CloudControlRegion = flags.String("cloudcontrol-region")
115126

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")
118130
driver.ImageName = DefaultImageName
119131

120132
driver.SSHUser = flags.String("ssh-user")
@@ -126,47 +138,31 @@ func (driver *Driver) SetConfigFromFlags(flags drivers.DriverOptions) error {
126138

127139
// PreCreateCheck validates the configuration before making any changes.
128140
func (driver *Driver) PreCreateCheck() error {
129-
client, err := driver.getCloudControlClient()
130-
if err != nil {
131-
return err
132-
}
133-
134141
log.Info("Examining target network domain (Id = '%s', region = '%s')...", driver.NetworkDomainID, driver.CloudControlRegion)
135142

136-
networkDomain, err := client.GetNetworkDomain(driver.NetworkDomainID)
143+
err := driver.resolveNetworkDomain()
137144
if err != nil {
138-
log.Errorf("Failed to retrieve network domain '%s': %s", driver.NetworkDomainID, err.Error())
139-
140145
return err
141146
}
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-
}
147147

148148
log.Info("Will create machine '%s' in network domain '%s' (data centre '%s').",
149149
driver.MachineName,
150-
networkDomain.Name,
151-
networkDomain.DatacenterID,
150+
driver.NetworkDomainName,
151+
driver.DataCenterID,
152152
)
153153

154154
log.Info("Examining target VLAN (Id = '%s')...", driver.VLANID)
155-
vlan, err := client.GetVLAN(driver.VLANID)
155+
vlan, err := driver.getVLAN()
156156
if err != nil {
157-
log.Errorf("Failed to retrieve VLAN '%s': %s", driver.VLANID, err.Error())
158-
159157
return err
160158
}
161-
if networkDomain == nil {
159+
if vlan == nil {
162160
log.Errorf("VLAN '%s' was not found in network domain '%s'.", driver.VLANID, driver.NetworkDomainID)
163161

164162
return fmt.Errorf("VLAN '%s' was not found", driver.VLANID)
165163
}
166164

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 {
170166
return fmt.Errorf("Cannot use VLAN '%s' because it belongs to a different network domain ('%s')", driver.VLANID, vlan.NetworkDomain.ID)
171167
}
172168

@@ -179,14 +175,16 @@ func (driver *Driver) Create() error {
179175
if err != nil {
180176
return err
181177
}
182-
183178
log.Info("Local machine's public IP address is '%s'.", localPublicIP)
184179

180+
log.Info("Deploying server '%s'...", driver.MachineName)
185181
server, err := driver.deployServer()
186182
if err != nil {
187183
return err
188184
}
189185

186+
log.Info("Server '%s' has private IP '%s'.", driver.MachineName, driver.IPAddress)
187+
190188
// TODO: Create NAT and firewall rules, if required.
191189

192190
log.Info("Configuring SSH key for server '%s'...")

0 commit comments

Comments
 (0)