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

Sandor Molnar commented on KNOX-2187:
-------------------------------------

If we had metadata in the Knox service definitions ({{service.xml}} files) it 
would also be possible to know if a particular service fits into an "API" or a 
"UI" kind of topology. For instance: {{ATLAS-API}} is a good fit for an 
API-like topology whereas {{ATLAS}} is a good candidate for a topology that 
lists UI services.

The latter case is also a good sample of how service dependencies are useful: 
let's assume you have a topology with {{ATLAS}} but {{ATLAS-API}} is not added 
in this topology's service list. Dispatching certain {{ATLAS}} endpoints will 
result in an error due to the missing {{ATLAS_API}} service.

The first version of service definition metadata should contain the following 
information:
 * api - a boolean flag indicating if the service is an API service in KNOX
 * ui - a boolean flag indicating if the service is a UI service in KNOX
 * dependsOn - a list of Knox services which the current service depends on

For instance:

{{- ATLAS}} would have the following metadata:
{code:java}
<metadata>
    <api>false</api>
    <ui>true</ui>
    <dependsOn>ATLAS-API</ui>
</metadata> {code}
{{- ATLAS-API}} would have the following metadata:
{code:java}
<metadata>
    <api>true</api>
    <ui>false</ui>
    <dependsOn />
</metadata> {code}
 

There are some services which are both API and UI like services. For instance, 
SOLR is one of them:
{code:java}
<service role="SOLR" name="solr" version="6.0.0">
    <metadata>
        <api>true</api>
        <ui>true</ui>
        <dependsOn />
    </metadata>
    ...
</service>{code}

> Add metadata to service definitions
> -----------------------------------
>
>                 Key: KNOX-2187
>                 URL: https://issues.apache.org/jira/browse/KNOX-2187
>             Project: Apache Knox
>          Issue Type: New Feature
>          Components: Server
>    Affects Versions: 1.1.0, 1.2.0, 1.3.0, 1.4.0
>            Reporter: Sandor Molnar
>            Priority: Minor
>             Fix For: 1.5.0
>
>
> There are some services - mainly UI services - that are not working without 
> some more required services in place (mainly their API counterpart). For 
> instance: {{RANGERUI}} won't work properly if {{RANGER}} is not available.
> To address this issue, some sort of metadata should be added in service 
> definitions and a new strategy should be introduced when auto-discovery is 
> enabled.



--
This message was sent by Atlassian Jira
(v8.3.4#803005)

Reply via email to