Revision 79a1e9bd snf-cyclades-app/synnefo/logic/backend.py
b/snf-cyclades-app/synnefo/logic/backend.py | ||
---|---|---|
1024 | 1024 |
return None |
1025 | 1025 |
|
1026 | 1026 |
|
1027 |
def attach_volume(vm, volume, depends=[]): |
|
1028 |
log.debug("Attaching volume %s to vm %s", vm, volume) |
|
1029 |
|
|
1030 |
disk = {"size": volume.size, |
|
1031 |
"name": volume.backend_volume_uuid, |
|
1032 |
"volume_name": volume.backend_volume_uuid} |
|
1033 |
if volume.source_volume_id is not None: |
|
1034 |
disk["origin"] = volume.source_volume.backend_volume_uuid |
|
1035 |
elif volume.source_snapshot is not None: |
|
1036 |
disk["origin"] = volume.source_snapshot["checksum"] |
|
1037 |
elif volume.source_image is not None: |
|
1038 |
disk["origin"] = volume.source_image["checksum"] |
|
1039 |
|
|
1040 |
kwargs = { |
|
1041 |
"instance": vm.backend_vm_id, |
|
1042 |
"disks": [("add", "-1", disk)], |
|
1043 |
"depends": depends, |
|
1044 |
} |
|
1045 |
if vm.backend.use_hotplug(): |
|
1046 |
kwargs["hotplug"] = True |
|
1047 |
if settings.TEST: |
|
1048 |
kwargs["dry_run"] = True |
|
1049 |
|
|
1050 |
with pooled_rapi_client(vm) as client: |
|
1051 |
return client.ModifyInstance(**kwargs) |
|
1052 |
|
|
1053 |
|
|
1054 |
def detach_volume(vm, volume): |
|
1055 |
log.debug("Removing volume %s from vm %s", volume, vm) |
|
1056 |
kwargs = { |
|
1057 |
"instance": vm.backend_vm_id, |
|
1058 |
"disks": [("remove", volume.backend_volume_uuid, {})], |
|
1059 |
} |
|
1060 |
if vm.backend.use_hotplug(): |
|
1061 |
kwargs["hotplug"] = True |
|
1062 |
if settings.TEST: |
|
1063 |
kwargs["dry_run"] = True |
|
1064 |
|
|
1065 |
with pooled_rapi_client(vm) as client: |
|
1066 |
return client.ModifyInstance(**kwargs) |
|
1067 |
|
|
1068 |
|
|
1027 | 1069 |
def get_instances(backend, bulk=True): |
1028 | 1070 |
with pooled_rapi_client(backend) as c: |
1029 | 1071 |
return c.GetInstances(bulk=bulk) |
Also available in: Unified diff