From f82d2ce2f5dca5fb1d1bc45e5e13a73687be8ecc Mon Sep 17 00:00:00 2001 From: "S.H." <sebastian.heiss94@proton.me> Date: Mon, 24 Feb 2025 23:14:09 +0100 Subject: [PATCH] Catch case in which sdnConfig isn't set in CreateDevices() (TODO: pass sdnConfig in) --- applications/rtdt-manager/clab-config/clab-config.go | 5 +---- applications/rtdt-manager/rtdt-manager/rtdt-manager.go | 4 ++-- applications/rtdt-manager/venv/venv.go | 8 ++++++-- 3 files changed, 9 insertions(+), 8 deletions(-) diff --git a/applications/rtdt-manager/clab-config/clab-config.go b/applications/rtdt-manager/clab-config/clab-config.go index d53ae7172..432fb25cb 100644 --- a/applications/rtdt-manager/clab-config/clab-config.go +++ b/applications/rtdt-manager/clab-config/clab-config.go @@ -91,12 +91,9 @@ func GetNodeTemplate(kind, ipv4subnet string) *Node { return nil } ipOffset := digit + 17 - fmt.Println("ipv4subnet: ", ipv4subnet) ipv4subnetSplit := strings.Split(ipv4subnet, ".") - fmt.Printf("ipv4subnetSplit[0],[1],[2],[3]=%s:%s", ipv4subnetSplit[0], ipv4subnetSplit[1]) ipv4subnetSplit[3] = strconv.Itoa(ipOffset) ipv4 := strings.Join(ipv4subnetSplit, ".") - fmt.Println("ipv4 for centos node:", ipv4) return &Node{ MgmtIPv4: ipv4, Kind: "linux", @@ -149,6 +146,7 @@ func WriteConfig(filename string, config *ClabConfig) error { return nil } + // incrementPort takes a port as a string, adds an offset, and returns the new port as a string. func incrementPort(port string, offset int) (string, error) { portNum, err := strconv.Atoi(port) @@ -241,7 +239,6 @@ func DeriveConfig(clabconfig *ClabConfig, newIPv4Subnet, newIPv6Subnet string, p return &derivedConfig, nil } - func ClabDestroy(fullPath string) error { fmt.Println("Trying to destroy venv: ", fullPath) cmd := exec.Command("sudo", "containerlab", "destroy", "-t", fullPath) diff --git a/applications/rtdt-manager/rtdt-manager/rtdt-manager.go b/applications/rtdt-manager/rtdt-manager/rtdt-manager.go index 0e8014523..7413e0bd7 100644 --- a/applications/rtdt-manager/rtdt-manager/rtdt-manager.go +++ b/applications/rtdt-manager/rtdt-manager/rtdt-manager.go @@ -77,7 +77,6 @@ func (r *RtdtManager) LaunchRealnetVEnv(realnetName string, sdnConfig *sdnconfig fmt.Printf("Error: Couldn't create devices!") return err } - return nil // Now setup the just-created environment // Need to: @@ -87,6 +86,7 @@ func (r *RtdtManager) LaunchRealnetVEnv(realnetName string, sdnConfig *sdnconfig fmt.Printf("Error occured while trying to construct topology in r.realnet: %v\n", err) return err } + return nil err = r.realnet.UploadClabConfig() if err != nil { fmt.Printf("Error: Couldnt upload clab config: %v\n", err) @@ -134,7 +134,6 @@ func (r *RtdtManager) ProduceClabConfig(clabName string, c *clabconfig.ClabConfi } for _, node := range sdnConfig.Nodes { var clabNode *clabconfig.Node - fmt.Println("Nodename:", node.Name) clabNode = clabconfig.GetNodeTemplate(node.Name, c.Mgmt.IPv4Subnet) if clabNode == nil { @@ -306,6 +305,7 @@ func (r *RtdtManager) Run() error { // Receive events from realnet VEnv func (r *RtdtManager) InitEventSystem() error { + fmt.Println("Starting Event System for realnet!") realnet_auth := r.realnet.GetAuth() ctx := realnet_auth.CreateContextWithAuthorization() queueCredentials, err := registration.Register(ctx, realnet_auth.GetAddress(), "basic-interface-monitoring", "SecurePresharedToken") diff --git a/applications/rtdt-manager/venv/venv.go b/applications/rtdt-manager/venv/venv.go index 1c9358cff..88b0540fc 100644 --- a/applications/rtdt-manager/venv/venv.go +++ b/applications/rtdt-manager/venv/venv.go @@ -37,7 +37,7 @@ type VEnv struct { conn *grpc.ClientConn // The connection to this specific environment's gosdn pnd *pnd.PrincipalNetworkDomain clabData *clabconfig.ClabConfig // Represents yaml file that was used to deploy - sdnConfig *sdnconfig.SdnConfig // Represents json config file for configuration grpc interface + sdnConfig sdnconfig.SdnConfig // Represents json config file for configuration grpc interface topology *rtdt_topology.Topology clabFilename string // This is the name of the yaml file clabData is based on StopChan <-chan struct{} @@ -49,7 +49,7 @@ type VEnv struct { // Accepts a yaml filename to deploy a container lab environment // TODO Split up into sub-functions // This takes FULL path name to clab config -func NewVEnv(name string, clabFilename, user, pass string, wg *sync.WaitGroup) *VEnv { +func NewVEnv(name, clabFilename, user, pass string, wg *sync.WaitGroup) *VEnv { fmt.Printf("[%s] - Creating new virtual environment\n", name) wg.Add(1) // Register the venv and run atleast until it calls wg.Done() var err error @@ -125,6 +125,10 @@ func NewVEnv(name string, clabFilename, user, pass string, wg *sync.WaitGroup) * // Based on saved sdnconfig, create devices func (v *VEnv) CreateDevices() error { // Alternative (better) approach + fmt.Println("Creating devices now!") + if v.sdnConfig == nil { + return fmt.Errorf("Can't create devices without sdnConfig being set") + } for _, mne := range v.sdnConfig.NetworkElements { fmt.Printf("[%s] - Found mne target: %s with addr: %s\n", v.Name, mne.Name, mne.TransportAddress) opt := &tpb.TransportOption{ -- GitLab