通过manifest.yml文件配置目录项

时间:2016-02-26 00:39:32

标签: spring-boot spring-cloud

使用spring-cloud-cloudfoundry-service-broker我们开发了service broker 最初我们在application.yml文件中定义了目录项,这些目录项被捆绑在jar中,这一切都很有效。

我们考虑在将服务推送到manifest.yml时通过cloud foundry文件提供,而不是在jar文件中捆绑目录项。 但遗憾的是,应用程序没有获取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/

1 个答案:

答案 0 :(得分:2)

那不行。

manifest.yml文件由cf CLI专门用于在将应用推送到CF时提供选项。部署的应用程序永远不会看到此文件或其任何内容。事实上,CF平台本身永远不会看到文件或其内容 - 它完全由客户端的CLI处理。

application.yml文件由Spring Boot使用,内容通过@ConfigurationProperties和其他方式提供给应用。

这是两个完全独立的概念和机制,两者都碰巧使用YAML数据格式。