[Oslc-Automation] Availability Spec review - my feedback

Martin P Pain martinpain at uk.ibm.com
Thu May 8 09:41:40 EDT 2014


Here is my feedback on the original OSLC Availablility draft spec pdf (
http://open-services.net/wiki/automation/Availability-Specification/)

Key to my feedback notations:
* - A minor point, indicated by a leading hyphen/minus sign. (In grey in 
the original HTML email)
* . A medium-level point, indicated by a leading period/dot.
* + An important point, indicated by a leading plus sign.
* . "In quotes, -deleted- words are in red strikethrough with a hyphen 
either side , _inserted_ words are in green underline, with an underscore 
either side (in the original HTML email - which I believe you can find in 
a link in the archives)."


Here is my feedback. I suggest discussing this via e-mail, as getting as 
many point as possible sorted via e-mail should be more efficient than on 
the call. Anything contentious or that requires in-depth discussion can be 
discussed at the meeting next week. There are lots here, including many 
minor ones. Hopefully they're useful. Feel free to question anything 
(anyone). There are a couple of questions aimed at John Arwe for 
clarification - these are makred with "John" in bold.

Editorial comments:
* - The wiki page doesn't need to be "workgroup only".

Introduction:
* - Would this be better to extend Automation, to make best re-use of 
Automation's plans?
* - To be able to describe a system that is (highly) available

Terminology:
* - "Availability condition" - to me, "condition" suggests "requirement" 
(e.g. boolean expression, if-statement). However, on Googling it, the 
sense of "state, situation" does come out as the primary definition, so I 
won't make a fuss. "State"/"Status" would also have its problems (sense of 
state-machine versus wider condition). I've just mentioned it to make sure 
you've thought about the possible ambiguity when looking at the term 
"availability condition" when not next to its definition as it is in this 
section.
* - "Recommended as a specialization of an Availability Group." (also for 
"...of an Availability Resource")

Compliance:
* . Footnote 4: "3Support for all HTTP methods for all -automation-
_availability_ resources is not required "

Namespaces:
* - I expect John would suggest "oslc-availability" for the standard 
prefix, but oslc_avail is more consistent with Automation 2. I don't mind 
either way.
* . I would suggest something longer in the namespace URI though, perhaps: 
http://open-services.net/ns/availability# I know other specs used very 
short forms, but that caused problems with "Configuration management" 
versus "change management", and I believe the more recent convention is to 
use a longer string in the URI. Consistency here isn't important, as the 
URI is repeated less than the prefix.

Availability definitions:
* - "It is recommended that any additional properties exist in their own 
unique namespace and not use the namespaces defined in this specification.
" - I expect this was copied from Automation, but this could be a stronger 
requirement. It would be bad practice to define properties in the 
namespaces defined in this specification without the agreement of the 
working group or technical committee responsible for maintaining the 
namespace. (A few paragraphs down we make it a SHOULD - I guess that's the 
same as "recommended" in prose).
* + The arrow and name of the relationship between Group and Availability 
Resource (AR) appear to disagree with each other. Either the group is 
pointing to a resource as a "member", or the resource should be pointing 
to the group(s) it is a "memberOf". In the resource tables it suggests 
that the link is pointing from the AR to the Group.
* . When I first looked at this diagram I wasn't convinced about 
Availability Condition (AC) being a separate resource. Having read later 
it looks like there can be multiple ACs for an AR, each as a snapshot at a 
given timestamp (dcterms:created). Is that the intention? If not, what was 
the reasoning behind them being different resources?
* . I'm not sure dcterms:contributor is the best relation to use for the 
link to resources that the AR is affected by. dcterms deifne its raneg as 
Agent, which is "A resource that acts or has the power to act. ". Is it 
your intention to link to resources that can act on on the AR? As opposed 
to ones that the AR acts on? (Or can affect the AR's state not by acting 
on it, but merely by changing its own state). The definition in the 
resource table further down suggests the usage is correct - the target of 
the link is actively acting on the AR. This isn't clear in the diagram 
whether the contributor is affecting the AR actively, or merely its state 
is reflected in the AR.

