Forum Discussion
Lerna_Ekmekciog
Nimbostratus
Sep 06, 2005MONITOR_RULE_TYPE_NONE
Hi again,
I see that in the sdk there is a LocalLBMonitorRuleType called "MONITOR_RULE_TYPE_NONE".
Explanation in sdk for this is as follows:
"The object is explicitly set to disable monitoring, i.e. no explicit nor default monitor in use."
This makes sense when you want to temporarily disable the set of monitors on a pool instead of removing them all together and readding them.
In the GUI under pools->advanced configuration->Availability Requirement , I see that you can set monitor type to "ALL" or "AT LEAST " where you set to a number.
I could create monitors of type "undefined","and_list","m_of_n" and "single" through the GUI by playing with the availability requirement.
How can I create a mon association through the GUI so that it has type "MONITOR_RULE_TYPE_NONE", i.e. how can I disable monitors on a given pool?
Lerna
13 Replies
- Lerna,
I've just been able to recreate this with the iControl 9.0 bits. It is corrected with our latest build of the SDK so I'll look into seeing what has changed between then and now and see if I can get you a temporary solution until we release the 9.2 SDK.
I'll have something posted by tomorrow morning (PST time).
-Joe - It seems there were a couple of enum values added to the LocalLB::Monitor::TemplateType enum in the BIG-IP v9.0.3 release. This should have triggered a new SDK release but it somehow slipped the cracks.
This will be addressed in the upcoming release of the SDK, but in the meantime, you can get the most current WSDL files from the BIG-IP itself.
If you open your browser and type in the address to the iControl Portal on your BIG-IP device, you will be presented with a list of available WSDL files.
https://bigip_address/iControl/iControlPortal.cgi
For the LocalLB.Monitor file, this can be accessed by:
https://bigip_address/iControl/iControlPortal.cgi?WSDL=LocalLB.Monitor
If you overwrite the wsdl file in your SDK distribution and recompile your app you should be in business.
We will be much more diligent in the future about issuing SDK updates when the enum value changes.
Background: Pre 9.x we implemented all enums as integers. This made additions to the enum structures possible because client apps that have strong bindings to the interfaces would interpret the value as an integer and could deserialize all values regardless of their value.
In 9.0 we changed enums to be of type string so that you could represent them by their string value which is much more understandable (quick, which is easier to know: template type of "5" or "TTYPE_HTTP"?). This was a often asked for request so we applied it in that release. The reason why your client is breaking is that it doesn't have deserializer code built for the enum types of TTYPE_TCP_HALF_OPEN, TTYPE_SCRIPTED, and TTYPE_WAP). You'll need to recompile the updated wsdl into your app (or at least the updated LocalLBMonitorTemplateType generated class). The offending code is the following:public static LocalLBMonitorTemplateType fromValue(java.lang.String value) throws java.lang.IllegalArgumentException { LocalLBMonitorTemplateType enumeration = (LocalLBMonitorTemplateType) _table_.get(value); if (enumeration==null) throw new java.lang.IllegalArgumentException(); return enumeration; }
That "IllegalArgumentException" look familiar. The code can't find the updated string values in the lookup table and is tossing the exception.
Hopefully this explains things a bit. Sorry for the confusion and thanks for pointing this out to us. We will correct our process for this the future.
If you have any problem getting an updated WSDL, let me know which version of the product you are running and I'll post the appropriate one as an attachment.
-Joe - Lerna_Ekmekciog
Nimbostratus
Joe -
Thanks for the detailed explanation. I'll try your suggestion and post back if I run into problems.
Lerna
Recent Discussions
Related Content
DevCentral Quicklinks
* Getting Started on DevCentral
* Community Guidelines
* Community Terms of Use / EULA
* Community Ranking Explained
* Community Resources
* Contact the DevCentral Team
* Update MFA on account.f5.com
Discover DevCentral Connects
