Использование spring-cloud-cloudfoundry-service-broker
было разработано service broker
.
Первоначально мы определили элементы каталога в пределах application.yml
файла, который поставляется в комплекте внутри банки, и все это отлично работает.Конфигурирование элементов каталога через файл manifest.yml
Вместо того, чтобы связывать элементы каталога в файле jar, мы думали о доставке через файл manifest.yml
при нажатии службы на cloud foundry
. Но, к сожалению, приложение не получает элементы каталога, указанные в файле manigest.yml
. Не могли бы вы сообщить нам, как мы можем поставить элементы каталога через файл manifest.yml
?
Я скопировал свой фрагмент кода здесь.
CatalogConfig.java
@ConfigurationProperties(prefix = "catalog")
@Component
public class CatalogConfig {
private List<ServiceDefinitionProxy> services;
public CatalogConfig() {
super();
}
@Bean
Catalog catalog() {
return new Catalog(services.stream().map(s -> s.unproxy())
.collect(Collectors.toList()));
}
public CatalogConfig(List<ServiceDefinitionProxy> services) {
super();
this.services = services;
}
public List<ServiceDefinitionProxy> getServices() {
return services;
}
public void setServices(List<ServiceDefinitionProxy> services) {
this.services = services;
}
public ServiceDefinitionProxy findServiceDefinition(String serviceId) {
return services.stream().filter(s -> s.getId().equals(serviceId))
.findFirst().get();
}
}
Manifest.yml
---
applications:
- name: my-service-broker
memory: 512M
instances: 1
host: my-service-broker
path: target/my-service-broker-1.0.0-SNAPSHOT.jar
env:
SPRING_PROFILES_DEFAULT: cloud
catalog:
services:
- id: f1478faa-d980-11e5-b5d2-0a1d41d68578
name: api-marketpace
description: API Marketplace
bindable: true
planUpdatable: true
head-type: api
tags:
- api
- Manage API Marketplace
metadata:
displayName: API Marketplace
imageUrl: https://my-service-broker.cf.com/images/logo.PNG
longDescription: API Marketplace.
providerDisplayName: API Team
documentationUrl: https://wikihub.com/display/ASC/Training
supportUrl: https://wikihub.com/display/ASC/Training
plans:
- id: f1478faa-d980-11e5-b5d2-0a1d41d68579
name: unlimited
description: free
metadata:
costs:
- amount:
usd: 0.00
unit: PER MONTH
bullets:
- Basic Unlimited
dashboardClient:
id: api-marketpace
secret: secret
redirectUrl: https://api.cf.com/
Спасибо Скотту за ваш быстрый ответ. В любом случае мы можем отправить элементы каталога как переменную среды через файл манифеста. Если это просто строка, которую я могу отправить этому свойству в свой класс конфигурации через файл манифеста, но поскольку элементы каталога являются списком, я не уверен, как отправить его в качестве переменной среды. Дайте мне знать, если есть какая-то возможность! – Dombe
Вы можете указать env vars, которые будут установлены в приложении, используя блок «env» в manifest.yml, как вы делаете с env var «SPRING_PROFILES_DEFAULT: cloud» в приведенном выше примере. –
Но как мы указываем элементы каталога как переменные среды? Я думаю, что все переменные среды имеют тип String, но элементы каталога - это список. – Dombe