@@ -28,6 +28,7 @@ type ComputeUtil struct {
28
28
project string
29
29
diskTypeURL string
30
30
address string
31
+ networkProject string
31
32
network string
32
33
subnetwork string
33
34
preemptible bool
@@ -60,13 +61,27 @@ func newComputeUtil(driver *Driver) (*ComputeUtil, error) {
60
61
return nil , err
61
62
}
62
63
64
+ var networkProject string
65
+ if strings .Contains (driver .Network , "/projects/" ) {
66
+ var splittedElements = strings .Split (driver .Network , "/" )
67
+ for i , element := range splittedElements {
68
+ if element == "projects" {
69
+ networkProject = splittedElements [i + 1 ]
70
+ break
71
+ }
72
+ }
73
+ } else {
74
+ networkProject = driver .Project
75
+ }
76
+
63
77
return & ComputeUtil {
64
78
zone : driver .Zone ,
65
79
instanceName : driver .MachineName ,
66
80
userName : driver .SSHUser ,
67
81
project : driver .Project ,
68
82
diskTypeURL : driver .DiskType ,
69
83
address : driver .Address ,
84
+ networkProject : networkProject ,
70
85
network : driver .Network ,
71
86
subnetwork : driver .Subnetwork ,
72
87
preemptible : driver .Preemptible ,
@@ -137,7 +152,7 @@ func (c *ComputeUtil) region() string {
137
152
}
138
153
139
154
func (c * ComputeUtil ) firewallRule () (* raw.Firewall , error ) {
140
- return c .service .Firewalls .Get (c .project , firewallRule ).Do ()
155
+ return c .service .Firewalls .Get (c .networkProject , firewallRule ).Do ()
141
156
}
142
157
143
158
func missingOpenedPorts (rule * raw.Firewall , ports []string ) map [string ][]string {
@@ -185,15 +200,24 @@ func (c *ComputeUtil) openFirewallPorts(d *Driver) error {
185
200
log .Infof ("Opening firewall ports" )
186
201
187
202
create := false
188
- rule , _ := c .firewallRule ()
203
+ rule , err := c .firewallRule ()
204
+ if err != nil {
205
+ return err
206
+ }
189
207
if rule == nil {
190
208
create = true
209
+ var net string
210
+ if strings .Contains (d .Network , "/networks/" ) {
211
+ net = d .Network
212
+ } else {
213
+ net = c .globalURL + "/networks/" + d .Network
214
+ }
191
215
rule = & raw.Firewall {
192
216
Name : firewallRule ,
193
217
Allowed : []* raw.FirewallAllowed {},
194
218
SourceRanges : []string {"0.0.0.0/0" },
195
219
TargetTags : []string {firewallTargetTag },
196
- Network : c . globalURL + "/networks/" + d . Network ,
220
+ Network : net ,
197
221
}
198
222
}
199
223
@@ -215,9 +239,9 @@ func (c *ComputeUtil) openFirewallPorts(d *Driver) error {
215
239
216
240
var op * raw.Operation
217
241
if create {
218
- op , err = c .service .Firewalls .Insert (c .project , rule ).Do ()
242
+ op , err = c .service .Firewalls .Insert (c .networkProject , rule ).Do ()
219
243
} else {
220
- op , err = c .service .Firewalls .Update (c .project , firewallRule , rule ).Do ()
244
+ op , err = c .service .Firewalls .Update (c .networkProject , firewallRule , rule ).Do ()
221
245
}
222
246
223
247
if err != nil {
@@ -277,7 +301,7 @@ func (c *ComputeUtil) createInstance(d *Driver) error {
277
301
if strings .Contains (c .subnetwork , "/subnetworks/" ) {
278
302
instance .NetworkInterfaces [0 ].Subnetwork = c .subnetwork
279
303
} else if c .subnetwork != "" {
280
- instance .NetworkInterfaces [0 ].Subnetwork = "projects/" + c .project + "/regions/" + c .region () + "/subnetworks/" + c .subnetwork
304
+ instance .NetworkInterfaces [0 ].Subnetwork = "projects/" + c .networkProject + "/regions/" + c .region () + "/subnetworks/" + c .subnetwork
281
305
}
282
306
283
307
if ! c .useInternalIPOnly {
0 commit comments