Source code for f5.bigip.tm.sys.ucs

# 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 config module

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

GUI Path
    N/A

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

from f5.bigip.mixins import CommandExecutionMixin
from f5.bigip.resource import UnnamedResource
from requests.exceptions import HTTPError


[docs]class Ucs(UnnamedResource, CommandExecutionMixin): """BIG-IP® system UCS resource .. note:: Given the fact that 11.6.0 UCS via rest is broken, this feature will be supported in 12.0.0 and above. Listing of installed UCS has been fixed in 12.1.0. This resource is a collection which does not allow listing of each ucs as a resource. 'Items' attribute of the loaded object is used to access the list of installed UCS files. Caveat: Loading UCS will result in ICRD restarting, therefore due to ID476518 502 Bad Gateway is generated, this is working as intended, at least until some architecture changes have been made. """ def __init__(self, sys): super(Ucs, self).__init__(sys) self._meta_data['required_load_parameters'] = set() self._meta_data['allowed_commands'].extend(['load', 'save']) self._meta_data['required_json_kind'] = '' self._meta_data['minimum_version'] = '12.0.0'
[docs] def exec_cmd(self, command, **kwargs): """Due to ID476518 the load command need special treatment.""" self._is_allowed_command(command) self._check_command_parameters(**kwargs) if command == 'load': kwargs['command'] = command self._check_exclusive_parameters(**kwargs) requests_params = self._handle_requests_params(kwargs) session = self._meta_data['bigip']._meta_data['icr_session'] try: session.post( self._meta_data['uri'], json=kwargs, **requests_params) except HTTPError as err: if err.response.status_code != 502: raise return else: return self._exec_cmd(command, **kwargs)
[docs] def load(self, **kwargs): """Method to list the UCS on the system Since this is only fixed in 12.1.0 and up we implemented version check here """ # Check if we are using 12.1.0 version or above when using this method self._is_version_supported_method('12.1.0') newinst = self._stamp_out_core() newinst._refresh(**kwargs) return newinst