@Override public List<ServiceDefinition> makeServiceDefinitions() { Future<List<CatalogItemSummary>> pageFuture = admin.getCatalogApplications(config.includesAllCatalogVersions()); Map<String, ServiceDefinition> definitions = new HashMap<>(); Set<String> names = Sets.newHashSet(); List<CatalogItemSummary> page = ServiceUtil.getFutureValueLoggingError(pageFuture); for (CatalogItemSummary app : page) { try { String id = app.getSymbolicName(); String name; LOG.info("Brooklyn Application={}", app); if (config.includesAllCatalogVersions()) { id = ServiceUtil.getUniqueName(id, new HashSet<>(definitions.keySet())); name = ServiceUtil.getSafeName("br_" + app.getName() + "_" + app.getVersion()); } else { name = ServiceUtil.getUniqueName("br_" + app.getName(), names); } String description = app.getDescription(); boolean bindable = true; boolean planUpdatable = false; List<Plan> plans = new ArrayList<>(); try { plans = makePlans(id, app.getPlanYaml()); } catch (Exception e) { LOG.error("unable to make plans: Unexpected blueprint format"); } if (plans.size() == 0) { continue; } List<String> tags = getTags(); Future<String> iconAsBase64Future = admin.getIconAsBase64(app.getIconUrl()); String iconUrl = ServiceUtil.getFutureValueLoggingError(iconAsBase64Future); Map<String, Object> metadata = getServiceDefinitionMetadata(iconUrl, app.getPlanYaml()); List<String> requires = getTags(); DashboardClient dashboardClient = null; definitions.put( id, new ServiceDefinition( id, name, description, bindable, planUpdatable, plans, tags, metadata, requires, dashboardClient)); } catch (Exception e) { LOG.error("unable to add catalog item: {}", e.getMessage()); } } return new ArrayList<>(definitions.values()); }