Пример #1
0
def get_resource(name, value, for_update=False):
    """Get object from DB based by it's ID

    Helper function for getting an object from DB by it's DB and raising
    appropriate command line errors if the object does not exist or the
    ID is invalid.

    """
    objects = RESOURCE_MAP[name]
    if name == "floating-ip":
        capital_name = "Floating IP"
    else:
        capital_name = name.capitalize()
    PREFIXED_RESOURCES = ["server", "network", "port", "volume"]

    if isinstance(value, basestring) and name in PREFIXED_RESOURCES:
        if value.startswith(settings.BACKEND_PREFIX_ID):
            try:
                if name == "server":
                    value = id_from_instance_name(value)
                elif name == "network":
                    value = id_from_network_name(value)
                elif name == "port":
                    value = id_from_nic_name(value)
                elif name == "volume":
                    value = id_from_disk_name(value)
            except ValueError:
                raise CommandError("Invalid {} ID: {}".format(capital_name,
                                                              value))

    if for_update:
        objects = objects.select_for_update()
    try:
        return objects.get(id=value)
    except ObjectDoesNotExist:
        msg = ("{0} with ID {1} does not exist. Use {2}-list to find out"
               " available {2} IDs.")
        raise CommandError(msg.format(capital_name, value, name))
    except (ValueError, TypeError):
        raise CommandError("Invalid {} ID: {}".format(capital_name, value))
Пример #2
0
def get_resource(name, value, for_update=False):
    """Get object from DB based by it's ID

    Helper function for getting an object from DB by it's DB and raising
    appropriate command line errors if the object does not exist or the
    ID is invalid.

    """
    objects = RESOURCE_MAP[name]
    if name == "floating-ip":
        capital_name = "Floating IP"
    else:
        capital_name = name.capitalize()
    PREFIXED_RESOURCES = ["server", "network", "port", "volume"]

    if isinstance(value, basestring) and name in PREFIXED_RESOURCES:
        if value.startswith(settings.BACKEND_PREFIX_ID):
            try:
                if name == "server":
                    value = id_from_instance_name(value)
                elif name == "network":
                    value = id_from_network_name(value)
                elif name == "port":
                    value = id_from_nic_name(value)
                elif name == "volume":
                    value = id_from_disk_name(value)
            except ValueError:
                raise CommandError("Invalid {} ID: {}".format(
                    capital_name, value))

    if for_update:
        objects = objects.select_for_update()
    try:
        return objects.get(id=value)
    except ObjectDoesNotExist:
        msg = ("{0} with ID {1} does not exist. Use {2}-list to find out"
               " available {2} IDs.")
        raise CommandError(msg.format(capital_name, value, name))
    except (ValueError, TypeError):
        raise CommandError("Invalid {} ID: {}".format(capital_name, value))