Exemple #1
0
		args := ctx.Params[0].(runMachineActionsArgs)
		fmt.Fprintf(args.writer, "  update status for machine (%s, %s)", args.box.GetFullName(), args.machineStatus.String())
		var mach machine.Machine
		if ctx.Previous != nil && strings.Compare(reflect.TypeOf(ctx.Previous).Name(), "Machine") == 0 {
			mach = ctx.Previous.(machine.Machine)
		} else {
			mach = machine.Machine{
				Id:       args.box.Id,
				CartonId: args.box.CartonId,
				Level:    args.box.Level,
				Name:     args.box.GetFullName(),
				SSH:      args.box.SSH,
				Status:   args.machineStatus,
			}
		}
		if err := mach.SetStatus(mach.Status); err != nil {
			fmt.Fprintf(args.writer, "  update status for machine failed.\n")
			return err, nil
		}
		return mach, nil
	},
	Backward: func(ctx action.BWContext) {
		c := ctx.FWResult.(machine.Machine)
		c.SetStatus(constants.StatusError)
	},
}

var createMachine = action.Action{
	Name: "create-machine",
	Forward: func(ctx action.FWContext) (action.Result, error) {
		args := ctx.Params[0].(runMachineActionsArgs)