The F5 BigIP iControl API is an open SOAP/XML for communicating with supported F5 BigIP products.

The primary aim of this package is to provide a simplified interface to an already simple and intutive API and to allow the user to do more with less code. By reducing the API invocations to methods returning simple types, it is hoped that this module will provide a simple alternative for common tasks.

The secondary aim for this package is to provide a simple interface for accessing statistical data from the iControl API for monitoring, recording, archival and display in other systems. This objective has largely been obsoleted in v11 with the introduction of new statistical monitoring and display features in the web UI.

This package generally provides two methods for each each task; a raw method typically returning the response as received from iControl, and a "stringified" method returning a parsed response.

In general, the stringified methods will typically fufill most requirements and should usually be easier to use.

Return a SystemInformation struct containing the identifying attributes of the operating system. The struct information is described below;

Member Type Description
---------- ---------- ----------
system_name String The name of the operating system implementation.
host_name String The host name of the system.
os_release String The release level of the operating system.
os_machine String The hardware platform CPU type.
os_version String The version string for the release of the operating system.
platform String The platform of the device.
product_category String The product category of the device.
chassis_serial String The chassis serial number.
switch_board_serial String The serial number of the switch board.
switch_board_part_revision String The part revision number of the switch board.
host_board_serial String The serial number of the host motherboard.
host_board_part_revision String The part revision number of the host board.
annunciator_board_serial String The serial number of the annuciator board.
annunciator_board_part_revision String The part revision number of the annunciator board.

$ic->save_configuration('backup.ucs');
# is equivalent to
$ic->save_configuration('backup');
# Not specifying a filename will use today's date in the
# format YYYYMMDD as the filename.
$ic->save_configuration();
# is equivalent to
$ic->save_configuration('today');

Saves the current configurations on the target device.

This method takes a single optional parameter; the filename to which the configuration should be saved. The file extension .ucs will be suffixed to the filename if missing from the supplied filename.

Specifying no optional filename parameter or using the filename today will use the current date as the filename of the saved configuration file in the format YYYYMMDD.

Saves only the high-level configuration (virtual servers, pools, members, monitors...). The filename specified when used with this mode will be ignored, since configuration will be saved to /config/bigip.conf by default.

Returns a list of the configuration archives present on the system. the list is returned as a hash with the name of the configuration archive as the key, and the creation date of the configuration archive as the value.

The creation date uses the native date format of:

Day Mon D HH:MM:SS YYYY

Where Day is the three-letter common abbreviation of the day name, Mon is the three letter common abbreviation of the month name and D has the value range 1-31 with no leading zeros.

Returns all statistics for the specified interface as a InterfaceStatistics object. Unless you specifically require access to the raw object, consider using get_interface_statistics_stringified for a pre-parsed hash in an easy-to-digest format.

Where the keys of the stats hash are the names of the statistic types defined in a InterfaceStatistics object. Refer to the official API documentation for the exact structure of the InterfaceStatistics object.

Please Note: This method has been deprecated in future releases. Please use get_ltm_vs_all_statistics.

Returns the traffic statistics for all configured LTM virtual servers. The statistics are returned as VirtualServerStatistics struct hence this method is useful where access to raw statistical data is required.

For parsed statistic data, see get_ltm_vs_statistics_stringified.

For specific information regarding data and units of measurement for statistics methods, please see the Notes section.

Returns the traffic statistics for all configured LTM virtual servers. The statistics are returned as VirtualServerStatistics struct hence this method is useful where access to raw statistical data is required.

For parsed statistic data, see get_ltm_vs_statistics_stringified.

For specific information regarding data and units of measurement for statistics methods, please see the Notes section.

Returns all statistics for the specified virtual server as a VirtualServerStatistics object. Consider using get_vs_statistics_stringified for accessing virtual server statistics in a pre-parsed hash structure.

For specific information regarding data and units of measurement for statistics methods, please see the Notes section.

Returns all pool member statistics for the specified pool as an array of MemberStatistics objects. Unless you feel like playing with Data::Dumper on a rainy Sunday afternoon, consider using get_pool_member_statistics_stringified method.

Returns the traffic statistics for all configured GTM virtual servers. The statistics are returned as VirtualServerStatistics struct hence this method is useful where access to raw statistical data is required.

For parsed statistic data, see get_gtm_vs_statistics_stringified.

For specific information regarding data and units of measurement for statistics methods, please see the Notes section.

The minimum number of events needed to trigger a notification. If this value is 50, then this means that when 50 events are queued up they will be sent to the notification endpoint no matter what the max_timeslice is set to.

This maximum time to wait (in seconds) before event notifications are sent to the notification endpoint. If this value is 30, then after 30 seconds a notification will be sent with the events in the subscription queue.

Within iControl, statistical values are a 64-bit unsigned integer represented as a Common::ULong64 object. The ULong64 object is a stuct of two 32-bit values. This representation is used as there is no native support for the encoding of 64-bit numbers in SOAP.

Where high is the unsigned 32-bit integer value of the high-order portion of the measured value and low is the unsigned 32-bit integer value of the low-order portion of the measured value.

In non-stringified statistic methods, these return values are ULong64 objects as returned by the iControl API. In stringified statistic method calls, the values are processed on the client side into a local 64-bit representation of the value using the following form.

$value = ($high<<32)|$low;

Stringified method calls are guaranteed to return a correct localised 64-bit representation of the value.

It is the callers responsibility to convert the ULong struct for all other non-stringified statistic method calls.