Revision 41a7fae7 snf-cyclades-app/synnefo/logic/utils.py

b/snf-cyclades-app/synnefo/logic/utils.py
102 102
    if vm.deleted:
103 103
        return "DELETED"
104 104
    # A machine is in REBOOT if an OP_INSTANCE_REBOOT request is in progress
105
    in_reboot = (r == 'ACTIVE') and\
105
    in_reboot = (r == "ACTIVE") and\
106 106
                (vm.backendopcode == "OP_INSTANCE_REBOOT") and\
107
                (vm.backendjobstatus in ('queued', 'waiting', 'running'))
107
                (vm.backendjobstatus in ("queued", "waiting", "running"))
108 108
    if in_reboot:
109 109
        return "REBOOT"
110
    in_resize = (r == "STOPPED") and\
111
                (vm.backendopcode == "OP_INSTANCE_MODIFY") and\
112
                (vm.task == "RESIZE") and \
113
                (vm.backendjobstatus in ("queued", "waiting", "running"))
114
    if in_resize:
115
        return "RESIZE"
110 116
    return r
111 117

  
112 118

  
119
TASK_STATE_FROM_ACTION = {
120
    "BUILD": "BULDING",
121
    "START": "STARTING",
122
    "STOP": "STOPPING",
123
    "REBOOT": "REBOOTING",
124
    "DESTROY": "DESTROYING",
125
    "RESIZE": "RESIZING",
126
    "CONNECT": "CONNECTING",
127
    "DISCONNECT": "DISCONNECTING"}
128

  
129

  
130
def get_task_state(vm):
131
    if vm.task is None:
132
        return ""
133
    try:
134
        return TASK_STATE_FROM_ACTION[vm.task]
135
    except KeyError:
136
        return "UNKNOWN"
137

  
138

  
139
OPCODE_TO_ACTION = {
140
    "OP_INSTANCE_CREATE": "BUILD",
141
    "OP_INSTANCE_START": "START",
142
    "OP_INSTANCE_STOP": "STOP",
143
    "OP_INSTANCE_REBOOT": "REBOOT",
144
    "OP_INSTANCE_REMOVE": "DESTROY"}
145

  
146

  
147
def get_action_from_opcode(opcode, job_fields):
148
    if opcode == "OP_INSTANCE_SET_PARAMS":
149
        nics = job_fields.get("nics")
150
        beparams = job_fields.get("beparams")
151
        if nics:
152
            #TODO: check the nic format
153
            return "CONNECT" or "DISCONNECT"
154
        elif beparams:
155
            return "RESIZE"
156
        else:
157
            return None
158
    else:
159
        return OPCODE_TO_ACTION.get(opcode, None)
160

  
161

  
113 162
def hide_pass(kw):
114 163
    if 'osparams' in kw and 'img_passwd' in kw['osparams']:
115 164
        kw1 = deepcopy(kw)

Also available in: Unified diff