websoft9/docker/deployment/environment.go

98 lines
2 KiB
Go
Raw Normal View History

2023-10-18 09:21:53 +00:00
package main
2023-10-18 09:51:36 +00:00
import (
"bytes"
"encoding/json"
"fmt"
"io/ioutil"
"net/http"
"os"
"time"
)
const (
AdminUser = "admin"
EndpointURL = "http://localhost:9000/api/endpoints"
CredentialLoc = "/data/credential"
)
type Endpoint struct {
Name string `json:"Name"`
URL string `json:"URL"`
}
func main() {
var password string
for {
if _, err := os.Stat(CredentialLoc); os.IsNotExist(err) {
fmt.Printf("%s does not exist, waiting for 3 seconds...\n", CredentialLoc)
time.Sleep(3 * time.Second)
} else {
fmt.Printf("%s exists, proceeding...\n", CredentialLoc)
data, err := ioutil.ReadFile(CredentialLoc)
if err != nil {
fmt.Println("Failed to read file:", err)
return
}
password = string(data)
break
}
}
2023-10-18 09:21:53 +00:00
2023-10-18 09:51:36 +00:00
client := &http.Client{}
req, err := http.NewRequest("GET", EndpointURL, nil)
req.SetBasicAuth(AdminUser, password)
resp, err := client.Do(req)
if err != nil {
fmt.Println("Failed to make request:", err)
return
}
defer resp.Body.Close()
2023-10-18 09:21:53 +00:00
2023-10-18 09:51:36 +00:00
body, err := ioutil.ReadAll(resp.Body)
if err != nil {
fmt.Println("Failed to read response:", err)
return
}
2023-10-18 09:21:53 +00:00
2023-10-18 09:51:36 +00:00
var endpoints []Endpoint
err = json.Unmarshal(body, &endpoints)
if err != nil {
fmt.Println("Failed to parse JSON:", err)
return
}
2023-10-18 09:21:53 +00:00
2023-10-18 09:51:36 +00:00
for _, endpoint := range endpoints {
if endpoint.Name == "local" && endpoint.URL == "/var/run/docker.sock" {
fmt.Println("Endpoint exists, exiting...")
return
}
}
2023-10-18 09:21:53 +00:00
2023-10-18 09:51:36 +00:00
fmt.Println("Endpoint does not exist, creating...")
endpoint := Endpoint{
Name: "local",
URL: "/var/run/docker.sock",
}
data, err := json.Marshal(endpoint)
if err != nil {
fmt.Println("Failed to encode JSON:", err)
return
}
2023-10-18 09:21:53 +00:00
2023-10-18 09:51:36 +00:00
req, err = http.NewRequest("POST", EndpointURL, bytes.NewBuffer(data))
req.SetBasicAuth(AdminUser, password)
resp, err = client.Do(req)
if err != nil {
fmt.Println("Failed to make request:", err)
return
}
2023-10-18 09:21:53 +00:00
2023-10-18 09:51:36 +00:00
if resp.StatusCode != http.StatusCreated {
fmt.Println("Failed to create endpoint:", resp.Status)
} else {
fmt.Println("Endpoint created successfully")
}
}