brooklyn-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "ASF GitHub Bot (JIRA)" <j...@apache.org>
Subject [jira] [Commented] (BROOKLYN-195) Invalid catalog item can be posted to catalog
Date Thu, 19 Nov 2015 09:32:11 GMT

    [ https://issues.apache.org/jira/browse/BROOKLYN-195?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=15013220#comment-15013220
] 

ASF GitHub Bot commented on BROOKLYN-195:
-----------------------------------------

Github user tbouron commented on a diff in the pull request:

    https://github.com/apache/incubator-brooklyn/pull/1039#discussion_r45317891
  
    --- Diff: core/src/main/java/org/apache/brooklyn/core/catalog/internal/BasicBrooklynCatalog.java
---
    @@ -558,15 +561,34 @@ private void collectCatalogItems(String sourceYaml, Map<?,?>
itemMetadata, List<
                 throw new IllegalStateException("Could not resolve plan once id and itemType
are known (recursive reference?): "+sourceYaml);
             }
             String sourcePlanYaml = planInterpreter.getPlanYaml();
    -        
    -        CatalogItemDtoAbstract<?, ?> dto = createItemBuilder(itemType, symbolicName,
version)
    +
    +        CatalogItemBuilder itemBuilder = createItemBuilder(itemType, symbolicName, version)
                 .libraries(libraryBundles)
                 .displayName(displayName)
                 .description(description)
                 .deprecated(catalogDeprecated)
                 .iconUrl(catalogIconUrl)
    -            .plan(sourcePlanYaml)
    -            .build();
    +            .plan(sourcePlanYaml);
    +        if (itemType.equals(CatalogItemType.ENTITY) || itemType.equals(CatalogItemType.TEMPLATE))
{
    +            String stringServiceType = getFirstAs(itemAsMap, String.class, "type").orNull();
    +            // This is not a single item but a services based YAML
    +            if (stringServiceType == null) {
    +                final List<Map<?, ?>> services = getFirstAs(itemAsMap, List.class,
"services").orNull();
    +                if (services.isEmpty()) {
    +                    throw new IllegalStateException("Services are empty: " + sourceYaml);
    +                }
    +                stringServiceType = services.get(0).get("type").toString();
    --- End diff --
    
    The YAML let you add more than one services but Brooklyn will ultimately [deploys the
entity only if it contains only one service](https://issues.apache.org/jira/browse/BROOKLYN-195?jql=project%20%3D%20BROOKLYN).
That's why I'm checking only the first one.


> Invalid catalog item can be posted to catalog
> ---------------------------------------------
>
>                 Key: BROOKLYN-195
>                 URL: https://issues.apache.org/jira/browse/BROOKLYN-195
>             Project: Brooklyn
>          Issue Type: Bug
>            Reporter: Martin Harris
>            Priority: Minor
>
> The following YAML can be posted to the catalog
> {noformat}
> brooklyn.catalog:
>   id: invalid-catalog-item
>   version: 1.0
>   displayName: Invalid Catalog Item
>   itemType: template
> services:
> - type: org.apache.brooklyn.entity.stock.BasicApplication
> - type: org.apache.brooklyn.entity.stock.BasicApplication
> {noformat}
> E.g. by using the following curl command 
> curl http://localhost:8081/v1/catalog --data-binary @`pwd`/services.yaml
> This will return a 201 and the catalog item will be created. However, when trying to
deploy the catalog item, the following error is returned:
> {noformat}
> Transformer for Brooklyn OASIS CAMP interpreter gave an error creating this plan: Transformer
for catalog gave an error creating this plan: Transformer for Brooklyn OASIS CAMP interpreter
gave an error creating this plan: java.lang.UnsupportedOperationException: Single service
expected, but got [EntitySpec{type=interface org.apache.brooklyn.entity.stock.BasicApplication},
EntitySpec{type=interface org.apache.brooklyn.entity.stock.BasicApplication}]
> {noformat}
> As the use of multiple services is not supported, Brooklyn should not allow the catalog
item to be created
> Marked as low priority as the workaround is fairly simple (i.e. use the following YAML):
> {noformat}
> brooklyn.catalog:
>   id: invalid-catalog-item
>   version: 1.0
>   displayName: Invalid Catalog Item
>   itemType: template
> services:
> - type: org.apache.brooklyn.entity.stock.BasicApplication
>   brooklyn.children:
>   - type: org.apache.brooklyn.entity.stock.BasicApplication
>   - type: org.apache.brooklyn.entity.stock.BasicApplication
> {noformat}



--
This message was sent by Atlassian JIRA
(v6.3.4#6332)

Mime
View raw message