-
Type: Improvement
-
Status: Closed
-
Priority: Major
-
Resolution: Fixed
-
Component/s: Configuration Management
-
Labels:None
-
Proposal:
The two recommended approaches in the OSLC Configuration Management spec to create a new stream of a component are:
a) perform a GET on an existing baseline of the component to get its streams LDPC.
b) perform a GET on the component to get its configurations LDPC.
A client can then POST content to the LDPC from (a) or (b).
However, if the client wants to know what properties it can include in the POSTed RDF, how can it discover the resource shape?
A similar issue relates to a GET on an LDPC. If it supports oslc.where, how does an OSLC client discover the query resource shape for that LDPC?
For (a), a client might use the resource instance shape of the baseline. However, that resource shape might show that some properties are read-only because they are immutable on baselines. So is this the right way?
For (b), there is no documented method.
There are a number of approaches we might consider:
1) Declare a creation factory for every component, and each factory can declare a resource shape. A significant problem with this approach is that there could be a very large number of components, and the OSLC SPC could become very large.
2) Have the RDF returned by a GET on the streams LDPC include a reference to the resource shape for new streams of that component. A significant problem with this approach is that a GET on the LDPC would, by default, return all the streams of that component and all their properties. So this seems like a heavyweight means to get the resource shape.
3) Include an additional statement in a component's RDF to the resource shape for configurations of that component, and include an additional statement in a baseline's RDF to the resource shape of streams created from it. For example, include an oslc_config:configurationResourceShape statement in a component's RDF to a resource shape for creating new streams or configurations of that component, and include an oslc_config:streamResourceShape to a resource shape for creating a new stream from that baseline. This is lightweight and keeps the discovery of the streams LDPC and its resource shape in the same place.
4) Drop support for POST on a component's configurations LDPC and a baseline's streams LDPC, and instead declare a configuration creation factory for each project area specific service provider. A client would need to include oslc_config:component to specify the component for the new stream.
There is a related issue about how to discover the resource shape when creating a baseline from a stream. However, there is potentially already a method for doing so - the user could use the resource instance shape of the stream.