Hi all,

   Thanks for reviewing the patch, and giving comments.
   But there is a comment from Robert that this adds dependency of a mature 
project to an incubation project ☺ Would like to know whether it is completely 
not possible. In that case, we have to find out other ways to achieve this.

Thanks,
Faseela

From: Tom Pantelis [mailto:tompante...@gmail.com]
Sent: Thursday, October 12, 2017 4:28 PM
To: Faseela K <faseel...@ericsson.com>
Cc: Anil Vishnoi <vishnoia...@gmail.com>; Muthukumaran K 
<muthukumara...@ericsson.com>; infrautils-...@lists.opendaylight.org; 
controller-dev@lists.opendaylight.org; R Srinivasan E 
<r.e.sriniva...@ericsson.com>; Dayavanti Gopal Kamath 
<dayavanti.gopal.kam...@ericsson.com>
Subject: Re: [controller-dev] Expose Datastore health to applications via 
infrautils.diagstatus



On Thu, Oct 12, 2017 at 6:36 AM, Faseela K 
<faseel...@ericsson.com<mailto:faseel...@ericsson.com>> wrote:


So here is how diagstatus module works – any application should register as a 
“service” with the framework, report an initial status(using the APIs provided 
by diagstatus).
There is another OsgiService “ServiceStatusProvider” exposed, and if 
applications implement the same, that will be called everytime an external 
request is made to get the current service status.
In looking at the API, it appears an app would register with the 
DiagStatusService and invoke report each time its status changes. An app can 
also register a ServiceStatusProvider to report its status when queried. It 
seems this is an alternative to interacting with the DiagStatusService in 
looking at the DiagStatusServiceImpl which always calls updateServiceStatusMap 
to query the ServiceStatusProviders from the get* methods. Given that, why 
would an app need to explicitly register and push its status to the 
DiagStatusService? Why not just advertise a ServiceStatusProvider? This seems 
simpler. In that case, DiagStatusServiceImpl doesn't need to maintain the 
statusMap - it would just query the ServiceStatusProvider(s) on demand. Or am I 
missing something?

For services like “DATASTORE” only the pull model is required, just register 
the service and implement ServiceStatusProvider.
There are some usecases in genius, where a push model was preferred, and hence 
we have kept both the options open.

OK.  By "just register the service" I assume you mean just advertise a 
ServiceStatusProvider OSGi service. It is not necessary to explicitly register 
with the DiagStatusService as that is implicit by advertising a 
ServiceStatusProvider.

The code in DiagStatusServiceImpl does not enforce explicit registration - one 
can just call report w/o a prior register call - not sure if that was the 
original intent.  Similarly a ServiceStatusProvider's status is reported even 
if it didn't explicitly call register.

Right Tom, the original intent was to allow only services who do explicit 
registration. But it is not enforced yet, wanted to get inputs on how the apps 
would be interested to go about this. Michael recently modified the 
implementation to allow deregistration only for those who actually registered. 
We were thinking on enforcing the same everywhere, but just thought of sharing 
the idea to apps before doing the same.

It seems the only reason for explicit registration would be to remove it from 
being reported on unregistration. But this could also be effected by reporting 
that as a STOPPED status, which might be useful to report. In any event, 
explicit reg/unreg via the DiagStatusService  API would only be needed/enforced 
when pushing status.  Advertising a ServiceStatusProvider OSGi service is an 
implicit registration and removal of the OSGi service is an implicit 
unregistration.


Thanks,
Faseela




_______________________________________________
controller-dev mailing list
controller-dev@lists.opendaylight.org
https://lists.opendaylight.org/mailman/listinfo/controller-dev

Reply via email to