Revision 41303ed0

b/db/models.py
263 263
        ('OP_INSTANCE_REPLACE_DISKS', 'Replace Disks'),
264 264
        ('OP_INSTANCE_MIGRATE', 'Migrate Instance'),
265 265
        ('OP_INSTANCE_CONSOLE', 'Get Instance Console'),
266
        ('OP_INSTANCE_RECREATE_DISKS', 'Recreate Disks')
266
        ('OP_INSTANCE_RECREATE_DISKS', 'Recreate Disks'),
267
        ('OP_INSTANCE_FAILOVER', 'Failover Instance')
267 268
    )
268 269
    # A backend job may be in one of the following possible states
269 270
    BACKEND_STATUSES = (
......
294 295
        'OP_INSTANCE_REPLACE_DISKS' : None,
295 296
        'OP_INSTANCE_MIGRATE': None,
296 297
        'OP_INSTANCE_CONSOLE': None,
297
        'OP_INSTANCE_RECREATE_DISKS': None
298
        'OP_INSTANCE_RECREATE_DISKS': None,
299
        'OP_INSTANCE_FAILOVER': None
298 300
    }
299 301

  
300 302
    # This dictionary contains the correspondence between
b/logic/backend.py
64 64
    also update the operating state of the VM.
65 65

  
66 66
    """
67
    if (opcode not in [x[0] for x in VirtualMachine.BACKEND_OPCODES] or
68
       status not in [x[0] for x in VirtualMachine.BACKEND_STATUSES]):
67
    # See #1492, #1031, #1111 why this line has been removed
68
    #if (opcode not in [x[0] for x in VirtualMachine.BACKEND_OPCODES] or
69
    if status not in [x[0] for x in VirtualMachine.BACKEND_STATUSES]:
69 70
        raise VirtualMachine.InvalidBackendMsgError(opcode, status)
70 71

  
71 72
    vm.backendjobid = jobid
......
74 75
    vm.backendlogmsg = logmsg
75 76

  
76 77
    # Notifications of success change the operating state
77
    if status == 'success' and VirtualMachine.OPER_STATE_FROM_OPCODE[opcode] is not None:
78
        utils.update_state(vm, VirtualMachine.OPER_STATE_FROM_OPCODE[opcode])
79
        # Set the deleted flag explicitly, to cater for admin-initiated removals
78
    state_for_success = VirtualMachine.OPER_STATE_FROM_OPCODE.get(opcode, None)
79
    if status == 'success' and state_for_success is not None:
80
        utils.update_state(vm, state_for_success)
81
        # Set the deleted flag explicitly, cater for admin-initiated removals
80 82
        if opcode == 'OP_INSTANCE_REMOVE':
81 83
            vm.deleted = True
82 84

  
......
135 137
            index=i,
136 138
            mac=nic.get('mac', ''),
137 139
            ipv4=nic.get('ip', ''),
138
            ipv6=nic.get('ipv6',''),
140
            ipv6=nic.get('ipv6', ''),
139 141
            firewall_profile=firewall_profile)
140 142

  
141 143
        # network nics modified, update network object
......
249 251
    #
250 252
    # kw['pnode']=rapi.GetNodes()[0]
251 253
    kw['dry_run'] = settings.TEST
252
    
254

  
253 255
    kw['beparams'] = {
254 256
        'auto_balance': True,
255 257
        'vcpus': flavor.cpu,
256 258
        'memory': flavor.ram}
257
    
259

  
258 260
    kw['osparams'] = {
259 261
        'img_id': image.backend_id,
260 262
        'img_passwd': password,
261 263
        'img_format': image.format}
262 264
    if personality:
263 265
        kw['osparams']['img_personality'] = json.dumps(personality)
264
    
266

  
265 267
    # Defined in settings.GANETI_CREATEINSTANCE_KWARGS
266 268
    # kw['hvparams'] = dict(serial_console=False)
267 269

  
......
414 416
    rapi.ModifyInstance(vm.backend_id,
415 417
                        os_name=settings.GANETI_CREATEINSTANCE_KWARGS['os'])
416 418

  
419

  
417 420
def get_ganeti_instances():
418 421
    return rapi.GetInstances()
419 422

  
423

  
420 424
def get_ganeti_nodes():
421 425
    return rapi.GetNodes()
422 426

  
427

  
423 428
def get_ganeti_jobs():
424 429
    return rapi.GetJobs()

Also available in: Unified diff