Source code for f5.bigip.sys.failover

# coding=utf-8
#
# Copyright 2016 F5 Networks Inc.
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at
#
#    http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.
#
"""BIG-IP® system failover module

REST URI
    ``http://localhost/mgmt/tm/sys/failover``

GUI Path
    ``System --> Failover``

REST Kind
    ``tm:sys:failover:*``
"""

from f5.bigip.mixins import UnnamedResourceMixin
from f5.bigip.resource import Resource


[docs]class Failover(UnnamedResourceMixin, Resource): '''BIG-IP® Failover stats and state change. The failover object only supports load, update, and refresh because it is an unnamed resource. To force the unit to standby call the ``update()`` method as follows: .. code-block:: python f.update(command='run', standby=None, trafficGroup='mytrafficgroup') .. note:: This is an unnamed resource so it has not ~Partition~Name pattern at the end of its URI. ''' def __init__(self, sys): super(Failover, self).__init__(sys) endpoint = self.__class__.__name__.lower() self._meta_data['required_load_parameters'] = set() self._meta_data['required_json_kind'] =\ 'tm:sys:failover:failoverstats' self._meta_data['uri'] =\ self._meta_data['container']._meta_data['uri'] + endpoint + '/'
[docs] def update(self, **kwargs): '''Update is not supported for Failover :raises: UnsupportedOperation ''' raise self.UnsupportedMethod( "%s does not support the update method" % self.__class__.__name__ )
[docs] def toggle_standby(self, **kwargs): '''Toggle the standby status of a traffic group. WARNING: This method which used POST obtains json keys from the device that are not available in the response to a GET against the same URI. Unique to refresh/GET: u"apiRawValues" u"selfLink" Unique to toggle_standby/POST: u"command" u"standby" u"traffic-group" ''' state = kwargs.pop('state') trafficgroup = kwargs.pop('trafficgroup') if kwargs: raise TypeError('Unexpected **kwargs: %r' % kwargs) payload = {u"command": u"run", u"standby": state, u"traffic-group": trafficgroup} standby_session = self._meta_data["bigip"]._meta_data["icr_session"] uri = self._meta_data['uri'] response = standby_session.post(uri, json=payload) self._local_update(response.json())