What is the gcUri parameter that CLM RM DNG 6.0.3 requests?
HTTP Get requests to the DNG Query Capability now fail with a Response asking for a mandatory gcUri parameter. What value should be supplied and in which Header or URL Parameter should it appear?
showing 5 of 7
show 2 more comments
|
3 answers
Hi Lonnie,
If you don't specify a context, your link might resolve to the artifact in the default stream. There are more details on how to integrate with config-management-enabled projects at https://jazz.net/wiki/bin/view/Deployment/IntegratingWithConfigurationManagementEnabledCLMApplications. Hope that helps! Comments
Lonnie VanZandt
commented Feb 13 '17, 8:49 a.m.
Kathryn,
Thanks for the commiseration. However, the cited document (been there, done that) doesn't address two points:
Of course, there may be a subtle typo buried in the actual Request and so I will continue to scrutinize my requests. Meanwhile, documentation or implementer's advice on what the actual response means would be very helpful.
So, does anyone know how to explain or resolve a "missing gcUri parameter" response?
Kathryn Fryer
commented Feb 13 '17, 9:28 a.m.
Re: getting at the logs... do you have application admin access on the RM server? If so, you can "manage all projects", go to the Debug page and select Logging from the left-hand menu to get to the logs in case there are more details there.
Lonnie VanZandt
commented Feb 13 '17, 1:27 p.m.
No, not for this particular repo. It is a jazz.net system and the users there intentionally are not granted the Admin rights.
Lonnie VanZandt
commented Feb 13 '17, 1:39 p.m.
Kathryn,
Your article is good; thank you for authoring it. It would be all-caps awesome if you included within it several REST API calls to a sandbox Jazz.net GC and DNG deployment. Known, good, working API calls.
With that, integrators could compare and contrast their broken attempts with the known good examples to track down missing parameters, missing headers, missing body content, typos, bad encodings, etc.
Examples with actual expected error responses are also very useful. The OASIS specification provides the following example GET: GET /resources/conceptResourceA HTTP/1.1 Configuration-Context: http://example.com/configurations/myConfiguration1 If the sought version of a resource exists within a particular Stream (which may be Local and it could be Global) then is that Configuration Context the URI of the contextual Stream? In DNG--as you may well know--those URIs look like: https://jazz.net:443/sandbox01-rm/cm/stream/_4uP0cOVgEeazUcKMez0U3gIf not, is the URL supposed to be a URL into the /gc/configurations realm? If so, how are Local Configuration Streams supported? Does the contextual "Component" also need to be specified, somehow? For example, with the GC app of Jazz.net's CLM 6.0.3 sandbox, the Local Stream of interest, the Stream within which I want to execute the OSLC Query (not a mere GET but an OSLC Query Specification query) has a URL of:
Within DNG, this context also has a Stream URL of:
Which of these URLs must be provided in the Configuration-Context header value (and must it be URL encoded in that header) or which fragment of these URLs must be there as the configuration URI string?
showing 5 of 6
show 1 more comments
|
I have done some testing using my jazz.net sandbox RM project (CM-enabled) but not been able to trigger the complaint about gcUri. All my attempts successfully returned the requirements that I wanted. Here are some observations.
Comments
Lonnie VanZandt
commented Feb 14 '17, 12:26 p.m.
Donald,
Yes, this sounds like exactly the same recipe that I started with and have attempted to debug. I am even using the same Jazz.net sandbox as you are.
Therefore, if you can share your exact character-for-character API call that you are using to try to recreate my odd "gcUri missing" response then I can compare the two HTTP requests byte by byte to spot where I have messed up.
Note, it may be the case that my HTTP request is entirely correct but that I somehow failed to set up the DNG and GC configurations, components, and streams properly. I hope it is not news to hear that the GC/Component/Stream capability is mildly complex.
Lonnie VanZandt
commented Feb 14 '17, 12:29 p.m.
By the way, one of the differences between 6.0.2 and 6.0.3 is that the published QueryBase in 6.0.2 has hardcoded within it the Jazz-internal vvc.configuration URL Parameter. In 6.0.3, DNG no longer includes that parameter as part of the QueryBase.
I infer that this means that the support for oslc_config.context and Configuration-Context is more mature in 6.0.3! That's good news.
Lonnie VanZandt
commented Feb 14 '17, 1:37 p.m.
Donald,
If you can, in addition to sharing your complete HTTP request of the full URL with all necessary encoding, all necessary non-encoding, and all Headers with their values (excepting of course the Authentication header), can you:
Thank you for your peer advice here.
Lonnie VanZandt
commented Feb 14 '17, 3:02 p.m.
<oslc:queryBase rdf:resource="https://jazz.net/sandbox01-rm/views?oslc.query=true&projectURL=https%3A%2F%2Fjazz.net%2Fsandbox01-rm%2Fprocess%2Fproject-areas%2F_MxnNoeTIEeazUcKMez0U3g"/>
We can see here that the queryBase is merely the server, the RM servlet context, the views path, the oslc.query parameter, and the encoded projectURL. Here, in CLM 6.0.3, the vvc.configuration parameter from 6.0.2 is no longer included.
I use the URL up to and including the views path; I then add the oslc.query and the projectURL URL parameters as part of the actual request. Additional parameters and headers (as shown above) are then added to the request.
Therefore, the difference doesn't appear to be in this step of the process.
|
Darn picky server. I found the issue.
We switch between a private server and this public server. The private server uses 9443 for the HTTPS port while Jazz uses the default 443 port. Our code and scripts therefore encode the Host and the Port as the beginning of each URL. Everything works with our 6.0.2 private server because the port qualifier (9443) is necessary. The queries fail with the public 6.0.3 server because the port qualifier (443) is optional AND Jazz performs badly when it is included in the encoded URLs.
Remedy: do NOT include the ":443" portion of the URL in the query requests when the port is a default port like 443 for SSL or 80 for HTTP.
My recommendation is that this kind of URL sensitivity should be well handled by the Jazz server and not pushed out to the client to deal with.
Comments
Donald Nong
commented Feb 14 '17, 6:50 p.m.
I'm glad that you've finally nailed it. Just to confirm, is it all about the port number, rather than the difference between 6.0.2 and 6.0.3?
Lonnie VanZandt
commented Feb 14 '17, 8:43 p.m.
Well, I think ultimately the root cause is a horribly misleading error response! ;-)
Since I cannot switch the HTTPS port for Jazz.net and since it is too onerous to upgrade the private server to 6.0.3 (yet), I can't say that it is merely the handling of the port number.
However, I strongly suspect that to be the case.
|
Your answer
Dashboards and work items are no longer publicly available, so some links may be invalid. We now provide similar information through other means. Learn more here.
Comments
Attempting to figure out the right set of Headers, URL Parameters, and Encodings for the OSLC Query interface for DNG RM 6.0.3, I encounter the following server Response. Can anyone spot and describe what mistake I made in the provided information or what information I neglected?
GET /sandbox01-rm/views?oslc.query=true
This site won't accept a dump of Markdown for API Blueprint and so some messy comments follow.
I don't have access to RM's log and so can't go look at the error messages that may be there.
Note that the url property shown above, in use, is UTF-8 URL encoded. This website will not allow that the actual strings to be submitted.