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