//just publish a message stateup to the machine. func (m *Machine) ChangeState(status provision.Status) error { log.Debugf(" change state of machine (%s, %s)", m.Name, status.String()) pons := nsqp.New() if err := pons.Connect(meta.MC.NSQd[0]); err != nil { return err } bytes, err := json.Marshal( carton.Requests{ CatId: m.CartonId, Action: status.String(), Category: carton.STATE, CreatedAt: time.Now().String(), }) if err != nil { return err } log.Debugf(" pub to machine (%s, %s)", m.Name, bytes) if err = pons.Publish(m.Name, bytes); err != nil { return err } defer pons.Stop() return nil }
func (a *Ambly) SetStatus(status provision.Status) error { LastStatusUpdate := time.Now().Local().Format(time.RFC822) m := make(map[string][]string, 2) m["lastsuccessstatusupdate"] = []string{LastStatusUpdate} m["status"] = []string{status.String()} a.Inputs.NukeAndSet(m) //just nuke the matching output key: a.Status = status.String() if err := db.Store(ASSEMBLYBUCKET, a.Id, a); err != nil { fmt.Println(err) return err } return nil }
func (c *Container) SetStatus(status provision.Status) error { log.Debugf(" set status[%s] of container (%s, %s)", c.BoxId, c.Name, status.String()) if asm, err := carton.NewAmbly(c.CartonId); err != nil { return err } else if err = asm.SetStatus(status); err != nil { return err } if c.Level == provision.BoxSome { log.Debugf(" set status[%s] of container (%s, %s)", c.BoxId, c.Name, status.String()) if comp, err := carton.NewComponent(c.BoxId); err != nil { return err } else if err = comp.SetStatus(status); err != nil { return err } } return nil }
func (p *dockerProvisioner) SetBoxStatus(box *provision.Box, w io.Writer, status provision.Status) error { fmt.Fprintf(w, "\n---- status %s box %s ----\n", box.GetFullName(), status.String()) actions := []*action.Action{ &updateStatusInRiak, } pipeline := action.NewPipeline(actions...) args := runContainerActionsArgs{ box: box, writer: w, containerStatus: status, provisioner: p, } err := pipeline.Execute(args) if err != nil { log.Errorf("error on execute status pipeline for box %s - %s", box.GetFullName(), err) return err } return nil }
//it possible to have a Notifier interface that does this, duck typed b y Assembly, Components. func (m *Machine) SetStatus(status provision.Status) error { log.Debugf(" set status[%s] of machine (%s, %s)", m.Id, m.Name, status.String()) if asm, err := carton.NewAmbly(m.CartonId); err != nil { return err } else if err = asm.SetStatus(status); err != nil { return err } if m.Level == provision.BoxSome { log.Debugf(" set status[%s] of machine (%s, %s)", m.Id, m.Name, status.String()) if comp, err := carton.NewComponent(m.Id); err != nil { return err } else if err = comp.SetStatus(status); err != nil { return err } } return nil }