func getSerializableMachine(id string) (*machine, error) { m, err := vms.Machine(id) if err != nil { return nil, err } rt := machine{} rt.Id = m.Id() rt.Platform = m.Platform() rt.Name, err = m.Name() if err != nil { return nil, err } status, err := m.Status() if err != nil { return nil, err } rt.Status = vm.StatusToString(status) ip, err := m.IP() if err != nil { return nil, err } if ip != nil { rt.Ip = ip.String() } return &rt, nil }
func getMachine() vms.Machine { machine, err := connector.Machine(machine_id) if err != nil { log.Fatalln(err.Error()) } if machine == nil { log.Fatalln("Machine is nil") } return machine }
func StopVM(c *echo.Context) error { machine, err := vms.Machine(c.Param("id")) err = machine.Stop() if err != nil { return retJsonError(c, err) } return c.JSON( http.StatusOK, hash{ "vm": machinetoStruct(machine), }) }
func DeleteMachine(c *echo.Context) error { id := c.Param("id") m, err := vms.Machine(id) if err != nil { log.Error(err) return errors.UnableToTerminateTheMachine } err = m.Terminate() if err != nil { log.Error(err) return errors.UnableToTerminateTheMachine } return c.JSON(http.StatusOK, hash{"meta": hash{}}) }
func PatchMachine(c *echo.Context) error { b := &machine{} err := utils.ParseJSONBody(c, b) if err != nil { log.Error(err) return errors.UnableToUpdateMachineStatus } m, err := vms.Machine(b.Id) if err != nil { log.Error(err) return errors.UnableToUpdateMachineStatus } status, err := m.Status() if err != nil { log.Error(err) return errors.UnableToUpdateMachineStatus } switch b.Status { case "up": if status != vms.StatusDown { return errors.UnableToUpdateMachineStatus } err = m.Start() if err != nil { log.Error(err) return errors.UnableToUpdateMachineStatus } case "down": if status != vms.StatusUp { return errors.UnableToUpdateMachineStatus } err = m.Stop() if err != nil { log.Error(err) return errors.UnableToUpdateMachineStatus } default: log.Error(err) return errors.UnableToUpdateMachineStatus } m, err = vms.Machine(m.Id()) if err != nil { log.Error(err) return errors.UnableToUpdateMachineStatus } rt, err := getSerializableMachine(m.Id()) if err != nil { log.Error(err) return errors.UnableToUpdateMachineStatus } return utils.JSON(c, http.StatusOK, rt) }