@@ -128,16 +128,12 @@ func (n *networker) Create(name string, wl gridtypes.WorkloadID, net zos.Network
128128 return n .setupWireguard (name , net , netr )
129129}
130130
131- func (n * networker ) Delete (wl gridtypes. WorkloadWithID ) error {
132- if err := ipam .DeAllocateIPv4 (wl . ID . String () , n .ipamLease ); err != nil {
131+ func (n * networker ) Delete (name string ) error {
132+ if err := ipam .DeAllocateIPv4 (name , n .ipamLease ); err != nil {
133133 return err
134134 }
135135
136- netID , err := zos .NetworkIDFromWorkloadID (wl .ID )
137- if err != nil {
138- return err
139- }
140- netNR , err := n .networkOf (netID )
136+ netNR , err := n .networkOf (name )
141137 if err != nil {
142138 return err
143139 }
@@ -146,7 +142,12 @@ func (n *networker) Delete(wl gridtypes.WorkloadWithID) error {
146142 log .Error ().Err (err ).Msg ("release wireguard port failed" )
147143 }
148144
149- return resource .Delete (string (wl .ID ))
145+ if err := resource .Delete (name ); err != nil {
146+ return err
147+ }
148+
149+ path := filepath .Join (n .networkDir , name )
150+ return os .Remove (path )
150151}
151152
152153func (n * networker ) AttachPrivate (name , id string , vmIp net.IP ) (device localPkg.TapDevice , err error ) {
@@ -205,17 +206,17 @@ func (n *networker) AttachZDB(id string) (string, error) {
205206
206207// GetSubnet of a local network resource identified by the network ID, ipv4 and ipv6
207208// subnet respectively
208- func (n * networker ) GetSubnet (networkID pkg. NetID ) (net.IPNet , error ) {
209- localNR , err := n .networkOf (networkID )
209+ func (n * networker ) GetSubnet (name string ) (net.IPNet , error ) {
210+ localNR , err := n .networkOf (name )
210211 if err != nil {
211- return net.IPNet {}, errors .Wrapf (err , "couldn't load network with id (%s)" , networkID )
212+ return net.IPNet {}, errors .Wrapf (err , "couldn't load network with name (%s)" , name )
212213 }
213214
214215 return localNR .Subnet .IPNet , nil
215216}
216217
217- func (n * networker ) networkOf (id zos. NetID ) (nr pkg.Network , err error ) {
218- path := filepath .Join (n .networkDir , string ( id ) )
218+ func (n * networker ) networkOf (name string ) (nr pkg.Network , err error ) {
219+ path := filepath .Join (n .networkDir , name )
219220 file , err := os .OpenFile (path , os .O_RDWR , 0660 )
220221 if err != nil {
221222 return nr , err
@@ -525,6 +526,37 @@ func (n *networker) WireguardPorts() ([]uint, error) {
525526 return n .portSet .List ()
526527}
527528
529+ // GetNet of a network identified by the network ID
530+ func (n * networker ) GetNet (name string ) (net.IPNet , error ) {
531+ localNR , err := n .networkOf (name )
532+ if err != nil {
533+ return net.IPNet {}, errors .Wrapf (err , "couldn't load network (%s)" , name )
534+ }
535+
536+ return localNR .NetworkIPRange .IPNet , nil
537+ }
538+
539+ // GetDefaultGwIP returns the IPs of the default gateways inside the network
540+ // resource identified by the network ID on the local node, for IPv4
541+ func (n * networker ) GetDefaultGwIP (name string ) (net.IP , error ) {
542+ localNR , err := n .networkOf (name )
543+ if err != nil {
544+ return nil , errors .Wrapf (err , "couldn't load network (%s)" , name )
545+ }
546+
547+ // only IP4 atm
548+ ip := localNR .Subnet .IP .To4 ()
549+ if ip == nil {
550+ return nil , errors .New ("nr subnet is not valid IPv4" )
551+ }
552+
553+ // defaut gw is currently implied to be at `x.x.x.1`
554+ // also a subnet in a NR is assumed to be a /24
555+ ip [len (ip )- 1 ] = 1
556+
557+ return ip , nil
558+ }
559+
528560func (n * networker ) syncWGPorts () error {
529561 names , err := namespace .List ("n-" )
530562 if err != nil {
@@ -591,7 +623,9 @@ func (n *networker) releasePort(port uint16) error {
591623}
592624
593625func (n networker ) setupWireguard (name string , net zos.NetworkLight , netr * resource.Resource ) error {
594- storedNR , err := n .networkOf (zos .NetID (name ))
626+ log .Debug ().Msg ("setting up wireguard" )
627+
628+ storedNR , err := n .networkOf (name )
595629 if err != nil && ! os .IsNotExist (err ) {
596630 return errors .Wrap (err , "failed to load previous network setup" )
597631 }
0 commit comments