display details of started stack

pull/1/head
Cian Hatton 3 years ago
parent c8741d96eb
commit 3181afee14

@ -79,11 +79,19 @@ func (c *PortainerClient) GetStackByName(name string) (*Stack, error) {
return nil, nil return nil, nil
} }
func (c *PortainerClient) StartStack(stackId int) error { type ResponseMessage struct {
Message string `json:"message"`
Details string `json:"details"`
}
func (c *PortainerClient) StartStack(stackId int) (ResponseMessage, error) {
url := fmt.Sprintf("api/stacks/%d/start", stackId) url := fmt.Sprintf("api/stacks/%d/start", stackId)
b, err := c.post(url, nil) b, err := c.post(url, nil)
fmt.Println(string(b)) msg := ResponseMessage{}
return err if err := json.Unmarshal(b, &msg); err != nil {
return msg, err
}
return msg, err
} }
func (c *PortainerClient) post(path string, payload interface{}) ([]byte, error) { func (c *PortainerClient) post(path string, payload interface{}) ([]byte, error) {
jsonBytes, err := json.Marshal(payload) jsonBytes, err := json.Marshal(payload)

@ -32,6 +32,11 @@ func loadCreds() client.Credentials {
return creds return creds
} }
type StackResult struct {
Name string `json:"name"`
Id int `json:"id"`
}
func main() { func main() {
args := os.Args args := os.Args
if len(args) != 2 { if len(args) != 2 {
@ -49,9 +54,28 @@ func main() {
if err != nil { if err != nil {
log.Fatal(err) log.Fatal(err)
} }
if s == nil {
log.Fatalf("no stack found with name: %s\n", stackName)
}
msg, err := c.StartStack(s.ID)
if err != nil {
log.Fatal(err)
}
if msg.Details != "" && !strings.Contains(msg.Details, "is already running") {
log.Fatalf("problem starting stack: %s", msg.Details)
}
err = c.StartStack(s.ID) sr := StackResult{
if err != nil && strings.Contains(err.Error(), "is already running") { Name: stackName,
Id: s.ID,
}
bytes, err := json.Marshal(sr)
if err != nil {
log.Fatal(err) log.Fatal(err)
} }
// output details of the stack that was started (or is already started)
fmt.Println(string(bytes))
} }

Loading…
Cancel
Save