/** * Create a query to return all RegistryState links within a group, tenant or global * RegistryState links if the tenantLinks collection is null/empty. * * @param tenantLinks * @return QueryTask */ private static QueryTask buildRegistryQueryByTenantLinks(Collection<String> tenantLinks) { return buildRegistryQuery(buildQueryByTenantLinks(tenantLinks)); }
/** * Retrieve the registries available to the given group for the given host (and global registries) * @param serviceHost * @param hostname * @param tenantLinks * @param consumer */ public static void findRegistriesByHostname(ServiceHost serviceHost, String hostname, Collection<String> tenantLinks, BiConsumer<Collection<RegistryState>, Collection<Throwable>> consumer) { List<QueryTask> queryTasks = new ArrayList<>(); if (tenantLinks != null && !tenantLinks.isEmpty()) { // add query for global groups queryTasks.add(buildRegistryQuery(buildQueryByTenantLinks(null), buildQueryByHostname(hostname))); // add query for registries of a specific tenant queryTasks.add(buildRegistryQuery(buildQueryByTenantLinks(tenantLinks), buildQueryByHostname(hostname))); } else { // add query for all registries if no tenant queryTasks.add(buildRegistryQuery(buildQueryByHostname(hostname))); } queryForRegistries(serviceHost, queryTasks, consumer); }
/** * Create a query to return all RegistryState links matching a given name. Results are filtered * within a specified group/tenant or are global RegistryState links if the tenantLinks * collection is null/empty. * * @param registryName * @param tenantLinks * @return QueryTask */ private static QueryTask buildRegistryQueryByNameAndTenantLinks(String registryName, Collection<String> tenantLinks) { Query nameClause = new Query() .setTermPropertyName(RegistryState.FIELD_NAME_NAME) .setTermMatchValue(registryName); Query tenantsClause = buildQueryByTenantLinks(tenantLinks); return buildRegistryQuery(nameClause, tenantsClause); }