update list containers
This commit is contained in:
@@ -4,15 +4,18 @@ import (
|
||||
"bytes"
|
||||
"encoding/json"
|
||||
"floares/config"
|
||||
"fmt"
|
||||
"io"
|
||||
"log"
|
||||
"net/http"
|
||||
"strconv"
|
||||
"strings"
|
||||
)
|
||||
|
||||
type Create struct {
|
||||
Image string `json:"image,required"`
|
||||
Name string `json:"name,omitempty"`
|
||||
Image string `json:"image,required"`
|
||||
Name string `json:"name,omitempty"`
|
||||
Network string `json:"network,required"`
|
||||
Port string `json:"port,omitempty"`
|
||||
Start bool `json:"start,omitempty"`
|
||||
}
|
||||
type CreateJson struct {
|
||||
Cause string `json:"cause"`
|
||||
@@ -24,12 +27,53 @@ type CreateJson struct {
|
||||
|
||||
type create struct {
|
||||
Image string `json:"image"`
|
||||
Name string `json:"name"`
|
||||
Netns struct {
|
||||
Mode string `json:"nsmode"`
|
||||
} `json:"netns"`
|
||||
Port []PortMapping `json:"portmappings"`
|
||||
Networks map[string]NetSettings `json:"networks"`
|
||||
}
|
||||
type NetSettings struct {
|
||||
Aliases []string `json:"aliases,omitempty"`
|
||||
InterfaceName string `json:"interface_name"`
|
||||
}
|
||||
type PortMapping struct {
|
||||
HostPort int `json:"host_port"`
|
||||
ContainerPort int `json:"container_port"`
|
||||
}
|
||||
|
||||
func (c *Create) Create() (string, error) {
|
||||
var container create
|
||||
container.Image = c.Image
|
||||
|
||||
container.Name = c.Name
|
||||
var port []PortMapping
|
||||
for _, v := range strings.Split(c.Port, ",") {
|
||||
p := strings.Split(v, ":")
|
||||
if len(p) != 2 {
|
||||
continue
|
||||
}
|
||||
port1, _ := strconv.Atoi(p[0])
|
||||
port2, _ := strconv.Atoi(p[1])
|
||||
port = append(port, PortMapping{
|
||||
HostPort: port1,
|
||||
ContainerPort: port2,
|
||||
})
|
||||
}
|
||||
container.Networks = make(map[string]NetSettings)
|
||||
container.Networks["podman"] = NetSettings{
|
||||
InterfaceName: "ens0",
|
||||
}
|
||||
for k, v := range strings.Split(c.Network, ",") {
|
||||
log.Println(v)
|
||||
container.Networks[v] = NetSettings{
|
||||
InterfaceName: "ens" + strconv.Itoa(k),
|
||||
}
|
||||
}
|
||||
container.Port = port
|
||||
container.Netns = struct {
|
||||
Mode string `json:"nsmode"`
|
||||
}{Mode: "bridge"}
|
||||
str, err := json.Marshal(container)
|
||||
if err != nil {
|
||||
log.Println(err)
|
||||
@@ -44,8 +88,6 @@ func (c *Create) Create() (string, error) {
|
||||
}
|
||||
defer resp.Body.Close()
|
||||
|
||||
b, err := io.ReadAll(resp.Body)
|
||||
log.Println(string(b))
|
||||
var createJson CreateJson
|
||||
err = json.NewDecoder(resp.Body).Decode(&createJson)
|
||||
if err != nil {
|
||||
@@ -54,15 +96,7 @@ func (c *Create) Create() (string, error) {
|
||||
return "", err
|
||||
}
|
||||
log.Println(createJson)
|
||||
startContainer(createJson.Id)
|
||||
//startContainer(createJson.Id)
|
||||
Start(createJson.Id)
|
||||
return createJson.Id, nil
|
||||
}
|
||||
func startContainer(id string) error {
|
||||
post, err := http.Post(fmt.Sprintf("/%s/libpod/containers/%s/start", config.Entrypoint, id), "application/json", nil)
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
bytes, err := io.ReadAll(post.Body)
|
||||
log.Println(string(bytes))
|
||||
return err
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user