Example #1
0
    def test_filter_hubs_by_profile(self):
        pbm_client = mock.Mock()
        session = mock.Mock()
        session.pbm = pbm_client
        hubs = mock.Mock()
        profile_id = 'profile-0'

        pbm.filter_hubs_by_profile(session, hubs, profile_id)
        session.invoke_api.assert_called_once_with(
            pbm_client,
            'PbmQueryMatchingHub',
            pbm_client.service_content.placementSolver,
            hubsToSearch=hubs,
            profile=profile_id)
Example #2
0
    def test_filter_hubs_by_profile(self):
        pbm_client = mock.Mock()
        session = mock.Mock()
        session.pbm = pbm_client
        hubs = mock.Mock()
        profile_id = 'profile-0'

        pbm.filter_hubs_by_profile(session, hubs, profile_id)
        session.invoke_api.assert_called_once_with(
            pbm_client,
            'PbmQueryMatchingHub',
            pbm_client.service_content.placementSolver,
            hubsToSearch=hubs,
            profile=profile_id)
Example #3
0
 def _filter_by_profile(self, datastores, profile_id):
     """Filter out input datastores that do not match the given profile."""
     cf = self._session.pbm.client.factory
     hubs = pbm.convert_datastores_to_hubs(cf, datastores)
     hubs = pbm.filter_hubs_by_profile(self._session, hubs, profile_id)
     hub_ids = [hub.hubId for hub in hubs]
     return {k: v for k, v in datastores.items() if k.value in hub_ids}
Example #4
0
 def _filter_by_profile(self, datastores, profile_id):
     """Filter out input datastores that do not match the given profile."""
     cf = self._session.pbm.client.factory
     hubs = pbm.convert_datastores_to_hubs(cf, datastores)
     filtered_hubs = pbm.filter_hubs_by_profile(self._session, hubs,
                                                profile_id)
     return pbm.filter_datastores_by_hubs(filtered_hubs, datastores)
Example #5
0
 def _filter_by_profile(self, datastores, profile_id):
     """Filter out input datastores that do not match the given profile."""
     cf = self._session.pbm.client.factory
     hubs = pbm.convert_datastores_to_hubs(cf, datastores)
     hubs = pbm.filter_hubs_by_profile(self._session, hubs, profile_id)
     hub_ids = [hub.hubId for hub in hubs]
     return {k: v for k, v in datastores.items() if k.value in hub_ids}
Example #6
0
 def _filter_by_profile(self, datastores, profile_id):
     """Filter out input datastores that do not match the given profile."""
     cf = self._session.pbm.client.factory
     hubs = pbm.convert_datastores_to_hubs(cf, datastores)
     filtered_hubs = pbm.filter_hubs_by_profile(self._session, hubs,
                                                profile_id)
     return pbm.filter_datastores_by_hubs(filtered_hubs, datastores)
Example #7
0
def _filter_datastores_matching_storage_policy(session, datastores,
                                               storage_policy):
    """Get datastores matching the given storage policy.

    :param datastores: an iterator over objects of a RetrieveResult
    :param storage_policy: the storage policy name
    :return: an iterator to datastores conforming to the given storage policy
    """
    profile_id = pbm.get_profile_id_by_name(session, storage_policy)
    if not profile_id:
        LOG.error("Unable to retrieve storage policy with name %s",
                  storage_policy)
        return

    factory = session.pbm.client.factory

    # The hub-id is the moref-value of the datastore
    ds_mors = []
    ref_to_oc = {}
    for oc in datastores:
        ds_mors.append(oc.obj)
        ref_to_oc[vim_util.get_moref_value(oc.obj)] = oc

    hubs = pbm.convert_datastores_to_hubs(factory, ds_mors)
    matching_hubs = pbm.filter_hubs_by_profile(session, hubs,
                                                profile_id)

    # Now we have to map back all the matching ones
    for hub in matching_hubs:
        yield ref_to_oc[hub.hubId]
Example #8
0
def _filter_datastores_matching_storage_policy(session, data_stores, storage_policy):
    """Get datastores matching the given storage policy.

    :param data_stores: the list of retrieve result wrapped datastore objects
    :param storage_policy: the storage policy name
    :return the list of datastores conforming to the given storage policy
    """
    profile_id = pbm.get_profile_id_by_name(session, storage_policy)
    if profile_id:
        factory = session.pbm.client.factory
        ds_mors = [oc.obj for oc in data_stores.objects]
        hubs = pbm.convert_datastores_to_hubs(factory, ds_mors)
        matching_hubs = pbm.filter_hubs_by_profile(session, hubs, profile_id)
        if matching_hubs:
            matching_ds = pbm.filter_datastores_by_hubs(matching_hubs, ds_mors)
            object_contents = [oc for oc in data_stores.objects if oc.obj in matching_ds]
            data_stores.objects = object_contents
            return data_stores
    LOG.error(_LE("Unable to retrieve storage policy with name %s"), storage_policy)
Example #9
0
def _filter_datastores_matching_storage_policy(session, data_stores,
                                               storage_policy):
    """Get datastores matching the given storage policy.

    :param data_stores: the list of retrieve result wrapped datastore objects
    :param storage_policy: the storage policy name
    :return: the list of datastores conforming to the given storage policy
    """
    profile_id = pbm.get_profile_id_by_name(session, storage_policy)
    if profile_id:
        factory = session.pbm.client.factory
        ds_mors = [oc.obj for oc in data_stores.objects]
        hubs = pbm.convert_datastores_to_hubs(factory, ds_mors)
        matching_hubs = pbm.filter_hubs_by_profile(session, hubs, profile_id)
        if matching_hubs:
            matching_ds = pbm.filter_datastores_by_hubs(matching_hubs, ds_mors)
            object_contents = [
                oc for oc in data_stores.objects if oc.obj in matching_ds
            ]
            data_stores.objects = object_contents
            return data_stores
    LOG.error("Unable to retrieve storage policy with name %s", storage_policy)