From 14bceec3cc585a223d9435d44b2bb5aa15ac4acd Mon Sep 17 00:00:00 2001 From: Akilan Selvacoumar Date: Wed, 9 Jun 2021 23:59:46 +0400 Subject: [PATCH] added cli command view containers and implementation also complete --- client/container.go | 27 +++++++++++++++++++++++++++ cmd/action.go | 11 +++++++++++ cmd/flags.go | 8 ++++++++ server/server.go | 2 +- 4 files changed, 47 insertions(+), 1 deletion(-) diff --git a/client/container.go b/client/container.go index f37d945..9e57def 100644 --- a/client/container.go +++ b/client/container.go @@ -65,6 +65,33 @@ func RemoveContianer(IP string,ID string) error { return nil } +// ViewContainers This function displays all containers available on server side +func ViewContainers(IP string)(*docker.DockerContainers, error){ + // Passes URL with route /ShowImages + URL := "http://" + IP + ":" + serverPort + "/ShowImages" + resp, err := http.Get(URL) + if err != nil { + return nil,err + } + + // Convert response to byte value + byteValue, err := ioutil.ReadAll(resp.Body) + if err != nil { + return nil,err + } + + // Create variable for result response type + var Result docker.DockerContainers + + // Adds byte value to docker.DockerContainers struct + json.Unmarshal(byteValue, &Result) + if err != nil { + return nil,err + } + + return &Result, nil +} + // PrintStartContainer Prints results Generated container func PrintStartContainer(d *docker.DockerVM){ fmt.Println("ID : " + fmt.Sprint(d.ID)) diff --git a/cmd/action.go b/cmd/action.go index 2b97c5c..62022fd 100644 --- a/cmd/action.go +++ b/cmd/action.go @@ -31,6 +31,7 @@ var CliAction = func(ctx *cli.Context) error { p2p.PrintIpTable() } + // Add provided IP to the IP table if AddServer != "" { res, err := p2p.ReadIpTable() if err != nil { @@ -52,6 +53,16 @@ var CliAction = func(ctx *cli.Context) error { } + // Displays all images available on the server side + if ViewImages != "" { + imageRes, err := client.ViewContainers(ViewImages) + + if err != nil { + fmt.Print(err) + } + client.PrettyPrint(imageRes) + } + // Function called to stop and remove server from Docker if RemoveVM != "" && ID != "" { err := client.RemoveContianer(RemoveVM,ID) diff --git a/cmd/flags.go b/cmd/flags.go index 138ab34..2b5a97f 100644 --- a/cmd/flags.go +++ b/cmd/flags.go @@ -7,6 +7,7 @@ import ( // Variables declared for CLI var ( AddServer string + ViewImages string CreateVM string Ports string Mode string @@ -46,6 +47,12 @@ var AppConfigFlags = []cli.Flag{ EnvVars: []string{"ADD_SERVER"}, Destination: &AddServer, }, + &cli.StringFlag{ + Name: "ViewImages", + Usage: "View images available on the server IP address", + EnvVars: []string{"VIEW_IMAGES"}, + Destination: &ViewImages, + }, &cli.StringFlag{ Name: "CreateVM", Usage: "Creates Docker container on the selected server", @@ -82,6 +89,7 @@ var AppConfigFlags = []cli.Flag{ EnvVars: []string{"SPECS"}, Destination: &Specs, }, + &cli.BoolFlag{ Name: "SetDefaultConfig", Usage: "Sets a default configuration file", diff --git a/server/server.go b/server/server.go index 354c392..e166c1c 100644 --- a/server/server.go +++ b/server/server.go @@ -102,7 +102,7 @@ func Server() error{ // Convert Get Request value to int fmt.Sscanf(Ports, "%d", &PortsInt) - // Creates container and returns back result to + // Creates container and returns-back result to // access container resp, err := docker.BuildRunContainer(PortsInt,GPU,"")