Start a Conversation

Unsolved

This post is more than 5 years old

3028

November 3rd, 2009 07:00

How to NOTIFY an dynamically modeled event?

Hi,

Please find below the Event Modeling code

refine interface Port
{
    event PortStatusDown "Port Down Status" = Status == DOWN;
    export PortStatusDown;
    problem PortDown "Port Down" => PortStatusDown;
    export PortDown;
    relationship TEST_PartOf,Service,TEST_ComposedOf;
    aggregate PortAffectingService "Service Affecting Problem as Port is down" = PortDown,PortStatusDown;
    export PortAffectingService;
}

interface Service:VLAN
"Create a Service Class inheriting from VLAN"
{
    relationship TEST_OfferedBy,ConnectionProvider,TEST_Offers "Offered By";
    relationshipset TEST_ComposedOf,Port,TEST_PartOf;
    propagate symptom PortDown = Port, TEST_ComposedOf;
    propagate symptom PortStatusDown = Port, TEST_ComposedOf;
    propagate aggregate ServiceAffected "Service is Affected" = Port, TEST_ComposedOf, PortAffectingService;
    export ServiceAffected;
    problem Affected "Service Affected" => PortDown,PortStatusDown;
    export Affected;

}

I am extending the VLAN class for creating the Service.

I am propagating the PortDown and the PortStatusDown symptoms from the Port into the Service.

Also I am propagating the Aggregate "PortAffectingService" from the Port into the Service as "ServiceAffected"

The issue is that when the Port status becomes DOWN, the PortDown, PortStatusDown and PortAffectingService events are generated from Port.

However, I am getting only the ServiceAffected aggregate from Service but not the "Affected" problem.

I tried subscribing to the events and I could find that for the Service the problem "Affected" is in the ACCEPT state and but not NOTIFY.

Please help me in getting this issue resolved.

With Warm Regards,

Gopal

With Warm Regards,

Gopal

November 9th, 2009 10:00

Hi Gopal,

not quite sure to understand what you really want to achieve, so I'll only answer to your question : in my opinion, you are only receiving PortDown (from Port) because it is the best explanation. The "signature" for both Port:PortDown and Service:Affected seems to be the same -Port:PortDownStatus (you can look at the signature using the getClosure call or using the generic console), so Port:PortDown "wins" as the best explanation. I didn't load the model, but this seems to be the reason.
No, if you want to add a "service" layer to your model, in my opinion, this is not the way to go.

HTH,

--Fred

== Monitor your Smarts environment using APG ReportPack for Smarts health ==
Frederic Meunier
Solutions Watch4Net Inc
APG & Smarts InCharge integration
http://www.watch4net.com

19 Posts

December 29th, 2009 06:00

Hi,

Thanks for the information.
I am not finding any issues in the licenses.
However I could find one important issue.

If I have a object having the propagated symptoms from the objects of other class via RelationshipSet, the propagated symptom is not triggered unless all the associated objects of the relationshipset has the corresponding event.

For instance, please find the code below

refine interface Port
{
    event PortStatusDown "Port Down Status" = Status == DOWN;
    export PortStatusDown;
    problem PortDown "Port Down" => PortStatusDown;
    export PortDown;
    relationship TEST_PartOf,Service,TEST_ComposedOf;
    aggregate PortAffectingService "Service Affecting Problem as Port is down" = PortDown,PortStatusDown;
    export PortAffectingService;
}

interface Service:VLAN
"Create a Service Class inheriting from VLAN"
{
    relationship TEST_OfferedBy,ConnectionProvider,TEST_Offers
"Offered By";
    relationshipset TEST_ComposedOf,Port,TEST_PartOf;
    propagate symptom PortDown = Port, TEST_ComposedOf;
    propagate symptom PortStatusDown = Port, TEST_ComposedOf;
    propagate aggregate ServiceAffected "Service is Affected" = Port, TEST_ComposedOf, PortAffectingService;
    export ServiceAffected;
    problem Affected "Service Affected" => PortDown,PortStatusDown;
    export Affected;
}

In the above code snippet, Service object is propagating the symptoms PortDown and PortStatusDown from Port objects via TEST_ComposedOf relationshipset.
For instance if the Service object say S1234 is having the Port objects say P1, P2 and P3 in the TEST_ComposedOf relationshipset, the PortDown event will be triggered for the Service object S1234 only when PortDown occurs for all the associated Port objects (P1, P2 and P3).
If we have the PortDown in either one or two Port Objects, the PortDown symptom will not be triggered for the Service Object.

Is there any reason for the same?
Also if there is any way that we can change the AND logic to OR, please let me know.

Thanks in advance.

With Warm Regards,
Gopal

December 29th, 2009 11:00

Hi Gopal,

a "OR" is an aggregate (which can be propagated also) in MODEL. But, again, this may not be the right solution depending of your needs / constraints. As I mention, IMHO, in order to raise a "service" event, the default event mechanism (correlation) is not the solution. You should look at a solution like iFountain.com

--Fred

== Monitor your Smarts environment using APG ReportPack for Smarts health ==
Frederic Meunier
Solutions Watch4Net Inc
APG & Smarts InCharge integration
http://www.watch4net.com

19 Posts

December 30th, 2009 05:00

Hi Fred,

Thanks for the inputs.

However I am not finding a way to use the OR aggregate operator for the propagated symptom.

I tried providing the OR Operator, but no use.

With Warm Regards,

Gopal

January 4th, 2010 10:00

Gopal,

see MODEL Reference guide p116 : when I mentioned "aggregate" I did refer to the "aggregate" feature in MODEL. Again, this may not be the best solution, depending of you complete needs / constraints. But the behavior of the aggregate is to raise the "aggregated event" as soon as one associated event is active.

--Fred

== Monitor your Smarts environment using APG ReportPack for Smarts health ==
Frederic Meunier
Solutions Watch4Net Inc
APG & Smarts InCharge integration
http://www.watch4net.com

19 Posts

January 4th, 2010 23:00

Hi Fred,

Thanks for the inputs.

However please note that the problem is quiet complex.

I have an event on to be triggered based on the symptom and this symptom is propagated over a relationshipset.

But the issue is that the symptom will be propagated in the consuming class only when all the objects of the propagating class is having the symptom.

However I want this symptom in the consuming class to be triggered even if one of the objects in the propagating class is having it.

With Warm Regards,

Gopal

No Events found!

Top