update list containers

This commit is contained in:
2025-04-11 18:00:46 +08:00
parent 38333b2338
commit d09608088f
12 changed files with 234 additions and 34 deletions
+51 -17
View File
@@ -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
}