@@ -24,7 +24,9 @@ import (
2424 "github.com/threefoldtech/zos4/pkg/netlight/ipam"
2525 "github.com/threefoldtech/zos4/pkg/netlight/namespace"
2626 "github.com/threefoldtech/zos4/pkg/netlight/options"
27+ "github.com/threefoldtech/zos4/pkg/netlight/public"
2728 "github.com/threefoldtech/zos4/pkg/netlight/resource"
29+ "github.com/threefoldtech/zos4/pkg/stubs"
2830 "github.com/threefoldtech/zos4/pkg/versioned"
2931 "github.com/vishvananda/netlink"
3032)
@@ -38,23 +40,22 @@ const (
3840 networkDir = "networks"
3941)
4042
41- var (
42- NDMZGwIP = & net.IPNet {
43- IP : net .ParseIP ("100.127.0.1" ),
44- Mask : net .CIDRMask (16 , 32 ),
45- }
46- )
43+ var NDMZGwIP = & net.IPNet {
44+ IP : net .ParseIP ("100.127.0.1" ),
45+ Mask : net .CIDRMask (16 , 32 ),
46+ }
4747
4848var NetworkSchemaLatestVersion = semver .MustParse ("0.1.0" )
4949
5050type networker struct {
51+ identity * stubs.IdentityManagerStub
5152 ipamLease string
5253 networkDir string
5354}
5455
5556var _ pkg.NetworkerLight = (* networker )(nil )
5657
57- func NewNetworker () (pkg.NetworkerLight , error ) {
58+ func NewNetworker (identity * stubs. IdentityManagerStub ) (pkg.NetworkerLight , error ) {
5859 vd , err := cache .VolatileDir ("networkd" , 50 * mib )
5960 if err != nil && ! os .IsExist (err ) {
6061 return nil , fmt .Errorf ("failed to create networkd cache directory: %w" , err )
@@ -64,6 +65,7 @@ func NewNetworker() (pkg.NetworkerLight, error) {
6465 runtimeDir := filepath .Join (vd , networkDir )
6566
6667 return & networker {
68+ identity : identity ,
6769 ipamLease : ipamLease ,
6870 networkDir : runtimeDir ,
6971 }, nil
@@ -89,7 +91,6 @@ func (n *networker) Delete(name string) error {
8991 }
9092
9193 return resource .Delete (name )
92-
9394}
9495
9596func (n * networker ) AttachPrivate (name , id string , vmIp net.IP ) (device pkg.TapDevice , err error ) {
@@ -390,6 +391,38 @@ func (n *networker) Interfaces(iface string, netns string) (pkg.Interfaces, erro
390391 return pkg.Interfaces {Interfaces : interfaces }, nil
391392}
392393
394+ func (n * networker ) UnSetPublicConfig () error {
395+ return public .DeletePublicConfig ()
396+ }
397+
398+ // Set node public namespace config
399+ func (n * networker ) SetPublicConfig (cfg pkg.PublicConfig ) error {
400+ if cfg .Equal (pkg.PublicConfig {}) {
401+ return fmt .Errorf ("public config cannot be unset, only modified" )
402+ }
403+
404+ current , err := public .LoadPublicConfig ()
405+ if err != nil && err != public .ErrNoPublicConfig {
406+ return errors .Wrapf (err , "failed to load current public configuration" )
407+ }
408+
409+ if current != nil && current .Equal (cfg ) {
410+ // nothing to do
411+ return nil
412+ }
413+
414+ if err := public .SavePublicConfig (cfg ); err != nil {
415+ return errors .Wrap (err , "failed to store public config" )
416+ }
417+
418+ return nil
419+ }
420+
421+ func (n * networker ) LoadPublicConfig () (pkg.PublicConfig , error ) {
422+ cfg , err := public .LoadPublicConfig ()
423+ return * cfg , err
424+ }
425+
393426func CreateNDMZBridge () (* netlink.Bridge , error ) {
394427 return createNDMZBridge (NDMZBridge , NDMZGw )
395428}
0 commit comments