@@ -244,20 +244,20 @@ func daisyNetworkForIRDMANIC(index int, project string, zone string, isMetal boo
244244 Network : compute.Network {
245245 Name : fmt .Sprintf ("irdma-network-%d" , index ),
246246 Mtu : int64 (imagetest .JumboFramesMTU ),
247- NetworkProfile : fmt .Sprintf ("https://www.googleapis.com/compute/v1/ projects/%s/global/networkProfiles/%s-vpc-falcon" , project , zone ),
247+ NetworkProfile : fmt .Sprintf ("projects/%s/global/networkProfiles/%s-vpc-falcon" , project , zone ),
248248 },
249249 AutoCreateSubnetworks : new (bool ),
250250 }
251251}
252252
253253func daisyNetworkForMRDMANIC (index int , project string , zone string , isMetal bool ) * daisy.Network {
254- networkProfile := fmt .Sprintf ("https://www.googleapis.com/compute/v1/ projects/%s/global/networkProfiles/%s-vpc-roce" , project , zone )
254+ networkProfile := fmt .Sprintf ("projects/%s/global/networkProfiles/%s-vpc-roce" , project , zone )
255255 if isMetal {
256256 networkProfile += "-metal"
257257 }
258258 return & daisy.Network {
259259 Network : compute.Network {
260- Name : fmt . Sprintf ( "mrdma-network-%d" , index ) ,
260+ Name : "mrdma-network" ,
261261 Mtu : int64 (imagetest .JumboFramesMTU ),
262262 NetworkProfile : networkProfile ,
263263 },
@@ -297,13 +297,27 @@ func regionFromZone(zone string) (string, error) {
297297 return strings .Join (parts [:2 ], "-" ), nil
298298}
299299
300- func daisySubnet (index int , zone string ) (* daisy.Subnetwork , error ) {
301- netPrefix , err := subnetPrefix ( index )
300+ func daisySubnet (daisyNetwork * daisy. Network , index int , zone string ) (* daisy.Subnetwork , error ) {
301+ region , err := regionFromZone ( zone )
302302 if err != nil {
303303 return nil , err
304304 }
305305
306- region , err := regionFromZone (zone )
306+ if strings .HasSuffix (daisyNetwork .NetworkProfile , "-metal" ) {
307+ return & daisy.Subnetwork {
308+ Subnetwork : compute.Subnetwork {
309+ Name : fmt .Sprintf ("default-subnet-1-%s" , daisyNetwork .Name ),
310+ StackType : "IPV6_ONLY" ,
311+ Ipv6AccessType : "INTERNAL" ,
312+ Region : region ,
313+ },
314+ Resource : daisy.Resource {
315+ NoCleanup : true ,
316+ },
317+ }, nil
318+ }
319+
320+ netPrefix , err := subnetPrefix (index )
307321 if err != nil {
308322 return nil , err
309323 }
@@ -341,32 +355,43 @@ type CreateMachineWithNetworksOptions struct {
341355// It registers the networks and subnetwork creations with the test workflow.
342356func CreateMachineWithNetworks (t * imagetest.TestWorkflow , o * CreateMachineWithNetworksOptions ) (* daisy.Instance , error ) {
343357 m := & daisy.Instance {}
358+ createdNetworks := make (map [string ]* imagetest.Network )
359+ createdSubnetworks := make (map [string ]bool )
344360
345361 for nicIndex , nicType := range o .NicTypes {
346362 daisyNetwork , err := daisyNetworkForNIC (nicType , nicIndex , o .Project , o .Zone , imagetest .IsMetal (o .MachineType ))
347363 if err != nil {
348364 return nil , fmt .Errorf ("building daisy network: %w" , err )
349365 }
350366
351- daisySubnet , err := daisySubnet (nicIndex , o .Zone )
352- if err != nil {
353- return nil , fmt .Errorf ("building daisy subnetwork: %w" , err )
367+ citNetwork , ok := createdNetworks [daisyNetwork .Name ]
368+ if ! ok {
369+ citNetwork , err = t .CreateNetworkFromDaisyNetwork (daisyNetwork )
370+ if err != nil {
371+ return nil , fmt .Errorf ("creating network: %w" , err )
372+ }
373+ createdNetworks [daisyNetwork .Name ] = citNetwork
354374 }
355375
356- citNetwork , err := t . CreateNetworkFromDaisyNetwork (daisyNetwork )
376+ daisySub , err := daisySubnet (daisyNetwork , nicIndex , o . Zone )
357377 if err != nil {
358- return nil , fmt .Errorf ("creating network : %w" , err )
378+ return nil , fmt .Errorf ("building daisy subnetwork : %w" , err )
359379 }
360380
361- if _ , err = citNetwork .CreateSubnetworkFromDaisySubnetwork (daisySubnet ); err != nil {
362- return nil , fmt .Errorf ("creating subnetwork: %w" , err )
381+ if ! createdSubnetworks [daisySub .Name ] {
382+ if _ , err = citNetwork .CreateSubnetworkFromDaisySubnetwork (daisySub ); err != nil {
383+ return nil , fmt .Errorf ("creating subnetwork: %w" , err )
384+ }
385+ createdSubnetworks [daisySub .Name ] = true
363386 }
364387
365388 m .NetworkInterfaces = append (m .NetworkInterfaces , & compute.NetworkInterface {
366- NicType : nicType ,
367- Network : daisyNetwork .Name ,
368- Subnetwork : daisySubnet .Name ,
369- AccessConfigs : accessConfigsForNIC (nicType ),
389+ NicType : nicType ,
390+ Network : daisyNetwork .Name ,
391+ Subnetwork : daisySub .Name ,
392+ StackType : daisySub .StackType ,
393+ Ipv6AccessType : daisySub .Ipv6AccessType ,
394+ AccessConfigs : accessConfigsForNIC (nicType ),
370395 })
371396 }
372397
0 commit comments