Integration of configruation aware RM service provider with jazz
I have implemented my own RM service provider and it is integrated and working fine with jazz quality management module.
Now, I am trying to make my RM service provider "Configuration Aware" on the guidelines given in OSLC Configuration Management 1.0 https://tools.oasis-open.org/version-control/browse/wsvn/oslc-ccm/trunk/specs/config-mgt/oslc-config-mgt.html.
I have associated my jazz qm project with a Global Configuration Context. And now when I try to access my service provider (qm project -> planning (selected a testPlan) -> Requirement Collection Links -> +), jazz gives an error saying that "AQXCM5046E The selected project, "MyProjectName", does not support configuration management capabilities."
Question: What should I do in my rootServices rdf and serviceProvider rdf so that jazz can know that my service provider is Configuration Aware?
Accepted answer
https://jazz.net/wiki/bin/view/Deployment/IntegratingWithConfigurationManagementEnabledCLMApplications
There are some service provider parameters that the CLM applications check, especially the configurationAware property. Those are detailed in this section of that wiki page. You may find some other pertinent information there also.
If you have any insights to share based on your experience, we'd like to hear them.
Comments
Thanks Kathryn for a quick answer.
I have gone through the page that you have recommended.
I have read the specification from these three links:
https://tools.oasis-open.org/version-control/browse/wsvn/oslc-ccm/trunk/specs/config-mgt/oslc-config-mgt.html
https://tools.oasis-open.org/version-control/browse/wsvn/oslc-ccm/trunk/specs/config-mgt/versioned-resources.html
https://tools.oasis-open.org/version-control/browse/wsvn/oslc-ccm/trunk/specs/config-mgt/config-resources.html
These namespaces are mentioned on these pages
http://open-services.net/ns/config#
http://open-services.net/ns/config#globalConfigurationService
While the namespace mentioned on your link is:
http://jazz.net/xmlns/prod/jazz/process/1.0/
Can you please explain a bit why there are differences?
Or is it some interim implementation which will be replaced with an updated version later?
Thanks and Regards
Hi Kathryn,
i am following the guidelines given on the link you mentioned. I have put globalConfigurationAware and other two tags in my serviceprovider document
I am able to add resources from my project to Requirement Collection Links in a Configuration aware qm project.
Now, i am trying to add configuration baseline/stream from my project to the Global Configuration i.e. "Scenario 3: Enable users to define configurations in your own application". from your document.
When I press "Add Configuration" in Global Configuration, a dialog opens and says that "x friend servers are not available" on pressing show details it shows my project name there.
When this dialog opens it accesses rootservices and oslc_config rdf from my server and after that it doesn't try to get anything from my server?
my oslc_config is similar to the one that is returned by
https://jazz.local:9443/rm/oslc_config (our local jazz installation). Can you guide me further a bit, how to make it work?
2 other answers
I'm not sure I understand your question. But the following might help. In order for the GCM application to be able to select configurations from a CM provider, GCM discovers which CM providers support selection dialogs as follows:
- It determines the friends known to the JTS. For example, this might include "/qm", "/rm" and so on.
- For each friend from #1, it gets its root services document. It looks for an oslc_config:cmServiceProvider statement. The object of that statement should be the URI of an OSLC service provider catalog.
- It reads the service provider catalog, and looks at each service provider. Those that declare a selection dialog are noted as available CM providers.
<oslc_config:cmServiceProviders rdf:resource="https://localhost:9443/rm/oslc_config"/>
This indicates that the OSLC Service Provider Catalog for CM discovery is at https://localhost:9443/rm/oslc_config
A GET on that should return something like:
The example RDF shows a service provider at https://localhost:9443/rm/oslc_config/components<rdf:RDF xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
xmlns:oslc="http://open-services.net/ns/core#"
xmlns:vvc="http://jazz.net/ns/vvc#"
xmlns:dcterms="http://purl.org/dc/terms/"><oslc:ServiceProviderCatalog> <oslc:serviceProvider>
<oslc:ServiceProvider rdf:about="https://localhost:9443/rm/oslc_config/components">
<oslc:details rdf:resource="https://localhost:9443/rm/oslc_config/components"/>
<dcterms:title>Requirements Management</dcterms:title>
</oslc:ServiceProvider>
</oslc:serviceProvider><oslc:domain rdf:resource="http://open-services.net/ns/config#"/> <dcterms:description>Configuration Services Provided by the RM application.</dcterms:description>
<dcterms:title>RM Configuration Management Services Catalog</dcterms:title>
</oslc:ServiceProviderCatalog></rdf:RDF>
A GET on that service provider gives:
Hope that helps,<rdf:RDF xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
xmlns:oslc="http://open-services.net/ns/core#"
xmlns:vvc="http://jazz.net/ns/vvc#"
xmlns:dcterms="http://purl.org/dc/terms/">
<oslc:ServiceProvider>
<oslc:service>
<oslc:Service>
<oslc:selectionDialog>
<oslc:Dialog>
<dcterms:title>RM Component Configuration Picker</dcterms:title>
<oslc:label>RM Component Configuration Picker</oslc:label>
<oslc:dialog rdf:resource="https://localhost:9443/rm/_ajax-modules/com.ibm.rdm.web.OslcConfigurationPickerPane"/>
<oslc:hintWidth>600px</oslc:hintWidth>
<oslc:hintHeight>500px</oslc:hintHeight>
<oslc:resourceType rdf:resource="http://jazz.net/ns/vvc#Configuration"/>
<oslc:usage rdf:resource="http://jazz.net/ns/vvc#Configuration"/>
</oslc:Dialog>
</oslc:selectionDialog>
</oslc:Service>
</oslc:service>
</oslc:ServiceProvider>
</rdf:RDF>
Best regards,
David
Comments
Hi David,
Thanks for a detailed answer.
I am exactly doing the same steps that you have mentioned in your answer. Basically, I have copied the responses from jazz:9443/rm/rootservices, oslc_config and the components. Mine is an exact replica just the links are changed and are pointing to our services.
But the problem is when I try to "Add Configuration" in a Global Configuration Stream, a dialog shows up and when i press refresh button on that dialog, it accesses the rootservices and oslc_config from my server, after that no request comes in from jazz to my server. And the Add configuration dialog shows a message "One friend server is not available" and the list contains the name of our server.
My oslc_config has a link to our components service (same as jazz rm oslc_config) but jazz never tries to access that.
Can you please guide me further a bit, what is happening? How can jazz decide based on the oslc_config response that this friend server is offline?
If you say i can send the responses for the services for rootservices, oslc_config and components from my server.
The version of our jazz server is 6.0.1.
Regards
You might get more diagnostics by enabling DEBUG level for the LcProviderHelper class:
- Stop the GC server.
- cd <installdir>/server/conf/gc
-
Edit the log4j.properties file, add the following line:
log4j.logger.com.ibm.team.gc.web.frontservice.discovery.LcProviderHelper=DEBUG -
Restart the GC server.
1 vote
Hi David,
I have done all the steps that you mentioned and it seems like some NullPointerException is being thrown while accessing my service. Following is the relevant part of the log
2016-01-28 16:17:12,013 [Default Executor-thread-249 @@ 16:17 jazz <gc.viewConfiguration/Search for a configuration to add to the selected stream@700933f5-7174-431b-8312-0a5f3653f58d> /gc/gc.webui.discoverLcProviders] DEBUG eam.gc.web.frontservice.discovery.LcProviderHelper - Skipping local-configuration provider 'https://bonnie.local:8443/com.consul.oslc.serviceprovider/rootservices' due to an error
java.util.concurrent.ExecutionException: java.lang.NullPointerException
at java.util.concurrent.FutureTask.report(FutureTask.java:134)
at java.util.concurrent.FutureTask.get(FutureTask.java:214)
at com.ibm.team.gc.web.frontservice.discovery.LcProviderHelper.getAllFriendLcApplications(LcProviderHelper.java:160)
at com.ibm.team.gc.web.frontservice.discovery.LcProviderWhitelist.getServiceProvidersAndAddToWhitelist(LcProviderWhitelist.java:63)
...
Would you like full log?
Please submit a defect work item on jazz.net (https://jazz.net/jazz/web/projects/Jazz%20Foundation#action=com.ibm.team.workitem.viewWelcome) and include as much detail as possible, including the gc.log file. Thanks.
The open-services.net namespaces are defined based on the OSLC specifications. You need those as part of implementing the specs.
CLM has implemented some extensions beyond the specifications, like the service provider properties. Those are defined in the jazz.net namespace mentioned.
Does that help?