Skip to content
Snippets Groups Projects
main.go 3.34 KiB
Newer Older
  • Learn to ignore specific revisions
  • 	clabconfig "code.fbi.h-da.de/danet/gosdn/applications/rtdt-manager/clab-config"
    
    	RtdtMan "code.fbi.h-da.de/danet/gosdn/applications/rtdt-manager/rtdt-manager"
    
    	"code.fbi.h-da.de/danet/gosdn/applications/rtdt-manager/sdnconfig"
    
    	//"code.fbi.h-da.de/danet/gosdn/applications/rtdt-manager/sdnconfig"
    
    	// Global stop channel, should be passed to all venvs and App
    	stopChan := make(chan os.Signal, 1)
    	signal.Notify(stopChan, os.Interrupt, syscall.SIGTERM)
    
    	var address string
    
    	var withTwin bool
    
    	flag.StringVar(&address, "address", "172.100.0.5:55055", "Address of the gosdn controller")
    	flag.StringVar(&address, "a", "172.100.0.5:55055", "Address of the gosdn controller (shorthand)")
    	flag.StringVar(&pass, "password", "TestPassword", "Password for admin user")
    	flag.StringVar(&pass, "p", "TestPassword", "Password for admin user (shorthand)")
    	flag.StringVar(&user, "user", "admin", "Username")
    	flag.StringVar(&user, "u", "admin", "Username (shorthand)")
    
    	flag.BoolVar(&withTwin, "with-twin", false, "Whether to start a twin")
    
    	flag.StringVar(&clabConfigName, "clabfile", "data/clab.yaml", "Containerlab file with basic gosdn environment")
    	flag.StringVar(&clabConfigName, "c", "data/clab.yaml", "Containerlab file with basic gosdn environment (shorthand)")
    
    	flag.BoolVar(&benchmark, "benchmark", false, "Run performance tests (measure propagation delay)")
    	flag.BoolVar(&benchmark, "b", false, "Run performance tests (measure propagation delay)")
    
    	flag.StringVar(&sdnConfigPath, "sdnconfig", "applications/rtdt-manager/data/sample_venv_sdnconfig.json", "SdnConfig file (json)")
    
    
    	flag.Usage = func() {
    		fmt.Println("--address, -a: Address of the gosdn controller (realnet)")
    		fmt.Println("--user, -u: User to log into realnet as")
    		fmt.Println("--password, -p: Password for the user to log into realnet as")
    		fmt.Println("--topology, -t: Topology .yaml file to use to generate realnet and twins")
    
    		fmt.Println("--with-twin: Whether to start the containerlab virtual environment for the twin")
    
    		fmt.Println("--sdnconfig: Path to the sdnconfig .json file that contains information about network elements and links")
    
    	// Register new RtdtManager
    	rtdtMan := RtdtMan.NewRtdtManager()
    	if rtdtMan == nil {
    		fmt.Println("Couldn't initialize rtdt-manager, quitting!")
    
    	// Deploy the realnet as VEnv (containerlab)
    	sdnConfig := sdnconfig.NewSdnConfig()
    	sdnConfig.LoadSdnConfig(sdnConfigPath)
    	clabBaseConfig, err := clabconfig.LoadConfig(clabConfigName)
    
    		fmt.Printf("In main(): %v\n", err)
    
    	// Start virtual environment for realnet
    	err = rtdtMan.LaunchRealnetVEnv("realnet", sdnConfig, clabBaseConfig)
    
    		fmt.Printf("In main(): %v\n", err)
    
    	err = rtdtMan.InitEventSystem()
    
            fmt.Printf("In main(): %v\n", err)
    
    	// Do performance tests of realnet before starting twin
    	if benchmark {
    		fmt.Println("Now doing performance measurements of gosdn's propagation delay ")
    
    	if withTwin {
    
    		rtdtMan.LaunchTwin("172.101.0.0/16", "2001:db9::/64", "TEST-TWIN")
    
    	if err := rtdtMan.Run(); err != nil {
    		fmt.Println("Program exited with errors: %w", err)