The GlobalLB.Pool.set_limit() method is defined as follows
http://devcentral.f5.com/wiki/default.aspx/iControl/GlobalLB__Pool__set_limit.htmlenum GlobalLB.MetricLimitType {
METRIC_LIMIT_CPU_USAGE,
METRIC_LIMIT_MEMORY_AVAILABLE,
METRIC_LIMIT_BITS_PER_SECOND,
METRIC_LIMIT_PACKETS_PER_SECOND,
METRIC_LIMIT_CONNECTIONS,
METRIC_LIMIT_CONNECTIONS_PER_SECOND
};
struct GlobalLB.MetricLimit {
MetricLimitType type;
long value;
};
struct GlobalLB.Pool.PoolMetricLimit {
string pool_name;
MetricLimit [] metric_limits;
};
GlobalLB.Pool.set_limit(
in GlobalLB.Pool.PoolMetricLimit [] limits
);
From the debug output from the $limit variable it seems the value is appropriate and you are casting it to the correct array type in the call. You'll have to get a SOAP trace on the client side to see what's serialized out in the set_limit request. What were you doing with the $limit variable before you passed it back into the set_limit() method? Were you changing the metric value in the metric_limits array?
-Joe