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)
def test_filter_datastores_by_hubs(self): ds_values = [] datastores = [] for i in range(0, 10): value = "ds-%d" % i ds_values.append(value) datastores.append(self._create_datastore(value)) hubs = [] hub_ids = ds_values[0:int(len(ds_values) / 2)] for hub_id in hub_ids: hub = mock.Mock() hub.hubId = hub_id hubs.append(hub) filtered_ds = pbm.filter_datastores_by_hubs(hubs, datastores) self.assertEqual(len(hubs), len(filtered_ds)) filtered_ds_values = [ds.value for ds in filtered_ds] self.assertEqual(set(hub_ids), set(filtered_ds_values))
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)
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)