Beispiel #1
0
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
}
Beispiel #2
0
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
}
Beispiel #3
0
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),
		})
}
Beispiel #4
0
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{}})
}
Beispiel #5
0
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)
}