diff --git a/specs/config/README.md b/specs/config/README.md index 28d18443..873d31ec 100644 --- a/specs/config/README.md +++ b/specs/config/README.md @@ -3,6 +3,8 @@ This directory contains the source files for the OSLC Configuration Management Specification, which is one of the work products of the OASIS OSLC Open Project. +Version 1.1 extends OASIS Standard version 1.0 with change set delivery and history. + Earlier draft revisions of this specification were work products of the OASIS OSLC Core Technical Committee, and may be found in the [OASIS OSLC Core TC SVN repo](https://tools.oasis-open.org/version-control/browse/wsvn/oslc-core/trunk/specs/config/). diff --git a/specs/config/Resources/OSLC Configuration Management Delivery and Delivery History.pdf b/specs/config/Resources/OSLC Configuration Management Delivery and Delivery History.pdf new file mode 100644 index 00000000..784e3b61 Binary files /dev/null and b/specs/config/Resources/OSLC Configuration Management Delivery and Delivery History.pdf differ diff --git a/specs/config/config-resources.html b/specs/config/config-resources.html index d82146c6..7372e0b7 100644 --- a/specs/config/config-resources.html +++ b/specs/config/config-resources.html @@ -6,25 +6,25 @@ name="description" content="This part of the OSLC Configuration Management Specification defines the representation and behavior of components and configurations of resources in those components (typically referred to as configurations of components, or just configurations)." /> -
+ A change set delivery represents the delivery of a single change set to a single target stream. If multiple + change sets are to be delivered, each would be done as a separate delivery. +
++ Servers MUST support a GET of a delivery object URI. The response should include an Etag header. +
++ Servers SHOULD support a HEAD on a delivery object URI. The response should include an Etag header +
+
+ Delivery objects MAY be immutable, or a server might permit the title to be changed. If a server allows the
+ title to be changed, it SHOULD support a PUT
with If-Match
header. Servers MAY
+ silently ignore any data that cannot be changed, such as read only properties, or
+ oslc_config:sourceConfiguration
or oslc_config:targetStream
.
+
+ POST SHOULD NOT be supported. A new object can only be created through a creation factory. See the next section: + Delivering change sets through a delivery creation factory. +
+
+ DELETE
MAY be supported, but if a server does support it, the semantics of that deletion are
+ undefined. For example, does deleting a delivery remove the change set from the target stream?
+
+ There are several key aspects of change set delivery that OSLC Configuration Management should support: +
+
+ An OSLC server would declare an OSLC Creation Factory for rdf:type
+ oslc_config:ChangeSetDelivery
in some OSLC service that was discoverable from an OSLC Service
+ Provider Catalog. The declaration of that creation factory SHOULD reference a resource shape that is
+ compatible with oslc_config:ChangeSetDelivery
.
+
+ A client would perform a POST with an RDF body conformant with the resource shape. The server would respond + with one of: +
+201 Created
, with the response including a Location header of the new
+ oslc_config:ChangeSetDelivery
resource that was created. This might be the case for a server
+ where the operation is quick to execute.
+ 400 Bad request
, if the request was invalid. For example, missing source configuration or
+ target stream in the POSTed content.
+ 409 Conflict
, if the delivery could not be made because of a conflict between the change set
+ and the target stream.
+ 303 See other
, including a Location header of an existing delivery if the change set was
+ already delivered to the target stream.
+ 202 Accepted
, with the response including a Location header of an
+ oslc_config:Activity
resource indicating the progress or result of that activity. Clients
+ SHOULD poll the Activity resource periodically until the state indicates it has finished.
+
+ If the delivery of a change set would result in the loss or overwriting of a later change to the same object,
+ the delivery MUST fail and report a conflict. The corresponding oslc:Error
should provide
+ sufficient information for a client to understand the nature of the conflict. For each conflict, the
+ corresponding oslc:Error
should provide a statement using
+ oslc_config:ChangeSetDeliveryConflict
to an inline resource of implied type
+ oslc_config:ChangeSetDeliveryConflict
with the following resource shape:
+
+ OSLC Configuration Management does not specify any means to resolve such conflicts, or to preview a delivery + to identify potential conflicts without committing the delivery. Conflicts are expected to be resolved using + the tool’s UI and/or non-OSLC defined APIs. +
++ There are several common uses cases for finding information about change set deliveries: +
+
+ OSLC Query Capability is used to access change set delivery history. Servers SHOULD provide a query capability
+ for rdf:type oslc_config:ChangeSetDelivery
in some OSLC service that is discoverable from an OSLC
+ Service Provider Catalog. The declaration of that query capability SHOULD reference a resource shape describes
+ the LDP query results container (as per the OSLC Query specification), which in turn provides a value resource
+ shape for its members that is compatible with oslc_config:ChangeSetDelivery
.
+
Some example queries include:
+Description | +Unencoded oslc.where expression |
+
---|---|
Find the delivery for a specified change set and target stream | +oslc_config:sourceConfiguration={changeSetUri} and oslc_config:targetStream={streamUri} | +
Find the deliveries for a specified change set to any stream | +oslc_config:sourceConfiguration={changeSetUri} | +
Find the deliveries for all change sets to a specified target stream | +oslc_config:targetStream={streamUri} | +
Find the deliveries for all change sets to a specified target stream since 1st January 2023 | +oslc_config:targetStream={streamUri} and dcterms:created >= "2023-01- 01'T'00:00:00"^^xsd:dateTime | +
+ The persistence of delivery information is a server implementation choice. In servers where there is a + corresponding persisted object, a server might map such objects to delivery objects. In servers where there is + no first-class object representing a delivery, the delivery might be constructed from querying internal data. +
+@@ -726,11 +907,11 @@
Implementations SHOULD provide documentation on their version resolution behavior.
Some systems use change sets to group related changes, or changes to multiple resources that must be kept
- together. Change sets may be represented using a configuration of type oslc_config:ChangeSet
- a
+ together. Change sets MAY be represented using a configuration of type oslc_config:ChangeSet
- a
special type of stream. Each oslc_config:ChangeSet
resource is related to exactly one base
configuration (either a stream or a baseline), using the oslc_config:overrides
property. A
oslc_config:ChangeSet
has either a complete set of replacements for the versions selected by that
@@ -739,10 +920,10 @@
- Systems that allow multiple change sets to be applied to a single base configuration should represent each such
+ Systems that allow multiple change sets to be applied to a single base configuration SHOULD represent each such
internal change set as an oslc_config:ChangeSet
resource using the same value of
oslc_config:overrides
; the property prov:wasDerivedFrom
should be used to provide a
- complete or partial ordering of such change sets. Servers may also synthesize a combined
+ complete or partial ordering of such change sets. Servers MAY also synthesize a combined
oslc_config:ChangeSet
resource representing the overall effect of multiple internal change sets.
@@ -757,11 +938,12 @@
Since the shape for a change set allows only a single value for oslc_config:overrides
, systems that
allow a single change set to be applied to multiple base configurations need to represent that internal change
- set by multiple oslc_config:ChangeSet
resources. These copies may be associated with each other
+ set by multiple oslc_config:ChangeSet
resources. These copies MAY be associated with each other
using properties such as http://purl.org/datanode/ns#isCopyOf
, dcterms:relation
, or
similar.
diff --git a/specs/config/config-shapes.ttl b/specs/config/config-shapes.ttl
index 60580549..e1e5e010 100644
--- a/specs/config/config-shapes.ttl
+++ b/specs/config/config-shapes.ttl
@@ -25,7 +25,7 @@
@prefix rdfs: