[Moims-sc] SM&C WG Telecon
Serge Lacourte
serge.lacourte at scalagent.com
Thu Apr 11 08:05:59 UTC 2024
Hi all,
here is a short description of the comments on the M&C BB that remain to
be discussed in WG, together with my analysis of the issues and
proposals of answers. We will discuss them on our next meeting (which
changed from Tuesday April 16 to Thursday April 18?), but don't hesitate
to comment them my mail before.
*Nullable domain in some operations*
Cesar proposes to accept a null domain in Parameter. It is notably
useful in a deployment where a provider handles a single domain.
I suggest to accept this proposal with the following terms:
* the consumer may provide a null domain parameter, assuming that the
provider may infer the proper domain for each of the provided keys.
If the provider finds an ambiguity for any of the keys that it
cannot resolve, then an Ambiguous error shall be returned.
Cesar lists a large set of operations concerned by this optimisation. I
believe that all the operations that define a (domain, keys) set of
parameters are concerned.
*Wildcards*
Cesar expects some operations to accept a wildcard parameter. This is an
issue that has been raised at The Hague, and it was decided then that no
wildcards would be permitted. May be the issue was not properly
understood at the time, and it could be reworked. However I would limit
the possible rework to only a subset of the operations, as some others
would require a big change of API.
The possible operations are:
* Parameter enableReporting & disableReporting
* Alert enableGeneration & disableGeneration
* Aggregation enableReporting & disableReporting
The wildcard could be requested with a null keys parameter of the
operations. I support this option.
The operations that would require a change in API are:
* Parameter getReportingConfiguration
* Alert getAlertConfiguration
* Aggregation getReportingConfiguration
I would leave those operations unchanged. Peter commented similarly on
this specific point.
*MO Object version in subscription keys*
Cesar questions the usefulness of the alertVersion subscription key in
the MonitorAlert operation. He assumes that the service will always
provide updates to the latest version, and there would be no sense for a
consumer to subscribe to an older version.
First let me explain that declaring a subscription key serves 2
purposes. Of course it enables the consumer to subscribe to specific
values of that key. But it also enables the provider to pass the value
of that key in all updates. As a general pattern in the operations of
the M&C services, I have limited as much as possible the duplication of
data in the body of the updates and in the subscription keys. For
example in the MonitorAlert operation, the body only holds the timestamp
and arguments fields of the AlertEvent structure, it does not include
the alertRef field. This field can be known from:
* the domain from the UpdateHeader
* the key from the alertKey subscription key
* the version from the alertVersion subscription key
So in a purely logical reasoning I need the version subscription key to
be able to rebuild the AlertEvent. This is true regardless of any
intention to subscribe to that key.
That said, the actual expected usage of this version field is unclear.
Is it possible that 2 different versions of an AlertDefinition exist in
a single deployment, either sequentially or concurrently? Can we
consider that the consumer is always able to infer the proper version
when it gets an update? Depending on the answers, we could actually
simplify the API and remove the version subscription key. And even if we
remove it from the API, nothing prevents a specific implementation to
add it as an additional custom key.
Two other services have a similar operation, and I believe the issue
should be adressed also for those operations. As the context differ, the
answer could be different. Both operations currently define a version
subscription key, for exactly the same reason I explained above:
* Parameter monitorValue does declare a parameterVersion subscription key
* Aggregation monitorValue does declare an aggregationVersion
subscription key
I am undecided on this point, as it really depends on the actual usage
of the version field. If this use is yet unclear, I would agree with
removing the subscription key, especially since a specific
implementation can add it as a custom key anyway.
*Additional subscription keys*
I suggested in a comment to add validityState as an additional
subscription key to the Parameter monitorValue operation. Peter
commented that he does not support this, for simplicity of the first
version of the interface. Cesar supports it.
While processing another comment from Cesar, I found that there is
another similar question with another operation. We have defined a
category field in the type AggregationDefinition. I checked and realized
that this field is never referenced in any operation of the Aggregation
service. It could be used as a subscription key in the Aggregation
monitorValue operation, just as the category field of the
ActionDefinition type is used as a subscription key in the Action
monitorActionExec operation.
We should then decide for those 3 subscription keys:
* Action category
* Parameter validityState
* Aggregation category
I am undecided on this point, as again it depends on the actual usage of
those keys as filtering options. If this use is yet unclear, I would
suggest again to remove all subscription keys, and leave specific
implementations with the ability to add them as custom keys to
demonstrate their actual usefulness in actual deployments.
*Name of the Action progress event types*
The Action MonitorActionExec operation requires a number of types for
the reported events. Cesar proposes to simplify those type names.
* ActionProgressBaseEvent → Event
* ActionProgressStartEvent → StartEvent
* ActionProgressExecutionEvent → ExecutionEvent
* ActionProgressCompletionEvent → CompletionEvent
I agree with Cesar's statement that the names are complicated and I
would support a simplification. However the types are now defined at
area level, and I am a bit unsatisfied with names that are too generic,
without any reference to the Action service name. I would prefer
ActionProgressEvent, ActionStartEvent, ActionExecutionEvent, and
ActionCompletionEvent. I could also accept ProgressEvent, StartEvent,
ExecutionEvent, and CompletionEvent, but not Event which is too generic.
*List operation in AggregationService*
Cesar notes that providing addAggregation and removeAggregation means
that there is a dynamic behavior of the Aggregation service. The service
should then also provide a List operation, so that the consumer can know
what is the current state of the service regarding the available
Aggregations.
The answer is not straightforward. First let me detail the history on
this point:
* v1: we grouped all the add/remove/list operations of all the M&C
services into a new ConfigurationManagement service
* v2: we decided to discard this new service with the main goal of
simplifying the specification
* v3: we reintroduced the Aggregation add and remove operations only,
as those are functions of PUS that are actually used
o note that PUS defines no related list operation
With this in mind, I can see 3 solutions to choose from:
1. stay with no list operation, assuming that only the consumer that
called the addAggregation operation shall be able to use it
2. stay with no list operation, assuming that any consumer willing to
use the aggregation dynamically created by another consumer shall be
able to retrieve its definition by an out of band mean
3. add the list operation
I support option 1, which is a first step of interoperability. Moreover
it leaves option 2 open, even if sharing dynamic information out of band
is not clear yet.
Best regards,
Serge
--
Serge Lacourte
Directeur general
ScalAgent Distributed Technologies SA
tel. +33 4 76 29 79 81
mobile. +33 6 86 47 41 06
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://mailman.ccsds.org/pipermail/moims-sc/attachments/20240411/724c0398/attachment.htm>
More information about the MOIMS-SC
mailing list