Resource: AR
* - dcterms:description "Descriptive text (reference: Dublin Core) about 
_the_ resource"
* + Availability-specific properties: Please create a vocab document (or a 
wiki page to use as a draft) to define each of these terms outside the 
conext of these particular resource tables. This helps create vocabularies 
with more value and reusability, and also helps discover any ways in which 
the terms can be improved even inside the scope of the resource tables.
* + oslc_avail:actualCondition: You have read-only set to true. I expect 
this is consistent with some other specs, but it's worth considering that 
in some scenarios (although admittedly not within our defined scope) might 
have the resources stored in a separate repository from the actor who 
determines their contents. In that case, they need to be updatable.
John: What does "read-only" technically mean here? The most important 
question here for this version is: would changing the read-only flag for a 
property in a subsequent version cause any problems? And is a provider 
non-compliant if they allow it to be written? If not, I'm happy to leave 
it, as it can always be changed if anyone raises a scenario for those 
cases.
* + oslc_avail:memberOf. Is there a particular reason why the link is 
pointing in this direction, and not from the group to the members? It 
would seem to me that you might more often want to find all members for a 
group (part of the scenario "Obtain redundancy information for workloads" 
- even if you do have to start at an AR). If we require looking up of 
reverse links, we ought to specify exactly how this is expected to be 
achieved. I know it's possible with query capabilities, but we ought to 
clearly spell out how, to make implementors lives easier. (Whichever 
direction the link goes in we might have to do reverse link lookups, but 
if the link pointed in the other direction it would only have to be one, 
rather than all but one of the group's members. But then again you have to 
do the lookup to find out if it's in a group. Perhaps that was your 
reasoning, if so you've probably got the link in the correct direction.)
* + oslc_avail:memberOf: Say in the description "It is expect that the 
target of this link will be of type Availability Group (or its sub-type 
Redundancy Group), but this is not necessarily the case".

Resource: AC
* + compoundState. Mention and link to the predefined values in the 
description. Can providers provide their own values? If they can, there 
may be a better alternative: The Change Management specs found that for 
their states it was useful to add in "state predicates" [1]. These are 
single-value properties that indicate some semantics of the resource's 
current state.e .g. oslc_cm:closed=[true|false] [2]. So in this case we 
could define this as oslc_avail:consistentState=[true|false]. If it is 
true, you can read either and get the actual state knowing it is also the 
desired state. If it's false you can read whichever one you need knowing 
that actual & desired are not consistent. (Is this explicitly mentioned in 
a scenario? Whenever someone asks about the reasoning behind something, as 
I'm doing here, it would be useful to add a note to any applicable 
scenario(s)' wiki pages about that reasoning and how it supports that 
scenario. [Although I admit I haven't done this in my work on the Actions 
spec.]) See comment below in "Predefined properties" section about 
warning/problem distinction. (If we still want that distinction, but also 
wanted to use state predicates, we could have a second one for the 
"problem" state... maybe).
* + desiredState & currentState. Mention and link to the predefined values 
in the description. Say whether provider-specific values are allowed.
* - If provider-specific state values are allowed (which might be a good 
idea to support extensibility) then we might want to consider state 
predicates for online, offline, stopping and starting. On the one hand 
this isn't required by the existing scenarios, but on the other hand it 
provides most flexibility going forwards.
* + mttf & mttr: What type of resource? Options probably include: using an 
integer, not resource, and specifying units in spec. Or using (hopefully 
re-using) some existing time-period resource that can specify its own 
units.

Resource: Availability Group
* + dcterms:created -remove "The point in time this condition has 
occurred."
* + dcterms:modified: Do we want to make it explicit that new members 
added to the group update this? (As they don't add any new triples to this 
group resource, so it may not by default.) What about changes to resources 
- I guess they don't update this timestamp - do we want to make that 
explicit?
* + AEC: Does the HRG AEC have an RDF vocab/representation? If so, can we 
link to it? If not, how is this represented?
* . currentlyActive: This predicate name doesn't indicate "count". I'd 
prefer something like "currentlyActiveCount" or "numberActive" or (to find 
a verb form) "hasActiveMembers" (note the trailing "s" - if it were 
linking to a currently active member, it would not have an "s", so this 
"S" could [very] subtly suggest that it is a count. But I don't like this 
one much, due to that being very subtle.)
* + John: Can range be used like this?
* + SLA: Mention and link to the predefined values in the description. Say 
whether provider-specific values are allowed.

Resource: Redundancy Group
* + Should this be an rdfs:subClassOf Availability Group. i.e. why is it 
"often" an AG, not always? (Admittedly, I think we can always add 
subClassOf in future, but removing it would be harder).
* . "maxActiveTarget", "minActiveTarget". Who is this a target for? Is 
this what the provider is trying to achieve, or could this be instructions 
to a consumer to start/stop members to meet this target? Could it be 
either, or do we want to specify one?
* . "redundancyCapability: Description: Starting with "Information 
about..." makes it sound, to me, like it's going to be a resource. Perhaps 
"An indication of level of redundancy provided by this group." might be 
more fitting for an integer value.
* + synchronizationType: Mention and link to the predefined values in the 
description. Say whether provider-specific values are allowed.

Resource: Redundancy Member
* + Again, same question about subClassOf.
* + redundancyRole: Mention and link to the predefined values in the 
description. Say whether provider-specific values are allowed.

Sub-domains:
* + No subdomains are explicitly defined.
* + If we only want vendor-specific sub-domains, should we specify an 
rdf:Class to use as the rdf:type value of the resource at the target of 
the sub-domains identifier URI, so generic consumers can identify which 
URIs identify Availability sub-domains? (i.e. This would be used in the 
vocab documents that define those sub-domain URIs).
* + In the example, a value is used for "System Automation for z/OS" 
sub-domain. (1) This value isn't defined in this spec (at least not that 
I've seen so far) so shouldn't use this spec's namespace. An example.com 
namespace would be appropriate for an example value. (2) If we want to use 
this value in IBM implementations (I presume we do) then it's still in the 
wrong namespace. It's a vendor-specific term, so I'd suggest it would be 
better in an ibm.com or jazz.net namespace (the latter is Rational-owned, 
but has an existing process for publishing public RDF vocab documents, so 
might be the path of least resistance). As far as the WG should be 
concerned: it's a vendor-specific term, discuss it inside the vendor. 
(Well, that's my opinion). We can always provide a list of links to known 
vendor-specific terms in an informative section of the spec.
* + "Depending on the sub-domain, an OSLC client can expect predefined 
values for the following attributes". Without defining any specific 
sub-domains, I'm not sure this communicates much information. Do you mean 
"Sub-domains may specify what sub-set of these predicates they use"? Or 
maybe "Sub-domains may specify which values they support for each of these 
properties"?

Creation Factories/Query Capabilities:
* - "at least one Creation Factor_y_-ies- entry" (perhaps use the 
qualified name for the type or predicate)
* - "at least one Query Capabilit_y_-ies- entry" (ditto)
* + "SHOULD support the oslc.properties syntax " SHOULD should be bold.

Delegated UIs:
* + RedundancyMember is missing from table
* . I'd suggest "SHOULD" for AR, AG, RG and RM selection dialogs, as I 
expect UI-based clients will really want to use these. Creation dialogs 
might not be appropriate for all providers, so MAY seems appropriate for 
them.

Predefined properties:
* + These are individuals (values), not properties.The sub-headings are 
ok, as they are the properties that the values are for, but the to-level 
"Predefined properties" heading seems wrong to me.
* + I know Automation uses a lower-case initial letter for its states, but 
I believe the current convention for these sorts of URIs ("individuals") 
is to use an initial capital. e.g. 
http://open-services.net/ns/availability#Offline.
* . These URIs will point to resources defined in the Availability vocab 
document. Should they have a particular rdf:Class for their rdf:type 
property, to identify what they are values of/for?
* . Some of these values might be appropriate for contribution to the 
Common IT Resource Vocabulary: 
http://open-services.net/wiki/reconciliation/Common-IT-Resource-Type-Vocabulary-Version-2.0/ 
(On the other hand, as all of the properties and values in this spec 
relate to resources, and specifically to their availability, perhaps we 
should keep them in a separate Availability namespace, but have that 
linked from the Common IT Resource Vocabulary, sort of as a 
sub-vocabulary.)
* . compountState: Does "warning" mean "currentState does not match 
desiredState, but may do at some time in the [near] future" and "problem" 
mean "they do not match, and the attempt to move to the desired state 
failed and cannot be [automatically] retried"? The description for 
"problem" suggests that, but what warning says - "the availablity resource 
is still usable" - seems to me to be orthogonal to whether or not it meets 
its desired state. It's usable if the currentState is "online", and not 
usable if it's any other state, right? I'd suggest letting compoundState 
just say whether or not the currentState matches the desiredState 
(yes/ok/match, or no/doesn't match. possibly with a "may match soon"/"in 
progress" option), and currentState say whether or not the resource is 
usable or not. Perhaps this was your intention, in which case I think the 
"warning" value needs a better description- and perhaps renaming to 
"InProgress" or "Changing".
* . Service Level Properties: Are these properties or values? If values 
how do these relate to the predicates of the same name?
* . redundancyRole: If there is only ever one master, would it be better 
for this to be a property on the redundancy Group pointing to the master?

HTTP method support:
* + Availability Component = Availablility Resource? Or = {AR, AG, RG, 
RM}?


[1] 
http://open-services.net/bin/view/Main/CmSpecificationV2?sortcol=table;up=#State_Predicates
[2] Approx 2 pages down from: 
http://open-services.net/bin/view/Main/CmSpecificationV2?sortcol=table;up=#Resource_ChangeRequest


Martin Pain
Software Developer - Green Hat
Rational Test Virtualization Server, Rational Test Control Panel
OASIS Open Services for Lifecycle Collaboration - Automation technical 
committee chair

E-mail: martinpain at uk.ibm.com
Find me on:  and within IBM on:  




IBM United Kingdom Limited
Registered in England and Wales with number 741598
Registered office: PO Box 41, North Harbour, Portsmouth, Hants. PO6 3AU
Unless stated otherwise above:
IBM United Kingdom Limited - Registered in England and Wales with number 
741598. 
Registered office: PO Box 41, North Harbour, Portsmouth, Hampshire PO6 3AU
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://open-services.net/pipermail/oslc-automation_open-services.net/attachments/20140508/65a23cb7/attachment-0003.html>
-------------- next part --------------
A non-text attachment was scrubbed...
Name: not available
Type: image/jpeg
Size: 518 bytes
Desc: not available
URL: <http://open-services.net/pipermail/oslc-automation_open-services.net/attachments/20140508/65a23cb7/attachment.jpe>
-------------- next part --------------
A non-text attachment was scrubbed...
Name: not available
Type: image/jpeg
Size: 1208 bytes
Desc: not available
URL: <http://open-services.net/pipermail/oslc-automation_open-services.net/attachments/20140508/65a23cb7/attachment-0001.jpe>
-------------- next part --------------
A non-text attachment was scrubbed...
Name: not available
Type: image/gif
Size: 360 bytes
Desc: not available
URL: <http://open-services.net/pipermail/oslc-automation_open-services.net/attachments/20140508/65a23cb7/attachment.gif>


More information about the Oslc-Automation mailing list