Exemple #1
0
def search(provider_id, generic_filters, meta_filters, skip_store):
    """Return information on existing machine(s).
    """
    provider = _retrieve_provider(provider_id)

    if not skip_store:
        if generic_filters or meta_filters:
            raise ConfigurationError(
                "Filters are only supported when the 'skip_store' option "
                "is set.")
        machines = Machine.machines(provider.provider_id)
    else:
        generic_filters, meta_filters = \
           _preprocess_filters(generic_filters, meta_filters)
        manager = provider.get_provider_machine()

        if issubclass(manager, AbstractDatabaseManager):
            meta_filters = {}
            manager = _retrieve_database_manager(provider_id)
        elif issubclass(manager, AbstractMachineManager):
            manager = _retrieve_machine_manager(provider_id)

        machines = manager.search(generic_filters, meta_filters)

    rset = ResultSet(names=('uuid', 'provider_id', 'av_zone', 'addresses'),
                     types=(str, str, str, str))

    for machine in machines:
        row = (str(machine.uuid), machine.provider_id, machine.av_zone,
               machine.addresses)
        rset.append_row(row)
    return CommandResult(None, results=rset)
Exemple #2
0
    def execute(self,
                provider_id,
                generic_filters=None,
                meta_filters=None,
                skip_store=False):
        """Return information on existing machine(s).

        :param provider_id: Provider's Id.
        :param generic_filters: Filter returned machines by some properites
                                but metadata properties.
        :param meta_filters: Filter returned machines by metadata properties.
        :param skip_store: Proceed anyway if there is no information on
                           the machine in the state store. Default is False.
        """
        rset = ResultSet(names=('uuid', 'provider_id', 'av_zone', 'addresses'),
                         types=(str, str, str, str))

        if not skip_store:
            if generic_filters or meta_filters:
                raise _errors.ConfigurationError(
                    "Filters are only supported when the 'skip_store' option "
                    "is set.")
            provider = _retrieve_provider(provider_id)
            for mc in Machine.machines(provider.provider_id):
                rset.append_row(
                    (str(mc.uuid), mc.provider_id, mc.av_zone, mc.addresses))
        else:
            generic_filters, meta_filters = \
                _preprocess_filters(generic_filters, meta_filters)
            manager = _retrieve_manager(provider_id)
            for mc in manager.search_machines(generic_filters, meta_filters):
                rset.append_row(
                    (str(mc.uuid), mc.provider_id, mc.av_zone, mc.addresses))

        return CommandResult(None, results=rset)
Exemple #3
0
def _retrieve_database_manager(provider_id):
    """Retrive machine manager for a provider.
    """
    provider = _retrieve_provider(provider_id)
    DatabaseManager = provider.get_provider_machine()
    if not issubclass(DatabaseManager, AbstractDatabaseManager):
        raise ConfigurationError(
            "Provider (%s) does not allow to manage machine databases "
            "directly." % (provider_id, ))
    return DatabaseManager(provider)
Exemple #4
0
def _retrieve_snapshot_manager(provider_id):
    """Retrive snapshot manager for a provider.
    """
    provider = _retrieve_provider(provider_id)
    SnapshotManager = provider.get_provider_snapshot()
    if not issubclass(SnapshotManager, AbstractSnapshotManager):
        raise ConfigurationError(
            "Provider (%s) does not allow to manage machine snapshots "
            "directly." % (provider_id, ))
    return SnapshotManager(provider)
Exemple #5
0
def _retrieve_database_manager(provider_id):
    """Retrive machine manager for a provider.
    """
    provider = _retrieve_provider(provider_id)
    DatabaseManager = provider.get_provider_machine()
    if not issubclass(DatabaseManager, AbstractDatabaseManager):
        raise ConfigurationError(
            "Provider (%s) does not allow to manage machine databases "
            "directly." % (provider_id, )
        )
    return DatabaseManager(provider)
Exemple #6
0
def _retrieve_snapshot_manager(provider_id):
    """Retrive snapshot manager for a provider.
    """
    provider = _retrieve_provider(provider_id)
    SnapshotManager = provider.get_provider_snapshot()
    if not issubclass(SnapshotManager, AbstractSnapshotManager):
        raise ConfigurationError(
            "Provider (%s) does not allow to manage machine snapshots "
            "directly." % (provider_id, )
        )
    return SnapshotManager(provider)
def _decide_destroy_event(provider_id):
    """Decide whether it should call a machine or a database provider.
    """
    provider = _retrieve_provider(provider_id)
    manager = provider.get_provider_machine()
    if issubclass(manager, AbstractMachineManager):
        return 'DESTROY_MACHINE'
    elif issubclass(manager, AbstractDatabaseManager):
        return 'DESTROY_DATABASE'

    assert False
def _decide_destroy_event(provider_id):
    """Decide whether it should call a machine or a database provider.
    """
    provider = _retrieve_provider(provider_id)
    manager = provider.get_provider_machine()
    if issubclass(manager, AbstractMachineManager):
        return 'DESTROY_MACHINE'
    elif issubclass(manager, AbstractDatabaseManager):
        return 'DESTROY_DATABASE'

    assert False
Exemple #9
0
def search(provider_id, generic_filters, meta_filters, skip_store):
    """Return information on existing machine(s).
    """
    provider = _retrieve_provider(provider_id)

    if not skip_store:
        if generic_filters or meta_filters:
            raise ConfigurationError(
                "Filters are only supported when the 'skip_store' option "
                "is set."
            )
        machines = Machine.machines(provider.provider_id)
    else:
        generic_filters, meta_filters = \
           _preprocess_filters(generic_filters, meta_filters)
        manager = provider.get_provider_machine()

        if issubclass(manager, AbstractDatabaseManager):
            meta_filters = {}
            manager = _retrieve_database_manager(provider_id)
        elif issubclass(manager, AbstractMachineManager):
            manager = _retrieve_machine_manager(provider_id)

        machines = manager.search(generic_filters, meta_filters)

    rset = ResultSet(
    names=('uuid', 'provider_id', 'av_zone', 'addresses'),
        types=(str, str, str, str)
    )

    for machine in machines:
        row = (
            str(machine.uuid), machine.provider_id, machine.av_zone,
            machine.addresses
        )
        rset.append_row(row)
    return CommandResult(None, results=rset)
Exemple #10
0
def _retrieve_manager(provider_id):
    """Retrive the manager for a provider.
    """
    provider = _retrieve_provider(provider_id)
    MachineManager = provider.get_provider_manager()
    return MachineManager(provider)