Revision 5f90e24c snf-cyclades-app/synnefo/logic/backend.py
b/snf-cyclades-app/synnefo/logic/backend.py | ||
---|---|---|
34 | 34 |
from django.db import transaction |
35 | 35 |
from datetime import datetime, timedelta |
36 | 36 |
|
37 |
from synnefo.db.models import (Backend, VirtualMachine, Network,
|
|
37 |
from synnefo.db.models import (VirtualMachine, Network, |
|
38 | 38 |
BackendNetwork, BACKEND_STATUSES, |
39 | 39 |
pooled_rapi_client, VirtualMachineDiagnostic, |
40 | 40 |
Flavor, IPAddress, IPAddressLog) |
... | ... | |
637 | 637 |
provider = flavor.disk_provider |
638 | 638 |
if provider is not None: |
639 | 639 |
disk["provider"] = provider |
640 |
disk["origin"] = volume.source_image["checksum"]
|
|
640 |
disk["origin"] = volume.origin
|
|
641 | 641 |
extra_disk_params = settings.GANETI_DISK_PROVIDER_KWARGS\ |
642 | 642 |
.get(provider) |
643 | 643 |
if extra_disk_params is not None: |
... | ... | |
1042 | 1042 |
def attach_volume(vm, volume, depends=[]): |
1043 | 1043 |
log.debug("Attaching volume %s to vm %s", vm, volume) |
1044 | 1044 |
|
1045 |
disk = {"size": volume.size,
|
|
1045 |
disk = {"size": int(volume.size) << 10,
|
|
1046 | 1046 |
"name": volume.backend_volume_uuid, |
1047 | 1047 |
"volume_name": volume.backend_volume_uuid} |
1048 |
if volume.source_volume_id is not None: |
|
1049 |
disk["origin"] = volume.source_volume.backend_volume_uuid |
|
1050 |
elif volume.source_snapshot is not None: |
|
1051 |
disk["origin"] = volume.source_snapshot["checksum"] |
|
1052 |
elif volume.source_image is not None: |
|
1053 |
disk["origin"] = volume.source_image["checksum"] |
|
1048 |
|
|
1049 |
disk_provider = volume.disk_provider |
|
1050 |
if disk_provider is not None: |
|
1051 |
disk["provider"] = disk_provider |
|
1052 |
|
|
1053 |
if volume.origin is not None: |
|
1054 |
disk["origin"] = volume.origin |
|
1054 | 1055 |
|
1055 | 1056 |
kwargs = { |
1056 | 1057 |
"instance": vm.backend_vm_id, |
... | ... | |
1058 | 1059 |
"depends": depends, |
1059 | 1060 |
} |
1060 | 1061 |
if vm.backend.use_hotplug(): |
1061 |
kwargs["hotplug"] = True |
|
1062 |
kwargs["hotplug_if_possible"] = True
|
|
1062 | 1063 |
if settings.TEST: |
1063 | 1064 |
kwargs["dry_run"] = True |
1064 | 1065 |
|
... | ... | |
1066 | 1067 |
return client.ModifyInstance(**kwargs) |
1067 | 1068 |
|
1068 | 1069 |
|
1069 |
def detach_volume(vm, volume): |
|
1070 |
def detach_volume(vm, volume, depends=[]):
|
|
1070 | 1071 |
log.debug("Removing volume %s from vm %s", volume, vm) |
1071 | 1072 |
kwargs = { |
1072 | 1073 |
"instance": vm.backend_vm_id, |
1073 | 1074 |
"disks": [("remove", volume.backend_volume_uuid, {})], |
1075 |
"depends": depends, |
|
1074 | 1076 |
} |
1075 | 1077 |
if vm.backend.use_hotplug(): |
1076 |
kwargs["hotplug"] = True |
|
1078 |
kwargs["hotplug_if_possible"] = True
|
|
1077 | 1079 |
if settings.TEST: |
1078 | 1080 |
kwargs["dry_run"] = True |
1079 | 1081 |
|
Also available in: Unified diff