Newer
Older
package main
import (
"flag"
"fmt"
"os"
venvmanager "code.fbi.h-da.de/danet/gosdn/applications/venv-manager/venv-manager"
"google.golang.org/grpc"
"google.golang.org/grpc/credentials/insecure"
)
func main() {
var dialConnectionURL string
var yamlFilepath string
var customContainerRegistryURL string
dialOption := grpc.WithTransportCredentials(insecure.NewCredentials())
flag.StringVar(&dialConnectionURL, "controller", "localhost:55055", "")
flag.StringVar(&yamlFilepath, "file", "venv.clab.yaml", "")
flag.StringVar(&customContainerRegistryURL, "registry", "", "")
// Define own output of --help and parsing error, as some library also uses the flags library and adds there flags to ours, which is not intended.
flag.Usage = func() {
fmt.Printf("Usable flags of the venv-manager:\n\n")
fmt.Println("--controller string\n\t Controller URL and Port. (Default: 'localhost:55055')")
fmt.Println("--file string\n\t Filename of the resulting topology file. (Default: 'venv.clab.yaml')")
fmt.Println("--registry string\n\t URL of the container registry to use. Keep in mind that cEOS images and prebuild linux images with the gnmi target are not available on dockerhub. (Default: dockerhub)")
fmt.Println("--help\n\t Shows this help screen.")
}
flag.Parse()
customContainerRegistryURL = ensureLastCharIsSlash(customContainerRegistryURL)
fmt.Println("I will try to connect to goSDN located at", dialConnectionURL)
venvManager := venvmanager.NewVenvManager(dialConnectionURL, dialOption, yamlFilepath, customContainerRegistryURL)
err := venvManager.TestConnection()
if err != nil {
fmt.Println(err)
fmt.Println("Can't reach controller, exiting.")
os.Exit(1)
}
fmt.Println("Connection successful!")
fmt.Println("Generating file...")
err = venvManager.CreateTopologyFile()
if err != nil {
fmt.Println(err)
fmt.Println("An error occurred, exiting.")
os.Exit(1)
}
os.Exit(0)
}
// Ensures that the last char of a string is a slash, if this string is not empty.
func ensureLastCharIsSlash(inputString string) string {
if len(inputString) == 0 {
return inputString
}
if strings.HasSuffix(inputString, "/") {
return inputString
}
return inputString + "/"
}