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