Source code for f5.bigip

"""Classes and functions for configuring BIG-IP"""
# Copyright 2014 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.
#

import logging

from f5.bigip.cm import Cm
from f5.bigip.ltm import Ltm
from f5.bigip.net import Net
from f5.bigip.resource import OrganizingCollection
from f5.bigip.sys import Sys
from icontrol.session import iControlRESTSession

LOG = logging.getLogger(__name__)
allowed_lazy_attributes = [Cm, Ltm, Net, Sys]


[docs]class BigIP(OrganizingCollection): """An interface to a single BIG-IP""" def __init__(self, hostname, username, password, **kwargs): timeout = kwargs.pop('timeout', 30) loglevel = kwargs.pop('loglevel', logging.WARNING) allowed_lazy_attrs = kwargs.pop('allowed_lazy_attributes', allowed_lazy_attributes) if kwargs: raise TypeError('Unexpected **kwargs: %r' % kwargs) # _meta_data variable values iCRS = iControlRESTSession(username, password, timeout=timeout, loglevel=loglevel) # define _meta_data self._meta_data = {'allowed_lazy_attributes': allowed_lazy_attrs, 'hostname': hostname, 'uri': 'https://%s/mgmt/tm/' % hostname, 'icr_session': iCRS, 'device_name': None, 'local_ip': None, 'bigip': self}