Introduction
Support Programs. Regionally located support centers enable F5 to provide support in a number of languages through native-speaking support engineers. Download DirectX 11 Technology Update from Official Microsoft Download Center. New Surface Pro 6. Stand out from the ordinary. Direct3D 11 is out and ready for use by your game today to exploit the latest in video hardware features as well as current generation machines. This talk brings you up to speed with the API. Support Programs. Regionally located support centers enable F5 to provide support in a number of languages through native-speaking support engineers.
This project implements an SDK for the iControl® REST interface for BIG-IP®.Use this library to use python to automate a BIG-IP® via its REST API.
Documentation
Please see the project documentation on Read the Docs: http://f5-sdk.readthedocs.io.
Installation
Note
If you are using a pre-release version you must use the --pre
option for the pip
command.
Usage
Design Patterns
I intend the SDK to be easy to use and easy to hack. These overarching goalshave a strong influence on my thinking when I am reviewing contributions, thismeans it is in their own interest that I make them as explicit as possible!
The original interface specification was given to me by Shawn Wormke, who Ibelieve was influenced by the Jira and Django projects. At the time I wasreading Brett Slatkin's 'Effective Python', and I tried to follow its advicewhere possible.
List of Patterns For Contributing Developers
- Hack this list to make it more correct/complete
For list additions assign @zancas as the PR reviewer.
- The call operator
()
means: 'Try to communicate with the device.' This is a strong contract we offer the consumer of the SDK. If an SDKfunction is invoked with the call operator
()
the program is initiatinga communication with the device. That communication may fail beforereaching the wire, but it has nonetheless been initiated. Conversely, ifan SDK user evaluates an SDK expression that DOES NOT invoke the()
call operator, then the SDK does NOT initiate a communication with thedevice. Any extension to the SDK that is not consistent with this contractis unlikely to be incorporated into the supported repository.
- The call operator
- The SDK is stupid
The SDK doesn't decide things for the consumer, it'ssimply an interface so that Python programs can manipulate device resourceswithout implementing custom URI/HTTP/network logic. Implications:
- NO DEFAULTS
- The consumers of this library are themselves Pythonprograms. The Application programmer must say what they mean in theirSDK-using program. It violates a critical separation of concerns to adddefault values to the SDK. Don't do it! (Unless you have a goodreason.)
- Failures generate exceptions
- If the SDK enters a surprising orunexpected state it raises an exception. That's it. It's not generallyup to the SDK to implement decision logic that handles edge-cases..EXCEPT where the SDK is smoothing known issues in the device RESTserver. (See below.)
- The SDK never interprets responses
- It just records whatever responsethe device returns as attributes of the relevant object. (Except wherehandling significant inconsistencies in the device interface.)
- public-nonpublic pairs
e.g. 'create' and '_create' XXX add content here.
- Handle known issues in the device REST server.
The SDK intends to providea rational interface to consumers that does the right thing. This meansthat one case where it does NOT simply do the stupid thing is when ithandles a known idiosyncrasy in the device REST server. For example, some?resources ignore 'disable' and 'enable' configuration options when they areset to 'False'. Rather than force a consumer to learn about this quirk inthe server, the SDK guesses that 'disable': False' means 'enable': True', and submits that value on the consumers behalf.
- Implement-Reimplement-Abstract
Solve the problem concretely and simply, ifthe same problem arises again, solve it concretely, then take the twoconcrete solutions and use them as your specification to generate anabstraction. In the SDK this usually goes something like this:
- Add logic to a concrete subclass
- Add similar logic to another concrete subclass
- Create a new method in a mixin or Abstract 'resource.py' base class andhave both concrete subclasses inherit and use that method.
Submodules
bigip
Python API for configuring objects on a BIG-IP® device and gathering informationfrom the device via the REST API.
Filing Issues
Bigip Latest Patch Download Download
See the Issues section of Contributing.
Special Force Patch Download
Contributing
See Contributing
Test
Before you open a pull request, your code must have passingpytest unit tests. In addition, you shouldinclude a set of functional tests written to use a real BIG-IP devicefor testing. Information on how to run our set of tests is includedbelow.
Unit Tests
We use pytest for our unit tests.
If you haven't already, install the required test packages listed inrequirements.test.txt in your virtual environment.
Run the tests and produce a coverage report. The
--cov-report=html
willcreate ahtmlcov/
directory that you can view in your browser to see themissing lines of code.
Style Checks
We use the hacking module for our style checks (installed as part of step 1 inthe Unit Test section).
Copyright
Sa Sams Latest Patch Download
Copyright 2014-2016 F5 Networks Inc.
License
Apache V2.0
Licensed under the Apache License, Version 2.0 (the 'License'); you may not usethis file except in compliance with the License. You may obtain a copy of theLicense at
Unless required by applicable law or agreed to in writing, softwaredistributed 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 limitationsunder the License.
Contributor License Agreement
Individuals or business entities who contribute to this project must havecompleted and submitted the F5 Contributor License Agreementto Openstack_CLA@f5.com prior to their code submission being included in thisproject.