diff --git a/.nojekyll b/.nojekyll new file mode 100644 index 00000000..e69de29b diff --git a/README.md b/README.md deleted file mode 100644 index aa39b774..00000000 --- a/README.md +++ /dev/null @@ -1,37 +0,0 @@ -# VMTN6720U - Hackathon Training: Getting started with the vSphere Automation SDK for Python -**Date:** 08/28/17 6:30PM-8:00PM - -# Agenda -* Introduction to vSphere REST API -* vSphere Automation SDKs -* Getting Started Using the Python SDK -* Lab - -# Introduction to vSphere REST API -* Consume from SDKs, CLI’s -* NOTE: Need bullets from Alan - -# vSphere Automation SDKs -* Supported Languages - * Python, Java, Ruby, Perl, .NET, REST (JavaScript/Postman) -* Open Source on Github - * SDK Includes: - * Runtime - * Serialization - * Language Binding - * Python Wrapper around REST API - * API Reference Documentation (for offline usage) - -# [Labs](lab.md) - -**Wifi**: VMworld-Hackathon-Training-4
-**Wifi Password**: Hackathon2017 - -Connect to VC matching first letter of your last name (poorman’s load balance): - -**VC1**: [192.168.104.11](https://192.168.104.11) (A-H)
-**VC2**: [192.168.104.13](https://192.168.104.13) (I-Q)
-**VC3**: [192.168.104.13](https://192.168.104.13) (R-Z)
- -**VC Username**: administrator@vsphere.local
-**VC Password**: VMware1! diff --git a/_config.yml b/_config.yml deleted file mode 100644 index 259a24e4..00000000 --- a/_config.yml +++ /dev/null @@ -1 +0,0 @@ -theme: jekyll-theme-tactile \ No newline at end of file diff --git a/lab.md b/lab.md deleted file mode 100644 index b31763af..00000000 --- a/lab.md +++ /dev/null @@ -1,188 +0,0 @@ -# VMworld 2017 Python SDK Hackathon - -## Install Python -Go to: [downloads](https://www.python.org/downloads/) and download and install Python for your Platform. -The SDK supports both python2 and python3, but we recommend to install the latest version of python3. - -## Setup Python SDK - -Create and activate a virtual env: - -#### Python2: - - virtualenv - -#### Python3: - -| Windows | OSX | -|---------|-----| -|```py -m venv ```|```python3 -m venv ```| - -#### Activate your virtual env: - -| Windows | OSX | -|---------|-----| -|```\Scripts\activate```|```source /bin/activate```| - -## Clone the github repo -The python github repo is located [here](https://github.com/vmware/vsphere-automation-sdk-python) - -```bash -git clone https://github.com/vmware/vsphere-automation-sdk-python -``` -Or optionally [download](https://github.com/vmware/vsphere-automation-sdk-python/archive/master.zip) the SDK from Github as a .zip file and unzip it to the current dir. - -## Install dependencies - -```bash -cd -pip install -r requirements.txt --extra-index-url -``` - -## Set PYTHONPATH to use SDK helper methods - -#### Linux/Mac: - - export PYTHONPATH=${PWD}:$PYTHONPATH - -#### Windows: - - set PYTHONPATH=%cd%;%PYTHONPATH% - -## OPTIONAL: Install Visual Studio Code IDE -Microsoft's Visual Studio Code is a great (free) IDE that can be used for Python via a plugin providing a rich development environment. - -[Visual Studio Code](https://code.visualstudio.com/)
-[Python Plugin](https://marketplace.visualstudio.com/items?itemName=donjayamanne.python) - -## vSphere Python SDK Examples -Start the Python command interpreter: - -#### Linux/Mac: - - python3 - -#### Windows: - - py - -## List VC inventory in interactive mode - -### Connect to the vSphere REST API endpoint - -```python -from samples.vsphere.common import vapiconnect -stub_config = vapiconnect.connect("", "administrator@vsphere.local", "VMware1!", True) -``` - -### List VMs - -```python -from com.vmware.vcenter_client import VM -vm_svc = VM(stub_config) -vm_svc.list() -``` - -### List Datacenters - -```python -from com.vmware.vcenter_client import * -Datacenter(stub_config).list() -``` - -### List Clusters - -```python -Cluster(stub_config).list() -``` - -### List Hosts - -```python -Host(stub_config).list() -``` - -### List Folders - -```python -Folder(stub_config).list() -``` - -### List Datastore - -```python -Datastore(stub_config).list() -``` - -### Find a specific host using a filter spec - -```python -filter_spec = Host.FilterSpec(names=set([""])) -Host(stub_config).list(filter_spec) -``` - -Note: To exit interactive Python simply type quit() and press Return: - -```python -quit() -``` - -## Run samples on github -For this portion of the lab we recommend using your favorite code editor or as mentioned above download and install [Visual Studio Code](https://code.visualstudio.com/). We will be using Visual Studio code to demo these examples. - -Open the sample property file testbed.py using your favourite text editor, such as: - -#### Linux/OSX: - -```bash -vi samples/vsphere/vcenter/setup/testbed.py -``` - -#### Windows: - -```shell -notepad samples\vsphere\vcenter\setup\testbed.py -``` - -And then change the following two settings: - -```python -config["SERVER"] = "" -config["PASSWORD"] = "VMware1!" -config["VM_DATASTORE_NAME"] = "vsanDatastore" -``` - -### Run create basic VM sample - -**NOTE:** Be sure to name the VM using your First and Last name so it's unique!! - -```bash -python samples/vsphere/vcenter/vm/create/create_basic_vm.py -v -n "vm_" -``` - -### Verify the new VM is created successfully - -```bash -python samples/vsphere/vcenter/vm/list_vms.py -v -``` - -### Run deploy ovf template sample - -**NOTE:** Use single quote for password in Mac 'VMware1!' - -```bash -python samples/vsphere/contentlibrary/ovfdeploy/deploy_ovf_template.py -v -clustername "Cluster1" -libitemname "Sample_OVF" -``` - -### Verify the new VM is deployed successfully - -```bash -python samples/vsphere/vcenter/vm/list_vms.py -v -``` - -## Exercises -Try to use the sample_template to create three scripts and then run them: - -* Power on/off the VM you created -* Edit VM cpu/memory -* Add a CD-ROM to your VM diff --git a/nsx/nsx_policy/.buildinfo b/nsx/nsx_policy/.buildinfo new file mode 100644 index 00000000..cb8881de --- /dev/null +++ b/nsx/nsx_policy/.buildinfo @@ -0,0 +1,4 @@ +# Sphinx build info version 1 +# This file hashes the configuration used when building these files. When it is not found, a full rebuild will be done. +config: d118d18c2744cfeda73360c7342d3ffb +tags: 645f666f9bcd5a90fca523b33c5a78b7 diff --git a/nsx/nsx_policy/.doctrees/com.doctree b/nsx/nsx_policy/.doctrees/com.doctree new file mode 100644 index 00000000..8704256d Binary files /dev/null and b/nsx/nsx_policy/.doctrees/com.doctree differ diff --git a/nsx/nsx_policy/.doctrees/com.vmware.doctree b/nsx/nsx_policy/.doctrees/com.vmware.doctree new file mode 100644 index 00000000..69edd6bb Binary files /dev/null and b/nsx/nsx_policy/.doctrees/com.vmware.doctree differ diff --git a/nsx/nsx_policy/.doctrees/com.vmware.nsx_policy.aaa.doctree b/nsx/nsx_policy/.doctrees/com.vmware.nsx_policy.aaa.doctree new file mode 100644 index 00000000..8000c6c1 Binary files /dev/null and b/nsx/nsx_policy/.doctrees/com.vmware.nsx_policy.aaa.doctree differ diff --git a/nsx/nsx_policy/.doctrees/com.vmware.nsx_policy.cluster.doctree b/nsx/nsx_policy/.doctrees/com.vmware.nsx_policy.cluster.doctree new file mode 100644 index 00000000..afc6ad8b Binary files /dev/null and b/nsx/nsx_policy/.doctrees/com.vmware.nsx_policy.cluster.doctree differ diff --git a/nsx/nsx_policy/.doctrees/com.vmware.nsx_policy.doctree b/nsx/nsx_policy/.doctrees/com.vmware.nsx_policy.doctree new file mode 100644 index 00000000..235a8678 Binary files /dev/null and b/nsx/nsx_policy/.doctrees/com.vmware.nsx_policy.doctree differ diff --git a/nsx/nsx_policy/.doctrees/com.vmware.nsx_policy.infra.doctree b/nsx/nsx_policy/.doctrees/com.vmware.nsx_policy.infra.doctree new file mode 100644 index 00000000..8c94632c Binary files /dev/null and b/nsx/nsx_policy/.doctrees/com.vmware.nsx_policy.infra.doctree differ diff --git a/nsx/nsx_policy/.doctrees/com.vmware.nsx_policy.infra.domains.doctree b/nsx/nsx_policy/.doctrees/com.vmware.nsx_policy.infra.domains.doctree new file mode 100644 index 00000000..795df099 Binary files /dev/null and b/nsx/nsx_policy/.doctrees/com.vmware.nsx_policy.infra.domains.doctree differ diff --git a/nsx/nsx_policy/.doctrees/com.vmware.nsx_policy.infra.domains.groups.doctree b/nsx/nsx_policy/.doctrees/com.vmware.nsx_policy.infra.domains.groups.doctree new file mode 100644 index 00000000..35428075 Binary files /dev/null and b/nsx/nsx_policy/.doctrees/com.vmware.nsx_policy.infra.domains.groups.doctree differ diff --git a/nsx/nsx_policy/.doctrees/com.vmware.nsx_policy.infra.networks.doctree b/nsx/nsx_policy/.doctrees/com.vmware.nsx_policy.infra.networks.doctree new file mode 100644 index 00000000..d8d23d0d Binary files /dev/null and b/nsx/nsx_policy/.doctrees/com.vmware.nsx_policy.infra.networks.doctree differ diff --git a/nsx/nsx_policy/.doctrees/com.vmware.nsx_policy.infra.providers.doctree b/nsx/nsx_policy/.doctrees/com.vmware.nsx_policy.infra.providers.doctree new file mode 100644 index 00000000..fa82b55d Binary files /dev/null and b/nsx/nsx_policy/.doctrees/com.vmware.nsx_policy.infra.providers.doctree differ diff --git a/nsx/nsx_policy/.doctrees/com.vmware.nsx_policy.infra.providers.l2vpn_context.doctree b/nsx/nsx_policy/.doctrees/com.vmware.nsx_policy.infra.providers.l2vpn_context.doctree new file mode 100644 index 00000000..be5c4504 Binary files /dev/null and b/nsx/nsx_policy/.doctrees/com.vmware.nsx_policy.infra.providers.l2vpn_context.doctree differ diff --git a/nsx/nsx_policy/.doctrees/com.vmware.nsx_policy.infra.realized_state.doctree b/nsx/nsx_policy/.doctrees/com.vmware.nsx_policy.infra.realized_state.doctree new file mode 100644 index 00000000..75b139fc Binary files /dev/null and b/nsx/nsx_policy/.doctrees/com.vmware.nsx_policy.infra.realized_state.doctree differ diff --git a/nsx/nsx_policy/.doctrees/com.vmware.nsx_policy.infra.realized_state.enforcement_points.doctree b/nsx/nsx_policy/.doctrees/com.vmware.nsx_policy.infra.realized_state.enforcement_points.doctree new file mode 100644 index 00000000..deec9b84 Binary files /dev/null and b/nsx/nsx_policy/.doctrees/com.vmware.nsx_policy.infra.realized_state.enforcement_points.doctree differ diff --git a/nsx/nsx_policy/.doctrees/com.vmware.nsx_policy.infra.realized_state.enforcement_points.ops.doctree b/nsx/nsx_policy/.doctrees/com.vmware.nsx_policy.infra.realized_state.enforcement_points.ops.doctree new file mode 100644 index 00000000..2c90d74f Binary files /dev/null and b/nsx/nsx_policy/.doctrees/com.vmware.nsx_policy.infra.realized_state.enforcement_points.ops.doctree differ diff --git a/nsx/nsx_policy/.doctrees/enumeration.doctree b/nsx/nsx_policy/.doctrees/enumeration.doctree new file mode 100644 index 00000000..809c834b Binary files /dev/null and b/nsx/nsx_policy/.doctrees/enumeration.doctree differ diff --git a/nsx/nsx_policy/.doctrees/environment.pickle b/nsx/nsx_policy/.doctrees/environment.pickle new file mode 100644 index 00000000..2068ef2e Binary files /dev/null and b/nsx/nsx_policy/.doctrees/environment.pickle differ diff --git a/nsx/nsx_policy/.doctrees/index.doctree b/nsx/nsx_policy/.doctrees/index.doctree new file mode 100644 index 00000000..1a8a112b Binary files /dev/null and b/nsx/nsx_policy/.doctrees/index.doctree differ diff --git a/nsx/nsx_policy/_sources/com.rst.txt b/nsx/nsx_policy/_sources/com.rst.txt new file mode 100644 index 00000000..257ee95b --- /dev/null +++ b/nsx/nsx_policy/_sources/com.rst.txt @@ -0,0 +1,15 @@ +com package +=========== + +.. automodule:: com + :members: + :undoc-members: + :show-inheritance: + +Subpackages +----------- + +.. toctree:: + + com.vmware + diff --git a/nsx/nsx_policy/_sources/com.vmware.nsx_policy.aaa.rst.txt b/nsx/nsx_policy/_sources/com.vmware.nsx_policy.aaa.rst.txt new file mode 100644 index 00000000..fe3202e6 --- /dev/null +++ b/nsx/nsx_policy/_sources/com.vmware.nsx_policy.aaa.rst.txt @@ -0,0 +1,20 @@ +com.vmware.nsx\_policy.aaa package +================================== + +.. automodule:: com.vmware.nsx_policy.aaa + :members: + :undoc-members: + :show-inheritance: + +Submodules +---------- + +com.vmware.nsx\_policy.aaa.vidm\_client module +---------------------------------------------- + +.. automodule:: com.vmware.nsx_policy.aaa.vidm_client + :members: + :undoc-members: + :show-inheritance: + + diff --git a/nsx/nsx_policy/_sources/com.vmware.nsx_policy.cluster.rst.txt b/nsx/nsx_policy/_sources/com.vmware.nsx_policy.cluster.rst.txt new file mode 100644 index 00000000..97e2cf2c --- /dev/null +++ b/nsx/nsx_policy/_sources/com.vmware.nsx_policy.cluster.rst.txt @@ -0,0 +1,36 @@ +com.vmware.nsx\_policy.cluster package +====================================== + +.. automodule:: com.vmware.nsx_policy.cluster + :members: + :undoc-members: + :show-inheritance: + +Submodules +---------- + +com.vmware.nsx\_policy.cluster.backups\_client module +----------------------------------------------------- + +.. automodule:: com.vmware.nsx_policy.cluster.backups_client + :members: + :undoc-members: + :show-inheritance: + +com.vmware.nsx\_policy.cluster.nodes\_client module +--------------------------------------------------- + +.. automodule:: com.vmware.nsx_policy.cluster.nodes_client + :members: + :undoc-members: + :show-inheritance: + +com.vmware.nsx\_policy.cluster.restore\_client module +----------------------------------------------------- + +.. automodule:: com.vmware.nsx_policy.cluster.restore_client + :members: + :undoc-members: + :show-inheritance: + + diff --git a/nsx/nsx_policy/_sources/com.vmware.nsx_policy.infra.domains.groups.rst.txt b/nsx/nsx_policy/_sources/com.vmware.nsx_policy.infra.domains.groups.rst.txt new file mode 100644 index 00000000..a5da4c53 --- /dev/null +++ b/nsx/nsx_policy/_sources/com.vmware.nsx_policy.infra.domains.groups.rst.txt @@ -0,0 +1,20 @@ +com.vmware.nsx\_policy.infra.domains.groups package +=================================================== + +.. automodule:: com.vmware.nsx_policy.infra.domains.groups + :members: + :undoc-members: + :show-inheritance: + +Submodules +---------- + +com.vmware.nsx\_policy.infra.domains.groups.statistics\_client module +--------------------------------------------------------------------- + +.. automodule:: com.vmware.nsx_policy.infra.domains.groups.statistics_client + :members: + :undoc-members: + :show-inheritance: + + diff --git a/nsx/nsx_policy/_sources/com.vmware.nsx_policy.infra.domains.rst.txt b/nsx/nsx_policy/_sources/com.vmware.nsx_policy.infra.domains.rst.txt new file mode 100644 index 00000000..2a0d6577 --- /dev/null +++ b/nsx/nsx_policy/_sources/com.vmware.nsx_policy.infra.domains.rst.txt @@ -0,0 +1,51 @@ +com.vmware.nsx\_policy.infra.domains package +============================================ + +.. automodule:: com.vmware.nsx_policy.infra.domains + :members: + :undoc-members: + :show-inheritance: + +Subpackages +----------- + +.. toctree:: + + com.vmware.nsx_policy.infra.domains.groups + +Submodules +---------- + +com.vmware.nsx\_policy.infra.domains.communication\_maps\_client module +----------------------------------------------------------------------- + +.. automodule:: com.vmware.nsx_policy.infra.domains.communication_maps_client + :members: + :undoc-members: + :show-inheritance: + +com.vmware.nsx\_policy.infra.domains.edge\_communication\_maps\_client module +----------------------------------------------------------------------------- + +.. automodule:: com.vmware.nsx_policy.infra.domains.edge_communication_maps_client + :members: + :undoc-members: + :show-inheritance: + +com.vmware.nsx\_policy.infra.domains.groups\_client module +---------------------------------------------------------- + +.. automodule:: com.vmware.nsx_policy.infra.domains.groups_client + :members: + :undoc-members: + :show-inheritance: + +com.vmware.nsx\_policy.infra.domains.redirection\_communication\_maps\_client module +------------------------------------------------------------------------------------ + +.. automodule:: com.vmware.nsx_policy.infra.domains.redirection_communication_maps_client + :members: + :undoc-members: + :show-inheritance: + + diff --git a/nsx/nsx_policy/_sources/com.vmware.nsx_policy.infra.networks.rst.txt b/nsx/nsx_policy/_sources/com.vmware.nsx_policy.infra.networks.rst.txt new file mode 100644 index 00000000..149a8e0e --- /dev/null +++ b/nsx/nsx_policy/_sources/com.vmware.nsx_policy.infra.networks.rst.txt @@ -0,0 +1,28 @@ +com.vmware.nsx\_policy.infra.networks package +============================================= + +.. automodule:: com.vmware.nsx_policy.infra.networks + :members: + :undoc-members: + :show-inheritance: + +Submodules +---------- + +com.vmware.nsx\_policy.infra.networks.nat\_client module +-------------------------------------------------------- + +.. automodule:: com.vmware.nsx_policy.infra.networks.nat_client + :members: + :undoc-members: + :show-inheritance: + +com.vmware.nsx\_policy.infra.networks.segments\_client module +------------------------------------------------------------- + +.. automodule:: com.vmware.nsx_policy.infra.networks.segments_client + :members: + :undoc-members: + :show-inheritance: + + diff --git a/nsx/nsx_policy/_sources/com.vmware.nsx_policy.infra.providers.l2vpn_context.rst.txt b/nsx/nsx_policy/_sources/com.vmware.nsx_policy.infra.providers.l2vpn_context.rst.txt new file mode 100644 index 00000000..f66fe8e0 --- /dev/null +++ b/nsx/nsx_policy/_sources/com.vmware.nsx_policy.infra.providers.l2vpn_context.rst.txt @@ -0,0 +1,20 @@ +com.vmware.nsx\_policy.infra.providers.l2vpn\_context package +============================================================= + +.. automodule:: com.vmware.nsx_policy.infra.providers.l2vpn_context + :members: + :undoc-members: + :show-inheritance: + +Submodules +---------- + +com.vmware.nsx\_policy.infra.providers.l2vpn\_context.l2vpns\_client module +--------------------------------------------------------------------------- + +.. automodule:: com.vmware.nsx_policy.infra.providers.l2vpn_context.l2vpns_client + :members: + :undoc-members: + :show-inheritance: + + diff --git a/nsx/nsx_policy/_sources/com.vmware.nsx_policy.infra.providers.rst.txt b/nsx/nsx_policy/_sources/com.vmware.nsx_policy.infra.providers.rst.txt new file mode 100644 index 00000000..1598f6c7 --- /dev/null +++ b/nsx/nsx_policy/_sources/com.vmware.nsx_policy.infra.providers.rst.txt @@ -0,0 +1,51 @@ +com.vmware.nsx\_policy.infra.providers package +============================================== + +.. automodule:: com.vmware.nsx_policy.infra.providers + :members: + :undoc-members: + :show-inheritance: + +Subpackages +----------- + +.. toctree:: + + com.vmware.nsx_policy.infra.providers.l2vpn_context + +Submodules +---------- + +com.vmware.nsx\_policy.infra.providers.bgp\_client module +--------------------------------------------------------- + +.. automodule:: com.vmware.nsx_policy.infra.providers.bgp_client + :members: + :undoc-members: + :show-inheritance: + +com.vmware.nsx\_policy.infra.providers.l2vpn\_context\_client module +-------------------------------------------------------------------- + +.. automodule:: com.vmware.nsx_policy.infra.providers.l2vpn_context_client + :members: + :undoc-members: + :show-inheritance: + +com.vmware.nsx\_policy.infra.providers.l3vpns\_client module +------------------------------------------------------------ + +.. automodule:: com.vmware.nsx_policy.infra.providers.l3vpns_client + :members: + :undoc-members: + :show-inheritance: + +com.vmware.nsx\_policy.infra.providers.service\_instances\_client module +------------------------------------------------------------------------ + +.. automodule:: com.vmware.nsx_policy.infra.providers.service_instances_client + :members: + :undoc-members: + :show-inheritance: + + diff --git a/nsx/nsx_policy/_sources/com.vmware.nsx_policy.infra.realized_state.enforcement_points.ops.rst.txt b/nsx/nsx_policy/_sources/com.vmware.nsx_policy.infra.realized_state.enforcement_points.ops.rst.txt new file mode 100644 index 00000000..6f37bca4 --- /dev/null +++ b/nsx/nsx_policy/_sources/com.vmware.nsx_policy.infra.realized_state.enforcement_points.ops.rst.txt @@ -0,0 +1,20 @@ +com.vmware.nsx\_policy.infra.realized\_state.enforcement\_points.ops package +============================================================================ + +.. automodule:: com.vmware.nsx_policy.infra.realized_state.enforcement_points.ops + :members: + :undoc-members: + :show-inheritance: + +Submodules +---------- + +com.vmware.nsx\_policy.infra.realized\_state.enforcement\_points.ops.domains\_client module +------------------------------------------------------------------------------------------- + +.. automodule:: com.vmware.nsx_policy.infra.realized_state.enforcement_points.ops.domains_client + :members: + :undoc-members: + :show-inheritance: + + diff --git a/nsx/nsx_policy/_sources/com.vmware.nsx_policy.infra.realized_state.enforcement_points.rst.txt b/nsx/nsx_policy/_sources/com.vmware.nsx_policy.infra.realized_state.enforcement_points.rst.txt new file mode 100644 index 00000000..b0b9f4d4 --- /dev/null +++ b/nsx/nsx_policy/_sources/com.vmware.nsx_policy.infra.realized_state.enforcement_points.rst.txt @@ -0,0 +1,59 @@ +com.vmware.nsx\_policy.infra.realized\_state.enforcement\_points package +======================================================================== + +.. automodule:: com.vmware.nsx_policy.infra.realized_state.enforcement_points + :members: + :undoc-members: + :show-inheritance: + +Subpackages +----------- + +.. toctree:: + + com.vmware.nsx_policy.infra.realized_state.enforcement_points.ops + +Submodules +---------- + +com.vmware.nsx\_policy.infra.realized\_state.enforcement\_points.firewalls\_client module +----------------------------------------------------------------------------------------- + +.. automodule:: com.vmware.nsx_policy.infra.realized_state.enforcement_points.firewalls_client + :members: + :undoc-members: + :show-inheritance: + +com.vmware.nsx\_policy.infra.realized\_state.enforcement\_points.groups\_client module +-------------------------------------------------------------------------------------- + +.. automodule:: com.vmware.nsx_policy.infra.realized_state.enforcement_points.groups_client + :members: + :undoc-members: + :show-inheritance: + +com.vmware.nsx\_policy.infra.realized\_state.enforcement\_points.ip\_sets\_client module +---------------------------------------------------------------------------------------- + +.. automodule:: com.vmware.nsx_policy.infra.realized_state.enforcement_points.ip_sets_client + :members: + :undoc-members: + :show-inheritance: + +com.vmware.nsx\_policy.infra.realized\_state.enforcement\_points.mac\_sets\_client module +----------------------------------------------------------------------------------------- + +.. automodule:: com.vmware.nsx_policy.infra.realized_state.enforcement_points.mac_sets_client + :members: + :undoc-members: + :show-inheritance: + +com.vmware.nsx\_policy.infra.realized\_state.enforcement\_points.services\_client module +---------------------------------------------------------------------------------------- + +.. automodule:: com.vmware.nsx_policy.infra.realized_state.enforcement_points.services_client + :members: + :undoc-members: + :show-inheritance: + + diff --git a/nsx/nsx_policy/_sources/com.vmware.nsx_policy.infra.realized_state.rst.txt b/nsx/nsx_policy/_sources/com.vmware.nsx_policy.infra.realized_state.rst.txt new file mode 100644 index 00000000..53312111 --- /dev/null +++ b/nsx/nsx_policy/_sources/com.vmware.nsx_policy.infra.realized_state.rst.txt @@ -0,0 +1,27 @@ +com.vmware.nsx\_policy.infra.realized\_state package +==================================================== + +.. automodule:: com.vmware.nsx_policy.infra.realized_state + :members: + :undoc-members: + :show-inheritance: + +Subpackages +----------- + +.. toctree:: + + com.vmware.nsx_policy.infra.realized_state.enforcement_points + +Submodules +---------- + +com.vmware.nsx\_policy.infra.realized\_state.enforcement\_points\_client module +------------------------------------------------------------------------------- + +.. automodule:: com.vmware.nsx_policy.infra.realized_state.enforcement_points_client + :members: + :undoc-members: + :show-inheritance: + + diff --git a/nsx/nsx_policy/_sources/com.vmware.nsx_policy.infra.rst.txt b/nsx/nsx_policy/_sources/com.vmware.nsx_policy.infra.rst.txt new file mode 100644 index 00000000..f5c30e2c --- /dev/null +++ b/nsx/nsx_policy/_sources/com.vmware.nsx_policy.infra.rst.txt @@ -0,0 +1,78 @@ +com.vmware.nsx\_policy.infra package +==================================== + +.. automodule:: com.vmware.nsx_policy.infra + :members: + :undoc-members: + :show-inheritance: + +Subpackages +----------- + +.. toctree:: + + com.vmware.nsx_policy.infra.domains + com.vmware.nsx_policy.infra.networks + com.vmware.nsx_policy.infra.providers + com.vmware.nsx_policy.infra.realized_state + +Submodules +---------- + +com.vmware.nsx\_policy.infra.deployment\_zones\_client module +------------------------------------------------------------- + +.. automodule:: com.vmware.nsx_policy.infra.deployment_zones_client + :members: + :undoc-members: + :show-inheritance: + +com.vmware.nsx\_policy.infra.domains\_client module +--------------------------------------------------- + +.. automodule:: com.vmware.nsx_policy.infra.domains_client + :members: + :undoc-members: + :show-inheritance: + +com.vmware.nsx\_policy.infra.networks\_client module +---------------------------------------------------- + +.. automodule:: com.vmware.nsx_policy.infra.networks_client + :members: + :undoc-members: + :show-inheritance: + +com.vmware.nsx\_policy.infra.partner\_services\_client module +------------------------------------------------------------- + +.. automodule:: com.vmware.nsx_policy.infra.partner_services_client + :members: + :undoc-members: + :show-inheritance: + +com.vmware.nsx\_policy.infra.providers\_client module +----------------------------------------------------- + +.. automodule:: com.vmware.nsx_policy.infra.providers_client + :members: + :undoc-members: + :show-inheritance: + +com.vmware.nsx\_policy.infra.realized\_state\_client module +----------------------------------------------------------- + +.. automodule:: com.vmware.nsx_policy.infra.realized_state_client + :members: + :undoc-members: + :show-inheritance: + +com.vmware.nsx\_policy.infra.services\_client module +---------------------------------------------------- + +.. automodule:: com.vmware.nsx_policy.infra.services_client + :members: + :undoc-members: + :show-inheritance: + + diff --git a/nsx/nsx_policy/_sources/com.vmware.nsx_policy.rst.txt b/nsx/nsx_policy/_sources/com.vmware.nsx_policy.rst.txt new file mode 100644 index 00000000..de5d6ad5 --- /dev/null +++ b/nsx/nsx_policy/_sources/com.vmware.nsx_policy.rst.txt @@ -0,0 +1,109 @@ +com.vmware.nsx\_policy package +============================== + +.. automodule:: com.vmware.nsx_policy + :members: + :undoc-members: + :show-inheritance: + +Subpackages +----------- + +.. toctree:: + + com.vmware.nsx_policy.aaa + com.vmware.nsx_policy.cluster + com.vmware.nsx_policy.infra + +Submodules +---------- + +com.vmware.nsx\_policy.aaa\_client module +----------------------------------------- + +.. automodule:: com.vmware.nsx_policy.aaa_client + :members: + :undoc-members: + :show-inheritance: + +com.vmware.nsx\_policy.cluster\_client module +--------------------------------------------- + +.. automodule:: com.vmware.nsx_policy.cluster_client + :members: + :undoc-members: + :show-inheritance: + +com.vmware.nsx\_policy.configs\_client module +--------------------------------------------- + +.. automodule:: com.vmware.nsx_policy.configs_client + :members: + :undoc-members: + :show-inheritance: + +com.vmware.nsx\_policy.enforcement\_points\_client module +--------------------------------------------------------- + +.. automodule:: com.vmware.nsx_policy.enforcement_points_client + :members: + :undoc-members: + :show-inheritance: + +com.vmware.nsx\_policy.eula\_client module +------------------------------------------ + +.. automodule:: com.vmware.nsx_policy.eula_client + :members: + :undoc-members: + :show-inheritance: + +com.vmware.nsx\_policy.infra\_client module +------------------------------------------- + +.. automodule:: com.vmware.nsx_policy.infra_client + :members: + :undoc-members: + :show-inheritance: + +com.vmware.nsx\_policy.licenses\_client module +---------------------------------------------- + +.. automodule:: com.vmware.nsx_policy.licenses_client + :members: + :undoc-members: + :show-inheritance: + +com.vmware.nsx\_policy.model\_client module +------------------------------------------- + +.. automodule:: com.vmware.nsx_policy.model_client + :members: + :undoc-members: + :show-inheritance: + +com.vmware.nsx\_policy.tasks\_client module +------------------------------------------- + +.. automodule:: com.vmware.nsx_policy.tasks_client + :members: + :undoc-members: + :show-inheritance: + +com.vmware.nsx\_policy.trust\_management\_client module +------------------------------------------------------- + +.. automodule:: com.vmware.nsx_policy.trust_management_client + :members: + :undoc-members: + :show-inheritance: + +com.vmware.nsx\_policy.upgrade\_client module +--------------------------------------------- + +.. automodule:: com.vmware.nsx_policy.upgrade_client + :members: + :undoc-members: + :show-inheritance: + + diff --git a/nsx/nsx_policy/_sources/com.vmware.rst.txt b/nsx/nsx_policy/_sources/com.vmware.rst.txt new file mode 100644 index 00000000..2ecf966f --- /dev/null +++ b/nsx/nsx_policy/_sources/com.vmware.rst.txt @@ -0,0 +1,27 @@ +com.vmware package +================== + +.. automodule:: com.vmware + :members: + :undoc-members: + :show-inheritance: + +Subpackages +----------- + +.. toctree:: + + com.vmware.nsx_policy + +Submodules +---------- + +com.vmware.nsx\_policy\_client module +------------------------------------- + +.. automodule:: com.vmware.nsx_policy_client + :members: + :undoc-members: + :show-inheritance: + + diff --git a/nsx/nsx_policy/_sources/enumeration.rst.txt b/nsx/nsx_policy/_sources/enumeration.rst.txt new file mode 100644 index 00000000..afe09e47 --- /dev/null +++ b/nsx/nsx_policy/_sources/enumeration.rst.txt @@ -0,0 +1,82 @@ +.. _enumeration_description: + +Interface definition language to python mapping for enumerated types +-------------------------------------------------------------------- + +The interface language definition type system includes enumerated types. Python +SDK supports both 2.x and 3.x versions of Python. Since Python 2.x does +not have first class support for enumerations, special classes are +generated to represent enumerated types from the interface definition +language. The special class contains class attributes which represent +the values of the enumerated type. + +This documentation explains the following: + +* How the class variables are defined in the module. This specifies the names that you can use in your program. +* How you instantiate a class to use it for communication with future versions of the service. + +Example of an enumerated type documentation +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +*class* com.vmware.vapi.metadata_client. **SourceType** (string) + Bases: vmware.vapi.bindings.enum.Enum + + Metadata source type + + .. note:: + This class represents an enumerated type in the interface language definition type system. The class contains class attributes which represent the values in the current version of the enumerated type. Newer versions of the enumerated type may contain new values. To use new values of the enumerated type in communication with a server that supports a newer version of the API, you instantiate this class. See :ref:`enumerated type description page `. + + **Parameters** : **string** (``str``) – String value for the SourceType instance. + + **FILE** = *SourceType(string='FILE')* + If the source is backed by a file. + + **REMOTE** = *SourceType(string='REMOTE')* + If the source is backed by a remote service. + +Code Examples +^^^^^^^^^^^^^ + +The enumerated type classes are defined in python modules that your code +imports. You can use these in your code. + +1. If you want to pass an enumerated type value in a method to a server, specify the class variable of the enumerated type class. + +.. code-block:: python + + # SourceType is an enumerated type + from com.vmware.vapi.metadata_client import SourceType + + # SourceType has two class attrites, SourceType.FILE and SourceType.REMOTE + spec = Source.CreateSpec(type=SourceType.FILE, filepath='entity_metadata.json', description='Entity service') + source_svc.create(id='entity', spec=spec) + +2. When you receive an enumerated type value in the response from a server, allow for unknown enumerated type values. + +.. code-block:: python + + # SourceType is an enumerated type + from com.vmware.vapi.metadata_client import SourceType + + source_info = source_svc.get(id='entity') + if (source_info.type == SourceType.FILE) { + print 'Source is a file' + } else if (source_info.type == SourceType.REMOTE) { + print 'Source is a remote provider' + } else { + print 'Unknown source type: %s' % str(source_info.type) + } + +3. Sending a new enumerated type value to a server that has a newer version of the enumerated type. + +To use new values of the enumerated type in communication with a server that supports a newer version of the API, you instantiate the +enumerated type class. + +.. code-block:: python + + # If a newer version of SourceType has a new value FOLDER, FOLDER would be one + # of the class attributes for SourceType. In the older version, SourceType has + # only two class attributes, FILE and REMOTE + from com.vmware.vapi.metadata_client import SourceType + spec = Source.CreateSpec(type=SourceType('FOLDER'), filepath='entity_metadata', description='Entity service') + source_svc.create(id='entity', spec=spec) diff --git a/nsx/nsx_policy/_sources/index.rst.txt b/nsx/nsx_policy/_sources/index.rst.txt new file mode 100644 index 00000000..5c02889f --- /dev/null +++ b/nsx/nsx_policy/_sources/index.rst.txt @@ -0,0 +1,21 @@ +.. NSX-T Policy SDK documentation master file, created by + sphinx-quickstart on Mon Apr 30 15:58:55 2018. + You can adapt this file completely to your liking, but it should at least + contain the root `toctree` directive. + +Welcome to NSX-T Policy SDK's documentation! +============================================ + +.. toctree:: + :maxdepth: 10 + :caption: Contents: + + com + + +Indices and tables +================== + +* :ref:`genindex` +* :ref:`modindex` +* :ref:`search` diff --git a/nsx/nsx_policy/_static/ajax-loader.gif b/nsx/nsx_policy/_static/ajax-loader.gif new file mode 100644 index 00000000..61faf8ca Binary files /dev/null and b/nsx/nsx_policy/_static/ajax-loader.gif differ diff --git a/nsx/nsx_policy/_static/basic.css b/nsx/nsx_policy/_static/basic.css new file mode 100644 index 00000000..19ced105 --- /dev/null +++ b/nsx/nsx_policy/_static/basic.css @@ -0,0 +1,665 @@ +/* + * basic.css + * ~~~~~~~~~ + * + * Sphinx stylesheet -- basic theme. + * + * :copyright: Copyright 2007-2018 by the Sphinx team, see AUTHORS. + * :license: BSD, see LICENSE for details. + * + */ + +/* -- main layout ----------------------------------------------------------- */ + +div.clearer { + clear: both; +} + +/* -- relbar ---------------------------------------------------------------- */ + +div.related { + width: 100%; + font-size: 90%; +} + +div.related h3 { + display: none; +} + +div.related ul { + margin: 0; + padding: 0 0 0 10px; + list-style: none; +} + +div.related li { + display: inline; +} + +div.related li.right { + float: right; + margin-right: 5px; +} + +/* -- sidebar --------------------------------------------------------------- */ + +div.sphinxsidebarwrapper { + padding: 10px 5px 0 10px; +} + +div.sphinxsidebar { + float: left; + width: 230px; + margin-left: -100%; + font-size: 90%; + word-wrap: break-word; + overflow-wrap : break-word; +} + +div.sphinxsidebar ul { + list-style: none; +} + +div.sphinxsidebar ul ul, +div.sphinxsidebar ul.want-points { + margin-left: 20px; + list-style: square; +} + +div.sphinxsidebar ul ul { + margin-top: 0; + margin-bottom: 0; +} + +div.sphinxsidebar form { + margin-top: 10px; +} + +div.sphinxsidebar input { + border: 1px solid #98dbcc; + font-family: sans-serif; + font-size: 1em; +} + +div.sphinxsidebar #searchbox input[type="text"] { + float: left; + width: 80%; + padding: 0.25em; + box-sizing: border-box; +} + +div.sphinxsidebar #searchbox input[type="submit"] { + float: left; + width: 20%; + border-left: none; + padding: 0.25em; + box-sizing: border-box; +} + + +img { + border: 0; + max-width: 100%; +} + +/* -- search page ----------------------------------------------------------- */ + +ul.search { + margin: 10px 0 0 20px; + padding: 0; +} + +ul.search li { + padding: 5px 0 5px 20px; + background-image: url(file.png); + background-repeat: no-repeat; + background-position: 0 7px; +} + +ul.search li a { + font-weight: bold; +} + +ul.search li div.context { + color: #888; + margin: 2px 0 0 30px; + text-align: left; +} + +ul.keywordmatches li.goodmatch a { + font-weight: bold; +} + +/* -- index page ------------------------------------------------------------ */ + +table.contentstable { + width: 90%; + margin-left: auto; + margin-right: auto; +} + +table.contentstable p.biglink { + line-height: 150%; +} + +a.biglink { + font-size: 1.3em; +} + +span.linkdescr { + font-style: italic; + padding-top: 5px; + font-size: 90%; +} + +/* -- general index --------------------------------------------------------- */ + +table.indextable { + width: 100%; +} + +table.indextable td { + text-align: left; + vertical-align: top; +} + +table.indextable ul { + margin-top: 0; + margin-bottom: 0; + list-style-type: none; +} + +table.indextable > tbody > tr > td > ul { + padding-left: 0em; +} + +table.indextable tr.pcap { + height: 10px; +} + +table.indextable tr.cap { + margin-top: 10px; + background-color: #f2f2f2; +} + +img.toggler { + margin-right: 3px; + margin-top: 3px; + cursor: pointer; +} + +div.modindex-jumpbox { + border-top: 1px solid #ddd; + border-bottom: 1px solid #ddd; + margin: 1em 0 1em 0; + padding: 0.4em; +} + +div.genindex-jumpbox { + border-top: 1px solid #ddd; + border-bottom: 1px solid #ddd; + margin: 1em 0 1em 0; + padding: 0.4em; +} + +/* -- domain module index --------------------------------------------------- */ + +table.modindextable td { + padding: 2px; + border-collapse: collapse; +} + +/* -- general body styles --------------------------------------------------- */ + +div.body { + min-width: 450px; + max-width: 800px; +} + +div.body p, div.body dd, div.body li, div.body blockquote { + -moz-hyphens: auto; + -ms-hyphens: auto; + -webkit-hyphens: auto; + hyphens: auto; +} + +a.headerlink { + visibility: hidden; +} + +h1:hover > a.headerlink, +h2:hover > a.headerlink, +h3:hover > a.headerlink, +h4:hover > a.headerlink, +h5:hover > a.headerlink, +h6:hover > a.headerlink, +dt:hover > a.headerlink, +caption:hover > a.headerlink, +p.caption:hover > a.headerlink, +div.code-block-caption:hover > a.headerlink { + visibility: visible; +} + +div.body p.caption { + text-align: inherit; +} + +div.body td { + text-align: left; +} + +.first { + margin-top: 0 !important; +} + +p.rubric { + margin-top: 30px; + font-weight: bold; +} + +img.align-left, .figure.align-left, object.align-left { + clear: left; + float: left; + margin-right: 1em; +} + +img.align-right, .figure.align-right, object.align-right { + clear: right; + float: right; + margin-left: 1em; +} + +img.align-center, .figure.align-center, object.align-center { + display: block; + margin-left: auto; + margin-right: auto; +} + +.align-left { + text-align: left; +} + +.align-center { + text-align: center; +} + +.align-right { + text-align: right; +} + +/* -- sidebars -------------------------------------------------------------- */ + +div.sidebar { + margin: 0 0 0.5em 1em; + border: 1px solid #ddb; + padding: 7px 7px 0 7px; + background-color: #ffe; + width: 40%; + float: right; +} + +p.sidebar-title { + font-weight: bold; +} + +/* -- topics ---------------------------------------------------------------- */ + +div.topic { + border: 1px solid #ccc; + padding: 7px 7px 0 7px; + margin: 10px 0 10px 0; +} + +p.topic-title { + font-size: 1.1em; + font-weight: bold; + margin-top: 10px; +} + +/* -- admonitions ----------------------------------------------------------- */ + +div.admonition { + margin-top: 10px; + margin-bottom: 10px; + padding: 7px; +} + +div.admonition dt { + font-weight: bold; +} + +div.admonition dl { + margin-bottom: 0; +} + +p.admonition-title { + margin: 0px 10px 5px 0px; + font-weight: bold; +} + +div.body p.centered { + text-align: center; + margin-top: 25px; +} + +/* -- tables ---------------------------------------------------------------- */ + +table.docutils { + border: 0; + border-collapse: collapse; +} + +table.align-center { + margin-left: auto; + margin-right: auto; +} + +table caption span.caption-number { + font-style: italic; +} + +table caption span.caption-text { +} + +table.docutils td, table.docutils th { + padding: 1px 8px 1px 5px; + border-top: 0; + border-left: 0; + border-right: 0; + border-bottom: 1px solid #aaa; +} + +table.footnote td, table.footnote th { + border: 0 !important; +} + +th { + text-align: left; + padding-right: 5px; +} + +table.citation { + border-left: solid 1px gray; + margin-left: 1px; +} + +table.citation td { + border-bottom: none; +} + +/* -- figures --------------------------------------------------------------- */ + +div.figure { + margin: 0.5em; + padding: 0.5em; +} + +div.figure p.caption { + padding: 0.3em; +} + +div.figure p.caption span.caption-number { + font-style: italic; +} + +div.figure p.caption span.caption-text { +} + +/* -- field list styles ----------------------------------------------------- */ + +table.field-list td, table.field-list th { + border: 0 !important; +} + +.field-list ul { + margin: 0; + padding-left: 1em; +} + +.field-list p { + margin: 0; +} + +.field-name { + -moz-hyphens: manual; + -ms-hyphens: manual; + -webkit-hyphens: manual; + hyphens: manual; +} + +/* -- other body styles ----------------------------------------------------- */ + +ol.arabic { + list-style: decimal; +} + +ol.loweralpha { + list-style: lower-alpha; +} + +ol.upperalpha { + list-style: upper-alpha; +} + +ol.lowerroman { + list-style: lower-roman; +} + +ol.upperroman { + list-style: upper-roman; +} + +dl { + margin-bottom: 15px; +} + +dd p { + margin-top: 0px; +} + +dd ul, dd table { + margin-bottom: 10px; +} + +dd { + margin-top: 3px; + margin-bottom: 10px; + margin-left: 30px; +} + +dt:target, span.highlighted { + background-color: #fbe54e; +} + +rect.highlighted { + fill: #fbe54e; +} + +dl.glossary dt { + font-weight: bold; + font-size: 1.1em; +} + +.optional { + font-size: 1.3em; +} + +.sig-paren { + font-size: larger; +} + +.versionmodified { + font-style: italic; +} + +.system-message { + background-color: #fda; + padding: 5px; + border: 3px solid red; +} + +.footnote:target { + background-color: #ffa; +} + +.line-block { + display: block; + margin-top: 1em; + margin-bottom: 1em; +} + +.line-block .line-block { + margin-top: 0; + margin-bottom: 0; + margin-left: 1.5em; +} + +.guilabel, .menuselection { + font-family: sans-serif; +} + +.accelerator { + text-decoration: underline; +} + +.classifier { + font-style: oblique; +} + +abbr, acronym { + border-bottom: dotted 1px; + cursor: help; +} + +/* -- code displays --------------------------------------------------------- */ + +pre { + overflow: auto; + overflow-y: hidden; /* fixes display issues on Chrome browsers */ +} + +span.pre { + -moz-hyphens: none; + -ms-hyphens: none; + -webkit-hyphens: none; + hyphens: none; +} + +td.linenos pre { + padding: 5px 0px; + border: 0; + background-color: transparent; + color: #aaa; +} + +table.highlighttable { + margin-left: 0.5em; +} + +table.highlighttable td { + padding: 0 0.5em 0 0.5em; +} + +div.code-block-caption { + padding: 2px 5px; + font-size: small; +} + +div.code-block-caption code { + background-color: transparent; +} + +div.code-block-caption + div > div.highlight > pre { + margin-top: 0; +} + +div.code-block-caption span.caption-number { + padding: 0.1em 0.3em; + font-style: italic; +} + +div.code-block-caption span.caption-text { +} + +div.literal-block-wrapper { + padding: 1em 1em 0; +} + +div.literal-block-wrapper div.highlight { + margin: 0; +} + +code.descname { + background-color: transparent; + font-weight: bold; + font-size: 1.2em; +} + +code.descclassname { + background-color: transparent; +} + +code.xref, a code { + background-color: transparent; + font-weight: bold; +} + +h1 code, h2 code, h3 code, h4 code, h5 code, h6 code { + background-color: transparent; +} + +.viewcode-link { + float: right; +} + +.viewcode-back { + float: right; + font-family: sans-serif; +} + +div.viewcode-block:target { + margin: -1px -10px; + padding: 0 10px; +} + +/* -- math display ---------------------------------------------------------- */ + +img.math { + vertical-align: middle; +} + +div.body div.math p { + text-align: center; +} + +span.eqno { + float: right; +} + +span.eqno a.headerlink { + position: relative; + left: 0px; + z-index: 1; +} + +div.math:hover a.headerlink { + visibility: visible; +} + +/* -- printout stylesheet --------------------------------------------------- */ + +@media print { + div.document, + div.documentwrapper, + div.bodywrapper { + margin: 0 !important; + width: 100%; + } + + div.sphinxsidebar, + div.related, + div.footer, + #top-link { + display: none; + } +} \ No newline at end of file diff --git a/nsx/nsx_policy/_static/comment-bright.png b/nsx/nsx_policy/_static/comment-bright.png new file mode 100644 index 00000000..15e27edb Binary files /dev/null and b/nsx/nsx_policy/_static/comment-bright.png differ diff --git a/nsx/nsx_policy/_static/comment-close.png b/nsx/nsx_policy/_static/comment-close.png new file mode 100644 index 00000000..4d91bcf5 Binary files /dev/null and b/nsx/nsx_policy/_static/comment-close.png differ diff --git a/nsx/nsx_policy/_static/comment.png b/nsx/nsx_policy/_static/comment.png new file mode 100644 index 00000000..dfbc0cbd Binary files /dev/null and b/nsx/nsx_policy/_static/comment.png differ diff --git a/nsx/nsx_policy/_static/css/badge_only.css b/nsx/nsx_policy/_static/css/badge_only.css new file mode 100644 index 00000000..012e63fe --- /dev/null +++ b/nsx/nsx_policy/_static/css/badge_only.css @@ -0,0 +1 @@ +.fa:before{-webkit-font-smoothing:antialiased}.clearfix{*zoom:1}.clearfix:before,.clearfix:after{display:table;content:""}.clearfix:after{clear:both}@font-face{font-family:FontAwesome;font-weight:normal;font-style:normal;src:url("../fonts/fontawesome-webfont.eot");src:url("../fonts/fontawesome-webfont.eot?#iefix") format("embedded-opentype"),url("../fonts/fontawesome-webfont.woff") format("woff"),url("../fonts/fontawesome-webfont.ttf") format("truetype"),url("../fonts/fontawesome-webfont.svg#FontAwesome") format("svg")}.fa:before{display:inline-block;font-family:FontAwesome;font-style:normal;font-weight:normal;line-height:1;text-decoration:inherit}a .fa{display:inline-block;text-decoration:inherit}li .fa{display:inline-block}li .fa-large:before,li .fa-large:before{width:1.875em}ul.fas{list-style-type:none;margin-left:2em;text-indent:-0.8em}ul.fas li .fa{width:.8em}ul.fas li .fa-large:before,ul.fas li .fa-large:before{vertical-align:baseline}.fa-book:before{content:""}.icon-book:before{content:""}.fa-caret-down:before{content:""}.icon-caret-down:before{content:""}.fa-caret-up:before{content:""}.icon-caret-up:before{content:""}.fa-caret-left:before{content:""}.icon-caret-left:before{content:""}.fa-caret-right:before{content:""}.icon-caret-right:before{content:""}.rst-versions{position:fixed;bottom:0;left:0;overflow-y:scroll;width:300px;color:#fcfcfc;background:#1f1d1d;font-family:"Lato","proxima-nova","Helvetica Neue",Arial,sans-serif;z-index:400}.rst-versions a{color:#2980B9;text-decoration:none}.rst-versions .rst-badge-small{display:none}.rst-versions .rst-current-version{padding:12px;background-color:#272525;display:block;text-align:right;font-size:90%;cursor:pointer;color:#27AE60;*zoom:1}.rst-versions .rst-current-version:before,.rst-versions .rst-current-version:after{display:table;content:""}.rst-versions .rst-current-version:after{clear:both}.rst-versions .rst-current-version .fa{color:#fcfcfc}.rst-versions .rst-current-version .fa-book{float:left}.rst-versions .rst-current-version .icon-book{float:left}.rst-versions .rst-current-version.rst-out-of-date{background-color:#E74C3C;color:#fff}.rst-versions .rst-current-version.rst-active-old-version{background-color:#F1C40F;color:#000}.rst-versions.shift-up{max-height:100%}.rst-versions.shift-up .rst-other-versions{display:block}.rst-versions .rst-other-versions{font-size:90%;padding:12px;color:gray;display:none}.rst-versions .rst-other-versions hr{display:block;height:1px;border:0;margin:20px 0;padding:0;border-top:solid 1px #413d3d}.rst-versions .rst-other-versions dd{display:inline-block;margin:0}.rst-versions .rst-other-versions dd a{display:inline-block;padding:6px;color:#fcfcfc}.rst-versions.rst-badge{width:auto;bottom:20px;right:20px;left:auto;border:none;max-width:300px}.rst-versions.rst-badge .icon-book{float:none}.rst-versions.rst-badge .fa-book{float:none}.rst-versions.rst-badge.shift-up .rst-current-version{text-align:right}.rst-versions.rst-badge.shift-up .rst-current-version .fa-book{float:left}.rst-versions.rst-badge.shift-up .rst-current-version .icon-book{float:left}.rst-versions.rst-badge .rst-current-version{width:auto;height:30px;line-height:30px;padding:0 6px;display:block;text-align:center}@media screen and (max-width: 768px){.rst-versions{width:85%;display:none}.rst-versions.shift{display:block}} diff --git a/nsx/nsx_policy/_static/css/theme.css b/nsx/nsx_policy/_static/css/theme.css new file mode 100644 index 00000000..d85a101f --- /dev/null +++ b/nsx/nsx_policy/_static/css/theme.css @@ -0,0 +1,4 @@ +*{-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}article,aside,details,figcaption,figure,footer,header,hgroup,nav,section{display:block}audio,canvas,video{display:inline-block;*display:inline;*zoom:1}audio:not([controls]){display:none}[hidden]{display:none}*{-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}html{font-size:100%;-webkit-text-size-adjust:100%;-ms-text-size-adjust:100%}body{margin:0}a:hover,a:active{outline:0}abbr[title]{border-bottom:1px dotted}b,strong{font-weight:bold}blockquote{margin:0}dfn{font-style:italic}ins{background:#ff9;color:#000;text-decoration:none}mark{background:#ff0;color:#000;font-style:italic;font-weight:bold}pre,code,.rst-content tt,.rst-content code,kbd,samp{font-family:monospace,serif;_font-family:"courier new",monospace;font-size:1em}pre{white-space:pre}q{quotes:none}q:before,q:after{content:"";content:none}small{font-size:85%}sub,sup{font-size:75%;line-height:0;position:relative;vertical-align:baseline}sup{top:-0.5em}sub{bottom:-0.25em}ul,ol,dl{margin:0;padding:0;list-style:none;list-style-image:none}li{list-style:none}dd{margin:0}img{border:0;-ms-interpolation-mode:bicubic;vertical-align:middle;max-width:100%}svg:not(:root){overflow:hidden}figure{margin:0}form{margin:0}fieldset{border:0;margin:0;padding:0}label{cursor:pointer}legend{border:0;*margin-left:-7px;padding:0;white-space:normal}button,input,select,textarea{font-size:100%;margin:0;vertical-align:baseline;*vertical-align:middle}button,input{line-height:normal}button,input[type="button"],input[type="reset"],input[type="submit"]{cursor:pointer;-webkit-appearance:button;*overflow:visible}button[disabled],input[disabled]{cursor:default}input[type="checkbox"],input[type="radio"]{box-sizing:border-box;padding:0;*width:13px;*height:13px}input[type="search"]{-webkit-appearance:textfield;-moz-box-sizing:content-box;-webkit-box-sizing:content-box;box-sizing:content-box}input[type="search"]::-webkit-search-decoration,input[type="search"]::-webkit-search-cancel-button{-webkit-appearance:none}button::-moz-focus-inner,input::-moz-focus-inner{border:0;padding:0}textarea{overflow:auto;vertical-align:top;resize:vertical}table{border-collapse:collapse;border-spacing:0}td{vertical-align:top}.chromeframe{margin:.2em 0;background:#ccc;color:#000;padding:.2em 0}.ir{display:block;border:0;text-indent:-999em;overflow:hidden;background-color:transparent;background-repeat:no-repeat;text-align:left;direction:ltr;*line-height:0}.ir br{display:none}.hidden{display:none !important;visibility:hidden}.visuallyhidden{border:0;clip:rect(0 0 0 0);height:1px;margin:-1px;overflow:hidden;padding:0;position:absolute;width:1px}.visuallyhidden.focusable:active,.visuallyhidden.focusable:focus{clip:auto;height:auto;margin:0;overflow:visible;position:static;width:auto}.invisible{visibility:hidden}.relative{position:relative}big,small{font-size:100%}@media print{html,body,section{background:none !important}*{box-shadow:none !important;text-shadow:none !important;filter:none !important;-ms-filter:none !important}a,a:visited{text-decoration:underline}.ir a:after,a[href^="javascript:"]:after,a[href^="#"]:after{content:""}pre,blockquote{page-break-inside:avoid}thead{display:table-header-group}tr,img{page-break-inside:avoid}img{max-width:100% !important}@page{margin:.5cm}p,h2,.rst-content .toctree-wrapper p.caption,h3{orphans:3;widows:3}h2,.rst-content .toctree-wrapper p.caption,h3{page-break-after:avoid}}.fa:before,.wy-menu-vertical li span.toctree-expand:before,.wy-menu-vertical li.on a span.toctree-expand:before,.wy-menu-vertical li.current>a span.toctree-expand:before,.rst-content .admonition-title:before,.rst-content h1 .headerlink:before,.rst-content h2 .headerlink:before,.rst-content h3 .headerlink:before,.rst-content h4 .headerlink:before,.rst-content h5 .headerlink:before,.rst-content h6 .headerlink:before,.rst-content dl dt .headerlink:before,.rst-content p.caption .headerlink:before,.rst-content table>caption .headerlink:before,.rst-content tt.download span:first-child:before,.rst-content code.download span:first-child:before,.icon:before,.wy-dropdown .caret:before,.wy-inline-validate.wy-inline-validate-success .wy-input-context:before,.wy-inline-validate.wy-inline-validate-danger .wy-input-context:before,.wy-inline-validate.wy-inline-validate-warning .wy-input-context:before,.wy-inline-validate.wy-inline-validate-info .wy-input-context:before,.wy-alert,.rst-content .note,.rst-content .attention,.rst-content .caution,.rst-content .danger,.rst-content .error,.rst-content .hint,.rst-content .important,.rst-content .tip,.rst-content .warning,.rst-content .seealso,.rst-content .admonition-todo,.rst-content .admonition,.btn,input[type="text"],input[type="password"],input[type="email"],input[type="url"],input[type="date"],input[type="month"],input[type="time"],input[type="datetime"],input[type="datetime-local"],input[type="week"],input[type="number"],input[type="search"],input[type="tel"],input[type="color"],select,textarea,.wy-menu-vertical li.on a,.wy-menu-vertical li.current>a,.wy-side-nav-search>a,.wy-side-nav-search .wy-dropdown>a,.wy-nav-top a{-webkit-font-smoothing:antialiased}.clearfix{*zoom:1}.clearfix:before,.clearfix:after{display:table;content:""}.clearfix:after{clear:both}/*! + * Font Awesome 4.7.0 by @davegandy - http://fontawesome.io - @fontawesome + * License - http://fontawesome.io/license (Font: SIL OFL 1.1, CSS: MIT License) + */@font-face{font-family:'FontAwesome';src:url("../fonts/fontawesome-webfont.eot?v=4.7.0");src:url("../fonts/fontawesome-webfont.eot?#iefix&v=4.7.0") format("embedded-opentype"),url("../fonts/fontawesome-webfont.woff2?v=4.7.0") format("woff2"),url("../fonts/fontawesome-webfont.woff?v=4.7.0") format("woff"),url("../fonts/fontawesome-webfont.ttf?v=4.7.0") format("truetype"),url("../fonts/fontawesome-webfont.svg?v=4.7.0#fontawesomeregular") format("svg");font-weight:normal;font-style:normal}.fa,.wy-menu-vertical li span.toctree-expand,.wy-menu-vertical li.on a span.toctree-expand,.wy-menu-vertical li.current>a span.toctree-expand,.rst-content .admonition-title,.rst-content h1 .headerlink,.rst-content h2 .headerlink,.rst-content h3 .headerlink,.rst-content h4 .headerlink,.rst-content h5 .headerlink,.rst-content h6 .headerlink,.rst-content dl dt .headerlink,.rst-content p.caption .headerlink,.rst-content table>caption .headerlink,.rst-content tt.download span:first-child,.rst-content code.download span:first-child,.icon{display:inline-block;font:normal normal normal 14px/1 FontAwesome;font-size:inherit;text-rendering:auto;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}.fa-lg{font-size:1.3333333333em;line-height:.75em;vertical-align:-15%}.fa-2x{font-size:2em}.fa-3x{font-size:3em}.fa-4x{font-size:4em}.fa-5x{font-size:5em}.fa-fw{width:1.2857142857em;text-align:center}.fa-ul{padding-left:0;margin-left:2.1428571429em;list-style-type:none}.fa-ul>li{position:relative}.fa-li{position:absolute;left:-2.1428571429em;width:2.1428571429em;top:.1428571429em;text-align:center}.fa-li.fa-lg{left:-1.8571428571em}.fa-border{padding:.2em .25em .15em;border:solid 0.08em #eee;border-radius:.1em}.fa-pull-left{float:left}.fa-pull-right{float:right}.fa.fa-pull-left,.wy-menu-vertical li span.fa-pull-left.toctree-expand,.wy-menu-vertical li.on a span.fa-pull-left.toctree-expand,.wy-menu-vertical li.current>a span.fa-pull-left.toctree-expand,.rst-content .fa-pull-left.admonition-title,.rst-content h1 .fa-pull-left.headerlink,.rst-content h2 .fa-pull-left.headerlink,.rst-content h3 .fa-pull-left.headerlink,.rst-content h4 .fa-pull-left.headerlink,.rst-content h5 .fa-pull-left.headerlink,.rst-content h6 .fa-pull-left.headerlink,.rst-content dl dt .fa-pull-left.headerlink,.rst-content p.caption .fa-pull-left.headerlink,.rst-content table>caption .fa-pull-left.headerlink,.rst-content tt.download span.fa-pull-left:first-child,.rst-content code.download span.fa-pull-left:first-child,.fa-pull-left.icon{margin-right:.3em}.fa.fa-pull-right,.wy-menu-vertical li span.fa-pull-right.toctree-expand,.wy-menu-vertical li.on a span.fa-pull-right.toctree-expand,.wy-menu-vertical li.current>a span.fa-pull-right.toctree-expand,.rst-content .fa-pull-right.admonition-title,.rst-content h1 .fa-pull-right.headerlink,.rst-content h2 .fa-pull-right.headerlink,.rst-content h3 .fa-pull-right.headerlink,.rst-content h4 .fa-pull-right.headerlink,.rst-content h5 .fa-pull-right.headerlink,.rst-content h6 .fa-pull-right.headerlink,.rst-content dl dt .fa-pull-right.headerlink,.rst-content p.caption .fa-pull-right.headerlink,.rst-content table>caption .fa-pull-right.headerlink,.rst-content tt.download span.fa-pull-right:first-child,.rst-content code.download span.fa-pull-right:first-child,.fa-pull-right.icon{margin-left:.3em}.pull-right{float:right}.pull-left{float:left}.fa.pull-left,.wy-menu-vertical li span.pull-left.toctree-expand,.wy-menu-vertical li.on a span.pull-left.toctree-expand,.wy-menu-vertical li.current>a span.pull-left.toctree-expand,.rst-content .pull-left.admonition-title,.rst-content h1 .pull-left.headerlink,.rst-content h2 .pull-left.headerlink,.rst-content h3 .pull-left.headerlink,.rst-content h4 .pull-left.headerlink,.rst-content h5 .pull-left.headerlink,.rst-content h6 .pull-left.headerlink,.rst-content dl dt .pull-left.headerlink,.rst-content p.caption .pull-left.headerlink,.rst-content table>caption .pull-left.headerlink,.rst-content tt.download span.pull-left:first-child,.rst-content code.download span.pull-left:first-child,.pull-left.icon{margin-right:.3em}.fa.pull-right,.wy-menu-vertical li span.pull-right.toctree-expand,.wy-menu-vertical li.on a span.pull-right.toctree-expand,.wy-menu-vertical li.current>a span.pull-right.toctree-expand,.rst-content .pull-right.admonition-title,.rst-content h1 .pull-right.headerlink,.rst-content h2 .pull-right.headerlink,.rst-content h3 .pull-right.headerlink,.rst-content h4 .pull-right.headerlink,.rst-content h5 .pull-right.headerlink,.rst-content h6 .pull-right.headerlink,.rst-content dl dt .pull-right.headerlink,.rst-content p.caption .pull-right.headerlink,.rst-content table>caption .pull-right.headerlink,.rst-content tt.download span.pull-right:first-child,.rst-content code.download span.pull-right:first-child,.pull-right.icon{margin-left:.3em}.fa-spin{-webkit-animation:fa-spin 2s infinite linear;animation:fa-spin 2s infinite linear}.fa-pulse{-webkit-animation:fa-spin 1s infinite steps(8);animation:fa-spin 1s infinite steps(8)}@-webkit-keyframes fa-spin{0%{-webkit-transform:rotate(0deg);transform:rotate(0deg)}100%{-webkit-transform:rotate(359deg);transform:rotate(359deg)}}@keyframes fa-spin{0%{-webkit-transform:rotate(0deg);transform:rotate(0deg)}100%{-webkit-transform:rotate(359deg);transform:rotate(359deg)}}.fa-rotate-90{-ms-filter:"progid:DXImageTransform.Microsoft.BasicImage(rotation=1)";-webkit-transform:rotate(90deg);-ms-transform:rotate(90deg);transform:rotate(90deg)}.fa-rotate-180{-ms-filter:"progid:DXImageTransform.Microsoft.BasicImage(rotation=2)";-webkit-transform:rotate(180deg);-ms-transform:rotate(180deg);transform:rotate(180deg)}.fa-rotate-270{-ms-filter:"progid:DXImageTransform.Microsoft.BasicImage(rotation=3)";-webkit-transform:rotate(270deg);-ms-transform:rotate(270deg);transform:rotate(270deg)}.fa-flip-horizontal{-ms-filter:"progid:DXImageTransform.Microsoft.BasicImage(rotation=0, mirror=1)";-webkit-transform:scale(-1, 1);-ms-transform:scale(-1, 1);transform:scale(-1, 1)}.fa-flip-vertical{-ms-filter:"progid:DXImageTransform.Microsoft.BasicImage(rotation=2, mirror=1)";-webkit-transform:scale(1, -1);-ms-transform:scale(1, -1);transform:scale(1, -1)}:root .fa-rotate-90,:root .fa-rotate-180,:root .fa-rotate-270,:root .fa-flip-horizontal,:root .fa-flip-vertical{filter:none}.fa-stack{position:relative;display:inline-block;width:2em;height:2em;line-height:2em;vertical-align:middle}.fa-stack-1x,.fa-stack-2x{position:absolute;left:0;width:100%;text-align:center}.fa-stack-1x{line-height:inherit}.fa-stack-2x{font-size:2em}.fa-inverse{color:#fff}.fa-glass:before{content:""}.fa-music:before{content:""}.fa-search:before,.icon-search:before{content:""}.fa-envelope-o:before{content:""}.fa-heart:before{content:""}.fa-star:before{content:""}.fa-star-o:before{content:""}.fa-user:before{content:""}.fa-film:before{content:""}.fa-th-large:before{content:""}.fa-th:before{content:""}.fa-th-list:before{content:""}.fa-check:before{content:""}.fa-remove:before,.fa-close:before,.fa-times:before{content:""}.fa-search-plus:before{content:""}.fa-search-minus:before{content:""}.fa-power-off:before{content:""}.fa-signal:before{content:""}.fa-gear:before,.fa-cog:before{content:""}.fa-trash-o:before{content:""}.fa-home:before,.icon-home:before{content:""}.fa-file-o:before{content:""}.fa-clock-o:before{content:""}.fa-road:before{content:""}.fa-download:before,.rst-content tt.download span:first-child:before,.rst-content code.download span:first-child:before{content:""}.fa-arrow-circle-o-down:before{content:""}.fa-arrow-circle-o-up:before{content:""}.fa-inbox:before{content:""}.fa-play-circle-o:before{content:""}.fa-rotate-right:before,.fa-repeat:before{content:""}.fa-refresh:before{content:""}.fa-list-alt:before{content:""}.fa-lock:before{content:""}.fa-flag:before{content:""}.fa-headphones:before{content:""}.fa-volume-off:before{content:""}.fa-volume-down:before{content:""}.fa-volume-up:before{content:""}.fa-qrcode:before{content:""}.fa-barcode:before{content:""}.fa-tag:before{content:""}.fa-tags:before{content:""}.fa-book:before,.icon-book:before{content:""}.fa-bookmark:before{content:""}.fa-print:before{content:""}.fa-camera:before{content:""}.fa-font:before{content:""}.fa-bold:before{content:""}.fa-italic:before{content:""}.fa-text-height:before{content:""}.fa-text-width:before{content:""}.fa-align-left:before{content:""}.fa-align-center:before{content:""}.fa-align-right:before{content:""}.fa-align-justify:before{content:""}.fa-list:before{content:""}.fa-dedent:before,.fa-outdent:before{content:""}.fa-indent:before{content:""}.fa-video-camera:before{content:""}.fa-photo:before,.fa-image:before,.fa-picture-o:before{content:""}.fa-pencil:before{content:""}.fa-map-marker:before{content:""}.fa-adjust:before{content:""}.fa-tint:before{content:""}.fa-edit:before,.fa-pencil-square-o:before{content:""}.fa-share-square-o:before{content:""}.fa-check-square-o:before{content:""}.fa-arrows:before{content:""}.fa-step-backward:before{content:""}.fa-fast-backward:before{content:""}.fa-backward:before{content:""}.fa-play:before{content:""}.fa-pause:before{content:""}.fa-stop:before{content:""}.fa-forward:before{content:""}.fa-fast-forward:before{content:""}.fa-step-forward:before{content:""}.fa-eject:before{content:""}.fa-chevron-left:before{content:""}.fa-chevron-right:before{content:""}.fa-plus-circle:before{content:""}.fa-minus-circle:before{content:""}.fa-times-circle:before,.wy-inline-validate.wy-inline-validate-danger .wy-input-context:before{content:""}.fa-check-circle:before,.wy-inline-validate.wy-inline-validate-success .wy-input-context:before{content:""}.fa-question-circle:before{content:""}.fa-info-circle:before{content:""}.fa-crosshairs:before{content:""}.fa-times-circle-o:before{content:""}.fa-check-circle-o:before{content:""}.fa-ban:before{content:""}.fa-arrow-left:before{content:""}.fa-arrow-right:before{content:""}.fa-arrow-up:before{content:""}.fa-arrow-down:before{content:""}.fa-mail-forward:before,.fa-share:before{content:""}.fa-expand:before{content:""}.fa-compress:before{content:""}.fa-plus:before{content:""}.fa-minus:before{content:""}.fa-asterisk:before{content:""}.fa-exclamation-circle:before,.wy-inline-validate.wy-inline-validate-warning .wy-input-context:before,.wy-inline-validate.wy-inline-validate-info .wy-input-context:before,.rst-content .admonition-title:before{content:""}.fa-gift:before{content:""}.fa-leaf:before{content:""}.fa-fire:before,.icon-fire:before{content:""}.fa-eye:before{content:""}.fa-eye-slash:before{content:""}.fa-warning:before,.fa-exclamation-triangle:before{content:""}.fa-plane:before{content:""}.fa-calendar:before{content:""}.fa-random:before{content:""}.fa-comment:before{content:""}.fa-magnet:before{content:""}.fa-chevron-up:before{content:""}.fa-chevron-down:before{content:""}.fa-retweet:before{content:""}.fa-shopping-cart:before{content:""}.fa-folder:before{content:""}.fa-folder-open:before{content:""}.fa-arrows-v:before{content:""}.fa-arrows-h:before{content:""}.fa-bar-chart-o:before,.fa-bar-chart:before{content:""}.fa-twitter-square:before{content:""}.fa-facebook-square:before{content:""}.fa-camera-retro:before{content:""}.fa-key:before{content:""}.fa-gears:before,.fa-cogs:before{content:""}.fa-comments:before{content:""}.fa-thumbs-o-up:before{content:""}.fa-thumbs-o-down:before{content:""}.fa-star-half:before{content:""}.fa-heart-o:before{content:""}.fa-sign-out:before{content:""}.fa-linkedin-square:before{content:""}.fa-thumb-tack:before{content:""}.fa-external-link:before{content:""}.fa-sign-in:before{content:""}.fa-trophy:before{content:""}.fa-github-square:before{content:""}.fa-upload:before{content:""}.fa-lemon-o:before{content:""}.fa-phone:before{content:""}.fa-square-o:before{content:""}.fa-bookmark-o:before{content:""}.fa-phone-square:before{content:""}.fa-twitter:before{content:""}.fa-facebook-f:before,.fa-facebook:before{content:""}.fa-github:before,.icon-github:before{content:""}.fa-unlock:before{content:""}.fa-credit-card:before{content:""}.fa-feed:before,.fa-rss:before{content:""}.fa-hdd-o:before{content:""}.fa-bullhorn:before{content:""}.fa-bell:before{content:""}.fa-certificate:before{content:""}.fa-hand-o-right:before{content:""}.fa-hand-o-left:before{content:""}.fa-hand-o-up:before{content:""}.fa-hand-o-down:before{content:""}.fa-arrow-circle-left:before,.icon-circle-arrow-left:before{content:""}.fa-arrow-circle-right:before,.icon-circle-arrow-right:before{content:""}.fa-arrow-circle-up:before{content:""}.fa-arrow-circle-down:before{content:""}.fa-globe:before{content:""}.fa-wrench:before{content:""}.fa-tasks:before{content:""}.fa-filter:before{content:""}.fa-briefcase:before{content:""}.fa-arrows-alt:before{content:""}.fa-group:before,.fa-users:before{content:""}.fa-chain:before,.fa-link:before,.icon-link:before{content:""}.fa-cloud:before{content:""}.fa-flask:before{content:""}.fa-cut:before,.fa-scissors:before{content:""}.fa-copy:before,.fa-files-o:before{content:""}.fa-paperclip:before{content:""}.fa-save:before,.fa-floppy-o:before{content:""}.fa-square:before{content:""}.fa-navicon:before,.fa-reorder:before,.fa-bars:before{content:""}.fa-list-ul:before{content:""}.fa-list-ol:before{content:""}.fa-strikethrough:before{content:""}.fa-underline:before{content:""}.fa-table:before{content:""}.fa-magic:before{content:""}.fa-truck:before{content:""}.fa-pinterest:before{content:""}.fa-pinterest-square:before{content:""}.fa-google-plus-square:before{content:""}.fa-google-plus:before{content:""}.fa-money:before{content:""}.fa-caret-down:before,.wy-dropdown .caret:before,.icon-caret-down:before{content:""}.fa-caret-up:before{content:""}.fa-caret-left:before{content:""}.fa-caret-right:before{content:""}.fa-columns:before{content:""}.fa-unsorted:before,.fa-sort:before{content:""}.fa-sort-down:before,.fa-sort-desc:before{content:""}.fa-sort-up:before,.fa-sort-asc:before{content:""}.fa-envelope:before{content:""}.fa-linkedin:before{content:""}.fa-rotate-left:before,.fa-undo:before{content:""}.fa-legal:before,.fa-gavel:before{content:""}.fa-dashboard:before,.fa-tachometer:before{content:""}.fa-comment-o:before{content:""}.fa-comments-o:before{content:""}.fa-flash:before,.fa-bolt:before{content:""}.fa-sitemap:before{content:""}.fa-umbrella:before{content:""}.fa-paste:before,.fa-clipboard:before{content:""}.fa-lightbulb-o:before{content:""}.fa-exchange:before{content:""}.fa-cloud-download:before{content:""}.fa-cloud-upload:before{content:""}.fa-user-md:before{content:""}.fa-stethoscope:before{content:""}.fa-suitcase:before{content:""}.fa-bell-o:before{content:""}.fa-coffee:before{content:""}.fa-cutlery:before{content:""}.fa-file-text-o:before{content:""}.fa-building-o:before{content:""}.fa-hospital-o:before{content:""}.fa-ambulance:before{content:""}.fa-medkit:before{content:""}.fa-fighter-jet:before{content:""}.fa-beer:before{content:""}.fa-h-square:before{content:""}.fa-plus-square:before{content:""}.fa-angle-double-left:before{content:""}.fa-angle-double-right:before{content:""}.fa-angle-double-up:before{content:""}.fa-angle-double-down:before{content:""}.fa-angle-left:before{content:""}.fa-angle-right:before{content:""}.fa-angle-up:before{content:""}.fa-angle-down:before{content:""}.fa-desktop:before{content:""}.fa-laptop:before{content:""}.fa-tablet:before{content:""}.fa-mobile-phone:before,.fa-mobile:before{content:""}.fa-circle-o:before{content:""}.fa-quote-left:before{content:""}.fa-quote-right:before{content:""}.fa-spinner:before{content:""}.fa-circle:before{content:""}.fa-mail-reply:before,.fa-reply:before{content:""}.fa-github-alt:before{content:""}.fa-folder-o:before{content:""}.fa-folder-open-o:before{content:""}.fa-smile-o:before{content:""}.fa-frown-o:before{content:""}.fa-meh-o:before{content:""}.fa-gamepad:before{content:""}.fa-keyboard-o:before{content:""}.fa-flag-o:before{content:""}.fa-flag-checkered:before{content:""}.fa-terminal:before{content:""}.fa-code:before{content:""}.fa-mail-reply-all:before,.fa-reply-all:before{content:""}.fa-star-half-empty:before,.fa-star-half-full:before,.fa-star-half-o:before{content:""}.fa-location-arrow:before{content:""}.fa-crop:before{content:""}.fa-code-fork:before{content:""}.fa-unlink:before,.fa-chain-broken:before{content:""}.fa-question:before{content:""}.fa-info:before{content:""}.fa-exclamation:before{content:""}.fa-superscript:before{content:""}.fa-subscript:before{content:""}.fa-eraser:before{content:""}.fa-puzzle-piece:before{content:""}.fa-microphone:before{content:""}.fa-microphone-slash:before{content:""}.fa-shield:before{content:""}.fa-calendar-o:before{content:""}.fa-fire-extinguisher:before{content:""}.fa-rocket:before{content:""}.fa-maxcdn:before{content:""}.fa-chevron-circle-left:before{content:""}.fa-chevron-circle-right:before{content:""}.fa-chevron-circle-up:before{content:""}.fa-chevron-circle-down:before{content:""}.fa-html5:before{content:""}.fa-css3:before{content:""}.fa-anchor:before{content:""}.fa-unlock-alt:before{content:""}.fa-bullseye:before{content:""}.fa-ellipsis-h:before{content:""}.fa-ellipsis-v:before{content:""}.fa-rss-square:before{content:""}.fa-play-circle:before{content:""}.fa-ticket:before{content:""}.fa-minus-square:before{content:""}.fa-minus-square-o:before,.wy-menu-vertical li.on a span.toctree-expand:before,.wy-menu-vertical li.current>a span.toctree-expand:before{content:""}.fa-level-up:before{content:""}.fa-level-down:before{content:""}.fa-check-square:before{content:""}.fa-pencil-square:before{content:""}.fa-external-link-square:before{content:""}.fa-share-square:before{content:""}.fa-compass:before{content:""}.fa-toggle-down:before,.fa-caret-square-o-down:before{content:""}.fa-toggle-up:before,.fa-caret-square-o-up:before{content:""}.fa-toggle-right:before,.fa-caret-square-o-right:before{content:""}.fa-euro:before,.fa-eur:before{content:""}.fa-gbp:before{content:""}.fa-dollar:before,.fa-usd:before{content:""}.fa-rupee:before,.fa-inr:before{content:""}.fa-cny:before,.fa-rmb:before,.fa-yen:before,.fa-jpy:before{content:""}.fa-ruble:before,.fa-rouble:before,.fa-rub:before{content:""}.fa-won:before,.fa-krw:before{content:""}.fa-bitcoin:before,.fa-btc:before{content:""}.fa-file:before{content:""}.fa-file-text:before{content:""}.fa-sort-alpha-asc:before{content:""}.fa-sort-alpha-desc:before{content:""}.fa-sort-amount-asc:before{content:""}.fa-sort-amount-desc:before{content:""}.fa-sort-numeric-asc:before{content:""}.fa-sort-numeric-desc:before{content:""}.fa-thumbs-up:before{content:""}.fa-thumbs-down:before{content:""}.fa-youtube-square:before{content:""}.fa-youtube:before{content:""}.fa-xing:before{content:""}.fa-xing-square:before{content:""}.fa-youtube-play:before{content:""}.fa-dropbox:before{content:""}.fa-stack-overflow:before{content:""}.fa-instagram:before{content:""}.fa-flickr:before{content:""}.fa-adn:before{content:""}.fa-bitbucket:before,.icon-bitbucket:before{content:""}.fa-bitbucket-square:before{content:""}.fa-tumblr:before{content:""}.fa-tumblr-square:before{content:""}.fa-long-arrow-down:before{content:""}.fa-long-arrow-up:before{content:""}.fa-long-arrow-left:before{content:""}.fa-long-arrow-right:before{content:""}.fa-apple:before{content:""}.fa-windows:before{content:""}.fa-android:before{content:""}.fa-linux:before{content:""}.fa-dribbble:before{content:""}.fa-skype:before{content:""}.fa-foursquare:before{content:""}.fa-trello:before{content:""}.fa-female:before{content:""}.fa-male:before{content:""}.fa-gittip:before,.fa-gratipay:before{content:""}.fa-sun-o:before{content:""}.fa-moon-o:before{content:""}.fa-archive:before{content:""}.fa-bug:before{content:""}.fa-vk:before{content:""}.fa-weibo:before{content:""}.fa-renren:before{content:""}.fa-pagelines:before{content:""}.fa-stack-exchange:before{content:""}.fa-arrow-circle-o-right:before{content:""}.fa-arrow-circle-o-left:before{content:""}.fa-toggle-left:before,.fa-caret-square-o-left:before{content:""}.fa-dot-circle-o:before{content:""}.fa-wheelchair:before{content:""}.fa-vimeo-square:before{content:""}.fa-turkish-lira:before,.fa-try:before{content:""}.fa-plus-square-o:before,.wy-menu-vertical li span.toctree-expand:before{content:""}.fa-space-shuttle:before{content:""}.fa-slack:before{content:""}.fa-envelope-square:before{content:""}.fa-wordpress:before{content:""}.fa-openid:before{content:""}.fa-institution:before,.fa-bank:before,.fa-university:before{content:""}.fa-mortar-board:before,.fa-graduation-cap:before{content:""}.fa-yahoo:before{content:""}.fa-google:before{content:""}.fa-reddit:before{content:""}.fa-reddit-square:before{content:""}.fa-stumbleupon-circle:before{content:""}.fa-stumbleupon:before{content:""}.fa-delicious:before{content:""}.fa-digg:before{content:""}.fa-pied-piper-pp:before{content:""}.fa-pied-piper-alt:before{content:""}.fa-drupal:before{content:""}.fa-joomla:before{content:""}.fa-language:before{content:""}.fa-fax:before{content:""}.fa-building:before{content:""}.fa-child:before{content:""}.fa-paw:before{content:""}.fa-spoon:before{content:""}.fa-cube:before{content:""}.fa-cubes:before{content:""}.fa-behance:before{content:""}.fa-behance-square:before{content:""}.fa-steam:before{content:""}.fa-steam-square:before{content:""}.fa-recycle:before{content:""}.fa-automobile:before,.fa-car:before{content:""}.fa-cab:before,.fa-taxi:before{content:""}.fa-tree:before{content:""}.fa-spotify:before{content:""}.fa-deviantart:before{content:""}.fa-soundcloud:before{content:""}.fa-database:before{content:""}.fa-file-pdf-o:before{content:""}.fa-file-word-o:before{content:""}.fa-file-excel-o:before{content:""}.fa-file-powerpoint-o:before{content:""}.fa-file-photo-o:before,.fa-file-picture-o:before,.fa-file-image-o:before{content:""}.fa-file-zip-o:before,.fa-file-archive-o:before{content:""}.fa-file-sound-o:before,.fa-file-audio-o:before{content:""}.fa-file-movie-o:before,.fa-file-video-o:before{content:""}.fa-file-code-o:before{content:""}.fa-vine:before{content:""}.fa-codepen:before{content:""}.fa-jsfiddle:before{content:""}.fa-life-bouy:before,.fa-life-buoy:before,.fa-life-saver:before,.fa-support:before,.fa-life-ring:before{content:""}.fa-circle-o-notch:before{content:""}.fa-ra:before,.fa-resistance:before,.fa-rebel:before{content:""}.fa-ge:before,.fa-empire:before{content:""}.fa-git-square:before{content:""}.fa-git:before{content:""}.fa-y-combinator-square:before,.fa-yc-square:before,.fa-hacker-news:before{content:""}.fa-tencent-weibo:before{content:""}.fa-qq:before{content:""}.fa-wechat:before,.fa-weixin:before{content:""}.fa-send:before,.fa-paper-plane:before{content:""}.fa-send-o:before,.fa-paper-plane-o:before{content:""}.fa-history:before{content:""}.fa-circle-thin:before{content:""}.fa-header:before{content:""}.fa-paragraph:before{content:""}.fa-sliders:before{content:""}.fa-share-alt:before{content:""}.fa-share-alt-square:before{content:""}.fa-bomb:before{content:""}.fa-soccer-ball-o:before,.fa-futbol-o:before{content:""}.fa-tty:before{content:""}.fa-binoculars:before{content:""}.fa-plug:before{content:""}.fa-slideshare:before{content:""}.fa-twitch:before{content:""}.fa-yelp:before{content:""}.fa-newspaper-o:before{content:""}.fa-wifi:before{content:""}.fa-calculator:before{content:""}.fa-paypal:before{content:""}.fa-google-wallet:before{content:""}.fa-cc-visa:before{content:""}.fa-cc-mastercard:before{content:""}.fa-cc-discover:before{content:""}.fa-cc-amex:before{content:""}.fa-cc-paypal:before{content:""}.fa-cc-stripe:before{content:""}.fa-bell-slash:before{content:""}.fa-bell-slash-o:before{content:""}.fa-trash:before{content:""}.fa-copyright:before{content:""}.fa-at:before{content:""}.fa-eyedropper:before{content:""}.fa-paint-brush:before{content:""}.fa-birthday-cake:before{content:""}.fa-area-chart:before{content:""}.fa-pie-chart:before{content:""}.fa-line-chart:before{content:""}.fa-lastfm:before{content:""}.fa-lastfm-square:before{content:""}.fa-toggle-off:before{content:""}.fa-toggle-on:before{content:""}.fa-bicycle:before{content:""}.fa-bus:before{content:""}.fa-ioxhost:before{content:""}.fa-angellist:before{content:""}.fa-cc:before{content:""}.fa-shekel:before,.fa-sheqel:before,.fa-ils:before{content:""}.fa-meanpath:before{content:""}.fa-buysellads:before{content:""}.fa-connectdevelop:before{content:""}.fa-dashcube:before{content:""}.fa-forumbee:before{content:""}.fa-leanpub:before{content:""}.fa-sellsy:before{content:""}.fa-shirtsinbulk:before{content:""}.fa-simplybuilt:before{content:""}.fa-skyatlas:before{content:""}.fa-cart-plus:before{content:""}.fa-cart-arrow-down:before{content:""}.fa-diamond:before{content:""}.fa-ship:before{content:""}.fa-user-secret:before{content:""}.fa-motorcycle:before{content:""}.fa-street-view:before{content:""}.fa-heartbeat:before{content:""}.fa-venus:before{content:""}.fa-mars:before{content:""}.fa-mercury:before{content:""}.fa-intersex:before,.fa-transgender:before{content:""}.fa-transgender-alt:before{content:""}.fa-venus-double:before{content:""}.fa-mars-double:before{content:""}.fa-venus-mars:before{content:""}.fa-mars-stroke:before{content:""}.fa-mars-stroke-v:before{content:""}.fa-mars-stroke-h:before{content:""}.fa-neuter:before{content:""}.fa-genderless:before{content:""}.fa-facebook-official:before{content:""}.fa-pinterest-p:before{content:""}.fa-whatsapp:before{content:""}.fa-server:before{content:""}.fa-user-plus:before{content:""}.fa-user-times:before{content:""}.fa-hotel:before,.fa-bed:before{content:""}.fa-viacoin:before{content:""}.fa-train:before{content:""}.fa-subway:before{content:""}.fa-medium:before{content:""}.fa-yc:before,.fa-y-combinator:before{content:""}.fa-optin-monster:before{content:""}.fa-opencart:before{content:""}.fa-expeditedssl:before{content:""}.fa-battery-4:before,.fa-battery:before,.fa-battery-full:before{content:""}.fa-battery-3:before,.fa-battery-three-quarters:before{content:""}.fa-battery-2:before,.fa-battery-half:before{content:""}.fa-battery-1:before,.fa-battery-quarter:before{content:""}.fa-battery-0:before,.fa-battery-empty:before{content:""}.fa-mouse-pointer:before{content:""}.fa-i-cursor:before{content:""}.fa-object-group:before{content:""}.fa-object-ungroup:before{content:""}.fa-sticky-note:before{content:""}.fa-sticky-note-o:before{content:""}.fa-cc-jcb:before{content:""}.fa-cc-diners-club:before{content:""}.fa-clone:before{content:""}.fa-balance-scale:before{content:""}.fa-hourglass-o:before{content:""}.fa-hourglass-1:before,.fa-hourglass-start:before{content:""}.fa-hourglass-2:before,.fa-hourglass-half:before{content:""}.fa-hourglass-3:before,.fa-hourglass-end:before{content:""}.fa-hourglass:before{content:""}.fa-hand-grab-o:before,.fa-hand-rock-o:before{content:""}.fa-hand-stop-o:before,.fa-hand-paper-o:before{content:""}.fa-hand-scissors-o:before{content:""}.fa-hand-lizard-o:before{content:""}.fa-hand-spock-o:before{content:""}.fa-hand-pointer-o:before{content:""}.fa-hand-peace-o:before{content:""}.fa-trademark:before{content:""}.fa-registered:before{content:""}.fa-creative-commons:before{content:""}.fa-gg:before{content:""}.fa-gg-circle:before{content:""}.fa-tripadvisor:before{content:""}.fa-odnoklassniki:before{content:""}.fa-odnoklassniki-square:before{content:""}.fa-get-pocket:before{content:""}.fa-wikipedia-w:before{content:""}.fa-safari:before{content:""}.fa-chrome:before{content:""}.fa-firefox:before{content:""}.fa-opera:before{content:""}.fa-internet-explorer:before{content:""}.fa-tv:before,.fa-television:before{content:""}.fa-contao:before{content:""}.fa-500px:before{content:""}.fa-amazon:before{content:""}.fa-calendar-plus-o:before{content:""}.fa-calendar-minus-o:before{content:""}.fa-calendar-times-o:before{content:""}.fa-calendar-check-o:before{content:""}.fa-industry:before{content:""}.fa-map-pin:before{content:""}.fa-map-signs:before{content:""}.fa-map-o:before{content:""}.fa-map:before{content:""}.fa-commenting:before{content:""}.fa-commenting-o:before{content:""}.fa-houzz:before{content:""}.fa-vimeo:before{content:""}.fa-black-tie:before{content:""}.fa-fonticons:before{content:""}.fa-reddit-alien:before{content:""}.fa-edge:before{content:""}.fa-credit-card-alt:before{content:""}.fa-codiepie:before{content:""}.fa-modx:before{content:""}.fa-fort-awesome:before{content:""}.fa-usb:before{content:""}.fa-product-hunt:before{content:""}.fa-mixcloud:before{content:""}.fa-scribd:before{content:""}.fa-pause-circle:before{content:""}.fa-pause-circle-o:before{content:""}.fa-stop-circle:before{content:""}.fa-stop-circle-o:before{content:""}.fa-shopping-bag:before{content:""}.fa-shopping-basket:before{content:""}.fa-hashtag:before{content:""}.fa-bluetooth:before{content:""}.fa-bluetooth-b:before{content:""}.fa-percent:before{content:""}.fa-gitlab:before,.icon-gitlab:before{content:""}.fa-wpbeginner:before{content:""}.fa-wpforms:before{content:""}.fa-envira:before{content:""}.fa-universal-access:before{content:""}.fa-wheelchair-alt:before{content:""}.fa-question-circle-o:before{content:""}.fa-blind:before{content:""}.fa-audio-description:before{content:""}.fa-volume-control-phone:before{content:""}.fa-braille:before{content:""}.fa-assistive-listening-systems:before{content:""}.fa-asl-interpreting:before,.fa-american-sign-language-interpreting:before{content:""}.fa-deafness:before,.fa-hard-of-hearing:before,.fa-deaf:before{content:""}.fa-glide:before{content:""}.fa-glide-g:before{content:""}.fa-signing:before,.fa-sign-language:before{content:""}.fa-low-vision:before{content:""}.fa-viadeo:before{content:""}.fa-viadeo-square:before{content:""}.fa-snapchat:before{content:""}.fa-snapchat-ghost:before{content:""}.fa-snapchat-square:before{content:""}.fa-pied-piper:before{content:""}.fa-first-order:before{content:""}.fa-yoast:before{content:""}.fa-themeisle:before{content:""}.fa-google-plus-circle:before,.fa-google-plus-official:before{content:""}.fa-fa:before,.fa-font-awesome:before{content:""}.fa-handshake-o:before{content:""}.fa-envelope-open:before{content:""}.fa-envelope-open-o:before{content:""}.fa-linode:before{content:""}.fa-address-book:before{content:""}.fa-address-book-o:before{content:""}.fa-vcard:before,.fa-address-card:before{content:""}.fa-vcard-o:before,.fa-address-card-o:before{content:""}.fa-user-circle:before{content:""}.fa-user-circle-o:before{content:""}.fa-user-o:before{content:""}.fa-id-badge:before{content:""}.fa-drivers-license:before,.fa-id-card:before{content:""}.fa-drivers-license-o:before,.fa-id-card-o:before{content:""}.fa-quora:before{content:""}.fa-free-code-camp:before{content:""}.fa-telegram:before{content:""}.fa-thermometer-4:before,.fa-thermometer:before,.fa-thermometer-full:before{content:""}.fa-thermometer-3:before,.fa-thermometer-three-quarters:before{content:""}.fa-thermometer-2:before,.fa-thermometer-half:before{content:""}.fa-thermometer-1:before,.fa-thermometer-quarter:before{content:""}.fa-thermometer-0:before,.fa-thermometer-empty:before{content:""}.fa-shower:before{content:""}.fa-bathtub:before,.fa-s15:before,.fa-bath:before{content:""}.fa-podcast:before{content:""}.fa-window-maximize:before{content:""}.fa-window-minimize:before{content:""}.fa-window-restore:before{content:""}.fa-times-rectangle:before,.fa-window-close:before{content:""}.fa-times-rectangle-o:before,.fa-window-close-o:before{content:""}.fa-bandcamp:before{content:""}.fa-grav:before{content:""}.fa-etsy:before{content:""}.fa-imdb:before{content:""}.fa-ravelry:before{content:""}.fa-eercast:before{content:""}.fa-microchip:before{content:""}.fa-snowflake-o:before{content:""}.fa-superpowers:before{content:""}.fa-wpexplorer:before{content:""}.fa-meetup:before{content:""}.sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0, 0, 0, 0);border:0}.sr-only-focusable:active,.sr-only-focusable:focus{position:static;width:auto;height:auto;margin:0;overflow:visible;clip:auto}.fa,.wy-menu-vertical li span.toctree-expand,.wy-menu-vertical li.on a span.toctree-expand,.wy-menu-vertical li.current>a span.toctree-expand,.rst-content .admonition-title,.rst-content h1 .headerlink,.rst-content h2 .headerlink,.rst-content h3 .headerlink,.rst-content h4 .headerlink,.rst-content h5 .headerlink,.rst-content h6 .headerlink,.rst-content dl dt .headerlink,.rst-content p.caption .headerlink,.rst-content table>caption .headerlink,.rst-content tt.download span:first-child,.rst-content code.download span:first-child,.icon,.wy-dropdown .caret,.wy-inline-validate.wy-inline-validate-success .wy-input-context,.wy-inline-validate.wy-inline-validate-danger .wy-input-context,.wy-inline-validate.wy-inline-validate-warning .wy-input-context,.wy-inline-validate.wy-inline-validate-info .wy-input-context{font-family:inherit}.fa:before,.wy-menu-vertical li span.toctree-expand:before,.wy-menu-vertical li.on a span.toctree-expand:before,.wy-menu-vertical li.current>a span.toctree-expand:before,.rst-content .admonition-title:before,.rst-content h1 .headerlink:before,.rst-content h2 .headerlink:before,.rst-content h3 .headerlink:before,.rst-content h4 .headerlink:before,.rst-content h5 .headerlink:before,.rst-content h6 .headerlink:before,.rst-content dl dt .headerlink:before,.rst-content p.caption .headerlink:before,.rst-content table>caption .headerlink:before,.rst-content tt.download span:first-child:before,.rst-content code.download span:first-child:before,.icon:before,.wy-dropdown .caret:before,.wy-inline-validate.wy-inline-validate-success .wy-input-context:before,.wy-inline-validate.wy-inline-validate-danger .wy-input-context:before,.wy-inline-validate.wy-inline-validate-warning .wy-input-context:before,.wy-inline-validate.wy-inline-validate-info .wy-input-context:before{font-family:"FontAwesome";display:inline-block;font-style:normal;font-weight:normal;line-height:1;text-decoration:inherit}a .fa,a .wy-menu-vertical li span.toctree-expand,.wy-menu-vertical li a span.toctree-expand,.wy-menu-vertical li.on a span.toctree-expand,.wy-menu-vertical li.current>a span.toctree-expand,a .rst-content .admonition-title,.rst-content a .admonition-title,a .rst-content h1 .headerlink,.rst-content h1 a .headerlink,a .rst-content h2 .headerlink,.rst-content h2 a .headerlink,a .rst-content h3 .headerlink,.rst-content h3 a .headerlink,a .rst-content h4 .headerlink,.rst-content h4 a .headerlink,a .rst-content h5 .headerlink,.rst-content h5 a .headerlink,a .rst-content h6 .headerlink,.rst-content h6 a .headerlink,a .rst-content dl dt .headerlink,.rst-content dl dt a .headerlink,a .rst-content p.caption .headerlink,.rst-content p.caption a .headerlink,a .rst-content table>caption .headerlink,.rst-content table>caption a .headerlink,a .rst-content tt.download span:first-child,.rst-content tt.download a span:first-child,a .rst-content code.download span:first-child,.rst-content code.download a span:first-child,a .icon{display:inline-block;text-decoration:inherit}.btn .fa,.btn .wy-menu-vertical li span.toctree-expand,.wy-menu-vertical li .btn span.toctree-expand,.btn .wy-menu-vertical li.on a span.toctree-expand,.wy-menu-vertical li.on a .btn span.toctree-expand,.btn .wy-menu-vertical li.current>a span.toctree-expand,.wy-menu-vertical li.current>a .btn span.toctree-expand,.btn .rst-content .admonition-title,.rst-content .btn .admonition-title,.btn .rst-content h1 .headerlink,.rst-content h1 .btn .headerlink,.btn .rst-content h2 .headerlink,.rst-content h2 .btn .headerlink,.btn .rst-content h3 .headerlink,.rst-content h3 .btn .headerlink,.btn .rst-content h4 .headerlink,.rst-content h4 .btn .headerlink,.btn .rst-content h5 .headerlink,.rst-content h5 .btn .headerlink,.btn .rst-content h6 .headerlink,.rst-content h6 .btn .headerlink,.btn .rst-content dl dt .headerlink,.rst-content dl dt .btn .headerlink,.btn .rst-content p.caption .headerlink,.rst-content p.caption .btn .headerlink,.btn .rst-content table>caption .headerlink,.rst-content table>caption .btn .headerlink,.btn .rst-content tt.download span:first-child,.rst-content tt.download .btn span:first-child,.btn .rst-content code.download span:first-child,.rst-content code.download .btn span:first-child,.btn .icon,.nav .fa,.nav .wy-menu-vertical li span.toctree-expand,.wy-menu-vertical li .nav span.toctree-expand,.nav .wy-menu-vertical li.on a span.toctree-expand,.wy-menu-vertical li.on a .nav span.toctree-expand,.nav .wy-menu-vertical li.current>a span.toctree-expand,.wy-menu-vertical li.current>a .nav span.toctree-expand,.nav .rst-content .admonition-title,.rst-content .nav .admonition-title,.nav .rst-content h1 .headerlink,.rst-content h1 .nav .headerlink,.nav .rst-content h2 .headerlink,.rst-content h2 .nav .headerlink,.nav .rst-content h3 .headerlink,.rst-content h3 .nav .headerlink,.nav .rst-content h4 .headerlink,.rst-content h4 .nav .headerlink,.nav .rst-content h5 .headerlink,.rst-content h5 .nav .headerlink,.nav .rst-content h6 .headerlink,.rst-content h6 .nav .headerlink,.nav .rst-content dl dt .headerlink,.rst-content dl dt .nav .headerlink,.nav .rst-content p.caption .headerlink,.rst-content p.caption .nav .headerlink,.nav .rst-content table>caption .headerlink,.rst-content table>caption .nav .headerlink,.nav .rst-content tt.download span:first-child,.rst-content tt.download .nav span:first-child,.nav .rst-content code.download span:first-child,.rst-content code.download .nav span:first-child,.nav .icon{display:inline}.btn .fa.fa-large,.btn .wy-menu-vertical li span.fa-large.toctree-expand,.wy-menu-vertical li .btn span.fa-large.toctree-expand,.btn .rst-content .fa-large.admonition-title,.rst-content .btn .fa-large.admonition-title,.btn .rst-content h1 .fa-large.headerlink,.rst-content h1 .btn .fa-large.headerlink,.btn .rst-content h2 .fa-large.headerlink,.rst-content h2 .btn .fa-large.headerlink,.btn .rst-content h3 .fa-large.headerlink,.rst-content h3 .btn .fa-large.headerlink,.btn .rst-content h4 .fa-large.headerlink,.rst-content h4 .btn .fa-large.headerlink,.btn .rst-content h5 .fa-large.headerlink,.rst-content h5 .btn .fa-large.headerlink,.btn .rst-content h6 .fa-large.headerlink,.rst-content h6 .btn .fa-large.headerlink,.btn .rst-content dl dt .fa-large.headerlink,.rst-content dl dt .btn .fa-large.headerlink,.btn .rst-content p.caption .fa-large.headerlink,.rst-content p.caption .btn .fa-large.headerlink,.btn .rst-content table>caption .fa-large.headerlink,.rst-content table>caption .btn .fa-large.headerlink,.btn .rst-content tt.download span.fa-large:first-child,.rst-content tt.download .btn span.fa-large:first-child,.btn .rst-content code.download span.fa-large:first-child,.rst-content code.download .btn span.fa-large:first-child,.btn .fa-large.icon,.nav .fa.fa-large,.nav .wy-menu-vertical li span.fa-large.toctree-expand,.wy-menu-vertical li .nav span.fa-large.toctree-expand,.nav .rst-content .fa-large.admonition-title,.rst-content .nav .fa-large.admonition-title,.nav .rst-content h1 .fa-large.headerlink,.rst-content h1 .nav .fa-large.headerlink,.nav .rst-content h2 .fa-large.headerlink,.rst-content h2 .nav .fa-large.headerlink,.nav .rst-content h3 .fa-large.headerlink,.rst-content h3 .nav .fa-large.headerlink,.nav .rst-content h4 .fa-large.headerlink,.rst-content h4 .nav .fa-large.headerlink,.nav .rst-content h5 .fa-large.headerlink,.rst-content h5 .nav .fa-large.headerlink,.nav .rst-content h6 .fa-large.headerlink,.rst-content h6 .nav .fa-large.headerlink,.nav .rst-content dl dt .fa-large.headerlink,.rst-content dl dt .nav .fa-large.headerlink,.nav .rst-content p.caption .fa-large.headerlink,.rst-content p.caption .nav .fa-large.headerlink,.nav .rst-content table>caption .fa-large.headerlink,.rst-content table>caption .nav .fa-large.headerlink,.nav .rst-content tt.download span.fa-large:first-child,.rst-content tt.download .nav span.fa-large:first-child,.nav .rst-content code.download span.fa-large:first-child,.rst-content code.download .nav span.fa-large:first-child,.nav .fa-large.icon{line-height:.9em}.btn .fa.fa-spin,.btn .wy-menu-vertical li span.fa-spin.toctree-expand,.wy-menu-vertical li .btn span.fa-spin.toctree-expand,.btn .rst-content .fa-spin.admonition-title,.rst-content .btn .fa-spin.admonition-title,.btn .rst-content h1 .fa-spin.headerlink,.rst-content h1 .btn .fa-spin.headerlink,.btn .rst-content h2 .fa-spin.headerlink,.rst-content h2 .btn .fa-spin.headerlink,.btn .rst-content h3 .fa-spin.headerlink,.rst-content h3 .btn .fa-spin.headerlink,.btn .rst-content h4 .fa-spin.headerlink,.rst-content h4 .btn .fa-spin.headerlink,.btn .rst-content h5 .fa-spin.headerlink,.rst-content h5 .btn .fa-spin.headerlink,.btn .rst-content h6 .fa-spin.headerlink,.rst-content h6 .btn .fa-spin.headerlink,.btn .rst-content dl dt .fa-spin.headerlink,.rst-content dl dt .btn .fa-spin.headerlink,.btn .rst-content p.caption .fa-spin.headerlink,.rst-content p.caption .btn .fa-spin.headerlink,.btn .rst-content table>caption .fa-spin.headerlink,.rst-content table>caption .btn .fa-spin.headerlink,.btn .rst-content tt.download span.fa-spin:first-child,.rst-content tt.download .btn span.fa-spin:first-child,.btn .rst-content code.download span.fa-spin:first-child,.rst-content code.download .btn span.fa-spin:first-child,.btn .fa-spin.icon,.nav .fa.fa-spin,.nav .wy-menu-vertical li span.fa-spin.toctree-expand,.wy-menu-vertical li .nav span.fa-spin.toctree-expand,.nav .rst-content .fa-spin.admonition-title,.rst-content .nav .fa-spin.admonition-title,.nav .rst-content h1 .fa-spin.headerlink,.rst-content h1 .nav .fa-spin.headerlink,.nav .rst-content h2 .fa-spin.headerlink,.rst-content h2 .nav .fa-spin.headerlink,.nav .rst-content h3 .fa-spin.headerlink,.rst-content h3 .nav .fa-spin.headerlink,.nav .rst-content h4 .fa-spin.headerlink,.rst-content h4 .nav .fa-spin.headerlink,.nav .rst-content h5 .fa-spin.headerlink,.rst-content h5 .nav .fa-spin.headerlink,.nav .rst-content h6 .fa-spin.headerlink,.rst-content h6 .nav .fa-spin.headerlink,.nav .rst-content dl dt .fa-spin.headerlink,.rst-content dl dt .nav .fa-spin.headerlink,.nav .rst-content p.caption .fa-spin.headerlink,.rst-content p.caption .nav .fa-spin.headerlink,.nav .rst-content table>caption .fa-spin.headerlink,.rst-content table>caption .nav .fa-spin.headerlink,.nav .rst-content tt.download span.fa-spin:first-child,.rst-content tt.download .nav span.fa-spin:first-child,.nav .rst-content code.download span.fa-spin:first-child,.rst-content code.download .nav span.fa-spin:first-child,.nav .fa-spin.icon{display:inline-block}.btn.fa:before,.wy-menu-vertical li span.btn.toctree-expand:before,.rst-content .btn.admonition-title:before,.rst-content h1 .btn.headerlink:before,.rst-content h2 .btn.headerlink:before,.rst-content h3 .btn.headerlink:before,.rst-content h4 .btn.headerlink:before,.rst-content h5 .btn.headerlink:before,.rst-content h6 .btn.headerlink:before,.rst-content dl dt .btn.headerlink:before,.rst-content p.caption .btn.headerlink:before,.rst-content table>caption .btn.headerlink:before,.rst-content tt.download span.btn:first-child:before,.rst-content code.download span.btn:first-child:before,.btn.icon:before{opacity:.5;-webkit-transition:opacity .05s ease-in;-moz-transition:opacity .05s ease-in;transition:opacity .05s ease-in}.btn.fa:hover:before,.wy-menu-vertical li span.btn.toctree-expand:hover:before,.rst-content .btn.admonition-title:hover:before,.rst-content h1 .btn.headerlink:hover:before,.rst-content h2 .btn.headerlink:hover:before,.rst-content h3 .btn.headerlink:hover:before,.rst-content h4 .btn.headerlink:hover:before,.rst-content h5 .btn.headerlink:hover:before,.rst-content h6 .btn.headerlink:hover:before,.rst-content dl dt .btn.headerlink:hover:before,.rst-content p.caption .btn.headerlink:hover:before,.rst-content table>caption .btn.headerlink:hover:before,.rst-content tt.download span.btn:first-child:hover:before,.rst-content code.download span.btn:first-child:hover:before,.btn.icon:hover:before{opacity:1}.btn-mini .fa:before,.btn-mini .wy-menu-vertical li span.toctree-expand:before,.wy-menu-vertical li .btn-mini span.toctree-expand:before,.btn-mini .rst-content .admonition-title:before,.rst-content .btn-mini .admonition-title:before,.btn-mini .rst-content h1 .headerlink:before,.rst-content h1 .btn-mini .headerlink:before,.btn-mini .rst-content h2 .headerlink:before,.rst-content h2 .btn-mini .headerlink:before,.btn-mini .rst-content h3 .headerlink:before,.rst-content h3 .btn-mini .headerlink:before,.btn-mini .rst-content h4 .headerlink:before,.rst-content h4 .btn-mini .headerlink:before,.btn-mini .rst-content h5 .headerlink:before,.rst-content h5 .btn-mini .headerlink:before,.btn-mini .rst-content h6 .headerlink:before,.rst-content h6 .btn-mini .headerlink:before,.btn-mini .rst-content dl dt .headerlink:before,.rst-content dl dt .btn-mini .headerlink:before,.btn-mini .rst-content p.caption .headerlink:before,.rst-content p.caption .btn-mini .headerlink:before,.btn-mini .rst-content table>caption .headerlink:before,.rst-content table>caption .btn-mini .headerlink:before,.btn-mini .rst-content tt.download span:first-child:before,.rst-content tt.download .btn-mini span:first-child:before,.btn-mini .rst-content code.download span:first-child:before,.rst-content code.download .btn-mini span:first-child:before,.btn-mini .icon:before{font-size:14px;vertical-align:-15%}.wy-alert,.rst-content .note,.rst-content .attention,.rst-content .caution,.rst-content .danger,.rst-content .error,.rst-content .hint,.rst-content .important,.rst-content .tip,.rst-content .warning,.rst-content .seealso,.rst-content .admonition-todo,.rst-content .admonition{padding:12px;line-height:24px;margin-bottom:24px;background:#e7f2fa}.wy-alert-title,.rst-content .admonition-title{color:#fff;font-weight:bold;display:block;color:#fff;background:#6ab0de;margin:-12px;padding:6px 12px;margin-bottom:12px}.wy-alert.wy-alert-danger,.rst-content .wy-alert-danger.note,.rst-content .wy-alert-danger.attention,.rst-content .wy-alert-danger.caution,.rst-content .danger,.rst-content .error,.rst-content .wy-alert-danger.hint,.rst-content .wy-alert-danger.important,.rst-content .wy-alert-danger.tip,.rst-content .wy-alert-danger.warning,.rst-content .wy-alert-danger.seealso,.rst-content .wy-alert-danger.admonition-todo,.rst-content .wy-alert-danger.admonition{background:#fdf3f2}.wy-alert.wy-alert-danger .wy-alert-title,.rst-content .wy-alert-danger.note .wy-alert-title,.rst-content .wy-alert-danger.attention .wy-alert-title,.rst-content .wy-alert-danger.caution .wy-alert-title,.rst-content .danger .wy-alert-title,.rst-content .error .wy-alert-title,.rst-content .wy-alert-danger.hint .wy-alert-title,.rst-content .wy-alert-danger.important .wy-alert-title,.rst-content .wy-alert-danger.tip .wy-alert-title,.rst-content .wy-alert-danger.warning .wy-alert-title,.rst-content .wy-alert-danger.seealso .wy-alert-title,.rst-content .wy-alert-danger.admonition-todo .wy-alert-title,.rst-content .wy-alert-danger.admonition .wy-alert-title,.wy-alert.wy-alert-danger .rst-content .admonition-title,.rst-content .wy-alert.wy-alert-danger .admonition-title,.rst-content .wy-alert-danger.note .admonition-title,.rst-content .wy-alert-danger.attention .admonition-title,.rst-content .wy-alert-danger.caution .admonition-title,.rst-content .danger .admonition-title,.rst-content .error .admonition-title,.rst-content .wy-alert-danger.hint .admonition-title,.rst-content .wy-alert-danger.important .admonition-title,.rst-content .wy-alert-danger.tip .admonition-title,.rst-content .wy-alert-danger.warning .admonition-title,.rst-content .wy-alert-danger.seealso .admonition-title,.rst-content .wy-alert-danger.admonition-todo .admonition-title,.rst-content .wy-alert-danger.admonition .admonition-title{background:#f29f97}.wy-alert.wy-alert-warning,.rst-content .wy-alert-warning.note,.rst-content .attention,.rst-content .caution,.rst-content .wy-alert-warning.danger,.rst-content .wy-alert-warning.error,.rst-content .wy-alert-warning.hint,.rst-content .wy-alert-warning.important,.rst-content .wy-alert-warning.tip,.rst-content .warning,.rst-content .wy-alert-warning.seealso,.rst-content .admonition-todo,.rst-content .wy-alert-warning.admonition{background:#ffedcc}.wy-alert.wy-alert-warning .wy-alert-title,.rst-content .wy-alert-warning.note .wy-alert-title,.rst-content .attention .wy-alert-title,.rst-content .caution .wy-alert-title,.rst-content .wy-alert-warning.danger .wy-alert-title,.rst-content .wy-alert-warning.error .wy-alert-title,.rst-content .wy-alert-warning.hint .wy-alert-title,.rst-content .wy-alert-warning.important .wy-alert-title,.rst-content .wy-alert-warning.tip .wy-alert-title,.rst-content .warning .wy-alert-title,.rst-content .wy-alert-warning.seealso .wy-alert-title,.rst-content .admonition-todo .wy-alert-title,.rst-content .wy-alert-warning.admonition .wy-alert-title,.wy-alert.wy-alert-warning .rst-content .admonition-title,.rst-content .wy-alert.wy-alert-warning .admonition-title,.rst-content .wy-alert-warning.note .admonition-title,.rst-content .attention .admonition-title,.rst-content .caution .admonition-title,.rst-content .wy-alert-warning.danger .admonition-title,.rst-content .wy-alert-warning.error .admonition-title,.rst-content .wy-alert-warning.hint .admonition-title,.rst-content .wy-alert-warning.important .admonition-title,.rst-content .wy-alert-warning.tip .admonition-title,.rst-content .warning .admonition-title,.rst-content .wy-alert-warning.seealso .admonition-title,.rst-content .admonition-todo .admonition-title,.rst-content .wy-alert-warning.admonition .admonition-title{background:#f0b37e}.wy-alert.wy-alert-info,.rst-content .note,.rst-content .wy-alert-info.attention,.rst-content .wy-alert-info.caution,.rst-content .wy-alert-info.danger,.rst-content .wy-alert-info.error,.rst-content .wy-alert-info.hint,.rst-content .wy-alert-info.important,.rst-content .wy-alert-info.tip,.rst-content .wy-alert-info.warning,.rst-content .seealso,.rst-content .wy-alert-info.admonition-todo,.rst-content .wy-alert-info.admonition{background:#e7f2fa}.wy-alert.wy-alert-info .wy-alert-title,.rst-content .note .wy-alert-title,.rst-content .wy-alert-info.attention .wy-alert-title,.rst-content .wy-alert-info.caution .wy-alert-title,.rst-content .wy-alert-info.danger .wy-alert-title,.rst-content .wy-alert-info.error .wy-alert-title,.rst-content .wy-alert-info.hint .wy-alert-title,.rst-content .wy-alert-info.important .wy-alert-title,.rst-content .wy-alert-info.tip .wy-alert-title,.rst-content .wy-alert-info.warning .wy-alert-title,.rst-content .seealso .wy-alert-title,.rst-content .wy-alert-info.admonition-todo .wy-alert-title,.rst-content .wy-alert-info.admonition .wy-alert-title,.wy-alert.wy-alert-info .rst-content .admonition-title,.rst-content .wy-alert.wy-alert-info .admonition-title,.rst-content .note .admonition-title,.rst-content .wy-alert-info.attention .admonition-title,.rst-content .wy-alert-info.caution .admonition-title,.rst-content .wy-alert-info.danger .admonition-title,.rst-content .wy-alert-info.error .admonition-title,.rst-content .wy-alert-info.hint .admonition-title,.rst-content .wy-alert-info.important .admonition-title,.rst-content .wy-alert-info.tip .admonition-title,.rst-content .wy-alert-info.warning .admonition-title,.rst-content .seealso .admonition-title,.rst-content .wy-alert-info.admonition-todo .admonition-title,.rst-content .wy-alert-info.admonition .admonition-title{background:#6ab0de}.wy-alert.wy-alert-success,.rst-content .wy-alert-success.note,.rst-content .wy-alert-success.attention,.rst-content .wy-alert-success.caution,.rst-content .wy-alert-success.danger,.rst-content .wy-alert-success.error,.rst-content .hint,.rst-content .important,.rst-content .tip,.rst-content .wy-alert-success.warning,.rst-content .wy-alert-success.seealso,.rst-content .wy-alert-success.admonition-todo,.rst-content .wy-alert-success.admonition{background:#dbfaf4}.wy-alert.wy-alert-success .wy-alert-title,.rst-content .wy-alert-success.note .wy-alert-title,.rst-content .wy-alert-success.attention .wy-alert-title,.rst-content .wy-alert-success.caution .wy-alert-title,.rst-content .wy-alert-success.danger .wy-alert-title,.rst-content .wy-alert-success.error .wy-alert-title,.rst-content .hint .wy-alert-title,.rst-content .important .wy-alert-title,.rst-content .tip .wy-alert-title,.rst-content .wy-alert-success.warning .wy-alert-title,.rst-content .wy-alert-success.seealso .wy-alert-title,.rst-content .wy-alert-success.admonition-todo .wy-alert-title,.rst-content .wy-alert-success.admonition .wy-alert-title,.wy-alert.wy-alert-success .rst-content .admonition-title,.rst-content .wy-alert.wy-alert-success .admonition-title,.rst-content .wy-alert-success.note .admonition-title,.rst-content .wy-alert-success.attention .admonition-title,.rst-content .wy-alert-success.caution .admonition-title,.rst-content .wy-alert-success.danger .admonition-title,.rst-content .wy-alert-success.error .admonition-title,.rst-content .hint .admonition-title,.rst-content .important .admonition-title,.rst-content .tip .admonition-title,.rst-content .wy-alert-success.warning .admonition-title,.rst-content .wy-alert-success.seealso .admonition-title,.rst-content .wy-alert-success.admonition-todo .admonition-title,.rst-content .wy-alert-success.admonition .admonition-title{background:#1abc9c}.wy-alert.wy-alert-neutral,.rst-content .wy-alert-neutral.note,.rst-content .wy-alert-neutral.attention,.rst-content .wy-alert-neutral.caution,.rst-content .wy-alert-neutral.danger,.rst-content .wy-alert-neutral.error,.rst-content .wy-alert-neutral.hint,.rst-content .wy-alert-neutral.important,.rst-content .wy-alert-neutral.tip,.rst-content .wy-alert-neutral.warning,.rst-content .wy-alert-neutral.seealso,.rst-content .wy-alert-neutral.admonition-todo,.rst-content .wy-alert-neutral.admonition{background:#f3f6f6}.wy-alert.wy-alert-neutral .wy-alert-title,.rst-content .wy-alert-neutral.note .wy-alert-title,.rst-content .wy-alert-neutral.attention .wy-alert-title,.rst-content .wy-alert-neutral.caution .wy-alert-title,.rst-content .wy-alert-neutral.danger .wy-alert-title,.rst-content .wy-alert-neutral.error .wy-alert-title,.rst-content .wy-alert-neutral.hint .wy-alert-title,.rst-content .wy-alert-neutral.important .wy-alert-title,.rst-content .wy-alert-neutral.tip .wy-alert-title,.rst-content .wy-alert-neutral.warning .wy-alert-title,.rst-content .wy-alert-neutral.seealso .wy-alert-title,.rst-content .wy-alert-neutral.admonition-todo .wy-alert-title,.rst-content .wy-alert-neutral.admonition .wy-alert-title,.wy-alert.wy-alert-neutral .rst-content .admonition-title,.rst-content .wy-alert.wy-alert-neutral .admonition-title,.rst-content .wy-alert-neutral.note .admonition-title,.rst-content .wy-alert-neutral.attention .admonition-title,.rst-content .wy-alert-neutral.caution .admonition-title,.rst-content .wy-alert-neutral.danger .admonition-title,.rst-content .wy-alert-neutral.error .admonition-title,.rst-content .wy-alert-neutral.hint .admonition-title,.rst-content .wy-alert-neutral.important .admonition-title,.rst-content .wy-alert-neutral.tip .admonition-title,.rst-content .wy-alert-neutral.warning .admonition-title,.rst-content .wy-alert-neutral.seealso .admonition-title,.rst-content .wy-alert-neutral.admonition-todo .admonition-title,.rst-content .wy-alert-neutral.admonition .admonition-title{color:#404040;background:#e1e4e5}.wy-alert.wy-alert-neutral a,.rst-content .wy-alert-neutral.note a,.rst-content .wy-alert-neutral.attention a,.rst-content .wy-alert-neutral.caution a,.rst-content .wy-alert-neutral.danger a,.rst-content .wy-alert-neutral.error a,.rst-content .wy-alert-neutral.hint a,.rst-content .wy-alert-neutral.important a,.rst-content .wy-alert-neutral.tip a,.rst-content .wy-alert-neutral.warning a,.rst-content .wy-alert-neutral.seealso a,.rst-content .wy-alert-neutral.admonition-todo a,.rst-content .wy-alert-neutral.admonition a{color:#2980B9}.wy-alert p:last-child,.rst-content .note p:last-child,.rst-content .attention p:last-child,.rst-content .caution p:last-child,.rst-content .danger p:last-child,.rst-content .error p:last-child,.rst-content .hint p:last-child,.rst-content .important p:last-child,.rst-content .tip p:last-child,.rst-content .warning p:last-child,.rst-content .seealso p:last-child,.rst-content .admonition-todo p:last-child,.rst-content .admonition p:last-child{margin-bottom:0}.wy-tray-container{position:fixed;bottom:0px;left:0;z-index:600}.wy-tray-container li{display:block;width:300px;background:transparent;color:#fff;text-align:center;box-shadow:0 5px 5px 0 rgba(0,0,0,0.1);padding:0 24px;min-width:20%;opacity:0;height:0;line-height:56px;overflow:hidden;-webkit-transition:all .3s ease-in;-moz-transition:all .3s ease-in;transition:all .3s ease-in}.wy-tray-container li.wy-tray-item-success{background:#27AE60}.wy-tray-container li.wy-tray-item-info{background:#2980B9}.wy-tray-container li.wy-tray-item-warning{background:#E67E22}.wy-tray-container li.wy-tray-item-danger{background:#E74C3C}.wy-tray-container li.on{opacity:1;height:56px}@media screen and (max-width: 768px){.wy-tray-container{bottom:auto;top:0;width:100%}.wy-tray-container li{width:100%}}button{font-size:100%;margin:0;vertical-align:baseline;*vertical-align:middle;cursor:pointer;line-height:normal;-webkit-appearance:button;*overflow:visible}button::-moz-focus-inner,input::-moz-focus-inner{border:0;padding:0}button[disabled]{cursor:default}.btn{display:inline-block;border-radius:2px;line-height:normal;white-space:nowrap;text-align:center;cursor:pointer;font-size:100%;padding:6px 12px 8px 12px;color:#fff;border:1px solid rgba(0,0,0,0.1);background-color:#27AE60;text-decoration:none;font-weight:normal;font-family:"Lato","proxima-nova","Helvetica Neue",Arial,sans-serif;box-shadow:0px 1px 2px -1px rgba(255,255,255,0.5) inset,0px -2px 0px 0px rgba(0,0,0,0.1) inset;outline-none:false;vertical-align:middle;*display:inline;zoom:1;-webkit-user-drag:none;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;-webkit-transition:all .1s linear;-moz-transition:all .1s linear;transition:all .1s linear}.btn-hover{background:#2e8ece;color:#fff}.btn:hover{background:#2cc36b;color:#fff}.btn:focus{background:#2cc36b;outline:0}.btn:active{box-shadow:0px -1px 0px 0px rgba(0,0,0,0.05) inset,0px 2px 0px 0px rgba(0,0,0,0.1) inset;padding:8px 12px 6px 12px}.btn:visited{color:#fff}.btn:disabled{background-image:none;filter:progid:DXImageTransform.Microsoft.gradient(enabled = false);filter:alpha(opacity=40);opacity:.4;cursor:not-allowed;box-shadow:none}.btn-disabled{background-image:none;filter:progid:DXImageTransform.Microsoft.gradient(enabled = false);filter:alpha(opacity=40);opacity:.4;cursor:not-allowed;box-shadow:none}.btn-disabled:hover,.btn-disabled:focus,.btn-disabled:active{background-image:none;filter:progid:DXImageTransform.Microsoft.gradient(enabled = false);filter:alpha(opacity=40);opacity:.4;cursor:not-allowed;box-shadow:none}.btn::-moz-focus-inner{padding:0;border:0}.btn-small{font-size:80%}.btn-info{background-color:#2980B9 !important}.btn-info:hover{background-color:#2e8ece !important}.btn-neutral{background-color:#f3f6f6 !important;color:#404040 !important}.btn-neutral:hover{background-color:#e5ebeb !important;color:#404040}.btn-neutral:visited{color:#404040 !important}.btn-success{background-color:#27AE60 !important}.btn-success:hover{background-color:#295 !important}.btn-danger{background-color:#E74C3C !important}.btn-danger:hover{background-color:#ea6153 !important}.btn-warning{background-color:#E67E22 !important}.btn-warning:hover{background-color:#e98b39 !important}.btn-invert{background-color:#222}.btn-invert:hover{background-color:#2f2f2f !important}.btn-link{background-color:transparent !important;color:#2980B9;box-shadow:none;border-color:transparent !important}.btn-link:hover{background-color:transparent !important;color:#409ad5 !important;box-shadow:none}.btn-link:active{background-color:transparent !important;color:#409ad5 !important;box-shadow:none}.btn-link:visited{color:#9B59B6}.wy-btn-group .btn,.wy-control .btn{vertical-align:middle}.wy-btn-group{margin-bottom:24px;*zoom:1}.wy-btn-group:before,.wy-btn-group:after{display:table;content:""}.wy-btn-group:after{clear:both}.wy-dropdown{position:relative;display:inline-block}.wy-dropdown-active .wy-dropdown-menu{display:block}.wy-dropdown-menu{position:absolute;left:0;display:none;float:left;top:100%;min-width:100%;background:#fcfcfc;z-index:100;border:solid 1px #cfd7dd;box-shadow:0 2px 2px 0 rgba(0,0,0,0.1);padding:12px}.wy-dropdown-menu>dd>a{display:block;clear:both;color:#404040;white-space:nowrap;font-size:90%;padding:0 12px;cursor:pointer}.wy-dropdown-menu>dd>a:hover{background:#2980B9;color:#fff}.wy-dropdown-menu>dd.divider{border-top:solid 1px #cfd7dd;margin:6px 0}.wy-dropdown-menu>dd.search{padding-bottom:12px}.wy-dropdown-menu>dd.search input[type="search"]{width:100%}.wy-dropdown-menu>dd.call-to-action{background:#e3e3e3;text-transform:uppercase;font-weight:500;font-size:80%}.wy-dropdown-menu>dd.call-to-action:hover{background:#e3e3e3}.wy-dropdown-menu>dd.call-to-action .btn{color:#fff}.wy-dropdown.wy-dropdown-up .wy-dropdown-menu{bottom:100%;top:auto;left:auto;right:0}.wy-dropdown.wy-dropdown-bubble .wy-dropdown-menu{background:#fcfcfc;margin-top:2px}.wy-dropdown.wy-dropdown-bubble .wy-dropdown-menu a{padding:6px 12px}.wy-dropdown.wy-dropdown-bubble .wy-dropdown-menu a:hover{background:#2980B9;color:#fff}.wy-dropdown.wy-dropdown-left .wy-dropdown-menu{right:0;left:auto;text-align:right}.wy-dropdown-arrow:before{content:" ";border-bottom:5px solid #f5f5f5;border-left:5px solid transparent;border-right:5px solid transparent;position:absolute;display:block;top:-4px;left:50%;margin-left:-3px}.wy-dropdown-arrow.wy-dropdown-arrow-left:before{left:11px}.wy-form-stacked select{display:block}.wy-form-aligned input,.wy-form-aligned textarea,.wy-form-aligned select,.wy-form-aligned .wy-help-inline,.wy-form-aligned label{display:inline-block;*display:inline;*zoom:1;vertical-align:middle}.wy-form-aligned .wy-control-group>label{display:inline-block;vertical-align:middle;width:10em;margin:6px 12px 0 0;float:left}.wy-form-aligned .wy-control{float:left}.wy-form-aligned .wy-control label{display:block}.wy-form-aligned .wy-control select{margin-top:6px}fieldset{border:0;margin:0;padding:0}legend{display:block;width:100%;border:0;padding:0;white-space:normal;margin-bottom:24px;font-size:150%;*margin-left:-7px}label{display:block;margin:0 0 .3125em 0;color:#333;font-size:90%}input,select,textarea{font-size:100%;margin:0;vertical-align:baseline;*vertical-align:middle}.wy-control-group{margin-bottom:24px;*zoom:1;max-width:68em;margin-left:auto;margin-right:auto;*zoom:1}.wy-control-group:before,.wy-control-group:after{display:table;content:""}.wy-control-group:after{clear:both}.wy-control-group:before,.wy-control-group:after{display:table;content:""}.wy-control-group:after{clear:both}.wy-control-group.wy-control-group-required>label:after{content:" *";color:#E74C3C}.wy-control-group .wy-form-full,.wy-control-group .wy-form-halves,.wy-control-group .wy-form-thirds{padding-bottom:12px}.wy-control-group .wy-form-full select,.wy-control-group .wy-form-halves select,.wy-control-group .wy-form-thirds select{width:100%}.wy-control-group .wy-form-full input[type="text"],.wy-control-group .wy-form-full input[type="password"],.wy-control-group .wy-form-full input[type="email"],.wy-control-group .wy-form-full input[type="url"],.wy-control-group .wy-form-full input[type="date"],.wy-control-group .wy-form-full input[type="month"],.wy-control-group .wy-form-full input[type="time"],.wy-control-group .wy-form-full input[type="datetime"],.wy-control-group .wy-form-full input[type="datetime-local"],.wy-control-group .wy-form-full input[type="week"],.wy-control-group .wy-form-full input[type="number"],.wy-control-group .wy-form-full input[type="search"],.wy-control-group .wy-form-full input[type="tel"],.wy-control-group .wy-form-full input[type="color"],.wy-control-group .wy-form-halves input[type="text"],.wy-control-group .wy-form-halves input[type="password"],.wy-control-group .wy-form-halves input[type="email"],.wy-control-group .wy-form-halves input[type="url"],.wy-control-group .wy-form-halves input[type="date"],.wy-control-group .wy-form-halves input[type="month"],.wy-control-group .wy-form-halves input[type="time"],.wy-control-group .wy-form-halves input[type="datetime"],.wy-control-group .wy-form-halves input[type="datetime-local"],.wy-control-group .wy-form-halves input[type="week"],.wy-control-group .wy-form-halves input[type="number"],.wy-control-group .wy-form-halves input[type="search"],.wy-control-group .wy-form-halves input[type="tel"],.wy-control-group .wy-form-halves input[type="color"],.wy-control-group .wy-form-thirds input[type="text"],.wy-control-group .wy-form-thirds input[type="password"],.wy-control-group .wy-form-thirds input[type="email"],.wy-control-group .wy-form-thirds input[type="url"],.wy-control-group .wy-form-thirds input[type="date"],.wy-control-group .wy-form-thirds input[type="month"],.wy-control-group .wy-form-thirds input[type="time"],.wy-control-group .wy-form-thirds input[type="datetime"],.wy-control-group .wy-form-thirds input[type="datetime-local"],.wy-control-group .wy-form-thirds input[type="week"],.wy-control-group .wy-form-thirds input[type="number"],.wy-control-group .wy-form-thirds input[type="search"],.wy-control-group .wy-form-thirds input[type="tel"],.wy-control-group .wy-form-thirds input[type="color"]{width:100%}.wy-control-group .wy-form-full{float:left;display:block;margin-right:2.3576515979%;width:100%;margin-right:0}.wy-control-group .wy-form-full:last-child{margin-right:0}.wy-control-group .wy-form-halves{float:left;display:block;margin-right:2.3576515979%;width:48.821174201%}.wy-control-group .wy-form-halves:last-child{margin-right:0}.wy-control-group .wy-form-halves:nth-of-type(2n){margin-right:0}.wy-control-group .wy-form-halves:nth-of-type(2n+1){clear:left}.wy-control-group .wy-form-thirds{float:left;display:block;margin-right:2.3576515979%;width:31.7615656014%}.wy-control-group .wy-form-thirds:last-child{margin-right:0}.wy-control-group .wy-form-thirds:nth-of-type(3n){margin-right:0}.wy-control-group .wy-form-thirds:nth-of-type(3n+1){clear:left}.wy-control-group.wy-control-group-no-input .wy-control{margin:6px 0 0 0;font-size:90%}.wy-control-no-input{display:inline-block;margin:6px 0 0 0;font-size:90%}.wy-control-group.fluid-input input[type="text"],.wy-control-group.fluid-input input[type="password"],.wy-control-group.fluid-input input[type="email"],.wy-control-group.fluid-input input[type="url"],.wy-control-group.fluid-input input[type="date"],.wy-control-group.fluid-input input[type="month"],.wy-control-group.fluid-input input[type="time"],.wy-control-group.fluid-input input[type="datetime"],.wy-control-group.fluid-input input[type="datetime-local"],.wy-control-group.fluid-input input[type="week"],.wy-control-group.fluid-input input[type="number"],.wy-control-group.fluid-input input[type="search"],.wy-control-group.fluid-input input[type="tel"],.wy-control-group.fluid-input input[type="color"]{width:100%}.wy-form-message-inline{display:inline-block;padding-left:.3em;color:#666;vertical-align:middle;font-size:90%}.wy-form-message{display:block;color:#999;font-size:70%;margin-top:.3125em;font-style:italic}.wy-form-message p{font-size:inherit;font-style:italic;margin-bottom:6px}.wy-form-message p:last-child{margin-bottom:0}input{line-height:normal}input[type="button"],input[type="reset"],input[type="submit"]{-webkit-appearance:button;cursor:pointer;font-family:"Lato","proxima-nova","Helvetica Neue",Arial,sans-serif;*overflow:visible}input[type="text"],input[type="password"],input[type="email"],input[type="url"],input[type="date"],input[type="month"],input[type="time"],input[type="datetime"],input[type="datetime-local"],input[type="week"],input[type="number"],input[type="search"],input[type="tel"],input[type="color"]{-webkit-appearance:none;padding:6px;display:inline-block;border:1px solid #ccc;font-size:80%;font-family:"Lato","proxima-nova","Helvetica Neue",Arial,sans-serif;box-shadow:inset 0 1px 3px #ddd;border-radius:0;-webkit-transition:border .3s linear;-moz-transition:border .3s linear;transition:border .3s linear}input[type="datetime-local"]{padding:.34375em .625em}input[disabled]{cursor:default}input[type="checkbox"],input[type="radio"]{-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box;padding:0;margin-right:.3125em;*height:13px;*width:13px}input[type="search"]{-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}input[type="search"]::-webkit-search-cancel-button,input[type="search"]::-webkit-search-decoration{-webkit-appearance:none}input[type="text"]:focus,input[type="password"]:focus,input[type="email"]:focus,input[type="url"]:focus,input[type="date"]:focus,input[type="month"]:focus,input[type="time"]:focus,input[type="datetime"]:focus,input[type="datetime-local"]:focus,input[type="week"]:focus,input[type="number"]:focus,input[type="search"]:focus,input[type="tel"]:focus,input[type="color"]:focus{outline:0;outline:thin dotted \9;border-color:#333}input.no-focus:focus{border-color:#ccc !important}input[type="file"]:focus,input[type="radio"]:focus,input[type="checkbox"]:focus{outline:thin dotted #333;outline:1px auto #129FEA}input[type="text"][disabled],input[type="password"][disabled],input[type="email"][disabled],input[type="url"][disabled],input[type="date"][disabled],input[type="month"][disabled],input[type="time"][disabled],input[type="datetime"][disabled],input[type="datetime-local"][disabled],input[type="week"][disabled],input[type="number"][disabled],input[type="search"][disabled],input[type="tel"][disabled],input[type="color"][disabled]{cursor:not-allowed;background-color:#fafafa}input:focus:invalid,textarea:focus:invalid,select:focus:invalid{color:#E74C3C;border:1px solid #E74C3C}input:focus:invalid:focus,textarea:focus:invalid:focus,select:focus:invalid:focus{border-color:#E74C3C}input[type="file"]:focus:invalid:focus,input[type="radio"]:focus:invalid:focus,input[type="checkbox"]:focus:invalid:focus{outline-color:#E74C3C}input.wy-input-large{padding:12px;font-size:100%}textarea{overflow:auto;vertical-align:top;width:100%;font-family:"Lato","proxima-nova","Helvetica Neue",Arial,sans-serif}select,textarea{padding:.5em .625em;display:inline-block;border:1px solid #ccc;font-size:80%;box-shadow:inset 0 1px 3px #ddd;-webkit-transition:border .3s linear;-moz-transition:border .3s linear;transition:border .3s linear}select{border:1px solid #ccc;background-color:#fff}select[multiple]{height:auto}select:focus,textarea:focus{outline:0}select[disabled],textarea[disabled],input[readonly],select[readonly],textarea[readonly]{cursor:not-allowed;background-color:#fafafa}input[type="radio"][disabled],input[type="checkbox"][disabled]{cursor:not-allowed}.wy-checkbox,.wy-radio{margin:6px 0;color:#404040;display:block}.wy-checkbox input,.wy-radio input{vertical-align:baseline}.wy-form-message-inline{display:inline-block;*display:inline;*zoom:1;vertical-align:middle}.wy-input-prefix,.wy-input-suffix{white-space:nowrap;padding:6px}.wy-input-prefix .wy-input-context,.wy-input-suffix .wy-input-context{line-height:27px;padding:0 8px;display:inline-block;font-size:80%;background-color:#f3f6f6;border:solid 1px #ccc;color:#999}.wy-input-suffix .wy-input-context{border-left:0}.wy-input-prefix .wy-input-context{border-right:0}.wy-switch{position:relative;display:block;height:24px;margin-top:12px;cursor:pointer}.wy-switch:before{position:absolute;content:"";display:block;left:0;top:0;width:36px;height:12px;border-radius:4px;background:#ccc;-webkit-transition:all .2s ease-in-out;-moz-transition:all .2s ease-in-out;transition:all .2s ease-in-out}.wy-switch:after{position:absolute;content:"";display:block;width:18px;height:18px;border-radius:4px;background:#999;left:-3px;top:-3px;-webkit-transition:all .2s ease-in-out;-moz-transition:all .2s ease-in-out;transition:all .2s ease-in-out}.wy-switch span{position:absolute;left:48px;display:block;font-size:12px;color:#ccc;line-height:1}.wy-switch.active:before{background:#1e8449}.wy-switch.active:after{left:24px;background:#27AE60}.wy-switch.disabled{cursor:not-allowed;opacity:.8}.wy-control-group.wy-control-group-error .wy-form-message,.wy-control-group.wy-control-group-error>label{color:#E74C3C}.wy-control-group.wy-control-group-error input[type="text"],.wy-control-group.wy-control-group-error input[type="password"],.wy-control-group.wy-control-group-error input[type="email"],.wy-control-group.wy-control-group-error input[type="url"],.wy-control-group.wy-control-group-error input[type="date"],.wy-control-group.wy-control-group-error input[type="month"],.wy-control-group.wy-control-group-error input[type="time"],.wy-control-group.wy-control-group-error input[type="datetime"],.wy-control-group.wy-control-group-error input[type="datetime-local"],.wy-control-group.wy-control-group-error input[type="week"],.wy-control-group.wy-control-group-error input[type="number"],.wy-control-group.wy-control-group-error input[type="search"],.wy-control-group.wy-control-group-error input[type="tel"],.wy-control-group.wy-control-group-error input[type="color"]{border:solid 1px #E74C3C}.wy-control-group.wy-control-group-error textarea{border:solid 1px #E74C3C}.wy-inline-validate{white-space:nowrap}.wy-inline-validate .wy-input-context{padding:.5em .625em;display:inline-block;font-size:80%}.wy-inline-validate.wy-inline-validate-success .wy-input-context{color:#27AE60}.wy-inline-validate.wy-inline-validate-danger .wy-input-context{color:#E74C3C}.wy-inline-validate.wy-inline-validate-warning .wy-input-context{color:#E67E22}.wy-inline-validate.wy-inline-validate-info .wy-input-context{color:#2980B9}.rotate-90{-webkit-transform:rotate(90deg);-moz-transform:rotate(90deg);-ms-transform:rotate(90deg);-o-transform:rotate(90deg);transform:rotate(90deg)}.rotate-180{-webkit-transform:rotate(180deg);-moz-transform:rotate(180deg);-ms-transform:rotate(180deg);-o-transform:rotate(180deg);transform:rotate(180deg)}.rotate-270{-webkit-transform:rotate(270deg);-moz-transform:rotate(270deg);-ms-transform:rotate(270deg);-o-transform:rotate(270deg);transform:rotate(270deg)}.mirror{-webkit-transform:scaleX(-1);-moz-transform:scaleX(-1);-ms-transform:scaleX(-1);-o-transform:scaleX(-1);transform:scaleX(-1)}.mirror.rotate-90{-webkit-transform:scaleX(-1) rotate(90deg);-moz-transform:scaleX(-1) rotate(90deg);-ms-transform:scaleX(-1) rotate(90deg);-o-transform:scaleX(-1) rotate(90deg);transform:scaleX(-1) rotate(90deg)}.mirror.rotate-180{-webkit-transform:scaleX(-1) rotate(180deg);-moz-transform:scaleX(-1) rotate(180deg);-ms-transform:scaleX(-1) rotate(180deg);-o-transform:scaleX(-1) rotate(180deg);transform:scaleX(-1) rotate(180deg)}.mirror.rotate-270{-webkit-transform:scaleX(-1) rotate(270deg);-moz-transform:scaleX(-1) rotate(270deg);-ms-transform:scaleX(-1) rotate(270deg);-o-transform:scaleX(-1) rotate(270deg);transform:scaleX(-1) rotate(270deg)}@media only screen and (max-width: 480px){.wy-form button[type="submit"]{margin:.7em 0 0}.wy-form input[type="text"],.wy-form input[type="password"],.wy-form input[type="email"],.wy-form input[type="url"],.wy-form input[type="date"],.wy-form input[type="month"],.wy-form input[type="time"],.wy-form input[type="datetime"],.wy-form input[type="datetime-local"],.wy-form input[type="week"],.wy-form input[type="number"],.wy-form input[type="search"],.wy-form input[type="tel"],.wy-form input[type="color"]{margin-bottom:.3em;display:block}.wy-form label{margin-bottom:.3em;display:block}.wy-form input[type="password"],.wy-form input[type="email"],.wy-form input[type="url"],.wy-form input[type="date"],.wy-form input[type="month"],.wy-form input[type="time"],.wy-form input[type="datetime"],.wy-form input[type="datetime-local"],.wy-form input[type="week"],.wy-form input[type="number"],.wy-form input[type="search"],.wy-form input[type="tel"],.wy-form input[type="color"]{margin-bottom:0}.wy-form-aligned .wy-control-group label{margin-bottom:.3em;text-align:left;display:block;width:100%}.wy-form-aligned .wy-control{margin:1.5em 0 0 0}.wy-form .wy-help-inline,.wy-form-message-inline,.wy-form-message{display:block;font-size:80%;padding:6px 0}}@media screen and (max-width: 768px){.tablet-hide{display:none}}@media screen and (max-width: 480px){.mobile-hide{display:none}}.float-left{float:left}.float-right{float:right}.full-width{width:100%}.wy-table,.rst-content table.docutils,.rst-content table.field-list{border-collapse:collapse;border-spacing:0;empty-cells:show;margin-bottom:24px}.wy-table caption,.rst-content table.docutils caption,.rst-content table.field-list caption{color:#000;font:italic 85%/1 arial,sans-serif;padding:1em 0;text-align:center}.wy-table td,.rst-content table.docutils td,.rst-content table.field-list td,.wy-table th,.rst-content table.docutils th,.rst-content table.field-list th{font-size:90%;margin:0;overflow:visible;padding:8px 16px}.wy-table td:first-child,.rst-content table.docutils td:first-child,.rst-content table.field-list td:first-child,.wy-table th:first-child,.rst-content table.docutils th:first-child,.rst-content table.field-list th:first-child{border-left-width:0}.wy-table thead,.rst-content table.docutils thead,.rst-content table.field-list thead{color:#000;text-align:left;vertical-align:bottom;white-space:nowrap}.wy-table thead th,.rst-content table.docutils thead th,.rst-content table.field-list thead th{font-weight:bold;border-bottom:solid 2px #e1e4e5}.wy-table td,.rst-content table.docutils td,.rst-content table.field-list td{background-color:transparent;vertical-align:middle}.wy-table td p,.rst-content table.docutils td p,.rst-content table.field-list td p{line-height:18px}.wy-table td p:last-child,.rst-content table.docutils td p:last-child,.rst-content table.field-list td p:last-child{margin-bottom:0}.wy-table .wy-table-cell-min,.rst-content table.docutils .wy-table-cell-min,.rst-content table.field-list .wy-table-cell-min{width:1%;padding-right:0}.wy-table .wy-table-cell-min input[type=checkbox],.rst-content table.docutils .wy-table-cell-min input[type=checkbox],.rst-content table.field-list .wy-table-cell-min input[type=checkbox],.wy-table .wy-table-cell-min input[type=checkbox],.rst-content table.docutils .wy-table-cell-min input[type=checkbox],.rst-content table.field-list .wy-table-cell-min input[type=checkbox]{margin:0}.wy-table-secondary{color:gray;font-size:90%}.wy-table-tertiary{color:gray;font-size:80%}.wy-table-odd td,.wy-table-striped tr:nth-child(2n-1) td,.rst-content table.docutils:not(.field-list) tr:nth-child(2n-1) td{background-color:#f3f6f6}.wy-table-backed{background-color:#f3f6f6}.wy-table-bordered-all,.rst-content table.docutils{border:1px solid #e1e4e5}.wy-table-bordered-all td,.rst-content table.docutils td{border-bottom:1px solid #e1e4e5;border-left:1px solid #e1e4e5}.wy-table-bordered-all tbody>tr:last-child td,.rst-content table.docutils tbody>tr:last-child td{border-bottom-width:0}.wy-table-bordered{border:1px solid #e1e4e5}.wy-table-bordered-rows td{border-bottom:1px solid #e1e4e5}.wy-table-bordered-rows tbody>tr:last-child td{border-bottom-width:0}.wy-table-horizontal tbody>tr:last-child td{border-bottom-width:0}.wy-table-horizontal td,.wy-table-horizontal th{border-width:0 0 1px 0;border-bottom:1px solid #e1e4e5}.wy-table-horizontal tbody>tr:last-child td{border-bottom-width:0}.wy-table-responsive{margin-bottom:24px;max-width:100%;overflow:auto}.wy-table-responsive table{margin-bottom:0 !important}.wy-table-responsive table td,.wy-table-responsive table th{white-space:nowrap}a{color:#2980B9;text-decoration:none;cursor:pointer}a:hover{color:#3091d1}a:visited{color:#9B59B6}html{height:100%;overflow-x:hidden}body{font-family:"Lato","proxima-nova","Helvetica Neue",Arial,sans-serif;font-weight:normal;color:#404040;min-height:100%;overflow-x:hidden;background:#edf0f2}.wy-text-left{text-align:left}.wy-text-center{text-align:center}.wy-text-right{text-align:right}.wy-text-large{font-size:120%}.wy-text-normal{font-size:100%}.wy-text-small,small{font-size:80%}.wy-text-strike{text-decoration:line-through}.wy-text-warning{color:#E67E22 !important}a.wy-text-warning:hover{color:#eb9950 !important}.wy-text-info{color:#2980B9 !important}a.wy-text-info:hover{color:#409ad5 !important}.wy-text-success{color:#27AE60 !important}a.wy-text-success:hover{color:#36d278 !important}.wy-text-danger{color:#E74C3C !important}a.wy-text-danger:hover{color:#ed7669 !important}.wy-text-neutral{color:#404040 !important}a.wy-text-neutral:hover{color:#595959 !important}h1,h2,.rst-content .toctree-wrapper p.caption,h3,h4,h5,h6,legend{margin-top:0;font-weight:700;font-family:"Roboto Slab","ff-tisa-web-pro","Georgia",Arial,sans-serif}p{line-height:24px;margin:0;font-size:16px;margin-bottom:24px}h1{font-size:175%}h2,.rst-content .toctree-wrapper p.caption{font-size:150%}h3{font-size:125%}h4{font-size:115%}h5{font-size:110%}h6{font-size:100%}hr{display:block;height:1px;border:0;border-top:1px solid #e1e4e5;margin:24px 0;padding:0}code,.rst-content tt,.rst-content code{white-space:nowrap;max-width:100%;background:#fff;border:solid 1px #e1e4e5;font-size:75%;padding:0 5px;font-family:Consolas,"Andale Mono WT","Andale Mono","Lucida Console","Lucida Sans Typewriter","DejaVu Sans Mono","Bitstream Vera Sans Mono","Liberation Mono","Nimbus Mono L",Monaco,"Courier New",Courier,monospace;color:#E74C3C;overflow-x:auto}code.code-large,.rst-content tt.code-large{font-size:90%}.wy-plain-list-disc,.rst-content .section ul,.rst-content .toctree-wrapper ul,article ul{list-style:disc;line-height:24px;margin-bottom:24px}.wy-plain-list-disc li,.rst-content .section ul li,.rst-content .toctree-wrapper ul li,article ul li{list-style:disc;margin-left:24px}.wy-plain-list-disc li p:last-child,.rst-content .section ul li p:last-child,.rst-content .toctree-wrapper ul li p:last-child,article ul li p:last-child{margin-bottom:0}.wy-plain-list-disc li ul,.rst-content .section ul li ul,.rst-content .toctree-wrapper ul li ul,article ul li ul{margin-bottom:0}.wy-plain-list-disc li li,.rst-content .section ul li li,.rst-content .toctree-wrapper ul li li,article ul li li{list-style:circle}.wy-plain-list-disc li li li,.rst-content .section ul li li li,.rst-content .toctree-wrapper ul li li li,article ul li li li{list-style:square}.wy-plain-list-disc li ol li,.rst-content .section ul li ol li,.rst-content .toctree-wrapper ul li ol li,article ul li ol li{list-style:decimal}.wy-plain-list-decimal,.rst-content .section ol,.rst-content ol.arabic,article ol{list-style:decimal;line-height:24px;margin-bottom:24px}.wy-plain-list-decimal li,.rst-content .section ol li,.rst-content ol.arabic li,article ol li{list-style:decimal;margin-left:24px}.wy-plain-list-decimal li p:last-child,.rst-content .section ol li p:last-child,.rst-content ol.arabic li p:last-child,article ol li p:last-child{margin-bottom:0}.wy-plain-list-decimal li ul,.rst-content .section ol li ul,.rst-content ol.arabic li ul,article ol li ul{margin-bottom:0}.wy-plain-list-decimal li ul li,.rst-content .section ol li ul li,.rst-content ol.arabic li ul li,article ol li ul li{list-style:disc}.wy-breadcrumbs{*zoom:1}.wy-breadcrumbs:before,.wy-breadcrumbs:after{display:table;content:""}.wy-breadcrumbs:after{clear:both}.wy-breadcrumbs li{display:inline-block}.wy-breadcrumbs li.wy-breadcrumbs-aside{float:right}.wy-breadcrumbs li a{display:inline-block;padding:5px}.wy-breadcrumbs li a:first-child{padding-left:0}.wy-breadcrumbs li code,.wy-breadcrumbs li .rst-content tt,.rst-content .wy-breadcrumbs li tt{padding:5px;border:none;background:none}.wy-breadcrumbs li code.literal,.wy-breadcrumbs li .rst-content tt.literal,.rst-content .wy-breadcrumbs li tt.literal{color:#404040}.wy-breadcrumbs-extra{margin-bottom:0;color:#b3b3b3;font-size:80%;display:inline-block}@media screen and (max-width: 480px){.wy-breadcrumbs-extra{display:none}.wy-breadcrumbs li.wy-breadcrumbs-aside{display:none}}@media print{.wy-breadcrumbs li.wy-breadcrumbs-aside{display:none}}.wy-affix{position:fixed;top:1.618em}.wy-menu a:hover{text-decoration:none}.wy-menu-horiz{*zoom:1}.wy-menu-horiz:before,.wy-menu-horiz:after{display:table;content:""}.wy-menu-horiz:after{clear:both}.wy-menu-horiz ul,.wy-menu-horiz li{display:inline-block}.wy-menu-horiz li:hover{background:rgba(255,255,255,0.1)}.wy-menu-horiz li.divide-left{border-left:solid 1px #404040}.wy-menu-horiz li.divide-right{border-right:solid 1px #404040}.wy-menu-horiz a{height:32px;display:inline-block;line-height:32px;padding:0 16px}.wy-menu-vertical{width:300px}.wy-menu-vertical header,.wy-menu-vertical p.caption{height:32px;display:inline-block;line-height:32px;padding:0 1.618em;margin-bottom:0;display:block;font-weight:bold;text-transform:uppercase;font-size:80%;color:#6f6f6f;white-space:nowrap}.wy-menu-vertical ul{margin-bottom:0}.wy-menu-vertical li.divide-top{border-top:solid 1px #404040}.wy-menu-vertical li.divide-bottom{border-bottom:solid 1px #404040}.wy-menu-vertical li.current{background:#e3e3e3}.wy-menu-vertical li.current a{color:gray;border-right:solid 1px #c9c9c9;padding:.4045em 2.427em}.wy-menu-vertical li.current a:hover{background:#d6d6d6}.wy-menu-vertical li code,.wy-menu-vertical li .rst-content tt,.rst-content .wy-menu-vertical li tt{border:none;background:inherit;color:inherit;padding-left:0;padding-right:0}.wy-menu-vertical li span.toctree-expand{display:block;float:left;margin-left:-1.2em;font-size:.8em;line-height:1.6em;color:#4d4d4d}.wy-menu-vertical li.on a,.wy-menu-vertical li.current>a{color:#404040;padding:.4045em 1.618em;font-weight:bold;position:relative;background:#fcfcfc;border:none;padding-left:1.618em -4px}.wy-menu-vertical li.on a:hover,.wy-menu-vertical li.current>a:hover{background:#fcfcfc}.wy-menu-vertical li.on a:hover span.toctree-expand,.wy-menu-vertical li.current>a:hover span.toctree-expand{color:gray}.wy-menu-vertical li.on a span.toctree-expand,.wy-menu-vertical li.current>a span.toctree-expand{display:block;font-size:.8em;line-height:1.6em;color:#333}.wy-menu-vertical li.toctree-l1.current>a{border-bottom:solid 1px #c9c9c9;border-top:solid 1px #c9c9c9}.wy-menu-vertical li.toctree-l1.current li.toctree-l2>ul,.wy-menu-vertical li.toctree-l2.current li.toctree-l3>ul{display:none}.wy-menu-vertical li.toctree-l1.current li.toctree-l2.current>ul,.wy-menu-vertical li.toctree-l2.current li.toctree-l3.current>ul{display:block}.wy-menu-vertical li.toctree-l2.current>a{background:#c9c9c9;padding:.4045em 2.427em}.wy-menu-vertical li.toctree-l2.current li.toctree-l3>a{display:block;background:#c9c9c9;padding:.4045em 4.045em}.wy-menu-vertical li.toctree-l2 a:hover span.toctree-expand{color:gray}.wy-menu-vertical li.toctree-l2 span.toctree-expand{color:#a3a3a3}.wy-menu-vertical li.toctree-l3{font-size:.9em}.wy-menu-vertical li.toctree-l3.current>a{background:#bdbdbd;padding:.4045em 4.045em}.wy-menu-vertical li.toctree-l3.current li.toctree-l4>a{display:block;background:#bdbdbd;padding:.4045em 5.663em}.wy-menu-vertical li.toctree-l3 a:hover span.toctree-expand{color:gray}.wy-menu-vertical li.toctree-l3 span.toctree-expand{color:#969696}.wy-menu-vertical li.toctree-l4{font-size:.9em}.wy-menu-vertical li.current ul{display:block}.wy-menu-vertical li ul{margin-bottom:0;display:none}.wy-menu-vertical li ul li a{margin-bottom:0;color:#b3b3b3;font-weight:normal}.wy-menu-vertical a{display:inline-block;line-height:18px;padding:.4045em 1.618em;display:block;position:relative;font-size:90%;color:#b3b3b3}.wy-menu-vertical a:hover{background-color:#4e4a4a;cursor:pointer}.wy-menu-vertical a:hover span.toctree-expand{color:#b3b3b3}.wy-menu-vertical a:active{background-color:#2980B9;cursor:pointer;color:#fff}.wy-menu-vertical a:active span.toctree-expand{color:#fff}.wy-side-nav-search{display:block;width:300px;padding:.809em;margin-bottom:.809em;z-index:200;background-color:#2980B9;text-align:center;padding:.809em;display:block;color:#fcfcfc;margin-bottom:.809em}.wy-side-nav-search input[type=text]{width:100%;border-radius:50px;padding:6px 12px;border-color:#2472a4}.wy-side-nav-search img{display:block;margin:auto auto .809em auto;height:45px;width:45px;background-color:#2980B9;padding:5px;border-radius:100%}.wy-side-nav-search>a,.wy-side-nav-search .wy-dropdown>a{color:#fcfcfc;font-size:100%;font-weight:bold;display:inline-block;padding:4px 6px;margin-bottom:.809em}.wy-side-nav-search>a:hover,.wy-side-nav-search .wy-dropdown>a:hover{background:rgba(255,255,255,0.1)}.wy-side-nav-search>a img.logo,.wy-side-nav-search .wy-dropdown>a img.logo{display:block;margin:0 auto;height:auto;width:auto;border-radius:0;max-width:100%;background:transparent}.wy-side-nav-search>a.icon img.logo,.wy-side-nav-search .wy-dropdown>a.icon img.logo{margin-top:.85em}.wy-side-nav-search>div.version{margin-top:-.4045em;margin-bottom:.809em;font-weight:normal;color:rgba(255,255,255,0.3)}.wy-nav .wy-menu-vertical header{color:#2980B9}.wy-nav .wy-menu-vertical a{color:#b3b3b3}.wy-nav .wy-menu-vertical a:hover{background-color:#2980B9;color:#fff}[data-menu-wrap]{-webkit-transition:all .2s ease-in;-moz-transition:all .2s ease-in;transition:all .2s ease-in;position:absolute;opacity:1;width:100%;opacity:0}[data-menu-wrap].move-center{left:0;right:auto;opacity:1}[data-menu-wrap].move-left{right:auto;left:-100%;opacity:0}[data-menu-wrap].move-right{right:-100%;left:auto;opacity:0}.wy-body-for-nav{background:#fcfcfc}.wy-grid-for-nav{position:absolute;width:100%;height:100%}.wy-nav-side{position:fixed;top:0;bottom:0;left:0;padding-bottom:2em;width:300px;overflow-x:hidden;overflow-y:hidden;min-height:100%;background:#343131;z-index:200}.wy-side-scroll{width:320px;position:relative;overflow-x:hidden;overflow-y:scroll;height:100%}.wy-nav-top{display:none;background:#2980B9;color:#fff;padding:.4045em .809em;position:relative;line-height:50px;text-align:center;font-size:100%;*zoom:1}.wy-nav-top:before,.wy-nav-top:after{display:table;content:""}.wy-nav-top:after{clear:both}.wy-nav-top a{color:#fff;font-weight:bold}.wy-nav-top img{margin-right:12px;height:45px;width:45px;background-color:#2980B9;padding:5px;border-radius:100%}.wy-nav-top i{font-size:30px;float:left;cursor:pointer;padding-top:inherit}.wy-nav-content-wrap{margin-left:300px;background:#fcfcfc;min-height:100%}.wy-nav-content{padding:1.618em 3.236em;height:100%;max-width:800px;margin:auto}.wy-body-mask{position:fixed;width:100%;height:100%;background:rgba(0,0,0,0.2);display:none;z-index:499}.wy-body-mask.on{display:block}footer{color:gray}footer p{margin-bottom:12px}footer span.commit code,footer span.commit .rst-content tt,.rst-content footer span.commit tt{padding:0px;font-family:Consolas,"Andale Mono WT","Andale Mono","Lucida Console","Lucida Sans Typewriter","DejaVu Sans Mono","Bitstream Vera Sans Mono","Liberation Mono","Nimbus Mono L",Monaco,"Courier New",Courier,monospace;font-size:1em;background:none;border:none;color:gray}.rst-footer-buttons{*zoom:1}.rst-footer-buttons:before,.rst-footer-buttons:after{width:100%}.rst-footer-buttons:before,.rst-footer-buttons:after{display:table;content:""}.rst-footer-buttons:after{clear:both}.rst-breadcrumbs-buttons{margin-top:12px;*zoom:1}.rst-breadcrumbs-buttons:before,.rst-breadcrumbs-buttons:after{display:table;content:""}.rst-breadcrumbs-buttons:after{clear:both}#search-results .search li{margin-bottom:24px;border-bottom:solid 1px #e1e4e5;padding-bottom:24px}#search-results .search li:first-child{border-top:solid 1px #e1e4e5;padding-top:24px}#search-results .search li a{font-size:120%;margin-bottom:12px;display:inline-block}#search-results .context{color:gray;font-size:90%}@media screen and (max-width: 768px){.wy-body-for-nav{background:#fcfcfc}.wy-nav-top{display:block}.wy-nav-side{left:-300px}.wy-nav-side.shift{width:85%;left:0}.wy-side-scroll{width:auto}.wy-side-nav-search{width:auto}.wy-menu.wy-menu-vertical{width:auto}.wy-nav-content-wrap{margin-left:0}.wy-nav-content-wrap .wy-nav-content{padding:1.618em}.wy-nav-content-wrap.shift{position:fixed;min-width:100%;left:85%;top:0;height:100%;overflow:hidden}}@media screen and (min-width: 1100px){.wy-nav-content-wrap{background:rgba(0,0,0,0.05)}.wy-nav-content{margin:0;background:#fcfcfc}}@media print{.rst-versions,footer,.wy-nav-side{display:none}.wy-nav-content-wrap{margin-left:0}}.rst-versions{position:fixed;bottom:0;left:0;overflow-y:scroll;width:300px;color:#fcfcfc;background:#1f1d1d;font-family:"Lato","proxima-nova","Helvetica Neue",Arial,sans-serif;z-index:400}.rst-versions a{color:#2980B9;text-decoration:none}.rst-versions .rst-badge-small{display:none}.rst-versions .rst-current-version{padding:12px;background-color:#272525;display:block;text-align:right;font-size:90%;cursor:pointer;color:#27AE60;*zoom:1}.rst-versions .rst-current-version:before,.rst-versions .rst-current-version:after{display:table;content:""}.rst-versions .rst-current-version:after{clear:both}.rst-versions .rst-current-version .fa,.rst-versions .rst-current-version .wy-menu-vertical li span.toctree-expand,.wy-menu-vertical li .rst-versions .rst-current-version span.toctree-expand,.rst-versions .rst-current-version .rst-content .admonition-title,.rst-content .rst-versions .rst-current-version .admonition-title,.rst-versions .rst-current-version .rst-content h1 .headerlink,.rst-content h1 .rst-versions .rst-current-version .headerlink,.rst-versions .rst-current-version .rst-content h2 .headerlink,.rst-content h2 .rst-versions .rst-current-version .headerlink,.rst-versions .rst-current-version .rst-content h3 .headerlink,.rst-content h3 .rst-versions .rst-current-version .headerlink,.rst-versions .rst-current-version .rst-content h4 .headerlink,.rst-content h4 .rst-versions .rst-current-version .headerlink,.rst-versions .rst-current-version .rst-content h5 .headerlink,.rst-content h5 .rst-versions .rst-current-version .headerlink,.rst-versions .rst-current-version .rst-content h6 .headerlink,.rst-content h6 .rst-versions .rst-current-version .headerlink,.rst-versions .rst-current-version .rst-content dl dt .headerlink,.rst-content dl dt .rst-versions .rst-current-version .headerlink,.rst-versions .rst-current-version .rst-content p.caption .headerlink,.rst-content p.caption .rst-versions .rst-current-version .headerlink,.rst-versions .rst-current-version .rst-content table>caption .headerlink,.rst-content table>caption .rst-versions .rst-current-version .headerlink,.rst-versions .rst-current-version .rst-content tt.download span:first-child,.rst-content tt.download .rst-versions .rst-current-version span:first-child,.rst-versions .rst-current-version .rst-content code.download span:first-child,.rst-content code.download .rst-versions .rst-current-version span:first-child,.rst-versions .rst-current-version .icon{color:#fcfcfc}.rst-versions .rst-current-version .fa-book,.rst-versions .rst-current-version .icon-book{float:left}.rst-versions .rst-current-version .icon-book{float:left}.rst-versions .rst-current-version.rst-out-of-date{background-color:#E74C3C;color:#fff}.rst-versions .rst-current-version.rst-active-old-version{background-color:#F1C40F;color:#000}.rst-versions.shift-up{max-height:100%}.rst-versions.shift-up .rst-other-versions{display:block}.rst-versions .rst-other-versions{font-size:90%;padding:12px;color:gray;display:none}.rst-versions .rst-other-versions hr{display:block;height:1px;border:0;margin:20px 0;padding:0;border-top:solid 1px #413d3d}.rst-versions .rst-other-versions dd{display:inline-block;margin:0}.rst-versions .rst-other-versions dd a{display:inline-block;padding:6px;color:#fcfcfc}.rst-versions.rst-badge{width:auto;bottom:20px;right:20px;left:auto;border:none;max-width:300px}.rst-versions.rst-badge .icon-book{float:none}.rst-versions.rst-badge .fa-book,.rst-versions.rst-badge .icon-book{float:none}.rst-versions.rst-badge.shift-up .rst-current-version{text-align:right}.rst-versions.rst-badge.shift-up .rst-current-version .fa-book,.rst-versions.rst-badge.shift-up .rst-current-version .icon-book{float:left}.rst-versions.rst-badge.shift-up .rst-current-version .icon-book{float:left}.rst-versions.rst-badge .rst-current-version{width:auto;height:30px;line-height:30px;padding:0 6px;display:block;text-align:center}@media screen and (max-width: 768px){.rst-versions{width:85%;display:none}.rst-versions.shift{display:block}}.rst-content img{max-width:100%;height:auto}.rst-content div.figure{margin-bottom:24px}.rst-content div.figure p.caption{font-style:italic}.rst-content div.figure p:last-child.caption{margin-bottom:0px}.rst-content div.figure.align-center{text-align:center}.rst-content .section>img,.rst-content .section>a>img{margin-bottom:24px}.rst-content abbr[title]{text-decoration:none}.rst-content.style-external-links a.reference.external:after{font-family:FontAwesome;content:"";color:#b3b3b3;vertical-align:super;font-size:60%;margin:0 .2em}.rst-content blockquote{margin-left:24px;line-height:24px;margin-bottom:24px}.rst-content pre.literal-block,.rst-content div[class^='highlight']{border:1px solid #e1e4e5;padding:0px;overflow-x:auto;margin:1px 0 24px 0}.rst-content pre.literal-block div[class^='highlight'],.rst-content div[class^='highlight'] div[class^='highlight']{border:none;margin:0}.rst-content div[class^='highlight'] td.code{width:100%}.rst-content .linenodiv pre{border-right:solid 1px #e6e9ea;margin:0;padding:12px 12px;font-family:Consolas,"Andale Mono WT","Andale Mono","Lucida Console","Lucida Sans Typewriter","DejaVu Sans Mono","Bitstream Vera Sans Mono","Liberation Mono","Nimbus Mono L",Monaco,"Courier New",Courier,monospace;user-select:none;pointer-events:none}.rst-content div[class^='highlight'] pre{white-space:pre;margin:0;padding:12px 12px;font-family:Consolas,"Andale Mono WT","Andale Mono","Lucida Console","Lucida Sans Typewriter","DejaVu Sans Mono","Bitstream Vera Sans Mono","Liberation Mono","Nimbus Mono L",Monaco,"Courier New",Courier,monospace;display:block;overflow:auto}.rst-content pre.literal-block,.rst-content div[class^='highlight'] pre,.rst-content .linenodiv pre{font-size:12px;line-height:normal}@media print{.rst-content .codeblock,.rst-content div[class^='highlight'],.rst-content div[class^='highlight'] pre{white-space:pre-wrap}}.rst-content .note .last,.rst-content .attention .last,.rst-content .caution .last,.rst-content .danger .last,.rst-content .error .last,.rst-content .hint .last,.rst-content .important .last,.rst-content .tip .last,.rst-content .warning .last,.rst-content .seealso .last,.rst-content .admonition-todo .last,.rst-content .admonition .last{margin-bottom:0}.rst-content .admonition-title:before{margin-right:4px}.rst-content .admonition table{border-color:rgba(0,0,0,0.1)}.rst-content .admonition table td,.rst-content .admonition table th{background:transparent !important;border-color:rgba(0,0,0,0.1) !important}.rst-content .section ol.loweralpha,.rst-content .section ol.loweralpha li{list-style:lower-alpha}.rst-content .section ol.upperalpha,.rst-content .section ol.upperalpha li{list-style:upper-alpha}.rst-content .section ol p,.rst-content .section ul p{margin-bottom:12px}.rst-content .line-block{margin-left:0px;margin-bottom:24px}.rst-content .line-block .line-block{margin-left:24px;margin-bottom:0px}.rst-content .topic-title{font-weight:bold;margin-bottom:12px}.rst-content .toc-backref{color:#404040}.rst-content .align-right{float:right;margin:0px 0px 24px 24px}.rst-content .align-left{float:left;margin:0px 24px 24px 0px}.rst-content .align-center{margin:auto;display:block}.rst-content h1 .headerlink,.rst-content h2 .headerlink,.rst-content .toctree-wrapper p.caption .headerlink,.rst-content h3 .headerlink,.rst-content h4 .headerlink,.rst-content h5 .headerlink,.rst-content h6 .headerlink,.rst-content dl dt .headerlink,.rst-content p.caption .headerlink,.rst-content table>caption .headerlink{visibility:hidden;font-size:14px}.rst-content h1 .headerlink:after,.rst-content h2 .headerlink:after,.rst-content .toctree-wrapper p.caption .headerlink:after,.rst-content h3 .headerlink:after,.rst-content h4 .headerlink:after,.rst-content h5 .headerlink:after,.rst-content h6 .headerlink:after,.rst-content dl dt .headerlink:after,.rst-content p.caption .headerlink:after,.rst-content table>caption .headerlink:after{content:"";font-family:FontAwesome}.rst-content h1:hover .headerlink:after,.rst-content h2:hover .headerlink:after,.rst-content .toctree-wrapper p.caption:hover .headerlink:after,.rst-content h3:hover .headerlink:after,.rst-content h4:hover .headerlink:after,.rst-content h5:hover .headerlink:after,.rst-content h6:hover .headerlink:after,.rst-content dl dt:hover .headerlink:after,.rst-content p.caption:hover .headerlink:after,.rst-content table>caption:hover .headerlink:after{visibility:visible}.rst-content table>caption .headerlink:after{font-size:12px}.rst-content .centered{text-align:center}.rst-content .sidebar{float:right;width:40%;display:block;margin:0 0 24px 24px;padding:24px;background:#f3f6f6;border:solid 1px #e1e4e5}.rst-content .sidebar p,.rst-content .sidebar ul,.rst-content .sidebar dl{font-size:90%}.rst-content .sidebar .last{margin-bottom:0}.rst-content .sidebar .sidebar-title{display:block;font-family:"Roboto Slab","ff-tisa-web-pro","Georgia",Arial,sans-serif;font-weight:bold;background:#e1e4e5;padding:6px 12px;margin:-24px;margin-bottom:24px;font-size:100%}.rst-content .highlighted{background:#F1C40F;display:inline-block;font-weight:bold;padding:0 6px}.rst-content .footnote-reference,.rst-content .citation-reference{vertical-align:baseline;position:relative;top:-0.4em;line-height:0;font-size:90%}.rst-content table.docutils.citation,.rst-content table.docutils.footnote{background:none;border:none;color:gray}.rst-content table.docutils.citation td,.rst-content table.docutils.citation tr,.rst-content table.docutils.footnote td,.rst-content table.docutils.footnote tr{border:none;background-color:transparent !important;white-space:normal}.rst-content table.docutils.citation td.label,.rst-content table.docutils.footnote td.label{padding-left:0;padding-right:0;vertical-align:top}.rst-content table.docutils.citation tt,.rst-content table.docutils.citation code,.rst-content table.docutils.footnote tt,.rst-content table.docutils.footnote code{color:#555}.rst-content .wy-table-responsive.citation,.rst-content .wy-table-responsive.footnote{margin-bottom:0}.rst-content .wy-table-responsive.citation+:not(.citation),.rst-content .wy-table-responsive.footnote+:not(.footnote){margin-top:24px}.rst-content .wy-table-responsive.citation:last-child,.rst-content .wy-table-responsive.footnote:last-child{margin-bottom:24px}.rst-content table.docutils th{border-color:#e1e4e5}.rst-content table.field-list{border:none}.rst-content table.field-list td{border:none}.rst-content table.field-list td>strong{display:inline-block}.rst-content table.field-list .field-name{padding-right:10px;text-align:left;white-space:nowrap}.rst-content table.field-list .field-body{text-align:left}.rst-content tt,.rst-content tt,.rst-content code{color:#000;padding:2px 5px}.rst-content tt big,.rst-content tt em,.rst-content tt big,.rst-content code big,.rst-content tt em,.rst-content code em{font-size:100% !important;line-height:normal}.rst-content tt.literal,.rst-content tt.literal,.rst-content code.literal{color:#E74C3C}.rst-content tt.xref,a .rst-content tt,.rst-content tt.xref,.rst-content code.xref,a .rst-content tt,a .rst-content code{font-weight:bold;color:#404040}.rst-content a tt,.rst-content a tt,.rst-content a code{color:#2980B9}.rst-content dl{margin-bottom:24px}.rst-content dl dt{font-weight:bold}.rst-content dl p,.rst-content dl table,.rst-content dl ul,.rst-content dl ol{margin-bottom:12px !important}.rst-content dl dd{margin:0 0 12px 24px}.rst-content dl:not(.docutils){margin-bottom:24px}.rst-content dl:not(.docutils) dt{display:table;margin:6px 0;font-size:90%;line-height:normal;background:#e7f2fa;color:#2980B9;border-top:solid 3px #6ab0de;padding:6px;position:relative}.rst-content dl:not(.docutils) dt:before{color:#6ab0de}.rst-content dl:not(.docutils) dt .headerlink{color:#404040;font-size:100% !important}.rst-content dl:not(.docutils) dl dt{margin-bottom:6px;border:none;border-left:solid 3px #ccc;background:#f0f0f0;color:#555}.rst-content dl:not(.docutils) dl dt .headerlink{color:#404040;font-size:100% !important}.rst-content dl:not(.docutils) dt:first-child{margin-top:0}.rst-content dl:not(.docutils) tt,.rst-content dl:not(.docutils) tt,.rst-content dl:not(.docutils) code{font-weight:bold}.rst-content dl:not(.docutils) tt.descname,.rst-content dl:not(.docutils) tt.descclassname,.rst-content dl:not(.docutils) tt.descname,.rst-content dl:not(.docutils) code.descname,.rst-content dl:not(.docutils) tt.descclassname,.rst-content dl:not(.docutils) code.descclassname{background-color:transparent;border:none;padding:0;font-size:100% !important}.rst-content dl:not(.docutils) tt.descname,.rst-content dl:not(.docutils) tt.descname,.rst-content dl:not(.docutils) code.descname{font-weight:bold}.rst-content dl:not(.docutils) .optional{display:inline-block;padding:0 4px;color:#000;font-weight:bold}.rst-content dl:not(.docutils) .property{display:inline-block;padding-right:8px}.rst-content .viewcode-link,.rst-content .viewcode-back{display:inline-block;color:#27AE60;font-size:80%;padding-left:24px}.rst-content .viewcode-back{display:block;float:right}.rst-content p.rubric{margin-bottom:12px;font-weight:bold}.rst-content tt.download,.rst-content code.download{background:inherit;padding:inherit;font-weight:normal;font-family:inherit;font-size:inherit;color:inherit;border:inherit;white-space:inherit}.rst-content tt.download span:first-child,.rst-content code.download span:first-child{-webkit-font-smoothing:subpixel-antialiased}.rst-content tt.download span:first-child:before,.rst-content code.download span:first-child:before{margin-right:4px}.rst-content .guilabel{border:1px solid #7fbbe3;background:#e7f2fa;font-size:80%;font-weight:700;border-radius:4px;padding:2.4px 6px;margin:auto 2px}.rst-content .versionmodified{font-style:italic}@media screen and (max-width: 480px){.rst-content .sidebar{width:100%}}span[id*='MathJax-Span']{color:#404040}.math{text-align:center}@font-face{font-family:"Inconsolata";font-style:normal;font-weight:400;src:local("Inconsolata"),local("Inconsolata-Regular"),url(../fonts/Inconsolata-Regular.ttf) format("truetype")}@font-face{font-family:"Inconsolata";font-style:normal;font-weight:700;src:local("Inconsolata Bold"),local("Inconsolata-Bold"),url(../fonts/Inconsolata-Bold.ttf) format("truetype")}@font-face{font-family:"Lato";font-style:normal;font-weight:400;src:local("Lato Regular"),local("Lato-Regular"),url(../fonts/Lato-Regular.ttf) format("truetype")}@font-face{font-family:"Lato";font-style:normal;font-weight:700;src:local("Lato Bold"),local("Lato-Bold"),url(../fonts/Lato-Bold.ttf) format("truetype")}@font-face{font-family:"Lato";font-style:italic;font-weight:400;src:local("Lato Italic"),local("Lato-Italic"),url(../fonts/Lato-Italic.ttf) format("truetype")}@font-face{font-family:"Lato";font-style:italic;font-weight:700;src:local("Lato Bold Italic"),local("Lato-BoldItalic"),url(../fonts/Lato-BoldItalic.ttf) format("truetype")}@font-face{font-family:"Roboto Slab";font-style:normal;font-weight:400;src:local("Roboto Slab Regular"),local("RobotoSlab-Regular"),url(../fonts/RobotoSlab-Regular.ttf) format("truetype")}@font-face{font-family:"Roboto Slab";font-style:normal;font-weight:700;src:local("Roboto Slab Bold"),local("RobotoSlab-Bold"),url(../fonts/RobotoSlab-Bold.ttf) format("truetype")} diff --git a/nsx/nsx_policy/_static/doctools.js b/nsx/nsx_policy/_static/doctools.js new file mode 100644 index 00000000..d8928926 --- /dev/null +++ b/nsx/nsx_policy/_static/doctools.js @@ -0,0 +1,313 @@ +/* + * doctools.js + * ~~~~~~~~~~~ + * + * Sphinx JavaScript utilities for all documentation. + * + * :copyright: Copyright 2007-2018 by the Sphinx team, see AUTHORS. + * :license: BSD, see LICENSE for details. + * + */ + +/** + * select a different prefix for underscore + */ +$u = _.noConflict(); + +/** + * make the code below compatible with browsers without + * an installed firebug like debugger +if (!window.console || !console.firebug) { + var names = ["log", "debug", "info", "warn", "error", "assert", "dir", + "dirxml", "group", "groupEnd", "time", "timeEnd", "count", "trace", + "profile", "profileEnd"]; + window.console = {}; + for (var i = 0; i < names.length; ++i) + window.console[names[i]] = function() {}; +} + */ + +/** + * small helper function to urldecode strings + */ +jQuery.urldecode = function(x) { + return decodeURIComponent(x).replace(/\+/g, ' '); +}; + +/** + * small helper function to urlencode strings + */ +jQuery.urlencode = encodeURIComponent; + +/** + * This function returns the parsed url parameters of the + * current request. Multiple values per key are supported, + * it will always return arrays of strings for the value parts. + */ +jQuery.getQueryParameters = function(s) { + if (typeof s === 'undefined') + s = document.location.search; + var parts = s.substr(s.indexOf('?') + 1).split('&'); + var result = {}; + for (var i = 0; i < parts.length; i++) { + var tmp = parts[i].split('=', 2); + var key = jQuery.urldecode(tmp[0]); + var value = jQuery.urldecode(tmp[1]); + if (key in result) + result[key].push(value); + else + result[key] = [value]; + } + return result; +}; + +/** + * highlight a given string on a jquery object by wrapping it in + * span elements with the given class name. + */ +jQuery.fn.highlightText = function(text, className) { + function highlight(node, addItems) { + if (node.nodeType === 3) { + var val = node.nodeValue; + var pos = val.toLowerCase().indexOf(text); + if (pos >= 0 && + !jQuery(node.parentNode).hasClass(className) && + !jQuery(node.parentNode).hasClass("nohighlight")) { + var span; + var isInSVG = jQuery(node).closest("body, svg, foreignObject").is("svg"); + if (isInSVG) { + span = document.createElementNS("http://www.w3.org/2000/svg", "tspan"); + } else { + span = document.createElement("span"); + span.className = className; + } + span.appendChild(document.createTextNode(val.substr(pos, text.length))); + node.parentNode.insertBefore(span, node.parentNode.insertBefore( + document.createTextNode(val.substr(pos + text.length)), + node.nextSibling)); + node.nodeValue = val.substr(0, pos); + if (isInSVG) { + var bbox = span.getBBox(); + var rect = document.createElementNS("http://www.w3.org/2000/svg", "rect"); + rect.x.baseVal.value = bbox.x; + rect.y.baseVal.value = bbox.y; + rect.width.baseVal.value = bbox.width; + rect.height.baseVal.value = bbox.height; + rect.setAttribute('class', className); + var parentOfText = node.parentNode.parentNode; + addItems.push({ + "parent": node.parentNode, + "target": rect}); + } + } + } + else if (!jQuery(node).is("button, select, textarea")) { + jQuery.each(node.childNodes, function() { + highlight(this, addItems); + }); + } + } + var addItems = []; + var result = this.each(function() { + highlight(this, addItems); + }); + for (var i = 0; i < addItems.length; ++i) { + jQuery(addItems[i].parent).before(addItems[i].target); + } + return result; +}; + +/* + * backward compatibility for jQuery.browser + * This will be supported until firefox bug is fixed. + */ +if (!jQuery.browser) { + jQuery.uaMatch = function(ua) { + ua = ua.toLowerCase(); + + var match = /(chrome)[ \/]([\w.]+)/.exec(ua) || + /(webkit)[ \/]([\w.]+)/.exec(ua) || + /(opera)(?:.*version|)[ \/]([\w.]+)/.exec(ua) || + /(msie) ([\w.]+)/.exec(ua) || + ua.indexOf("compatible") < 0 && /(mozilla)(?:.*? rv:([\w.]+)|)/.exec(ua) || + []; + + return { + browser: match[ 1 ] || "", + version: match[ 2 ] || "0" + }; + }; + jQuery.browser = {}; + jQuery.browser[jQuery.uaMatch(navigator.userAgent).browser] = true; +} + +/** + * Small JavaScript module for the documentation. + */ +var Documentation = { + + init : function() { + this.fixFirefoxAnchorBug(); + this.highlightSearchWords(); + this.initIndexTable(); + + }, + + /** + * i18n support + */ + TRANSLATIONS : {}, + PLURAL_EXPR : function(n) { return n === 1 ? 0 : 1; }, + LOCALE : 'unknown', + + // gettext and ngettext don't access this so that the functions + // can safely bound to a different name (_ = Documentation.gettext) + gettext : function(string) { + var translated = Documentation.TRANSLATIONS[string]; + if (typeof translated === 'undefined') + return string; + return (typeof translated === 'string') ? translated : translated[0]; + }, + + ngettext : function(singular, plural, n) { + var translated = Documentation.TRANSLATIONS[singular]; + if (typeof translated === 'undefined') + return (n == 1) ? singular : plural; + return translated[Documentation.PLURALEXPR(n)]; + }, + + addTranslations : function(catalog) { + for (var key in catalog.messages) + this.TRANSLATIONS[key] = catalog.messages[key]; + this.PLURAL_EXPR = new Function('n', 'return +(' + catalog.plural_expr + ')'); + this.LOCALE = catalog.locale; + }, + + /** + * add context elements like header anchor links + */ + addContextElements : function() { + $('div[id] > :header:first').each(function() { + $('\u00B6'). + attr('href', '#' + this.id). + attr('title', _('Permalink to this headline')). + appendTo(this); + }); + $('dt[id]').each(function() { + $('\u00B6'). + attr('href', '#' + this.id). + attr('title', _('Permalink to this definition')). + appendTo(this); + }); + }, + + /** + * workaround a firefox stupidity + * see: https://bugzilla.mozilla.org/show_bug.cgi?id=645075 + */ + fixFirefoxAnchorBug : function() { + if (document.location.hash && $.browser.mozilla) + window.setTimeout(function() { + document.location.href += ''; + }, 10); + }, + + /** + * highlight the search words provided in the url in the text + */ + highlightSearchWords : function() { + var params = $.getQueryParameters(); + var terms = (params.highlight) ? params.highlight[0].split(/\s+/) : []; + if (terms.length) { + var body = $('div.body'); + if (!body.length) { + body = $('body'); + } + window.setTimeout(function() { + $.each(terms, function() { + body.highlightText(this.toLowerCase(), 'highlighted'); + }); + }, 10); + $('') + .appendTo($('#searchbox')); + } + }, + + /** + * init the domain index toggle buttons + */ + initIndexTable : function() { + var togglers = $('img.toggler').click(function() { + var src = $(this).attr('src'); + var idnum = $(this).attr('id').substr(7); + $('tr.cg-' + idnum).toggle(); + if (src.substr(-9) === 'minus.png') + $(this).attr('src', src.substr(0, src.length-9) + 'plus.png'); + else + $(this).attr('src', src.substr(0, src.length-8) + 'minus.png'); + }).css('display', ''); + if (DOCUMENTATION_OPTIONS.COLLAPSE_INDEX) { + togglers.click(); + } + }, + + /** + * helper function to hide the search marks again + */ + hideSearchWords : function() { + $('#searchbox .highlight-link').fadeOut(300); + $('span.highlighted').removeClass('highlighted'); + }, + + /** + * make the url absolute + */ + makeURL : function(relativeURL) { + return DOCUMENTATION_OPTIONS.URL_ROOT + '/' + relativeURL; + }, + + /** + * get the current relative url + */ + getCurrentURL : function() { + var path = document.location.pathname; + var parts = path.split(/\//); + $.each(DOCUMENTATION_OPTIONS.URL_ROOT.split(/\//), function() { + if (this === '..') + parts.pop(); + }); + var url = parts.join('/'); + return path.substring(url.lastIndexOf('/') + 1, path.length - 1); + }, + + initOnKeyListeners: function() { + $(document).keyup(function(event) { + var activeElementType = document.activeElement.tagName; + // don't navigate when in search box or textarea + if (activeElementType !== 'TEXTAREA' && activeElementType !== 'INPUT' && activeElementType !== 'SELECT') { + switch (event.keyCode) { + case 37: // left + var prevHref = $('link[rel="prev"]').prop('href'); + if (prevHref) { + window.location.href = prevHref; + return false; + } + case 39: // right + var nextHref = $('link[rel="next"]').prop('href'); + if (nextHref) { + window.location.href = nextHref; + return false; + } + } + } + }); + } +}; + +// quick alias for translations +_ = Documentation.gettext; + +$(document).ready(function() { + Documentation.init(); +}); \ No newline at end of file diff --git a/nsx/nsx_policy/_static/documentation_options.js b/nsx/nsx_policy/_static/documentation_options.js new file mode 100644 index 00000000..8ba230f5 --- /dev/null +++ b/nsx/nsx_policy/_static/documentation_options.js @@ -0,0 +1,9 @@ +var DOCUMENTATION_OPTIONS = { + URL_ROOT: '', + VERSION: '2.2.0.0.0', + LANGUAGE: 'en', + COLLAPSE_INDEX: false, + FILE_SUFFIX: '.html', + HAS_SOURCE: true, + SOURCELINK_SUFFIX: '.txt' +}; \ No newline at end of file diff --git a/nsx/nsx_policy/_static/down-pressed.png b/nsx/nsx_policy/_static/down-pressed.png new file mode 100644 index 00000000..5756c8ca Binary files /dev/null and b/nsx/nsx_policy/_static/down-pressed.png differ diff --git a/nsx/nsx_policy/_static/down.png b/nsx/nsx_policy/_static/down.png new file mode 100644 index 00000000..1b3bdad2 Binary files /dev/null and b/nsx/nsx_policy/_static/down.png differ diff --git a/nsx/nsx_policy/_static/file.png b/nsx/nsx_policy/_static/file.png new file mode 100644 index 00000000..a858a410 Binary files /dev/null and b/nsx/nsx_policy/_static/file.png differ diff --git a/nsx/nsx_policy/_static/fonts/Inconsolata-Bold.ttf b/nsx/nsx_policy/_static/fonts/Inconsolata-Bold.ttf new file mode 100644 index 00000000..9addc892 Binary files /dev/null and b/nsx/nsx_policy/_static/fonts/Inconsolata-Bold.ttf differ diff --git a/nsx/nsx_policy/_static/fonts/Inconsolata-Regular.ttf b/nsx/nsx_policy/_static/fonts/Inconsolata-Regular.ttf new file mode 100644 index 00000000..592ccd20 Binary files /dev/null and b/nsx/nsx_policy/_static/fonts/Inconsolata-Regular.ttf differ diff --git a/nsx/nsx_policy/_static/fonts/Lato-Bold.ttf b/nsx/nsx_policy/_static/fonts/Lato-Bold.ttf new file mode 100644 index 00000000..1d23c706 Binary files /dev/null and b/nsx/nsx_policy/_static/fonts/Lato-Bold.ttf differ diff --git a/nsx/nsx_policy/_static/fonts/Lato-BoldItalic.ttf b/nsx/nsx_policy/_static/fonts/Lato-BoldItalic.ttf new file mode 100644 index 00000000..a3b8e332 Binary files /dev/null and b/nsx/nsx_policy/_static/fonts/Lato-BoldItalic.ttf differ diff --git a/nsx/nsx_policy/_static/fonts/Lato-Italic.ttf b/nsx/nsx_policy/_static/fonts/Lato-Italic.ttf new file mode 100644 index 00000000..70a870f4 Binary files /dev/null and b/nsx/nsx_policy/_static/fonts/Lato-Italic.ttf differ diff --git a/nsx/nsx_policy/_static/fonts/Lato-Regular.ttf b/nsx/nsx_policy/_static/fonts/Lato-Regular.ttf new file mode 100644 index 00000000..0f3d0f83 Binary files /dev/null and b/nsx/nsx_policy/_static/fonts/Lato-Regular.ttf differ diff --git a/nsx/nsx_policy/_static/fonts/RobotoSlab-Bold.ttf b/nsx/nsx_policy/_static/fonts/RobotoSlab-Bold.ttf new file mode 100644 index 00000000..df5d1df2 Binary files /dev/null and b/nsx/nsx_policy/_static/fonts/RobotoSlab-Bold.ttf differ diff --git a/nsx/nsx_policy/_static/fonts/RobotoSlab-Regular.ttf b/nsx/nsx_policy/_static/fonts/RobotoSlab-Regular.ttf new file mode 100644 index 00000000..eb52a790 Binary files /dev/null and b/nsx/nsx_policy/_static/fonts/RobotoSlab-Regular.ttf differ diff --git a/nsx/nsx_policy/_static/fonts/fontawesome-webfont.eot b/nsx/nsx_policy/_static/fonts/fontawesome-webfont.eot new file mode 100644 index 00000000..e9f60ca9 Binary files /dev/null and b/nsx/nsx_policy/_static/fonts/fontawesome-webfont.eot differ diff --git a/nsx/nsx_policy/_static/fonts/fontawesome-webfont.svg b/nsx/nsx_policy/_static/fonts/fontawesome-webfont.svg new file mode 100644 index 00000000..855c845e --- /dev/null +++ b/nsx/nsx_policy/_static/fonts/fontawesome-webfont.svg @@ -0,0 +1,2671 @@ + + + + +Created by FontForge 20120731 at Mon Oct 24 17:37:40 2016 + By ,,, +Copyright Dave Gandy 2016. All rights reserved. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/nsx/nsx_policy/_static/fonts/fontawesome-webfont.ttf b/nsx/nsx_policy/_static/fonts/fontawesome-webfont.ttf new file mode 100644 index 00000000..35acda2f Binary files /dev/null and b/nsx/nsx_policy/_static/fonts/fontawesome-webfont.ttf differ diff --git a/nsx/nsx_policy/_static/fonts/fontawesome-webfont.woff b/nsx/nsx_policy/_static/fonts/fontawesome-webfont.woff new file mode 100644 index 00000000..400014a4 Binary files /dev/null and b/nsx/nsx_policy/_static/fonts/fontawesome-webfont.woff differ diff --git a/nsx/nsx_policy/_static/fonts/fontawesome-webfont.woff2 b/nsx/nsx_policy/_static/fonts/fontawesome-webfont.woff2 new file mode 100644 index 00000000..4d13fc60 Binary files /dev/null and b/nsx/nsx_policy/_static/fonts/fontawesome-webfont.woff2 differ diff --git a/nsx/nsx_policy/_static/jquery-3.2.1.js b/nsx/nsx_policy/_static/jquery-3.2.1.js new file mode 100644 index 00000000..d2d8ca47 --- /dev/null +++ b/nsx/nsx_policy/_static/jquery-3.2.1.js @@ -0,0 +1,10253 @@ +/*! + * jQuery JavaScript Library v3.2.1 + * https://jquery.com/ + * + * Includes Sizzle.js + * https://sizzlejs.com/ + * + * Copyright JS Foundation and other contributors + * Released under the MIT license + * https://jquery.org/license + * + * Date: 2017-03-20T18:59Z + */ +( function( global, factory ) { + + "use strict"; + + if ( typeof module === "object" && typeof module.exports === "object" ) { + + // For CommonJS and CommonJS-like environments where a proper `window` + // is present, execute the factory and get jQuery. + // For environments that do not have a `window` with a `document` + // (such as Node.js), expose a factory as module.exports. + // This accentuates the need for the creation of a real `window`. + // e.g. var jQuery = require("jquery")(window); + // See ticket #14549 for more info. + module.exports = global.document ? + factory( global, true ) : + function( w ) { + if ( !w.document ) { + throw new Error( "jQuery requires a window with a document" ); + } + return factory( w ); + }; + } else { + factory( global ); + } + +// Pass this if window is not defined yet +} )( typeof window !== "undefined" ? window : this, function( window, noGlobal ) { + +// Edge <= 12 - 13+, Firefox <=18 - 45+, IE 10 - 11, Safari 5.1 - 9+, iOS 6 - 9.1 +// throw exceptions when non-strict code (e.g., ASP.NET 4.5) accesses strict mode +// arguments.callee.caller (trac-13335). But as of jQuery 3.0 (2016), strict mode should be common +// enough that all such attempts are guarded in a try block. +"use strict"; + +var arr = []; + +var document = window.document; + +var getProto = Object.getPrototypeOf; + +var slice = arr.slice; + +var concat = arr.concat; + +var push = arr.push; + +var indexOf = arr.indexOf; + +var class2type = {}; + +var toString = class2type.toString; + +var hasOwn = class2type.hasOwnProperty; + +var fnToString = hasOwn.toString; + +var ObjectFunctionString = fnToString.call( Object ); + +var support = {}; + + + + function DOMEval( code, doc ) { + doc = doc || document; + + var script = doc.createElement( "script" ); + + script.text = code; + doc.head.appendChild( script ).parentNode.removeChild( script ); + } +/* global Symbol */ +// Defining this global in .eslintrc.json would create a danger of using the global +// unguarded in another place, it seems safer to define global only for this module + + + +var + version = "3.2.1", + + // Define a local copy of jQuery + jQuery = function( selector, context ) { + + // The jQuery object is actually just the init constructor 'enhanced' + // Need init if jQuery is called (just allow error to be thrown if not included) + return new jQuery.fn.init( selector, context ); + }, + + // Support: Android <=4.0 only + // Make sure we trim BOM and NBSP + rtrim = /^[\s\uFEFF\xA0]+|[\s\uFEFF\xA0]+$/g, + + // Matches dashed string for camelizing + rmsPrefix = /^-ms-/, + rdashAlpha = /-([a-z])/g, + + // Used by jQuery.camelCase as callback to replace() + fcamelCase = function( all, letter ) { + return letter.toUpperCase(); + }; + +jQuery.fn = jQuery.prototype = { + + // The current version of jQuery being used + jquery: version, + + constructor: jQuery, + + // The default length of a jQuery object is 0 + length: 0, + + toArray: function() { + return slice.call( this ); + }, + + // Get the Nth element in the matched element set OR + // Get the whole matched element set as a clean array + get: function( num ) { + + // Return all the elements in a clean array + if ( num == null ) { + return slice.call( this ); + } + + // Return just the one element from the set + return num < 0 ? this[ num + this.length ] : this[ num ]; + }, + + // Take an array of elements and push it onto the stack + // (returning the new matched element set) + pushStack: function( elems ) { + + // Build a new jQuery matched element set + var ret = jQuery.merge( this.constructor(), elems ); + + // Add the old object onto the stack (as a reference) + ret.prevObject = this; + + // Return the newly-formed element set + return ret; + }, + + // Execute a callback for every element in the matched set. + each: function( callback ) { + return jQuery.each( this, callback ); + }, + + map: function( callback ) { + return this.pushStack( jQuery.map( this, function( elem, i ) { + return callback.call( elem, i, elem ); + } ) ); + }, + + slice: function() { + return this.pushStack( slice.apply( this, arguments ) ); + }, + + first: function() { + return this.eq( 0 ); + }, + + last: function() { + return this.eq( -1 ); + }, + + eq: function( i ) { + var len = this.length, + j = +i + ( i < 0 ? len : 0 ); + return this.pushStack( j >= 0 && j < len ? [ this[ j ] ] : [] ); + }, + + end: function() { + return this.prevObject || this.constructor(); + }, + + // For internal use only. + // Behaves like an Array's method, not like a jQuery method. + push: push, + sort: arr.sort, + splice: arr.splice +}; + +jQuery.extend = jQuery.fn.extend = function() { + var options, name, src, copy, copyIsArray, clone, + target = arguments[ 0 ] || {}, + i = 1, + length = arguments.length, + deep = false; + + // Handle a deep copy situation + if ( typeof target === "boolean" ) { + deep = target; + + // Skip the boolean and the target + target = arguments[ i ] || {}; + i++; + } + + // Handle case when target is a string or something (possible in deep copy) + if ( typeof target !== "object" && !jQuery.isFunction( target ) ) { + target = {}; + } + + // Extend jQuery itself if only one argument is passed + if ( i === length ) { + target = this; + i--; + } + + for ( ; i < length; i++ ) { + + // Only deal with non-null/undefined values + if ( ( options = arguments[ i ] ) != null ) { + + // Extend the base object + for ( name in options ) { + src = target[ name ]; + copy = options[ name ]; + + // Prevent never-ending loop + if ( target === copy ) { + continue; + } + + // Recurse if we're merging plain objects or arrays + if ( deep && copy && ( jQuery.isPlainObject( copy ) || + ( copyIsArray = Array.isArray( copy ) ) ) ) { + + if ( copyIsArray ) { + copyIsArray = false; + clone = src && Array.isArray( src ) ? src : []; + + } else { + clone = src && jQuery.isPlainObject( src ) ? src : {}; + } + + // Never move original objects, clone them + target[ name ] = jQuery.extend( deep, clone, copy ); + + // Don't bring in undefined values + } else if ( copy !== undefined ) { + target[ name ] = copy; + } + } + } + } + + // Return the modified object + return target; +}; + +jQuery.extend( { + + // Unique for each copy of jQuery on the page + expando: "jQuery" + ( version + Math.random() ).replace( /\D/g, "" ), + + // Assume jQuery is ready without the ready module + isReady: true, + + error: function( msg ) { + throw new Error( msg ); + }, + + noop: function() {}, + + isFunction: function( obj ) { + return jQuery.type( obj ) === "function"; + }, + + isWindow: function( obj ) { + return obj != null && obj === obj.window; + }, + + isNumeric: function( obj ) { + + // As of jQuery 3.0, isNumeric is limited to + // strings and numbers (primitives or objects) + // that can be coerced to finite numbers (gh-2662) + var type = jQuery.type( obj ); + return ( type === "number" || type === "string" ) && + + // parseFloat NaNs numeric-cast false positives ("") + // ...but misinterprets leading-number strings, particularly hex literals ("0x...") + // subtraction forces infinities to NaN + !isNaN( obj - parseFloat( obj ) ); + }, + + isPlainObject: function( obj ) { + var proto, Ctor; + + // Detect obvious negatives + // Use toString instead of jQuery.type to catch host objects + if ( !obj || toString.call( obj ) !== "[object Object]" ) { + return false; + } + + proto = getProto( obj ); + + // Objects with no prototype (e.g., `Object.create( null )`) are plain + if ( !proto ) { + return true; + } + + // Objects with prototype are plain iff they were constructed by a global Object function + Ctor = hasOwn.call( proto, "constructor" ) && proto.constructor; + return typeof Ctor === "function" && fnToString.call( Ctor ) === ObjectFunctionString; + }, + + isEmptyObject: function( obj ) { + + /* eslint-disable no-unused-vars */ + // See https://github.com/eslint/eslint/issues/6125 + var name; + + for ( name in obj ) { + return false; + } + return true; + }, + + type: function( obj ) { + if ( obj == null ) { + return obj + ""; + } + + // Support: Android <=2.3 only (functionish RegExp) + return typeof obj === "object" || typeof obj === "function" ? + class2type[ toString.call( obj ) ] || "object" : + typeof obj; + }, + + // Evaluates a script in a global context + globalEval: function( code ) { + DOMEval( code ); + }, + + // Convert dashed to camelCase; used by the css and data modules + // Support: IE <=9 - 11, Edge 12 - 13 + // Microsoft forgot to hump their vendor prefix (#9572) + camelCase: function( string ) { + return string.replace( rmsPrefix, "ms-" ).replace( rdashAlpha, fcamelCase ); + }, + + each: function( obj, callback ) { + var length, i = 0; + + if ( isArrayLike( obj ) ) { + length = obj.length; + for ( ; i < length; i++ ) { + if ( callback.call( obj[ i ], i, obj[ i ] ) === false ) { + break; + } + } + } else { + for ( i in obj ) { + if ( callback.call( obj[ i ], i, obj[ i ] ) === false ) { + break; + } + } + } + + return obj; + }, + + // Support: Android <=4.0 only + trim: function( text ) { + return text == null ? + "" : + ( text + "" ).replace( rtrim, "" ); + }, + + // results is for internal usage only + makeArray: function( arr, results ) { + var ret = results || []; + + if ( arr != null ) { + if ( isArrayLike( Object( arr ) ) ) { + jQuery.merge( ret, + typeof arr === "string" ? + [ arr ] : arr + ); + } else { + push.call( ret, arr ); + } + } + + return ret; + }, + + inArray: function( elem, arr, i ) { + return arr == null ? -1 : indexOf.call( arr, elem, i ); + }, + + // Support: Android <=4.0 only, PhantomJS 1 only + // push.apply(_, arraylike) throws on ancient WebKit + merge: function( first, second ) { + var len = +second.length, + j = 0, + i = first.length; + + for ( ; j < len; j++ ) { + first[ i++ ] = second[ j ]; + } + + first.length = i; + + return first; + }, + + grep: function( elems, callback, invert ) { + var callbackInverse, + matches = [], + i = 0, + length = elems.length, + callbackExpect = !invert; + + // Go through the array, only saving the items + // that pass the validator function + for ( ; i < length; i++ ) { + callbackInverse = !callback( elems[ i ], i ); + if ( callbackInverse !== callbackExpect ) { + matches.push( elems[ i ] ); + } + } + + return matches; + }, + + // arg is for internal usage only + map: function( elems, callback, arg ) { + var length, value, + i = 0, + ret = []; + + // Go through the array, translating each of the items to their new values + if ( isArrayLike( elems ) ) { + length = elems.length; + for ( ; i < length; i++ ) { + value = callback( elems[ i ], i, arg ); + + if ( value != null ) { + ret.push( value ); + } + } + + // Go through every key on the object, + } else { + for ( i in elems ) { + value = callback( elems[ i ], i, arg ); + + if ( value != null ) { + ret.push( value ); + } + } + } + + // Flatten any nested arrays + return concat.apply( [], ret ); + }, + + // A global GUID counter for objects + guid: 1, + + // Bind a function to a context, optionally partially applying any + // arguments. + proxy: function( fn, context ) { + var tmp, args, proxy; + + if ( typeof context === "string" ) { + tmp = fn[ context ]; + context = fn; + fn = tmp; + } + + // Quick check to determine if target is callable, in the spec + // this throws a TypeError, but we will just return undefined. + if ( !jQuery.isFunction( fn ) ) { + return undefined; + } + + // Simulated bind + args = slice.call( arguments, 2 ); + proxy = function() { + return fn.apply( context || this, args.concat( slice.call( arguments ) ) ); + }; + + // Set the guid of unique handler to the same of original handler, so it can be removed + proxy.guid = fn.guid = fn.guid || jQuery.guid++; + + return proxy; + }, + + now: Date.now, + + // jQuery.support is not used in Core but other projects attach their + // properties to it so it needs to exist. + support: support +} ); + +if ( typeof Symbol === "function" ) { + jQuery.fn[ Symbol.iterator ] = arr[ Symbol.iterator ]; +} + +// Populate the class2type map +jQuery.each( "Boolean Number String Function Array Date RegExp Object Error Symbol".split( " " ), +function( i, name ) { + class2type[ "[object " + name + "]" ] = name.toLowerCase(); +} ); + +function isArrayLike( obj ) { + + // Support: real iOS 8.2 only (not reproducible in simulator) + // `in` check used to prevent JIT error (gh-2145) + // hasOwn isn't used here due to false negatives + // regarding Nodelist length in IE + var length = !!obj && "length" in obj && obj.length, + type = jQuery.type( obj ); + + if ( type === "function" || jQuery.isWindow( obj ) ) { + return false; + } + + return type === "array" || length === 0 || + typeof length === "number" && length > 0 && ( length - 1 ) in obj; +} +var Sizzle = +/*! + * Sizzle CSS Selector Engine v2.3.3 + * https://sizzlejs.com/ + * + * Copyright jQuery Foundation and other contributors + * Released under the MIT license + * http://jquery.org/license + * + * Date: 2016-08-08 + */ +(function( window ) { + +var i, + support, + Expr, + getText, + isXML, + tokenize, + compile, + select, + outermostContext, + sortInput, + hasDuplicate, + + // Local document vars + setDocument, + document, + docElem, + documentIsHTML, + rbuggyQSA, + rbuggyMatches, + matches, + contains, + + // Instance-specific data + expando = "sizzle" + 1 * new Date(), + preferredDoc = window.document, + dirruns = 0, + done = 0, + classCache = createCache(), + tokenCache = createCache(), + compilerCache = createCache(), + sortOrder = function( a, b ) { + if ( a === b ) { + hasDuplicate = true; + } + return 0; + }, + + // Instance methods + hasOwn = ({}).hasOwnProperty, + arr = [], + pop = arr.pop, + push_native = arr.push, + push = arr.push, + slice = arr.slice, + // Use a stripped-down indexOf as it's faster than native + // https://jsperf.com/thor-indexof-vs-for/5 + indexOf = function( list, elem ) { + var i = 0, + len = list.length; + for ( ; i < len; i++ ) { + if ( list[i] === elem ) { + return i; + } + } + return -1; + }, + + booleans = "checked|selected|async|autofocus|autoplay|controls|defer|disabled|hidden|ismap|loop|multiple|open|readonly|required|scoped", + + // Regular expressions + + // http://www.w3.org/TR/css3-selectors/#whitespace + whitespace = "[\\x20\\t\\r\\n\\f]", + + // http://www.w3.org/TR/CSS21/syndata.html#value-def-identifier + identifier = "(?:\\\\.|[\\w-]|[^\0-\\xa0])+", + + // Attribute selectors: http://www.w3.org/TR/selectors/#attribute-selectors + attributes = "\\[" + whitespace + "*(" + identifier + ")(?:" + whitespace + + // Operator (capture 2) + "*([*^$|!~]?=)" + whitespace + + // "Attribute values must be CSS identifiers [capture 5] or strings [capture 3 or capture 4]" + "*(?:'((?:\\\\.|[^\\\\'])*)'|\"((?:\\\\.|[^\\\\\"])*)\"|(" + identifier + "))|)" + whitespace + + "*\\]", + + pseudos = ":(" + identifier + ")(?:\\((" + + // To reduce the number of selectors needing tokenize in the preFilter, prefer arguments: + // 1. quoted (capture 3; capture 4 or capture 5) + "('((?:\\\\.|[^\\\\'])*)'|\"((?:\\\\.|[^\\\\\"])*)\")|" + + // 2. simple (capture 6) + "((?:\\\\.|[^\\\\()[\\]]|" + attributes + ")*)|" + + // 3. anything else (capture 2) + ".*" + + ")\\)|)", + + // Leading and non-escaped trailing whitespace, capturing some non-whitespace characters preceding the latter + rwhitespace = new RegExp( whitespace + "+", "g" ), + rtrim = new RegExp( "^" + whitespace + "+|((?:^|[^\\\\])(?:\\\\.)*)" + whitespace + "+$", "g" ), + + rcomma = new RegExp( "^" + whitespace + "*," + whitespace + "*" ), + rcombinators = new RegExp( "^" + whitespace + "*([>+~]|" + whitespace + ")" + whitespace + "*" ), + + rattributeQuotes = new RegExp( "=" + whitespace + "*([^\\]'\"]*?)" + whitespace + "*\\]", "g" ), + + rpseudo = new RegExp( pseudos ), + ridentifier = new RegExp( "^" + identifier + "$" ), + + matchExpr = { + "ID": new RegExp( "^#(" + identifier + ")" ), + "CLASS": new RegExp( "^\\.(" + identifier + ")" ), + "TAG": new RegExp( "^(" + identifier + "|[*])" ), + "ATTR": new RegExp( "^" + attributes ), + "PSEUDO": new RegExp( "^" + pseudos ), + "CHILD": new RegExp( "^:(only|first|last|nth|nth-last)-(child|of-type)(?:\\(" + whitespace + + "*(even|odd|(([+-]|)(\\d*)n|)" + whitespace + "*(?:([+-]|)" + whitespace + + "*(\\d+)|))" + whitespace + "*\\)|)", "i" ), + "bool": new RegExp( "^(?:" + booleans + ")$", "i" ), + // For use in libraries implementing .is() + // We use this for POS matching in `select` + "needsContext": new RegExp( "^" + whitespace + "*[>+~]|:(even|odd|eq|gt|lt|nth|first|last)(?:\\(" + + whitespace + "*((?:-\\d)?\\d*)" + whitespace + "*\\)|)(?=[^-]|$)", "i" ) + }, + + rinputs = /^(?:input|select|textarea|button)$/i, + rheader = /^h\d$/i, + + rnative = /^[^{]+\{\s*\[native \w/, + + // Easily-parseable/retrievable ID or TAG or CLASS selectors + rquickExpr = /^(?:#([\w-]+)|(\w+)|\.([\w-]+))$/, + + rsibling = /[+~]/, + + // CSS escapes + // http://www.w3.org/TR/CSS21/syndata.html#escaped-characters + runescape = new RegExp( "\\\\([\\da-f]{1,6}" + whitespace + "?|(" + whitespace + ")|.)", "ig" ), + funescape = function( _, escaped, escapedWhitespace ) { + var high = "0x" + escaped - 0x10000; + // NaN means non-codepoint + // Support: Firefox<24 + // Workaround erroneous numeric interpretation of +"0x" + return high !== high || escapedWhitespace ? + escaped : + high < 0 ? + // BMP codepoint + String.fromCharCode( high + 0x10000 ) : + // Supplemental Plane codepoint (surrogate pair) + String.fromCharCode( high >> 10 | 0xD800, high & 0x3FF | 0xDC00 ); + }, + + // CSS string/identifier serialization + // https://drafts.csswg.org/cssom/#common-serializing-idioms + rcssescape = /([\0-\x1f\x7f]|^-?\d)|^-$|[^\0-\x1f\x7f-\uFFFF\w-]/g, + fcssescape = function( ch, asCodePoint ) { + if ( asCodePoint ) { + + // U+0000 NULL becomes U+FFFD REPLACEMENT CHARACTER + if ( ch === "\0" ) { + return "\uFFFD"; + } + + // Control characters and (dependent upon position) numbers get escaped as code points + return ch.slice( 0, -1 ) + "\\" + ch.charCodeAt( ch.length - 1 ).toString( 16 ) + " "; + } + + // Other potentially-special ASCII characters get backslash-escaped + return "\\" + ch; + }, + + // Used for iframes + // See setDocument() + // Removing the function wrapper causes a "Permission Denied" + // error in IE + unloadHandler = function() { + setDocument(); + }, + + disabledAncestor = addCombinator( + function( elem ) { + return elem.disabled === true && ("form" in elem || "label" in elem); + }, + { dir: "parentNode", next: "legend" } + ); + +// Optimize for push.apply( _, NodeList ) +try { + push.apply( + (arr = slice.call( preferredDoc.childNodes )), + preferredDoc.childNodes + ); + // Support: Android<4.0 + // Detect silently failing push.apply + arr[ preferredDoc.childNodes.length ].nodeType; +} catch ( e ) { + push = { apply: arr.length ? + + // Leverage slice if possible + function( target, els ) { + push_native.apply( target, slice.call(els) ); + } : + + // Support: IE<9 + // Otherwise append directly + function( target, els ) { + var j = target.length, + i = 0; + // Can't trust NodeList.length + while ( (target[j++] = els[i++]) ) {} + target.length = j - 1; + } + }; +} + +function Sizzle( selector, context, results, seed ) { + var m, i, elem, nid, match, groups, newSelector, + newContext = context && context.ownerDocument, + + // nodeType defaults to 9, since context defaults to document + nodeType = context ? context.nodeType : 9; + + results = results || []; + + // Return early from calls with invalid selector or context + if ( typeof selector !== "string" || !selector || + nodeType !== 1 && nodeType !== 9 && nodeType !== 11 ) { + + return results; + } + + // Try to shortcut find operations (as opposed to filters) in HTML documents + if ( !seed ) { + + if ( ( context ? context.ownerDocument || context : preferredDoc ) !== document ) { + setDocument( context ); + } + context = context || document; + + if ( documentIsHTML ) { + + // If the selector is sufficiently simple, try using a "get*By*" DOM method + // (excepting DocumentFragment context, where the methods don't exist) + if ( nodeType !== 11 && (match = rquickExpr.exec( selector )) ) { + + // ID selector + if ( (m = match[1]) ) { + + // Document context + if ( nodeType === 9 ) { + if ( (elem = context.getElementById( m )) ) { + + // Support: IE, Opera, Webkit + // TODO: identify versions + // getElementById can match elements by name instead of ID + if ( elem.id === m ) { + results.push( elem ); + return results; + } + } else { + return results; + } + + // Element context + } else { + + // Support: IE, Opera, Webkit + // TODO: identify versions + // getElementById can match elements by name instead of ID + if ( newContext && (elem = newContext.getElementById( m )) && + contains( context, elem ) && + elem.id === m ) { + + results.push( elem ); + return results; + } + } + + // Type selector + } else if ( match[2] ) { + push.apply( results, context.getElementsByTagName( selector ) ); + return results; + + // Class selector + } else if ( (m = match[3]) && support.getElementsByClassName && + context.getElementsByClassName ) { + + push.apply( results, context.getElementsByClassName( m ) ); + return results; + } + } + + // Take advantage of querySelectorAll + if ( support.qsa && + !compilerCache[ selector + " " ] && + (!rbuggyQSA || !rbuggyQSA.test( selector )) ) { + + if ( nodeType !== 1 ) { + newContext = context; + newSelector = selector; + + // qSA looks outside Element context, which is not what we want + // Thanks to Andrew Dupont for this workaround technique + // Support: IE <=8 + // Exclude object elements + } else if ( context.nodeName.toLowerCase() !== "object" ) { + + // Capture the context ID, setting it first if necessary + if ( (nid = context.getAttribute( "id" )) ) { + nid = nid.replace( rcssescape, fcssescape ); + } else { + context.setAttribute( "id", (nid = expando) ); + } + + // Prefix every selector in the list + groups = tokenize( selector ); + i = groups.length; + while ( i-- ) { + groups[i] = "#" + nid + " " + toSelector( groups[i] ); + } + newSelector = groups.join( "," ); + + // Expand context for sibling selectors + newContext = rsibling.test( selector ) && testContext( context.parentNode ) || + context; + } + + if ( newSelector ) { + try { + push.apply( results, + newContext.querySelectorAll( newSelector ) + ); + return results; + } catch ( qsaError ) { + } finally { + if ( nid === expando ) { + context.removeAttribute( "id" ); + } + } + } + } + } + } + + // All others + return select( selector.replace( rtrim, "$1" ), context, results, seed ); +} + +/** + * Create key-value caches of limited size + * @returns {function(string, object)} Returns the Object data after storing it on itself with + * property name the (space-suffixed) string and (if the cache is larger than Expr.cacheLength) + * deleting the oldest entry + */ +function createCache() { + var keys = []; + + function cache( key, value ) { + // Use (key + " ") to avoid collision with native prototype properties (see Issue #157) + if ( keys.push( key + " " ) > Expr.cacheLength ) { + // Only keep the most recent entries + delete cache[ keys.shift() ]; + } + return (cache[ key + " " ] = value); + } + return cache; +} + +/** + * Mark a function for special use by Sizzle + * @param {Function} fn The function to mark + */ +function markFunction( fn ) { + fn[ expando ] = true; + return fn; +} + +/** + * Support testing using an element + * @param {Function} fn Passed the created element and returns a boolean result + */ +function assert( fn ) { + var el = document.createElement("fieldset"); + + try { + return !!fn( el ); + } catch (e) { + return false; + } finally { + // Remove from its parent by default + if ( el.parentNode ) { + el.parentNode.removeChild( el ); + } + // release memory in IE + el = null; + } +} + +/** + * Adds the same handler for all of the specified attrs + * @param {String} attrs Pipe-separated list of attributes + * @param {Function} handler The method that will be applied + */ +function addHandle( attrs, handler ) { + var arr = attrs.split("|"), + i = arr.length; + + while ( i-- ) { + Expr.attrHandle[ arr[i] ] = handler; + } +} + +/** + * Checks document order of two siblings + * @param {Element} a + * @param {Element} b + * @returns {Number} Returns less than 0 if a precedes b, greater than 0 if a follows b + */ +function siblingCheck( a, b ) { + var cur = b && a, + diff = cur && a.nodeType === 1 && b.nodeType === 1 && + a.sourceIndex - b.sourceIndex; + + // Use IE sourceIndex if available on both nodes + if ( diff ) { + return diff; + } + + // Check if b follows a + if ( cur ) { + while ( (cur = cur.nextSibling) ) { + if ( cur === b ) { + return -1; + } + } + } + + return a ? 1 : -1; +} + +/** + * Returns a function to use in pseudos for input types + * @param {String} type + */ +function createInputPseudo( type ) { + return function( elem ) { + var name = elem.nodeName.toLowerCase(); + return name === "input" && elem.type === type; + }; +} + +/** + * Returns a function to use in pseudos for buttons + * @param {String} type + */ +function createButtonPseudo( type ) { + return function( elem ) { + var name = elem.nodeName.toLowerCase(); + return (name === "input" || name === "button") && elem.type === type; + }; +} + +/** + * Returns a function to use in pseudos for :enabled/:disabled + * @param {Boolean} disabled true for :disabled; false for :enabled + */ +function createDisabledPseudo( disabled ) { + + // Known :disabled false positives: fieldset[disabled] > legend:nth-of-type(n+2) :can-disable + return function( elem ) { + + // Only certain elements can match :enabled or :disabled + // https://html.spec.whatwg.org/multipage/scripting.html#selector-enabled + // https://html.spec.whatwg.org/multipage/scripting.html#selector-disabled + if ( "form" in elem ) { + + // Check for inherited disabledness on relevant non-disabled elements: + // * listed form-associated elements in a disabled fieldset + // https://html.spec.whatwg.org/multipage/forms.html#category-listed + // https://html.spec.whatwg.org/multipage/forms.html#concept-fe-disabled + // * option elements in a disabled optgroup + // https://html.spec.whatwg.org/multipage/forms.html#concept-option-disabled + // All such elements have a "form" property. + if ( elem.parentNode && elem.disabled === false ) { + + // Option elements defer to a parent optgroup if present + if ( "label" in elem ) { + if ( "label" in elem.parentNode ) { + return elem.parentNode.disabled === disabled; + } else { + return elem.disabled === disabled; + } + } + + // Support: IE 6 - 11 + // Use the isDisabled shortcut property to check for disabled fieldset ancestors + return elem.isDisabled === disabled || + + // Where there is no isDisabled, check manually + /* jshint -W018 */ + elem.isDisabled !== !disabled && + disabledAncestor( elem ) === disabled; + } + + return elem.disabled === disabled; + + // Try to winnow out elements that can't be disabled before trusting the disabled property. + // Some victims get caught in our net (label, legend, menu, track), but it shouldn't + // even exist on them, let alone have a boolean value. + } else if ( "label" in elem ) { + return elem.disabled === disabled; + } + + // Remaining elements are neither :enabled nor :disabled + return false; + }; +} + +/** + * Returns a function to use in pseudos for positionals + * @param {Function} fn + */ +function createPositionalPseudo( fn ) { + return markFunction(function( argument ) { + argument = +argument; + return markFunction(function( seed, matches ) { + var j, + matchIndexes = fn( [], seed.length, argument ), + i = matchIndexes.length; + + // Match elements found at the specified indexes + while ( i-- ) { + if ( seed[ (j = matchIndexes[i]) ] ) { + seed[j] = !(matches[j] = seed[j]); + } + } + }); + }); +} + +/** + * Checks a node for validity as a Sizzle context + * @param {Element|Object=} context + * @returns {Element|Object|Boolean} The input node if acceptable, otherwise a falsy value + */ +function testContext( context ) { + return context && typeof context.getElementsByTagName !== "undefined" && context; +} + +// Expose support vars for convenience +support = Sizzle.support = {}; + +/** + * Detects XML nodes + * @param {Element|Object} elem An element or a document + * @returns {Boolean} True iff elem is a non-HTML XML node + */ +isXML = Sizzle.isXML = function( elem ) { + // documentElement is verified for cases where it doesn't yet exist + // (such as loading iframes in IE - #4833) + var documentElement = elem && (elem.ownerDocument || elem).documentElement; + return documentElement ? documentElement.nodeName !== "HTML" : false; +}; + +/** + * Sets document-related variables once based on the current document + * @param {Element|Object} [doc] An element or document object to use to set the document + * @returns {Object} Returns the current document + */ +setDocument = Sizzle.setDocument = function( node ) { + var hasCompare, subWindow, + doc = node ? node.ownerDocument || node : preferredDoc; + + // Return early if doc is invalid or already selected + if ( doc === document || doc.nodeType !== 9 || !doc.documentElement ) { + return document; + } + + // Update global variables + document = doc; + docElem = document.documentElement; + documentIsHTML = !isXML( document ); + + // Support: IE 9-11, Edge + // Accessing iframe documents after unload throws "permission denied" errors (jQuery #13936) + if ( preferredDoc !== document && + (subWindow = document.defaultView) && subWindow.top !== subWindow ) { + + // Support: IE 11, Edge + if ( subWindow.addEventListener ) { + subWindow.addEventListener( "unload", unloadHandler, false ); + + // Support: IE 9 - 10 only + } else if ( subWindow.attachEvent ) { + subWindow.attachEvent( "onunload", unloadHandler ); + } + } + + /* Attributes + ---------------------------------------------------------------------- */ + + // Support: IE<8 + // Verify that getAttribute really returns attributes and not properties + // (excepting IE8 booleans) + support.attributes = assert(function( el ) { + el.className = "i"; + return !el.getAttribute("className"); + }); + + /* getElement(s)By* + ---------------------------------------------------------------------- */ + + // Check if getElementsByTagName("*") returns only elements + support.getElementsByTagName = assert(function( el ) { + el.appendChild( document.createComment("") ); + return !el.getElementsByTagName("*").length; + }); + + // Support: IE<9 + support.getElementsByClassName = rnative.test( document.getElementsByClassName ); + + // Support: IE<10 + // Check if getElementById returns elements by name + // The broken getElementById methods don't pick up programmatically-set names, + // so use a roundabout getElementsByName test + support.getById = assert(function( el ) { + docElem.appendChild( el ).id = expando; + return !document.getElementsByName || !document.getElementsByName( expando ).length; + }); + + // ID filter and find + if ( support.getById ) { + Expr.filter["ID"] = function( id ) { + var attrId = id.replace( runescape, funescape ); + return function( elem ) { + return elem.getAttribute("id") === attrId; + }; + }; + Expr.find["ID"] = function( id, context ) { + if ( typeof context.getElementById !== "undefined" && documentIsHTML ) { + var elem = context.getElementById( id ); + return elem ? [ elem ] : []; + } + }; + } else { + Expr.filter["ID"] = function( id ) { + var attrId = id.replace( runescape, funescape ); + return function( elem ) { + var node = typeof elem.getAttributeNode !== "undefined" && + elem.getAttributeNode("id"); + return node && node.value === attrId; + }; + }; + + // Support: IE 6 - 7 only + // getElementById is not reliable as a find shortcut + Expr.find["ID"] = function( id, context ) { + if ( typeof context.getElementById !== "undefined" && documentIsHTML ) { + var node, i, elems, + elem = context.getElementById( id ); + + if ( elem ) { + + // Verify the id attribute + node = elem.getAttributeNode("id"); + if ( node && node.value === id ) { + return [ elem ]; + } + + // Fall back on getElementsByName + elems = context.getElementsByName( id ); + i = 0; + while ( (elem = elems[i++]) ) { + node = elem.getAttributeNode("id"); + if ( node && node.value === id ) { + return [ elem ]; + } + } + } + + return []; + } + }; + } + + // Tag + Expr.find["TAG"] = support.getElementsByTagName ? + function( tag, context ) { + if ( typeof context.getElementsByTagName !== "undefined" ) { + return context.getElementsByTagName( tag ); + + // DocumentFragment nodes don't have gEBTN + } else if ( support.qsa ) { + return context.querySelectorAll( tag ); + } + } : + + function( tag, context ) { + var elem, + tmp = [], + i = 0, + // By happy coincidence, a (broken) gEBTN appears on DocumentFragment nodes too + results = context.getElementsByTagName( tag ); + + // Filter out possible comments + if ( tag === "*" ) { + while ( (elem = results[i++]) ) { + if ( elem.nodeType === 1 ) { + tmp.push( elem ); + } + } + + return tmp; + } + return results; + }; + + // Class + Expr.find["CLASS"] = support.getElementsByClassName && function( className, context ) { + if ( typeof context.getElementsByClassName !== "undefined" && documentIsHTML ) { + return context.getElementsByClassName( className ); + } + }; + + /* QSA/matchesSelector + ---------------------------------------------------------------------- */ + + // QSA and matchesSelector support + + // matchesSelector(:active) reports false when true (IE9/Opera 11.5) + rbuggyMatches = []; + + // qSa(:focus) reports false when true (Chrome 21) + // We allow this because of a bug in IE8/9 that throws an error + // whenever `document.activeElement` is accessed on an iframe + // So, we allow :focus to pass through QSA all the time to avoid the IE error + // See https://bugs.jquery.com/ticket/13378 + rbuggyQSA = []; + + if ( (support.qsa = rnative.test( document.querySelectorAll )) ) { + // Build QSA regex + // Regex strategy adopted from Diego Perini + assert(function( el ) { + // Select is set to empty string on purpose + // This is to test IE's treatment of not explicitly + // setting a boolean content attribute, + // since its presence should be enough + // https://bugs.jquery.com/ticket/12359 + docElem.appendChild( el ).innerHTML = "" + + ""; + + // Support: IE8, Opera 11-12.16 + // Nothing should be selected when empty strings follow ^= or $= or *= + // The test attribute must be unknown in Opera but "safe" for WinRT + // https://msdn.microsoft.com/en-us/library/ie/hh465388.aspx#attribute_section + if ( el.querySelectorAll("[msallowcapture^='']").length ) { + rbuggyQSA.push( "[*^$]=" + whitespace + "*(?:''|\"\")" ); + } + + // Support: IE8 + // Boolean attributes and "value" are not treated correctly + if ( !el.querySelectorAll("[selected]").length ) { + rbuggyQSA.push( "\\[" + whitespace + "*(?:value|" + booleans + ")" ); + } + + // Support: Chrome<29, Android<4.4, Safari<7.0+, iOS<7.0+, PhantomJS<1.9.8+ + if ( !el.querySelectorAll( "[id~=" + expando + "-]" ).length ) { + rbuggyQSA.push("~="); + } + + // Webkit/Opera - :checked should return selected option elements + // http://www.w3.org/TR/2011/REC-css3-selectors-20110929/#checked + // IE8 throws error here and will not see later tests + if ( !el.querySelectorAll(":checked").length ) { + rbuggyQSA.push(":checked"); + } + + // Support: Safari 8+, iOS 8+ + // https://bugs.webkit.org/show_bug.cgi?id=136851 + // In-page `selector#id sibling-combinator selector` fails + if ( !el.querySelectorAll( "a#" + expando + "+*" ).length ) { + rbuggyQSA.push(".#.+[+~]"); + } + }); + + assert(function( el ) { + el.innerHTML = "" + + ""; + + // Support: Windows 8 Native Apps + // The type and name attributes are restricted during .innerHTML assignment + var input = document.createElement("input"); + input.setAttribute( "type", "hidden" ); + el.appendChild( input ).setAttribute( "name", "D" ); + + // Support: IE8 + // Enforce case-sensitivity of name attribute + if ( el.querySelectorAll("[name=d]").length ) { + rbuggyQSA.push( "name" + whitespace + "*[*^$|!~]?=" ); + } + + // FF 3.5 - :enabled/:disabled and hidden elements (hidden elements are still enabled) + // IE8 throws error here and will not see later tests + if ( el.querySelectorAll(":enabled").length !== 2 ) { + rbuggyQSA.push( ":enabled", ":disabled" ); + } + + // Support: IE9-11+ + // IE's :disabled selector does not pick up the children of disabled fieldsets + docElem.appendChild( el ).disabled = true; + if ( el.querySelectorAll(":disabled").length !== 2 ) { + rbuggyQSA.push( ":enabled", ":disabled" ); + } + + // Opera 10-11 does not throw on post-comma invalid pseudos + el.querySelectorAll("*,:x"); + rbuggyQSA.push(",.*:"); + }); + } + + if ( (support.matchesSelector = rnative.test( (matches = docElem.matches || + docElem.webkitMatchesSelector || + docElem.mozMatchesSelector || + docElem.oMatchesSelector || + docElem.msMatchesSelector) )) ) { + + assert(function( el ) { + // Check to see if it's possible to do matchesSelector + // on a disconnected node (IE 9) + support.disconnectedMatch = matches.call( el, "*" ); + + // This should fail with an exception + // Gecko does not error, returns false instead + matches.call( el, "[s!='']:x" ); + rbuggyMatches.push( "!=", pseudos ); + }); + } + + rbuggyQSA = rbuggyQSA.length && new RegExp( rbuggyQSA.join("|") ); + rbuggyMatches = rbuggyMatches.length && new RegExp( rbuggyMatches.join("|") ); + + /* Contains + ---------------------------------------------------------------------- */ + hasCompare = rnative.test( docElem.compareDocumentPosition ); + + // Element contains another + // Purposefully self-exclusive + // As in, an element does not contain itself + contains = hasCompare || rnative.test( docElem.contains ) ? + function( a, b ) { + var adown = a.nodeType === 9 ? a.documentElement : a, + bup = b && b.parentNode; + return a === bup || !!( bup && bup.nodeType === 1 && ( + adown.contains ? + adown.contains( bup ) : + a.compareDocumentPosition && a.compareDocumentPosition( bup ) & 16 + )); + } : + function( a, b ) { + if ( b ) { + while ( (b = b.parentNode) ) { + if ( b === a ) { + return true; + } + } + } + return false; + }; + + /* Sorting + ---------------------------------------------------------------------- */ + + // Document order sorting + sortOrder = hasCompare ? + function( a, b ) { + + // Flag for duplicate removal + if ( a === b ) { + hasDuplicate = true; + return 0; + } + + // Sort on method existence if only one input has compareDocumentPosition + var compare = !a.compareDocumentPosition - !b.compareDocumentPosition; + if ( compare ) { + return compare; + } + + // Calculate position if both inputs belong to the same document + compare = ( a.ownerDocument || a ) === ( b.ownerDocument || b ) ? + a.compareDocumentPosition( b ) : + + // Otherwise we know they are disconnected + 1; + + // Disconnected nodes + if ( compare & 1 || + (!support.sortDetached && b.compareDocumentPosition( a ) === compare) ) { + + // Choose the first element that is related to our preferred document + if ( a === document || a.ownerDocument === preferredDoc && contains(preferredDoc, a) ) { + return -1; + } + if ( b === document || b.ownerDocument === preferredDoc && contains(preferredDoc, b) ) { + return 1; + } + + // Maintain original order + return sortInput ? + ( indexOf( sortInput, a ) - indexOf( sortInput, b ) ) : + 0; + } + + return compare & 4 ? -1 : 1; + } : + function( a, b ) { + // Exit early if the nodes are identical + if ( a === b ) { + hasDuplicate = true; + return 0; + } + + var cur, + i = 0, + aup = a.parentNode, + bup = b.parentNode, + ap = [ a ], + bp = [ b ]; + + // Parentless nodes are either documents or disconnected + if ( !aup || !bup ) { + return a === document ? -1 : + b === document ? 1 : + aup ? -1 : + bup ? 1 : + sortInput ? + ( indexOf( sortInput, a ) - indexOf( sortInput, b ) ) : + 0; + + // If the nodes are siblings, we can do a quick check + } else if ( aup === bup ) { + return siblingCheck( a, b ); + } + + // Otherwise we need full lists of their ancestors for comparison + cur = a; + while ( (cur = cur.parentNode) ) { + ap.unshift( cur ); + } + cur = b; + while ( (cur = cur.parentNode) ) { + bp.unshift( cur ); + } + + // Walk down the tree looking for a discrepancy + while ( ap[i] === bp[i] ) { + i++; + } + + return i ? + // Do a sibling check if the nodes have a common ancestor + siblingCheck( ap[i], bp[i] ) : + + // Otherwise nodes in our document sort first + ap[i] === preferredDoc ? -1 : + bp[i] === preferredDoc ? 1 : + 0; + }; + + return document; +}; + +Sizzle.matches = function( expr, elements ) { + return Sizzle( expr, null, null, elements ); +}; + +Sizzle.matchesSelector = function( elem, expr ) { + // Set document vars if needed + if ( ( elem.ownerDocument || elem ) !== document ) { + setDocument( elem ); + } + + // Make sure that attribute selectors are quoted + expr = expr.replace( rattributeQuotes, "='$1']" ); + + if ( support.matchesSelector && documentIsHTML && + !compilerCache[ expr + " " ] && + ( !rbuggyMatches || !rbuggyMatches.test( expr ) ) && + ( !rbuggyQSA || !rbuggyQSA.test( expr ) ) ) { + + try { + var ret = matches.call( elem, expr ); + + // IE 9's matchesSelector returns false on disconnected nodes + if ( ret || support.disconnectedMatch || + // As well, disconnected nodes are said to be in a document + // fragment in IE 9 + elem.document && elem.document.nodeType !== 11 ) { + return ret; + } + } catch (e) {} + } + + return Sizzle( expr, document, null, [ elem ] ).length > 0; +}; + +Sizzle.contains = function( context, elem ) { + // Set document vars if needed + if ( ( context.ownerDocument || context ) !== document ) { + setDocument( context ); + } + return contains( context, elem ); +}; + +Sizzle.attr = function( elem, name ) { + // Set document vars if needed + if ( ( elem.ownerDocument || elem ) !== document ) { + setDocument( elem ); + } + + var fn = Expr.attrHandle[ name.toLowerCase() ], + // Don't get fooled by Object.prototype properties (jQuery #13807) + val = fn && hasOwn.call( Expr.attrHandle, name.toLowerCase() ) ? + fn( elem, name, !documentIsHTML ) : + undefined; + + return val !== undefined ? + val : + support.attributes || !documentIsHTML ? + elem.getAttribute( name ) : + (val = elem.getAttributeNode(name)) && val.specified ? + val.value : + null; +}; + +Sizzle.escape = function( sel ) { + return (sel + "").replace( rcssescape, fcssescape ); +}; + +Sizzle.error = function( msg ) { + throw new Error( "Syntax error, unrecognized expression: " + msg ); +}; + +/** + * Document sorting and removing duplicates + * @param {ArrayLike} results + */ +Sizzle.uniqueSort = function( results ) { + var elem, + duplicates = [], + j = 0, + i = 0; + + // Unless we *know* we can detect duplicates, assume their presence + hasDuplicate = !support.detectDuplicates; + sortInput = !support.sortStable && results.slice( 0 ); + results.sort( sortOrder ); + + if ( hasDuplicate ) { + while ( (elem = results[i++]) ) { + if ( elem === results[ i ] ) { + j = duplicates.push( i ); + } + } + while ( j-- ) { + results.splice( duplicates[ j ], 1 ); + } + } + + // Clear input after sorting to release objects + // See https://github.com/jquery/sizzle/pull/225 + sortInput = null; + + return results; +}; + +/** + * Utility function for retrieving the text value of an array of DOM nodes + * @param {Array|Element} elem + */ +getText = Sizzle.getText = function( elem ) { + var node, + ret = "", + i = 0, + nodeType = elem.nodeType; + + if ( !nodeType ) { + // If no nodeType, this is expected to be an array + while ( (node = elem[i++]) ) { + // Do not traverse comment nodes + ret += getText( node ); + } + } else if ( nodeType === 1 || nodeType === 9 || nodeType === 11 ) { + // Use textContent for elements + // innerText usage removed for consistency of new lines (jQuery #11153) + if ( typeof elem.textContent === "string" ) { + return elem.textContent; + } else { + // Traverse its children + for ( elem = elem.firstChild; elem; elem = elem.nextSibling ) { + ret += getText( elem ); + } + } + } else if ( nodeType === 3 || nodeType === 4 ) { + return elem.nodeValue; + } + // Do not include comment or processing instruction nodes + + return ret; +}; + +Expr = Sizzle.selectors = { + + // Can be adjusted by the user + cacheLength: 50, + + createPseudo: markFunction, + + match: matchExpr, + + attrHandle: {}, + + find: {}, + + relative: { + ">": { dir: "parentNode", first: true }, + " ": { dir: "parentNode" }, + "+": { dir: "previousSibling", first: true }, + "~": { dir: "previousSibling" } + }, + + preFilter: { + "ATTR": function( match ) { + match[1] = match[1].replace( runescape, funescape ); + + // Move the given value to match[3] whether quoted or unquoted + match[3] = ( match[3] || match[4] || match[5] || "" ).replace( runescape, funescape ); + + if ( match[2] === "~=" ) { + match[3] = " " + match[3] + " "; + } + + return match.slice( 0, 4 ); + }, + + "CHILD": function( match ) { + /* matches from matchExpr["CHILD"] + 1 type (only|nth|...) + 2 what (child|of-type) + 3 argument (even|odd|\d*|\d*n([+-]\d+)?|...) + 4 xn-component of xn+y argument ([+-]?\d*n|) + 5 sign of xn-component + 6 x of xn-component + 7 sign of y-component + 8 y of y-component + */ + match[1] = match[1].toLowerCase(); + + if ( match[1].slice( 0, 3 ) === "nth" ) { + // nth-* requires argument + if ( !match[3] ) { + Sizzle.error( match[0] ); + } + + // numeric x and y parameters for Expr.filter.CHILD + // remember that false/true cast respectively to 0/1 + match[4] = +( match[4] ? match[5] + (match[6] || 1) : 2 * ( match[3] === "even" || match[3] === "odd" ) ); + match[5] = +( ( match[7] + match[8] ) || match[3] === "odd" ); + + // other types prohibit arguments + } else if ( match[3] ) { + Sizzle.error( match[0] ); + } + + return match; + }, + + "PSEUDO": function( match ) { + var excess, + unquoted = !match[6] && match[2]; + + if ( matchExpr["CHILD"].test( match[0] ) ) { + return null; + } + + // Accept quoted arguments as-is + if ( match[3] ) { + match[2] = match[4] || match[5] || ""; + + // Strip excess characters from unquoted arguments + } else if ( unquoted && rpseudo.test( unquoted ) && + // Get excess from tokenize (recursively) + (excess = tokenize( unquoted, true )) && + // advance to the next closing parenthesis + (excess = unquoted.indexOf( ")", unquoted.length - excess ) - unquoted.length) ) { + + // excess is a negative index + match[0] = match[0].slice( 0, excess ); + match[2] = unquoted.slice( 0, excess ); + } + + // Return only captures needed by the pseudo filter method (type and argument) + return match.slice( 0, 3 ); + } + }, + + filter: { + + "TAG": function( nodeNameSelector ) { + var nodeName = nodeNameSelector.replace( runescape, funescape ).toLowerCase(); + return nodeNameSelector === "*" ? + function() { return true; } : + function( elem ) { + return elem.nodeName && elem.nodeName.toLowerCase() === nodeName; + }; + }, + + "CLASS": function( className ) { + var pattern = classCache[ className + " " ]; + + return pattern || + (pattern = new RegExp( "(^|" + whitespace + ")" + className + "(" + whitespace + "|$)" )) && + classCache( className, function( elem ) { + return pattern.test( typeof elem.className === "string" && elem.className || typeof elem.getAttribute !== "undefined" && elem.getAttribute("class") || "" ); + }); + }, + + "ATTR": function( name, operator, check ) { + return function( elem ) { + var result = Sizzle.attr( elem, name ); + + if ( result == null ) { + return operator === "!="; + } + if ( !operator ) { + return true; + } + + result += ""; + + return operator === "=" ? result === check : + operator === "!=" ? result !== check : + operator === "^=" ? check && result.indexOf( check ) === 0 : + operator === "*=" ? check && result.indexOf( check ) > -1 : + operator === "$=" ? check && result.slice( -check.length ) === check : + operator === "~=" ? ( " " + result.replace( rwhitespace, " " ) + " " ).indexOf( check ) > -1 : + operator === "|=" ? result === check || result.slice( 0, check.length + 1 ) === check + "-" : + false; + }; + }, + + "CHILD": function( type, what, argument, first, last ) { + var simple = type.slice( 0, 3 ) !== "nth", + forward = type.slice( -4 ) !== "last", + ofType = what === "of-type"; + + return first === 1 && last === 0 ? + + // Shortcut for :nth-*(n) + function( elem ) { + return !!elem.parentNode; + } : + + function( elem, context, xml ) { + var cache, uniqueCache, outerCache, node, nodeIndex, start, + dir = simple !== forward ? "nextSibling" : "previousSibling", + parent = elem.parentNode, + name = ofType && elem.nodeName.toLowerCase(), + useCache = !xml && !ofType, + diff = false; + + if ( parent ) { + + // :(first|last|only)-(child|of-type) + if ( simple ) { + while ( dir ) { + node = elem; + while ( (node = node[ dir ]) ) { + if ( ofType ? + node.nodeName.toLowerCase() === name : + node.nodeType === 1 ) { + + return false; + } + } + // Reverse direction for :only-* (if we haven't yet done so) + start = dir = type === "only" && !start && "nextSibling"; + } + return true; + } + + start = [ forward ? parent.firstChild : parent.lastChild ]; + + // non-xml :nth-child(...) stores cache data on `parent` + if ( forward && useCache ) { + + // Seek `elem` from a previously-cached index + + // ...in a gzip-friendly way + node = parent; + outerCache = node[ expando ] || (node[ expando ] = {}); + + // Support: IE <9 only + // Defend against cloned attroperties (jQuery gh-1709) + uniqueCache = outerCache[ node.uniqueID ] || + (outerCache[ node.uniqueID ] = {}); + + cache = uniqueCache[ type ] || []; + nodeIndex = cache[ 0 ] === dirruns && cache[ 1 ]; + diff = nodeIndex && cache[ 2 ]; + node = nodeIndex && parent.childNodes[ nodeIndex ]; + + while ( (node = ++nodeIndex && node && node[ dir ] || + + // Fallback to seeking `elem` from the start + (diff = nodeIndex = 0) || start.pop()) ) { + + // When found, cache indexes on `parent` and break + if ( node.nodeType === 1 && ++diff && node === elem ) { + uniqueCache[ type ] = [ dirruns, nodeIndex, diff ]; + break; + } + } + + } else { + // Use previously-cached element index if available + if ( useCache ) { + // ...in a gzip-friendly way + node = elem; + outerCache = node[ expando ] || (node[ expando ] = {}); + + // Support: IE <9 only + // Defend against cloned attroperties (jQuery gh-1709) + uniqueCache = outerCache[ node.uniqueID ] || + (outerCache[ node.uniqueID ] = {}); + + cache = uniqueCache[ type ] || []; + nodeIndex = cache[ 0 ] === dirruns && cache[ 1 ]; + diff = nodeIndex; + } + + // xml :nth-child(...) + // or :nth-last-child(...) or :nth(-last)?-of-type(...) + if ( diff === false ) { + // Use the same loop as above to seek `elem` from the start + while ( (node = ++nodeIndex && node && node[ dir ] || + (diff = nodeIndex = 0) || start.pop()) ) { + + if ( ( ofType ? + node.nodeName.toLowerCase() === name : + node.nodeType === 1 ) && + ++diff ) { + + // Cache the index of each encountered element + if ( useCache ) { + outerCache = node[ expando ] || (node[ expando ] = {}); + + // Support: IE <9 only + // Defend against cloned attroperties (jQuery gh-1709) + uniqueCache = outerCache[ node.uniqueID ] || + (outerCache[ node.uniqueID ] = {}); + + uniqueCache[ type ] = [ dirruns, diff ]; + } + + if ( node === elem ) { + break; + } + } + } + } + } + + // Incorporate the offset, then check against cycle size + diff -= last; + return diff === first || ( diff % first === 0 && diff / first >= 0 ); + } + }; + }, + + "PSEUDO": function( pseudo, argument ) { + // pseudo-class names are case-insensitive + // http://www.w3.org/TR/selectors/#pseudo-classes + // Prioritize by case sensitivity in case custom pseudos are added with uppercase letters + // Remember that setFilters inherits from pseudos + var args, + fn = Expr.pseudos[ pseudo ] || Expr.setFilters[ pseudo.toLowerCase() ] || + Sizzle.error( "unsupported pseudo: " + pseudo ); + + // The user may use createPseudo to indicate that + // arguments are needed to create the filter function + // just as Sizzle does + if ( fn[ expando ] ) { + return fn( argument ); + } + + // But maintain support for old signatures + if ( fn.length > 1 ) { + args = [ pseudo, pseudo, "", argument ]; + return Expr.setFilters.hasOwnProperty( pseudo.toLowerCase() ) ? + markFunction(function( seed, matches ) { + var idx, + matched = fn( seed, argument ), + i = matched.length; + while ( i-- ) { + idx = indexOf( seed, matched[i] ); + seed[ idx ] = !( matches[ idx ] = matched[i] ); + } + }) : + function( elem ) { + return fn( elem, 0, args ); + }; + } + + return fn; + } + }, + + pseudos: { + // Potentially complex pseudos + "not": markFunction(function( selector ) { + // Trim the selector passed to compile + // to avoid treating leading and trailing + // spaces as combinators + var input = [], + results = [], + matcher = compile( selector.replace( rtrim, "$1" ) ); + + return matcher[ expando ] ? + markFunction(function( seed, matches, context, xml ) { + var elem, + unmatched = matcher( seed, null, xml, [] ), + i = seed.length; + + // Match elements unmatched by `matcher` + while ( i-- ) { + if ( (elem = unmatched[i]) ) { + seed[i] = !(matches[i] = elem); + } + } + }) : + function( elem, context, xml ) { + input[0] = elem; + matcher( input, null, xml, results ); + // Don't keep the element (issue #299) + input[0] = null; + return !results.pop(); + }; + }), + + "has": markFunction(function( selector ) { + return function( elem ) { + return Sizzle( selector, elem ).length > 0; + }; + }), + + "contains": markFunction(function( text ) { + text = text.replace( runescape, funescape ); + return function( elem ) { + return ( elem.textContent || elem.innerText || getText( elem ) ).indexOf( text ) > -1; + }; + }), + + // "Whether an element is represented by a :lang() selector + // is based solely on the element's language value + // being equal to the identifier C, + // or beginning with the identifier C immediately followed by "-". + // The matching of C against the element's language value is performed case-insensitively. + // The identifier C does not have to be a valid language name." + // http://www.w3.org/TR/selectors/#lang-pseudo + "lang": markFunction( function( lang ) { + // lang value must be a valid identifier + if ( !ridentifier.test(lang || "") ) { + Sizzle.error( "unsupported lang: " + lang ); + } + lang = lang.replace( runescape, funescape ).toLowerCase(); + return function( elem ) { + var elemLang; + do { + if ( (elemLang = documentIsHTML ? + elem.lang : + elem.getAttribute("xml:lang") || elem.getAttribute("lang")) ) { + + elemLang = elemLang.toLowerCase(); + return elemLang === lang || elemLang.indexOf( lang + "-" ) === 0; + } + } while ( (elem = elem.parentNode) && elem.nodeType === 1 ); + return false; + }; + }), + + // Miscellaneous + "target": function( elem ) { + var hash = window.location && window.location.hash; + return hash && hash.slice( 1 ) === elem.id; + }, + + "root": function( elem ) { + return elem === docElem; + }, + + "focus": function( elem ) { + return elem === document.activeElement && (!document.hasFocus || document.hasFocus()) && !!(elem.type || elem.href || ~elem.tabIndex); + }, + + // Boolean properties + "enabled": createDisabledPseudo( false ), + "disabled": createDisabledPseudo( true ), + + "checked": function( elem ) { + // In CSS3, :checked should return both checked and selected elements + // http://www.w3.org/TR/2011/REC-css3-selectors-20110929/#checked + var nodeName = elem.nodeName.toLowerCase(); + return (nodeName === "input" && !!elem.checked) || (nodeName === "option" && !!elem.selected); + }, + + "selected": function( elem ) { + // Accessing this property makes selected-by-default + // options in Safari work properly + if ( elem.parentNode ) { + elem.parentNode.selectedIndex; + } + + return elem.selected === true; + }, + + // Contents + "empty": function( elem ) { + // http://www.w3.org/TR/selectors/#empty-pseudo + // :empty is negated by element (1) or content nodes (text: 3; cdata: 4; entity ref: 5), + // but not by others (comment: 8; processing instruction: 7; etc.) + // nodeType < 6 works because attributes (2) do not appear as children + for ( elem = elem.firstChild; elem; elem = elem.nextSibling ) { + if ( elem.nodeType < 6 ) { + return false; + } + } + return true; + }, + + "parent": function( elem ) { + return !Expr.pseudos["empty"]( elem ); + }, + + // Element/input types + "header": function( elem ) { + return rheader.test( elem.nodeName ); + }, + + "input": function( elem ) { + return rinputs.test( elem.nodeName ); + }, + + "button": function( elem ) { + var name = elem.nodeName.toLowerCase(); + return name === "input" && elem.type === "button" || name === "button"; + }, + + "text": function( elem ) { + var attr; + return elem.nodeName.toLowerCase() === "input" && + elem.type === "text" && + + // Support: IE<8 + // New HTML5 attribute values (e.g., "search") appear with elem.type === "text" + ( (attr = elem.getAttribute("type")) == null || attr.toLowerCase() === "text" ); + }, + + // Position-in-collection + "first": createPositionalPseudo(function() { + return [ 0 ]; + }), + + "last": createPositionalPseudo(function( matchIndexes, length ) { + return [ length - 1 ]; + }), + + "eq": createPositionalPseudo(function( matchIndexes, length, argument ) { + return [ argument < 0 ? argument + length : argument ]; + }), + + "even": createPositionalPseudo(function( matchIndexes, length ) { + var i = 0; + for ( ; i < length; i += 2 ) { + matchIndexes.push( i ); + } + return matchIndexes; + }), + + "odd": createPositionalPseudo(function( matchIndexes, length ) { + var i = 1; + for ( ; i < length; i += 2 ) { + matchIndexes.push( i ); + } + return matchIndexes; + }), + + "lt": createPositionalPseudo(function( matchIndexes, length, argument ) { + var i = argument < 0 ? argument + length : argument; + for ( ; --i >= 0; ) { + matchIndexes.push( i ); + } + return matchIndexes; + }), + + "gt": createPositionalPseudo(function( matchIndexes, length, argument ) { + var i = argument < 0 ? argument + length : argument; + for ( ; ++i < length; ) { + matchIndexes.push( i ); + } + return matchIndexes; + }) + } +}; + +Expr.pseudos["nth"] = Expr.pseudos["eq"]; + +// Add button/input type pseudos +for ( i in { radio: true, checkbox: true, file: true, password: true, image: true } ) { + Expr.pseudos[ i ] = createInputPseudo( i ); +} +for ( i in { submit: true, reset: true } ) { + Expr.pseudos[ i ] = createButtonPseudo( i ); +} + +// Easy API for creating new setFilters +function setFilters() {} +setFilters.prototype = Expr.filters = Expr.pseudos; +Expr.setFilters = new setFilters(); + +tokenize = Sizzle.tokenize = function( selector, parseOnly ) { + var matched, match, tokens, type, + soFar, groups, preFilters, + cached = tokenCache[ selector + " " ]; + + if ( cached ) { + return parseOnly ? 0 : cached.slice( 0 ); + } + + soFar = selector; + groups = []; + preFilters = Expr.preFilter; + + while ( soFar ) { + + // Comma and first run + if ( !matched || (match = rcomma.exec( soFar )) ) { + if ( match ) { + // Don't consume trailing commas as valid + soFar = soFar.slice( match[0].length ) || soFar; + } + groups.push( (tokens = []) ); + } + + matched = false; + + // Combinators + if ( (match = rcombinators.exec( soFar )) ) { + matched = match.shift(); + tokens.push({ + value: matched, + // Cast descendant combinators to space + type: match[0].replace( rtrim, " " ) + }); + soFar = soFar.slice( matched.length ); + } + + // Filters + for ( type in Expr.filter ) { + if ( (match = matchExpr[ type ].exec( soFar )) && (!preFilters[ type ] || + (match = preFilters[ type ]( match ))) ) { + matched = match.shift(); + tokens.push({ + value: matched, + type: type, + matches: match + }); + soFar = soFar.slice( matched.length ); + } + } + + if ( !matched ) { + break; + } + } + + // Return the length of the invalid excess + // if we're just parsing + // Otherwise, throw an error or return tokens + return parseOnly ? + soFar.length : + soFar ? + Sizzle.error( selector ) : + // Cache the tokens + tokenCache( selector, groups ).slice( 0 ); +}; + +function toSelector( tokens ) { + var i = 0, + len = tokens.length, + selector = ""; + for ( ; i < len; i++ ) { + selector += tokens[i].value; + } + return selector; +} + +function addCombinator( matcher, combinator, base ) { + var dir = combinator.dir, + skip = combinator.next, + key = skip || dir, + checkNonElements = base && key === "parentNode", + doneName = done++; + + return combinator.first ? + // Check against closest ancestor/preceding element + function( elem, context, xml ) { + while ( (elem = elem[ dir ]) ) { + if ( elem.nodeType === 1 || checkNonElements ) { + return matcher( elem, context, xml ); + } + } + return false; + } : + + // Check against all ancestor/preceding elements + function( elem, context, xml ) { + var oldCache, uniqueCache, outerCache, + newCache = [ dirruns, doneName ]; + + // We can't set arbitrary data on XML nodes, so they don't benefit from combinator caching + if ( xml ) { + while ( (elem = elem[ dir ]) ) { + if ( elem.nodeType === 1 || checkNonElements ) { + if ( matcher( elem, context, xml ) ) { + return true; + } + } + } + } else { + while ( (elem = elem[ dir ]) ) { + if ( elem.nodeType === 1 || checkNonElements ) { + outerCache = elem[ expando ] || (elem[ expando ] = {}); + + // Support: IE <9 only + // Defend against cloned attroperties (jQuery gh-1709) + uniqueCache = outerCache[ elem.uniqueID ] || (outerCache[ elem.uniqueID ] = {}); + + if ( skip && skip === elem.nodeName.toLowerCase() ) { + elem = elem[ dir ] || elem; + } else if ( (oldCache = uniqueCache[ key ]) && + oldCache[ 0 ] === dirruns && oldCache[ 1 ] === doneName ) { + + // Assign to newCache so results back-propagate to previous elements + return (newCache[ 2 ] = oldCache[ 2 ]); + } else { + // Reuse newcache so results back-propagate to previous elements + uniqueCache[ key ] = newCache; + + // A match means we're done; a fail means we have to keep checking + if ( (newCache[ 2 ] = matcher( elem, context, xml )) ) { + return true; + } + } + } + } + } + return false; + }; +} + +function elementMatcher( matchers ) { + return matchers.length > 1 ? + function( elem, context, xml ) { + var i = matchers.length; + while ( i-- ) { + if ( !matchers[i]( elem, context, xml ) ) { + return false; + } + } + return true; + } : + matchers[0]; +} + +function multipleContexts( selector, contexts, results ) { + var i = 0, + len = contexts.length; + for ( ; i < len; i++ ) { + Sizzle( selector, contexts[i], results ); + } + return results; +} + +function condense( unmatched, map, filter, context, xml ) { + var elem, + newUnmatched = [], + i = 0, + len = unmatched.length, + mapped = map != null; + + for ( ; i < len; i++ ) { + if ( (elem = unmatched[i]) ) { + if ( !filter || filter( elem, context, xml ) ) { + newUnmatched.push( elem ); + if ( mapped ) { + map.push( i ); + } + } + } + } + + return newUnmatched; +} + +function setMatcher( preFilter, selector, matcher, postFilter, postFinder, postSelector ) { + if ( postFilter && !postFilter[ expando ] ) { + postFilter = setMatcher( postFilter ); + } + if ( postFinder && !postFinder[ expando ] ) { + postFinder = setMatcher( postFinder, postSelector ); + } + return markFunction(function( seed, results, context, xml ) { + var temp, i, elem, + preMap = [], + postMap = [], + preexisting = results.length, + + // Get initial elements from seed or context + elems = seed || multipleContexts( selector || "*", context.nodeType ? [ context ] : context, [] ), + + // Prefilter to get matcher input, preserving a map for seed-results synchronization + matcherIn = preFilter && ( seed || !selector ) ? + condense( elems, preMap, preFilter, context, xml ) : + elems, + + matcherOut = matcher ? + // If we have a postFinder, or filtered seed, or non-seed postFilter or preexisting results, + postFinder || ( seed ? preFilter : preexisting || postFilter ) ? + + // ...intermediate processing is necessary + [] : + + // ...otherwise use results directly + results : + matcherIn; + + // Find primary matches + if ( matcher ) { + matcher( matcherIn, matcherOut, context, xml ); + } + + // Apply postFilter + if ( postFilter ) { + temp = condense( matcherOut, postMap ); + postFilter( temp, [], context, xml ); + + // Un-match failing elements by moving them back to matcherIn + i = temp.length; + while ( i-- ) { + if ( (elem = temp[i]) ) { + matcherOut[ postMap[i] ] = !(matcherIn[ postMap[i] ] = elem); + } + } + } + + if ( seed ) { + if ( postFinder || preFilter ) { + if ( postFinder ) { + // Get the final matcherOut by condensing this intermediate into postFinder contexts + temp = []; + i = matcherOut.length; + while ( i-- ) { + if ( (elem = matcherOut[i]) ) { + // Restore matcherIn since elem is not yet a final match + temp.push( (matcherIn[i] = elem) ); + } + } + postFinder( null, (matcherOut = []), temp, xml ); + } + + // Move matched elements from seed to results to keep them synchronized + i = matcherOut.length; + while ( i-- ) { + if ( (elem = matcherOut[i]) && + (temp = postFinder ? indexOf( seed, elem ) : preMap[i]) > -1 ) { + + seed[temp] = !(results[temp] = elem); + } + } + } + + // Add elements to results, through postFinder if defined + } else { + matcherOut = condense( + matcherOut === results ? + matcherOut.splice( preexisting, matcherOut.length ) : + matcherOut + ); + if ( postFinder ) { + postFinder( null, results, matcherOut, xml ); + } else { + push.apply( results, matcherOut ); + } + } + }); +} + +function matcherFromTokens( tokens ) { + var checkContext, matcher, j, + len = tokens.length, + leadingRelative = Expr.relative[ tokens[0].type ], + implicitRelative = leadingRelative || Expr.relative[" "], + i = leadingRelative ? 1 : 0, + + // The foundational matcher ensures that elements are reachable from top-level context(s) + matchContext = addCombinator( function( elem ) { + return elem === checkContext; + }, implicitRelative, true ), + matchAnyContext = addCombinator( function( elem ) { + return indexOf( checkContext, elem ) > -1; + }, implicitRelative, true ), + matchers = [ function( elem, context, xml ) { + var ret = ( !leadingRelative && ( xml || context !== outermostContext ) ) || ( + (checkContext = context).nodeType ? + matchContext( elem, context, xml ) : + matchAnyContext( elem, context, xml ) ); + // Avoid hanging onto element (issue #299) + checkContext = null; + return ret; + } ]; + + for ( ; i < len; i++ ) { + if ( (matcher = Expr.relative[ tokens[i].type ]) ) { + matchers = [ addCombinator(elementMatcher( matchers ), matcher) ]; + } else { + matcher = Expr.filter[ tokens[i].type ].apply( null, tokens[i].matches ); + + // Return special upon seeing a positional matcher + if ( matcher[ expando ] ) { + // Find the next relative operator (if any) for proper handling + j = ++i; + for ( ; j < len; j++ ) { + if ( Expr.relative[ tokens[j].type ] ) { + break; + } + } + return setMatcher( + i > 1 && elementMatcher( matchers ), + i > 1 && toSelector( + // If the preceding token was a descendant combinator, insert an implicit any-element `*` + tokens.slice( 0, i - 1 ).concat({ value: tokens[ i - 2 ].type === " " ? "*" : "" }) + ).replace( rtrim, "$1" ), + matcher, + i < j && matcherFromTokens( tokens.slice( i, j ) ), + j < len && matcherFromTokens( (tokens = tokens.slice( j )) ), + j < len && toSelector( tokens ) + ); + } + matchers.push( matcher ); + } + } + + return elementMatcher( matchers ); +} + +function matcherFromGroupMatchers( elementMatchers, setMatchers ) { + var bySet = setMatchers.length > 0, + byElement = elementMatchers.length > 0, + superMatcher = function( seed, context, xml, results, outermost ) { + var elem, j, matcher, + matchedCount = 0, + i = "0", + unmatched = seed && [], + setMatched = [], + contextBackup = outermostContext, + // We must always have either seed elements or outermost context + elems = seed || byElement && Expr.find["TAG"]( "*", outermost ), + // Use integer dirruns iff this is the outermost matcher + dirrunsUnique = (dirruns += contextBackup == null ? 1 : Math.random() || 0.1), + len = elems.length; + + if ( outermost ) { + outermostContext = context === document || context || outermost; + } + + // Add elements passing elementMatchers directly to results + // Support: IE<9, Safari + // Tolerate NodeList properties (IE: "length"; Safari: ) matching elements by id + for ( ; i !== len && (elem = elems[i]) != null; i++ ) { + if ( byElement && elem ) { + j = 0; + if ( !context && elem.ownerDocument !== document ) { + setDocument( elem ); + xml = !documentIsHTML; + } + while ( (matcher = elementMatchers[j++]) ) { + if ( matcher( elem, context || document, xml) ) { + results.push( elem ); + break; + } + } + if ( outermost ) { + dirruns = dirrunsUnique; + } + } + + // Track unmatched elements for set filters + if ( bySet ) { + // They will have gone through all possible matchers + if ( (elem = !matcher && elem) ) { + matchedCount--; + } + + // Lengthen the array for every element, matched or not + if ( seed ) { + unmatched.push( elem ); + } + } + } + + // `i` is now the count of elements visited above, and adding it to `matchedCount` + // makes the latter nonnegative. + matchedCount += i; + + // Apply set filters to unmatched elements + // NOTE: This can be skipped if there are no unmatched elements (i.e., `matchedCount` + // equals `i`), unless we didn't visit _any_ elements in the above loop because we have + // no element matchers and no seed. + // Incrementing an initially-string "0" `i` allows `i` to remain a string only in that + // case, which will result in a "00" `matchedCount` that differs from `i` but is also + // numerically zero. + if ( bySet && i !== matchedCount ) { + j = 0; + while ( (matcher = setMatchers[j++]) ) { + matcher( unmatched, setMatched, context, xml ); + } + + if ( seed ) { + // Reintegrate element matches to eliminate the need for sorting + if ( matchedCount > 0 ) { + while ( i-- ) { + if ( !(unmatched[i] || setMatched[i]) ) { + setMatched[i] = pop.call( results ); + } + } + } + + // Discard index placeholder values to get only actual matches + setMatched = condense( setMatched ); + } + + // Add matches to results + push.apply( results, setMatched ); + + // Seedless set matches succeeding multiple successful matchers stipulate sorting + if ( outermost && !seed && setMatched.length > 0 && + ( matchedCount + setMatchers.length ) > 1 ) { + + Sizzle.uniqueSort( results ); + } + } + + // Override manipulation of globals by nested matchers + if ( outermost ) { + dirruns = dirrunsUnique; + outermostContext = contextBackup; + } + + return unmatched; + }; + + return bySet ? + markFunction( superMatcher ) : + superMatcher; +} + +compile = Sizzle.compile = function( selector, match /* Internal Use Only */ ) { + var i, + setMatchers = [], + elementMatchers = [], + cached = compilerCache[ selector + " " ]; + + if ( !cached ) { + // Generate a function of recursive functions that can be used to check each element + if ( !match ) { + match = tokenize( selector ); + } + i = match.length; + while ( i-- ) { + cached = matcherFromTokens( match[i] ); + if ( cached[ expando ] ) { + setMatchers.push( cached ); + } else { + elementMatchers.push( cached ); + } + } + + // Cache the compiled function + cached = compilerCache( selector, matcherFromGroupMatchers( elementMatchers, setMatchers ) ); + + // Save selector and tokenization + cached.selector = selector; + } + return cached; +}; + +/** + * A low-level selection function that works with Sizzle's compiled + * selector functions + * @param {String|Function} selector A selector or a pre-compiled + * selector function built with Sizzle.compile + * @param {Element} context + * @param {Array} [results] + * @param {Array} [seed] A set of elements to match against + */ +select = Sizzle.select = function( selector, context, results, seed ) { + var i, tokens, token, type, find, + compiled = typeof selector === "function" && selector, + match = !seed && tokenize( (selector = compiled.selector || selector) ); + + results = results || []; + + // Try to minimize operations if there is only one selector in the list and no seed + // (the latter of which guarantees us context) + if ( match.length === 1 ) { + + // Reduce context if the leading compound selector is an ID + tokens = match[0] = match[0].slice( 0 ); + if ( tokens.length > 2 && (token = tokens[0]).type === "ID" && + context.nodeType === 9 && documentIsHTML && Expr.relative[ tokens[1].type ] ) { + + context = ( Expr.find["ID"]( token.matches[0].replace(runescape, funescape), context ) || [] )[0]; + if ( !context ) { + return results; + + // Precompiled matchers will still verify ancestry, so step up a level + } else if ( compiled ) { + context = context.parentNode; + } + + selector = selector.slice( tokens.shift().value.length ); + } + + // Fetch a seed set for right-to-left matching + i = matchExpr["needsContext"].test( selector ) ? 0 : tokens.length; + while ( i-- ) { + token = tokens[i]; + + // Abort if we hit a combinator + if ( Expr.relative[ (type = token.type) ] ) { + break; + } + if ( (find = Expr.find[ type ]) ) { + // Search, expanding context for leading sibling combinators + if ( (seed = find( + token.matches[0].replace( runescape, funescape ), + rsibling.test( tokens[0].type ) && testContext( context.parentNode ) || context + )) ) { + + // If seed is empty or no tokens remain, we can return early + tokens.splice( i, 1 ); + selector = seed.length && toSelector( tokens ); + if ( !selector ) { + push.apply( results, seed ); + return results; + } + + break; + } + } + } + } + + // Compile and execute a filtering function if one is not provided + // Provide `match` to avoid retokenization if we modified the selector above + ( compiled || compile( selector, match ) )( + seed, + context, + !documentIsHTML, + results, + !context || rsibling.test( selector ) && testContext( context.parentNode ) || context + ); + return results; +}; + +// One-time assignments + +// Sort stability +support.sortStable = expando.split("").sort( sortOrder ).join("") === expando; + +// Support: Chrome 14-35+ +// Always assume duplicates if they aren't passed to the comparison function +support.detectDuplicates = !!hasDuplicate; + +// Initialize against the default document +setDocument(); + +// Support: Webkit<537.32 - Safari 6.0.3/Chrome 25 (fixed in Chrome 27) +// Detached nodes confoundingly follow *each other* +support.sortDetached = assert(function( el ) { + // Should return 1, but returns 4 (following) + return el.compareDocumentPosition( document.createElement("fieldset") ) & 1; +}); + +// Support: IE<8 +// Prevent attribute/property "interpolation" +// https://msdn.microsoft.com/en-us/library/ms536429%28VS.85%29.aspx +if ( !assert(function( el ) { + el.innerHTML = ""; + return el.firstChild.getAttribute("href") === "#" ; +}) ) { + addHandle( "type|href|height|width", function( elem, name, isXML ) { + if ( !isXML ) { + return elem.getAttribute( name, name.toLowerCase() === "type" ? 1 : 2 ); + } + }); +} + +// Support: IE<9 +// Use defaultValue in place of getAttribute("value") +if ( !support.attributes || !assert(function( el ) { + el.innerHTML = ""; + el.firstChild.setAttribute( "value", "" ); + return el.firstChild.getAttribute( "value" ) === ""; +}) ) { + addHandle( "value", function( elem, name, isXML ) { + if ( !isXML && elem.nodeName.toLowerCase() === "input" ) { + return elem.defaultValue; + } + }); +} + +// Support: IE<9 +// Use getAttributeNode to fetch booleans when getAttribute lies +if ( !assert(function( el ) { + return el.getAttribute("disabled") == null; +}) ) { + addHandle( booleans, function( elem, name, isXML ) { + var val; + if ( !isXML ) { + return elem[ name ] === true ? name.toLowerCase() : + (val = elem.getAttributeNode( name )) && val.specified ? + val.value : + null; + } + }); +} + +return Sizzle; + +})( window ); + + + +jQuery.find = Sizzle; +jQuery.expr = Sizzle.selectors; + +// Deprecated +jQuery.expr[ ":" ] = jQuery.expr.pseudos; +jQuery.uniqueSort = jQuery.unique = Sizzle.uniqueSort; +jQuery.text = Sizzle.getText; +jQuery.isXMLDoc = Sizzle.isXML; +jQuery.contains = Sizzle.contains; +jQuery.escapeSelector = Sizzle.escape; + + + + +var dir = function( elem, dir, until ) { + var matched = [], + truncate = until !== undefined; + + while ( ( elem = elem[ dir ] ) && elem.nodeType !== 9 ) { + if ( elem.nodeType === 1 ) { + if ( truncate && jQuery( elem ).is( until ) ) { + break; + } + matched.push( elem ); + } + } + return matched; +}; + + +var siblings = function( n, elem ) { + var matched = []; + + for ( ; n; n = n.nextSibling ) { + if ( n.nodeType === 1 && n !== elem ) { + matched.push( n ); + } + } + + return matched; +}; + + +var rneedsContext = jQuery.expr.match.needsContext; + + + +function nodeName( elem, name ) { + + return elem.nodeName && elem.nodeName.toLowerCase() === name.toLowerCase(); + +}; +var rsingleTag = ( /^<([a-z][^\/\0>:\x20\t\r\n\f]*)[\x20\t\r\n\f]*\/?>(?:<\/\1>|)$/i ); + + + +var risSimple = /^.[^:#\[\.,]*$/; + +// Implement the identical functionality for filter and not +function winnow( elements, qualifier, not ) { + if ( jQuery.isFunction( qualifier ) ) { + return jQuery.grep( elements, function( elem, i ) { + return !!qualifier.call( elem, i, elem ) !== not; + } ); + } + + // Single element + if ( qualifier.nodeType ) { + return jQuery.grep( elements, function( elem ) { + return ( elem === qualifier ) !== not; + } ); + } + + // Arraylike of elements (jQuery, arguments, Array) + if ( typeof qualifier !== "string" ) { + return jQuery.grep( elements, function( elem ) { + return ( indexOf.call( qualifier, elem ) > -1 ) !== not; + } ); + } + + // Simple selector that can be filtered directly, removing non-Elements + if ( risSimple.test( qualifier ) ) { + return jQuery.filter( qualifier, elements, not ); + } + + // Complex selector, compare the two sets, removing non-Elements + qualifier = jQuery.filter( qualifier, elements ); + return jQuery.grep( elements, function( elem ) { + return ( indexOf.call( qualifier, elem ) > -1 ) !== not && elem.nodeType === 1; + } ); +} + +jQuery.filter = function( expr, elems, not ) { + var elem = elems[ 0 ]; + + if ( not ) { + expr = ":not(" + expr + ")"; + } + + if ( elems.length === 1 && elem.nodeType === 1 ) { + return jQuery.find.matchesSelector( elem, expr ) ? [ elem ] : []; + } + + return jQuery.find.matches( expr, jQuery.grep( elems, function( elem ) { + return elem.nodeType === 1; + } ) ); +}; + +jQuery.fn.extend( { + find: function( selector ) { + var i, ret, + len = this.length, + self = this; + + if ( typeof selector !== "string" ) { + return this.pushStack( jQuery( selector ).filter( function() { + for ( i = 0; i < len; i++ ) { + if ( jQuery.contains( self[ i ], this ) ) { + return true; + } + } + } ) ); + } + + ret = this.pushStack( [] ); + + for ( i = 0; i < len; i++ ) { + jQuery.find( selector, self[ i ], ret ); + } + + return len > 1 ? jQuery.uniqueSort( ret ) : ret; + }, + filter: function( selector ) { + return this.pushStack( winnow( this, selector || [], false ) ); + }, + not: function( selector ) { + return this.pushStack( winnow( this, selector || [], true ) ); + }, + is: function( selector ) { + return !!winnow( + this, + + // If this is a positional/relative selector, check membership in the returned set + // so $("p:first").is("p:last") won't return true for a doc with two "p". + typeof selector === "string" && rneedsContext.test( selector ) ? + jQuery( selector ) : + selector || [], + false + ).length; + } +} ); + + +// Initialize a jQuery object + + +// A central reference to the root jQuery(document) +var rootjQuery, + + // A simple way to check for HTML strings + // Prioritize #id over to avoid XSS via location.hash (#9521) + // Strict HTML recognition (#11290: must start with <) + // Shortcut simple #id case for speed + rquickExpr = /^(?:\s*(<[\w\W]+>)[^>]*|#([\w-]+))$/, + + init = jQuery.fn.init = function( selector, context, root ) { + var match, elem; + + // HANDLE: $(""), $(null), $(undefined), $(false) + if ( !selector ) { + return this; + } + + // Method init() accepts an alternate rootjQuery + // so migrate can support jQuery.sub (gh-2101) + root = root || rootjQuery; + + // Handle HTML strings + if ( typeof selector === "string" ) { + if ( selector[ 0 ] === "<" && + selector[ selector.length - 1 ] === ">" && + selector.length >= 3 ) { + + // Assume that strings that start and end with <> are HTML and skip the regex check + match = [ null, selector, null ]; + + } else { + match = rquickExpr.exec( selector ); + } + + // Match html or make sure no context is specified for #id + if ( match && ( match[ 1 ] || !context ) ) { + + // HANDLE: $(html) -> $(array) + if ( match[ 1 ] ) { + context = context instanceof jQuery ? context[ 0 ] : context; + + // Option to run scripts is true for back-compat + // Intentionally let the error be thrown if parseHTML is not present + jQuery.merge( this, jQuery.parseHTML( + match[ 1 ], + context && context.nodeType ? context.ownerDocument || context : document, + true + ) ); + + // HANDLE: $(html, props) + if ( rsingleTag.test( match[ 1 ] ) && jQuery.isPlainObject( context ) ) { + for ( match in context ) { + + // Properties of context are called as methods if possible + if ( jQuery.isFunction( this[ match ] ) ) { + this[ match ]( context[ match ] ); + + // ...and otherwise set as attributes + } else { + this.attr( match, context[ match ] ); + } + } + } + + return this; + + // HANDLE: $(#id) + } else { + elem = document.getElementById( match[ 2 ] ); + + if ( elem ) { + + // Inject the element directly into the jQuery object + this[ 0 ] = elem; + this.length = 1; + } + return this; + } + + // HANDLE: $(expr, $(...)) + } else if ( !context || context.jquery ) { + return ( context || root ).find( selector ); + + // HANDLE: $(expr, context) + // (which is just equivalent to: $(context).find(expr) + } else { + return this.constructor( context ).find( selector ); + } + + // HANDLE: $(DOMElement) + } else if ( selector.nodeType ) { + this[ 0 ] = selector; + this.length = 1; + return this; + + // HANDLE: $(function) + // Shortcut for document ready + } else if ( jQuery.isFunction( selector ) ) { + return root.ready !== undefined ? + root.ready( selector ) : + + // Execute immediately if ready is not present + selector( jQuery ); + } + + return jQuery.makeArray( selector, this ); + }; + +// Give the init function the jQuery prototype for later instantiation +init.prototype = jQuery.fn; + +// Initialize central reference +rootjQuery = jQuery( document ); + + +var rparentsprev = /^(?:parents|prev(?:Until|All))/, + + // Methods guaranteed to produce a unique set when starting from a unique set + guaranteedUnique = { + children: true, + contents: true, + next: true, + prev: true + }; + +jQuery.fn.extend( { + has: function( target ) { + var targets = jQuery( target, this ), + l = targets.length; + + return this.filter( function() { + var i = 0; + for ( ; i < l; i++ ) { + if ( jQuery.contains( this, targets[ i ] ) ) { + return true; + } + } + } ); + }, + + closest: function( selectors, context ) { + var cur, + i = 0, + l = this.length, + matched = [], + targets = typeof selectors !== "string" && jQuery( selectors ); + + // Positional selectors never match, since there's no _selection_ context + if ( !rneedsContext.test( selectors ) ) { + for ( ; i < l; i++ ) { + for ( cur = this[ i ]; cur && cur !== context; cur = cur.parentNode ) { + + // Always skip document fragments + if ( cur.nodeType < 11 && ( targets ? + targets.index( cur ) > -1 : + + // Don't pass non-elements to Sizzle + cur.nodeType === 1 && + jQuery.find.matchesSelector( cur, selectors ) ) ) { + + matched.push( cur ); + break; + } + } + } + } + + return this.pushStack( matched.length > 1 ? jQuery.uniqueSort( matched ) : matched ); + }, + + // Determine the position of an element within the set + index: function( elem ) { + + // No argument, return index in parent + if ( !elem ) { + return ( this[ 0 ] && this[ 0 ].parentNode ) ? this.first().prevAll().length : -1; + } + + // Index in selector + if ( typeof elem === "string" ) { + return indexOf.call( jQuery( elem ), this[ 0 ] ); + } + + // Locate the position of the desired element + return indexOf.call( this, + + // If it receives a jQuery object, the first element is used + elem.jquery ? elem[ 0 ] : elem + ); + }, + + add: function( selector, context ) { + return this.pushStack( + jQuery.uniqueSort( + jQuery.merge( this.get(), jQuery( selector, context ) ) + ) + ); + }, + + addBack: function( selector ) { + return this.add( selector == null ? + this.prevObject : this.prevObject.filter( selector ) + ); + } +} ); + +function sibling( cur, dir ) { + while ( ( cur = cur[ dir ] ) && cur.nodeType !== 1 ) {} + return cur; +} + +jQuery.each( { + parent: function( elem ) { + var parent = elem.parentNode; + return parent && parent.nodeType !== 11 ? parent : null; + }, + parents: function( elem ) { + return dir( elem, "parentNode" ); + }, + parentsUntil: function( elem, i, until ) { + return dir( elem, "parentNode", until ); + }, + next: function( elem ) { + return sibling( elem, "nextSibling" ); + }, + prev: function( elem ) { + return sibling( elem, "previousSibling" ); + }, + nextAll: function( elem ) { + return dir( elem, "nextSibling" ); + }, + prevAll: function( elem ) { + return dir( elem, "previousSibling" ); + }, + nextUntil: function( elem, i, until ) { + return dir( elem, "nextSibling", until ); + }, + prevUntil: function( elem, i, until ) { + return dir( elem, "previousSibling", until ); + }, + siblings: function( elem ) { + return siblings( ( elem.parentNode || {} ).firstChild, elem ); + }, + children: function( elem ) { + return siblings( elem.firstChild ); + }, + contents: function( elem ) { + if ( nodeName( elem, "iframe" ) ) { + return elem.contentDocument; + } + + // Support: IE 9 - 11 only, iOS 7 only, Android Browser <=4.3 only + // Treat the template element as a regular one in browsers that + // don't support it. + if ( nodeName( elem, "template" ) ) { + elem = elem.content || elem; + } + + return jQuery.merge( [], elem.childNodes ); + } +}, function( name, fn ) { + jQuery.fn[ name ] = function( until, selector ) { + var matched = jQuery.map( this, fn, until ); + + if ( name.slice( -5 ) !== "Until" ) { + selector = until; + } + + if ( selector && typeof selector === "string" ) { + matched = jQuery.filter( selector, matched ); + } + + if ( this.length > 1 ) { + + // Remove duplicates + if ( !guaranteedUnique[ name ] ) { + jQuery.uniqueSort( matched ); + } + + // Reverse order for parents* and prev-derivatives + if ( rparentsprev.test( name ) ) { + matched.reverse(); + } + } + + return this.pushStack( matched ); + }; +} ); +var rnothtmlwhite = ( /[^\x20\t\r\n\f]+/g ); + + + +// Convert String-formatted options into Object-formatted ones +function createOptions( options ) { + var object = {}; + jQuery.each( options.match( rnothtmlwhite ) || [], function( _, flag ) { + object[ flag ] = true; + } ); + return object; +} + +/* + * Create a callback list using the following parameters: + * + * options: an optional list of space-separated options that will change how + * the callback list behaves or a more traditional option object + * + * By default a callback list will act like an event callback list and can be + * "fired" multiple times. + * + * Possible options: + * + * once: will ensure the callback list can only be fired once (like a Deferred) + * + * memory: will keep track of previous values and will call any callback added + * after the list has been fired right away with the latest "memorized" + * values (like a Deferred) + * + * unique: will ensure a callback can only be added once (no duplicate in the list) + * + * stopOnFalse: interrupt callings when a callback returns false + * + */ +jQuery.Callbacks = function( options ) { + + // Convert options from String-formatted to Object-formatted if needed + // (we check in cache first) + options = typeof options === "string" ? + createOptions( options ) : + jQuery.extend( {}, options ); + + var // Flag to know if list is currently firing + firing, + + // Last fire value for non-forgettable lists + memory, + + // Flag to know if list was already fired + fired, + + // Flag to prevent firing + locked, + + // Actual callback list + list = [], + + // Queue of execution data for repeatable lists + queue = [], + + // Index of currently firing callback (modified by add/remove as needed) + firingIndex = -1, + + // Fire callbacks + fire = function() { + + // Enforce single-firing + locked = locked || options.once; + + // Execute callbacks for all pending executions, + // respecting firingIndex overrides and runtime changes + fired = firing = true; + for ( ; queue.length; firingIndex = -1 ) { + memory = queue.shift(); + while ( ++firingIndex < list.length ) { + + // Run callback and check for early termination + if ( list[ firingIndex ].apply( memory[ 0 ], memory[ 1 ] ) === false && + options.stopOnFalse ) { + + // Jump to end and forget the data so .add doesn't re-fire + firingIndex = list.length; + memory = false; + } + } + } + + // Forget the data if we're done with it + if ( !options.memory ) { + memory = false; + } + + firing = false; + + // Clean up if we're done firing for good + if ( locked ) { + + // Keep an empty list if we have data for future add calls + if ( memory ) { + list = []; + + // Otherwise, this object is spent + } else { + list = ""; + } + } + }, + + // Actual Callbacks object + self = { + + // Add a callback or a collection of callbacks to the list + add: function() { + if ( list ) { + + // If we have memory from a past run, we should fire after adding + if ( memory && !firing ) { + firingIndex = list.length - 1; + queue.push( memory ); + } + + ( function add( args ) { + jQuery.each( args, function( _, arg ) { + if ( jQuery.isFunction( arg ) ) { + if ( !options.unique || !self.has( arg ) ) { + list.push( arg ); + } + } else if ( arg && arg.length && jQuery.type( arg ) !== "string" ) { + + // Inspect recursively + add( arg ); + } + } ); + } )( arguments ); + + if ( memory && !firing ) { + fire(); + } + } + return this; + }, + + // Remove a callback from the list + remove: function() { + jQuery.each( arguments, function( _, arg ) { + var index; + while ( ( index = jQuery.inArray( arg, list, index ) ) > -1 ) { + list.splice( index, 1 ); + + // Handle firing indexes + if ( index <= firingIndex ) { + firingIndex--; + } + } + } ); + return this; + }, + + // Check if a given callback is in the list. + // If no argument is given, return whether or not list has callbacks attached. + has: function( fn ) { + return fn ? + jQuery.inArray( fn, list ) > -1 : + list.length > 0; + }, + + // Remove all callbacks from the list + empty: function() { + if ( list ) { + list = []; + } + return this; + }, + + // Disable .fire and .add + // Abort any current/pending executions + // Clear all callbacks and values + disable: function() { + locked = queue = []; + list = memory = ""; + return this; + }, + disabled: function() { + return !list; + }, + + // Disable .fire + // Also disable .add unless we have memory (since it would have no effect) + // Abort any pending executions + lock: function() { + locked = queue = []; + if ( !memory && !firing ) { + list = memory = ""; + } + return this; + }, + locked: function() { + return !!locked; + }, + + // Call all callbacks with the given context and arguments + fireWith: function( context, args ) { + if ( !locked ) { + args = args || []; + args = [ context, args.slice ? args.slice() : args ]; + queue.push( args ); + if ( !firing ) { + fire(); + } + } + return this; + }, + + // Call all the callbacks with the given arguments + fire: function() { + self.fireWith( this, arguments ); + return this; + }, + + // To know if the callbacks have already been called at least once + fired: function() { + return !!fired; + } + }; + + return self; +}; + + +function Identity( v ) { + return v; +} +function Thrower( ex ) { + throw ex; +} + +function adoptValue( value, resolve, reject, noValue ) { + var method; + + try { + + // Check for promise aspect first to privilege synchronous behavior + if ( value && jQuery.isFunction( ( method = value.promise ) ) ) { + method.call( value ).done( resolve ).fail( reject ); + + // Other thenables + } else if ( value && jQuery.isFunction( ( method = value.then ) ) ) { + method.call( value, resolve, reject ); + + // Other non-thenables + } else { + + // Control `resolve` arguments by letting Array#slice cast boolean `noValue` to integer: + // * false: [ value ].slice( 0 ) => resolve( value ) + // * true: [ value ].slice( 1 ) => resolve() + resolve.apply( undefined, [ value ].slice( noValue ) ); + } + + // For Promises/A+, convert exceptions into rejections + // Since jQuery.when doesn't unwrap thenables, we can skip the extra checks appearing in + // Deferred#then to conditionally suppress rejection. + } catch ( value ) { + + // Support: Android 4.0 only + // Strict mode functions invoked without .call/.apply get global-object context + reject.apply( undefined, [ value ] ); + } +} + +jQuery.extend( { + + Deferred: function( func ) { + var tuples = [ + + // action, add listener, callbacks, + // ... .then handlers, argument index, [final state] + [ "notify", "progress", jQuery.Callbacks( "memory" ), + jQuery.Callbacks( "memory" ), 2 ], + [ "resolve", "done", jQuery.Callbacks( "once memory" ), + jQuery.Callbacks( "once memory" ), 0, "resolved" ], + [ "reject", "fail", jQuery.Callbacks( "once memory" ), + jQuery.Callbacks( "once memory" ), 1, "rejected" ] + ], + state = "pending", + promise = { + state: function() { + return state; + }, + always: function() { + deferred.done( arguments ).fail( arguments ); + return this; + }, + "catch": function( fn ) { + return promise.then( null, fn ); + }, + + // Keep pipe for back-compat + pipe: function( /* fnDone, fnFail, fnProgress */ ) { + var fns = arguments; + + return jQuery.Deferred( function( newDefer ) { + jQuery.each( tuples, function( i, tuple ) { + + // Map tuples (progress, done, fail) to arguments (done, fail, progress) + var fn = jQuery.isFunction( fns[ tuple[ 4 ] ] ) && fns[ tuple[ 4 ] ]; + + // deferred.progress(function() { bind to newDefer or newDefer.notify }) + // deferred.done(function() { bind to newDefer or newDefer.resolve }) + // deferred.fail(function() { bind to newDefer or newDefer.reject }) + deferred[ tuple[ 1 ] ]( function() { + var returned = fn && fn.apply( this, arguments ); + if ( returned && jQuery.isFunction( returned.promise ) ) { + returned.promise() + .progress( newDefer.notify ) + .done( newDefer.resolve ) + .fail( newDefer.reject ); + } else { + newDefer[ tuple[ 0 ] + "With" ]( + this, + fn ? [ returned ] : arguments + ); + } + } ); + } ); + fns = null; + } ).promise(); + }, + then: function( onFulfilled, onRejected, onProgress ) { + var maxDepth = 0; + function resolve( depth, deferred, handler, special ) { + return function() { + var that = this, + args = arguments, + mightThrow = function() { + var returned, then; + + // Support: Promises/A+ section 2.3.3.3.3 + // https://promisesaplus.com/#point-59 + // Ignore double-resolution attempts + if ( depth < maxDepth ) { + return; + } + + returned = handler.apply( that, args ); + + // Support: Promises/A+ section 2.3.1 + // https://promisesaplus.com/#point-48 + if ( returned === deferred.promise() ) { + throw new TypeError( "Thenable self-resolution" ); + } + + // Support: Promises/A+ sections 2.3.3.1, 3.5 + // https://promisesaplus.com/#point-54 + // https://promisesaplus.com/#point-75 + // Retrieve `then` only once + then = returned && + + // Support: Promises/A+ section 2.3.4 + // https://promisesaplus.com/#point-64 + // Only check objects and functions for thenability + ( typeof returned === "object" || + typeof returned === "function" ) && + returned.then; + + // Handle a returned thenable + if ( jQuery.isFunction( then ) ) { + + // Special processors (notify) just wait for resolution + if ( special ) { + then.call( + returned, + resolve( maxDepth, deferred, Identity, special ), + resolve( maxDepth, deferred, Thrower, special ) + ); + + // Normal processors (resolve) also hook into progress + } else { + + // ...and disregard older resolution values + maxDepth++; + + then.call( + returned, + resolve( maxDepth, deferred, Identity, special ), + resolve( maxDepth, deferred, Thrower, special ), + resolve( maxDepth, deferred, Identity, + deferred.notifyWith ) + ); + } + + // Handle all other returned values + } else { + + // Only substitute handlers pass on context + // and multiple values (non-spec behavior) + if ( handler !== Identity ) { + that = undefined; + args = [ returned ]; + } + + // Process the value(s) + // Default process is resolve + ( special || deferred.resolveWith )( that, args ); + } + }, + + // Only normal processors (resolve) catch and reject exceptions + process = special ? + mightThrow : + function() { + try { + mightThrow(); + } catch ( e ) { + + if ( jQuery.Deferred.exceptionHook ) { + jQuery.Deferred.exceptionHook( e, + process.stackTrace ); + } + + // Support: Promises/A+ section 2.3.3.3.4.1 + // https://promisesaplus.com/#point-61 + // Ignore post-resolution exceptions + if ( depth + 1 >= maxDepth ) { + + // Only substitute handlers pass on context + // and multiple values (non-spec behavior) + if ( handler !== Thrower ) { + that = undefined; + args = [ e ]; + } + + deferred.rejectWith( that, args ); + } + } + }; + + // Support: Promises/A+ section 2.3.3.3.1 + // https://promisesaplus.com/#point-57 + // Re-resolve promises immediately to dodge false rejection from + // subsequent errors + if ( depth ) { + process(); + } else { + + // Call an optional hook to record the stack, in case of exception + // since it's otherwise lost when execution goes async + if ( jQuery.Deferred.getStackHook ) { + process.stackTrace = jQuery.Deferred.getStackHook(); + } + window.setTimeout( process ); + } + }; + } + + return jQuery.Deferred( function( newDefer ) { + + // progress_handlers.add( ... ) + tuples[ 0 ][ 3 ].add( + resolve( + 0, + newDefer, + jQuery.isFunction( onProgress ) ? + onProgress : + Identity, + newDefer.notifyWith + ) + ); + + // fulfilled_handlers.add( ... ) + tuples[ 1 ][ 3 ].add( + resolve( + 0, + newDefer, + jQuery.isFunction( onFulfilled ) ? + onFulfilled : + Identity + ) + ); + + // rejected_handlers.add( ... ) + tuples[ 2 ][ 3 ].add( + resolve( + 0, + newDefer, + jQuery.isFunction( onRejected ) ? + onRejected : + Thrower + ) + ); + } ).promise(); + }, + + // Get a promise for this deferred + // If obj is provided, the promise aspect is added to the object + promise: function( obj ) { + return obj != null ? jQuery.extend( obj, promise ) : promise; + } + }, + deferred = {}; + + // Add list-specific methods + jQuery.each( tuples, function( i, tuple ) { + var list = tuple[ 2 ], + stateString = tuple[ 5 ]; + + // promise.progress = list.add + // promise.done = list.add + // promise.fail = list.add + promise[ tuple[ 1 ] ] = list.add; + + // Handle state + if ( stateString ) { + list.add( + function() { + + // state = "resolved" (i.e., fulfilled) + // state = "rejected" + state = stateString; + }, + + // rejected_callbacks.disable + // fulfilled_callbacks.disable + tuples[ 3 - i ][ 2 ].disable, + + // progress_callbacks.lock + tuples[ 0 ][ 2 ].lock + ); + } + + // progress_handlers.fire + // fulfilled_handlers.fire + // rejected_handlers.fire + list.add( tuple[ 3 ].fire ); + + // deferred.notify = function() { deferred.notifyWith(...) } + // deferred.resolve = function() { deferred.resolveWith(...) } + // deferred.reject = function() { deferred.rejectWith(...) } + deferred[ tuple[ 0 ] ] = function() { + deferred[ tuple[ 0 ] + "With" ]( this === deferred ? undefined : this, arguments ); + return this; + }; + + // deferred.notifyWith = list.fireWith + // deferred.resolveWith = list.fireWith + // deferred.rejectWith = list.fireWith + deferred[ tuple[ 0 ] + "With" ] = list.fireWith; + } ); + + // Make the deferred a promise + promise.promise( deferred ); + + // Call given func if any + if ( func ) { + func.call( deferred, deferred ); + } + + // All done! + return deferred; + }, + + // Deferred helper + when: function( singleValue ) { + var + + // count of uncompleted subordinates + remaining = arguments.length, + + // count of unprocessed arguments + i = remaining, + + // subordinate fulfillment data + resolveContexts = Array( i ), + resolveValues = slice.call( arguments ), + + // the master Deferred + master = jQuery.Deferred(), + + // subordinate callback factory + updateFunc = function( i ) { + return function( value ) { + resolveContexts[ i ] = this; + resolveValues[ i ] = arguments.length > 1 ? slice.call( arguments ) : value; + if ( !( --remaining ) ) { + master.resolveWith( resolveContexts, resolveValues ); + } + }; + }; + + // Single- and empty arguments are adopted like Promise.resolve + if ( remaining <= 1 ) { + adoptValue( singleValue, master.done( updateFunc( i ) ).resolve, master.reject, + !remaining ); + + // Use .then() to unwrap secondary thenables (cf. gh-3000) + if ( master.state() === "pending" || + jQuery.isFunction( resolveValues[ i ] && resolveValues[ i ].then ) ) { + + return master.then(); + } + } + + // Multiple arguments are aggregated like Promise.all array elements + while ( i-- ) { + adoptValue( resolveValues[ i ], updateFunc( i ), master.reject ); + } + + return master.promise(); + } +} ); + + +// These usually indicate a programmer mistake during development, +// warn about them ASAP rather than swallowing them by default. +var rerrorNames = /^(Eval|Internal|Range|Reference|Syntax|Type|URI)Error$/; + +jQuery.Deferred.exceptionHook = function( error, stack ) { + + // Support: IE 8 - 9 only + // Console exists when dev tools are open, which can happen at any time + if ( window.console && window.console.warn && error && rerrorNames.test( error.name ) ) { + window.console.warn( "jQuery.Deferred exception: " + error.message, error.stack, stack ); + } +}; + + + + +jQuery.readyException = function( error ) { + window.setTimeout( function() { + throw error; + } ); +}; + + + + +// The deferred used on DOM ready +var readyList = jQuery.Deferred(); + +jQuery.fn.ready = function( fn ) { + + readyList + .then( fn ) + + // Wrap jQuery.readyException in a function so that the lookup + // happens at the time of error handling instead of callback + // registration. + .catch( function( error ) { + jQuery.readyException( error ); + } ); + + return this; +}; + +jQuery.extend( { + + // Is the DOM ready to be used? Set to true once it occurs. + isReady: false, + + // A counter to track how many items to wait for before + // the ready event fires. See #6781 + readyWait: 1, + + // Handle when the DOM is ready + ready: function( wait ) { + + // Abort if there are pending holds or we're already ready + if ( wait === true ? --jQuery.readyWait : jQuery.isReady ) { + return; + } + + // Remember that the DOM is ready + jQuery.isReady = true; + + // If a normal DOM Ready event fired, decrement, and wait if need be + if ( wait !== true && --jQuery.readyWait > 0 ) { + return; + } + + // If there are functions bound, to execute + readyList.resolveWith( document, [ jQuery ] ); + } +} ); + +jQuery.ready.then = readyList.then; + +// The ready event handler and self cleanup method +function completed() { + document.removeEventListener( "DOMContentLoaded", completed ); + window.removeEventListener( "load", completed ); + jQuery.ready(); +} + +// Catch cases where $(document).ready() is called +// after the browser event has already occurred. +// Support: IE <=9 - 10 only +// Older IE sometimes signals "interactive" too soon +if ( document.readyState === "complete" || + ( document.readyState !== "loading" && !document.documentElement.doScroll ) ) { + + // Handle it asynchronously to allow scripts the opportunity to delay ready + window.setTimeout( jQuery.ready ); + +} else { + + // Use the handy event callback + document.addEventListener( "DOMContentLoaded", completed ); + + // A fallback to window.onload, that will always work + window.addEventListener( "load", completed ); +} + + + + +// Multifunctional method to get and set values of a collection +// The value/s can optionally be executed if it's a function +var access = function( elems, fn, key, value, chainable, emptyGet, raw ) { + var i = 0, + len = elems.length, + bulk = key == null; + + // Sets many values + if ( jQuery.type( key ) === "object" ) { + chainable = true; + for ( i in key ) { + access( elems, fn, i, key[ i ], true, emptyGet, raw ); + } + + // Sets one value + } else if ( value !== undefined ) { + chainable = true; + + if ( !jQuery.isFunction( value ) ) { + raw = true; + } + + if ( bulk ) { + + // Bulk operations run against the entire set + if ( raw ) { + fn.call( elems, value ); + fn = null; + + // ...except when executing function values + } else { + bulk = fn; + fn = function( elem, key, value ) { + return bulk.call( jQuery( elem ), value ); + }; + } + } + + if ( fn ) { + for ( ; i < len; i++ ) { + fn( + elems[ i ], key, raw ? + value : + value.call( elems[ i ], i, fn( elems[ i ], key ) ) + ); + } + } + } + + if ( chainable ) { + return elems; + } + + // Gets + if ( bulk ) { + return fn.call( elems ); + } + + return len ? fn( elems[ 0 ], key ) : emptyGet; +}; +var acceptData = function( owner ) { + + // Accepts only: + // - Node + // - Node.ELEMENT_NODE + // - Node.DOCUMENT_NODE + // - Object + // - Any + return owner.nodeType === 1 || owner.nodeType === 9 || !( +owner.nodeType ); +}; + + + + +function Data() { + this.expando = jQuery.expando + Data.uid++; +} + +Data.uid = 1; + +Data.prototype = { + + cache: function( owner ) { + + // Check if the owner object already has a cache + var value = owner[ this.expando ]; + + // If not, create one + if ( !value ) { + value = {}; + + // We can accept data for non-element nodes in modern browsers, + // but we should not, see #8335. + // Always return an empty object. + if ( acceptData( owner ) ) { + + // If it is a node unlikely to be stringify-ed or looped over + // use plain assignment + if ( owner.nodeType ) { + owner[ this.expando ] = value; + + // Otherwise secure it in a non-enumerable property + // configurable must be true to allow the property to be + // deleted when data is removed + } else { + Object.defineProperty( owner, this.expando, { + value: value, + configurable: true + } ); + } + } + } + + return value; + }, + set: function( owner, data, value ) { + var prop, + cache = this.cache( owner ); + + // Handle: [ owner, key, value ] args + // Always use camelCase key (gh-2257) + if ( typeof data === "string" ) { + cache[ jQuery.camelCase( data ) ] = value; + + // Handle: [ owner, { properties } ] args + } else { + + // Copy the properties one-by-one to the cache object + for ( prop in data ) { + cache[ jQuery.camelCase( prop ) ] = data[ prop ]; + } + } + return cache; + }, + get: function( owner, key ) { + return key === undefined ? + this.cache( owner ) : + + // Always use camelCase key (gh-2257) + owner[ this.expando ] && owner[ this.expando ][ jQuery.camelCase( key ) ]; + }, + access: function( owner, key, value ) { + + // In cases where either: + // + // 1. No key was specified + // 2. A string key was specified, but no value provided + // + // Take the "read" path and allow the get method to determine + // which value to return, respectively either: + // + // 1. The entire cache object + // 2. The data stored at the key + // + if ( key === undefined || + ( ( key && typeof key === "string" ) && value === undefined ) ) { + + return this.get( owner, key ); + } + + // When the key is not a string, or both a key and value + // are specified, set or extend (existing objects) with either: + // + // 1. An object of properties + // 2. A key and value + // + this.set( owner, key, value ); + + // Since the "set" path can have two possible entry points + // return the expected data based on which path was taken[*] + return value !== undefined ? value : key; + }, + remove: function( owner, key ) { + var i, + cache = owner[ this.expando ]; + + if ( cache === undefined ) { + return; + } + + if ( key !== undefined ) { + + // Support array or space separated string of keys + if ( Array.isArray( key ) ) { + + // If key is an array of keys... + // We always set camelCase keys, so remove that. + key = key.map( jQuery.camelCase ); + } else { + key = jQuery.camelCase( key ); + + // If a key with the spaces exists, use it. + // Otherwise, create an array by matching non-whitespace + key = key in cache ? + [ key ] : + ( key.match( rnothtmlwhite ) || [] ); + } + + i = key.length; + + while ( i-- ) { + delete cache[ key[ i ] ]; + } + } + + // Remove the expando if there's no more data + if ( key === undefined || jQuery.isEmptyObject( cache ) ) { + + // Support: Chrome <=35 - 45 + // Webkit & Blink performance suffers when deleting properties + // from DOM nodes, so set to undefined instead + // https://bugs.chromium.org/p/chromium/issues/detail?id=378607 (bug restricted) + if ( owner.nodeType ) { + owner[ this.expando ] = undefined; + } else { + delete owner[ this.expando ]; + } + } + }, + hasData: function( owner ) { + var cache = owner[ this.expando ]; + return cache !== undefined && !jQuery.isEmptyObject( cache ); + } +}; +var dataPriv = new Data(); + +var dataUser = new Data(); + + + +// Implementation Summary +// +// 1. Enforce API surface and semantic compatibility with 1.9.x branch +// 2. Improve the module's maintainability by reducing the storage +// paths to a single mechanism. +// 3. Use the same single mechanism to support "private" and "user" data. +// 4. _Never_ expose "private" data to user code (TODO: Drop _data, _removeData) +// 5. Avoid exposing implementation details on user objects (eg. expando properties) +// 6. Provide a clear path for implementation upgrade to WeakMap in 2014 + +var rbrace = /^(?:\{[\w\W]*\}|\[[\w\W]*\])$/, + rmultiDash = /[A-Z]/g; + +function getData( data ) { + if ( data === "true" ) { + return true; + } + + if ( data === "false" ) { + return false; + } + + if ( data === "null" ) { + return null; + } + + // Only convert to a number if it doesn't change the string + if ( data === +data + "" ) { + return +data; + } + + if ( rbrace.test( data ) ) { + return JSON.parse( data ); + } + + return data; +} + +function dataAttr( elem, key, data ) { + var name; + + // If nothing was found internally, try to fetch any + // data from the HTML5 data-* attribute + if ( data === undefined && elem.nodeType === 1 ) { + name = "data-" + key.replace( rmultiDash, "-$&" ).toLowerCase(); + data = elem.getAttribute( name ); + + if ( typeof data === "string" ) { + try { + data = getData( data ); + } catch ( e ) {} + + // Make sure we set the data so it isn't changed later + dataUser.set( elem, key, data ); + } else { + data = undefined; + } + } + return data; +} + +jQuery.extend( { + hasData: function( elem ) { + return dataUser.hasData( elem ) || dataPriv.hasData( elem ); + }, + + data: function( elem, name, data ) { + return dataUser.access( elem, name, data ); + }, + + removeData: function( elem, name ) { + dataUser.remove( elem, name ); + }, + + // TODO: Now that all calls to _data and _removeData have been replaced + // with direct calls to dataPriv methods, these can be deprecated. + _data: function( elem, name, data ) { + return dataPriv.access( elem, name, data ); + }, + + _removeData: function( elem, name ) { + dataPriv.remove( elem, name ); + } +} ); + +jQuery.fn.extend( { + data: function( key, value ) { + var i, name, data, + elem = this[ 0 ], + attrs = elem && elem.attributes; + + // Gets all values + if ( key === undefined ) { + if ( this.length ) { + data = dataUser.get( elem ); + + if ( elem.nodeType === 1 && !dataPriv.get( elem, "hasDataAttrs" ) ) { + i = attrs.length; + while ( i-- ) { + + // Support: IE 11 only + // The attrs elements can be null (#14894) + if ( attrs[ i ] ) { + name = attrs[ i ].name; + if ( name.indexOf( "data-" ) === 0 ) { + name = jQuery.camelCase( name.slice( 5 ) ); + dataAttr( elem, name, data[ name ] ); + } + } + } + dataPriv.set( elem, "hasDataAttrs", true ); + } + } + + return data; + } + + // Sets multiple values + if ( typeof key === "object" ) { + return this.each( function() { + dataUser.set( this, key ); + } ); + } + + return access( this, function( value ) { + var data; + + // The calling jQuery object (element matches) is not empty + // (and therefore has an element appears at this[ 0 ]) and the + // `value` parameter was not undefined. An empty jQuery object + // will result in `undefined` for elem = this[ 0 ] which will + // throw an exception if an attempt to read a data cache is made. + if ( elem && value === undefined ) { + + // Attempt to get data from the cache + // The key will always be camelCased in Data + data = dataUser.get( elem, key ); + if ( data !== undefined ) { + return data; + } + + // Attempt to "discover" the data in + // HTML5 custom data-* attrs + data = dataAttr( elem, key ); + if ( data !== undefined ) { + return data; + } + + // We tried really hard, but the data doesn't exist. + return; + } + + // Set the data... + this.each( function() { + + // We always store the camelCased key + dataUser.set( this, key, value ); + } ); + }, null, value, arguments.length > 1, null, true ); + }, + + removeData: function( key ) { + return this.each( function() { + dataUser.remove( this, key ); + } ); + } +} ); + + +jQuery.extend( { + queue: function( elem, type, data ) { + var queue; + + if ( elem ) { + type = ( type || "fx" ) + "queue"; + queue = dataPriv.get( elem, type ); + + // Speed up dequeue by getting out quickly if this is just a lookup + if ( data ) { + if ( !queue || Array.isArray( data ) ) { + queue = dataPriv.access( elem, type, jQuery.makeArray( data ) ); + } else { + queue.push( data ); + } + } + return queue || []; + } + }, + + dequeue: function( elem, type ) { + type = type || "fx"; + + var queue = jQuery.queue( elem, type ), + startLength = queue.length, + fn = queue.shift(), + hooks = jQuery._queueHooks( elem, type ), + next = function() { + jQuery.dequeue( elem, type ); + }; + + // If the fx queue is dequeued, always remove the progress sentinel + if ( fn === "inprogress" ) { + fn = queue.shift(); + startLength--; + } + + if ( fn ) { + + // Add a progress sentinel to prevent the fx queue from being + // automatically dequeued + if ( type === "fx" ) { + queue.unshift( "inprogress" ); + } + + // Clear up the last queue stop function + delete hooks.stop; + fn.call( elem, next, hooks ); + } + + if ( !startLength && hooks ) { + hooks.empty.fire(); + } + }, + + // Not public - generate a queueHooks object, or return the current one + _queueHooks: function( elem, type ) { + var key = type + "queueHooks"; + return dataPriv.get( elem, key ) || dataPriv.access( elem, key, { + empty: jQuery.Callbacks( "once memory" ).add( function() { + dataPriv.remove( elem, [ type + "queue", key ] ); + } ) + } ); + } +} ); + +jQuery.fn.extend( { + queue: function( type, data ) { + var setter = 2; + + if ( typeof type !== "string" ) { + data = type; + type = "fx"; + setter--; + } + + if ( arguments.length < setter ) { + return jQuery.queue( this[ 0 ], type ); + } + + return data === undefined ? + this : + this.each( function() { + var queue = jQuery.queue( this, type, data ); + + // Ensure a hooks for this queue + jQuery._queueHooks( this, type ); + + if ( type === "fx" && queue[ 0 ] !== "inprogress" ) { + jQuery.dequeue( this, type ); + } + } ); + }, + dequeue: function( type ) { + return this.each( function() { + jQuery.dequeue( this, type ); + } ); + }, + clearQueue: function( type ) { + return this.queue( type || "fx", [] ); + }, + + // Get a promise resolved when queues of a certain type + // are emptied (fx is the type by default) + promise: function( type, obj ) { + var tmp, + count = 1, + defer = jQuery.Deferred(), + elements = this, + i = this.length, + resolve = function() { + if ( !( --count ) ) { + defer.resolveWith( elements, [ elements ] ); + } + }; + + if ( typeof type !== "string" ) { + obj = type; + type = undefined; + } + type = type || "fx"; + + while ( i-- ) { + tmp = dataPriv.get( elements[ i ], type + "queueHooks" ); + if ( tmp && tmp.empty ) { + count++; + tmp.empty.add( resolve ); + } + } + resolve(); + return defer.promise( obj ); + } +} ); +var pnum = ( /[+-]?(?:\d*\.|)\d+(?:[eE][+-]?\d+|)/ ).source; + +var rcssNum = new RegExp( "^(?:([+-])=|)(" + pnum + ")([a-z%]*)$", "i" ); + + +var cssExpand = [ "Top", "Right", "Bottom", "Left" ]; + +var isHiddenWithinTree = function( elem, el ) { + + // isHiddenWithinTree might be called from jQuery#filter function; + // in that case, element will be second argument + elem = el || elem; + + // Inline style trumps all + return elem.style.display === "none" || + elem.style.display === "" && + + // Otherwise, check computed style + // Support: Firefox <=43 - 45 + // Disconnected elements can have computed display: none, so first confirm that elem is + // in the document. + jQuery.contains( elem.ownerDocument, elem ) && + + jQuery.css( elem, "display" ) === "none"; + }; + +var swap = function( elem, options, callback, args ) { + var ret, name, + old = {}; + + // Remember the old values, and insert the new ones + for ( name in options ) { + old[ name ] = elem.style[ name ]; + elem.style[ name ] = options[ name ]; + } + + ret = callback.apply( elem, args || [] ); + + // Revert the old values + for ( name in options ) { + elem.style[ name ] = old[ name ]; + } + + return ret; +}; + + + + +function adjustCSS( elem, prop, valueParts, tween ) { + var adjusted, + scale = 1, + maxIterations = 20, + currentValue = tween ? + function() { + return tween.cur(); + } : + function() { + return jQuery.css( elem, prop, "" ); + }, + initial = currentValue(), + unit = valueParts && valueParts[ 3 ] || ( jQuery.cssNumber[ prop ] ? "" : "px" ), + + // Starting value computation is required for potential unit mismatches + initialInUnit = ( jQuery.cssNumber[ prop ] || unit !== "px" && +initial ) && + rcssNum.exec( jQuery.css( elem, prop ) ); + + if ( initialInUnit && initialInUnit[ 3 ] !== unit ) { + + // Trust units reported by jQuery.css + unit = unit || initialInUnit[ 3 ]; + + // Make sure we update the tween properties later on + valueParts = valueParts || []; + + // Iteratively approximate from a nonzero starting point + initialInUnit = +initial || 1; + + do { + + // If previous iteration zeroed out, double until we get *something*. + // Use string for doubling so we don't accidentally see scale as unchanged below + scale = scale || ".5"; + + // Adjust and apply + initialInUnit = initialInUnit / scale; + jQuery.style( elem, prop, initialInUnit + unit ); + + // Update scale, tolerating zero or NaN from tween.cur() + // Break the loop if scale is unchanged or perfect, or if we've just had enough. + } while ( + scale !== ( scale = currentValue() / initial ) && scale !== 1 && --maxIterations + ); + } + + if ( valueParts ) { + initialInUnit = +initialInUnit || +initial || 0; + + // Apply relative offset (+=/-=) if specified + adjusted = valueParts[ 1 ] ? + initialInUnit + ( valueParts[ 1 ] + 1 ) * valueParts[ 2 ] : + +valueParts[ 2 ]; + if ( tween ) { + tween.unit = unit; + tween.start = initialInUnit; + tween.end = adjusted; + } + } + return adjusted; +} + + +var defaultDisplayMap = {}; + +function getDefaultDisplay( elem ) { + var temp, + doc = elem.ownerDocument, + nodeName = elem.nodeName, + display = defaultDisplayMap[ nodeName ]; + + if ( display ) { + return display; + } + + temp = doc.body.appendChild( doc.createElement( nodeName ) ); + display = jQuery.css( temp, "display" ); + + temp.parentNode.removeChild( temp ); + + if ( display === "none" ) { + display = "block"; + } + defaultDisplayMap[ nodeName ] = display; + + return display; +} + +function showHide( elements, show ) { + var display, elem, + values = [], + index = 0, + length = elements.length; + + // Determine new display value for elements that need to change + for ( ; index < length; index++ ) { + elem = elements[ index ]; + if ( !elem.style ) { + continue; + } + + display = elem.style.display; + if ( show ) { + + // Since we force visibility upon cascade-hidden elements, an immediate (and slow) + // check is required in this first loop unless we have a nonempty display value (either + // inline or about-to-be-restored) + if ( display === "none" ) { + values[ index ] = dataPriv.get( elem, "display" ) || null; + if ( !values[ index ] ) { + elem.style.display = ""; + } + } + if ( elem.style.display === "" && isHiddenWithinTree( elem ) ) { + values[ index ] = getDefaultDisplay( elem ); + } + } else { + if ( display !== "none" ) { + values[ index ] = "none"; + + // Remember what we're overwriting + dataPriv.set( elem, "display", display ); + } + } + } + + // Set the display of the elements in a second loop to avoid constant reflow + for ( index = 0; index < length; index++ ) { + if ( values[ index ] != null ) { + elements[ index ].style.display = values[ index ]; + } + } + + return elements; +} + +jQuery.fn.extend( { + show: function() { + return showHide( this, true ); + }, + hide: function() { + return showHide( this ); + }, + toggle: function( state ) { + if ( typeof state === "boolean" ) { + return state ? this.show() : this.hide(); + } + + return this.each( function() { + if ( isHiddenWithinTree( this ) ) { + jQuery( this ).show(); + } else { + jQuery( this ).hide(); + } + } ); + } +} ); +var rcheckableType = ( /^(?:checkbox|radio)$/i ); + +var rtagName = ( /<([a-z][^\/\0>\x20\t\r\n\f]+)/i ); + +var rscriptType = ( /^$|\/(?:java|ecma)script/i ); + + + +// We have to close these tags to support XHTML (#13200) +var wrapMap = { + + // Support: IE <=9 only + option: [ 1, "" ], + + // XHTML parsers do not magically insert elements in the + // same way that tag soup parsers do. So we cannot shorten + // this by omitting or other required elements. + thead: [ 1, "", "
" ], + col: [ 2, "", "
" ], + tr: [ 2, "", "
" ], + td: [ 3, "", "
" ], + + _default: [ 0, "", "" ] +}; + +// Support: IE <=9 only +wrapMap.optgroup = wrapMap.option; + +wrapMap.tbody = wrapMap.tfoot = wrapMap.colgroup = wrapMap.caption = wrapMap.thead; +wrapMap.th = wrapMap.td; + + +function getAll( context, tag ) { + + // Support: IE <=9 - 11 only + // Use typeof to avoid zero-argument method invocation on host objects (#15151) + var ret; + + if ( typeof context.getElementsByTagName !== "undefined" ) { + ret = context.getElementsByTagName( tag || "*" ); + + } else if ( typeof context.querySelectorAll !== "undefined" ) { + ret = context.querySelectorAll( tag || "*" ); + + } else { + ret = []; + } + + if ( tag === undefined || tag && nodeName( context, tag ) ) { + return jQuery.merge( [ context ], ret ); + } + + return ret; +} + + +// Mark scripts as having already been evaluated +function setGlobalEval( elems, refElements ) { + var i = 0, + l = elems.length; + + for ( ; i < l; i++ ) { + dataPriv.set( + elems[ i ], + "globalEval", + !refElements || dataPriv.get( refElements[ i ], "globalEval" ) + ); + } +} + + +var rhtml = /<|&#?\w+;/; + +function buildFragment( elems, context, scripts, selection, ignored ) { + var elem, tmp, tag, wrap, contains, j, + fragment = context.createDocumentFragment(), + nodes = [], + i = 0, + l = elems.length; + + for ( ; i < l; i++ ) { + elem = elems[ i ]; + + if ( elem || elem === 0 ) { + + // Add nodes directly + if ( jQuery.type( elem ) === "object" ) { + + // Support: Android <=4.0 only, PhantomJS 1 only + // push.apply(_, arraylike) throws on ancient WebKit + jQuery.merge( nodes, elem.nodeType ? [ elem ] : elem ); + + // Convert non-html into a text node + } else if ( !rhtml.test( elem ) ) { + nodes.push( context.createTextNode( elem ) ); + + // Convert html into DOM nodes + } else { + tmp = tmp || fragment.appendChild( context.createElement( "div" ) ); + + // Deserialize a standard representation + tag = ( rtagName.exec( elem ) || [ "", "" ] )[ 1 ].toLowerCase(); + wrap = wrapMap[ tag ] || wrapMap._default; + tmp.innerHTML = wrap[ 1 ] + jQuery.htmlPrefilter( elem ) + wrap[ 2 ]; + + // Descend through wrappers to the right content + j = wrap[ 0 ]; + while ( j-- ) { + tmp = tmp.lastChild; + } + + // Support: Android <=4.0 only, PhantomJS 1 only + // push.apply(_, arraylike) throws on ancient WebKit + jQuery.merge( nodes, tmp.childNodes ); + + // Remember the top-level container + tmp = fragment.firstChild; + + // Ensure the created nodes are orphaned (#12392) + tmp.textContent = ""; + } + } + } + + // Remove wrapper from fragment + fragment.textContent = ""; + + i = 0; + while ( ( elem = nodes[ i++ ] ) ) { + + // Skip elements already in the context collection (trac-4087) + if ( selection && jQuery.inArray( elem, selection ) > -1 ) { + if ( ignored ) { + ignored.push( elem ); + } + continue; + } + + contains = jQuery.contains( elem.ownerDocument, elem ); + + // Append to fragment + tmp = getAll( fragment.appendChild( elem ), "script" ); + + // Preserve script evaluation history + if ( contains ) { + setGlobalEval( tmp ); + } + + // Capture executables + if ( scripts ) { + j = 0; + while ( ( elem = tmp[ j++ ] ) ) { + if ( rscriptType.test( elem.type || "" ) ) { + scripts.push( elem ); + } + } + } + } + + return fragment; +} + + +( function() { + var fragment = document.createDocumentFragment(), + div = fragment.appendChild( document.createElement( "div" ) ), + input = document.createElement( "input" ); + + // Support: Android 4.0 - 4.3 only + // Check state lost if the name is set (#11217) + // Support: Windows Web Apps (WWA) + // `name` and `type` must use .setAttribute for WWA (#14901) + input.setAttribute( "type", "radio" ); + input.setAttribute( "checked", "checked" ); + input.setAttribute( "name", "t" ); + + div.appendChild( input ); + + // Support: Android <=4.1 only + // Older WebKit doesn't clone checked state correctly in fragments + support.checkClone = div.cloneNode( true ).cloneNode( true ).lastChild.checked; + + // Support: IE <=11 only + // Make sure textarea (and checkbox) defaultValue is properly cloned + div.innerHTML = ""; + support.noCloneChecked = !!div.cloneNode( true ).lastChild.defaultValue; +} )(); +var documentElement = document.documentElement; + + + +var + rkeyEvent = /^key/, + rmouseEvent = /^(?:mouse|pointer|contextmenu|drag|drop)|click/, + rtypenamespace = /^([^.]*)(?:\.(.+)|)/; + +function returnTrue() { + return true; +} + +function returnFalse() { + return false; +} + +// Support: IE <=9 only +// See #13393 for more info +function safeActiveElement() { + try { + return document.activeElement; + } catch ( err ) { } +} + +function on( elem, types, selector, data, fn, one ) { + var origFn, type; + + // Types can be a map of types/handlers + if ( typeof types === "object" ) { + + // ( types-Object, selector, data ) + if ( typeof selector !== "string" ) { + + // ( types-Object, data ) + data = data || selector; + selector = undefined; + } + for ( type in types ) { + on( elem, type, selector, data, types[ type ], one ); + } + return elem; + } + + if ( data == null && fn == null ) { + + // ( types, fn ) + fn = selector; + data = selector = undefined; + } else if ( fn == null ) { + if ( typeof selector === "string" ) { + + // ( types, selector, fn ) + fn = data; + data = undefined; + } else { + + // ( types, data, fn ) + fn = data; + data = selector; + selector = undefined; + } + } + if ( fn === false ) { + fn = returnFalse; + } else if ( !fn ) { + return elem; + } + + if ( one === 1 ) { + origFn = fn; + fn = function( event ) { + + // Can use an empty set, since event contains the info + jQuery().off( event ); + return origFn.apply( this, arguments ); + }; + + // Use same guid so caller can remove using origFn + fn.guid = origFn.guid || ( origFn.guid = jQuery.guid++ ); + } + return elem.each( function() { + jQuery.event.add( this, types, fn, data, selector ); + } ); +} + +/* + * Helper functions for managing events -- not part of the public interface. + * Props to Dean Edwards' addEvent library for many of the ideas. + */ +jQuery.event = { + + global: {}, + + add: function( elem, types, handler, data, selector ) { + + var handleObjIn, eventHandle, tmp, + events, t, handleObj, + special, handlers, type, namespaces, origType, + elemData = dataPriv.get( elem ); + + // Don't attach events to noData or text/comment nodes (but allow plain objects) + if ( !elemData ) { + return; + } + + // Caller can pass in an object of custom data in lieu of the handler + if ( handler.handler ) { + handleObjIn = handler; + handler = handleObjIn.handler; + selector = handleObjIn.selector; + } + + // Ensure that invalid selectors throw exceptions at attach time + // Evaluate against documentElement in case elem is a non-element node (e.g., document) + if ( selector ) { + jQuery.find.matchesSelector( documentElement, selector ); + } + + // Make sure that the handler has a unique ID, used to find/remove it later + if ( !handler.guid ) { + handler.guid = jQuery.guid++; + } + + // Init the element's event structure and main handler, if this is the first + if ( !( events = elemData.events ) ) { + events = elemData.events = {}; + } + if ( !( eventHandle = elemData.handle ) ) { + eventHandle = elemData.handle = function( e ) { + + // Discard the second event of a jQuery.event.trigger() and + // when an event is called after a page has unloaded + return typeof jQuery !== "undefined" && jQuery.event.triggered !== e.type ? + jQuery.event.dispatch.apply( elem, arguments ) : undefined; + }; + } + + // Handle multiple events separated by a space + types = ( types || "" ).match( rnothtmlwhite ) || [ "" ]; + t = types.length; + while ( t-- ) { + tmp = rtypenamespace.exec( types[ t ] ) || []; + type = origType = tmp[ 1 ]; + namespaces = ( tmp[ 2 ] || "" ).split( "." ).sort(); + + // There *must* be a type, no attaching namespace-only handlers + if ( !type ) { + continue; + } + + // If event changes its type, use the special event handlers for the changed type + special = jQuery.event.special[ type ] || {}; + + // If selector defined, determine special event api type, otherwise given type + type = ( selector ? special.delegateType : special.bindType ) || type; + + // Update special based on newly reset type + special = jQuery.event.special[ type ] || {}; + + // handleObj is passed to all event handlers + handleObj = jQuery.extend( { + type: type, + origType: origType, + data: data, + handler: handler, + guid: handler.guid, + selector: selector, + needsContext: selector && jQuery.expr.match.needsContext.test( selector ), + namespace: namespaces.join( "." ) + }, handleObjIn ); + + // Init the event handler queue if we're the first + if ( !( handlers = events[ type ] ) ) { + handlers = events[ type ] = []; + handlers.delegateCount = 0; + + // Only use addEventListener if the special events handler returns false + if ( !special.setup || + special.setup.call( elem, data, namespaces, eventHandle ) === false ) { + + if ( elem.addEventListener ) { + elem.addEventListener( type, eventHandle ); + } + } + } + + if ( special.add ) { + special.add.call( elem, handleObj ); + + if ( !handleObj.handler.guid ) { + handleObj.handler.guid = handler.guid; + } + } + + // Add to the element's handler list, delegates in front + if ( selector ) { + handlers.splice( handlers.delegateCount++, 0, handleObj ); + } else { + handlers.push( handleObj ); + } + + // Keep track of which events have ever been used, for event optimization + jQuery.event.global[ type ] = true; + } + + }, + + // Detach an event or set of events from an element + remove: function( elem, types, handler, selector, mappedTypes ) { + + var j, origCount, tmp, + events, t, handleObj, + special, handlers, type, namespaces, origType, + elemData = dataPriv.hasData( elem ) && dataPriv.get( elem ); + + if ( !elemData || !( events = elemData.events ) ) { + return; + } + + // Once for each type.namespace in types; type may be omitted + types = ( types || "" ).match( rnothtmlwhite ) || [ "" ]; + t = types.length; + while ( t-- ) { + tmp = rtypenamespace.exec( types[ t ] ) || []; + type = origType = tmp[ 1 ]; + namespaces = ( tmp[ 2 ] || "" ).split( "." ).sort(); + + // Unbind all events (on this namespace, if provided) for the element + if ( !type ) { + for ( type in events ) { + jQuery.event.remove( elem, type + types[ t ], handler, selector, true ); + } + continue; + } + + special = jQuery.event.special[ type ] || {}; + type = ( selector ? special.delegateType : special.bindType ) || type; + handlers = events[ type ] || []; + tmp = tmp[ 2 ] && + new RegExp( "(^|\\.)" + namespaces.join( "\\.(?:.*\\.|)" ) + "(\\.|$)" ); + + // Remove matching events + origCount = j = handlers.length; + while ( j-- ) { + handleObj = handlers[ j ]; + + if ( ( mappedTypes || origType === handleObj.origType ) && + ( !handler || handler.guid === handleObj.guid ) && + ( !tmp || tmp.test( handleObj.namespace ) ) && + ( !selector || selector === handleObj.selector || + selector === "**" && handleObj.selector ) ) { + handlers.splice( j, 1 ); + + if ( handleObj.selector ) { + handlers.delegateCount--; + } + if ( special.remove ) { + special.remove.call( elem, handleObj ); + } + } + } + + // Remove generic event handler if we removed something and no more handlers exist + // (avoids potential for endless recursion during removal of special event handlers) + if ( origCount && !handlers.length ) { + if ( !special.teardown || + special.teardown.call( elem, namespaces, elemData.handle ) === false ) { + + jQuery.removeEvent( elem, type, elemData.handle ); + } + + delete events[ type ]; + } + } + + // Remove data and the expando if it's no longer used + if ( jQuery.isEmptyObject( events ) ) { + dataPriv.remove( elem, "handle events" ); + } + }, + + dispatch: function( nativeEvent ) { + + // Make a writable jQuery.Event from the native event object + var event = jQuery.event.fix( nativeEvent ); + + var i, j, ret, matched, handleObj, handlerQueue, + args = new Array( arguments.length ), + handlers = ( dataPriv.get( this, "events" ) || {} )[ event.type ] || [], + special = jQuery.event.special[ event.type ] || {}; + + // Use the fix-ed jQuery.Event rather than the (read-only) native event + args[ 0 ] = event; + + for ( i = 1; i < arguments.length; i++ ) { + args[ i ] = arguments[ i ]; + } + + event.delegateTarget = this; + + // Call the preDispatch hook for the mapped type, and let it bail if desired + if ( special.preDispatch && special.preDispatch.call( this, event ) === false ) { + return; + } + + // Determine handlers + handlerQueue = jQuery.event.handlers.call( this, event, handlers ); + + // Run delegates first; they may want to stop propagation beneath us + i = 0; + while ( ( matched = handlerQueue[ i++ ] ) && !event.isPropagationStopped() ) { + event.currentTarget = matched.elem; + + j = 0; + while ( ( handleObj = matched.handlers[ j++ ] ) && + !event.isImmediatePropagationStopped() ) { + + // Triggered event must either 1) have no namespace, or 2) have namespace(s) + // a subset or equal to those in the bound event (both can have no namespace). + if ( !event.rnamespace || event.rnamespace.test( handleObj.namespace ) ) { + + event.handleObj = handleObj; + event.data = handleObj.data; + + ret = ( ( jQuery.event.special[ handleObj.origType ] || {} ).handle || + handleObj.handler ).apply( matched.elem, args ); + + if ( ret !== undefined ) { + if ( ( event.result = ret ) === false ) { + event.preventDefault(); + event.stopPropagation(); + } + } + } + } + } + + // Call the postDispatch hook for the mapped type + if ( special.postDispatch ) { + special.postDispatch.call( this, event ); + } + + return event.result; + }, + + handlers: function( event, handlers ) { + var i, handleObj, sel, matchedHandlers, matchedSelectors, + handlerQueue = [], + delegateCount = handlers.delegateCount, + cur = event.target; + + // Find delegate handlers + if ( delegateCount && + + // Support: IE <=9 + // Black-hole SVG instance trees (trac-13180) + cur.nodeType && + + // Support: Firefox <=42 + // Suppress spec-violating clicks indicating a non-primary pointer button (trac-3861) + // https://www.w3.org/TR/DOM-Level-3-Events/#event-type-click + // Support: IE 11 only + // ...but not arrow key "clicks" of radio inputs, which can have `button` -1 (gh-2343) + !( event.type === "click" && event.button >= 1 ) ) { + + for ( ; cur !== this; cur = cur.parentNode || this ) { + + // Don't check non-elements (#13208) + // Don't process clicks on disabled elements (#6911, #8165, #11382, #11764) + if ( cur.nodeType === 1 && !( event.type === "click" && cur.disabled === true ) ) { + matchedHandlers = []; + matchedSelectors = {}; + for ( i = 0; i < delegateCount; i++ ) { + handleObj = handlers[ i ]; + + // Don't conflict with Object.prototype properties (#13203) + sel = handleObj.selector + " "; + + if ( matchedSelectors[ sel ] === undefined ) { + matchedSelectors[ sel ] = handleObj.needsContext ? + jQuery( sel, this ).index( cur ) > -1 : + jQuery.find( sel, this, null, [ cur ] ).length; + } + if ( matchedSelectors[ sel ] ) { + matchedHandlers.push( handleObj ); + } + } + if ( matchedHandlers.length ) { + handlerQueue.push( { elem: cur, handlers: matchedHandlers } ); + } + } + } + } + + // Add the remaining (directly-bound) handlers + cur = this; + if ( delegateCount < handlers.length ) { + handlerQueue.push( { elem: cur, handlers: handlers.slice( delegateCount ) } ); + } + + return handlerQueue; + }, + + addProp: function( name, hook ) { + Object.defineProperty( jQuery.Event.prototype, name, { + enumerable: true, + configurable: true, + + get: jQuery.isFunction( hook ) ? + function() { + if ( this.originalEvent ) { + return hook( this.originalEvent ); + } + } : + function() { + if ( this.originalEvent ) { + return this.originalEvent[ name ]; + } + }, + + set: function( value ) { + Object.defineProperty( this, name, { + enumerable: true, + configurable: true, + writable: true, + value: value + } ); + } + } ); + }, + + fix: function( originalEvent ) { + return originalEvent[ jQuery.expando ] ? + originalEvent : + new jQuery.Event( originalEvent ); + }, + + special: { + load: { + + // Prevent triggered image.load events from bubbling to window.load + noBubble: true + }, + focus: { + + // Fire native event if possible so blur/focus sequence is correct + trigger: function() { + if ( this !== safeActiveElement() && this.focus ) { + this.focus(); + return false; + } + }, + delegateType: "focusin" + }, + blur: { + trigger: function() { + if ( this === safeActiveElement() && this.blur ) { + this.blur(); + return false; + } + }, + delegateType: "focusout" + }, + click: { + + // For checkbox, fire native event so checked state will be right + trigger: function() { + if ( this.type === "checkbox" && this.click && nodeName( this, "input" ) ) { + this.click(); + return false; + } + }, + + // For cross-browser consistency, don't fire native .click() on links + _default: function( event ) { + return nodeName( event.target, "a" ); + } + }, + + beforeunload: { + postDispatch: function( event ) { + + // Support: Firefox 20+ + // Firefox doesn't alert if the returnValue field is not set. + if ( event.result !== undefined && event.originalEvent ) { + event.originalEvent.returnValue = event.result; + } + } + } + } +}; + +jQuery.removeEvent = function( elem, type, handle ) { + + // This "if" is needed for plain objects + if ( elem.removeEventListener ) { + elem.removeEventListener( type, handle ); + } +}; + +jQuery.Event = function( src, props ) { + + // Allow instantiation without the 'new' keyword + if ( !( this instanceof jQuery.Event ) ) { + return new jQuery.Event( src, props ); + } + + // Event object + if ( src && src.type ) { + this.originalEvent = src; + this.type = src.type; + + // Events bubbling up the document may have been marked as prevented + // by a handler lower down the tree; reflect the correct value. + this.isDefaultPrevented = src.defaultPrevented || + src.defaultPrevented === undefined && + + // Support: Android <=2.3 only + src.returnValue === false ? + returnTrue : + returnFalse; + + // Create target properties + // Support: Safari <=6 - 7 only + // Target should not be a text node (#504, #13143) + this.target = ( src.target && src.target.nodeType === 3 ) ? + src.target.parentNode : + src.target; + + this.currentTarget = src.currentTarget; + this.relatedTarget = src.relatedTarget; + + // Event type + } else { + this.type = src; + } + + // Put explicitly provided properties onto the event object + if ( props ) { + jQuery.extend( this, props ); + } + + // Create a timestamp if incoming event doesn't have one + this.timeStamp = src && src.timeStamp || jQuery.now(); + + // Mark it as fixed + this[ jQuery.expando ] = true; +}; + +// jQuery.Event is based on DOM3 Events as specified by the ECMAScript Language Binding +// https://www.w3.org/TR/2003/WD-DOM-Level-3-Events-20030331/ecma-script-binding.html +jQuery.Event.prototype = { + constructor: jQuery.Event, + isDefaultPrevented: returnFalse, + isPropagationStopped: returnFalse, + isImmediatePropagationStopped: returnFalse, + isSimulated: false, + + preventDefault: function() { + var e = this.originalEvent; + + this.isDefaultPrevented = returnTrue; + + if ( e && !this.isSimulated ) { + e.preventDefault(); + } + }, + stopPropagation: function() { + var e = this.originalEvent; + + this.isPropagationStopped = returnTrue; + + if ( e && !this.isSimulated ) { + e.stopPropagation(); + } + }, + stopImmediatePropagation: function() { + var e = this.originalEvent; + + this.isImmediatePropagationStopped = returnTrue; + + if ( e && !this.isSimulated ) { + e.stopImmediatePropagation(); + } + + this.stopPropagation(); + } +}; + +// Includes all common event props including KeyEvent and MouseEvent specific props +jQuery.each( { + altKey: true, + bubbles: true, + cancelable: true, + changedTouches: true, + ctrlKey: true, + detail: true, + eventPhase: true, + metaKey: true, + pageX: true, + pageY: true, + shiftKey: true, + view: true, + "char": true, + charCode: true, + key: true, + keyCode: true, + button: true, + buttons: true, + clientX: true, + clientY: true, + offsetX: true, + offsetY: true, + pointerId: true, + pointerType: true, + screenX: true, + screenY: true, + targetTouches: true, + toElement: true, + touches: true, + + which: function( event ) { + var button = event.button; + + // Add which for key events + if ( event.which == null && rkeyEvent.test( event.type ) ) { + return event.charCode != null ? event.charCode : event.keyCode; + } + + // Add which for click: 1 === left; 2 === middle; 3 === right + if ( !event.which && button !== undefined && rmouseEvent.test( event.type ) ) { + if ( button & 1 ) { + return 1; + } + + if ( button & 2 ) { + return 3; + } + + if ( button & 4 ) { + return 2; + } + + return 0; + } + + return event.which; + } +}, jQuery.event.addProp ); + +// Create mouseenter/leave events using mouseover/out and event-time checks +// so that event delegation works in jQuery. +// Do the same for pointerenter/pointerleave and pointerover/pointerout +// +// Support: Safari 7 only +// Safari sends mouseenter too often; see: +// https://bugs.chromium.org/p/chromium/issues/detail?id=470258 +// for the description of the bug (it existed in older Chrome versions as well). +jQuery.each( { + mouseenter: "mouseover", + mouseleave: "mouseout", + pointerenter: "pointerover", + pointerleave: "pointerout" +}, function( orig, fix ) { + jQuery.event.special[ orig ] = { + delegateType: fix, + bindType: fix, + + handle: function( event ) { + var ret, + target = this, + related = event.relatedTarget, + handleObj = event.handleObj; + + // For mouseenter/leave call the handler if related is outside the target. + // NB: No relatedTarget if the mouse left/entered the browser window + if ( !related || ( related !== target && !jQuery.contains( target, related ) ) ) { + event.type = handleObj.origType; + ret = handleObj.handler.apply( this, arguments ); + event.type = fix; + } + return ret; + } + }; +} ); + +jQuery.fn.extend( { + + on: function( types, selector, data, fn ) { + return on( this, types, selector, data, fn ); + }, + one: function( types, selector, data, fn ) { + return on( this, types, selector, data, fn, 1 ); + }, + off: function( types, selector, fn ) { + var handleObj, type; + if ( types && types.preventDefault && types.handleObj ) { + + // ( event ) dispatched jQuery.Event + handleObj = types.handleObj; + jQuery( types.delegateTarget ).off( + handleObj.namespace ? + handleObj.origType + "." + handleObj.namespace : + handleObj.origType, + handleObj.selector, + handleObj.handler + ); + return this; + } + if ( typeof types === "object" ) { + + // ( types-object [, selector] ) + for ( type in types ) { + this.off( type, selector, types[ type ] ); + } + return this; + } + if ( selector === false || typeof selector === "function" ) { + + // ( types [, fn] ) + fn = selector; + selector = undefined; + } + if ( fn === false ) { + fn = returnFalse; + } + return this.each( function() { + jQuery.event.remove( this, types, fn, selector ); + } ); + } +} ); + + +var + + /* eslint-disable max-len */ + + // See https://github.com/eslint/eslint/issues/3229 + rxhtmlTag = /<(?!area|br|col|embed|hr|img|input|link|meta|param)(([a-z][^\/\0>\x20\t\r\n\f]*)[^>]*)\/>/gi, + + /* eslint-enable */ + + // Support: IE <=10 - 11, Edge 12 - 13 + // In IE/Edge using regex groups here causes severe slowdowns. + // See https://connect.microsoft.com/IE/feedback/details/1736512/ + rnoInnerhtml = /\s*$/g; + +// Prefer a tbody over its parent table for containing new rows +function manipulationTarget( elem, content ) { + if ( nodeName( elem, "table" ) && + nodeName( content.nodeType !== 11 ? content : content.firstChild, "tr" ) ) { + + return jQuery( ">tbody", elem )[ 0 ] || elem; + } + + return elem; +} + +// Replace/restore the type attribute of script elements for safe DOM manipulation +function disableScript( elem ) { + elem.type = ( elem.getAttribute( "type" ) !== null ) + "/" + elem.type; + return elem; +} +function restoreScript( elem ) { + var match = rscriptTypeMasked.exec( elem.type ); + + if ( match ) { + elem.type = match[ 1 ]; + } else { + elem.removeAttribute( "type" ); + } + + return elem; +} + +function cloneCopyEvent( src, dest ) { + var i, l, type, pdataOld, pdataCur, udataOld, udataCur, events; + + if ( dest.nodeType !== 1 ) { + return; + } + + // 1. Copy private data: events, handlers, etc. + if ( dataPriv.hasData( src ) ) { + pdataOld = dataPriv.access( src ); + pdataCur = dataPriv.set( dest, pdataOld ); + events = pdataOld.events; + + if ( events ) { + delete pdataCur.handle; + pdataCur.events = {}; + + for ( type in events ) { + for ( i = 0, l = events[ type ].length; i < l; i++ ) { + jQuery.event.add( dest, type, events[ type ][ i ] ); + } + } + } + } + + // 2. Copy user data + if ( dataUser.hasData( src ) ) { + udataOld = dataUser.access( src ); + udataCur = jQuery.extend( {}, udataOld ); + + dataUser.set( dest, udataCur ); + } +} + +// Fix IE bugs, see support tests +function fixInput( src, dest ) { + var nodeName = dest.nodeName.toLowerCase(); + + // Fails to persist the checked state of a cloned checkbox or radio button. + if ( nodeName === "input" && rcheckableType.test( src.type ) ) { + dest.checked = src.checked; + + // Fails to return the selected option to the default selected state when cloning options + } else if ( nodeName === "input" || nodeName === "textarea" ) { + dest.defaultValue = src.defaultValue; + } +} + +function domManip( collection, args, callback, ignored ) { + + // Flatten any nested arrays + args = concat.apply( [], args ); + + var fragment, first, scripts, hasScripts, node, doc, + i = 0, + l = collection.length, + iNoClone = l - 1, + value = args[ 0 ], + isFunction = jQuery.isFunction( value ); + + // We can't cloneNode fragments that contain checked, in WebKit + if ( isFunction || + ( l > 1 && typeof value === "string" && + !support.checkClone && rchecked.test( value ) ) ) { + return collection.each( function( index ) { + var self = collection.eq( index ); + if ( isFunction ) { + args[ 0 ] = value.call( this, index, self.html() ); + } + domManip( self, args, callback, ignored ); + } ); + } + + if ( l ) { + fragment = buildFragment( args, collection[ 0 ].ownerDocument, false, collection, ignored ); + first = fragment.firstChild; + + if ( fragment.childNodes.length === 1 ) { + fragment = first; + } + + // Require either new content or an interest in ignored elements to invoke the callback + if ( first || ignored ) { + scripts = jQuery.map( getAll( fragment, "script" ), disableScript ); + hasScripts = scripts.length; + + // Use the original fragment for the last item + // instead of the first because it can end up + // being emptied incorrectly in certain situations (#8070). + for ( ; i < l; i++ ) { + node = fragment; + + if ( i !== iNoClone ) { + node = jQuery.clone( node, true, true ); + + // Keep references to cloned scripts for later restoration + if ( hasScripts ) { + + // Support: Android <=4.0 only, PhantomJS 1 only + // push.apply(_, arraylike) throws on ancient WebKit + jQuery.merge( scripts, getAll( node, "script" ) ); + } + } + + callback.call( collection[ i ], node, i ); + } + + if ( hasScripts ) { + doc = scripts[ scripts.length - 1 ].ownerDocument; + + // Reenable scripts + jQuery.map( scripts, restoreScript ); + + // Evaluate executable scripts on first document insertion + for ( i = 0; i < hasScripts; i++ ) { + node = scripts[ i ]; + if ( rscriptType.test( node.type || "" ) && + !dataPriv.access( node, "globalEval" ) && + jQuery.contains( doc, node ) ) { + + if ( node.src ) { + + // Optional AJAX dependency, but won't run scripts if not present + if ( jQuery._evalUrl ) { + jQuery._evalUrl( node.src ); + } + } else { + DOMEval( node.textContent.replace( rcleanScript, "" ), doc ); + } + } + } + } + } + } + + return collection; +} + +function remove( elem, selector, keepData ) { + var node, + nodes = selector ? jQuery.filter( selector, elem ) : elem, + i = 0; + + for ( ; ( node = nodes[ i ] ) != null; i++ ) { + if ( !keepData && node.nodeType === 1 ) { + jQuery.cleanData( getAll( node ) ); + } + + if ( node.parentNode ) { + if ( keepData && jQuery.contains( node.ownerDocument, node ) ) { + setGlobalEval( getAll( node, "script" ) ); + } + node.parentNode.removeChild( node ); + } + } + + return elem; +} + +jQuery.extend( { + htmlPrefilter: function( html ) { + return html.replace( rxhtmlTag, "<$1>" ); + }, + + clone: function( elem, dataAndEvents, deepDataAndEvents ) { + var i, l, srcElements, destElements, + clone = elem.cloneNode( true ), + inPage = jQuery.contains( elem.ownerDocument, elem ); + + // Fix IE cloning issues + if ( !support.noCloneChecked && ( elem.nodeType === 1 || elem.nodeType === 11 ) && + !jQuery.isXMLDoc( elem ) ) { + + // We eschew Sizzle here for performance reasons: https://jsperf.com/getall-vs-sizzle/2 + destElements = getAll( clone ); + srcElements = getAll( elem ); + + for ( i = 0, l = srcElements.length; i < l; i++ ) { + fixInput( srcElements[ i ], destElements[ i ] ); + } + } + + // Copy the events from the original to the clone + if ( dataAndEvents ) { + if ( deepDataAndEvents ) { + srcElements = srcElements || getAll( elem ); + destElements = destElements || getAll( clone ); + + for ( i = 0, l = srcElements.length; i < l; i++ ) { + cloneCopyEvent( srcElements[ i ], destElements[ i ] ); + } + } else { + cloneCopyEvent( elem, clone ); + } + } + + // Preserve script evaluation history + destElements = getAll( clone, "script" ); + if ( destElements.length > 0 ) { + setGlobalEval( destElements, !inPage && getAll( elem, "script" ) ); + } + + // Return the cloned set + return clone; + }, + + cleanData: function( elems ) { + var data, elem, type, + special = jQuery.event.special, + i = 0; + + for ( ; ( elem = elems[ i ] ) !== undefined; i++ ) { + if ( acceptData( elem ) ) { + if ( ( data = elem[ dataPriv.expando ] ) ) { + if ( data.events ) { + for ( type in data.events ) { + if ( special[ type ] ) { + jQuery.event.remove( elem, type ); + + // This is a shortcut to avoid jQuery.event.remove's overhead + } else { + jQuery.removeEvent( elem, type, data.handle ); + } + } + } + + // Support: Chrome <=35 - 45+ + // Assign undefined instead of using delete, see Data#remove + elem[ dataPriv.expando ] = undefined; + } + if ( elem[ dataUser.expando ] ) { + + // Support: Chrome <=35 - 45+ + // Assign undefined instead of using delete, see Data#remove + elem[ dataUser.expando ] = undefined; + } + } + } + } +} ); + +jQuery.fn.extend( { + detach: function( selector ) { + return remove( this, selector, true ); + }, + + remove: function( selector ) { + return remove( this, selector ); + }, + + text: function( value ) { + return access( this, function( value ) { + return value === undefined ? + jQuery.text( this ) : + this.empty().each( function() { + if ( this.nodeType === 1 || this.nodeType === 11 || this.nodeType === 9 ) { + this.textContent = value; + } + } ); + }, null, value, arguments.length ); + }, + + append: function() { + return domManip( this, arguments, function( elem ) { + if ( this.nodeType === 1 || this.nodeType === 11 || this.nodeType === 9 ) { + var target = manipulationTarget( this, elem ); + target.appendChild( elem ); + } + } ); + }, + + prepend: function() { + return domManip( this, arguments, function( elem ) { + if ( this.nodeType === 1 || this.nodeType === 11 || this.nodeType === 9 ) { + var target = manipulationTarget( this, elem ); + target.insertBefore( elem, target.firstChild ); + } + } ); + }, + + before: function() { + return domManip( this, arguments, function( elem ) { + if ( this.parentNode ) { + this.parentNode.insertBefore( elem, this ); + } + } ); + }, + + after: function() { + return domManip( this, arguments, function( elem ) { + if ( this.parentNode ) { + this.parentNode.insertBefore( elem, this.nextSibling ); + } + } ); + }, + + empty: function() { + var elem, + i = 0; + + for ( ; ( elem = this[ i ] ) != null; i++ ) { + if ( elem.nodeType === 1 ) { + + // Prevent memory leaks + jQuery.cleanData( getAll( elem, false ) ); + + // Remove any remaining nodes + elem.textContent = ""; + } + } + + return this; + }, + + clone: function( dataAndEvents, deepDataAndEvents ) { + dataAndEvents = dataAndEvents == null ? false : dataAndEvents; + deepDataAndEvents = deepDataAndEvents == null ? dataAndEvents : deepDataAndEvents; + + return this.map( function() { + return jQuery.clone( this, dataAndEvents, deepDataAndEvents ); + } ); + }, + + html: function( value ) { + return access( this, function( value ) { + var elem = this[ 0 ] || {}, + i = 0, + l = this.length; + + if ( value === undefined && elem.nodeType === 1 ) { + return elem.innerHTML; + } + + // See if we can take a shortcut and just use innerHTML + if ( typeof value === "string" && !rnoInnerhtml.test( value ) && + !wrapMap[ ( rtagName.exec( value ) || [ "", "" ] )[ 1 ].toLowerCase() ] ) { + + value = jQuery.htmlPrefilter( value ); + + try { + for ( ; i < l; i++ ) { + elem = this[ i ] || {}; + + // Remove element nodes and prevent memory leaks + if ( elem.nodeType === 1 ) { + jQuery.cleanData( getAll( elem, false ) ); + elem.innerHTML = value; + } + } + + elem = 0; + + // If using innerHTML throws an exception, use the fallback method + } catch ( e ) {} + } + + if ( elem ) { + this.empty().append( value ); + } + }, null, value, arguments.length ); + }, + + replaceWith: function() { + var ignored = []; + + // Make the changes, replacing each non-ignored context element with the new content + return domManip( this, arguments, function( elem ) { + var parent = this.parentNode; + + if ( jQuery.inArray( this, ignored ) < 0 ) { + jQuery.cleanData( getAll( this ) ); + if ( parent ) { + parent.replaceChild( elem, this ); + } + } + + // Force callback invocation + }, ignored ); + } +} ); + +jQuery.each( { + appendTo: "append", + prependTo: "prepend", + insertBefore: "before", + insertAfter: "after", + replaceAll: "replaceWith" +}, function( name, original ) { + jQuery.fn[ name ] = function( selector ) { + var elems, + ret = [], + insert = jQuery( selector ), + last = insert.length - 1, + i = 0; + + for ( ; i <= last; i++ ) { + elems = i === last ? this : this.clone( true ); + jQuery( insert[ i ] )[ original ]( elems ); + + // Support: Android <=4.0 only, PhantomJS 1 only + // .get() because push.apply(_, arraylike) throws on ancient WebKit + push.apply( ret, elems.get() ); + } + + return this.pushStack( ret ); + }; +} ); +var rmargin = ( /^margin/ ); + +var rnumnonpx = new RegExp( "^(" + pnum + ")(?!px)[a-z%]+$", "i" ); + +var getStyles = function( elem ) { + + // Support: IE <=11 only, Firefox <=30 (#15098, #14150) + // IE throws on elements created in popups + // FF meanwhile throws on frame elements through "defaultView.getComputedStyle" + var view = elem.ownerDocument.defaultView; + + if ( !view || !view.opener ) { + view = window; + } + + return view.getComputedStyle( elem ); + }; + + + +( function() { + + // Executing both pixelPosition & boxSizingReliable tests require only one layout + // so they're executed at the same time to save the second computation. + function computeStyleTests() { + + // This is a singleton, we need to execute it only once + if ( !div ) { + return; + } + + div.style.cssText = + "box-sizing:border-box;" + + "position:relative;display:block;" + + "margin:auto;border:1px;padding:1px;" + + "top:1%;width:50%"; + div.innerHTML = ""; + documentElement.appendChild( container ); + + var divStyle = window.getComputedStyle( div ); + pixelPositionVal = divStyle.top !== "1%"; + + // Support: Android 4.0 - 4.3 only, Firefox <=3 - 44 + reliableMarginLeftVal = divStyle.marginLeft === "2px"; + boxSizingReliableVal = divStyle.width === "4px"; + + // Support: Android 4.0 - 4.3 only + // Some styles come back with percentage values, even though they shouldn't + div.style.marginRight = "50%"; + pixelMarginRightVal = divStyle.marginRight === "4px"; + + documentElement.removeChild( container ); + + // Nullify the div so it wouldn't be stored in the memory and + // it will also be a sign that checks already performed + div = null; + } + + var pixelPositionVal, boxSizingReliableVal, pixelMarginRightVal, reliableMarginLeftVal, + container = document.createElement( "div" ), + div = document.createElement( "div" ); + + // Finish early in limited (non-browser) environments + if ( !div.style ) { + return; + } + + // Support: IE <=9 - 11 only + // Style of cloned element affects source element cloned (#8908) + div.style.backgroundClip = "content-box"; + div.cloneNode( true ).style.backgroundClip = ""; + support.clearCloneStyle = div.style.backgroundClip === "content-box"; + + container.style.cssText = "border:0;width:8px;height:0;top:0;left:-9999px;" + + "padding:0;margin-top:1px;position:absolute"; + container.appendChild( div ); + + jQuery.extend( support, { + pixelPosition: function() { + computeStyleTests(); + return pixelPositionVal; + }, + boxSizingReliable: function() { + computeStyleTests(); + return boxSizingReliableVal; + }, + pixelMarginRight: function() { + computeStyleTests(); + return pixelMarginRightVal; + }, + reliableMarginLeft: function() { + computeStyleTests(); + return reliableMarginLeftVal; + } + } ); +} )(); + + +function curCSS( elem, name, computed ) { + var width, minWidth, maxWidth, ret, + + // Support: Firefox 51+ + // Retrieving style before computed somehow + // fixes an issue with getting wrong values + // on detached elements + style = elem.style; + + computed = computed || getStyles( elem ); + + // getPropertyValue is needed for: + // .css('filter') (IE 9 only, #12537) + // .css('--customProperty) (#3144) + if ( computed ) { + ret = computed.getPropertyValue( name ) || computed[ name ]; + + if ( ret === "" && !jQuery.contains( elem.ownerDocument, elem ) ) { + ret = jQuery.style( elem, name ); + } + + // A tribute to the "awesome hack by Dean Edwards" + // Android Browser returns percentage for some values, + // but width seems to be reliably pixels. + // This is against the CSSOM draft spec: + // https://drafts.csswg.org/cssom/#resolved-values + if ( !support.pixelMarginRight() && rnumnonpx.test( ret ) && rmargin.test( name ) ) { + + // Remember the original values + width = style.width; + minWidth = style.minWidth; + maxWidth = style.maxWidth; + + // Put in the new values to get a computed value out + style.minWidth = style.maxWidth = style.width = ret; + ret = computed.width; + + // Revert the changed values + style.width = width; + style.minWidth = minWidth; + style.maxWidth = maxWidth; + } + } + + return ret !== undefined ? + + // Support: IE <=9 - 11 only + // IE returns zIndex value as an integer. + ret + "" : + ret; +} + + +function addGetHookIf( conditionFn, hookFn ) { + + // Define the hook, we'll check on the first run if it's really needed. + return { + get: function() { + if ( conditionFn() ) { + + // Hook not needed (or it's not possible to use it due + // to missing dependency), remove it. + delete this.get; + return; + } + + // Hook needed; redefine it so that the support test is not executed again. + return ( this.get = hookFn ).apply( this, arguments ); + } + }; +} + + +var + + // Swappable if display is none or starts with table + // except "table", "table-cell", or "table-caption" + // See here for display values: https://developer.mozilla.org/en-US/docs/CSS/display + rdisplayswap = /^(none|table(?!-c[ea]).+)/, + rcustomProp = /^--/, + cssShow = { position: "absolute", visibility: "hidden", display: "block" }, + cssNormalTransform = { + letterSpacing: "0", + fontWeight: "400" + }, + + cssPrefixes = [ "Webkit", "Moz", "ms" ], + emptyStyle = document.createElement( "div" ).style; + +// Return a css property mapped to a potentially vendor prefixed property +function vendorPropName( name ) { + + // Shortcut for names that are not vendor prefixed + if ( name in emptyStyle ) { + return name; + } + + // Check for vendor prefixed names + var capName = name[ 0 ].toUpperCase() + name.slice( 1 ), + i = cssPrefixes.length; + + while ( i-- ) { + name = cssPrefixes[ i ] + capName; + if ( name in emptyStyle ) { + return name; + } + } +} + +// Return a property mapped along what jQuery.cssProps suggests or to +// a vendor prefixed property. +function finalPropName( name ) { + var ret = jQuery.cssProps[ name ]; + if ( !ret ) { + ret = jQuery.cssProps[ name ] = vendorPropName( name ) || name; + } + return ret; +} + +function setPositiveNumber( elem, value, subtract ) { + + // Any relative (+/-) values have already been + // normalized at this point + var matches = rcssNum.exec( value ); + return matches ? + + // Guard against undefined "subtract", e.g., when used as in cssHooks + Math.max( 0, matches[ 2 ] - ( subtract || 0 ) ) + ( matches[ 3 ] || "px" ) : + value; +} + +function augmentWidthOrHeight( elem, name, extra, isBorderBox, styles ) { + var i, + val = 0; + + // If we already have the right measurement, avoid augmentation + if ( extra === ( isBorderBox ? "border" : "content" ) ) { + i = 4; + + // Otherwise initialize for horizontal or vertical properties + } else { + i = name === "width" ? 1 : 0; + } + + for ( ; i < 4; i += 2 ) { + + // Both box models exclude margin, so add it if we want it + if ( extra === "margin" ) { + val += jQuery.css( elem, extra + cssExpand[ i ], true, styles ); + } + + if ( isBorderBox ) { + + // border-box includes padding, so remove it if we want content + if ( extra === "content" ) { + val -= jQuery.css( elem, "padding" + cssExpand[ i ], true, styles ); + } + + // At this point, extra isn't border nor margin, so remove border + if ( extra !== "margin" ) { + val -= jQuery.css( elem, "border" + cssExpand[ i ] + "Width", true, styles ); + } + } else { + + // At this point, extra isn't content, so add padding + val += jQuery.css( elem, "padding" + cssExpand[ i ], true, styles ); + + // At this point, extra isn't content nor padding, so add border + if ( extra !== "padding" ) { + val += jQuery.css( elem, "border" + cssExpand[ i ] + "Width", true, styles ); + } + } + } + + return val; +} + +function getWidthOrHeight( elem, name, extra ) { + + // Start with computed style + var valueIsBorderBox, + styles = getStyles( elem ), + val = curCSS( elem, name, styles ), + isBorderBox = jQuery.css( elem, "boxSizing", false, styles ) === "border-box"; + + // Computed unit is not pixels. Stop here and return. + if ( rnumnonpx.test( val ) ) { + return val; + } + + // Check for style in case a browser which returns unreliable values + // for getComputedStyle silently falls back to the reliable elem.style + valueIsBorderBox = isBorderBox && + ( support.boxSizingReliable() || val === elem.style[ name ] ); + + // Fall back to offsetWidth/Height when value is "auto" + // This happens for inline elements with no explicit setting (gh-3571) + if ( val === "auto" ) { + val = elem[ "offset" + name[ 0 ].toUpperCase() + name.slice( 1 ) ]; + } + + // Normalize "", auto, and prepare for extra + val = parseFloat( val ) || 0; + + // Use the active box-sizing model to add/subtract irrelevant styles + return ( val + + augmentWidthOrHeight( + elem, + name, + extra || ( isBorderBox ? "border" : "content" ), + valueIsBorderBox, + styles + ) + ) + "px"; +} + +jQuery.extend( { + + // Add in style property hooks for overriding the default + // behavior of getting and setting a style property + cssHooks: { + opacity: { + get: function( elem, computed ) { + if ( computed ) { + + // We should always get a number back from opacity + var ret = curCSS( elem, "opacity" ); + return ret === "" ? "1" : ret; + } + } + } + }, + + // Don't automatically add "px" to these possibly-unitless properties + cssNumber: { + "animationIterationCount": true, + "columnCount": true, + "fillOpacity": true, + "flexGrow": true, + "flexShrink": true, + "fontWeight": true, + "lineHeight": true, + "opacity": true, + "order": true, + "orphans": true, + "widows": true, + "zIndex": true, + "zoom": true + }, + + // Add in properties whose names you wish to fix before + // setting or getting the value + cssProps: { + "float": "cssFloat" + }, + + // Get and set the style property on a DOM Node + style: function( elem, name, value, extra ) { + + // Don't set styles on text and comment nodes + if ( !elem || elem.nodeType === 3 || elem.nodeType === 8 || !elem.style ) { + return; + } + + // Make sure that we're working with the right name + var ret, type, hooks, + origName = jQuery.camelCase( name ), + isCustomProp = rcustomProp.test( name ), + style = elem.style; + + // Make sure that we're working with the right name. We don't + // want to query the value if it is a CSS custom property + // since they are user-defined. + if ( !isCustomProp ) { + name = finalPropName( origName ); + } + + // Gets hook for the prefixed version, then unprefixed version + hooks = jQuery.cssHooks[ name ] || jQuery.cssHooks[ origName ]; + + // Check if we're setting a value + if ( value !== undefined ) { + type = typeof value; + + // Convert "+=" or "-=" to relative numbers (#7345) + if ( type === "string" && ( ret = rcssNum.exec( value ) ) && ret[ 1 ] ) { + value = adjustCSS( elem, name, ret ); + + // Fixes bug #9237 + type = "number"; + } + + // Make sure that null and NaN values aren't set (#7116) + if ( value == null || value !== value ) { + return; + } + + // If a number was passed in, add the unit (except for certain CSS properties) + if ( type === "number" ) { + value += ret && ret[ 3 ] || ( jQuery.cssNumber[ origName ] ? "" : "px" ); + } + + // background-* props affect original clone's values + if ( !support.clearCloneStyle && value === "" && name.indexOf( "background" ) === 0 ) { + style[ name ] = "inherit"; + } + + // If a hook was provided, use that value, otherwise just set the specified value + if ( !hooks || !( "set" in hooks ) || + ( value = hooks.set( elem, value, extra ) ) !== undefined ) { + + if ( isCustomProp ) { + style.setProperty( name, value ); + } else { + style[ name ] = value; + } + } + + } else { + + // If a hook was provided get the non-computed value from there + if ( hooks && "get" in hooks && + ( ret = hooks.get( elem, false, extra ) ) !== undefined ) { + + return ret; + } + + // Otherwise just get the value from the style object + return style[ name ]; + } + }, + + css: function( elem, name, extra, styles ) { + var val, num, hooks, + origName = jQuery.camelCase( name ), + isCustomProp = rcustomProp.test( name ); + + // Make sure that we're working with the right name. We don't + // want to modify the value if it is a CSS custom property + // since they are user-defined. + if ( !isCustomProp ) { + name = finalPropName( origName ); + } + + // Try prefixed name followed by the unprefixed name + hooks = jQuery.cssHooks[ name ] || jQuery.cssHooks[ origName ]; + + // If a hook was provided get the computed value from there + if ( hooks && "get" in hooks ) { + val = hooks.get( elem, true, extra ); + } + + // Otherwise, if a way to get the computed value exists, use that + if ( val === undefined ) { + val = curCSS( elem, name, styles ); + } + + // Convert "normal" to computed value + if ( val === "normal" && name in cssNormalTransform ) { + val = cssNormalTransform[ name ]; + } + + // Make numeric if forced or a qualifier was provided and val looks numeric + if ( extra === "" || extra ) { + num = parseFloat( val ); + return extra === true || isFinite( num ) ? num || 0 : val; + } + + return val; + } +} ); + +jQuery.each( [ "height", "width" ], function( i, name ) { + jQuery.cssHooks[ name ] = { + get: function( elem, computed, extra ) { + if ( computed ) { + + // Certain elements can have dimension info if we invisibly show them + // but it must have a current display style that would benefit + return rdisplayswap.test( jQuery.css( elem, "display" ) ) && + + // Support: Safari 8+ + // Table columns in Safari have non-zero offsetWidth & zero + // getBoundingClientRect().width unless display is changed. + // Support: IE <=11 only + // Running getBoundingClientRect on a disconnected node + // in IE throws an error. + ( !elem.getClientRects().length || !elem.getBoundingClientRect().width ) ? + swap( elem, cssShow, function() { + return getWidthOrHeight( elem, name, extra ); + } ) : + getWidthOrHeight( elem, name, extra ); + } + }, + + set: function( elem, value, extra ) { + var matches, + styles = extra && getStyles( elem ), + subtract = extra && augmentWidthOrHeight( + elem, + name, + extra, + jQuery.css( elem, "boxSizing", false, styles ) === "border-box", + styles + ); + + // Convert to pixels if value adjustment is needed + if ( subtract && ( matches = rcssNum.exec( value ) ) && + ( matches[ 3 ] || "px" ) !== "px" ) { + + elem.style[ name ] = value; + value = jQuery.css( elem, name ); + } + + return setPositiveNumber( elem, value, subtract ); + } + }; +} ); + +jQuery.cssHooks.marginLeft = addGetHookIf( support.reliableMarginLeft, + function( elem, computed ) { + if ( computed ) { + return ( parseFloat( curCSS( elem, "marginLeft" ) ) || + elem.getBoundingClientRect().left - + swap( elem, { marginLeft: 0 }, function() { + return elem.getBoundingClientRect().left; + } ) + ) + "px"; + } + } +); + +// These hooks are used by animate to expand properties +jQuery.each( { + margin: "", + padding: "", + border: "Width" +}, function( prefix, suffix ) { + jQuery.cssHooks[ prefix + suffix ] = { + expand: function( value ) { + var i = 0, + expanded = {}, + + // Assumes a single number if not a string + parts = typeof value === "string" ? value.split( " " ) : [ value ]; + + for ( ; i < 4; i++ ) { + expanded[ prefix + cssExpand[ i ] + suffix ] = + parts[ i ] || parts[ i - 2 ] || parts[ 0 ]; + } + + return expanded; + } + }; + + if ( !rmargin.test( prefix ) ) { + jQuery.cssHooks[ prefix + suffix ].set = setPositiveNumber; + } +} ); + +jQuery.fn.extend( { + css: function( name, value ) { + return access( this, function( elem, name, value ) { + var styles, len, + map = {}, + i = 0; + + if ( Array.isArray( name ) ) { + styles = getStyles( elem ); + len = name.length; + + for ( ; i < len; i++ ) { + map[ name[ i ] ] = jQuery.css( elem, name[ i ], false, styles ); + } + + return map; + } + + return value !== undefined ? + jQuery.style( elem, name, value ) : + jQuery.css( elem, name ); + }, name, value, arguments.length > 1 ); + } +} ); + + +function Tween( elem, options, prop, end, easing ) { + return new Tween.prototype.init( elem, options, prop, end, easing ); +} +jQuery.Tween = Tween; + +Tween.prototype = { + constructor: Tween, + init: function( elem, options, prop, end, easing, unit ) { + this.elem = elem; + this.prop = prop; + this.easing = easing || jQuery.easing._default; + this.options = options; + this.start = this.now = this.cur(); + this.end = end; + this.unit = unit || ( jQuery.cssNumber[ prop ] ? "" : "px" ); + }, + cur: function() { + var hooks = Tween.propHooks[ this.prop ]; + + return hooks && hooks.get ? + hooks.get( this ) : + Tween.propHooks._default.get( this ); + }, + run: function( percent ) { + var eased, + hooks = Tween.propHooks[ this.prop ]; + + if ( this.options.duration ) { + this.pos = eased = jQuery.easing[ this.easing ]( + percent, this.options.duration * percent, 0, 1, this.options.duration + ); + } else { + this.pos = eased = percent; + } + this.now = ( this.end - this.start ) * eased + this.start; + + if ( this.options.step ) { + this.options.step.call( this.elem, this.now, this ); + } + + if ( hooks && hooks.set ) { + hooks.set( this ); + } else { + Tween.propHooks._default.set( this ); + } + return this; + } +}; + +Tween.prototype.init.prototype = Tween.prototype; + +Tween.propHooks = { + _default: { + get: function( tween ) { + var result; + + // Use a property on the element directly when it is not a DOM element, + // or when there is no matching style property that exists. + if ( tween.elem.nodeType !== 1 || + tween.elem[ tween.prop ] != null && tween.elem.style[ tween.prop ] == null ) { + return tween.elem[ tween.prop ]; + } + + // Passing an empty string as a 3rd parameter to .css will automatically + // attempt a parseFloat and fallback to a string if the parse fails. + // Simple values such as "10px" are parsed to Float; + // complex values such as "rotate(1rad)" are returned as-is. + result = jQuery.css( tween.elem, tween.prop, "" ); + + // Empty strings, null, undefined and "auto" are converted to 0. + return !result || result === "auto" ? 0 : result; + }, + set: function( tween ) { + + // Use step hook for back compat. + // Use cssHook if its there. + // Use .style if available and use plain properties where available. + if ( jQuery.fx.step[ tween.prop ] ) { + jQuery.fx.step[ tween.prop ]( tween ); + } else if ( tween.elem.nodeType === 1 && + ( tween.elem.style[ jQuery.cssProps[ tween.prop ] ] != null || + jQuery.cssHooks[ tween.prop ] ) ) { + jQuery.style( tween.elem, tween.prop, tween.now + tween.unit ); + } else { + tween.elem[ tween.prop ] = tween.now; + } + } + } +}; + +// Support: IE <=9 only +// Panic based approach to setting things on disconnected nodes +Tween.propHooks.scrollTop = Tween.propHooks.scrollLeft = { + set: function( tween ) { + if ( tween.elem.nodeType && tween.elem.parentNode ) { + tween.elem[ tween.prop ] = tween.now; + } + } +}; + +jQuery.easing = { + linear: function( p ) { + return p; + }, + swing: function( p ) { + return 0.5 - Math.cos( p * Math.PI ) / 2; + }, + _default: "swing" +}; + +jQuery.fx = Tween.prototype.init; + +// Back compat <1.8 extension point +jQuery.fx.step = {}; + + + + +var + fxNow, inProgress, + rfxtypes = /^(?:toggle|show|hide)$/, + rrun = /queueHooks$/; + +function schedule() { + if ( inProgress ) { + if ( document.hidden === false && window.requestAnimationFrame ) { + window.requestAnimationFrame( schedule ); + } else { + window.setTimeout( schedule, jQuery.fx.interval ); + } + + jQuery.fx.tick(); + } +} + +// Animations created synchronously will run synchronously +function createFxNow() { + window.setTimeout( function() { + fxNow = undefined; + } ); + return ( fxNow = jQuery.now() ); +} + +// Generate parameters to create a standard animation +function genFx( type, includeWidth ) { + var which, + i = 0, + attrs = { height: type }; + + // If we include width, step value is 1 to do all cssExpand values, + // otherwise step value is 2 to skip over Left and Right + includeWidth = includeWidth ? 1 : 0; + for ( ; i < 4; i += 2 - includeWidth ) { + which = cssExpand[ i ]; + attrs[ "margin" + which ] = attrs[ "padding" + which ] = type; + } + + if ( includeWidth ) { + attrs.opacity = attrs.width = type; + } + + return attrs; +} + +function createTween( value, prop, animation ) { + var tween, + collection = ( Animation.tweeners[ prop ] || [] ).concat( Animation.tweeners[ "*" ] ), + index = 0, + length = collection.length; + for ( ; index < length; index++ ) { + if ( ( tween = collection[ index ].call( animation, prop, value ) ) ) { + + // We're done with this property + return tween; + } + } +} + +function defaultPrefilter( elem, props, opts ) { + var prop, value, toggle, hooks, oldfire, propTween, restoreDisplay, display, + isBox = "width" in props || "height" in props, + anim = this, + orig = {}, + style = elem.style, + hidden = elem.nodeType && isHiddenWithinTree( elem ), + dataShow = dataPriv.get( elem, "fxshow" ); + + // Queue-skipping animations hijack the fx hooks + if ( !opts.queue ) { + hooks = jQuery._queueHooks( elem, "fx" ); + if ( hooks.unqueued == null ) { + hooks.unqueued = 0; + oldfire = hooks.empty.fire; + hooks.empty.fire = function() { + if ( !hooks.unqueued ) { + oldfire(); + } + }; + } + hooks.unqueued++; + + anim.always( function() { + + // Ensure the complete handler is called before this completes + anim.always( function() { + hooks.unqueued--; + if ( !jQuery.queue( elem, "fx" ).length ) { + hooks.empty.fire(); + } + } ); + } ); + } + + // Detect show/hide animations + for ( prop in props ) { + value = props[ prop ]; + if ( rfxtypes.test( value ) ) { + delete props[ prop ]; + toggle = toggle || value === "toggle"; + if ( value === ( hidden ? "hide" : "show" ) ) { + + // Pretend to be hidden if this is a "show" and + // there is still data from a stopped show/hide + if ( value === "show" && dataShow && dataShow[ prop ] !== undefined ) { + hidden = true; + + // Ignore all other no-op show/hide data + } else { + continue; + } + } + orig[ prop ] = dataShow && dataShow[ prop ] || jQuery.style( elem, prop ); + } + } + + // Bail out if this is a no-op like .hide().hide() + propTween = !jQuery.isEmptyObject( props ); + if ( !propTween && jQuery.isEmptyObject( orig ) ) { + return; + } + + // Restrict "overflow" and "display" styles during box animations + if ( isBox && elem.nodeType === 1 ) { + + // Support: IE <=9 - 11, Edge 12 - 13 + // Record all 3 overflow attributes because IE does not infer the shorthand + // from identically-valued overflowX and overflowY + opts.overflow = [ style.overflow, style.overflowX, style.overflowY ]; + + // Identify a display type, preferring old show/hide data over the CSS cascade + restoreDisplay = dataShow && dataShow.display; + if ( restoreDisplay == null ) { + restoreDisplay = dataPriv.get( elem, "display" ); + } + display = jQuery.css( elem, "display" ); + if ( display === "none" ) { + if ( restoreDisplay ) { + display = restoreDisplay; + } else { + + // Get nonempty value(s) by temporarily forcing visibility + showHide( [ elem ], true ); + restoreDisplay = elem.style.display || restoreDisplay; + display = jQuery.css( elem, "display" ); + showHide( [ elem ] ); + } + } + + // Animate inline elements as inline-block + if ( display === "inline" || display === "inline-block" && restoreDisplay != null ) { + if ( jQuery.css( elem, "float" ) === "none" ) { + + // Restore the original display value at the end of pure show/hide animations + if ( !propTween ) { + anim.done( function() { + style.display = restoreDisplay; + } ); + if ( restoreDisplay == null ) { + display = style.display; + restoreDisplay = display === "none" ? "" : display; + } + } + style.display = "inline-block"; + } + } + } + + if ( opts.overflow ) { + style.overflow = "hidden"; + anim.always( function() { + style.overflow = opts.overflow[ 0 ]; + style.overflowX = opts.overflow[ 1 ]; + style.overflowY = opts.overflow[ 2 ]; + } ); + } + + // Implement show/hide animations + propTween = false; + for ( prop in orig ) { + + // General show/hide setup for this element animation + if ( !propTween ) { + if ( dataShow ) { + if ( "hidden" in dataShow ) { + hidden = dataShow.hidden; + } + } else { + dataShow = dataPriv.access( elem, "fxshow", { display: restoreDisplay } ); + } + + // Store hidden/visible for toggle so `.stop().toggle()` "reverses" + if ( toggle ) { + dataShow.hidden = !hidden; + } + + // Show elements before animating them + if ( hidden ) { + showHide( [ elem ], true ); + } + + /* eslint-disable no-loop-func */ + + anim.done( function() { + + /* eslint-enable no-loop-func */ + + // The final step of a "hide" animation is actually hiding the element + if ( !hidden ) { + showHide( [ elem ] ); + } + dataPriv.remove( elem, "fxshow" ); + for ( prop in orig ) { + jQuery.style( elem, prop, orig[ prop ] ); + } + } ); + } + + // Per-property setup + propTween = createTween( hidden ? dataShow[ prop ] : 0, prop, anim ); + if ( !( prop in dataShow ) ) { + dataShow[ prop ] = propTween.start; + if ( hidden ) { + propTween.end = propTween.start; + propTween.start = 0; + } + } + } +} + +function propFilter( props, specialEasing ) { + var index, name, easing, value, hooks; + + // camelCase, specialEasing and expand cssHook pass + for ( index in props ) { + name = jQuery.camelCase( index ); + easing = specialEasing[ name ]; + value = props[ index ]; + if ( Array.isArray( value ) ) { + easing = value[ 1 ]; + value = props[ index ] = value[ 0 ]; + } + + if ( index !== name ) { + props[ name ] = value; + delete props[ index ]; + } + + hooks = jQuery.cssHooks[ name ]; + if ( hooks && "expand" in hooks ) { + value = hooks.expand( value ); + delete props[ name ]; + + // Not quite $.extend, this won't overwrite existing keys. + // Reusing 'index' because we have the correct "name" + for ( index in value ) { + if ( !( index in props ) ) { + props[ index ] = value[ index ]; + specialEasing[ index ] = easing; + } + } + } else { + specialEasing[ name ] = easing; + } + } +} + +function Animation( elem, properties, options ) { + var result, + stopped, + index = 0, + length = Animation.prefilters.length, + deferred = jQuery.Deferred().always( function() { + + // Don't match elem in the :animated selector + delete tick.elem; + } ), + tick = function() { + if ( stopped ) { + return false; + } + var currentTime = fxNow || createFxNow(), + remaining = Math.max( 0, animation.startTime + animation.duration - currentTime ), + + // Support: Android 2.3 only + // Archaic crash bug won't allow us to use `1 - ( 0.5 || 0 )` (#12497) + temp = remaining / animation.duration || 0, + percent = 1 - temp, + index = 0, + length = animation.tweens.length; + + for ( ; index < length; index++ ) { + animation.tweens[ index ].run( percent ); + } + + deferred.notifyWith( elem, [ animation, percent, remaining ] ); + + // If there's more to do, yield + if ( percent < 1 && length ) { + return remaining; + } + + // If this was an empty animation, synthesize a final progress notification + if ( !length ) { + deferred.notifyWith( elem, [ animation, 1, 0 ] ); + } + + // Resolve the animation and report its conclusion + deferred.resolveWith( elem, [ animation ] ); + return false; + }, + animation = deferred.promise( { + elem: elem, + props: jQuery.extend( {}, properties ), + opts: jQuery.extend( true, { + specialEasing: {}, + easing: jQuery.easing._default + }, options ), + originalProperties: properties, + originalOptions: options, + startTime: fxNow || createFxNow(), + duration: options.duration, + tweens: [], + createTween: function( prop, end ) { + var tween = jQuery.Tween( elem, animation.opts, prop, end, + animation.opts.specialEasing[ prop ] || animation.opts.easing ); + animation.tweens.push( tween ); + return tween; + }, + stop: function( gotoEnd ) { + var index = 0, + + // If we are going to the end, we want to run all the tweens + // otherwise we skip this part + length = gotoEnd ? animation.tweens.length : 0; + if ( stopped ) { + return this; + } + stopped = true; + for ( ; index < length; index++ ) { + animation.tweens[ index ].run( 1 ); + } + + // Resolve when we played the last frame; otherwise, reject + if ( gotoEnd ) { + deferred.notifyWith( elem, [ animation, 1, 0 ] ); + deferred.resolveWith( elem, [ animation, gotoEnd ] ); + } else { + deferred.rejectWith( elem, [ animation, gotoEnd ] ); + } + return this; + } + } ), + props = animation.props; + + propFilter( props, animation.opts.specialEasing ); + + for ( ; index < length; index++ ) { + result = Animation.prefilters[ index ].call( animation, elem, props, animation.opts ); + if ( result ) { + if ( jQuery.isFunction( result.stop ) ) { + jQuery._queueHooks( animation.elem, animation.opts.queue ).stop = + jQuery.proxy( result.stop, result ); + } + return result; + } + } + + jQuery.map( props, createTween, animation ); + + if ( jQuery.isFunction( animation.opts.start ) ) { + animation.opts.start.call( elem, animation ); + } + + // Attach callbacks from options + animation + .progress( animation.opts.progress ) + .done( animation.opts.done, animation.opts.complete ) + .fail( animation.opts.fail ) + .always( animation.opts.always ); + + jQuery.fx.timer( + jQuery.extend( tick, { + elem: elem, + anim: animation, + queue: animation.opts.queue + } ) + ); + + return animation; +} + +jQuery.Animation = jQuery.extend( Animation, { + + tweeners: { + "*": [ function( prop, value ) { + var tween = this.createTween( prop, value ); + adjustCSS( tween.elem, prop, rcssNum.exec( value ), tween ); + return tween; + } ] + }, + + tweener: function( props, callback ) { + if ( jQuery.isFunction( props ) ) { + callback = props; + props = [ "*" ]; + } else { + props = props.match( rnothtmlwhite ); + } + + var prop, + index = 0, + length = props.length; + + for ( ; index < length; index++ ) { + prop = props[ index ]; + Animation.tweeners[ prop ] = Animation.tweeners[ prop ] || []; + Animation.tweeners[ prop ].unshift( callback ); + } + }, + + prefilters: [ defaultPrefilter ], + + prefilter: function( callback, prepend ) { + if ( prepend ) { + Animation.prefilters.unshift( callback ); + } else { + Animation.prefilters.push( callback ); + } + } +} ); + +jQuery.speed = function( speed, easing, fn ) { + var opt = speed && typeof speed === "object" ? jQuery.extend( {}, speed ) : { + complete: fn || !fn && easing || + jQuery.isFunction( speed ) && speed, + duration: speed, + easing: fn && easing || easing && !jQuery.isFunction( easing ) && easing + }; + + // Go to the end state if fx are off + if ( jQuery.fx.off ) { + opt.duration = 0; + + } else { + if ( typeof opt.duration !== "number" ) { + if ( opt.duration in jQuery.fx.speeds ) { + opt.duration = jQuery.fx.speeds[ opt.duration ]; + + } else { + opt.duration = jQuery.fx.speeds._default; + } + } + } + + // Normalize opt.queue - true/undefined/null -> "fx" + if ( opt.queue == null || opt.queue === true ) { + opt.queue = "fx"; + } + + // Queueing + opt.old = opt.complete; + + opt.complete = function() { + if ( jQuery.isFunction( opt.old ) ) { + opt.old.call( this ); + } + + if ( opt.queue ) { + jQuery.dequeue( this, opt.queue ); + } + }; + + return opt; +}; + +jQuery.fn.extend( { + fadeTo: function( speed, to, easing, callback ) { + + // Show any hidden elements after setting opacity to 0 + return this.filter( isHiddenWithinTree ).css( "opacity", 0 ).show() + + // Animate to the value specified + .end().animate( { opacity: to }, speed, easing, callback ); + }, + animate: function( prop, speed, easing, callback ) { + var empty = jQuery.isEmptyObject( prop ), + optall = jQuery.speed( speed, easing, callback ), + doAnimation = function() { + + // Operate on a copy of prop so per-property easing won't be lost + var anim = Animation( this, jQuery.extend( {}, prop ), optall ); + + // Empty animations, or finishing resolves immediately + if ( empty || dataPriv.get( this, "finish" ) ) { + anim.stop( true ); + } + }; + doAnimation.finish = doAnimation; + + return empty || optall.queue === false ? + this.each( doAnimation ) : + this.queue( optall.queue, doAnimation ); + }, + stop: function( type, clearQueue, gotoEnd ) { + var stopQueue = function( hooks ) { + var stop = hooks.stop; + delete hooks.stop; + stop( gotoEnd ); + }; + + if ( typeof type !== "string" ) { + gotoEnd = clearQueue; + clearQueue = type; + type = undefined; + } + if ( clearQueue && type !== false ) { + this.queue( type || "fx", [] ); + } + + return this.each( function() { + var dequeue = true, + index = type != null && type + "queueHooks", + timers = jQuery.timers, + data = dataPriv.get( this ); + + if ( index ) { + if ( data[ index ] && data[ index ].stop ) { + stopQueue( data[ index ] ); + } + } else { + for ( index in data ) { + if ( data[ index ] && data[ index ].stop && rrun.test( index ) ) { + stopQueue( data[ index ] ); + } + } + } + + for ( index = timers.length; index--; ) { + if ( timers[ index ].elem === this && + ( type == null || timers[ index ].queue === type ) ) { + + timers[ index ].anim.stop( gotoEnd ); + dequeue = false; + timers.splice( index, 1 ); + } + } + + // Start the next in the queue if the last step wasn't forced. + // Timers currently will call their complete callbacks, which + // will dequeue but only if they were gotoEnd. + if ( dequeue || !gotoEnd ) { + jQuery.dequeue( this, type ); + } + } ); + }, + finish: function( type ) { + if ( type !== false ) { + type = type || "fx"; + } + return this.each( function() { + var index, + data = dataPriv.get( this ), + queue = data[ type + "queue" ], + hooks = data[ type + "queueHooks" ], + timers = jQuery.timers, + length = queue ? queue.length : 0; + + // Enable finishing flag on private data + data.finish = true; + + // Empty the queue first + jQuery.queue( this, type, [] ); + + if ( hooks && hooks.stop ) { + hooks.stop.call( this, true ); + } + + // Look for any active animations, and finish them + for ( index = timers.length; index--; ) { + if ( timers[ index ].elem === this && timers[ index ].queue === type ) { + timers[ index ].anim.stop( true ); + timers.splice( index, 1 ); + } + } + + // Look for any animations in the old queue and finish them + for ( index = 0; index < length; index++ ) { + if ( queue[ index ] && queue[ index ].finish ) { + queue[ index ].finish.call( this ); + } + } + + // Turn off finishing flag + delete data.finish; + } ); + } +} ); + +jQuery.each( [ "toggle", "show", "hide" ], function( i, name ) { + var cssFn = jQuery.fn[ name ]; + jQuery.fn[ name ] = function( speed, easing, callback ) { + return speed == null || typeof speed === "boolean" ? + cssFn.apply( this, arguments ) : + this.animate( genFx( name, true ), speed, easing, callback ); + }; +} ); + +// Generate shortcuts for custom animations +jQuery.each( { + slideDown: genFx( "show" ), + slideUp: genFx( "hide" ), + slideToggle: genFx( "toggle" ), + fadeIn: { opacity: "show" }, + fadeOut: { opacity: "hide" }, + fadeToggle: { opacity: "toggle" } +}, function( name, props ) { + jQuery.fn[ name ] = function( speed, easing, callback ) { + return this.animate( props, speed, easing, callback ); + }; +} ); + +jQuery.timers = []; +jQuery.fx.tick = function() { + var timer, + i = 0, + timers = jQuery.timers; + + fxNow = jQuery.now(); + + for ( ; i < timers.length; i++ ) { + timer = timers[ i ]; + + // Run the timer and safely remove it when done (allowing for external removal) + if ( !timer() && timers[ i ] === timer ) { + timers.splice( i--, 1 ); + } + } + + if ( !timers.length ) { + jQuery.fx.stop(); + } + fxNow = undefined; +}; + +jQuery.fx.timer = function( timer ) { + jQuery.timers.push( timer ); + jQuery.fx.start(); +}; + +jQuery.fx.interval = 13; +jQuery.fx.start = function() { + if ( inProgress ) { + return; + } + + inProgress = true; + schedule(); +}; + +jQuery.fx.stop = function() { + inProgress = null; +}; + +jQuery.fx.speeds = { + slow: 600, + fast: 200, + + // Default speed + _default: 400 +}; + + +// Based off of the plugin by Clint Helfers, with permission. +// https://web.archive.org/web/20100324014747/http://blindsignals.com/index.php/2009/07/jquery-delay/ +jQuery.fn.delay = function( time, type ) { + time = jQuery.fx ? jQuery.fx.speeds[ time ] || time : time; + type = type || "fx"; + + return this.queue( type, function( next, hooks ) { + var timeout = window.setTimeout( next, time ); + hooks.stop = function() { + window.clearTimeout( timeout ); + }; + } ); +}; + + +( function() { + var input = document.createElement( "input" ), + select = document.createElement( "select" ), + opt = select.appendChild( document.createElement( "option" ) ); + + input.type = "checkbox"; + + // Support: Android <=4.3 only + // Default value for a checkbox should be "on" + support.checkOn = input.value !== ""; + + // Support: IE <=11 only + // Must access selectedIndex to make default options select + support.optSelected = opt.selected; + + // Support: IE <=11 only + // An input loses its value after becoming a radio + input = document.createElement( "input" ); + input.value = "t"; + input.type = "radio"; + support.radioValue = input.value === "t"; +} )(); + + +var boolHook, + attrHandle = jQuery.expr.attrHandle; + +jQuery.fn.extend( { + attr: function( name, value ) { + return access( this, jQuery.attr, name, value, arguments.length > 1 ); + }, + + removeAttr: function( name ) { + return this.each( function() { + jQuery.removeAttr( this, name ); + } ); + } +} ); + +jQuery.extend( { + attr: function( elem, name, value ) { + var ret, hooks, + nType = elem.nodeType; + + // Don't get/set attributes on text, comment and attribute nodes + if ( nType === 3 || nType === 8 || nType === 2 ) { + return; + } + + // Fallback to prop when attributes are not supported + if ( typeof elem.getAttribute === "undefined" ) { + return jQuery.prop( elem, name, value ); + } + + // Attribute hooks are determined by the lowercase version + // Grab necessary hook if one is defined + if ( nType !== 1 || !jQuery.isXMLDoc( elem ) ) { + hooks = jQuery.attrHooks[ name.toLowerCase() ] || + ( jQuery.expr.match.bool.test( name ) ? boolHook : undefined ); + } + + if ( value !== undefined ) { + if ( value === null ) { + jQuery.removeAttr( elem, name ); + return; + } + + if ( hooks && "set" in hooks && + ( ret = hooks.set( elem, value, name ) ) !== undefined ) { + return ret; + } + + elem.setAttribute( name, value + "" ); + return value; + } + + if ( hooks && "get" in hooks && ( ret = hooks.get( elem, name ) ) !== null ) { + return ret; + } + + ret = jQuery.find.attr( elem, name ); + + // Non-existent attributes return null, we normalize to undefined + return ret == null ? undefined : ret; + }, + + attrHooks: { + type: { + set: function( elem, value ) { + if ( !support.radioValue && value === "radio" && + nodeName( elem, "input" ) ) { + var val = elem.value; + elem.setAttribute( "type", value ); + if ( val ) { + elem.value = val; + } + return value; + } + } + } + }, + + removeAttr: function( elem, value ) { + var name, + i = 0, + + // Attribute names can contain non-HTML whitespace characters + // https://html.spec.whatwg.org/multipage/syntax.html#attributes-2 + attrNames = value && value.match( rnothtmlwhite ); + + if ( attrNames && elem.nodeType === 1 ) { + while ( ( name = attrNames[ i++ ] ) ) { + elem.removeAttribute( name ); + } + } + } +} ); + +// Hooks for boolean attributes +boolHook = { + set: function( elem, value, name ) { + if ( value === false ) { + + // Remove boolean attributes when set to false + jQuery.removeAttr( elem, name ); + } else { + elem.setAttribute( name, name ); + } + return name; + } +}; + +jQuery.each( jQuery.expr.match.bool.source.match( /\w+/g ), function( i, name ) { + var getter = attrHandle[ name ] || jQuery.find.attr; + + attrHandle[ name ] = function( elem, name, isXML ) { + var ret, handle, + lowercaseName = name.toLowerCase(); + + if ( !isXML ) { + + // Avoid an infinite loop by temporarily removing this function from the getter + handle = attrHandle[ lowercaseName ]; + attrHandle[ lowercaseName ] = ret; + ret = getter( elem, name, isXML ) != null ? + lowercaseName : + null; + attrHandle[ lowercaseName ] = handle; + } + return ret; + }; +} ); + + + + +var rfocusable = /^(?:input|select|textarea|button)$/i, + rclickable = /^(?:a|area)$/i; + +jQuery.fn.extend( { + prop: function( name, value ) { + return access( this, jQuery.prop, name, value, arguments.length > 1 ); + }, + + removeProp: function( name ) { + return this.each( function() { + delete this[ jQuery.propFix[ name ] || name ]; + } ); + } +} ); + +jQuery.extend( { + prop: function( elem, name, value ) { + var ret, hooks, + nType = elem.nodeType; + + // Don't get/set properties on text, comment and attribute nodes + if ( nType === 3 || nType === 8 || nType === 2 ) { + return; + } + + if ( nType !== 1 || !jQuery.isXMLDoc( elem ) ) { + + // Fix name and attach hooks + name = jQuery.propFix[ name ] || name; + hooks = jQuery.propHooks[ name ]; + } + + if ( value !== undefined ) { + if ( hooks && "set" in hooks && + ( ret = hooks.set( elem, value, name ) ) !== undefined ) { + return ret; + } + + return ( elem[ name ] = value ); + } + + if ( hooks && "get" in hooks && ( ret = hooks.get( elem, name ) ) !== null ) { + return ret; + } + + return elem[ name ]; + }, + + propHooks: { + tabIndex: { + get: function( elem ) { + + // Support: IE <=9 - 11 only + // elem.tabIndex doesn't always return the + // correct value when it hasn't been explicitly set + // https://web.archive.org/web/20141116233347/http://fluidproject.org/blog/2008/01/09/getting-setting-and-removing-tabindex-values-with-javascript/ + // Use proper attribute retrieval(#12072) + var tabindex = jQuery.find.attr( elem, "tabindex" ); + + if ( tabindex ) { + return parseInt( tabindex, 10 ); + } + + if ( + rfocusable.test( elem.nodeName ) || + rclickable.test( elem.nodeName ) && + elem.href + ) { + return 0; + } + + return -1; + } + } + }, + + propFix: { + "for": "htmlFor", + "class": "className" + } +} ); + +// Support: IE <=11 only +// Accessing the selectedIndex property +// forces the browser to respect setting selected +// on the option +// The getter ensures a default option is selected +// when in an optgroup +// eslint rule "no-unused-expressions" is disabled for this code +// since it considers such accessions noop +if ( !support.optSelected ) { + jQuery.propHooks.selected = { + get: function( elem ) { + + /* eslint no-unused-expressions: "off" */ + + var parent = elem.parentNode; + if ( parent && parent.parentNode ) { + parent.parentNode.selectedIndex; + } + return null; + }, + set: function( elem ) { + + /* eslint no-unused-expressions: "off" */ + + var parent = elem.parentNode; + if ( parent ) { + parent.selectedIndex; + + if ( parent.parentNode ) { + parent.parentNode.selectedIndex; + } + } + } + }; +} + +jQuery.each( [ + "tabIndex", + "readOnly", + "maxLength", + "cellSpacing", + "cellPadding", + "rowSpan", + "colSpan", + "useMap", + "frameBorder", + "contentEditable" +], function() { + jQuery.propFix[ this.toLowerCase() ] = this; +} ); + + + + + // Strip and collapse whitespace according to HTML spec + // https://html.spec.whatwg.org/multipage/infrastructure.html#strip-and-collapse-whitespace + function stripAndCollapse( value ) { + var tokens = value.match( rnothtmlwhite ) || []; + return tokens.join( " " ); + } + + +function getClass( elem ) { + return elem.getAttribute && elem.getAttribute( "class" ) || ""; +} + +jQuery.fn.extend( { + addClass: function( value ) { + var classes, elem, cur, curValue, clazz, j, finalValue, + i = 0; + + if ( jQuery.isFunction( value ) ) { + return this.each( function( j ) { + jQuery( this ).addClass( value.call( this, j, getClass( this ) ) ); + } ); + } + + if ( typeof value === "string" && value ) { + classes = value.match( rnothtmlwhite ) || []; + + while ( ( elem = this[ i++ ] ) ) { + curValue = getClass( elem ); + cur = elem.nodeType === 1 && ( " " + stripAndCollapse( curValue ) + " " ); + + if ( cur ) { + j = 0; + while ( ( clazz = classes[ j++ ] ) ) { + if ( cur.indexOf( " " + clazz + " " ) < 0 ) { + cur += clazz + " "; + } + } + + // Only assign if different to avoid unneeded rendering. + finalValue = stripAndCollapse( cur ); + if ( curValue !== finalValue ) { + elem.setAttribute( "class", finalValue ); + } + } + } + } + + return this; + }, + + removeClass: function( value ) { + var classes, elem, cur, curValue, clazz, j, finalValue, + i = 0; + + if ( jQuery.isFunction( value ) ) { + return this.each( function( j ) { + jQuery( this ).removeClass( value.call( this, j, getClass( this ) ) ); + } ); + } + + if ( !arguments.length ) { + return this.attr( "class", "" ); + } + + if ( typeof value === "string" && value ) { + classes = value.match( rnothtmlwhite ) || []; + + while ( ( elem = this[ i++ ] ) ) { + curValue = getClass( elem ); + + // This expression is here for better compressibility (see addClass) + cur = elem.nodeType === 1 && ( " " + stripAndCollapse( curValue ) + " " ); + + if ( cur ) { + j = 0; + while ( ( clazz = classes[ j++ ] ) ) { + + // Remove *all* instances + while ( cur.indexOf( " " + clazz + " " ) > -1 ) { + cur = cur.replace( " " + clazz + " ", " " ); + } + } + + // Only assign if different to avoid unneeded rendering. + finalValue = stripAndCollapse( cur ); + if ( curValue !== finalValue ) { + elem.setAttribute( "class", finalValue ); + } + } + } + } + + return this; + }, + + toggleClass: function( value, stateVal ) { + var type = typeof value; + + if ( typeof stateVal === "boolean" && type === "string" ) { + return stateVal ? this.addClass( value ) : this.removeClass( value ); + } + + if ( jQuery.isFunction( value ) ) { + return this.each( function( i ) { + jQuery( this ).toggleClass( + value.call( this, i, getClass( this ), stateVal ), + stateVal + ); + } ); + } + + return this.each( function() { + var className, i, self, classNames; + + if ( type === "string" ) { + + // Toggle individual class names + i = 0; + self = jQuery( this ); + classNames = value.match( rnothtmlwhite ) || []; + + while ( ( className = classNames[ i++ ] ) ) { + + // Check each className given, space separated list + if ( self.hasClass( className ) ) { + self.removeClass( className ); + } else { + self.addClass( className ); + } + } + + // Toggle whole class name + } else if ( value === undefined || type === "boolean" ) { + className = getClass( this ); + if ( className ) { + + // Store className if set + dataPriv.set( this, "__className__", className ); + } + + // If the element has a class name or if we're passed `false`, + // then remove the whole classname (if there was one, the above saved it). + // Otherwise bring back whatever was previously saved (if anything), + // falling back to the empty string if nothing was stored. + if ( this.setAttribute ) { + this.setAttribute( "class", + className || value === false ? + "" : + dataPriv.get( this, "__className__" ) || "" + ); + } + } + } ); + }, + + hasClass: function( selector ) { + var className, elem, + i = 0; + + className = " " + selector + " "; + while ( ( elem = this[ i++ ] ) ) { + if ( elem.nodeType === 1 && + ( " " + stripAndCollapse( getClass( elem ) ) + " " ).indexOf( className ) > -1 ) { + return true; + } + } + + return false; + } +} ); + + + + +var rreturn = /\r/g; + +jQuery.fn.extend( { + val: function( value ) { + var hooks, ret, isFunction, + elem = this[ 0 ]; + + if ( !arguments.length ) { + if ( elem ) { + hooks = jQuery.valHooks[ elem.type ] || + jQuery.valHooks[ elem.nodeName.toLowerCase() ]; + + if ( hooks && + "get" in hooks && + ( ret = hooks.get( elem, "value" ) ) !== undefined + ) { + return ret; + } + + ret = elem.value; + + // Handle most common string cases + if ( typeof ret === "string" ) { + return ret.replace( rreturn, "" ); + } + + // Handle cases where value is null/undef or number + return ret == null ? "" : ret; + } + + return; + } + + isFunction = jQuery.isFunction( value ); + + return this.each( function( i ) { + var val; + + if ( this.nodeType !== 1 ) { + return; + } + + if ( isFunction ) { + val = value.call( this, i, jQuery( this ).val() ); + } else { + val = value; + } + + // Treat null/undefined as ""; convert numbers to string + if ( val == null ) { + val = ""; + + } else if ( typeof val === "number" ) { + val += ""; + + } else if ( Array.isArray( val ) ) { + val = jQuery.map( val, function( value ) { + return value == null ? "" : value + ""; + } ); + } + + hooks = jQuery.valHooks[ this.type ] || jQuery.valHooks[ this.nodeName.toLowerCase() ]; + + // If set returns undefined, fall back to normal setting + if ( !hooks || !( "set" in hooks ) || hooks.set( this, val, "value" ) === undefined ) { + this.value = val; + } + } ); + } +} ); + +jQuery.extend( { + valHooks: { + option: { + get: function( elem ) { + + var val = jQuery.find.attr( elem, "value" ); + return val != null ? + val : + + // Support: IE <=10 - 11 only + // option.text throws exceptions (#14686, #14858) + // Strip and collapse whitespace + // https://html.spec.whatwg.org/#strip-and-collapse-whitespace + stripAndCollapse( jQuery.text( elem ) ); + } + }, + select: { + get: function( elem ) { + var value, option, i, + options = elem.options, + index = elem.selectedIndex, + one = elem.type === "select-one", + values = one ? null : [], + max = one ? index + 1 : options.length; + + if ( index < 0 ) { + i = max; + + } else { + i = one ? index : 0; + } + + // Loop through all the selected options + for ( ; i < max; i++ ) { + option = options[ i ]; + + // Support: IE <=9 only + // IE8-9 doesn't update selected after form reset (#2551) + if ( ( option.selected || i === index ) && + + // Don't return options that are disabled or in a disabled optgroup + !option.disabled && + ( !option.parentNode.disabled || + !nodeName( option.parentNode, "optgroup" ) ) ) { + + // Get the specific value for the option + value = jQuery( option ).val(); + + // We don't need an array for one selects + if ( one ) { + return value; + } + + // Multi-Selects return an array + values.push( value ); + } + } + + return values; + }, + + set: function( elem, value ) { + var optionSet, option, + options = elem.options, + values = jQuery.makeArray( value ), + i = options.length; + + while ( i-- ) { + option = options[ i ]; + + /* eslint-disable no-cond-assign */ + + if ( option.selected = + jQuery.inArray( jQuery.valHooks.option.get( option ), values ) > -1 + ) { + optionSet = true; + } + + /* eslint-enable no-cond-assign */ + } + + // Force browsers to behave consistently when non-matching value is set + if ( !optionSet ) { + elem.selectedIndex = -1; + } + return values; + } + } + } +} ); + +// Radios and checkboxes getter/setter +jQuery.each( [ "radio", "checkbox" ], function() { + jQuery.valHooks[ this ] = { + set: function( elem, value ) { + if ( Array.isArray( value ) ) { + return ( elem.checked = jQuery.inArray( jQuery( elem ).val(), value ) > -1 ); + } + } + }; + if ( !support.checkOn ) { + jQuery.valHooks[ this ].get = function( elem ) { + return elem.getAttribute( "value" ) === null ? "on" : elem.value; + }; + } +} ); + + + + +// Return jQuery for attributes-only inclusion + + +var rfocusMorph = /^(?:focusinfocus|focusoutblur)$/; + +jQuery.extend( jQuery.event, { + + trigger: function( event, data, elem, onlyHandlers ) { + + var i, cur, tmp, bubbleType, ontype, handle, special, + eventPath = [ elem || document ], + type = hasOwn.call( event, "type" ) ? event.type : event, + namespaces = hasOwn.call( event, "namespace" ) ? event.namespace.split( "." ) : []; + + cur = tmp = elem = elem || document; + + // Don't do events on text and comment nodes + if ( elem.nodeType === 3 || elem.nodeType === 8 ) { + return; + } + + // focus/blur morphs to focusin/out; ensure we're not firing them right now + if ( rfocusMorph.test( type + jQuery.event.triggered ) ) { + return; + } + + if ( type.indexOf( "." ) > -1 ) { + + // Namespaced trigger; create a regexp to match event type in handle() + namespaces = type.split( "." ); + type = namespaces.shift(); + namespaces.sort(); + } + ontype = type.indexOf( ":" ) < 0 && "on" + type; + + // Caller can pass in a jQuery.Event object, Object, or just an event type string + event = event[ jQuery.expando ] ? + event : + new jQuery.Event( type, typeof event === "object" && event ); + + // Trigger bitmask: & 1 for native handlers; & 2 for jQuery (always true) + event.isTrigger = onlyHandlers ? 2 : 3; + event.namespace = namespaces.join( "." ); + event.rnamespace = event.namespace ? + new RegExp( "(^|\\.)" + namespaces.join( "\\.(?:.*\\.|)" ) + "(\\.|$)" ) : + null; + + // Clean up the event in case it is being reused + event.result = undefined; + if ( !event.target ) { + event.target = elem; + } + + // Clone any incoming data and prepend the event, creating the handler arg list + data = data == null ? + [ event ] : + jQuery.makeArray( data, [ event ] ); + + // Allow special events to draw outside the lines + special = jQuery.event.special[ type ] || {}; + if ( !onlyHandlers && special.trigger && special.trigger.apply( elem, data ) === false ) { + return; + } + + // Determine event propagation path in advance, per W3C events spec (#9951) + // Bubble up to document, then to window; watch for a global ownerDocument var (#9724) + if ( !onlyHandlers && !special.noBubble && !jQuery.isWindow( elem ) ) { + + bubbleType = special.delegateType || type; + if ( !rfocusMorph.test( bubbleType + type ) ) { + cur = cur.parentNode; + } + for ( ; cur; cur = cur.parentNode ) { + eventPath.push( cur ); + tmp = cur; + } + + // Only add window if we got to document (e.g., not plain obj or detached DOM) + if ( tmp === ( elem.ownerDocument || document ) ) { + eventPath.push( tmp.defaultView || tmp.parentWindow || window ); + } + } + + // Fire handlers on the event path + i = 0; + while ( ( cur = eventPath[ i++ ] ) && !event.isPropagationStopped() ) { + + event.type = i > 1 ? + bubbleType : + special.bindType || type; + + // jQuery handler + handle = ( dataPriv.get( cur, "events" ) || {} )[ event.type ] && + dataPriv.get( cur, "handle" ); + if ( handle ) { + handle.apply( cur, data ); + } + + // Native handler + handle = ontype && cur[ ontype ]; + if ( handle && handle.apply && acceptData( cur ) ) { + event.result = handle.apply( cur, data ); + if ( event.result === false ) { + event.preventDefault(); + } + } + } + event.type = type; + + // If nobody prevented the default action, do it now + if ( !onlyHandlers && !event.isDefaultPrevented() ) { + + if ( ( !special._default || + special._default.apply( eventPath.pop(), data ) === false ) && + acceptData( elem ) ) { + + // Call a native DOM method on the target with the same name as the event. + // Don't do default actions on window, that's where global variables be (#6170) + if ( ontype && jQuery.isFunction( elem[ type ] ) && !jQuery.isWindow( elem ) ) { + + // Don't re-trigger an onFOO event when we call its FOO() method + tmp = elem[ ontype ]; + + if ( tmp ) { + elem[ ontype ] = null; + } + + // Prevent re-triggering of the same event, since we already bubbled it above + jQuery.event.triggered = type; + elem[ type ](); + jQuery.event.triggered = undefined; + + if ( tmp ) { + elem[ ontype ] = tmp; + } + } + } + } + + return event.result; + }, + + // Piggyback on a donor event to simulate a different one + // Used only for `focus(in | out)` events + simulate: function( type, elem, event ) { + var e = jQuery.extend( + new jQuery.Event(), + event, + { + type: type, + isSimulated: true + } + ); + + jQuery.event.trigger( e, null, elem ); + } + +} ); + +jQuery.fn.extend( { + + trigger: function( type, data ) { + return this.each( function() { + jQuery.event.trigger( type, data, this ); + } ); + }, + triggerHandler: function( type, data ) { + var elem = this[ 0 ]; + if ( elem ) { + return jQuery.event.trigger( type, data, elem, true ); + } + } +} ); + + +jQuery.each( ( "blur focus focusin focusout resize scroll click dblclick " + + "mousedown mouseup mousemove mouseover mouseout mouseenter mouseleave " + + "change select submit keydown keypress keyup contextmenu" ).split( " " ), + function( i, name ) { + + // Handle event binding + jQuery.fn[ name ] = function( data, fn ) { + return arguments.length > 0 ? + this.on( name, null, data, fn ) : + this.trigger( name ); + }; +} ); + +jQuery.fn.extend( { + hover: function( fnOver, fnOut ) { + return this.mouseenter( fnOver ).mouseleave( fnOut || fnOver ); + } +} ); + + + + +support.focusin = "onfocusin" in window; + + +// Support: Firefox <=44 +// Firefox doesn't have focus(in | out) events +// Related ticket - https://bugzilla.mozilla.org/show_bug.cgi?id=687787 +// +// Support: Chrome <=48 - 49, Safari <=9.0 - 9.1 +// focus(in | out) events fire after focus & blur events, +// which is spec violation - http://www.w3.org/TR/DOM-Level-3-Events/#events-focusevent-event-order +// Related ticket - https://bugs.chromium.org/p/chromium/issues/detail?id=449857 +if ( !support.focusin ) { + jQuery.each( { focus: "focusin", blur: "focusout" }, function( orig, fix ) { + + // Attach a single capturing handler on the document while someone wants focusin/focusout + var handler = function( event ) { + jQuery.event.simulate( fix, event.target, jQuery.event.fix( event ) ); + }; + + jQuery.event.special[ fix ] = { + setup: function() { + var doc = this.ownerDocument || this, + attaches = dataPriv.access( doc, fix ); + + if ( !attaches ) { + doc.addEventListener( orig, handler, true ); + } + dataPriv.access( doc, fix, ( attaches || 0 ) + 1 ); + }, + teardown: function() { + var doc = this.ownerDocument || this, + attaches = dataPriv.access( doc, fix ) - 1; + + if ( !attaches ) { + doc.removeEventListener( orig, handler, true ); + dataPriv.remove( doc, fix ); + + } else { + dataPriv.access( doc, fix, attaches ); + } + } + }; + } ); +} +var location = window.location; + +var nonce = jQuery.now(); + +var rquery = ( /\?/ ); + + + +// Cross-browser xml parsing +jQuery.parseXML = function( data ) { + var xml; + if ( !data || typeof data !== "string" ) { + return null; + } + + // Support: IE 9 - 11 only + // IE throws on parseFromString with invalid input. + try { + xml = ( new window.DOMParser() ).parseFromString( data, "text/xml" ); + } catch ( e ) { + xml = undefined; + } + + if ( !xml || xml.getElementsByTagName( "parsererror" ).length ) { + jQuery.error( "Invalid XML: " + data ); + } + return xml; +}; + + +var + rbracket = /\[\]$/, + rCRLF = /\r?\n/g, + rsubmitterTypes = /^(?:submit|button|image|reset|file)$/i, + rsubmittable = /^(?:input|select|textarea|keygen)/i; + +function buildParams( prefix, obj, traditional, add ) { + var name; + + if ( Array.isArray( obj ) ) { + + // Serialize array item. + jQuery.each( obj, function( i, v ) { + if ( traditional || rbracket.test( prefix ) ) { + + // Treat each array item as a scalar. + add( prefix, v ); + + } else { + + // Item is non-scalar (array or object), encode its numeric index. + buildParams( + prefix + "[" + ( typeof v === "object" && v != null ? i : "" ) + "]", + v, + traditional, + add + ); + } + } ); + + } else if ( !traditional && jQuery.type( obj ) === "object" ) { + + // Serialize object item. + for ( name in obj ) { + buildParams( prefix + "[" + name + "]", obj[ name ], traditional, add ); + } + + } else { + + // Serialize scalar item. + add( prefix, obj ); + } +} + +// Serialize an array of form elements or a set of +// key/values into a query string +jQuery.param = function( a, traditional ) { + var prefix, + s = [], + add = function( key, valueOrFunction ) { + + // If value is a function, invoke it and use its return value + var value = jQuery.isFunction( valueOrFunction ) ? + valueOrFunction() : + valueOrFunction; + + s[ s.length ] = encodeURIComponent( key ) + "=" + + encodeURIComponent( value == null ? "" : value ); + }; + + // If an array was passed in, assume that it is an array of form elements. + if ( Array.isArray( a ) || ( a.jquery && !jQuery.isPlainObject( a ) ) ) { + + // Serialize the form elements + jQuery.each( a, function() { + add( this.name, this.value ); + } ); + + } else { + + // If traditional, encode the "old" way (the way 1.3.2 or older + // did it), otherwise encode params recursively. + for ( prefix in a ) { + buildParams( prefix, a[ prefix ], traditional, add ); + } + } + + // Return the resulting serialization + return s.join( "&" ); +}; + +jQuery.fn.extend( { + serialize: function() { + return jQuery.param( this.serializeArray() ); + }, + serializeArray: function() { + return this.map( function() { + + // Can add propHook for "elements" to filter or add form elements + var elements = jQuery.prop( this, "elements" ); + return elements ? jQuery.makeArray( elements ) : this; + } ) + .filter( function() { + var type = this.type; + + // Use .is( ":disabled" ) so that fieldset[disabled] works + return this.name && !jQuery( this ).is( ":disabled" ) && + rsubmittable.test( this.nodeName ) && !rsubmitterTypes.test( type ) && + ( this.checked || !rcheckableType.test( type ) ); + } ) + .map( function( i, elem ) { + var val = jQuery( this ).val(); + + if ( val == null ) { + return null; + } + + if ( Array.isArray( val ) ) { + return jQuery.map( val, function( val ) { + return { name: elem.name, value: val.replace( rCRLF, "\r\n" ) }; + } ); + } + + return { name: elem.name, value: val.replace( rCRLF, "\r\n" ) }; + } ).get(); + } +} ); + + +var + r20 = /%20/g, + rhash = /#.*$/, + rantiCache = /([?&])_=[^&]*/, + rheaders = /^(.*?):[ \t]*([^\r\n]*)$/mg, + + // #7653, #8125, #8152: local protocol detection + rlocalProtocol = /^(?:about|app|app-storage|.+-extension|file|res|widget):$/, + rnoContent = /^(?:GET|HEAD)$/, + rprotocol = /^\/\//, + + /* Prefilters + * 1) They are useful to introduce custom dataTypes (see ajax/jsonp.js for an example) + * 2) These are called: + * - BEFORE asking for a transport + * - AFTER param serialization (s.data is a string if s.processData is true) + * 3) key is the dataType + * 4) the catchall symbol "*" can be used + * 5) execution will start with transport dataType and THEN continue down to "*" if needed + */ + prefilters = {}, + + /* Transports bindings + * 1) key is the dataType + * 2) the catchall symbol "*" can be used + * 3) selection will start with transport dataType and THEN go to "*" if needed + */ + transports = {}, + + // Avoid comment-prolog char sequence (#10098); must appease lint and evade compression + allTypes = "*/".concat( "*" ), + + // Anchor tag for parsing the document origin + originAnchor = document.createElement( "a" ); + originAnchor.href = location.href; + +// Base "constructor" for jQuery.ajaxPrefilter and jQuery.ajaxTransport +function addToPrefiltersOrTransports( structure ) { + + // dataTypeExpression is optional and defaults to "*" + return function( dataTypeExpression, func ) { + + if ( typeof dataTypeExpression !== "string" ) { + func = dataTypeExpression; + dataTypeExpression = "*"; + } + + var dataType, + i = 0, + dataTypes = dataTypeExpression.toLowerCase().match( rnothtmlwhite ) || []; + + if ( jQuery.isFunction( func ) ) { + + // For each dataType in the dataTypeExpression + while ( ( dataType = dataTypes[ i++ ] ) ) { + + // Prepend if requested + if ( dataType[ 0 ] === "+" ) { + dataType = dataType.slice( 1 ) || "*"; + ( structure[ dataType ] = structure[ dataType ] || [] ).unshift( func ); + + // Otherwise append + } else { + ( structure[ dataType ] = structure[ dataType ] || [] ).push( func ); + } + } + } + }; +} + +// Base inspection function for prefilters and transports +function inspectPrefiltersOrTransports( structure, options, originalOptions, jqXHR ) { + + var inspected = {}, + seekingTransport = ( structure === transports ); + + function inspect( dataType ) { + var selected; + inspected[ dataType ] = true; + jQuery.each( structure[ dataType ] || [], function( _, prefilterOrFactory ) { + var dataTypeOrTransport = prefilterOrFactory( options, originalOptions, jqXHR ); + if ( typeof dataTypeOrTransport === "string" && + !seekingTransport && !inspected[ dataTypeOrTransport ] ) { + + options.dataTypes.unshift( dataTypeOrTransport ); + inspect( dataTypeOrTransport ); + return false; + } else if ( seekingTransport ) { + return !( selected = dataTypeOrTransport ); + } + } ); + return selected; + } + + return inspect( options.dataTypes[ 0 ] ) || !inspected[ "*" ] && inspect( "*" ); +} + +// A special extend for ajax options +// that takes "flat" options (not to be deep extended) +// Fixes #9887 +function ajaxExtend( target, src ) { + var key, deep, + flatOptions = jQuery.ajaxSettings.flatOptions || {}; + + for ( key in src ) { + if ( src[ key ] !== undefined ) { + ( flatOptions[ key ] ? target : ( deep || ( deep = {} ) ) )[ key ] = src[ key ]; + } + } + if ( deep ) { + jQuery.extend( true, target, deep ); + } + + return target; +} + +/* Handles responses to an ajax request: + * - finds the right dataType (mediates between content-type and expected dataType) + * - returns the corresponding response + */ +function ajaxHandleResponses( s, jqXHR, responses ) { + + var ct, type, finalDataType, firstDataType, + contents = s.contents, + dataTypes = s.dataTypes; + + // Remove auto dataType and get content-type in the process + while ( dataTypes[ 0 ] === "*" ) { + dataTypes.shift(); + if ( ct === undefined ) { + ct = s.mimeType || jqXHR.getResponseHeader( "Content-Type" ); + } + } + + // Check if we're dealing with a known content-type + if ( ct ) { + for ( type in contents ) { + if ( contents[ type ] && contents[ type ].test( ct ) ) { + dataTypes.unshift( type ); + break; + } + } + } + + // Check to see if we have a response for the expected dataType + if ( dataTypes[ 0 ] in responses ) { + finalDataType = dataTypes[ 0 ]; + } else { + + // Try convertible dataTypes + for ( type in responses ) { + if ( !dataTypes[ 0 ] || s.converters[ type + " " + dataTypes[ 0 ] ] ) { + finalDataType = type; + break; + } + if ( !firstDataType ) { + firstDataType = type; + } + } + + // Or just use first one + finalDataType = finalDataType || firstDataType; + } + + // If we found a dataType + // We add the dataType to the list if needed + // and return the corresponding response + if ( finalDataType ) { + if ( finalDataType !== dataTypes[ 0 ] ) { + dataTypes.unshift( finalDataType ); + } + return responses[ finalDataType ]; + } +} + +/* Chain conversions given the request and the original response + * Also sets the responseXXX fields on the jqXHR instance + */ +function ajaxConvert( s, response, jqXHR, isSuccess ) { + var conv2, current, conv, tmp, prev, + converters = {}, + + // Work with a copy of dataTypes in case we need to modify it for conversion + dataTypes = s.dataTypes.slice(); + + // Create converters map with lowercased keys + if ( dataTypes[ 1 ] ) { + for ( conv in s.converters ) { + converters[ conv.toLowerCase() ] = s.converters[ conv ]; + } + } + + current = dataTypes.shift(); + + // Convert to each sequential dataType + while ( current ) { + + if ( s.responseFields[ current ] ) { + jqXHR[ s.responseFields[ current ] ] = response; + } + + // Apply the dataFilter if provided + if ( !prev && isSuccess && s.dataFilter ) { + response = s.dataFilter( response, s.dataType ); + } + + prev = current; + current = dataTypes.shift(); + + if ( current ) { + + // There's only work to do if current dataType is non-auto + if ( current === "*" ) { + + current = prev; + + // Convert response if prev dataType is non-auto and differs from current + } else if ( prev !== "*" && prev !== current ) { + + // Seek a direct converter + conv = converters[ prev + " " + current ] || converters[ "* " + current ]; + + // If none found, seek a pair + if ( !conv ) { + for ( conv2 in converters ) { + + // If conv2 outputs current + tmp = conv2.split( " " ); + if ( tmp[ 1 ] === current ) { + + // If prev can be converted to accepted input + conv = converters[ prev + " " + tmp[ 0 ] ] || + converters[ "* " + tmp[ 0 ] ]; + if ( conv ) { + + // Condense equivalence converters + if ( conv === true ) { + conv = converters[ conv2 ]; + + // Otherwise, insert the intermediate dataType + } else if ( converters[ conv2 ] !== true ) { + current = tmp[ 0 ]; + dataTypes.unshift( tmp[ 1 ] ); + } + break; + } + } + } + } + + // Apply converter (if not an equivalence) + if ( conv !== true ) { + + // Unless errors are allowed to bubble, catch and return them + if ( conv && s.throws ) { + response = conv( response ); + } else { + try { + response = conv( response ); + } catch ( e ) { + return { + state: "parsererror", + error: conv ? e : "No conversion from " + prev + " to " + current + }; + } + } + } + } + } + } + + return { state: "success", data: response }; +} + +jQuery.extend( { + + // Counter for holding the number of active queries + active: 0, + + // Last-Modified header cache for next request + lastModified: {}, + etag: {}, + + ajaxSettings: { + url: location.href, + type: "GET", + isLocal: rlocalProtocol.test( location.protocol ), + global: true, + processData: true, + async: true, + contentType: "application/x-www-form-urlencoded; charset=UTF-8", + + /* + timeout: 0, + data: null, + dataType: null, + username: null, + password: null, + cache: null, + throws: false, + traditional: false, + headers: {}, + */ + + accepts: { + "*": allTypes, + text: "text/plain", + html: "text/html", + xml: "application/xml, text/xml", + json: "application/json, text/javascript" + }, + + contents: { + xml: /\bxml\b/, + html: /\bhtml/, + json: /\bjson\b/ + }, + + responseFields: { + xml: "responseXML", + text: "responseText", + json: "responseJSON" + }, + + // Data converters + // Keys separate source (or catchall "*") and destination types with a single space + converters: { + + // Convert anything to text + "* text": String, + + // Text to html (true = no transformation) + "text html": true, + + // Evaluate text as a json expression + "text json": JSON.parse, + + // Parse text as xml + "text xml": jQuery.parseXML + }, + + // For options that shouldn't be deep extended: + // you can add your own custom options here if + // and when you create one that shouldn't be + // deep extended (see ajaxExtend) + flatOptions: { + url: true, + context: true + } + }, + + // Creates a full fledged settings object into target + // with both ajaxSettings and settings fields. + // If target is omitted, writes into ajaxSettings. + ajaxSetup: function( target, settings ) { + return settings ? + + // Building a settings object + ajaxExtend( ajaxExtend( target, jQuery.ajaxSettings ), settings ) : + + // Extending ajaxSettings + ajaxExtend( jQuery.ajaxSettings, target ); + }, + + ajaxPrefilter: addToPrefiltersOrTransports( prefilters ), + ajaxTransport: addToPrefiltersOrTransports( transports ), + + // Main method + ajax: function( url, options ) { + + // If url is an object, simulate pre-1.5 signature + if ( typeof url === "object" ) { + options = url; + url = undefined; + } + + // Force options to be an object + options = options || {}; + + var transport, + + // URL without anti-cache param + cacheURL, + + // Response headers + responseHeadersString, + responseHeaders, + + // timeout handle + timeoutTimer, + + // Url cleanup var + urlAnchor, + + // Request state (becomes false upon send and true upon completion) + completed, + + // To know if global events are to be dispatched + fireGlobals, + + // Loop variable + i, + + // uncached part of the url + uncached, + + // Create the final options object + s = jQuery.ajaxSetup( {}, options ), + + // Callbacks context + callbackContext = s.context || s, + + // Context for global events is callbackContext if it is a DOM node or jQuery collection + globalEventContext = s.context && + ( callbackContext.nodeType || callbackContext.jquery ) ? + jQuery( callbackContext ) : + jQuery.event, + + // Deferreds + deferred = jQuery.Deferred(), + completeDeferred = jQuery.Callbacks( "once memory" ), + + // Status-dependent callbacks + statusCode = s.statusCode || {}, + + // Headers (they are sent all at once) + requestHeaders = {}, + requestHeadersNames = {}, + + // Default abort message + strAbort = "canceled", + + // Fake xhr + jqXHR = { + readyState: 0, + + // Builds headers hashtable if needed + getResponseHeader: function( key ) { + var match; + if ( completed ) { + if ( !responseHeaders ) { + responseHeaders = {}; + while ( ( match = rheaders.exec( responseHeadersString ) ) ) { + responseHeaders[ match[ 1 ].toLowerCase() ] = match[ 2 ]; + } + } + match = responseHeaders[ key.toLowerCase() ]; + } + return match == null ? null : match; + }, + + // Raw string + getAllResponseHeaders: function() { + return completed ? responseHeadersString : null; + }, + + // Caches the header + setRequestHeader: function( name, value ) { + if ( completed == null ) { + name = requestHeadersNames[ name.toLowerCase() ] = + requestHeadersNames[ name.toLowerCase() ] || name; + requestHeaders[ name ] = value; + } + return this; + }, + + // Overrides response content-type header + overrideMimeType: function( type ) { + if ( completed == null ) { + s.mimeType = type; + } + return this; + }, + + // Status-dependent callbacks + statusCode: function( map ) { + var code; + if ( map ) { + if ( completed ) { + + // Execute the appropriate callbacks + jqXHR.always( map[ jqXHR.status ] ); + } else { + + // Lazy-add the new callbacks in a way that preserves old ones + for ( code in map ) { + statusCode[ code ] = [ statusCode[ code ], map[ code ] ]; + } + } + } + return this; + }, + + // Cancel the request + abort: function( statusText ) { + var finalText = statusText || strAbort; + if ( transport ) { + transport.abort( finalText ); + } + done( 0, finalText ); + return this; + } + }; + + // Attach deferreds + deferred.promise( jqXHR ); + + // Add protocol if not provided (prefilters might expect it) + // Handle falsy url in the settings object (#10093: consistency with old signature) + // We also use the url parameter if available + s.url = ( ( url || s.url || location.href ) + "" ) + .replace( rprotocol, location.protocol + "//" ); + + // Alias method option to type as per ticket #12004 + s.type = options.method || options.type || s.method || s.type; + + // Extract dataTypes list + s.dataTypes = ( s.dataType || "*" ).toLowerCase().match( rnothtmlwhite ) || [ "" ]; + + // A cross-domain request is in order when the origin doesn't match the current origin. + if ( s.crossDomain == null ) { + urlAnchor = document.createElement( "a" ); + + // Support: IE <=8 - 11, Edge 12 - 13 + // IE throws exception on accessing the href property if url is malformed, + // e.g. http://example.com:80x/ + try { + urlAnchor.href = s.url; + + // Support: IE <=8 - 11 only + // Anchor's host property isn't correctly set when s.url is relative + urlAnchor.href = urlAnchor.href; + s.crossDomain = originAnchor.protocol + "//" + originAnchor.host !== + urlAnchor.protocol + "//" + urlAnchor.host; + } catch ( e ) { + + // If there is an error parsing the URL, assume it is crossDomain, + // it can be rejected by the transport if it is invalid + s.crossDomain = true; + } + } + + // Convert data if not already a string + if ( s.data && s.processData && typeof s.data !== "string" ) { + s.data = jQuery.param( s.data, s.traditional ); + } + + // Apply prefilters + inspectPrefiltersOrTransports( prefilters, s, options, jqXHR ); + + // If request was aborted inside a prefilter, stop there + if ( completed ) { + return jqXHR; + } + + // We can fire global events as of now if asked to + // Don't fire events if jQuery.event is undefined in an AMD-usage scenario (#15118) + fireGlobals = jQuery.event && s.global; + + // Watch for a new set of requests + if ( fireGlobals && jQuery.active++ === 0 ) { + jQuery.event.trigger( "ajaxStart" ); + } + + // Uppercase the type + s.type = s.type.toUpperCase(); + + // Determine if request has content + s.hasContent = !rnoContent.test( s.type ); + + // Save the URL in case we're toying with the If-Modified-Since + // and/or If-None-Match header later on + // Remove hash to simplify url manipulation + cacheURL = s.url.replace( rhash, "" ); + + // More options handling for requests with no content + if ( !s.hasContent ) { + + // Remember the hash so we can put it back + uncached = s.url.slice( cacheURL.length ); + + // If data is available, append data to url + if ( s.data ) { + cacheURL += ( rquery.test( cacheURL ) ? "&" : "?" ) + s.data; + + // #9682: remove data so that it's not used in an eventual retry + delete s.data; + } + + // Add or update anti-cache param if needed + if ( s.cache === false ) { + cacheURL = cacheURL.replace( rantiCache, "$1" ); + uncached = ( rquery.test( cacheURL ) ? "&" : "?" ) + "_=" + ( nonce++ ) + uncached; + } + + // Put hash and anti-cache on the URL that will be requested (gh-1732) + s.url = cacheURL + uncached; + + // Change '%20' to '+' if this is encoded form body content (gh-2658) + } else if ( s.data && s.processData && + ( s.contentType || "" ).indexOf( "application/x-www-form-urlencoded" ) === 0 ) { + s.data = s.data.replace( r20, "+" ); + } + + // Set the If-Modified-Since and/or If-None-Match header, if in ifModified mode. + if ( s.ifModified ) { + if ( jQuery.lastModified[ cacheURL ] ) { + jqXHR.setRequestHeader( "If-Modified-Since", jQuery.lastModified[ cacheURL ] ); + } + if ( jQuery.etag[ cacheURL ] ) { + jqXHR.setRequestHeader( "If-None-Match", jQuery.etag[ cacheURL ] ); + } + } + + // Set the correct header, if data is being sent + if ( s.data && s.hasContent && s.contentType !== false || options.contentType ) { + jqXHR.setRequestHeader( "Content-Type", s.contentType ); + } + + // Set the Accepts header for the server, depending on the dataType + jqXHR.setRequestHeader( + "Accept", + s.dataTypes[ 0 ] && s.accepts[ s.dataTypes[ 0 ] ] ? + s.accepts[ s.dataTypes[ 0 ] ] + + ( s.dataTypes[ 0 ] !== "*" ? ", " + allTypes + "; q=0.01" : "" ) : + s.accepts[ "*" ] + ); + + // Check for headers option + for ( i in s.headers ) { + jqXHR.setRequestHeader( i, s.headers[ i ] ); + } + + // Allow custom headers/mimetypes and early abort + if ( s.beforeSend && + ( s.beforeSend.call( callbackContext, jqXHR, s ) === false || completed ) ) { + + // Abort if not done already and return + return jqXHR.abort(); + } + + // Aborting is no longer a cancellation + strAbort = "abort"; + + // Install callbacks on deferreds + completeDeferred.add( s.complete ); + jqXHR.done( s.success ); + jqXHR.fail( s.error ); + + // Get transport + transport = inspectPrefiltersOrTransports( transports, s, options, jqXHR ); + + // If no transport, we auto-abort + if ( !transport ) { + done( -1, "No Transport" ); + } else { + jqXHR.readyState = 1; + + // Send global event + if ( fireGlobals ) { + globalEventContext.trigger( "ajaxSend", [ jqXHR, s ] ); + } + + // If request was aborted inside ajaxSend, stop there + if ( completed ) { + return jqXHR; + } + + // Timeout + if ( s.async && s.timeout > 0 ) { + timeoutTimer = window.setTimeout( function() { + jqXHR.abort( "timeout" ); + }, s.timeout ); + } + + try { + completed = false; + transport.send( requestHeaders, done ); + } catch ( e ) { + + // Rethrow post-completion exceptions + if ( completed ) { + throw e; + } + + // Propagate others as results + done( -1, e ); + } + } + + // Callback for when everything is done + function done( status, nativeStatusText, responses, headers ) { + var isSuccess, success, error, response, modified, + statusText = nativeStatusText; + + // Ignore repeat invocations + if ( completed ) { + return; + } + + completed = true; + + // Clear timeout if it exists + if ( timeoutTimer ) { + window.clearTimeout( timeoutTimer ); + } + + // Dereference transport for early garbage collection + // (no matter how long the jqXHR object will be used) + transport = undefined; + + // Cache response headers + responseHeadersString = headers || ""; + + // Set readyState + jqXHR.readyState = status > 0 ? 4 : 0; + + // Determine if successful + isSuccess = status >= 200 && status < 300 || status === 304; + + // Get response data + if ( responses ) { + response = ajaxHandleResponses( s, jqXHR, responses ); + } + + // Convert no matter what (that way responseXXX fields are always set) + response = ajaxConvert( s, response, jqXHR, isSuccess ); + + // If successful, handle type chaining + if ( isSuccess ) { + + // Set the If-Modified-Since and/or If-None-Match header, if in ifModified mode. + if ( s.ifModified ) { + modified = jqXHR.getResponseHeader( "Last-Modified" ); + if ( modified ) { + jQuery.lastModified[ cacheURL ] = modified; + } + modified = jqXHR.getResponseHeader( "etag" ); + if ( modified ) { + jQuery.etag[ cacheURL ] = modified; + } + } + + // if no content + if ( status === 204 || s.type === "HEAD" ) { + statusText = "nocontent"; + + // if not modified + } else if ( status === 304 ) { + statusText = "notmodified"; + + // If we have data, let's convert it + } else { + statusText = response.state; + success = response.data; + error = response.error; + isSuccess = !error; + } + } else { + + // Extract error from statusText and normalize for non-aborts + error = statusText; + if ( status || !statusText ) { + statusText = "error"; + if ( status < 0 ) { + status = 0; + } + } + } + + // Set data for the fake xhr object + jqXHR.status = status; + jqXHR.statusText = ( nativeStatusText || statusText ) + ""; + + // Success/Error + if ( isSuccess ) { + deferred.resolveWith( callbackContext, [ success, statusText, jqXHR ] ); + } else { + deferred.rejectWith( callbackContext, [ jqXHR, statusText, error ] ); + } + + // Status-dependent callbacks + jqXHR.statusCode( statusCode ); + statusCode = undefined; + + if ( fireGlobals ) { + globalEventContext.trigger( isSuccess ? "ajaxSuccess" : "ajaxError", + [ jqXHR, s, isSuccess ? success : error ] ); + } + + // Complete + completeDeferred.fireWith( callbackContext, [ jqXHR, statusText ] ); + + if ( fireGlobals ) { + globalEventContext.trigger( "ajaxComplete", [ jqXHR, s ] ); + + // Handle the global AJAX counter + if ( !( --jQuery.active ) ) { + jQuery.event.trigger( "ajaxStop" ); + } + } + } + + return jqXHR; + }, + + getJSON: function( url, data, callback ) { + return jQuery.get( url, data, callback, "json" ); + }, + + getScript: function( url, callback ) { + return jQuery.get( url, undefined, callback, "script" ); + } +} ); + +jQuery.each( [ "get", "post" ], function( i, method ) { + jQuery[ method ] = function( url, data, callback, type ) { + + // Shift arguments if data argument was omitted + if ( jQuery.isFunction( data ) ) { + type = type || callback; + callback = data; + data = undefined; + } + + // The url can be an options object (which then must have .url) + return jQuery.ajax( jQuery.extend( { + url: url, + type: method, + dataType: type, + data: data, + success: callback + }, jQuery.isPlainObject( url ) && url ) ); + }; +} ); + + +jQuery._evalUrl = function( url ) { + return jQuery.ajax( { + url: url, + + // Make this explicit, since user can override this through ajaxSetup (#11264) + type: "GET", + dataType: "script", + cache: true, + async: false, + global: false, + "throws": true + } ); +}; + + +jQuery.fn.extend( { + wrapAll: function( html ) { + var wrap; + + if ( this[ 0 ] ) { + if ( jQuery.isFunction( html ) ) { + html = html.call( this[ 0 ] ); + } + + // The elements to wrap the target around + wrap = jQuery( html, this[ 0 ].ownerDocument ).eq( 0 ).clone( true ); + + if ( this[ 0 ].parentNode ) { + wrap.insertBefore( this[ 0 ] ); + } + + wrap.map( function() { + var elem = this; + + while ( elem.firstElementChild ) { + elem = elem.firstElementChild; + } + + return elem; + } ).append( this ); + } + + return this; + }, + + wrapInner: function( html ) { + if ( jQuery.isFunction( html ) ) { + return this.each( function( i ) { + jQuery( this ).wrapInner( html.call( this, i ) ); + } ); + } + + return this.each( function() { + var self = jQuery( this ), + contents = self.contents(); + + if ( contents.length ) { + contents.wrapAll( html ); + + } else { + self.append( html ); + } + } ); + }, + + wrap: function( html ) { + var isFunction = jQuery.isFunction( html ); + + return this.each( function( i ) { + jQuery( this ).wrapAll( isFunction ? html.call( this, i ) : html ); + } ); + }, + + unwrap: function( selector ) { + this.parent( selector ).not( "body" ).each( function() { + jQuery( this ).replaceWith( this.childNodes ); + } ); + return this; + } +} ); + + +jQuery.expr.pseudos.hidden = function( elem ) { + return !jQuery.expr.pseudos.visible( elem ); +}; +jQuery.expr.pseudos.visible = function( elem ) { + return !!( elem.offsetWidth || elem.offsetHeight || elem.getClientRects().length ); +}; + + + + +jQuery.ajaxSettings.xhr = function() { + try { + return new window.XMLHttpRequest(); + } catch ( e ) {} +}; + +var xhrSuccessStatus = { + + // File protocol always yields status code 0, assume 200 + 0: 200, + + // Support: IE <=9 only + // #1450: sometimes IE returns 1223 when it should be 204 + 1223: 204 + }, + xhrSupported = jQuery.ajaxSettings.xhr(); + +support.cors = !!xhrSupported && ( "withCredentials" in xhrSupported ); +support.ajax = xhrSupported = !!xhrSupported; + +jQuery.ajaxTransport( function( options ) { + var callback, errorCallback; + + // Cross domain only allowed if supported through XMLHttpRequest + if ( support.cors || xhrSupported && !options.crossDomain ) { + return { + send: function( headers, complete ) { + var i, + xhr = options.xhr(); + + xhr.open( + options.type, + options.url, + options.async, + options.username, + options.password + ); + + // Apply custom fields if provided + if ( options.xhrFields ) { + for ( i in options.xhrFields ) { + xhr[ i ] = options.xhrFields[ i ]; + } + } + + // Override mime type if needed + if ( options.mimeType && xhr.overrideMimeType ) { + xhr.overrideMimeType( options.mimeType ); + } + + // X-Requested-With header + // For cross-domain requests, seeing as conditions for a preflight are + // akin to a jigsaw puzzle, we simply never set it to be sure. + // (it can always be set on a per-request basis or even using ajaxSetup) + // For same-domain requests, won't change header if already provided. + if ( !options.crossDomain && !headers[ "X-Requested-With" ] ) { + headers[ "X-Requested-With" ] = "XMLHttpRequest"; + } + + // Set headers + for ( i in headers ) { + xhr.setRequestHeader( i, headers[ i ] ); + } + + // Callback + callback = function( type ) { + return function() { + if ( callback ) { + callback = errorCallback = xhr.onload = + xhr.onerror = xhr.onabort = xhr.onreadystatechange = null; + + if ( type === "abort" ) { + xhr.abort(); + } else if ( type === "error" ) { + + // Support: IE <=9 only + // On a manual native abort, IE9 throws + // errors on any property access that is not readyState + if ( typeof xhr.status !== "number" ) { + complete( 0, "error" ); + } else { + complete( + + // File: protocol always yields status 0; see #8605, #14207 + xhr.status, + xhr.statusText + ); + } + } else { + complete( + xhrSuccessStatus[ xhr.status ] || xhr.status, + xhr.statusText, + + // Support: IE <=9 only + // IE9 has no XHR2 but throws on binary (trac-11426) + // For XHR2 non-text, let the caller handle it (gh-2498) + ( xhr.responseType || "text" ) !== "text" || + typeof xhr.responseText !== "string" ? + { binary: xhr.response } : + { text: xhr.responseText }, + xhr.getAllResponseHeaders() + ); + } + } + }; + }; + + // Listen to events + xhr.onload = callback(); + errorCallback = xhr.onerror = callback( "error" ); + + // Support: IE 9 only + // Use onreadystatechange to replace onabort + // to handle uncaught aborts + if ( xhr.onabort !== undefined ) { + xhr.onabort = errorCallback; + } else { + xhr.onreadystatechange = function() { + + // Check readyState before timeout as it changes + if ( xhr.readyState === 4 ) { + + // Allow onerror to be called first, + // but that will not handle a native abort + // Also, save errorCallback to a variable + // as xhr.onerror cannot be accessed + window.setTimeout( function() { + if ( callback ) { + errorCallback(); + } + } ); + } + }; + } + + // Create the abort callback + callback = callback( "abort" ); + + try { + + // Do send the request (this may raise an exception) + xhr.send( options.hasContent && options.data || null ); + } catch ( e ) { + + // #14683: Only rethrow if this hasn't been notified as an error yet + if ( callback ) { + throw e; + } + } + }, + + abort: function() { + if ( callback ) { + callback(); + } + } + }; + } +} ); + + + + +// Prevent auto-execution of scripts when no explicit dataType was provided (See gh-2432) +jQuery.ajaxPrefilter( function( s ) { + if ( s.crossDomain ) { + s.contents.script = false; + } +} ); + +// Install script dataType +jQuery.ajaxSetup( { + accepts: { + script: "text/javascript, application/javascript, " + + "application/ecmascript, application/x-ecmascript" + }, + contents: { + script: /\b(?:java|ecma)script\b/ + }, + converters: { + "text script": function( text ) { + jQuery.globalEval( text ); + return text; + } + } +} ); + +// Handle cache's special case and crossDomain +jQuery.ajaxPrefilter( "script", function( s ) { + if ( s.cache === undefined ) { + s.cache = false; + } + if ( s.crossDomain ) { + s.type = "GET"; + } +} ); + +// Bind script tag hack transport +jQuery.ajaxTransport( "script", function( s ) { + + // This transport only deals with cross domain requests + if ( s.crossDomain ) { + var script, callback; + return { + send: function( _, complete ) { + script = jQuery( " + + + + + + +
+ + + + +
+ + + + + +
+ +
+ + + + + + + + + + + + + + + + + +
+ + + + +
+
+
+
+ +
+

com package

+
+

Subpackages

+
+ +
+
+
+ + +
+ +
+ + +
+
+ +
+ +
+ + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/nsx/nsx_policy/com.vmware.html b/nsx/nsx_policy/com.vmware.html new file mode 100644 index 00000000..e1a75dca --- /dev/null +++ b/nsx/nsx_policy/com.vmware.html @@ -0,0 +1,1318 @@ + + + + + + + + + + + com.vmware package — NSX-T Policy SDK 2.2.0.0.0 documentation + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + + + +
+ + + + + +
+ +
+ + + + + + + + + + + + + + + + + +
+ + + + +
+
+
+
+ +
+

com.vmware package

+
+

Subpackages

+
+ +
+
+
+

Submodules

+
+
+

com.vmware.nsx_policy_client module

+
+
+class com.vmware.nsx_policy_client.Batch(config)
+

Bases: vmware.vapi.bindings.stub.VapiInterface

+
+
+create(batch_request, atomic=None)
+

Enables you to make multiple API requests using a single request. The +batch API takes in an array of logical HTTP requests represented as +JSON arrays. Each request has a method (GET, PUT, POST, or DELETE), a +relative_url (the portion of the URL after https://<nsx-mgr>/api/), +optional headers array (corresponding to HTTP headers) and an optional +body (for POST and PUT requests). The batch API returns an array of +logical HTTP responses represented as JSON arrays. Each response has a +status code, an optional headers array and an optional body (which is a +JSON-encoded string).

+ +++ + + + + + + + + + + + + + + + + + +
Parameters: +
Return type:

com.vmware.nsx_policy.model_client.BatchResponse

+
Returns:

com.vmware.nsx_policy.model.BatchResponse

+
Raise:

com.vmware.vapi.std.errors_client.ServiceUnavailable +Service Unavailable

+
Raise:

com.vmware.vapi.std.errors_client.InvalidRequest +Bad Request, Precondition Failed

+
Raise:

com.vmware.vapi.std.errors_client.InternalServerError +Internal Server Error

+
Raise:

com.vmware.vapi.std.errors_client.Unauthorized +Forbidden

+
Raise:

com.vmware.vapi.std.errors_client.NotFound +Not Found

+
+
+ +
+ +
+
+class com.vmware.nsx_policy_client.Cluster(config)
+

Bases: vmware.vapi.bindings.stub.VapiInterface

+
+
+backuptoremote()
+

Request one-time backup. The backup will be uploaded using the same +server configuration as for automatic backup.

+ +++ + + + + + + + + + + + +
Raise:com.vmware.vapi.std.errors_client.ServiceUnavailable +Service Unavailable
Raise:com.vmware.vapi.std.errors_client.InvalidRequest +Bad Request, Precondition Failed
Raise:com.vmware.vapi.std.errors_client.InternalServerError +Internal Server Error
Raise:com.vmware.vapi.std.errors_client.Unauthorized +Forbidden
Raise:com.vmware.vapi.std.errors_client.NotFound +Not Found
+
+ +
+
+get()
+

Returns information about the NSX cluster configuration. An NSX cluster +has two functions or purposes, commonly referred to as "roles." +These two roles are control and management. Each NSX installation has a +single cluster. Separate NSX clusters do not share data. In other +words, a given data-plane node is attached to only one cluster, not to +multiple clusters.

+ +++ + + + + + + + + + + + + + + + +
Return type:com.vmware.nsx_policy.model_client.ClusterConfig
Returns:com.vmware.nsx_policy.model.ClusterConfig
Raise:com.vmware.vapi.std.errors_client.ServiceUnavailable +Service Unavailable
Raise:com.vmware.vapi.std.errors_client.InvalidRequest +Bad Request, Precondition Failed
Raise:com.vmware.vapi.std.errors_client.InternalServerError +Internal Server Error
Raise:com.vmware.vapi.std.errors_client.Unauthorized +Forbidden
Raise:com.vmware.vapi.std.errors_client.NotFound +Not Found
+
+ +
+
+summarizeinventorytoremote()
+

Request one-time inventory summary. The backup will be uploaded using +the same server configuration as for an automatic backup.

+ +++ + + + + + + + + + + + +
Raise:com.vmware.vapi.std.errors_client.ServiceUnavailable +Service Unavailable
Raise:com.vmware.vapi.std.errors_client.InvalidRequest +Bad Request, Precondition Failed
Raise:com.vmware.vapi.std.errors_client.InternalServerError +Internal Server Error
Raise:com.vmware.vapi.std.errors_client.Unauthorized +Forbidden
Raise:com.vmware.vapi.std.errors_client.NotFound +Not Found
+
+ +
+
+update(cluster_config)
+

Modifies the NSX cluster configuration.

+ +++ + + + + + + + + + + + + + + + + + +
Parameters:cluster_config (com.vmware.nsx_policy.model_client.ClusterConfig) – (required)
Return type:com.vmware.nsx_policy.model_client.ClusterConfig
Returns:com.vmware.nsx_policy.model.ClusterConfig
Raise:com.vmware.vapi.std.errors_client.ServiceUnavailable +Service Unavailable
Raise:com.vmware.vapi.std.errors_client.InvalidRequest +Bad Request, Precondition Failed
Raise:com.vmware.vapi.std.errors_client.InternalServerError +Internal Server Error
Raise:com.vmware.vapi.std.errors_client.Unauthorized +Forbidden
Raise:com.vmware.vapi.std.errors_client.NotFound +Not Found
+
+ +
+ +
+
+class com.vmware.nsx_policy_client.ErrorResolver(config)
+

Bases: vmware.vapi.bindings.stub.VapiInterface

+
+
+get(error_id)
+

Returns some metadata about the given error_id. This includes +information of whether there is a resolver present for the given +error_id and its associated user input data

+ +++ + + + + + + + + + + + + + + + + + +
Parameters:error_id (str) – (required)
Return type:com.vmware.nsx_policy.model_client.ErrorResolverInfo
Returns:com.vmware.nsx_policy.model.ErrorResolverInfo
Raise:com.vmware.vapi.std.errors_client.ServiceUnavailable +Service Unavailable
Raise:com.vmware.vapi.std.errors_client.InvalidRequest +Bad Request, Precondition Failed
Raise:com.vmware.vapi.std.errors_client.InternalServerError +Internal Server Error
Raise:com.vmware.vapi.std.errors_client.Unauthorized +Forbidden
Raise:com.vmware.vapi.std.errors_client.NotFound +Not Found
+
+ +
+
+list()
+

Returns a list of metadata for all the error resolvers registered.

+ +++ + + + + + + + + + + + + + + + +
Return type:com.vmware.nsx_policy.model_client.ErrorResolverInfoList
Returns:com.vmware.nsx_policy.model.ErrorResolverInfoList
Raise:com.vmware.vapi.std.errors_client.ServiceUnavailable +Service Unavailable
Raise:com.vmware.vapi.std.errors_client.InvalidRequest +Bad Request, Precondition Failed
Raise:com.vmware.vapi.std.errors_client.InternalServerError +Internal Server Error
Raise:com.vmware.vapi.std.errors_client.Unauthorized +Forbidden
Raise:com.vmware.vapi.std.errors_client.NotFound +Not Found
+
+ +
+
+resolveerror(error_resolver_metadata_list)
+

Invokes the corresponding error resolver for the given error(s) present +in the payload

+ +++ + + + + + + + + + + + + + +
Parameters:error_resolver_metadata_list (com.vmware.nsx_policy.model_client.ErrorResolverMetadataList) – (required)
Raise:com.vmware.vapi.std.errors_client.ServiceUnavailable +Service Unavailable
Raise:com.vmware.vapi.std.errors_client.InvalidRequest +Bad Request, Precondition Failed
Raise:com.vmware.vapi.std.errors_client.InternalServerError +Internal Server Error
Raise:com.vmware.vapi.std.errors_client.Unauthorized +Forbidden
Raise:com.vmware.vapi.std.errors_client.NotFound +Not Found
+
+ +
+ +
+
+class com.vmware.nsx_policy_client.Infra(config)
+

Bases: vmware.vapi.bindings.stub.VapiInterface

+
+
+get(filter=None)
+

Read infra. Returns only the infra related properties. Inner object are +not populated.

+ +++ + + + + + + + + + + + + + + + + + +
Parameters:filter (str or None) – Filter string as java regex (optional)
Return type:com.vmware.nsx_policy.model_client.Infra
Returns:com.vmware.nsx_policy.model.Infra
Raise:com.vmware.vapi.std.errors_client.ServiceUnavailable +Service Unavailable
Raise:com.vmware.vapi.std.errors_client.InvalidRequest +Bad Request, Precondition Failed
Raise:com.vmware.vapi.std.errors_client.InternalServerError +Internal Server Error
Raise:com.vmware.vapi.std.errors_client.Unauthorized +Forbidden
Raise:com.vmware.vapi.std.errors_client.NotFound +Not Found
+
+ +
+
+patch(infra)
+

Update the infra including all the nested entities

+ +++ + + + + + + + + + + + + + +
Parameters:infra (com.vmware.nsx_policy.model_client.Infra) – (required)
Raise:com.vmware.vapi.std.errors_client.ServiceUnavailable +Service Unavailable
Raise:com.vmware.vapi.std.errors_client.InvalidRequest +Bad Request, Precondition Failed
Raise:com.vmware.vapi.std.errors_client.InternalServerError +Internal Server Error
Raise:com.vmware.vapi.std.errors_client.Unauthorized +Forbidden
Raise:com.vmware.vapi.std.errors_client.NotFound +Not Found
+
+ +
+
+update(infra)
+

Update the infra including all the nested entities

+ +++ + + + + + + + + + + + + + + + + + +
Parameters:infra (com.vmware.nsx_policy.model_client.Infra) – (required)
Return type:com.vmware.nsx_policy.model_client.Infra
Returns:com.vmware.nsx_policy.model.Infra
Raise:com.vmware.vapi.std.errors_client.ServiceUnavailable +Service Unavailable
Raise:com.vmware.vapi.std.errors_client.InvalidRequest +Bad Request, Precondition Failed
Raise:com.vmware.vapi.std.errors_client.InternalServerError +Internal Server Error
Raise:com.vmware.vapi.std.errors_client.Unauthorized +Forbidden
Raise:com.vmware.vapi.std.errors_client.NotFound +Not Found
+
+ +
+ +
+
+class com.vmware.nsx_policy_client.Licenses(config)
+

Bases: vmware.vapi.bindings.stub.VapiInterface

+
+
+create(license)
+

This will add a license key to the system. The API supports adding only +one license key for each license edition type - Standard, Advanced or +Enterprise. If a new license key is tried to add for an edition for +which the license key already exists, then this API will return an +error.

+ +++ + + + + + + + + + + + + + + + + + +
Parameters:license (com.vmware.nsx_policy.model_client.License) – (required)
Return type:com.vmware.nsx_policy.model_client.License
Returns:com.vmware.nsx_policy.model.License
Raise:com.vmware.vapi.std.errors_client.ServiceUnavailable +Service Unavailable
Raise:com.vmware.vapi.std.errors_client.InvalidRequest +Bad Request, Precondition Failed
Raise:com.vmware.vapi.std.errors_client.InternalServerError +Internal Server Error
Raise:com.vmware.vapi.std.errors_client.Unauthorized +Forbidden
Raise:com.vmware.vapi.std.errors_client.NotFound +Not Found
+
+ +
+
+delete(license_key)
+

Deprecated. Use POST /licenses?action=delete API instead.

+ +++ + + + + + + + + + + + + + +
Parameters:license_key (str) – (required)
Raise:com.vmware.vapi.std.errors_client.ServiceUnavailable +Service Unavailable
Raise:com.vmware.vapi.std.errors_client.InvalidRequest +Bad Request, Precondition Failed
Raise:com.vmware.vapi.std.errors_client.InternalServerError +Internal Server Error
Raise:com.vmware.vapi.std.errors_client.Unauthorized +Forbidden
Raise:com.vmware.vapi.std.errors_client.NotFound +Not Found
+
+ +
+
+delete_0(license)
+

This will delete the license key identified in the request body by +"license_key" and its properties from the system. Attempting to +delete the last license key will result in an error.

+ +++ + + + + + + + + + + + + + +
Parameters:license (com.vmware.nsx_policy.model_client.License) – (required)
Raise:com.vmware.vapi.std.errors_client.ServiceUnavailable +Service Unavailable
Raise:com.vmware.vapi.std.errors_client.InvalidRequest +Bad Request, Precondition Failed
Raise:com.vmware.vapi.std.errors_client.InternalServerError +Internal Server Error
Raise:com.vmware.vapi.std.errors_client.Unauthorized +Forbidden
Raise:com.vmware.vapi.std.errors_client.NotFound +Not Found
+
+ +
+
+get()
+

Deprecated. Use the GET /licenses API instead.

+ +++ + + + + + + + + + + + + + + + +
Return type:com.vmware.nsx_policy.model_client.License
Returns:com.vmware.nsx_policy.model.License
Raise:com.vmware.vapi.std.errors_client.ServiceUnavailable +Service Unavailable
Raise:com.vmware.vapi.std.errors_client.InvalidRequest +Bad Request, Precondition Failed
Raise:com.vmware.vapi.std.errors_client.InternalServerError +Internal Server Error
Raise:com.vmware.vapi.std.errors_client.Unauthorized +Forbidden
Raise:com.vmware.vapi.std.errors_client.NotFound +Not Found
+
+ +
+
+getlicensebykey(license_key)
+

Deprecated. Use GET /licenses API instead.

+ +++ + + + + + + + + + + + + + + + + + +
Parameters:license_key (str) – (required)
Return type:com.vmware.nsx_policy.model_client.License
Returns:com.vmware.nsx_policy.model.License
Raise:com.vmware.vapi.std.errors_client.ServiceUnavailable +Service Unavailable
Raise:com.vmware.vapi.std.errors_client.InvalidRequest +Bad Request, Precondition Failed
Raise:com.vmware.vapi.std.errors_client.InternalServerError +Internal Server Error
Raise:com.vmware.vapi.std.errors_client.Unauthorized +Forbidden
Raise:com.vmware.vapi.std.errors_client.NotFound +Not Found
+
+ +
+
+list()
+

Returns all licenses.

+ +++ + + + + + + + + + + + + + + + +
Return type:com.vmware.nsx_policy.model_client.LicensesListResult
Returns:com.vmware.nsx_policy.model.LicensesListResult
Raise:com.vmware.vapi.std.errors_client.ServiceUnavailable +Service Unavailable
Raise:com.vmware.vapi.std.errors_client.InvalidRequest +Bad Request, Precondition Failed
Raise:com.vmware.vapi.std.errors_client.InternalServerError +Internal Server Error
Raise:com.vmware.vapi.std.errors_client.Unauthorized +Forbidden
Raise:com.vmware.vapi.std.errors_client.NotFound +Not Found
+
+ +
+
+update(license)
+

Deprecated. Use the POST /licenses API instead

+ +++ + + + + + + + + + + + + + + + + + +
Parameters:license (com.vmware.nsx_policy.model_client.License) – (required)
Return type:com.vmware.nsx_policy.model_client.License
Returns:com.vmware.nsx_policy.model.License
Raise:com.vmware.vapi.std.errors_client.ServiceUnavailable +Service Unavailable
Raise:com.vmware.vapi.std.errors_client.InvalidRequest +Bad Request, Precondition Failed
Raise:com.vmware.vapi.std.errors_client.InternalServerError +Internal Server Error
Raise:com.vmware.vapi.std.errors_client.Unauthorized +Forbidden
Raise:com.vmware.vapi.std.errors_client.NotFound +Not Found
+
+ +
+ +
+
+class com.vmware.nsx_policy_client.StubFactory(stub_config)
+

Bases: vmware.vapi.bindings.stub.StubFactoryBase

+
+ +
+
+class com.vmware.nsx_policy_client.Tasks(config)
+

Bases: vmware.vapi.bindings.stub.VapiInterface

+
+
+get(task_id)
+

Get information about the specified task

+ +++ + + + + + + + + + + + + + + + + + +
Parameters:task_id (str) – ID of task to read (required)
Return type:com.vmware.nsx_policy.model_client.TaskProperties
Returns:com.vmware.nsx_policy.model.TaskProperties
Raise:com.vmware.vapi.std.errors_client.ServiceUnavailable +Service Unavailable
Raise:com.vmware.vapi.std.errors_client.InvalidRequest +Bad Request, Precondition Failed
Raise:com.vmware.vapi.std.errors_client.InternalServerError +Internal Server Error
Raise:com.vmware.vapi.std.errors_client.Unauthorized +Forbidden
Raise:com.vmware.vapi.std.errors_client.NotFound +Not Found
+
+ +
+
+list(cursor=None, included_fields=None, page_size=None, request_uri=None, sort_ascending=None, sort_by=None, status=None, user=None)
+

Get information about all tasks

+ +++ + + + + + + + + + + + + + + + + + +
Parameters:
    +
  • cursor (str or None) – Opaque cursor to be used for getting next page of records (supplied +by current result page) (optional)
  • +
  • included_fields (str or None) – Comma separated list of fields that should be included in query +result (optional)
  • +
  • page_size (long or None) – Maximum number of results to return in this page (server may return +fewer) (optional, default to 1000)
  • +
  • request_uri (str or None) – Request URI(s) to include in query result (optional)
  • +
  • sort_ascending (bool or None) – (optional)
  • +
  • sort_by (str or None) – Field by which records are sorted (optional)
  • +
  • status (str or None) – Status(es) to include in query result (optional)
  • +
  • user (str or None) – Names of users to include in query result (optional)
  • +
+
Return type:

com.vmware.nsx_policy.model_client.TaskListResult

+
Returns:

com.vmware.nsx_policy.model.TaskListResult

+
Raise:

com.vmware.vapi.std.errors_client.ServiceUnavailable +Service Unavailable

+
Raise:

com.vmware.vapi.std.errors_client.InvalidRequest +Bad Request, Precondition Failed

+
Raise:

com.vmware.vapi.std.errors_client.InternalServerError +Internal Server Error

+
Raise:

com.vmware.vapi.std.errors_client.Unauthorized +Forbidden

+
Raise:

com.vmware.vapi.std.errors_client.NotFound +Not Found

+
+
+ +
+ +
+
+class com.vmware.nsx_policy_client.Templates(config)
+

Bases: vmware.vapi.bindings.stub.VapiInterface

+
+
+delete(template_id)
+

Delete a template.

+ +++ + + + + + + + + + + + + + +
Parameters:template_id (str) – Template identifier (required)
Raise:com.vmware.vapi.std.errors_client.ServiceUnavailable +Service Unavailable
Raise:com.vmware.vapi.std.errors_client.InvalidRequest +Bad Request, Precondition Failed
Raise:com.vmware.vapi.std.errors_client.InternalServerError +Internal Server Error
Raise:com.vmware.vapi.std.errors_client.Unauthorized +Forbidden
Raise:com.vmware.vapi.std.errors_client.NotFound +Not Found
+
+ +
+
+deploy(template_id, policy_template_parameters)
+

Read a template, populate the placeholders’ fields with the parameters’ +values, and deploy the template body by creating or updating all the +nested policy objects inside the AbstractSpace object.

+ +++ + + + + + + + + + + + + + +
Parameters: +
Raise:

com.vmware.vapi.std.errors_client.ServiceUnavailable +Service Unavailable

+
Raise:

com.vmware.vapi.std.errors_client.InvalidRequest +Bad Request, Precondition Failed

+
Raise:

com.vmware.vapi.std.errors_client.InternalServerError +Internal Server Error

+
Raise:

com.vmware.vapi.std.errors_client.Unauthorized +Forbidden

+
Raise:

com.vmware.vapi.std.errors_client.NotFound +Not Found

+
+
+ +
+
+get(template_id)
+

Read a template and returns the template properties for a given +template identifier.

+ +++ + + + + + + + + + + + + + + + + + +
Parameters:template_id (str) – Template identifier (required)
Return type:com.vmware.nsx_policy.model_client.PolicyTemplate
Returns:com.vmware.nsx_policy.model.PolicyTemplate
Raise:com.vmware.vapi.std.errors_client.ServiceUnavailable +Service Unavailable
Raise:com.vmware.vapi.std.errors_client.InvalidRequest +Bad Request, Precondition Failed
Raise:com.vmware.vapi.std.errors_client.InternalServerError +Internal Server Error
Raise:com.vmware.vapi.std.errors_client.Unauthorized +Forbidden
Raise:com.vmware.vapi.std.errors_client.NotFound +Not Found
+
+ +
+
+list(cursor=None, included_fields=None, page_size=None, sort_ascending=None, sort_by=None)
+

List Policy Templates

+ +++ + + + + + + + + + + + + + + + + + +
Parameters:
    +
  • cursor (str or None) – Opaque cursor to be used for getting next page of records (supplied +by current result page) (optional)
  • +
  • included_fields (str or None) – Comma separated list of fields that should be included in query +result (optional)
  • +
  • page_size (long or None) – Maximum number of results to return in this page (server may return +fewer) (optional, default to 1000)
  • +
  • sort_ascending (bool or None) – (optional)
  • +
  • sort_by (str or None) – Field by which records are sorted (optional)
  • +
+
Return type:

com.vmware.nsx_policy.model_client.PolicyTemplateListResult

+
Returns:

com.vmware.nsx_policy.model.PolicyTemplateListResult

+
Raise:

com.vmware.vapi.std.errors_client.ServiceUnavailable +Service Unavailable

+
Raise:

com.vmware.vapi.std.errors_client.InvalidRequest +Bad Request, Precondition Failed

+
Raise:

com.vmware.vapi.std.errors_client.InternalServerError +Internal Server Error

+
Raise:

com.vmware.vapi.std.errors_client.Unauthorized +Forbidden

+
Raise:

com.vmware.vapi.std.errors_client.NotFound +Not Found

+
+
+ +
+
+patch(template_id, policy_template)
+

Create a new template if the specified template id does not correspond +to an existing template. Update the template if otherwise.

+ +++ + + + + + + + + + + + + + +
Parameters: +
Raise:

com.vmware.vapi.std.errors_client.ServiceUnavailable +Service Unavailable

+
Raise:

com.vmware.vapi.std.errors_client.InvalidRequest +Bad Request, Precondition Failed

+
Raise:

com.vmware.vapi.std.errors_client.InternalServerError +Internal Server Error

+
Raise:

com.vmware.vapi.std.errors_client.Unauthorized +Forbidden

+
Raise:

com.vmware.vapi.std.errors_client.NotFound +Not Found

+
+
+ +
+ +
+
+class com.vmware.nsx_policy_client.TrustManagement(config)
+

Bases: vmware.vapi.bindings.stub.VapiInterface

+
+
+get()
+

Returns information about the supported algorithms and key sizes.

+ +++ + + + + + + + + + + + + + + + +
Return type:com.vmware.nsx_policy.model_client.TrustManagementData
Returns:com.vmware.nsx_policy.model.TrustManagementData
Raise:com.vmware.vapi.std.errors_client.ServiceUnavailable +Service Unavailable
Raise:com.vmware.vapi.std.errors_client.InvalidRequest +Bad Request, Precondition Failed
Raise:com.vmware.vapi.std.errors_client.InternalServerError +Internal Server Error
Raise:com.vmware.vapi.std.errors_client.Unauthorized +Forbidden
Raise:com.vmware.vapi.std.errors_client.NotFound +Not Found
+
+ +
+ +
+
+ + +
+ +
+ + +
+
+ +
+ +
+ + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/nsx/nsx_policy/com.vmware.nsx_policy.aaa.html b/nsx/nsx_policy/com.vmware.nsx_policy.aaa.html new file mode 100644 index 00000000..3a89559c --- /dev/null +++ b/nsx/nsx_policy/com.vmware.nsx_policy.aaa.html @@ -0,0 +1,435 @@ + + + + + + + + + + + com.vmware.nsx_policy.aaa package — NSX-T Policy SDK 2.2.0.0.0 documentation + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + + + +
+ + + + + +
+ +
+ + + + + + + + + + + + + + + + + +
+ + + + +
+
+
+
+ +
+

com.vmware.nsx_policy.aaa package

+
+

Submodules

+
+
+

com.vmware.nsx_policy.aaa.vidm_client module

+
+
+class com.vmware.nsx_policy.aaa.vidm_client.Groups(config)
+

Bases: vmware.vapi.bindings.stub.VapiInterface

+
+
+list(search_string, cursor=None, included_fields=None, page_size=None, sort_ascending=None, sort_by=None)
+

Get all the User Groups where vIDM display name matches the search key +case insensitively. The search key is checked to be a substring of +display name. This is a non paginated API.

+ +++ + + + + + + + + + + + + + + + + + +
Parameters:
    +
  • search_string (str) – Search string to search for. (required)
  • +
  • cursor (str or None) – Opaque cursor to be used for getting next page of records (supplied +by current result page) (optional)
  • +
  • included_fields (str or None) – Comma separated list of fields that should be included in query +result (optional)
  • +
  • page_size (long or None) – Maximum number of results to return in this page (server may return +fewer) (optional, default to 1000)
  • +
  • sort_ascending (bool or None) – (optional)
  • +
  • sort_by (str or None) – Field by which records are sorted (optional)
  • +
+
Return type:

com.vmware.nsx_policy.model_client.VidmInfoListResult

+
Returns:

com.vmware.nsx_policy.model.VidmInfoListResult

+
Raise:

com.vmware.vapi.std.errors_client.ServiceUnavailable +Service Unavailable

+
Raise:

com.vmware.vapi.std.errors_client.InvalidRequest +Bad Request, Precondition Failed

+
Raise:

com.vmware.vapi.std.errors_client.InternalServerError +Internal Server Error

+
Raise:

com.vmware.vapi.std.errors_client.Unauthorized +Forbidden

+
Raise:

com.vmware.vapi.std.errors_client.NotFound +Not Found

+
+
+ +
+ +
+
+class com.vmware.nsx_policy.aaa.vidm_client.Search(config)
+

Bases: vmware.vapi.bindings.stub.VapiInterface

+
+
+create(search_string, cursor=None, included_fields=None, page_size=None, sort_ascending=None, sort_by=None)
+

Get all the users and groups from vIDM matching the search key case +insensitively. The search key is checked to be a substring of name or +given name or family name of user and display name of group. This is a +non paginated API.

+ +++ + + + + + + + + + + + + + + + + + +
Parameters:
    +
  • search_string (str) – Search string to search for. (required)
  • +
  • cursor (str or None) – Opaque cursor to be used for getting next page of records (supplied +by current result page) (optional)
  • +
  • included_fields (str or None) – Comma separated list of fields that should be included in query +result (optional)
  • +
  • page_size (long or None) – Maximum number of results to return in this page (server may return +fewer) (optional, default to 1000)
  • +
  • sort_ascending (bool or None) – (optional)
  • +
  • sort_by (str or None) – Field by which records are sorted (optional)
  • +
+
Return type:

com.vmware.nsx_policy.model_client.VidmInfoListResult

+
Returns:

com.vmware.nsx_policy.model.VidmInfoListResult

+
Raise:

com.vmware.vapi.std.errors_client.ServiceUnavailable +Service Unavailable

+
Raise:

com.vmware.vapi.std.errors_client.InvalidRequest +Bad Request, Precondition Failed

+
Raise:

com.vmware.vapi.std.errors_client.InternalServerError +Internal Server Error

+
Raise:

com.vmware.vapi.std.errors_client.Unauthorized +Forbidden

+
Raise:

com.vmware.vapi.std.errors_client.NotFound +Not Found

+
+
+ +
+ +
+
+class com.vmware.nsx_policy.aaa.vidm_client.StubFactory(stub_config)
+

Bases: vmware.vapi.bindings.stub.StubFactoryBase

+
+ +
+
+class com.vmware.nsx_policy.aaa.vidm_client.Users(config)
+

Bases: vmware.vapi.bindings.stub.VapiInterface

+
+
+list(search_string, cursor=None, included_fields=None, page_size=None, sort_ascending=None, sort_by=None)
+

Get all the users from vIDM whose userName, givenName or familyName +matches the search key case insensitively. The search key is checked to +be a substring of name or given name or family name. This is a non +paginated API.

+ +++ + + + + + + + + + + + + + + + + + +
Parameters:
    +
  • search_string (str) – Search string to search for. (required)
  • +
  • cursor (str or None) – Opaque cursor to be used for getting next page of records (supplied +by current result page) (optional)
  • +
  • included_fields (str or None) – Comma separated list of fields that should be included in query +result (optional)
  • +
  • page_size (long or None) – Maximum number of results to return in this page (server may return +fewer) (optional, default to 1000)
  • +
  • sort_ascending (bool or None) – (optional)
  • +
  • sort_by (str or None) – Field by which records are sorted (optional)
  • +
+
Return type:

com.vmware.nsx_policy.model_client.VidmInfoListResult

+
Returns:

com.vmware.nsx_policy.model.VidmInfoListResult

+
Raise:

com.vmware.vapi.std.errors_client.ServiceUnavailable +Service Unavailable

+
Raise:

com.vmware.vapi.std.errors_client.InvalidRequest +Bad Request, Precondition Failed

+
Raise:

com.vmware.vapi.std.errors_client.InternalServerError +Internal Server Error

+
Raise:

com.vmware.vapi.std.errors_client.Unauthorized +Forbidden

+
Raise:

com.vmware.vapi.std.errors_client.NotFound +Not Found

+
+
+ +
+ +
+
+ + +
+ +
+ + +
+
+ +
+ +
+ + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/nsx/nsx_policy/com.vmware.nsx_policy.cluster.html b/nsx/nsx_policy/com.vmware.nsx_policy.cluster.html new file mode 100644 index 00000000..15b7c6cb --- /dev/null +++ b/nsx/nsx_policy/com.vmware.nsx_policy.cluster.html @@ -0,0 +1,703 @@ + + + + + + + + + + + com.vmware.nsx_policy.cluster package — NSX-T Policy SDK 2.2.0.0.0 documentation + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + + + +
+ + + + + +
+ +
+ + + + + + + + + + + + + + + + + +
+ + + + +
+
+
+
+ +
+

com.vmware.nsx_policy.cluster package

+
+

Submodules

+
+
+

com.vmware.nsx_policy.cluster.backups_client module

+
+
+class com.vmware.nsx_policy.cluster.backups_client.Config(config)
+

Bases: vmware.vapi.bindings.stub.VapiInterface

+
+
+get()
+

Get a configuration of a file server and timers for automated backup. +Fields that contain secrets (password, passphrase) are not returned.

+ +++ + + + + + + + + + + + + + + + +
Return type:com.vmware.nsx_policy.model_client.BackupConfiguration
Returns:com.vmware.nsx_policy.model.BackupConfiguration
Raise:com.vmware.vapi.std.errors_client.ServiceUnavailable +Service Unavailable
Raise:com.vmware.vapi.std.errors_client.InvalidRequest +Bad Request, Precondition Failed
Raise:com.vmware.vapi.std.errors_client.InternalServerError +Internal Server Error
Raise:com.vmware.vapi.std.errors_client.Unauthorized +Forbidden
Raise:com.vmware.vapi.std.errors_client.NotFound +Not Found
+
+ +
+
+update(backup_configuration)
+

Configure file server and timers for automated backup. If secret fields +are omitted (password, passphrase) then use the previously set value.

+ +++ + + + + + + + + + + + + + + + + + +
Parameters:backup_configuration (com.vmware.nsx_policy.model_client.BackupConfiguration) – (required)
Return type:com.vmware.nsx_policy.model_client.BackupConfiguration
Returns:com.vmware.nsx_policy.model.BackupConfiguration
Raise:com.vmware.vapi.std.errors_client.ServiceUnavailable +Service Unavailable
Raise:com.vmware.vapi.std.errors_client.InvalidRequest +Bad Request, Precondition Failed
Raise:com.vmware.vapi.std.errors_client.InternalServerError +Internal Server Error
Raise:com.vmware.vapi.std.errors_client.Unauthorized +Forbidden
Raise:com.vmware.vapi.std.errors_client.NotFound +Not Found
+
+ +
+ +
+
+class com.vmware.nsx_policy.cluster.backups_client.History(config)
+

Bases: vmware.vapi.bindings.stub.VapiInterface

+
+
+get()
+

Get history of previous backup operations

+ +++ + + + + + + + + + + + + + + + +
Return type:com.vmware.nsx_policy.model_client.BackupOperationHistory
Returns:com.vmware.nsx_policy.model.BackupOperationHistory
Raise:com.vmware.vapi.std.errors_client.ServiceUnavailable +Service Unavailable
Raise:com.vmware.vapi.std.errors_client.InvalidRequest +Bad Request, Precondition Failed
Raise:com.vmware.vapi.std.errors_client.InternalServerError +Internal Server Error
Raise:com.vmware.vapi.std.errors_client.Unauthorized +Forbidden
Raise:com.vmware.vapi.std.errors_client.NotFound +Not Found
+
+ +
+ +
+
+class com.vmware.nsx_policy.cluster.backups_client.Status(config)
+

Bases: vmware.vapi.bindings.stub.VapiInterface

+
+
+get()
+

Get status of active backup operations

+ +++ + + + + + + + + + + + + + + + +
Return type:com.vmware.nsx_policy.model_client.CurrentBackupOperationStatus
Returns:com.vmware.nsx_policy.model.CurrentBackupOperationStatus
Raise:com.vmware.vapi.std.errors_client.ServiceUnavailable +Service Unavailable
Raise:com.vmware.vapi.std.errors_client.InvalidRequest +Bad Request, Precondition Failed
Raise:com.vmware.vapi.std.errors_client.InternalServerError +Internal Server Error
Raise:com.vmware.vapi.std.errors_client.Unauthorized +Forbidden
Raise:com.vmware.vapi.std.errors_client.NotFound +Not Found
+
+ +
+ +
+
+class com.vmware.nsx_policy.cluster.backups_client.StubFactory(stub_config)
+

Bases: vmware.vapi.bindings.stub.StubFactoryBase

+
+ +
+
+

com.vmware.nsx_policy.cluster.nodes_client module

+
+
+class com.vmware.nsx_policy.cluster.nodes_client.Status(config)
+

Bases: vmware.vapi.bindings.stub.VapiInterface

+
+
+GET_SOURCE_CACHED = 'cached'
+

Possible value for source of method Status.get().

+
+ +
+
+GET_SOURCE_REALTIME = 'realtime'
+

Possible value for source of method Status.get().

+
+ +
+
+get(node_id, source=None)
+

Read Cluster Node Status

+ +++ + + + + + + + + + + + + + + + + + +
Parameters:
    +
  • node_id (str) – (required)
  • +
  • source (str or None) – Data source type. (optional)
  • +
+
Return type:

com.vmware.nsx_policy.model_client.ClusterNodeStatus

+
Returns:

com.vmware.nsx_policy.model.ClusterNodeStatus

+
Raise:

com.vmware.vapi.std.errors_client.ServiceUnavailable +Service Unavailable

+
Raise:

com.vmware.vapi.std.errors_client.InvalidRequest +Bad Request, Precondition Failed

+
Raise:

com.vmware.vapi.std.errors_client.InternalServerError +Internal Server Error

+
Raise:

com.vmware.vapi.std.errors_client.Unauthorized +Forbidden

+
Raise:

com.vmware.vapi.std.errors_client.NotFound +Not Found

+
+
+ +
+
+getall()
+

Read Cluster Status

+ +++ + + + + + + + + + + + + + + + +
Return type:com.vmware.nsx_policy.model_client.ClustersAggregateInfo
Returns:com.vmware.nsx_policy.model.ClustersAggregateInfo
Raise:com.vmware.vapi.std.errors_client.ServiceUnavailable +Service Unavailable
Raise:com.vmware.vapi.std.errors_client.InvalidRequest +Bad Request, Precondition Failed
Raise:com.vmware.vapi.std.errors_client.InternalServerError +Internal Server Error
Raise:com.vmware.vapi.std.errors_client.Unauthorized +Forbidden
Raise:com.vmware.vapi.std.errors_client.NotFound +Not Found
+
+ +
+ +
+
+class com.vmware.nsx_policy.cluster.nodes_client.StubFactory(stub_config)
+

Bases: vmware.vapi.bindings.stub.StubFactoryBase

+
+ +
+
+

com.vmware.nsx_policy.cluster.restore_client module

+
+
+class com.vmware.nsx_policy.cluster.restore_client.Backuptimestamps(config)
+

Bases: vmware.vapi.bindings.stub.VapiInterface

+
+
+get(cursor=None, included_fields=None, page_size=None, sort_ascending=None, sort_by=None)
+

Returns timestamps for all backup files that are available on the SFTP +server.

+ +++ + + + + + + + + + + + + + + + + + +
Parameters:
    +
  • cursor (str or None) – Opaque cursor to be used for getting next page of records (supplied +by current result page) (optional)
  • +
  • included_fields (str or None) – Comma separated list of fields that should be included in query +result (optional)
  • +
  • page_size (long or None) – Maximum number of results to return in this page (server may return +fewer) (optional, default to 1000)
  • +
  • sort_ascending (bool or None) – (optional)
  • +
  • sort_by (str or None) – Field by which records are sorted (optional)
  • +
+
Return type:

com.vmware.nsx_policy.model_client.ClusterBackupInfoListResult

+
Returns:

com.vmware.nsx_policy.model.ClusterBackupInfoListResult

+
Raise:

com.vmware.vapi.std.errors_client.ServiceUnavailable +Service Unavailable

+
Raise:

com.vmware.vapi.std.errors_client.InvalidRequest +Bad Request, Precondition Failed

+
Raise:

com.vmware.vapi.std.errors_client.InternalServerError +Internal Server Error

+
Raise:

com.vmware.vapi.std.errors_client.Unauthorized +Forbidden

+
Raise:

com.vmware.vapi.std.errors_client.NotFound +Not Found

+
+
+ +
+ +
+
+class com.vmware.nsx_policy.cluster.restore_client.Config(config)
+

Bases: vmware.vapi.bindings.stub.VapiInterface

+
+
+get()
+

Get configuration information for the file server used to store +backed-up files. Fields that contain secrets (password, passphrase) are +not returned.

+ +++ + + + + + + + + + + + + + + + +
Return type:com.vmware.nsx_policy.model_client.RestoreConfiguration
Returns:com.vmware.nsx_policy.model.RestoreConfiguration
Raise:com.vmware.vapi.std.errors_client.ServiceUnavailable +Service Unavailable
Raise:com.vmware.vapi.std.errors_client.InvalidRequest +Bad Request, Precondition Failed
Raise:com.vmware.vapi.std.errors_client.InternalServerError +Internal Server Error
Raise:com.vmware.vapi.std.errors_client.Unauthorized +Forbidden
Raise:com.vmware.vapi.std.errors_client.NotFound +Not Found
+
+ +
+
+update(restore_configuration)
+

Configure file server where the backed-up files used for the Restore +operation are available.

+ +++ + + + + + + + + + + + + + + + + + +
Parameters:restore_configuration (com.vmware.nsx_policy.model_client.RestoreConfiguration) – (required)
Return type:com.vmware.nsx_policy.model_client.RestoreConfiguration
Returns:com.vmware.nsx_policy.model.RestoreConfiguration
Raise:com.vmware.vapi.std.errors_client.ServiceUnavailable +Service Unavailable
Raise:com.vmware.vapi.std.errors_client.InvalidRequest +Bad Request, Precondition Failed
Raise:com.vmware.vapi.std.errors_client.InternalServerError +Internal Server Error
Raise:com.vmware.vapi.std.errors_client.Unauthorized +Forbidden
Raise:com.vmware.vapi.std.errors_client.NotFound +Not Found
+
+ +
+ +
+
+class com.vmware.nsx_policy.cluster.restore_client.InstructionResources(config)
+

Bases: vmware.vapi.bindings.stub.VapiInterface

+
+
+get(instruction_id, cursor=None, included_fields=None, page_size=None, sort_ascending=None, sort_by=None)
+

For restore operations requiring user input e.g. performing an action, +accepting/rejecting an action, etc. the information to be conveyed to +users is provided in this call.

+ +++ + + + + + + + + + + + + + + + + + +
Parameters:
    +
  • instruction_id (str) – Id of the instruction set whose instructions are to be returned +(required)
  • +
  • cursor (str or None) – Opaque cursor to be used for getting next page of records (supplied +by current result page) (optional)
  • +
  • included_fields (str or None) – Comma separated list of fields that should be included in query +result (optional)
  • +
  • page_size (long or None) – Maximum number of results to return in this page (server may return +fewer) (optional, default to 1000)
  • +
  • sort_ascending (bool or None) – (optional)
  • +
  • sort_by (str or None) – Field by which records are sorted (optional)
  • +
+
Return type:

com.vmware.nsx_policy.model_client.ActionableResourceListResult

+
Returns:

com.vmware.nsx_policy.model.ActionableResourceListResult

+
Raise:

com.vmware.vapi.std.errors_client.ServiceUnavailable +Service Unavailable

+
Raise:

com.vmware.vapi.std.errors_client.InvalidRequest +Bad Request, Precondition Failed

+
Raise:

com.vmware.vapi.std.errors_client.InternalServerError +Internal Server Error

+
Raise:

com.vmware.vapi.std.errors_client.Unauthorized +Forbidden

+
Raise:

com.vmware.vapi.std.errors_client.NotFound +Not Found

+
+
+ +
+ +
+
+class com.vmware.nsx_policy.cluster.restore_client.StubFactory(stub_config)
+

Bases: vmware.vapi.bindings.stub.StubFactoryBase

+
+ +
+
+ + +
+ +
+ + +
+
+ +
+ +
+ + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/nsx/nsx_policy/com.vmware.nsx_policy.html b/nsx/nsx_policy/com.vmware.nsx_policy.html new file mode 100644 index 00000000..4108b77f --- /dev/null +++ b/nsx/nsx_policy/com.vmware.nsx_policy.html @@ -0,0 +1,25234 @@ + + + + + + + + + + + com.vmware.nsx_policy package — NSX-T Policy SDK 2.2.0.0.0 documentation + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + + + +
+ + + + + +
+ +
+ + + + + + + + + + + + + + + + + +
+ + + + +
+
+
+
+ +
+

com.vmware.nsx_policy package

+
+

Subpackages

+
+ +
+
+
+

Submodules

+
+
+

com.vmware.nsx_policy.aaa_client module

+
+
+class com.vmware.nsx_policy.aaa_client.RegistrationToken(config)
+

Bases: vmware.vapi.bindings.stub.VapiInterface

+
+
+create()
+

The privileges of the registration token will be the same as the +caller.

+ +++ + + + + + + + + + + + + + + + +
Return type:com.vmware.nsx_policy.model_client.RegistrationToken
Returns:com.vmware.nsx_policy.model.RegistrationToken
Raise:com.vmware.vapi.std.errors_client.ServiceUnavailable +Service Unavailable
Raise:com.vmware.vapi.std.errors_client.InvalidRequest +Bad Request, Precondition Failed
Raise:com.vmware.vapi.std.errors_client.InternalServerError +Internal Server Error
Raise:com.vmware.vapi.std.errors_client.Unauthorized +Forbidden
Raise:com.vmware.vapi.std.errors_client.NotFound +Not Found
+
+ +
+
+delete(token)
+

Delete registration access token

+ +++ + + + + + + + + + + + + + +
Parameters:token (str) – Registration token (required)
Raise:com.vmware.vapi.std.errors_client.ServiceUnavailable +Service Unavailable
Raise:com.vmware.vapi.std.errors_client.InvalidRequest +Bad Request, Precondition Failed
Raise:com.vmware.vapi.std.errors_client.InternalServerError +Internal Server Error
Raise:com.vmware.vapi.std.errors_client.Unauthorized +Forbidden
Raise:com.vmware.vapi.std.errors_client.NotFound +Not Found
+
+ +
+
+get(token)
+

Get registration access token

+ +++ + + + + + + + + + + + + + + + + + +
Parameters:token (str) – Registration token (required)
Return type:com.vmware.nsx_policy.model_client.RegistrationToken
Returns:com.vmware.nsx_policy.model.RegistrationToken
Raise:com.vmware.vapi.std.errors_client.ServiceUnavailable +Service Unavailable
Raise:com.vmware.vapi.std.errors_client.InvalidRequest +Bad Request, Precondition Failed
Raise:com.vmware.vapi.std.errors_client.InternalServerError +Internal Server Error
Raise:com.vmware.vapi.std.errors_client.Unauthorized +Forbidden
Raise:com.vmware.vapi.std.errors_client.NotFound +Not Found
+
+ +
+ +
+
+class com.vmware.nsx_policy.aaa_client.RoleBindings(config)
+

Bases: vmware.vapi.bindings.stub.VapiInterface

+
+
+LIST_TYPE_LOCAL_USER = 'local_user'
+

Possible value for type of method RoleBindings.list().

+
+ +
+
+LIST_TYPE_PRINCIPAL_IDENTITY = 'principal_identity'
+

Possible value for type of method RoleBindings.list().

+
+ +
+
+LIST_TYPE_REMOTE_GROUP = 'remote_group'
+

Possible value for type of method RoleBindings.list().

+
+ +
+
+LIST_TYPE_REMOTE_USER = 'remote_user'
+

Possible value for type of method RoleBindings.list().

+
+ +
+
+create(role_binding)
+

Assign roles to User or Group

+ +++ + + + + + + + + + + + + + + + + + +
Parameters:role_binding (com.vmware.nsx_policy.model_client.RoleBinding) – (required)
Return type:com.vmware.nsx_policy.model_client.RoleBinding
Returns:com.vmware.nsx_policy.model.RoleBinding
Raise:com.vmware.vapi.std.errors_client.ServiceUnavailable +Service Unavailable
Raise:com.vmware.vapi.std.errors_client.InvalidRequest +Bad Request, Precondition Failed
Raise:com.vmware.vapi.std.errors_client.InternalServerError +Internal Server Error
Raise:com.vmware.vapi.std.errors_client.Unauthorized +Forbidden
Raise:com.vmware.vapi.std.errors_client.NotFound +Not Found
+
+ +
+
+delete(binding_id)
+

Delete user/group’s roles assignment

+ +++ + + + + + + + + + + + + + +
Parameters:binding_id (str) – User/Group’s id (required)
Raise:com.vmware.vapi.std.errors_client.ServiceUnavailable +Service Unavailable
Raise:com.vmware.vapi.std.errors_client.InvalidRequest +Bad Request, Precondition Failed
Raise:com.vmware.vapi.std.errors_client.InternalServerError +Internal Server Error
Raise:com.vmware.vapi.std.errors_client.Unauthorized +Forbidden
Raise:com.vmware.vapi.std.errors_client.NotFound +Not Found
+
+ +
+
+get(binding_id)
+

Get user/group’s role information

+ +++ + + + + + + + + + + + + + + + + + +
Parameters:binding_id (str) – User/Group’s id (required)
Return type:com.vmware.nsx_policy.model_client.RoleBinding
Returns:com.vmware.nsx_policy.model.RoleBinding
Raise:com.vmware.vapi.std.errors_client.ServiceUnavailable +Service Unavailable
Raise:com.vmware.vapi.std.errors_client.InvalidRequest +Bad Request, Precondition Failed
Raise:com.vmware.vapi.std.errors_client.InternalServerError +Internal Server Error
Raise:com.vmware.vapi.std.errors_client.Unauthorized +Forbidden
Raise:com.vmware.vapi.std.errors_client.NotFound +Not Found
+
+ +
+
+list(cursor=None, included_fields=None, name=None, page_size=None, sort_ascending=None, sort_by=None, type=None)
+

Get all users and groups with their roles

+ +++ + + + + + + + + + + + + + + + + + +
Parameters:
    +
  • cursor (str or None) – Opaque cursor to be used for getting next page of records (supplied +by current result page) (optional)
  • +
  • included_fields (str or None) – Comma separated list of fields that should be included in query +result (optional)
  • +
  • name (str or None) – User/Group name (optional)
  • +
  • page_size (long or None) – Maximum number of results to return in this page (server may return +fewer) (optional, default to 1000)
  • +
  • sort_ascending (bool or None) – (optional)
  • +
  • sort_by (str or None) – Field by which records are sorted (optional)
  • +
  • type (str or None) – Type (optional)
  • +
+
Return type:

com.vmware.nsx_policy.model_client.RoleBindingListResult

+
Returns:

com.vmware.nsx_policy.model.RoleBindingListResult

+
Raise:

com.vmware.vapi.std.errors_client.ServiceUnavailable +Service Unavailable

+
Raise:

com.vmware.vapi.std.errors_client.InvalidRequest +Bad Request, Precondition Failed

+
Raise:

com.vmware.vapi.std.errors_client.InternalServerError +Internal Server Error

+
Raise:

com.vmware.vapi.std.errors_client.Unauthorized +Forbidden

+
Raise:

com.vmware.vapi.std.errors_client.NotFound +Not Found

+
+
+ +
+
+update(binding_id, role_binding)
+

Update User or Group’s roles

+ +++ + + + + + + + + + + + + + + + + + +
Parameters: +
Return type:

com.vmware.nsx_policy.model_client.RoleBinding

+
Returns:

com.vmware.nsx_policy.model.RoleBinding

+
Raise:

com.vmware.vapi.std.errors_client.ServiceUnavailable +Service Unavailable

+
Raise:

com.vmware.vapi.std.errors_client.InvalidRequest +Bad Request, Precondition Failed

+
Raise:

com.vmware.vapi.std.errors_client.InternalServerError +Internal Server Error

+
Raise:

com.vmware.vapi.std.errors_client.Unauthorized +Forbidden

+
Raise:

com.vmware.vapi.std.errors_client.NotFound +Not Found

+
+
+ +
+ +
+
+class com.vmware.nsx_policy.aaa_client.Roles(config)
+

Bases: vmware.vapi.bindings.stub.VapiInterface

+
+
+get(role)
+

Get role information

+ +++ + + + + + + + + + + + + + + + + + +
Parameters:role (str) – Role Name (required)
Return type:com.vmware.nsx_policy.model_client.RoleWithFeatures
Returns:com.vmware.nsx_policy.model.RoleWithFeatures
Raise:com.vmware.vapi.std.errors_client.ServiceUnavailable +Service Unavailable
Raise:com.vmware.vapi.std.errors_client.InvalidRequest +Bad Request, Precondition Failed
Raise:com.vmware.vapi.std.errors_client.InternalServerError +Internal Server Error
Raise:com.vmware.vapi.std.errors_client.Unauthorized +Forbidden
Raise:com.vmware.vapi.std.errors_client.NotFound +Not Found
+
+ +
+
+list()
+

Get information about all roles

+ +++ + + + + + + + + + + + + + + + +
Return type:com.vmware.nsx_policy.model_client.RoleListResult
Returns:com.vmware.nsx_policy.model.RoleListResult
Raise:com.vmware.vapi.std.errors_client.ServiceUnavailable +Service Unavailable
Raise:com.vmware.vapi.std.errors_client.InvalidRequest +Bad Request, Precondition Failed
Raise:com.vmware.vapi.std.errors_client.InternalServerError +Internal Server Error
Raise:com.vmware.vapi.std.errors_client.Unauthorized +Forbidden
Raise:com.vmware.vapi.std.errors_client.NotFound +Not Found
+
+ +
+ +
+
+class com.vmware.nsx_policy.aaa_client.StubFactory(stub_config)
+

Bases: vmware.vapi.bindings.stub.StubFactoryBase

+
+ +
+
+class com.vmware.nsx_policy.aaa_client.UserInfo(config)
+

Bases: vmware.vapi.bindings.stub.VapiInterface

+
+
+get()
+

Get information about logged-in user. The permissions parameter of the +NsxRole has been deprecated.

+ +++ + + + + + + + + + + + + + + + +
Return type:com.vmware.nsx_policy.model_client.UserInfo
Returns:com.vmware.nsx_policy.model.UserInfo
Raise:com.vmware.vapi.std.errors_client.ServiceUnavailable +Service Unavailable
Raise:com.vmware.vapi.std.errors_client.InvalidRequest +Bad Request, Precondition Failed
Raise:com.vmware.vapi.std.errors_client.InternalServerError +Internal Server Error
Raise:com.vmware.vapi.std.errors_client.Unauthorized +Forbidden
Raise:com.vmware.vapi.std.errors_client.NotFound +Not Found
+
+ +
+ +
+
+

com.vmware.nsx_policy.cluster_client module

+
+
+class com.vmware.nsx_policy.cluster_client.Backups(config)
+

Bases: vmware.vapi.bindings.stub.VapiInterface

+
+
+retrievesshfingerprint(remote_server_fingerprint_request)
+

Get SHA256 fingerprint of ECDSA key of remote server. The caller should +independently verify that the key is trusted.

+ +++ + + + + + + + + + + + + + + + + + +
Parameters:remote_server_fingerprint_request (com.vmware.nsx_policy.model_client.RemoteServerFingerprintRequest) – (required)
Return type:com.vmware.nsx_policy.model_client.RemoteServerFingerprint
Returns:com.vmware.nsx_policy.model.RemoteServerFingerprint
Raise:com.vmware.vapi.std.errors_client.ServiceUnavailable +Service Unavailable
Raise:com.vmware.vapi.std.errors_client.InvalidRequest +Bad Request, Precondition Failed
Raise:com.vmware.vapi.std.errors_client.InternalServerError +Internal Server Error
Raise:com.vmware.vapi.std.errors_client.Unauthorized +Forbidden
Raise:com.vmware.vapi.std.errors_client.NotFound +Not Found
+
+ +
+ +
+
+class com.vmware.nsx_policy.cluster_client.Nodes(config)
+

Bases: vmware.vapi.bindings.stub.VapiInterface

+
+
+CREATE_ACTION_NODE = 'add_cluster_node'
+

Possible value for action of method Nodes.create().

+
+ +
+
+create(add_cluster_node_spec, action)
+

Adds a new management node or controller node to the NSX cluster. A +single node can perform one role, either management or control, not +both.

+ +++ + + + + + + + + + + + + + + + + + +
Parameters: +
Return type:

com.vmware.nsx_policy.model_client.ClusterNodeConfig

+
Returns:

com.vmware.nsx_policy.model.ClusterNodeConfig

+
Raise:

com.vmware.vapi.std.errors_client.ServiceUnavailable +Service Unavailable

+
Raise:

com.vmware.vapi.std.errors_client.InvalidRequest +Bad Request, Precondition Failed

+
Raise:

com.vmware.vapi.std.errors_client.InternalServerError +Internal Server Error

+
Raise:

com.vmware.vapi.std.errors_client.Unauthorized +Forbidden

+
Raise:

com.vmware.vapi.std.errors_client.NotFound +Not Found

+
+
+ +
+
+delete(node_id)
+

Removes the specified manager or control node from the NSX cluster. +Before you can remove a node from the cluster, you must shut down the +manager or controller service with the "stop service manager" +or the "stop service controller" command.

+ +++ + + + + + + + + + + + + + +
Parameters:node_id (str) – (required)
Raise:com.vmware.vapi.std.errors_client.ServiceUnavailable +Service Unavailable
Raise:com.vmware.vapi.std.errors_client.InvalidRequest +Bad Request, Precondition Failed
Raise:com.vmware.vapi.std.errors_client.InternalServerError +Internal Server Error
Raise:com.vmware.vapi.std.errors_client.Unauthorized +Forbidden
Raise:com.vmware.vapi.std.errors_client.NotFound +Not Found
+
+ +
+
+get(node_id)
+

Returns information about the specified NSX cluster node.

+ +++ + + + + + + + + + + + + + + + + + +
Parameters:node_id (str) – (required)
Return type:com.vmware.nsx_policy.model_client.ClusterNodeConfig
Returns:com.vmware.nsx_policy.model.ClusterNodeConfig
Raise:com.vmware.vapi.std.errors_client.ServiceUnavailable +Service Unavailable
Raise:com.vmware.vapi.std.errors_client.InvalidRequest +Bad Request, Precondition Failed
Raise:com.vmware.vapi.std.errors_client.InternalServerError +Internal Server Error
Raise:com.vmware.vapi.std.errors_client.Unauthorized +Forbidden
Raise:com.vmware.vapi.std.errors_client.NotFound +Not Found
+
+ +
+
+list(cursor=None, included_fields=None, page_size=None, sort_ascending=None, sort_by=None)
+

Returns information about all NSX cluster nodes.

+ +++ + + + + + + + + + + + + + + + + + +
Parameters:
    +
  • cursor (str or None) – Opaque cursor to be used for getting next page of records (supplied +by current result page) (optional)
  • +
  • included_fields (str or None) – Comma separated list of fields that should be included in query +result (optional)
  • +
  • page_size (long or None) – Maximum number of results to return in this page (server may return +fewer) (optional, default to 1000)
  • +
  • sort_ascending (bool or None) – (optional)
  • +
  • sort_by (str or None) – Field by which records are sorted (optional)
  • +
+
Return type:

com.vmware.nsx_policy.model_client.ClusterNodeConfigListResult

+
Returns:

com.vmware.nsx_policy.model.ClusterNodeConfigListResult

+
Raise:

com.vmware.vapi.std.errors_client.ServiceUnavailable +Service Unavailable

+
Raise:

com.vmware.vapi.std.errors_client.InvalidRequest +Bad Request, Precondition Failed

+
Raise:

com.vmware.vapi.std.errors_client.InternalServerError +Internal Server Error

+
Raise:

com.vmware.vapi.std.errors_client.Unauthorized +Forbidden

+
Raise:

com.vmware.vapi.std.errors_client.NotFound +Not Found

+
+
+ +
+
+revokemissingnodes(revoke_node_request)
+

Revoke Missing Nodes from the Cluster

+ +++ + + + + + + + + + + + + + +
Parameters:revoke_node_request (com.vmware.nsx_policy.model_client.RevokeNodeRequest) – (required)
Raise:com.vmware.vapi.std.errors_client.ServiceUnavailable +Service Unavailable
Raise:com.vmware.vapi.std.errors_client.InvalidRequest +Bad Request, Precondition Failed
Raise:com.vmware.vapi.std.errors_client.InternalServerError +Internal Server Error
Raise:com.vmware.vapi.std.errors_client.Unauthorized +Forbidden
Raise:com.vmware.vapi.std.errors_client.NotFound +Not Found
+
+ +
+ +
+
+class com.vmware.nsx_policy.cluster_client.Restore(config)
+

Bases: vmware.vapi.bindings.stub.VapiInterface

+
+
+advance(advance_cluster_restore_request)
+

Advance any currently suspended restore operation. The operation might +have been suspended because (1) the user had suspended it previously, +or (2) the operation is waiting for user input, to be provided as a +part of the POST request body. This operation is only valid when a GET +cluster/restore/status returns a status with value SUSPENDED. +Otherwise, a 409 response is returned.

+ +++ + + + + + + + + + + + + + + + + + + + +
Parameters:advance_cluster_restore_request (com.vmware.nsx_policy.model_client.AdvanceClusterRestoreRequest) – (required)
Return type:com.vmware.nsx_policy.model_client.ClusterRestoreStatus
Returns:com.vmware.nsx_policy.model.ClusterRestoreStatus
Raise:com.vmware.vapi.std.errors_client.ServiceUnavailable +Service Unavailable
Raise:com.vmware.vapi.std.errors_client.InvalidRequest +Bad Request, Precondition Failed
Raise:com.vmware.vapi.std.errors_client.InternalServerError +Internal Server Error
Raise:com.vmware.vapi.std.errors_client.ConcurrentChange +Conflict
Raise:com.vmware.vapi.std.errors_client.Unauthorized +Forbidden
Raise:com.vmware.vapi.std.errors_client.NotFound +Not Found
+
+ +
+
+cancel()
+

Cancel any currently running restore operation. If there exists a +currently running step, it is allowed to finish. The system is not +rolled back to the pre-restore state. This operation is only valid when +a GET cluster/restore/status returns a status with value RUNNING or +SUSPENDED. Otherwise, a 409 response is returned.

+ +++ + + + + + + + + + + + + + + + + + +
Return type:com.vmware.nsx_policy.model_client.ClusterRestoreStatus
Returns:com.vmware.nsx_policy.model.ClusterRestoreStatus
Raise:com.vmware.vapi.std.errors_client.ServiceUnavailable +Service Unavailable
Raise:com.vmware.vapi.std.errors_client.InvalidRequest +Bad Request, Precondition Failed
Raise:com.vmware.vapi.std.errors_client.InternalServerError +Internal Server Error
Raise:com.vmware.vapi.std.errors_client.ConcurrentChange +Conflict
Raise:com.vmware.vapi.std.errors_client.Unauthorized +Forbidden
Raise:com.vmware.vapi.std.errors_client.NotFound +Not Found
+
+ +
+
+retry()
+

Retry any currently in-progress, failed restore operation. Only the +last step of the multi-step restore operation would have failed,and +only that step is retried. This operation is only valid when a GET +cluster/restore/status returns a status with value FAILED. Otherwise, a +409 response is returned.

+ +++ + + + + + + + + + + + + + + + + + +
Return type:com.vmware.nsx_policy.model_client.ClusterRestoreStatus
Returns:com.vmware.nsx_policy.model.ClusterRestoreStatus
Raise:com.vmware.vapi.std.errors_client.ServiceUnavailable +Service Unavailable
Raise:com.vmware.vapi.std.errors_client.InvalidRequest +Bad Request, Precondition Failed
Raise:com.vmware.vapi.std.errors_client.InternalServerError +Internal Server Error
Raise:com.vmware.vapi.std.errors_client.ConcurrentChange +Conflict
Raise:com.vmware.vapi.std.errors_client.Unauthorized +Forbidden
Raise:com.vmware.vapi.std.errors_client.NotFound +Not Found
+
+ +
+
+start(initiate_cluster_restore_request)
+

Start the restore of an NSX cluster, from some previously backed-up +configuration. This operation is only valid when a GET +cluster/restore/status returns a status with value NOT_STARTED. +Otherwise, a 409 response is returned.

+ +++ + + + + + + + + + + + + + + + + + + + +
Parameters:initiate_cluster_restore_request (com.vmware.nsx_policy.model_client.InitiateClusterRestoreRequest) – (required)
Return type:com.vmware.nsx_policy.model_client.ClusterRestoreStatus
Returns:com.vmware.nsx_policy.model.ClusterRestoreStatus
Raise:com.vmware.vapi.std.errors_client.ServiceUnavailable +Service Unavailable
Raise:com.vmware.vapi.std.errors_client.InvalidRequest +Bad Request, Precondition Failed
Raise:com.vmware.vapi.std.errors_client.InternalServerError +Internal Server Error
Raise:com.vmware.vapi.std.errors_client.ConcurrentChange +Conflict
Raise:com.vmware.vapi.std.errors_client.Unauthorized +Forbidden
Raise:com.vmware.vapi.std.errors_client.NotFound +Not Found
+
+ +
+
+suspend()
+

Suspend any currently running restore operation. The restore operation +is made up of a number of steps. When this call is issued, any +currently running step is allowed to finish (successfully or with +errors), and the next step (and therefore the entire restore operation) +is suspended until a subsequent resume or cancel call is issued. This +operation is only valid when a GET cluster/restore/status returns a +status with value RUNNING. Otherwise, a 409 response is returned.

+ +++ + + + + + + + + + + + + + + + + + +
Return type:com.vmware.nsx_policy.model_client.ClusterRestoreStatus
Returns:com.vmware.nsx_policy.model.ClusterRestoreStatus
Raise:com.vmware.vapi.std.errors_client.ServiceUnavailable +Service Unavailable
Raise:com.vmware.vapi.std.errors_client.InvalidRequest +Bad Request, Precondition Failed
Raise:com.vmware.vapi.std.errors_client.InternalServerError +Internal Server Error
Raise:com.vmware.vapi.std.errors_client.ConcurrentChange +Conflict
Raise:com.vmware.vapi.std.errors_client.Unauthorized +Forbidden
Raise:com.vmware.vapi.std.errors_client.NotFound +Not Found
+
+ +
+ +
+
+class com.vmware.nsx_policy.cluster_client.Status(config)
+

Bases: vmware.vapi.bindings.stub.VapiInterface

+
+
+GET_SOURCE_CACHED = 'cached'
+

Possible value for source of method Status.get().

+
+ +
+
+GET_SOURCE_REALTIME = 'realtime'
+

Possible value for source of method Status.get().

+
+ +
+
+get(source=None)
+

Returns status information for the NSX cluster control role and +management role.

+ +++ + + + + + + + + + + + + + + + + + +
Parameters:source (str or None) – Data source type. (optional)
Return type:com.vmware.nsx_policy.model_client.ClusterStatus
Returns:com.vmware.nsx_policy.model.ClusterStatus
Raise:com.vmware.vapi.std.errors_client.ServiceUnavailable +Service Unavailable
Raise:com.vmware.vapi.std.errors_client.InvalidRequest +Bad Request, Precondition Failed
Raise:com.vmware.vapi.std.errors_client.InternalServerError +Internal Server Error
Raise:com.vmware.vapi.std.errors_client.Unauthorized +Forbidden
Raise:com.vmware.vapi.std.errors_client.NotFound +Not Found
+
+ +
+ +
+
+class com.vmware.nsx_policy.cluster_client.StubFactory(stub_config)
+

Bases: vmware.vapi.bindings.stub.StubFactoryBase

+
+ +
+
+

com.vmware.nsx_policy.configs_client module

+
+
+class com.vmware.nsx_policy.configs_client.Management(config)
+

Bases: vmware.vapi.bindings.stub.VapiInterface

+
+
+get()
+

Returns the NSX Management nodes global configuration.

+ +++ + + + + + + + + + + + + + + + +
Return type:com.vmware.nsx_policy.model_client.ManagementConfig
Returns:com.vmware.nsx_policy.model.ManagementConfig
Raise:com.vmware.vapi.std.errors_client.ServiceUnavailable +Service Unavailable
Raise:com.vmware.vapi.std.errors_client.InvalidRequest +Bad Request, Precondition Failed
Raise:com.vmware.vapi.std.errors_client.InternalServerError +Internal Server Error
Raise:com.vmware.vapi.std.errors_client.Unauthorized +Forbidden
Raise:com.vmware.vapi.std.errors_client.NotFound +Not Found
+
+ +
+
+update(management_config)
+

Modifies the NSX Management nodes global configuration.

+ +++ + + + + + + + + + + + + + + + + + +
Parameters:management_config (com.vmware.nsx_policy.model_client.ManagementConfig) – (required)
Return type:com.vmware.nsx_policy.model_client.ManagementConfig
Returns:com.vmware.nsx_policy.model.ManagementConfig
Raise:com.vmware.vapi.std.errors_client.ServiceUnavailable +Service Unavailable
Raise:com.vmware.vapi.std.errors_client.InvalidRequest +Bad Request, Precondition Failed
Raise:com.vmware.vapi.std.errors_client.InternalServerError +Internal Server Error
Raise:com.vmware.vapi.std.errors_client.Unauthorized +Forbidden
Raise:com.vmware.vapi.std.errors_client.NotFound +Not Found
+
+ +
+ +
+
+class com.vmware.nsx_policy.configs_client.StubFactory(stub_config)
+

Bases: vmware.vapi.bindings.stub.StubFactoryBase

+
+ +
+
+

com.vmware.nsx_policy.enforcement_points_client module

+
+
+class com.vmware.nsx_policy.enforcement_points_client.ServiceDefinitions(config)
+

Bases: vmware.vapi.bindings.stub.VapiInterface

+
+
+create(enforcement_point_id, service_definition_id, service_definition)
+

Create a Service Definition on given enforcement point.

+ +++ + + + + + + + + + + + + + + + + + +
Parameters: +
Return type:

com.vmware.nsx_policy.model_client.ServiceDefinition

+
Returns:

com.vmware.nsx_policy.model.ServiceDefinition

+
Raise:

com.vmware.vapi.std.errors_client.ServiceUnavailable +Service Unavailable

+
Raise:

com.vmware.vapi.std.errors_client.InvalidRequest +Bad Request, Precondition Failed

+
Raise:

com.vmware.vapi.std.errors_client.InternalServerError +Internal Server Error

+
Raise:

com.vmware.vapi.std.errors_client.Unauthorized +Forbidden

+
Raise:

com.vmware.vapi.std.errors_client.NotFound +Not Found

+
+
+ +
+
+get(enforcement_point_id, service_definition_id)
+

Read Service Definition with given service-definition-id.

+ +++ + + + + + + + + + + + + + + + + + +
Parameters:
    +
  • enforcement_point_id (str) – Enforcement point id (required)
  • +
  • service_definition_id (str) – Id of service definition (required)
  • +
+
Return type:

com.vmware.nsx_policy.model_client.ServiceDefinition

+
Returns:

com.vmware.nsx_policy.model.ServiceDefinition

+
Raise:

com.vmware.vapi.std.errors_client.ServiceUnavailable +Service Unavailable

+
Raise:

com.vmware.vapi.std.errors_client.InvalidRequest +Bad Request, Precondition Failed

+
Raise:

com.vmware.vapi.std.errors_client.InternalServerError +Internal Server Error

+
Raise:

com.vmware.vapi.std.errors_client.Unauthorized +Forbidden

+
Raise:

com.vmware.vapi.std.errors_client.NotFound +Not Found

+
+
+ +
+
+list(enforcement_point_id)
+

List all Service Definitions registered on given enforcement point.

+ +++ + + + + + + + + + + + + + + + + + +
Parameters:enforcement_point_id (str) – Enforcement point id (required)
Return type:com.vmware.nsx_policy.model_client.ServiceInsertionServiceListResult
Returns:com.vmware.nsx_policy.model.ServiceInsertionServiceListResult
Raise:com.vmware.vapi.std.errors_client.ServiceUnavailable +Service Unavailable
Raise:com.vmware.vapi.std.errors_client.InvalidRequest +Bad Request, Precondition Failed
Raise:com.vmware.vapi.std.errors_client.InternalServerError +Internal Server Error
Raise:com.vmware.vapi.std.errors_client.Unauthorized +Forbidden
Raise:com.vmware.vapi.std.errors_client.NotFound +Not Found
+
+ +
+
+update(enforcement_point_id, service_definition_id, service_definition)
+

Update an existing Service Definition on the given enforcement point.

+ +++ + + + + + + + + + + + + + + + + + +
Parameters: +
Return type:

com.vmware.nsx_policy.model_client.ServiceDefinition

+
Returns:

com.vmware.nsx_policy.model.ServiceDefinition

+
Raise:

com.vmware.vapi.std.errors_client.ServiceUnavailable +Service Unavailable

+
Raise:

com.vmware.vapi.std.errors_client.InvalidRequest +Bad Request, Precondition Failed

+
Raise:

com.vmware.vapi.std.errors_client.InternalServerError +Internal Server Error

+
Raise:

com.vmware.vapi.std.errors_client.Unauthorized +Forbidden

+
Raise:

com.vmware.vapi.std.errors_client.NotFound +Not Found

+
+
+ +
+ +
+
+class com.vmware.nsx_policy.enforcement_points_client.StubFactory(stub_config)
+

Bases: vmware.vapi.bindings.stub.StubFactoryBase

+
+ +
+
+

com.vmware.nsx_policy.eula_client module

+
+
+class com.vmware.nsx_policy.eula_client.Accept(config)
+

Bases: vmware.vapi.bindings.stub.VapiInterface

+
+
+create()
+

Accept end user license agreement

+ +++ + + + + + + + + + + + +
Raise:com.vmware.vapi.std.errors_client.ServiceUnavailable +Service Unavailable
Raise:com.vmware.vapi.std.errors_client.InvalidRequest +Bad Request, Precondition Failed
Raise:com.vmware.vapi.std.errors_client.InternalServerError +Internal Server Error
Raise:com.vmware.vapi.std.errors_client.Unauthorized +Forbidden
Raise:com.vmware.vapi.std.errors_client.NotFound +Not Found
+
+ +
+ +
+
+class com.vmware.nsx_policy.eula_client.Acceptance(config)
+

Bases: vmware.vapi.bindings.stub.VapiInterface

+
+
+get()
+

Return the acceptance status of end user license agreement

+ +++ + + + + + + + + + + + + + + + +
Return type:com.vmware.nsx_policy.model_client.EULAAcceptance
Returns:com.vmware.nsx_policy.model.EULAAcceptance
Raise:com.vmware.vapi.std.errors_client.ServiceUnavailable +Service Unavailable
Raise:com.vmware.vapi.std.errors_client.InvalidRequest +Bad Request, Precondition Failed
Raise:com.vmware.vapi.std.errors_client.InternalServerError +Internal Server Error
Raise:com.vmware.vapi.std.errors_client.Unauthorized +Forbidden
Raise:com.vmware.vapi.std.errors_client.NotFound +Not Found
+
+ +
+ +
+
+class com.vmware.nsx_policy.eula_client.Content(config)
+

Bases: vmware.vapi.bindings.stub.VapiInterface

+
+
+get(cursor=None, format=None, included_fields=None, page_size=None, sort_ascending=None, sort_by=None)
+

Return the content of end user license agreement in the specified +format. By default, it’s pure string without line break

+ +++ + + + + + + + + + + + + + + + + + +
Parameters:
    +
  • cursor (str or None) – Opaque cursor to be used for getting next page of records (supplied +by current result page) (optional)
  • +
  • format (str or None) – End User License Agreement content output format (optional)
  • +
  • included_fields (str or None) – Comma separated list of fields that should be included in query +result (optional)
  • +
  • page_size (long or None) – Maximum number of results to return in this page (server may return +fewer) (optional, default to 1000)
  • +
  • sort_ascending (bool or None) – (optional)
  • +
  • sort_by (str or None) – Field by which records are sorted (optional)
  • +
+
Return type:

com.vmware.nsx_policy.model_client.EULAContent

+
Returns:

com.vmware.nsx_policy.model.EULAContent

+
Raise:

com.vmware.vapi.std.errors_client.ServiceUnavailable +Service Unavailable

+
Raise:

com.vmware.vapi.std.errors_client.InvalidRequest +Bad Request, Precondition Failed

+
Raise:

com.vmware.vapi.std.errors_client.InternalServerError +Internal Server Error

+
Raise:

com.vmware.vapi.std.errors_client.Unauthorized +Forbidden

+
Raise:

com.vmware.vapi.std.errors_client.NotFound +Not Found

+
+
+ +
+ +
+
+class com.vmware.nsx_policy.eula_client.StubFactory(stub_config)
+

Bases: vmware.vapi.bindings.stub.StubFactoryBase

+
+ +
+
+

com.vmware.nsx_policy.infra_client module

+
+
+class com.vmware.nsx_policy.infra_client.Constraints(config)
+

Bases: vmware.vapi.bindings.stub.VapiInterface

+
+
+delete(constraint_id)
+

Delete tenant constraint.

+ +++ + + + + + + + + + + + + + +
Parameters:constraint_id (str) – (required)
Raise:com.vmware.vapi.std.errors_client.ServiceUnavailable +Service Unavailable
Raise:com.vmware.vapi.std.errors_client.InvalidRequest +Bad Request, Precondition Failed
Raise:com.vmware.vapi.std.errors_client.InternalServerError +Internal Server Error
Raise:com.vmware.vapi.std.errors_client.Unauthorized +Forbidden
Raise:com.vmware.vapi.std.errors_client.NotFound +Not Found
+
+ +
+
+get(constraint_id)
+

Read tenant constraint.

+ +++ + + + + + + + + + + + + + + + + + +
Parameters:constraint_id (str) – (required)
Return type:com.vmware.nsx_policy.model_client.Constraint
Returns:com.vmware.nsx_policy.model.Constraint
Raise:com.vmware.vapi.std.errors_client.ServiceUnavailable +Service Unavailable
Raise:com.vmware.vapi.std.errors_client.InvalidRequest +Bad Request, Precondition Failed
Raise:com.vmware.vapi.std.errors_client.InternalServerError +Internal Server Error
Raise:com.vmware.vapi.std.errors_client.Unauthorized +Forbidden
Raise:com.vmware.vapi.std.errors_client.NotFound +Not Found
+
+ +
+
+list(cursor=None, included_fields=None, page_size=None, sort_ascending=None, sort_by=None)
+

List tenant constraints.

+ +++ + + + + + + + + + + + + + + + + + +
Parameters:
    +
  • cursor (str or None) – Opaque cursor to be used for getting next page of records (supplied +by current result page) (optional)
  • +
  • included_fields (str or None) – Comma separated list of fields that should be included in query +result (optional)
  • +
  • page_size (long or None) – Maximum number of results to return in this page (server may return +fewer) (optional, default to 1000)
  • +
  • sort_ascending (bool or None) – (optional)
  • +
  • sort_by (str or None) – Field by which records are sorted (optional)
  • +
+
Return type:

com.vmware.nsx_policy.model_client.ConstraintListResult

+
Returns:

com.vmware.nsx_policy.model.ConstraintListResult

+
Raise:

com.vmware.vapi.std.errors_client.ServiceUnavailable +Service Unavailable

+
Raise:

com.vmware.vapi.std.errors_client.InvalidRequest +Bad Request, Precondition Failed

+
Raise:

com.vmware.vapi.std.errors_client.InternalServerError +Internal Server Error

+
Raise:

com.vmware.vapi.std.errors_client.Unauthorized +Forbidden

+
Raise:

com.vmware.vapi.std.errors_client.NotFound +Not Found

+
+
+ +
+
+patch(constraint_id, constraint)
+

Create tenant constraint if not exists, otherwise update the existing +constraint.

+ +++ + + + + + + + + + + + + + +
Parameters: +
Raise:

com.vmware.vapi.std.errors_client.ServiceUnavailable +Service Unavailable

+
Raise:

com.vmware.vapi.std.errors_client.InvalidRequest +Bad Request, Precondition Failed

+
Raise:

com.vmware.vapi.std.errors_client.InternalServerError +Internal Server Error

+
Raise:

com.vmware.vapi.std.errors_client.Unauthorized +Forbidden

+
Raise:

com.vmware.vapi.std.errors_client.NotFound +Not Found

+
+
+ +
+
+update(constraint_id, constraint)
+

Create tenant constraint if it does not exist, otherwise replace the +existing constraint.

+ +++ + + + + + + + + + + + + + + + + + +
Parameters: +
Return type:

com.vmware.nsx_policy.model_client.Constraint

+
Returns:

com.vmware.nsx_policy.model.Constraint

+
Raise:

com.vmware.vapi.std.errors_client.ServiceUnavailable +Service Unavailable

+
Raise:

com.vmware.vapi.std.errors_client.InvalidRequest +Bad Request, Precondition Failed

+
Raise:

com.vmware.vapi.std.errors_client.InternalServerError +Internal Server Error

+
Raise:

com.vmware.vapi.std.errors_client.Unauthorized +Forbidden

+
Raise:

com.vmware.vapi.std.errors_client.NotFound +Not Found

+
+
+ +
+ +
+
+class com.vmware.nsx_policy.infra_client.DeploymentZones(config)
+

Bases: vmware.vapi.bindings.stub.VapiInterface

+
+
+get(deployment_zone_id)
+

Read a Deployment Zone

+ +++ + + + + + + + + + + + + + + + + + +
Parameters:deployment_zone_id (str) – Deployment Zone id (required)
Return type:com.vmware.nsx_policy.model_client.DeploymentZone
Returns:com.vmware.nsx_policy.model.DeploymentZone
Raise:com.vmware.vapi.std.errors_client.ServiceUnavailable +Service Unavailable
Raise:com.vmware.vapi.std.errors_client.InvalidRequest +Bad Request, Precondition Failed
Raise:com.vmware.vapi.std.errors_client.InternalServerError +Internal Server Error
Raise:com.vmware.vapi.std.errors_client.Unauthorized +Forbidden
Raise:com.vmware.vapi.std.errors_client.NotFound +Not Found
+
+ +
+
+list(cursor=None, included_fields=None, page_size=None, sort_ascending=None, sort_by=None)
+

Paginated list of all Deployment zones for infra.

+ +++ + + + + + + + + + + + + + + + + + +
Parameters:
    +
  • cursor (str or None) – Opaque cursor to be used for getting next page of records (supplied +by current result page) (optional)
  • +
  • included_fields (str or None) – Comma separated list of fields that should be included in query +result (optional)
  • +
  • page_size (long or None) – Maximum number of results to return in this page (server may return +fewer) (optional, default to 1000)
  • +
  • sort_ascending (bool or None) – (optional)
  • +
  • sort_by (str or None) – Field by which records are sorted (optional)
  • +
+
Return type:

com.vmware.nsx_policy.model_client.DeploymentZoneListResult

+
Returns:

com.vmware.nsx_policy.model.DeploymentZoneListResult

+
Raise:

com.vmware.vapi.std.errors_client.ServiceUnavailable +Service Unavailable

+
Raise:

com.vmware.vapi.std.errors_client.InvalidRequest +Bad Request, Precondition Failed

+
Raise:

com.vmware.vapi.std.errors_client.InternalServerError +Internal Server Error

+
Raise:

com.vmware.vapi.std.errors_client.Unauthorized +Forbidden

+
Raise:

com.vmware.vapi.std.errors_client.NotFound +Not Found

+
+
+ +
+ +
+
+class com.vmware.nsx_policy.infra_client.DnsForwarderZones(config)
+

Bases: vmware.vapi.bindings.stub.VapiInterface

+
+
+delete(dns_forwarder_zone_id)
+

Delete the DNS Forwarder Zone

+ +++ + + + + + + + + + + + + + +
Parameters:dns_forwarder_zone_id (str) – DNS Forwarder Zone ID (required)
Raise:com.vmware.vapi.std.errors_client.ServiceUnavailable +Service Unavailable
Raise:com.vmware.vapi.std.errors_client.InvalidRequest +Bad Request, Precondition Failed
Raise:com.vmware.vapi.std.errors_client.InternalServerError +Internal Server Error
Raise:com.vmware.vapi.std.errors_client.Unauthorized +Forbidden
Raise:com.vmware.vapi.std.errors_client.NotFound +Not Found
+
+ +
+
+get(dns_forwarder_zone_id)
+

Read the DNS Forwarder Zone

+ +++ + + + + + + + + + + + + + + + + + +
Parameters:dns_forwarder_zone_id (str) – DNS Forwarder Zone ID (required)
Return type:com.vmware.nsx_policy.model_client.PolicyDnsForwarderZone
Returns:com.vmware.nsx_policy.model.PolicyDnsForwarderZone
Raise:com.vmware.vapi.std.errors_client.ServiceUnavailable +Service Unavailable
Raise:com.vmware.vapi.std.errors_client.InvalidRequest +Bad Request, Precondition Failed
Raise:com.vmware.vapi.std.errors_client.InternalServerError +Internal Server Error
Raise:com.vmware.vapi.std.errors_client.Unauthorized +Forbidden
Raise:com.vmware.vapi.std.errors_client.NotFound +Not Found
+
+ +
+
+list(cursor=None, included_fields=None, page_size=None, sort_ascending=None, sort_by=None)
+

Paginated list of all Dns Forwarder Zones

+ +++ + + + + + + + + + + + + + + + + + +
Parameters:
    +
  • cursor (str or None) – Opaque cursor to be used for getting next page of records (supplied +by current result page) (optional)
  • +
  • included_fields (str or None) – Comma separated list of fields that should be included in query +result (optional)
  • +
  • page_size (long or None) – Maximum number of results to return in this page (server may return +fewer) (optional, default to 1000)
  • +
  • sort_ascending (bool or None) – (optional)
  • +
  • sort_by (str or None) – Field by which records are sorted (optional)
  • +
+
Return type:

com.vmware.nsx_policy.model_client.PolicyDnsForwarderZoneListResult

+
Returns:

com.vmware.nsx_policy.model.PolicyDnsForwarderZoneListResult

+
Raise:

com.vmware.vapi.std.errors_client.ServiceUnavailable +Service Unavailable

+
Raise:

com.vmware.vapi.std.errors_client.InvalidRequest +Bad Request, Precondition Failed

+
Raise:

com.vmware.vapi.std.errors_client.InternalServerError +Internal Server Error

+
Raise:

com.vmware.vapi.std.errors_client.Unauthorized +Forbidden

+
Raise:

com.vmware.vapi.std.errors_client.NotFound +Not Found

+
+
+ +
+
+patch(dns_forwarder_zone_id, policy_dns_forwarder_zone)
+

Update the DNS Forwarder Zone

+ +++ + + + + + + + + + + + + + +
Parameters: +
Raise:

com.vmware.vapi.std.errors_client.ServiceUnavailable +Service Unavailable

+
Raise:

com.vmware.vapi.std.errors_client.InvalidRequest +Bad Request, Precondition Failed

+
Raise:

com.vmware.vapi.std.errors_client.InternalServerError +Internal Server Error

+
Raise:

com.vmware.vapi.std.errors_client.Unauthorized +Forbidden

+
Raise:

com.vmware.vapi.std.errors_client.NotFound +Not Found

+
+
+ +
+
+update(dns_forwarder_zone_id, policy_dns_forwarder_zone)
+

Update the DNS Forwarder Zone

+ +++ + + + + + + + + + + + + + + + + + +
Parameters: +
Return type:

com.vmware.nsx_policy.model_client.PolicyDnsForwarderZone

+
Returns:

com.vmware.nsx_policy.model.PolicyDnsForwarderZone

+
Raise:

com.vmware.vapi.std.errors_client.ServiceUnavailable +Service Unavailable

+
Raise:

com.vmware.vapi.std.errors_client.InvalidRequest +Bad Request, Precondition Failed

+
Raise:

com.vmware.vapi.std.errors_client.InternalServerError +Internal Server Error

+
Raise:

com.vmware.vapi.std.errors_client.Unauthorized +Forbidden

+
Raise:

com.vmware.vapi.std.errors_client.NotFound +Not Found

+
+
+ +
+ +
+
+class com.vmware.nsx_policy.infra_client.Domains(config)
+

Bases: vmware.vapi.bindings.stub.VapiInterface

+
+
+delete(domain_id)
+

Delete the domain along with all the entities contained by this domain. +The groups that are a part of this domain are also deleted along with +the domain.

+ +++ + + + + + + + + + + + + + +
Parameters:domain_id (str) – Domain ID (required)
Raise:com.vmware.vapi.std.errors_client.ServiceUnavailable +Service Unavailable
Raise:com.vmware.vapi.std.errors_client.InvalidRequest +Bad Request, Precondition Failed
Raise:com.vmware.vapi.std.errors_client.InternalServerError +Internal Server Error
Raise:com.vmware.vapi.std.errors_client.Unauthorized +Forbidden
Raise:com.vmware.vapi.std.errors_client.NotFound +Not Found
+
+ +
+
+get(domain_id)
+

Read a domain.

+ +++ + + + + + + + + + + + + + + + + + +
Parameters:domain_id (str) – Domain ID (required)
Return type:com.vmware.nsx_policy.model_client.Domain
Returns:com.vmware.nsx_policy.model.Domain
Raise:com.vmware.vapi.std.errors_client.ServiceUnavailable +Service Unavailable
Raise:com.vmware.vapi.std.errors_client.InvalidRequest +Bad Request, Precondition Failed
Raise:com.vmware.vapi.std.errors_client.InternalServerError +Internal Server Error
Raise:com.vmware.vapi.std.errors_client.Unauthorized +Forbidden
Raise:com.vmware.vapi.std.errors_client.NotFound +Not Found
+
+ +
+
+list(cursor=None, included_fields=None, page_size=None, sort_ascending=None, sort_by=None)
+

Paginated list of all domains for infra.

+ +++ + + + + + + + + + + + + + + + + + +
Parameters:
    +
  • cursor (str or None) – Opaque cursor to be used for getting next page of records (supplied +by current result page) (optional)
  • +
  • included_fields (str or None) – Comma separated list of fields that should be included in query +result (optional)
  • +
  • page_size (long or None) – Maximum number of results to return in this page (server may return +fewer) (optional, default to 1000)
  • +
  • sort_ascending (bool or None) – (optional)
  • +
  • sort_by (str or None) – Field by which records are sorted (optional)
  • +
+
Return type:

com.vmware.nsx_policy.model_client.DomainListResult

+
Returns:

com.vmware.nsx_policy.model.DomainListResult

+
Raise:

com.vmware.vapi.std.errors_client.ServiceUnavailable +Service Unavailable

+
Raise:

com.vmware.vapi.std.errors_client.InvalidRequest +Bad Request, Precondition Failed

+
Raise:

com.vmware.vapi.std.errors_client.InternalServerError +Internal Server Error

+
Raise:

com.vmware.vapi.std.errors_client.Unauthorized +Forbidden

+
Raise:

com.vmware.vapi.std.errors_client.NotFound +Not Found

+
+
+ +
+
+patch(domain_id, domain)
+

If a domain with the domain-id is not already present, create a new +domain. If it already exists, patch the domain

+ +++ + + + + + + + + + + + + + +
Parameters: +
Raise:

com.vmware.vapi.std.errors_client.ServiceUnavailable +Service Unavailable

+
Raise:

com.vmware.vapi.std.errors_client.InvalidRequest +Bad Request, Precondition Failed

+
Raise:

com.vmware.vapi.std.errors_client.InternalServerError +Internal Server Error

+
Raise:

com.vmware.vapi.std.errors_client.Unauthorized +Forbidden

+
Raise:

com.vmware.vapi.std.errors_client.NotFound +Not Found

+
+
+ +
+
+update(domain_id, domain)
+

If a domain with the domain-id is not already present, create a new +domain. If it already exists, update the domain including the nested +groups. This is a full replace

+ +++ + + + + + + + + + + + + + + + + + +
Parameters: +
Return type:

com.vmware.nsx_policy.model_client.Domain

+
Returns:

com.vmware.nsx_policy.model.Domain

+
Raise:

com.vmware.vapi.std.errors_client.ServiceUnavailable +Service Unavailable

+
Raise:

com.vmware.vapi.std.errors_client.InvalidRequest +Bad Request, Precondition Failed

+
Raise:

com.vmware.vapi.std.errors_client.InternalServerError +Internal Server Error

+
Raise:

com.vmware.vapi.std.errors_client.Unauthorized +Forbidden

+
Raise:

com.vmware.vapi.std.errors_client.NotFound +Not Found

+
+
+ +
+ +
+
+class com.vmware.nsx_policy.infra_client.IpfixCollectorProfiles(config)
+

Bases: vmware.vapi.bindings.stub.VapiInterface

+
+
+delete(ipfix_collector_profile_id)
+

API deletes IPFIX collector profile. Flow forwarding to collector will +be stopped.

+ +++ + + + + + + + + + + + + + +
Parameters:ipfix_collector_profile_id (str) – IPFIX collector Profile id (required)
Raise:com.vmware.vapi.std.errors_client.ServiceUnavailable +Service Unavailable
Raise:com.vmware.vapi.std.errors_client.InvalidRequest +Bad Request, Precondition Failed
Raise:com.vmware.vapi.std.errors_client.InternalServerError +Internal Server Error
Raise:com.vmware.vapi.std.errors_client.Unauthorized +Forbidden
Raise:com.vmware.vapi.std.errors_client.NotFound +Not Found
+
+ +
+
+get(ipfix_collector_profile_id)
+

API will return details of IPFIX collector profile. If profile does not +exist, it will return 404.

+ +++ + + + + + + + + + + + + + + + + + +
Parameters:ipfix_collector_profile_id (str) – IPFIX collector profile id (required)
Return type:com.vmware.nsx_policy.model_client.IPFIXCollectorProfile
Returns:com.vmware.nsx_policy.model.IPFIXCollectorProfile
Raise:com.vmware.vapi.std.errors_client.ServiceUnavailable +Service Unavailable
Raise:com.vmware.vapi.std.errors_client.InvalidRequest +Bad Request, Precondition Failed
Raise:com.vmware.vapi.std.errors_client.InternalServerError +Internal Server Error
Raise:com.vmware.vapi.std.errors_client.Unauthorized +Forbidden
Raise:com.vmware.vapi.std.errors_client.NotFound +Not Found
+
+ +
+
+list(cursor=None, included_fields=None, page_size=None, sort_ascending=None, sort_by=None)
+

API will provide list of all IPFIX collector profiles and their +details.

+ +++ + + + + + + + + + + + + + + + + + +
Parameters:
    +
  • cursor (str or None) – Opaque cursor to be used for getting next page of records (supplied +by current result page) (optional)
  • +
  • included_fields (str or None) – Comma separated list of fields that should be included in query +result (optional)
  • +
  • page_size (long or None) – Maximum number of results to return in this page (server may return +fewer) (optional, default to 1000)
  • +
  • sort_ascending (bool or None) – (optional)
  • +
  • sort_by (str or None) – Field by which records are sorted (optional)
  • +
+
Return type:

com.vmware.nsx_policy.model_client.IPFIXCollectorProfileListResult

+
Returns:

com.vmware.nsx_policy.model.IPFIXCollectorProfileListResult

+
Raise:

com.vmware.vapi.std.errors_client.ServiceUnavailable +Service Unavailable

+
Raise:

com.vmware.vapi.std.errors_client.InvalidRequest +Bad Request, Precondition Failed

+
Raise:

com.vmware.vapi.std.errors_client.InternalServerError +Internal Server Error

+
Raise:

com.vmware.vapi.std.errors_client.Unauthorized +Forbidden

+
Raise:

com.vmware.vapi.std.errors_client.NotFound +Not Found

+
+
+ +
+
+patch(ipfix_collector_profile_id, i_pfix_collector_profile)
+

Create a new IPFIX collector profile if the IPFIX collector profile +with given id does not already exist. If the IPFIX collector profile +with the given id already exists, patch with the existing IPFIX +collector profile.

+ +++ + + + + + + + + + + + + + +
Parameters: +
Raise:

com.vmware.vapi.std.errors_client.ServiceUnavailable +Service Unavailable

+
Raise:

com.vmware.vapi.std.errors_client.InvalidRequest +Bad Request, Precondition Failed

+
Raise:

com.vmware.vapi.std.errors_client.InternalServerError +Internal Server Error

+
Raise:

com.vmware.vapi.std.errors_client.Unauthorized +Forbidden

+
Raise:

com.vmware.vapi.std.errors_client.NotFound +Not Found

+
+
+ +
+
+update(ipfix_collector_profile_id, i_pfix_collector_profile)
+

Create or Replace IPFIX collector profile. IPFIX data will be sent to +IPFIX collector port.

+ +++ + + + + + + + + + + + + + + + + + +
Parameters: +
Return type:

com.vmware.nsx_policy.model_client.IPFIXCollectorProfile

+
Returns:

com.vmware.nsx_policy.model.IPFIXCollectorProfile

+
Raise:

com.vmware.vapi.std.errors_client.ServiceUnavailable +Service Unavailable

+
Raise:

com.vmware.vapi.std.errors_client.InvalidRequest +Bad Request, Precondition Failed

+
Raise:

com.vmware.vapi.std.errors_client.InternalServerError +Internal Server Error

+
Raise:

com.vmware.vapi.std.errors_client.Unauthorized +Forbidden

+
Raise:

com.vmware.vapi.std.errors_client.NotFound +Not Found

+
+
+ +
+ +
+
+class com.vmware.nsx_policy.infra_client.Labels(config)
+

Bases: vmware.vapi.bindings.stub.VapiInterface

+
+
+delete(label_id)
+

Delete PolicyLabel object

+ +++ + + + + + + + + + + + + + +
Parameters:label_id (str) – (required)
Raise:com.vmware.vapi.std.errors_client.ServiceUnavailable +Service Unavailable
Raise:com.vmware.vapi.std.errors_client.InvalidRequest +Bad Request, Precondition Failed
Raise:com.vmware.vapi.std.errors_client.InternalServerError +Internal Server Error
Raise:com.vmware.vapi.std.errors_client.Unauthorized +Forbidden
Raise:com.vmware.vapi.std.errors_client.NotFound +Not Found
+
+ +
+
+get(label_id)
+

Read a label.

+ +++ + + + + + + + + + + + + + + + + + +
Parameters:label_id (str) – (required)
Return type:com.vmware.nsx_policy.model_client.PolicyLabel
Returns:com.vmware.nsx_policy.model.PolicyLabel
Raise:com.vmware.vapi.std.errors_client.ServiceUnavailable +Service Unavailable
Raise:com.vmware.vapi.std.errors_client.InvalidRequest +Bad Request, Precondition Failed
Raise:com.vmware.vapi.std.errors_client.InternalServerError +Internal Server Error
Raise:com.vmware.vapi.std.errors_client.Unauthorized +Forbidden
Raise:com.vmware.vapi.std.errors_client.NotFound +Not Found
+
+ +
+
+list(cursor=None, included_fields=None, page_size=None, sort_ascending=None, sort_by=None)
+

Paginated list of all labels for infra.

+ +++ + + + + + + + + + + + + + + + + + +
Parameters:
    +
  • cursor (str or None) – Opaque cursor to be used for getting next page of records (supplied +by current result page) (optional)
  • +
  • included_fields (str or None) – Comma separated list of fields that should be included in query +result (optional)
  • +
  • page_size (long or None) – Maximum number of results to return in this page (server may return +fewer) (optional, default to 1000)
  • +
  • sort_ascending (bool or None) – (optional)
  • +
  • sort_by (str or None) – Field by which records are sorted (optional)
  • +
+
Return type:

com.vmware.nsx_policy.model_client.PolicyLabelListResult

+
Returns:

com.vmware.nsx_policy.model.PolicyLabelListResult

+
Raise:

com.vmware.vapi.std.errors_client.ServiceUnavailable +Service Unavailable

+
Raise:

com.vmware.vapi.std.errors_client.InvalidRequest +Bad Request, Precondition Failed

+
Raise:

com.vmware.vapi.std.errors_client.InternalServerError +Internal Server Error

+
Raise:

com.vmware.vapi.std.errors_client.Unauthorized +Forbidden

+
Raise:

com.vmware.vapi.std.errors_client.NotFound +Not Found

+
+
+ +
+
+patch(label_id, policy_label)
+

Create label if not exists, otherwise take the partial updates. Note, +once the label is created type attribute can not be changed.

+ +++ + + + + + + + + + + + + + + + + + +
Parameters: +
Return type:

com.vmware.nsx_policy.model_client.PolicyLabel

+
Returns:

com.vmware.nsx_policy.model.PolicyLabel

+
Raise:

com.vmware.vapi.std.errors_client.ServiceUnavailable +Service Unavailable

+
Raise:

com.vmware.vapi.std.errors_client.InvalidRequest +Bad Request, Precondition Failed

+
Raise:

com.vmware.vapi.std.errors_client.InternalServerError +Internal Server Error

+
Raise:

com.vmware.vapi.std.errors_client.Unauthorized +Forbidden

+
Raise:

com.vmware.vapi.std.errors_client.NotFound +Not Found

+
+
+ +
+
+update(label_id, policy_label)
+

Create label if not exists, otherwise replaces the existing label. If +label already exists then type attribute cannot be changed.

+ +++ + + + + + + + + + + + + + + + + + +
Parameters: +
Return type:

com.vmware.nsx_policy.model_client.PolicyLabel

+
Returns:

com.vmware.nsx_policy.model.PolicyLabel

+
Raise:

com.vmware.vapi.std.errors_client.ServiceUnavailable +Service Unavailable

+
Raise:

com.vmware.vapi.std.errors_client.InvalidRequest +Bad Request, Precondition Failed

+
Raise:

com.vmware.vapi.std.errors_client.InternalServerError +Internal Server Error

+
Raise:

com.vmware.vapi.std.errors_client.Unauthorized +Forbidden

+
Raise:

com.vmware.vapi.std.errors_client.NotFound +Not Found

+
+
+ +
+ +
+
+class com.vmware.nsx_policy.infra_client.Networks(config)
+

Bases: vmware.vapi.bindings.stub.VapiInterface

+
+
+delete(network_id)
+

Delete network configuration

+ +++ + + + + + + + + + + + + + +
Parameters:network_id (str) – Network ID (required)
Raise:com.vmware.vapi.std.errors_client.ServiceUnavailable +Service Unavailable
Raise:com.vmware.vapi.std.errors_client.InvalidRequest +Bad Request, Precondition Failed
Raise:com.vmware.vapi.std.errors_client.InternalServerError +Internal Server Error
Raise:com.vmware.vapi.std.errors_client.Unauthorized +Forbidden
Raise:com.vmware.vapi.std.errors_client.NotFound +Not Found
+
+ +
+
+get(network_id)
+

Read network configuration

+ +++ + + + + + + + + + + + + + + + + + +
Parameters:network_id (str) – Network ID (required)
Return type:com.vmware.nsx_policy.model_client.Network
Returns:com.vmware.nsx_policy.model.Network
Raise:com.vmware.vapi.std.errors_client.ServiceUnavailable +Service Unavailable
Raise:com.vmware.vapi.std.errors_client.InvalidRequest +Bad Request, Precondition Failed
Raise:com.vmware.vapi.std.errors_client.InternalServerError +Internal Server Error
Raise:com.vmware.vapi.std.errors_client.Unauthorized +Forbidden
Raise:com.vmware.vapi.std.errors_client.NotFound +Not Found
+
+ +
+
+list(cursor=None, included_fields=None, page_size=None, sort_ascending=None, sort_by=None)
+

Paginated list of all network instances

+ +++ + + + + + + + + + + + + + + + + + +
Parameters:
    +
  • cursor (str or None) – Opaque cursor to be used for getting next page of records (supplied +by current result page) (optional)
  • +
  • included_fields (str or None) – Comma separated list of fields that should be included in query +result (optional)
  • +
  • page_size (long or None) – Maximum number of results to return in this page (server may return +fewer) (optional, default to 1000)
  • +
  • sort_ascending (bool or None) – (optional)
  • +
  • sort_by (str or None) – Field by which records are sorted (optional)
  • +
+
Return type:

com.vmware.nsx_policy.model_client.NetworkListResult

+
Returns:

com.vmware.nsx_policy.model.NetworkListResult

+
Raise:

com.vmware.vapi.std.errors_client.ServiceUnavailable +Service Unavailable

+
Raise:

com.vmware.vapi.std.errors_client.InvalidRequest +Bad Request, Precondition Failed

+
Raise:

com.vmware.vapi.std.errors_client.InternalServerError +Internal Server Error

+
Raise:

com.vmware.vapi.std.errors_client.Unauthorized +Forbidden

+
Raise:

com.vmware.vapi.std.errors_client.NotFound +Not Found

+
+
+ +
+
+patch(network_id, network)
+

If network with the network-id is not already present, create a new +networkig instance. If it already exists, update the network instance +with specified attributes.

+ +++ + + + + + + + + + + + + + + + + + +
Parameters: +
Return type:

com.vmware.nsx_policy.model_client.Network

+
Returns:

com.vmware.nsx_policy.model.Network

+
Raise:

com.vmware.vapi.std.errors_client.ServiceUnavailable +Service Unavailable

+
Raise:

com.vmware.vapi.std.errors_client.InvalidRequest +Bad Request, Precondition Failed

+
Raise:

com.vmware.vapi.std.errors_client.InternalServerError +Internal Server Error

+
Raise:

com.vmware.vapi.std.errors_client.Unauthorized +Forbidden

+
Raise:

com.vmware.vapi.std.errors_client.NotFound +Not Found

+
+
+ +
+
+update(network_id, network)
+

If network with the network-id is not already present, create a new +networkig instance. If it already exists, replace the network instance +with this object.

+ +++ + + + + + + + + + + + + + + + + + +
Parameters: +
Return type:

com.vmware.nsx_policy.model_client.Network

+
Returns:

com.vmware.nsx_policy.model.Network

+
Raise:

com.vmware.vapi.std.errors_client.ServiceUnavailable +Service Unavailable

+
Raise:

com.vmware.vapi.std.errors_client.InvalidRequest +Bad Request, Precondition Failed

+
Raise:

com.vmware.vapi.std.errors_client.InternalServerError +Internal Server Error

+
Raise:

com.vmware.vapi.std.errors_client.Unauthorized +Forbidden

+
Raise:

com.vmware.vapi.std.errors_client.NotFound +Not Found

+
+
+ +
+ +
+
+class com.vmware.nsx_policy.infra_client.PartnerServices(config)
+

Bases: vmware.vapi.bindings.stub.VapiInterface

+
+
+get(service_name)
+

Read the specific partner service identified by provided name.

+ +++ + + + + + + + + + + + + + + + + + +
Parameters:service_name (str) – Name of the service (required)
Return type:com.vmware.nsx_policy.model_client.ServiceDefinition
Returns:com.vmware.nsx_policy.model.ServiceDefinition
Raise:com.vmware.vapi.std.errors_client.ServiceUnavailable +Service Unavailable
Raise:com.vmware.vapi.std.errors_client.InvalidRequest +Bad Request, Precondition Failed
Raise:com.vmware.vapi.std.errors_client.InternalServerError +Internal Server Error
Raise:com.vmware.vapi.std.errors_client.Unauthorized +Forbidden
Raise:com.vmware.vapi.std.errors_client.NotFound +Not Found
+
+ +
+
+list(cursor=None, included_fields=None, page_size=None, sort_ascending=None, sort_by=None)
+

Read all the partner services available for service insertion

+ +++ + + + + + + + + + + + + + + + + + +
Parameters:
    +
  • cursor (str or None) – Opaque cursor to be used for getting next page of records (supplied +by current result page) (optional)
  • +
  • included_fields (str or None) – Comma separated list of fields that should be included in query +result (optional)
  • +
  • page_size (long or None) – Maximum number of results to return in this page (server may return +fewer) (optional, default to 1000)
  • +
  • sort_ascending (bool or None) – (optional)
  • +
  • sort_by (str or None) – Field by which records are sorted (optional)
  • +
+
Return type:

com.vmware.nsx_policy.model_client.ServiceInsertionServiceListResult

+
Returns:

com.vmware.nsx_policy.model.ServiceInsertionServiceListResult

+
Raise:

com.vmware.vapi.std.errors_client.ServiceUnavailable +Service Unavailable

+
Raise:

com.vmware.vapi.std.errors_client.InvalidRequest +Bad Request, Precondition Failed

+
Raise:

com.vmware.vapi.std.errors_client.InternalServerError +Internal Server Error

+
Raise:

com.vmware.vapi.std.errors_client.Unauthorized +Forbidden

+
Raise:

com.vmware.vapi.std.errors_client.NotFound +Not Found

+
+
+ +
+ +
+
+class com.vmware.nsx_policy.infra_client.Providers(config)
+

Bases: vmware.vapi.bindings.stub.VapiInterface

+
+
+delete(provider_id)
+

Delete provider

+ +++ + + + + + + + + + + + + + +
Parameters:provider_id (str) – Provider ID (required)
Raise:com.vmware.vapi.std.errors_client.ServiceUnavailable +Service Unavailable
Raise:com.vmware.vapi.std.errors_client.InvalidRequest +Bad Request, Precondition Failed
Raise:com.vmware.vapi.std.errors_client.InternalServerError +Internal Server Error
Raise:com.vmware.vapi.std.errors_client.Unauthorized +Forbidden
Raise:com.vmware.vapi.std.errors_client.NotFound +Not Found
+
+ +
+
+get(provider_id)
+

Read provider

+ +++ + + + + + + + + + + + + + + + + + +
Parameters:provider_id (str) – Provider ID (required)
Return type:com.vmware.nsx_policy.model_client.Provider
Returns:com.vmware.nsx_policy.model.Provider
Raise:com.vmware.vapi.std.errors_client.ServiceUnavailable +Service Unavailable
Raise:com.vmware.vapi.std.errors_client.InvalidRequest +Bad Request, Precondition Failed
Raise:com.vmware.vapi.std.errors_client.InternalServerError +Internal Server Error
Raise:com.vmware.vapi.std.errors_client.Unauthorized +Forbidden
Raise:com.vmware.vapi.std.errors_client.NotFound +Not Found
+
+ +
+
+list(cursor=None, included_fields=None, page_size=None, sort_ascending=None, sort_by=None)
+

Paginated list of all Providers

+ +++ + + + + + + + + + + + + + + + + + +
Parameters:
    +
  • cursor (str or None) – Opaque cursor to be used for getting next page of records (supplied +by current result page) (optional)
  • +
  • included_fields (str or None) – Comma separated list of fields that should be included in query +result (optional)
  • +
  • page_size (long or None) – Maximum number of results to return in this page (server may return +fewer) (optional, default to 1000)
  • +
  • sort_ascending (bool or None) – (optional)
  • +
  • sort_by (str or None) – Field by which records are sorted (optional)
  • +
+
Return type:

com.vmware.nsx_policy.model_client.ProviderListResult

+
Returns:

com.vmware.nsx_policy.model.ProviderListResult

+
Raise:

com.vmware.vapi.std.errors_client.ServiceUnavailable +Service Unavailable

+
Raise:

com.vmware.vapi.std.errors_client.InvalidRequest +Bad Request, Precondition Failed

+
Raise:

com.vmware.vapi.std.errors_client.InternalServerError +Internal Server Error

+
Raise:

com.vmware.vapi.std.errors_client.Unauthorized +Forbidden

+
Raise:

com.vmware.vapi.std.errors_client.NotFound +Not Found

+
+
+ +
+
+patch(provider_id, provider)
+

If a provider with the provider-id is not already present, create a new +provider. If it already exists, update the provider for specified +attributes.

+ +++ + + + + + + + + + + + + + + + + + +
Parameters: +
Return type:

com.vmware.nsx_policy.model_client.Provider

+
Returns:

com.vmware.nsx_policy.model.Provider

+
Raise:

com.vmware.vapi.std.errors_client.ServiceUnavailable +Service Unavailable

+
Raise:

com.vmware.vapi.std.errors_client.InvalidRequest +Bad Request, Precondition Failed

+
Raise:

com.vmware.vapi.std.errors_client.InternalServerError +Internal Server Error

+
Raise:

com.vmware.vapi.std.errors_client.Unauthorized +Forbidden

+
Raise:

com.vmware.vapi.std.errors_client.NotFound +Not Found

+
+
+ +
+
+update(provider_id, provider)
+

If a provider with the provider-id is not already present, create a new +provider. If it already exists, replace the provider instance with the +new object.

+ +++ + + + + + + + + + + + + + + + + + +
Parameters: +
Return type:

com.vmware.nsx_policy.model_client.Provider

+
Returns:

com.vmware.nsx_policy.model.Provider

+
Raise:

com.vmware.vapi.std.errors_client.ServiceUnavailable +Service Unavailable

+
Raise:

com.vmware.vapi.std.errors_client.InvalidRequest +Bad Request, Precondition Failed

+
Raise:

com.vmware.vapi.std.errors_client.InternalServerError +Internal Server Error

+
Raise:

com.vmware.vapi.std.errors_client.Unauthorized +Forbidden

+
Raise:

com.vmware.vapi.std.errors_client.NotFound +Not Found

+
+
+ +
+ +
+
+class com.vmware.nsx_policy.infra_client.Services(config)
+

Bases: vmware.vapi.bindings.stub.VapiInterface

+
+
+delete(service_id)
+

Delete Service

+ +++ + + + + + + + + + + + + + +
Parameters:service_id (str) – Service ID (required)
Raise:com.vmware.vapi.std.errors_client.ServiceUnavailable +Service Unavailable
Raise:com.vmware.vapi.std.errors_client.InvalidRequest +Bad Request, Precondition Failed
Raise:com.vmware.vapi.std.errors_client.InternalServerError +Internal Server Error
Raise:com.vmware.vapi.std.errors_client.Unauthorized +Forbidden
Raise:com.vmware.vapi.std.errors_client.NotFound +Not Found
+
+ +
+
+get(service_id)
+

Read a service

+ +++ + + + + + + + + + + + + + + + + + +
Parameters:service_id (str) – Service ID (required)
Return type:com.vmware.nsx_policy.model_client.Service
Returns:com.vmware.nsx_policy.model.Service
Raise:com.vmware.vapi.std.errors_client.ServiceUnavailable +Service Unavailable
Raise:com.vmware.vapi.std.errors_client.InvalidRequest +Bad Request, Precondition Failed
Raise:com.vmware.vapi.std.errors_client.InternalServerError +Internal Server Error
Raise:com.vmware.vapi.std.errors_client.Unauthorized +Forbidden
Raise:com.vmware.vapi.std.errors_client.NotFound +Not Found
+
+ +
+
+list(cursor=None, included_fields=None, page_size=None, sort_ascending=None, sort_by=None)
+

Paginated list of Services for infra.

+ +++ + + + + + + + + + + + + + + + + + +
Parameters:
    +
  • cursor (str or None) – Opaque cursor to be used for getting next page of records (supplied +by current result page) (optional)
  • +
  • included_fields (str or None) – Comma separated list of fields that should be included in query +result (optional)
  • +
  • page_size (long or None) – Maximum number of results to return in this page (server may return +fewer) (optional, default to 1000)
  • +
  • sort_ascending (bool or None) – (optional)
  • +
  • sort_by (str or None) – Field by which records are sorted (optional)
  • +
+
Return type:

com.vmware.nsx_policy.model_client.ServiceListResult

+
Returns:

com.vmware.nsx_policy.model.ServiceListResult

+
Raise:

com.vmware.vapi.std.errors_client.ServiceUnavailable +Service Unavailable

+
Raise:

com.vmware.vapi.std.errors_client.InvalidRequest +Bad Request, Precondition Failed

+
Raise:

com.vmware.vapi.std.errors_client.InternalServerError +Internal Server Error

+
Raise:

com.vmware.vapi.std.errors_client.Unauthorized +Forbidden

+
Raise:

com.vmware.vapi.std.errors_client.NotFound +Not Found

+
+
+ +
+
+patch(service_id, service)
+

Create a new service if a service with the given ID does not already +exist. Creates new service entries if populated in the service. If a +service with the given ID already exists, patch the service including +the nested service entries.

+ +++ + + + + + + + + + + + + + +
Parameters: +
Raise:

com.vmware.vapi.std.errors_client.ServiceUnavailable +Service Unavailable

+
Raise:

com.vmware.vapi.std.errors_client.InvalidRequest +Bad Request, Precondition Failed

+
Raise:

com.vmware.vapi.std.errors_client.InternalServerError +Internal Server Error

+
Raise:

com.vmware.vapi.std.errors_client.Unauthorized +Forbidden

+
Raise:

com.vmware.vapi.std.errors_client.NotFound +Not Found

+
+
+ +
+
+update(service_id, service)
+

Create a new service if a service with the given ID does not already +exist. Creates new service entries if populated in the service. If a +service with the given ID already exists, update the service including +the nested service entries. This is a full replace.

+ +++ + + + + + + + + + + + + + + + + + +
Parameters: +
Return type:

com.vmware.nsx_policy.model_client.Service

+
Returns:

com.vmware.nsx_policy.model.Service

+
Raise:

com.vmware.vapi.std.errors_client.ServiceUnavailable +Service Unavailable

+
Raise:

com.vmware.vapi.std.errors_client.InvalidRequest +Bad Request, Precondition Failed

+
Raise:

com.vmware.vapi.std.errors_client.InternalServerError +Internal Server Error

+
Raise:

com.vmware.vapi.std.errors_client.Unauthorized +Forbidden

+
Raise:

com.vmware.vapi.std.errors_client.NotFound +Not Found

+
+
+ +
+ +
+
+class com.vmware.nsx_policy.infra_client.StubFactory(stub_config)
+

Bases: vmware.vapi.bindings.stub.StubFactoryBase

+
+ +
+
+

com.vmware.nsx_policy.licenses_client module

+
+
+class com.vmware.nsx_policy.licenses_client.LicensesUsage(config)
+

Bases: vmware.vapi.bindings.stub.VapiInterface

+
+
+get()
+

Returns usage report of all registered modules

+ +++ + + + + + + + + + + + + + + + +
Return type:com.vmware.nsx_policy.model_client.FeatureUsageList
Returns:com.vmware.nsx_policy.model.FeatureUsageList
Raise:com.vmware.vapi.std.errors_client.ServiceUnavailable +Service Unavailable
Raise:com.vmware.vapi.std.errors_client.InvalidRequest +Bad Request, Precondition Failed
Raise:com.vmware.vapi.std.errors_client.InternalServerError +Internal Server Error
Raise:com.vmware.vapi.std.errors_client.Unauthorized +Forbidden
Raise:com.vmware.vapi.std.errors_client.NotFound +Not Found
+
+ +
+ +
+
+class com.vmware.nsx_policy.licenses_client.StubFactory(stub_config)
+

Bases: vmware.vapi.bindings.stub.StubFactoryBase

+
+ +
+
+

com.vmware.nsx_policy.model_client module

+
+
+class com.vmware.nsx_policy.model_client.ALGTypeNSService(alg=None, destination_ports=None, source_ports=None, resource_type='ALGTypeNSService')
+

Bases: vmware.vapi.bindings.struct.VapiStruct

+

An NSService element that represents an ALG protocol

+
+

Tip

+

The arguments are used to initialize data attributes with the same +names.

+
+
+
+ALG_FTP = 'FTP'
+
+ +
+
+ALG_MS_RPC_TCP = 'MS_RPC_TCP'
+
+ +
+
+ALG_MS_RPC_UDP = 'MS_RPC_UDP'
+
+ +
+
+ALG_NBDG_BROADCAST = 'NBDG_BROADCAST'
+
+ +
+
+ALG_NBNS_BROADCAST = 'NBNS_BROADCAST'
+
+ +
+
+ALG_ORACLE_TNS = 'ORACLE_TNS'
+
+ +
+
+ALG_SUN_RPC_TCP = 'SUN_RPC_TCP'
+
+ +
+
+ALG_SUN_RPC_UDP = 'SUN_RPC_UDP'
+
+ +
+
+ALG_TFTP = 'TFTP'
+
+ +
+ +
+
+class com.vmware.nsx_policy.model_client.ALGTypeServiceEntry(alg=None, destination_ports=None, source_ports=None, links=None, schema=None, self_=None, revision=None, create_time=None, create_user=None, last_modified_time=None, last_modified_user=None, protection=None, system_owned=None, description=None, display_name=None, id=None, resource_type='ALGTypeServiceEntry', tags=None, parent_path=None, path=None, relative_path=None, children=None, marked_for_delete=None)
+

Bases: vmware.vapi.bindings.struct.VapiStruct

+

An ServiceEntry that represents an ALG protocol

+
+

Tip

+

The arguments are used to initialize data attributes with the same +names.

+
+
+
+ALG_FTP = 'FTP'
+
+ +
+
+ALG_MS_RPC_TCP = 'MS_RPC_TCP'
+
+ +
+
+ALG_MS_RPC_UDP = 'MS_RPC_UDP'
+
+ +
+
+ALG_NBDG_BROADCAST = 'NBDG_BROADCAST'
+
+ +
+
+ALG_NBNS_BROADCAST = 'NBNS_BROADCAST'
+
+ +
+
+ALG_ORACLE_TNS = 'ORACLE_TNS'
+
+ +
+
+ALG_SUN_RPC_TCP = 'SUN_RPC_TCP'
+
+ +
+
+ALG_SUN_RPC_UDP = 'SUN_RPC_UDP'
+
+ +
+
+ALG_TFTP = 'TFTP'
+
+ +
+ +
+
+class com.vmware.nsx_policy.model_client.AbstractSpace(links=None, schema=None, self_=None, revision=None, create_time=None, create_user=None, last_modified_time=None, last_modified_user=None, protection=None, system_owned=None, description=None, display_name=None, id=None, resource_type=None, tags=None, parent_path=None, path=None, relative_path=None, children=None, marked_for_delete=None, connectivity_strategy=None)
+

Bases: vmware.vapi.bindings.struct.VapiStruct

+

Represents the space in which the policy is being defined

+
+

Tip

+

The arguments are used to initialize data attributes with the same +names.

+
+
+
+CONNECTIVITY_STRATEGY_BLACKLIST = 'BLACKLIST'
+
+ +
+
+CONNECTIVITY_STRATEGY_NONE = 'NONE'
+
+ +
+
+CONNECTIVITY_STRATEGY_WHITELIST = 'WHITELIST'
+
+ +
+ +
+
+class com.vmware.nsx_policy.model_client.AcceptableComponentVersion(links=None, schema=None, self_=None, revision=None, create_time=None, create_user=None, last_modified_time=None, last_modified_user=None, protection=None, system_owned=None, description=None, display_name=None, id=None, resource_type=None, tags=None, acceptable_versions=None, component_type=None)
+

Bases: vmware.vapi.bindings.struct.VapiStruct

+
+

Tip

+

The arguments are used to initialize data attributes with the same +names.

+
+
+
+COMPONENT_TYPE_CCP = 'CCP'
+
+ +
+
+COMPONENT_TYPE_EDGE = 'EDGE'
+
+ +
+
+COMPONENT_TYPE_HOST = 'HOST'
+
+ +
+
+COMPONENT_TYPE_MP = 'MP'
+
+ +
+ +
+
+class com.vmware.nsx_policy.model_client.AcceptableComponentVersionList(results=None)
+

Bases: vmware.vapi.bindings.struct.VapiStruct

+
+

Tip

+

The arguments are used to initialize data attributes with the same +names.

+
+
+ +
+
+class com.vmware.nsx_policy.model_client.ActionableResource(links=None, schema=None, self_=None, revision=None, create_time=None, create_user=None, last_modified_time=None, last_modified_user=None, protection=None, system_owned=None, description=None, display_name=None, id=None, resource_type=None, tags=None, ip_address=None)
+

Bases: vmware.vapi.bindings.struct.VapiStruct

+

Resources managed during restore process

+
+

Tip

+

The arguments are used to initialize data attributes with the same +names.

+
+
+ +
+
+class com.vmware.nsx_policy.model_client.ActionableResourceListResult(links=None, schema=None, self_=None, cursor=None, result_count=None, sort_ascending=None, sort_by=None, results=None)
+

Bases: vmware.vapi.bindings.struct.VapiStruct

+
+

Tip

+

The arguments are used to initialize data attributes with the same +names.

+
+
+ +
+
+class com.vmware.nsx_policy.model_client.AddClusterNodeSpec(controller_role_config=None, display_name=None, external_id=None, mgr_role_config=None)
+

Bases: vmware.vapi.bindings.struct.VapiStruct

+
+

Tip

+

The arguments are used to initialize data attributes with the same +names.

+
+
+ +
+
+class com.vmware.nsx_policy.model_client.AddControllerNodeSpec(clustering_params=None, control_plane_server_certificate=None, host_msg_client_info=None, mpa_msg_client_info=None, node_id=None, type=None)
+

Bases: vmware.vapi.bindings.struct.VapiStruct

+
+

Tip

+

The arguments are used to initialize data attributes with the same +names.

+
+
+
+TYPE_ADDCONTROLLERNODESPEC = 'AddControllerNodeSpec'
+
+ +
+ +
+
+class com.vmware.nsx_policy.model_client.AddManagementNodeSpec(cert_thumbprint=None, mpa_msg_client_info=None, password=None, remote_address=None, type=None, user_name=None)
+

Bases: vmware.vapi.bindings.struct.VapiStruct

+
+

Tip

+

The arguments are used to initialize data attributes with the same +names.

+
+
+
+TYPE_ADDMANAGEMENTNODESPEC = 'AddManagementNodeSpec'
+
+ +
+ +
+
+class com.vmware.nsx_policy.model_client.AdvanceClusterRestoreInput(id=None, resources=None)
+

Bases: vmware.vapi.bindings.struct.VapiStruct

+
+

Tip

+

The arguments are used to initialize data attributes with the same +names.

+
+
+ +
+
+class com.vmware.nsx_policy.model_client.AdvanceClusterRestoreRequest(data=None)
+

Bases: vmware.vapi.bindings.struct.VapiStruct

+
+

Tip

+

The arguments are used to initialize data attributes with the same +names.

+
+
+ +
+
+class com.vmware.nsx_policy.model_client.AdvertiseRule(action=None, description=None, display_name=None, networks=None, rule_filter=None)
+

Bases: vmware.vapi.bindings.struct.VapiStruct

+
+

Tip

+

The arguments are used to initialize data attributes with the same +names.

+
+
+
+ACTION_ALLOW = 'ALLOW'
+
+ +
+
+ACTION_DENY = 'DENY'
+
+ +
+ +
+
+class com.vmware.nsx_policy.model_client.AdvertiseRuleList(links=None, schema=None, self_=None, revision=None, create_time=None, create_user=None, last_modified_time=None, last_modified_user=None, protection=None, system_owned=None, description=None, display_name=None, id=None, resource_type=None, tags=None, logical_router_id=None, rules=None)
+

Bases: vmware.vapi.bindings.struct.VapiStruct

+
+

Tip

+

The arguments are used to initialize data attributes with the same +names.

+
+
+ +
+
+class com.vmware.nsx_policy.model_client.AdvertisedNetwork(advertised_route_type=None, is_advertised=None, network=None, resource=None)
+

Bases: vmware.vapi.bindings.struct.VapiStruct

+
+

Tip

+

The arguments are used to initialize data attributes with the same +names.

+
+
+ +
+
+class com.vmware.nsx_policy.model_client.AdvertisedNetworksListResult(links=None, schema=None, self_=None, cursor=None, result_count=None, sort_ascending=None, sort_by=None, results=None)
+

Bases: vmware.vapi.bindings.struct.VapiStruct

+
+

Tip

+

The arguments are used to initialize data attributes with the same +names.

+
+
+ +
+
+class com.vmware.nsx_policy.model_client.AdvertisementConfig(links=None, schema=None, self_=None, revision=None, create_time=None, create_user=None, last_modified_time=None, last_modified_user=None, protection=None, system_owned=None, description=None, display_name=None, id=None, resource_type=None, tags=None, advertise_lb_snat_ip=None, advertise_lb_vip=None, advertise_nat_routes=None, advertise_nsx_connected_routes=None, advertise_static_routes=None, enabled=None, logical_router_id=None)
+

Bases: vmware.vapi.bindings.struct.VapiStruct

+
+

Tip

+

The arguments are used to initialize data attributes with the same +names.

+
+
+ +
+
+class com.vmware.nsx_policy.model_client.AdvertisementRuleFilter(match_route_types=None, prefix_operator=None)
+

Bases: vmware.vapi.bindings.struct.VapiStruct

+

To filter the routes advertised by the TIER1 LR to TIER0 LR. Filtering will +be based on the type of route and the prefix operator configured.

+
+

Tip

+

The arguments are used to initialize data attributes with the same +names.

+
+
+
+MATCH_ROUTE_TYPES_ANY = 'ANY'
+
+ +
+
+MATCH_ROUTE_TYPES_NSX_CONNECTED = 'NSX_CONNECTED'
+
+ +
+
+MATCH_ROUTE_TYPES_STATIC = 'STATIC'
+
+ +
+
+MATCH_ROUTE_TYPES_T1_LB_SNAT = 'T1_LB_SNAT'
+
+ +
+
+MATCH_ROUTE_TYPES_T1_LB_VIP = 'T1_LB_VIP'
+
+ +
+
+MATCH_ROUTE_TYPES_T1_NAT = 'T1_NAT'
+
+ +
+
+PREFIX_OPERATOR_EQ = 'EQ'
+
+ +
+
+PREFIX_OPERATOR_GE = 'GE'
+
+ +
+ +
+
+class com.vmware.nsx_policy.model_client.AggregateDataResponse(links=None, schema=None, self_=None, cursor=None, result_count=None, sort_ascending=None, sort_by=None, results=None)
+

Bases: vmware.vapi.bindings.struct.VapiStruct

+

Final data aggregation response. The results array holds the primary and +the related objects

+
+

Tip

+

The arguments are used to initialize data attributes with the same +names.

+
+
+ +
+
+class com.vmware.nsx_policy.model_client.AggregateL2VpnPeerConfig(l2vpn_path=None, l2vpn_peer_config_per_enforcement_point=None)
+

Bases: vmware.vapi.bindings.struct.VapiStruct

+

Aggregate of L2Vpn peer config across Enforcement Points.

+
+

Tip

+

The arguments are used to initialize data attributes with the same +names.

+
+
+ +
+
+class com.vmware.nsx_policy.model_client.AggregateL2VpnStatistics(intent_path=None, l2vpn_statistics_per_enforcement_point=None)
+

Bases: vmware.vapi.bindings.struct.VapiStruct

+

Aggregate of L2Vpn Statistics across Enforcement Points.

+
+

Tip

+

The arguments are used to initialize data attributes with the same +names.

+
+
+ +
+
+class com.vmware.nsx_policy.model_client.AggregateL3VpnStatistics(intent_path=None, l3vpn_statistics_per_enforcement_point=None)
+

Bases: vmware.vapi.bindings.struct.VapiStruct

+

Aggregate of L3Vpn Statistics across Enforcement Points.

+
+

Tip

+

The arguments are used to initialize data attributes with the same +names.

+
+
+ +
+
+class com.vmware.nsx_policy.model_client.AggregateRequest(included_fields=None, alias=None, filters=None, resource_type=None)
+

Bases: vmware.vapi.bindings.struct.VapiStruct

+

Common request parameters for the primary/related types

+
+

Tip

+

The arguments are used to initialize data attributes with the same +names.

+
+
+ +
+
+class com.vmware.nsx_policy.model_client.AggregateResponse(primary=None, related=None)
+

Bases: vmware.vapi.bindings.struct.VapiStruct

+

Response for the primary/related types

+
+

Tip

+

The arguments are used to initialize data attributes with the same +names.

+
+
+ +
+
+class com.vmware.nsx_policy.model_client.AllClusterGroupStatus(cluster_id=None, groups=None)
+

Bases: vmware.vapi.bindings.struct.VapiStruct

+

A list of the statuses of all the groups in the cluster.

+
+

Tip

+

The arguments are used to initialize data attributes with the same +names.

+
+
+ +
+
+class com.vmware.nsx_policy.model_client.AllocationIpAddress(links=None, schema=None, self_=None, revision=None, create_time=None, create_user=None, last_modified_time=None, last_modified_user=None, protection=None, system_owned=None, description=None, display_name=None, id=None, resource_type=None, tags=None, allocation_id=None)
+

Bases: vmware.vapi.bindings.struct.VapiStruct

+

Allocation parameters for the IP address (e.g. specific IP address) can be +specified. Tags, display_name and description attributes are not supported +in this release.

+
+

Tip

+

The arguments are used to initialize data attributes with the same +names.

+
+
+ +
+
+class com.vmware.nsx_policy.model_client.AllocationIpAddressListResult(links=None, schema=None, self_=None, cursor=None, result_count=None, sort_ascending=None, sort_by=None, results=None)
+

Bases: vmware.vapi.bindings.struct.VapiStruct

+
+

Tip

+

The arguments are used to initialize data attributes with the same +names.

+
+
+ +
+
+class com.vmware.nsx_policy.model_client.ApiError(details=None, error_code=None, error_data=None, error_message=None, module_name=None, related_errors=None)
+

Bases: vmware.vapi.bindings.struct.VapiStruct

+

Detailed information about an API error

+
+

Tip

+

The arguments are used to initialize data attributes with the same +names.

+
+
+ +
+
+class com.vmware.nsx_policy.model_client.AppliedTos(logical_ports=None, logical_switches=None, nsgroups=None)
+

Bases: vmware.vapi.bindings.struct.VapiStruct

+

Entity lists where the profile will be enabled on.

+
+

Tip

+

The arguments are used to initialize data attributes with the same +names.

+
+
+ +
+
+class com.vmware.nsx_policy.model_client.AssignedByDhcp(resource_type='AssignedByDhcp')
+

Bases: vmware.vapi.bindings.struct.VapiStruct

+

This type can be specified in ip assignment spec of host switch if DHCP +based IP assignment is desired for host switch virtual tunnel endpoints.

+
+

Tip

+

The arguments are used to initialize data attributes with the same +names.

+
+
+ +
+
+class com.vmware.nsx_policy.model_client.AssociationListResult(links=None, schema=None, self_=None, cursor=None, result_count=None, sort_ascending=None, sort_by=None, results=None)
+

Bases: vmware.vapi.bindings.struct.VapiStruct

+
+

Tip

+

The arguments are used to initialize data attributes with the same +names.

+
+
+ +
+
+class com.vmware.nsx_policy.model_client.AttachmentContext(allocate_addresses=None, resource_type='AttachmentContext')
+

Bases: vmware.vapi.bindings.struct.VapiStruct

+
+

Tip

+

The arguments are used to initialize data attributes with the same +names.

+
+
+
+ALLOCATE_ADDRESSES_BOTH = 'Both'
+
+ +
+
+ALLOCATE_ADDRESSES_IPPOOL = 'IpPool'
+
+ +
+
+ALLOCATE_ADDRESSES_MACPOOL = 'MacPool'
+
+ +
+
+ALLOCATE_ADDRESSES_NONE = 'None'
+
+ +
+ +
+
+class com.vmware.nsx_policy.model_client.Attribute(attribute_type=None, display_name=None, key=None, value=None)
+

Bases: vmware.vapi.bindings.struct.VapiStruct

+

Attribute specific to a partner. There attributes are passed on to the +partner appliance and is opaque to the NSX Manager. The Attributes used by +the partner applicance.

+
+

Tip

+

The arguments are used to initialize data attributes with the same +names.

+
+
+
+ATTRIBUTE_TYPE_IP_ADDRESS = 'IP_ADDRESS'
+
+ +
+
+ATTRIBUTE_TYPE_LONG = 'LONG'
+
+ +
+
+ATTRIBUTE_TYPE_PASSWORD = 'PASSWORD'
+
+ +
+
+ATTRIBUTE_TYPE_PORT = 'PORT'
+
+ +
+
+ATTRIBUTE_TYPE_STRING = 'STRING'
+
+ +
+ +
+
+class com.vmware.nsx_policy.model_client.AttributeVal(data_type=None, key=None, multivalue=None, values=None)
+

Bases: vmware.vapi.bindings.struct.VapiStruct

+

Contains type specific properties of generic realized entity

+
+

Tip

+

The arguments are used to initialize data attributes with the same +names.

+
+
+
+DATA_TYPE_BOOLEAN = 'BOOLEAN'
+
+ +
+
+DATA_TYPE_DATE = 'DATE'
+
+ +
+
+DATA_TYPE_INTEGER = 'INTEGER'
+
+ +
+
+DATA_TYPE_STRING = 'STRING'
+
+ +
+ +
+
+class com.vmware.nsx_policy.model_client.BFDDiagnosticCount(administratively_down_count=None, concatenated_path_down_count=None, control_detection_time_expired_count=None, echo_function_failed_count=None, forwarding_plane_reset_count=None, neighbor_signaled_session_down_count=None, no_diagnostic_count=None, path_down_count=None, reverse_concatenated_path_down_count=None)
+

Bases: vmware.vapi.bindings.struct.VapiStruct

+
+

Tip

+

The arguments are used to initialize data attributes with the same +names.

+
+
+ +
+
+class com.vmware.nsx_policy.model_client.BFDProperties(active=None, diagnostic=None, forwarding=None, remote_diagnostic=None, remote_state=None, state=None)
+

Bases: vmware.vapi.bindings.struct.VapiStruct

+

BFD information

+
+

Tip

+

The arguments are used to initialize data attributes with the same +names.

+
+
+
+REMOTE_STATE_ADMIN_DOWN = 'ADMIN_DOWN'
+
+ +
+
+REMOTE_STATE_DOWN = 'DOWN'
+
+ +
+
+REMOTE_STATE_INIT = 'INIT'
+
+ +
+
+REMOTE_STATE_UNKNOWN_STATE = 'UNKNOWN_STATE'
+
+ +
+
+REMOTE_STATE_UP = 'UP'
+
+ +
+
+STATE_ADMIN_DOWN = 'ADMIN_DOWN'
+
+ +
+
+STATE_DOWN = 'DOWN'
+
+ +
+
+STATE_INIT = 'INIT'
+
+ +
+
+STATE_UNKNOWN_STATE = 'UNKNOWN_STATE'
+
+ +
+
+STATE_UP = 'UP'
+
+ +
+ +
+
+class com.vmware.nsx_policy.model_client.BFDStatusCount(bfd_admin_down_count=None, bfd_down_count=None, bfd_init_count=None, bfd_up_count=None)
+

Bases: vmware.vapi.bindings.struct.VapiStruct

+
+

Tip

+

The arguments are used to initialize data attributes with the same +names.

+
+
+ +
+
+class com.vmware.nsx_policy.model_client.BGPCommunityList(links=None, schema=None, self_=None, revision=None, create_time=None, create_user=None, last_modified_time=None, last_modified_user=None, protection=None, system_owned=None, description=None, display_name=None, id=None, resource_type=None, tags=None, communities=None, community_type=None, logical_router_id=None)
+

Bases: vmware.vapi.bindings.struct.VapiStruct

+
+

Tip

+

The arguments are used to initialize data attributes with the same +names.

+
+
+
+COMMUNITY_TYPE_NORMALBGPCOMMUNITY = 'NormalBGPCommunity'
+
+ +
+ +
+
+class com.vmware.nsx_policy.model_client.BGPCommunityListListResult(links=None, schema=None, self_=None, cursor=None, result_count=None, sort_ascending=None, sort_by=None, results=None)
+

Bases: vmware.vapi.bindings.struct.VapiStruct

+
+

Tip

+

The arguments are used to initialize data attributes with the same +names.

+
+
+ +
+
+class com.vmware.nsx_policy.model_client.BackupConfiguration(backup_enabled=None, backup_schedule=None, inventory_summary_interval=None, passphrase=None, remote_file_server=None)
+

Bases: vmware.vapi.bindings.struct.VapiStruct

+

Configuration for taking manual/automated backup

+
+

Tip

+

The arguments are used to initialize data attributes with the same +names.

+
+
+ +
+
+class com.vmware.nsx_policy.model_client.BackupOperationHistory(cluster_backup_statuses=None, inventory_backup_statuses=None, node_backup_statuses=None)
+

Bases: vmware.vapi.bindings.struct.VapiStruct

+

Past backup operation details

+
+

Tip

+

The arguments are used to initialize data attributes with the same +names.

+
+
+ +
+
+class com.vmware.nsx_policy.model_client.BackupOperationStatus(backup_id=None, end_time=None, error_code=None, error_message=None, start_time=None, success=None)
+

Bases: vmware.vapi.bindings.struct.VapiStruct

+

Backup operation status

+
+

Tip

+

The arguments are used to initialize data attributes with the same +names.

+
+
+
+ERROR_CODE_AUTHENTICATION_FAILURE = 'BACKUP_AUTHENTICATION_FAILURE'
+
+ +
+
+ERROR_CODE_BAD_FINGERPRINT = 'BACKUP_BAD_FINGERPRINT'
+
+ +
+
+ERROR_CODE_GENERIC_ERROR = 'BACKUP_GENERIC_ERROR'
+
+ +
+
+ERROR_CODE_NOT_RUN_ON_MASTER = 'BACKUP_NOT_RUN_ON_MASTER'
+
+ +
+
+ERROR_CODE_PERMISSION_ERROR = 'BACKUP_PERMISSION_ERROR'
+
+ +
+
+ERROR_CODE_SERVER_UNREACHABLE = 'BACKUP_SERVER_UNREACHABLE'
+
+ +
+
+ERROR_CODE_TIMEOUT = 'BACKUP_TIMEOUT'
+
+ +
+ +
+
+class com.vmware.nsx_policy.model_client.BackupSchedule(resource_type='BackupSchedule')
+

Bases: vmware.vapi.bindings.struct.VapiStruct

+

Abstract base type for Weekly or Interval Backup Schedule

+
+

Tip

+

The arguments are used to initialize data attributes with the same +names.

+
+
+
+RESOURCE_TYPE_INTERVALBACKUPSCHEDULE = 'IntervalBackupSchedule'
+
+ +
+
+RESOURCE_TYPE_WEEKLYBACKUPSCHEDULE = 'WeeklyBackupSchedule'
+
+ +
+ +
+
+class com.vmware.nsx_policy.model_client.BaseHostSwitchProfile(links=None, schema=None, self_=None, revision=None, create_time=None, create_user=None, last_modified_time=None, last_modified_user=None, protection=None, system_owned=None, description=None, display_name=None, id=None, resource_type='BaseHostSwitchProfile', tags=None, required_capabilities=None)
+

Bases: vmware.vapi.bindings.struct.VapiStruct

+
+

Tip

+

The arguments are used to initialize data attributes with the same +names.

+
+
+
+RESOURCE_TYPE_EXTRACONFIGHOSTSWITCHPROFILE = 'ExtraConfigHostSwitchProfile'
+
+ +
+
+RESOURCE_TYPE_LLDPHOSTSWITCHPROFILE = 'LldpHostSwitchProfile'
+
+ +
+
+RESOURCE_TYPE_NIOCPROFILE = 'NiocProfile'
+
+ +
+
+RESOURCE_TYPE_UPLINKHOSTSWITCHPROFILE = 'UplinkHostSwitchProfile'
+
+ +
+ +
+
+class com.vmware.nsx_policy.model_client.BaseNodeAggregateInfo(display_name=None, id=None, node_interface_properties=None, node_interface_statistics=None, node_status=None, node_status_properties=None)
+

Bases: vmware.vapi.bindings.struct.VapiStruct

+
+

Tip

+

The arguments are used to initialize data attributes with the same +names.

+
+
+ +
+
+class com.vmware.nsx_policy.model_client.BasePolicyServiceInstance(links=None, schema=None, self_=None, revision=None, create_time=None, create_user=None, last_modified_time=None, last_modified_user=None, protection=None, system_owned=None, description=None, display_name=None, id=None, resource_type=None, tags=None, parent_path=None, path=None, relative_path=None, children=None, marked_for_delete=None, deployment_mode=None, partner_service_name=None, transport_type=None)
+

Bases: vmware.vapi.bindings.struct.VapiStruct

+

Represents an instance of partner Service and its configuration.

+
+

Tip

+

The arguments are used to initialize data attributes with the same +names.

+
+
+
+DEPLOYMENT_MODE_ACTIVE_STANDBY = 'ACTIVE_STANDBY'
+
+ +
+
+DEPLOYMENT_MODE_STAND_ALONE = 'STAND_ALONE'
+
+ +
+
+TRANSPORT_TYPE_L2_BRIDGE = 'L2_BRIDGE'
+
+ +
+
+TRANSPORT_TYPE_L3_ROUTED = 'L3_ROUTED'
+
+ +
+ +
+
+class com.vmware.nsx_policy.model_client.BasePolicyServiceInstanceListResult(links=None, schema=None, self_=None, cursor=None, result_count=None, sort_ascending=None, sort_by=None, results=None)
+

Bases: vmware.vapi.bindings.struct.VapiStruct

+

Collection of all SI objects

+
+

Tip

+

The arguments are used to initialize data attributes with the same +names.

+
+
+ +
+
+class com.vmware.nsx_policy.model_client.BaseProviderInterface(links=None, schema=None, self_=None, revision=None, create_time=None, create_user=None, last_modified_time=None, last_modified_user=None, protection=None, system_owned=None, description=None, display_name=None, id=None, resource_type=None, tags=None, parent_path=None, path=None, relative_path=None, children=None, marked_for_delete=None, subnets=None)
+

Bases: vmware.vapi.bindings.struct.VapiStruct

+

Provider interface configuration for external connectivity

+
+

Tip

+

The arguments are used to initialize data attributes with the same +names.

+
+
+ +
+
+class com.vmware.nsx_policy.model_client.BaseProviderInterfaceListResult(links=None, schema=None, self_=None, cursor=None, result_count=None, sort_ascending=None, sort_by=None, results=None)
+

Bases: vmware.vapi.bindings.struct.VapiStruct

+

Paged collection of all Interfaces

+
+

Tip

+

The arguments are used to initialize data attributes with the same +names.

+
+
+ +
+
+class com.vmware.nsx_policy.model_client.BaseServiceInstance(links=None, schema=None, self_=None, revision=None, create_time=None, create_user=None, last_modified_time=None, last_modified_user=None, protection=None, system_owned=None, description=None, display_name=None, id=None, resource_type='BaseServiceInstance', tags=None, deployment_mode=None, on_failure_policy=None, service_id=None, transport_type=None)
+

Bases: vmware.vapi.bindings.struct.VapiStruct

+

The deployment of a registered service. service instance is instantiation +of service.

+
+

Tip

+

The arguments are used to initialize data attributes with the same +names.

+
+
+
+DEPLOYMENT_MODE_ACTIVE_STANDBY = 'ACTIVE_STANDBY'
+
+ +
+
+DEPLOYMENT_MODE_STAND_ALONE = 'STAND_ALONE'
+
+ +
+
+ON_FAILURE_POLICY_ALLOW = 'ALLOW'
+
+ +
+
+ON_FAILURE_POLICY_BLOCK = 'BLOCK'
+
+ +
+
+RESOURCE_TYPE_BYODSERVICEINSTANCE = 'ByodServiceInstance'
+
+ +
+
+RESOURCE_TYPE_SERVICEINSTANCE = 'ServiceInstance'
+
+ +
+
+TRANSPORT_TYPE_L2_BRIDGE = 'L2_BRIDGE'
+
+ +
+
+TRANSPORT_TYPE_L3_ROUTED = 'L3_ROUTED'
+
+ +
+ +
+
+class com.vmware.nsx_policy.model_client.BaseSwitchingProfile(links=None, schema=None, self_=None, revision=None, create_time=None, create_user=None, last_modified_time=None, last_modified_user=None, protection=None, system_owned=None, description=None, display_name=None, id=None, resource_type='BaseSwitchingProfile', tags=None, required_capabilities=None)
+

Bases: vmware.vapi.bindings.struct.VapiStruct

+
+

Tip

+

The arguments are used to initialize data attributes with the same +names.

+
+
+ +
+
+class com.vmware.nsx_policy.model_client.BatchRequest(continue_on_error=None, requests=None)
+

Bases: vmware.vapi.bindings.struct.VapiStruct

+

A set of operations to be performed in a single batch

+
+

Tip

+

The arguments are used to initialize data attributes with the same +names.

+
+
+ +
+
+class com.vmware.nsx_policy.model_client.BatchRequestItem(body=None, method=None, uri=None)
+

Bases: vmware.vapi.bindings.struct.VapiStruct

+

A single request within a batch of operations

+
+

Tip

+

The arguments are used to initialize data attributes with the same +names.

+
+
+
+METHOD_DELETE = 'DELETE'
+
+ +
+
+METHOD_GET = 'GET'
+
+ +
+
+METHOD_PATCH = 'PATCH'
+
+ +
+
+METHOD_POST = 'POST'
+
+ +
+
+METHOD_PUT = 'PUT'
+
+ +
+ +
+
+class com.vmware.nsx_policy.model_client.BatchResponse(has_errors=None, results=None, rolled_back=None)
+

Bases: vmware.vapi.bindings.struct.VapiStruct

+

The reponse to a batch operation

+
+

Tip

+

The arguments are used to initialize data attributes with the same +names.

+
+
+ +
+
+class com.vmware.nsx_policy.model_client.BatchResponseItem(body=None, code=None, headers=None)
+

Bases: vmware.vapi.bindings.struct.VapiStruct

+

A single respose in a list of batched responses

+
+

Tip

+

The arguments are used to initialize data attributes with the same +names.

+
+
+ +
+
+class com.vmware.nsx_policy.model_client.BfdConfig(links=None, schema=None, self_=None, revision=None, create_time=None, create_user=None, last_modified_time=None, last_modified_user=None, protection=None, system_owned=None, description=None, display_name=None, id=None, resource_type=None, tags=None, declare_dead_multiple=None, enabled=None, logical_router_id=None, receive_interval=None, transmit_interval=None)
+

Bases: vmware.vapi.bindings.struct.VapiStruct

+

BFD configuration for LogicalRouter

+
+

Tip

+

The arguments are used to initialize data attributes with the same +names.

+
+
+ +
+
+class com.vmware.nsx_policy.model_client.BfdConfigParameters(declare_dead_multiple=None, receive_interval=None, transmit_interval=None)
+

Bases: vmware.vapi.bindings.struct.VapiStruct

+

BFD configuration for the given Peer.

+
+

Tip

+

The arguments are used to initialize data attributes with the same +names.

+
+
+ +
+
+class com.vmware.nsx_policy.model_client.BfdHealthMonitoringProfile(enabled=None, probe_interval=None, links=None, schema=None, self_=None, revision=None, create_time=None, create_user=None, last_modified_time=None, last_modified_user=None, protection=None, system_owned=None, description=None, display_name=None, id=None, resource_type='BfdHealthMonitoringProfile', tags=None)
+

Bases: vmware.vapi.bindings.struct.VapiStruct

+

Profile for BFD health monitoring

+
+

Tip

+

The arguments are used to initialize data attributes with the same +names.

+
+
+ +
+
+class com.vmware.nsx_policy.model_client.BgpConfig(links=None, schema=None, self_=None, revision=None, create_time=None, create_user=None, last_modified_time=None, last_modified_user=None, protection=None, system_owned=None, description=None, display_name=None, id=None, resource_type=None, tags=None, as_num=None, as_number=None, ecmp=None, enabled=None, graceful_restart=None, logical_router_id=None, route_aggregation=None)
+

Bases: vmware.vapi.bindings.struct.VapiStruct

+
+

Tip

+

The arguments are used to initialize data attributes with the same +names.

+
+
+ +
+
+class com.vmware.nsx_policy.model_client.BgpNeighbor(links=None, schema=None, self_=None, revision=None, create_time=None, create_user=None, last_modified_time=None, last_modified_user=None, protection=None, system_owned=None, description=None, display_name=None, id=None, resource_type=None, tags=None, address_families=None, bfd_config=None, enable_bfd=None, enabled=None, filter_in_ipprefixlist_id=None, filter_in_routemap_id=None, filter_out_ipprefixlist_id=None, filter_out_routemap_id=None, hold_down_timer=None, keep_alive_timer=None, logical_router_id=None, maximum_hop_limit=None, neighbor_address=None, password=None, remote_as=None, remote_as_num=None, source_address=None, source_addresses=None)
+

Bases: vmware.vapi.bindings.struct.VapiStruct

+
+

Tip

+

The arguments are used to initialize data attributes with the same +names.

+
+
+ +
+
+class com.vmware.nsx_policy.model_client.BgpNeighborAddressFamily(enabled=None, in_filter_ipprefixlist_id=None, in_filter_routemap_id=None, out_filter_ipprefixlist_id=None, out_filter_routemap_id=None, type=None)
+

Bases: vmware.vapi.bindings.struct.VapiStruct

+
+

Tip

+

The arguments are used to initialize data attributes with the same +names.

+
+
+
+TYPE_IPV4_UNICAST = 'IPV4_UNICAST'
+
+ +
+
+TYPE_VPNV4_UNICAST = 'VPNV4_UNICAST'
+
+ +
+ +
+
+class com.vmware.nsx_policy.model_client.BgpNeighborConfig(links=None, schema=None, self_=None, revision=None, create_time=None, create_user=None, last_modified_time=None, last_modified_user=None, protection=None, system_owned=None, description=None, display_name=None, id=None, resource_type=None, tags=None, parent_path=None, path=None, relative_path=None, children=None, marked_for_delete=None, neighbor_address=None, password=None, remote_as_num=None)
+

Bases: vmware.vapi.bindings.struct.VapiStruct

+

Contains information necessary to configure a BGP neighbor

+
+

Tip

+

The arguments are used to initialize data attributes with the same +names.

+
+
+ +
+
+class com.vmware.nsx_policy.model_client.BgpNeighborConfigListResult(links=None, schema=None, self_=None, cursor=None, result_count=None, sort_ascending=None, sort_by=None, results=None)
+

Bases: vmware.vapi.bindings.struct.VapiStruct

+

Paged collection of BGP Neighbor Configs

+
+

Tip

+

The arguments are used to initialize data attributes with the same +names.

+
+
+ +
+
+class com.vmware.nsx_policy.model_client.BgpNeighborListResult(links=None, schema=None, self_=None, cursor=None, result_count=None, sort_ascending=None, sort_by=None, results=None)
+

Bases: vmware.vapi.bindings.struct.VapiStruct

+
+

Tip

+

The arguments are used to initialize data attributes with the same +names.

+
+
+ +
+
+class com.vmware.nsx_policy.model_client.BgpNeighborStatus(announced_capabilities=None, connection_drop_count=None, connection_state=None, established_connection_count=None, graceful_restart=None, hold_time=None, keep_alive_interval=None, local_port=None, lr_component_id=None, messages_received=None, messages_sent=None, negotiated_capability=None, neighbor_address=None, neighbor_router_id=None, remote_as_number=None, remote_port=None, source_address=None, time_since_established=None, total_in_prefix_count=None, total_out_prefix_count=None, transport_node=None)
+

Bases: vmware.vapi.bindings.struct.VapiStruct

+
+

Tip

+

The arguments are used to initialize data attributes with the same +names.

+
+
+
+CONNECTION_STATE_ACTIVE = 'ACTIVE'
+
+ +
+
+CONNECTION_STATE_CONNECT = 'CONNECT'
+
+ +
+
+CONNECTION_STATE_ESTABLISHED = 'ESTABLISHED'
+
+ +
+
+CONNECTION_STATE_IDLE = 'IDLE'
+
+ +
+
+CONNECTION_STATE_INVALID = 'INVALID'
+
+ +
+
+CONNECTION_STATE_OPEN_CONFIRM = 'OPEN_CONFIRM'
+
+ +
+
+CONNECTION_STATE_OPEN_SENT = 'OPEN_SENT'
+
+ +
+ +
+
+class com.vmware.nsx_policy.model_client.BgpNeighborsStatusListResult(links=None, schema=None, self_=None, cursor=None, result_count=None, sort_ascending=None, sort_by=None, last_update_timestamp=None, logical_router_id=None, logical_router_name=None, results=None)
+

Bases: vmware.vapi.bindings.struct.VapiStruct

+
+

Tip

+

The arguments are used to initialize data attributes with the same +names.

+
+
+ +
+
+class com.vmware.nsx_policy.model_client.BgpRouteAggregation(prefix=None, summary_only=None)
+

Bases: vmware.vapi.bindings.struct.VapiStruct

+
+

Tip

+

The arguments are used to initialize data attributes with the same +names.

+
+
+ +
+
+class com.vmware.nsx_policy.model_client.BgpRoutingConfig(links=None, schema=None, self_=None, revision=None, create_time=None, create_user=None, last_modified_time=None, last_modified_user=None, protection=None, system_owned=None, description=None, display_name=None, id=None, resource_type=None, tags=None, parent_path=None, path=None, relative_path=None, children=None, marked_for_delete=None, local_as_num=None)
+

Bases: vmware.vapi.bindings.struct.VapiStruct

+

Contains BGP routing configuration

+
+

Tip

+

The arguments are used to initialize data attributes with the same +names.

+
+
+ +
+
+class com.vmware.nsx_policy.model_client.BpduFilter(enabled=None, white_list=None)
+

Bases: vmware.vapi.bindings.struct.VapiStruct

+

BPDU filter configuration

+
+

Tip

+

The arguments are used to initialize data attributes with the same +names.

+
+
+ +
+
+class com.vmware.nsx_policy.model_client.BridgeCluster(links=None, schema=None, self_=None, revision=None, create_time=None, create_user=None, last_modified_time=None, last_modified_user=None, protection=None, system_owned=None, description=None, display_name=None, id=None, resource_type=None, tags=None, bridge_nodes=None, cluster_profile_bindings=None)
+

Bases: vmware.vapi.bindings.struct.VapiStruct

+

Bridge Cluster

+
+

Tip

+

The arguments are used to initialize data attributes with the same +names.

+
+
+ +
+
+class com.vmware.nsx_policy.model_client.BridgeClusterListResult(links=None, schema=None, self_=None, cursor=None, result_count=None, sort_ascending=None, sort_by=None, results=None)
+

Bases: vmware.vapi.bindings.struct.VapiStruct

+

Bridge cluster queries result

+
+

Tip

+

The arguments are used to initialize data attributes with the same +names.

+
+
+ +
+
+class com.vmware.nsx_policy.model_client.BridgeClusterNode(ha_mac=None, transport_node_id=None)
+

Bases: vmware.vapi.bindings.struct.VapiStruct

+

Bridge transport node

+
+

Tip

+

The arguments are used to initialize data attributes with the same +names.

+
+
+ +
+
+class com.vmware.nsx_policy.model_client.BridgeEndpoint(links=None, schema=None, self_=None, revision=None, create_time=None, create_user=None, last_modified_time=None, last_modified_user=None, protection=None, system_owned=None, description=None, display_name=None, id=None, resource_type=None, tags=None, bridge_cluster_id=None, bridge_endpoint_profile_id=None, firewall_sections=None, ha_enable=None, vlan=None, vlan_transport_zone_id=None)
+

Bases: vmware.vapi.bindings.struct.VapiStruct

+

A bridge endpoint can be created on a bridge cluster or on an edge cluster. +Few of the properties of this class will not be used depending on the type +of bridge endpoint being created. When creating a bridge endpoint on a +bridge cluster, following propeties will be used: vlan, bridge_cluster_id +and ha_enable. Similarly, for creating a bridge endpoint on an edge cluster +following properties will be used: vlan, bridge_endpoint_profile_id and +vlan_transport_zone_id.

+
+

Tip

+

The arguments are used to initialize data attributes with the same +names.

+
+
+ +
+
+class com.vmware.nsx_policy.model_client.BridgeEndpointListResult(links=None, schema=None, self_=None, cursor=None, result_count=None, sort_ascending=None, sort_by=None, results=None)
+

Bases: vmware.vapi.bindings.struct.VapiStruct

+

Bridge Endpoint queries result

+
+

Tip

+

The arguments are used to initialize data attributes with the same +names.

+
+
+ +
+
+class com.vmware.nsx_policy.model_client.BridgeEndpointProfile(links=None, schema=None, self_=None, revision=None, create_time=None, create_user=None, last_modified_time=None, last_modified_user=None, protection=None, system_owned=None, description=None, display_name=None, id=None, resource_type=None, tags=None, edge_cluster_id=None, edge_cluster_member_indexes=None, failover_mode=None, high_availability_mode=None)
+

Bases: vmware.vapi.bindings.struct.VapiStruct

+

Bridge Endpoint Profile

+
+

Tip

+

The arguments are used to initialize data attributes with the same +names.

+
+
+
+FAILOVER_MODE_NON_PREEMPTIVE = 'NON_PREEMPTIVE'
+
+ +
+
+FAILOVER_MODE_PREEMPTIVE = 'PREEMPTIVE'
+
+ +
+
+HIGH_AVAILABILITY_MODE_STANDBY = 'ACTIVE_STANDBY'
+
+ +
+ +
+
+class com.vmware.nsx_policy.model_client.BridgeEndpointProfileListResult(links=None, schema=None, self_=None, cursor=None, result_count=None, sort_ascending=None, sort_by=None, results=None)
+

Bases: vmware.vapi.bindings.struct.VapiStruct

+

Bridge Endpoint Profile queries result

+
+

Tip

+

The arguments are used to initialize data attributes with the same +names.

+
+
+ +
+
+class com.vmware.nsx_policy.model_client.BridgeHighAvailabilityClusterProfile(bfd_probe_interval=None, enable=None, links=None, schema=None, self_=None, revision=None, create_time=None, create_user=None, last_modified_time=None, last_modified_user=None, protection=None, system_owned=None, description=None, display_name=None, id=None, resource_type='BridgeHighAvailabilityClusterProfile', tags=None)
+

Bases: vmware.vapi.bindings.struct.VapiStruct

+

Profile for BFD HA cluster setting

+
+

Tip

+

The arguments are used to initialize data attributes with the same +names.

+
+
+ +
+
+class com.vmware.nsx_policy.model_client.ByodPolicyServiceInstance(links=None, schema=None, self_=None, revision=None, create_time=None, create_user=None, last_modified_time=None, last_modified_user=None, protection=None, system_owned=None, description=None, display_name=None, id=None, resource_type=None, tags=None, parent_path=None, path=None, relative_path=None, children=None, marked_for_delete=None, deployment_mode=None, partner_service_name=None, transport_type=None)
+

Bases: vmware.vapi.bindings.struct.VapiStruct

+

Represents an instance of partner’s service whose wiring will be done by +partner itself. As partner does all the wiring, we call it as Byod - Bring +your own device.

+
+

Tip

+

The arguments are used to initialize data attributes with the same +names.

+
+
+
+DEPLOYMENT_MODE_ACTIVE_STANDBY = 'ACTIVE_STANDBY'
+
+ +
+
+DEPLOYMENT_MODE_STAND_ALONE = 'STAND_ALONE'
+
+ +
+
+TRANSPORT_TYPE_L2_BRIDGE = 'L2_BRIDGE'
+
+ +
+
+TRANSPORT_TYPE_L3_ROUTED = 'L3_ROUTED'
+
+ +
+ +
+
+class com.vmware.nsx_policy.model_client.ByodPolicyServiceInstanceListResult(links=None, schema=None, self_=None, cursor=None, result_count=None, sort_ascending=None, sort_by=None, results=None)
+

Bases: vmware.vapi.bindings.struct.VapiStruct

+

Collection of only Byod SI objects

+
+

Tip

+

The arguments are used to initialize data attributes with the same +names.

+
+
+ +
+
+class com.vmware.nsx_policy.model_client.ByodServiceInstance(links=None, schema=None, self_=None, revision=None, create_time=None, create_user=None, last_modified_time=None, last_modified_user=None, protection=None, system_owned=None, description=None, display_name=None, id=None, resource_type='ByodServiceInstance', tags=None, deployment_mode=None, on_failure_policy=None, service_id=None, transport_type=None)
+

Bases: vmware.vapi.bindings.struct.VapiStruct

+

ByodServiceInstance is a custom instance to be used when NSX is not +handling the lifecycles of appliance/s. User will manage their own +appliance (BYOD) to connect with NSX.

+
+

Tip

+

The arguments are used to initialize data attributes with the same +names.

+
+
+ +
+
+class com.vmware.nsx_policy.model_client.CapacityUsage(links=None, schema=None, self_=None, capacity_type=None, usage_count=None)
+

Bases: vmware.vapi.bindings.struct.VapiStruct

+

usage of each capacity type ex. vm, cpu

+
+

Tip

+

The arguments are used to initialize data attributes with the same +names.

+
+
+ +
+
+class com.vmware.nsx_policy.model_client.Certificate(links=None, schema=None, self_=None, revision=None, create_time=None, create_user=None, last_modified_time=None, last_modified_user=None, protection=None, system_owned=None, description=None, display_name=None, id=None, resource_type=None, tags=None, details=None, pem_encoded=None, used_by=None)
+

Bases: vmware.vapi.bindings.struct.VapiStruct

+
+

Tip

+

The arguments are used to initialize data attributes with the same +names.

+
+
+ +
+
+class com.vmware.nsx_policy.model_client.CertificateList(links=None, schema=None, self_=None, cursor=None, result_count=None, sort_ascending=None, sort_by=None, results=None)
+

Bases: vmware.vapi.bindings.struct.VapiStruct

+

Certificate queries result

+
+

Tip

+

The arguments are used to initialize data attributes with the same +names.

+
+
+ +
+
+class com.vmware.nsx_policy.model_client.ChildBgpNeighborConfig(links=None, schema=None, self_=None, revision=None, create_time=None, create_user=None, last_modified_time=None, last_modified_user=None, protection=None, system_owned=None, description=None, display_name=None, id=None, resource_type=None, tags=None, bgp_routing_config=None)
+

Bases: vmware.vapi.bindings.struct.VapiStruct

+

Child wrapper object for BgpNeighborConfig, used in hierarchical API

+
+

Tip

+

The arguments are used to initialize data attributes with the same +names.

+
+
+ +
+
+class com.vmware.nsx_policy.model_client.ChildBgpRoutingConfig(links=None, schema=None, self_=None, revision=None, create_time=None, create_user=None, last_modified_time=None, last_modified_user=None, protection=None, system_owned=None, description=None, display_name=None, id=None, resource_type=None, tags=None, bgp_routing_config=None)
+

Bases: vmware.vapi.bindings.struct.VapiStruct

+

Child wrapper object for BgpRoutingConfig, used in hierarchical API

+
+

Tip

+

The arguments are used to initialize data attributes with the same +names.

+
+
+ +
+
+class com.vmware.nsx_policy.model_client.ChildByodPolicyServiceInstance(links=None, schema=None, self_=None, revision=None, create_time=None, create_user=None, last_modified_time=None, last_modified_user=None, protection=None, system_owned=None, description=None, display_name=None, id=None, resource_type=None, tags=None, policy_service_instance=None)
+

Bases: vmware.vapi.bindings.struct.VapiStruct

+

Child wrapper object for ByodPolicyServiceInstance used in hierarchical +API.

+
+

Tip

+

The arguments are used to initialize data attributes with the same +names.

+
+
+ +
+
+class com.vmware.nsx_policy.model_client.ChildCommunicationEntry(links=None, schema=None, self_=None, revision=None, create_time=None, create_user=None, last_modified_time=None, last_modified_user=None, protection=None, system_owned=None, description=None, display_name=None, id=None, resource_type=None, tags=None, communication_entry=None)
+

Bases: vmware.vapi.bindings.struct.VapiStruct

+

Child wrapper object for CommunicationEntry, used in hierarchical API

+
+

Tip

+

The arguments are used to initialize data attributes with the same +names.

+
+
+ +
+
+class com.vmware.nsx_policy.model_client.ChildCommunicationMap(links=None, schema=None, self_=None, revision=None, create_time=None, create_user=None, last_modified_time=None, last_modified_user=None, protection=None, system_owned=None, description=None, display_name=None, id=None, resource_type=None, tags=None, communication_map=None)
+

Bases: vmware.vapi.bindings.struct.VapiStruct

+

Child wrapper object for CommunicationMap, used in hierarchical API

+
+

Tip

+

The arguments are used to initialize data attributes with the same +names.

+
+
+ +
+
+class com.vmware.nsx_policy.model_client.ChildConstraint(links=None, schema=None, self_=None, revision=None, create_time=None, create_user=None, last_modified_time=None, last_modified_user=None, protection=None, system_owned=None, description=None, display_name=None, id=None, resource_type=None, tags=None, constraint=None)
+

Bases: vmware.vapi.bindings.struct.VapiStruct

+

Child wrapper object for Constraint, used in hierarchical API

+
+

Tip

+

The arguments are used to initialize data attributes with the same +names.

+
+
+ +
+
+class com.vmware.nsx_policy.model_client.ChildDeploymentZone(links=None, schema=None, self_=None, revision=None, create_time=None, create_user=None, last_modified_time=None, last_modified_user=None, protection=None, system_owned=None, description=None, display_name=None, id=None, resource_type=None, tags=None, deployment_zone=None)
+

Bases: vmware.vapi.bindings.struct.VapiStruct

+

Child wrapper object for DeploymentZone, used in hierarchical API

+
+

Tip

+

The arguments are used to initialize data attributes with the same +names.

+
+
+ +
+
+class com.vmware.nsx_policy.model_client.ChildDomain(links=None, schema=None, self_=None, revision=None, create_time=None, create_user=None, last_modified_time=None, last_modified_user=None, protection=None, system_owned=None, description=None, display_name=None, id=None, resource_type=None, tags=None, domain=None)
+

Bases: vmware.vapi.bindings.struct.VapiStruct

+

Child wrapper object for domain, used in hierarchical API

+
+

Tip

+

The arguments are used to initialize data attributes with the same +names.

+
+
+ +
+
+class com.vmware.nsx_policy.model_client.ChildDomainDeploymentMap(links=None, schema=None, self_=None, revision=None, create_time=None, create_user=None, last_modified_time=None, last_modified_user=None, protection=None, system_owned=None, description=None, display_name=None, id=None, resource_type=None, tags=None, domain_deployment_map=None)
+

Bases: vmware.vapi.bindings.struct.VapiStruct

+

Child wrapper object for DomainDeploymentMap, used in hierarchical API

+
+

Tip

+

The arguments are used to initialize data attributes with the same +names.

+
+
+ +
+
+class com.vmware.nsx_policy.model_client.ChildEdgeCommunicationMap(links=None, schema=None, self_=None, revision=None, create_time=None, create_user=None, last_modified_time=None, last_modified_user=None, protection=None, system_owned=None, description=None, display_name=None, id=None, resource_type=None, tags=None, communication_map=None)
+

Bases: vmware.vapi.bindings.struct.VapiStruct

+

Child wrapper object for EdgeCommunicationMap, used in hierarchical API

+
+

Tip

+

The arguments are used to initialize data attributes with the same +names.

+
+
+ +
+
+class com.vmware.nsx_policy.model_client.ChildEnforcementPoint(links=None, schema=None, self_=None, revision=None, create_time=None, create_user=None, last_modified_time=None, last_modified_user=None, protection=None, system_owned=None, description=None, display_name=None, id=None, resource_type=None, tags=None, enforcement_point=None)
+

Bases: vmware.vapi.bindings.struct.VapiStruct

+

Child wrapper object for EnforcementPoint, used in hierarchical API

+
+

Tip

+

The arguments are used to initialize data attributes with the same +names.

+
+
+ +
+
+class com.vmware.nsx_policy.model_client.ChildGroup(links=None, schema=None, self_=None, revision=None, create_time=None, create_user=None, last_modified_time=None, last_modified_user=None, protection=None, system_owned=None, description=None, display_name=None, id=None, resource_type=None, tags=None, group=None)
+

Bases: vmware.vapi.bindings.struct.VapiStruct

+

Child wrapper object for group, used in hierarchical API

+
+

Tip

+

The arguments are used to initialize data attributes with the same +names.

+
+
+ +
+
+class com.vmware.nsx_policy.model_client.ChildL2Vpn(links=None, schema=None, self_=None, revision=None, create_time=None, create_user=None, last_modified_time=None, last_modified_user=None, protection=None, system_owned=None, description=None, display_name=None, id=None, resource_type=None, tags=None, l2_vpn=None)
+

Bases: vmware.vapi.bindings.struct.VapiStruct

+

Child wrapper object for L2Vpn, used in hierarchical API

+
+

Tip

+

The arguments are used to initialize data attributes with the same +names.

+
+
+ +
+
+class com.vmware.nsx_policy.model_client.ChildL2VpnContext(links=None, schema=None, self_=None, revision=None, create_time=None, create_user=None, last_modified_time=None, last_modified_user=None, protection=None, system_owned=None, description=None, display_name=None, id=None, resource_type=None, tags=None, l2_vpn_context=None)
+

Bases: vmware.vapi.bindings.struct.VapiStruct

+

Child wrapper object for L2VpnContext, used in hierarchical API

+
+

Tip

+

The arguments are used to initialize data attributes with the same +names.

+
+
+ +
+
+class com.vmware.nsx_policy.model_client.ChildL3Vpn(links=None, schema=None, self_=None, revision=None, create_time=None, create_user=None, last_modified_time=None, last_modified_user=None, protection=None, system_owned=None, description=None, display_name=None, id=None, resource_type=None, tags=None, l3_vpn=None)
+

Bases: vmware.vapi.bindings.struct.VapiStruct

+

Child wrapper object for L3Vpn, used in hierarchical API

+
+

Tip

+

The arguments are used to initialize data attributes with the same +names.

+
+
+ +
+
+class com.vmware.nsx_policy.model_client.ChildL3VpnContext(links=None, schema=None, self_=None, revision=None, create_time=None, create_user=None, last_modified_time=None, last_modified_user=None, protection=None, system_owned=None, description=None, display_name=None, id=None, resource_type=None, tags=None, l3_vpn_context=None)
+

Bases: vmware.vapi.bindings.struct.VapiStruct

+

Child wrapper object for L3VpnContext, used in hierarchical API

+
+

Tip

+

The arguments are used to initialize data attributes with the same +names.

+
+
+ +
+
+class com.vmware.nsx_policy.model_client.ChildNetwork(links=None, schema=None, self_=None, revision=None, create_time=None, create_user=None, last_modified_time=None, last_modified_user=None, protection=None, system_owned=None, description=None, display_name=None, id=None, resource_type=None, tags=None, network=None)
+

Bases: vmware.vapi.bindings.struct.VapiStruct

+

Child wrapper object for Network, used in hierarchical API

+
+

Tip

+

The arguments are used to initialize data attributes with the same +names.

+
+
+ +
+
+class com.vmware.nsx_policy.model_client.ChildPolicyConfigResource(links=None, schema=None, self_=None, revision=None, create_time=None, create_user=None, last_modified_time=None, last_modified_user=None, protection=None, system_owned=None, description=None, display_name=None, id=None, resource_type=None, tags=None)
+

Bases: vmware.vapi.bindings.struct.VapiStruct

+

Represents an object on the desired state

+
+

Tip

+

The arguments are used to initialize data attributes with the same +names.

+
+
+ +
+
+class com.vmware.nsx_policy.model_client.ChildPolicyDnsForwarder(links=None, schema=None, self_=None, revision=None, create_time=None, create_user=None, last_modified_time=None, last_modified_user=None, protection=None, system_owned=None, description=None, display_name=None, id=None, resource_type=None, tags=None, policy_dns_forwarder=None)
+

Bases: vmware.vapi.bindings.struct.VapiStruct

+

Child wrapper object for PolicyDnsForwarder, used in hierarchical API

+
+

Tip

+

The arguments are used to initialize data attributes with the same +names.

+
+
+ +
+
+class com.vmware.nsx_policy.model_client.ChildPolicyDnsForwarderZone(links=None, schema=None, self_=None, revision=None, create_time=None, create_user=None, last_modified_time=None, last_modified_user=None, protection=None, system_owned=None, description=None, display_name=None, id=None, resource_type=None, tags=None, policy_dns_forwarder_zone=None)
+

Bases: vmware.vapi.bindings.struct.VapiStruct

+

Child wrapper object for PolicyDnsForwarderZone, used in hierarchical API

+
+

Tip

+

The arguments are used to initialize data attributes with the same +names.

+
+
+ +
+
+class com.vmware.nsx_policy.model_client.ChildPolicyLabel(links=None, schema=None, self_=None, revision=None, create_time=None, create_user=None, last_modified_time=None, last_modified_user=None, protection=None, system_owned=None, description=None, display_name=None, id=None, resource_type=None, tags=None, policy_label=None)
+

Bases: vmware.vapi.bindings.struct.VapiStruct

+

Child wrapper object for PolicyLabel, used in hierarchical API

+
+

Tip

+

The arguments are used to initialize data attributes with the same +names.

+
+
+ +
+
+class com.vmware.nsx_policy.model_client.ChildPolicyLbMonitorProfile(links=None, schema=None, self_=None, revision=None, create_time=None, create_user=None, last_modified_time=None, last_modified_user=None, protection=None, system_owned=None, description=None, display_name=None, id=None, resource_type=None, tags=None, policy_lb_monitor_profile=None)
+

Bases: vmware.vapi.bindings.struct.VapiStruct

+

Child wrapper for PolicyLbMonitorProfile, used in hierarchical API

+
+

Tip

+

The arguments are used to initialize data attributes with the same +names.

+
+
+ +
+
+class com.vmware.nsx_policy.model_client.ChildPolicyLbPersistenceProfile(links=None, schema=None, self_=None, revision=None, create_time=None, create_user=None, last_modified_time=None, last_modified_user=None, protection=None, system_owned=None, description=None, display_name=None, id=None, resource_type=None, tags=None, policy_lb_persistence_profile=None)
+

Bases: vmware.vapi.bindings.struct.VapiStruct

+

Child wrapper for PolicyLbPersistenceProfile, used in hierarchical API

+
+

Tip

+

The arguments are used to initialize data attributes with the same +names.

+
+
+ +
+
+class com.vmware.nsx_policy.model_client.ChildPolicyLbPoolAccess(links=None, schema=None, self_=None, revision=None, create_time=None, create_user=None, last_modified_time=None, last_modified_user=None, protection=None, system_owned=None, description=None, display_name=None, id=None, resource_type=None, tags=None, policy_lb_pool_access=None)
+

Bases: vmware.vapi.bindings.struct.VapiStruct

+

Child wrapper for PolicyLbPoolAccess, used in hierarchical API

+
+

Tip

+

The arguments are used to initialize data attributes with the same +names.

+
+
+ +
+
+class com.vmware.nsx_policy.model_client.ChildPolicyLbRule(links=None, schema=None, self_=None, revision=None, create_time=None, create_user=None, last_modified_time=None, last_modified_user=None, protection=None, system_owned=None, description=None, display_name=None, id=None, resource_type=None, tags=None, policy_lb_rule=None)
+

Bases: vmware.vapi.bindings.struct.VapiStruct

+

Child wrapper for PolicyLbRule, used in hierarchical API

+
+

Tip

+

The arguments are used to initialize data attributes with the same +names.

+
+
+ +
+
+class com.vmware.nsx_policy.model_client.ChildPolicyLbVirtualServer(links=None, schema=None, self_=None, revision=None, create_time=None, create_user=None, last_modified_time=None, last_modified_user=None, protection=None, system_owned=None, description=None, display_name=None, id=None, resource_type=None, tags=None, policy_lb_virtual_server=None)
+

Bases: vmware.vapi.bindings.struct.VapiStruct

+

Child wrapper for PolicyLbVirtualServer, used in hierarchical API

+
+

Tip

+

The arguments are used to initialize data attributes with the same +names.

+
+
+ +
+
+class com.vmware.nsx_policy.model_client.ChildPolicyNat(links=None, schema=None, self_=None, revision=None, create_time=None, create_user=None, last_modified_time=None, last_modified_user=None, protection=None, system_owned=None, description=None, display_name=None, id=None, resource_type=None, tags=None, policy_nat=None)
+

Bases: vmware.vapi.bindings.struct.VapiStruct

+

Child wrapper object for PolicyNat, used in hierarchical API

+
+

Tip

+

The arguments are used to initialize data attributes with the same +names.

+
+
+ +
+
+class com.vmware.nsx_policy.model_client.ChildPolicyNatRule(links=None, schema=None, self_=None, revision=None, create_time=None, create_user=None, last_modified_time=None, last_modified_user=None, protection=None, system_owned=None, description=None, display_name=None, id=None, resource_type=None, tags=None, policy_nat_rule=None)
+

Bases: vmware.vapi.bindings.struct.VapiStruct

+

Child wrapper object for PolicyNatRule, used in hierarchical API

+
+

Tip

+

The arguments are used to initialize data attributes with the same +names.

+
+
+ +
+
+class com.vmware.nsx_policy.model_client.ChildPolicyServiceInstance(links=None, schema=None, self_=None, revision=None, create_time=None, create_user=None, last_modified_time=None, last_modified_user=None, protection=None, system_owned=None, description=None, display_name=None, id=None, resource_type=None, tags=None, policy_service_instance=None)
+

Bases: vmware.vapi.bindings.struct.VapiStruct

+

Child wrapper object for PolicyServiceInstance used in hierarchical API.

+
+

Tip

+

The arguments are used to initialize data attributes with the same +names.

+
+
+ +
+
+class com.vmware.nsx_policy.model_client.ChildProvider(links=None, schema=None, self_=None, revision=None, create_time=None, create_user=None, last_modified_time=None, last_modified_user=None, protection=None, system_owned=None, description=None, display_name=None, id=None, resource_type=None, tags=None, provider=None)
+

Bases: vmware.vapi.bindings.struct.VapiStruct

+

Child wrapper object for Provider, used in hierarchical API

+
+

Tip

+

The arguments are used to initialize data attributes with the same +names.

+
+
+ +
+
+class com.vmware.nsx_policy.model_client.ChildProviderDeploymentMap(links=None, schema=None, self_=None, revision=None, create_time=None, create_user=None, last_modified_time=None, last_modified_user=None, protection=None, system_owned=None, description=None, display_name=None, id=None, resource_type=None, tags=None, provider_deployment_map=None)
+

Bases: vmware.vapi.bindings.struct.VapiStruct

+

Child wrapper object for ProviderDeploymentMap, used in hierarchical API

+
+

Tip

+

The arguments are used to initialize data attributes with the same +names.

+
+
+ +
+
+class com.vmware.nsx_policy.model_client.ChildProviderInterface(links=None, schema=None, self_=None, revision=None, create_time=None, create_user=None, last_modified_time=None, last_modified_user=None, protection=None, system_owned=None, description=None, display_name=None, id=None, resource_type=None, tags=None, provider_interface=None)
+

Bases: vmware.vapi.bindings.struct.VapiStruct

+

Child wrapper object for ProviderInterface, used in hierarchical API

+
+

Tip

+

The arguments are used to initialize data attributes with the same +names.

+
+
+ +
+
+class com.vmware.nsx_policy.model_client.ChildRedirectionCommunicationEntry(links=None, schema=None, self_=None, revision=None, create_time=None, create_user=None, last_modified_time=None, last_modified_user=None, protection=None, system_owned=None, description=None, display_name=None, id=None, resource_type=None, tags=None, redirection_communication_entry=None)
+

Bases: vmware.vapi.bindings.struct.VapiStruct

+

Child wrapper object for ChildRedirectionCommunicationEntry used in +Hierarchical API.

+
+

Tip

+

The arguments are used to initialize data attributes with the same +names.

+
+
+ +
+
+class com.vmware.nsx_policy.model_client.ChildRedirectionCommunicationMap(links=None, schema=None, self_=None, revision=None, create_time=None, create_user=None, last_modified_time=None, last_modified_user=None, protection=None, system_owned=None, description=None, display_name=None, id=None, resource_type=None, tags=None, redirection_communication_map=None)
+

Bases: vmware.vapi.bindings.struct.VapiStruct

+

Child wrapper object for RedirectionCommunicationMap used in Hierarchical +API.

+
+

Tip

+

The arguments are used to initialize data attributes with the same +names.

+
+
+ +
+
+class com.vmware.nsx_policy.model_client.ChildSegment(links=None, schema=None, self_=None, revision=None, create_time=None, create_user=None, last_modified_time=None, last_modified_user=None, protection=None, system_owned=None, description=None, display_name=None, id=None, resource_type=None, tags=None, segment=None)
+

Bases: vmware.vapi.bindings.struct.VapiStruct

+

Child wrapper object for Segment, used in hierarchical API

+
+

Tip

+

The arguments are used to initialize data attributes with the same +names.

+
+
+ +
+
+class com.vmware.nsx_policy.model_client.ChildService(links=None, schema=None, self_=None, revision=None, create_time=None, create_user=None, last_modified_time=None, last_modified_user=None, protection=None, system_owned=None, description=None, display_name=None, id=None, resource_type=None, tags=None, service=None)
+

Bases: vmware.vapi.bindings.struct.VapiStruct

+

Child wrapper object for Service, used in hierarchical API

+
+

Tip

+

The arguments are used to initialize data attributes with the same +names.

+
+
+ +
+
+class com.vmware.nsx_policy.model_client.ChildServiceEntry(links=None, schema=None, self_=None, revision=None, create_time=None, create_user=None, last_modified_time=None, last_modified_user=None, protection=None, system_owned=None, description=None, display_name=None, id=None, resource_type=None, tags=None, service=None)
+

Bases: vmware.vapi.bindings.struct.VapiStruct

+

Child wrapper object for ServiceEntry, used in hierarchical API

+
+

Tip

+

The arguments are used to initialize data attributes with the same +names.

+
+
+ +
+
+class com.vmware.nsx_policy.model_client.ChildServiceInstanceEndpoint(links=None, schema=None, self_=None, revision=None, create_time=None, create_user=None, last_modified_time=None, last_modified_user=None, protection=None, system_owned=None, description=None, display_name=None, id=None, resource_type=None, tags=None, policy_service_instance=None)
+

Bases: vmware.vapi.bindings.struct.VapiStruct

+

Child wrapper object for ServiceInstanceEndpoint used in hierarchical API.

+
+

Tip

+

The arguments are used to initialize data attributes with the same +names.

+
+
+ +
+
+class com.vmware.nsx_policy.model_client.ChildServiceInterface(links=None, schema=None, self_=None, revision=None, create_time=None, create_user=None, last_modified_time=None, last_modified_user=None, protection=None, system_owned=None, description=None, display_name=None, id=None, resource_type=None, tags=None, provider_interface=None)
+

Bases: vmware.vapi.bindings.struct.VapiStruct

+

Child wrapper object for ServiceInterface, used in hierarchical API

+
+

Tip

+

The arguments are used to initialize data attributes with the same +names.

+
+
+ +
+
+class com.vmware.nsx_policy.model_client.ChildSslTrustObjectData(links=None, schema=None, self_=None, revision=None, create_time=None, create_user=None, last_modified_time=None, last_modified_user=None, protection=None, system_owned=None, description=None, display_name=None, id=None, resource_type=None, tags=None, ssl_trust_object_data=None)
+

Bases: vmware.vapi.bindings.struct.VapiStruct

+

Child wrapper for SslTrustObjectData, used in hierarchical API

+
+

Tip

+

The arguments are used to initialize data attributes with the same +names.

+
+
+ +
+
+class com.vmware.nsx_policy.model_client.ChildStaticARPConfig(links=None, schema=None, self_=None, revision=None, create_time=None, create_user=None, last_modified_time=None, last_modified_user=None, protection=None, system_owned=None, description=None, display_name=None, id=None, resource_type=None, tags=None, static_arp_config=None)
+

Bases: vmware.vapi.bindings.struct.VapiStruct

+

Child wrapper object for StaticARPConfig, used in hierarchical API

+
+

Tip

+

The arguments are used to initialize data attributes with the same +names.

+
+
+ +
+
+class com.vmware.nsx_policy.model_client.ChildStaticRoutes(links=None, schema=None, self_=None, revision=None, create_time=None, create_user=None, last_modified_time=None, last_modified_user=None, protection=None, system_owned=None, description=None, display_name=None, id=None, resource_type=None, tags=None, static_routes=None)
+

Bases: vmware.vapi.bindings.struct.VapiStruct

+

Child wrapper object for StaticRoutes, used in hierarchical API

+
+

Tip

+

The arguments are used to initialize data attributes with the same +names.

+
+
+ +
+
+class com.vmware.nsx_policy.model_client.ClasslessStaticRoute(network=None, next_hop=None)
+

Bases: vmware.vapi.bindings.struct.VapiStruct

+
+

Tip

+

The arguments are used to initialize data attributes with the same +names.

+
+
+ +
+
+class com.vmware.nsx_policy.model_client.ClientSslProfileBinding(certificate_chain_depth=None, client_auth=None, client_auth_ca_ids=None, client_auth_crl_ids=None, default_certificate_id=None, sni_certificate_ids=None, ssl_profile_id=None)
+

Bases: vmware.vapi.bindings.struct.VapiStruct

+
+

Tip

+

The arguments are used to initialize data attributes with the same +names.

+
+
+
+CLIENT_AUTH_IGNORE = 'IGNORE'
+
+ +
+
+CLIENT_AUTH_REQUIRED = 'REQUIRED'
+
+ +
+ +
+
+class com.vmware.nsx_policy.model_client.ClientTypeCollectionConfiguration(client_type=None, data_type_configurations=None)
+

Bases: vmware.vapi.bindings.struct.VapiStruct

+

HPM client data collection configuration

+
+

Tip

+

The arguments are used to initialize data attributes with the same +names.

+
+
+
+CLIENT_TYPE_CONTROL_PLANE = 'CONTROL_PLANE'
+
+ +
+
+CLIENT_TYPE_CONTROL_PLANE_PLATFORM = 'CONTROL_PLANE_PLATFORM'
+
+ +
+
+CLIENT_TYPE_EDGE = 'EDGE'
+
+ +
+
+CLIENT_TYPE_HYPERVISOR = 'HYPERVISOR'
+
+ +
+
+CLIENT_TYPE_MANAGEMENT_PLANE = 'MANAGEMENT_PLANE'
+
+ +
+
+CLIENT_TYPE_MANAGEMENT_PLANE_PLATFORM = 'MANAGEMENT_PLANE_PLATFORM'
+
+ +
+ +
+
+class com.vmware.nsx_policy.model_client.ClusterBackupInfo(ip_address=None, node_id=None, timestamp=None)
+

Bases: vmware.vapi.bindings.struct.VapiStruct

+

Cluster backup details

+
+

Tip

+

The arguments are used to initialize data attributes with the same +names.

+
+
+ +
+
+class com.vmware.nsx_policy.model_client.ClusterBackupInfoListResult(links=None, schema=None, self_=None, cursor=None, result_count=None, sort_ascending=None, sort_by=None, results=None)
+

Bases: vmware.vapi.bindings.struct.VapiStruct

+
+

Tip

+

The arguments are used to initialize data attributes with the same +names.

+
+
+ +
+
+class com.vmware.nsx_policy.model_client.ClusterConfig(links=None, schema=None, self_=None, revision=None, cluster_id=None, control_cluster_changes_allowed=None, mgmt_cluster_changes_allowed=None)
+

Bases: vmware.vapi.bindings.struct.VapiStruct

+
+

Tip

+

The arguments are used to initialize data attributes with the same +names.

+
+
+ +
+
+class com.vmware.nsx_policy.model_client.ClusterGroupMemberStatus(member_name=None, member_status=None, member_uuid=None)
+

Bases: vmware.vapi.bindings.struct.VapiStruct

+

This type contains the attributes and status of a group member.

+
+

Tip

+

The arguments are used to initialize data attributes with the same +names.

+
+
+
+MEMBER_STATUS_DOWN = 'DOWN'
+
+ +
+
+MEMBER_STATUS_UNKNOWN = 'UNKNOWN'
+
+ +
+
+MEMBER_STATUS_UP = 'UP'
+
+ +
+ +
+
+class com.vmware.nsx_policy.model_client.ClusterGroupServiceLeader(leader_uuid=None, lease_version=None, service_name=None)
+

Bases: vmware.vapi.bindings.struct.VapiStruct

+

Each cluster node entity provides multiple services. When working in a +group, each service can elect a cluster node entity to be the leader of the +service. Leader election helps in coordination of the service. The leader +holds a renewable lease on the leadership for a fixed period of time. The +lease version is incremented every time the leadership lease is renewed. +This type contains the attributes of a leader.

+
+

Tip

+

The arguments are used to initialize data attributes with the same +names.

+
+
+ +
+
+class com.vmware.nsx_policy.model_client.ClusterGroupStatus(group_id=None, group_status=None, group_type=None, leaders=None, members=None)
+

Bases: vmware.vapi.bindings.struct.VapiStruct

+

This type contains the attributes and status of a group.

+
+

Tip

+

The arguments are used to initialize data attributes with the same +names.

+
+
+
+GROUP_STATUS_DEGRADED = 'DEGRADED'
+
+ +
+
+GROUP_STATUS_STABLE = 'STABLE'
+
+ +
+
+GROUP_STATUS_UNAVAILABLE = 'UNAVAILABLE'
+
+ +
+
+GROUP_STATUS_UNSTABLE = 'UNSTABLE'
+
+ +
+
+GROUP_TYPE_CONTROLLER = 'CONTROLLER'
+
+ +
+
+GROUP_TYPE_HTTP = 'HTTP'
+
+ +
+
+GROUP_TYPE_MANAGER = 'MANAGER'
+
+ +
+
+GROUP_TYPE_POLICY = 'POLICY'
+
+ +
+ +
+
+class com.vmware.nsx_policy.model_client.ClusterInitializationNodeInfo(disk_store_id=None, host_address=None)
+

Bases: vmware.vapi.bindings.struct.VapiStruct

+

The type provides the information of a non-running cluster node required +for the initialization of a management cluster. The administrator needs to +start this node for management cluster to initialize properly (or +decommission it explicitly).

+
+

Tip

+

The arguments are used to initialize data attributes with the same +names.

+
+
+ +
+
+class com.vmware.nsx_policy.model_client.ClusterNodeConfig(links=None, schema=None, self_=None, revision=None, create_time=None, create_user=None, last_modified_time=None, last_modified_user=None, protection=None, system_owned=None, description=None, display_name=None, id=None, resource_type=None, tags=None, appliance_mgmt_listen_addr=None, controller_role=None, external_id=None, manager_role=None)
+

Bases: vmware.vapi.bindings.struct.VapiStruct

+
+

Tip

+

The arguments are used to initialize data attributes with the same +names.

+
+
+ +
+
+class com.vmware.nsx_policy.model_client.ClusterNodeConfigListResult(links=None, schema=None, self_=None, cursor=None, result_count=None, sort_ascending=None, sort_by=None, results=None)
+

Bases: vmware.vapi.bindings.struct.VapiStruct

+
+

Tip

+

The arguments are used to initialize data attributes with the same +names.

+
+
+ +
+
+class com.vmware.nsx_policy.model_client.ClusterNodeStatus(control_cluster_status=None, mgmt_cluster_status=None, system_status=None, version=None)
+

Bases: vmware.vapi.bindings.struct.VapiStruct

+
+

Tip

+

The arguments are used to initialize data attributes with the same +names.

+
+
+ +
+
+class com.vmware.nsx_policy.model_client.ClusterNodeVMDeploymentConfig(placement_type='ClusterNodeVMDeploymentConfig')
+

Bases: vmware.vapi.bindings.struct.VapiStruct

+

Contains info used to configure the VM on deployment

+
+

Tip

+

The arguments are used to initialize data attributes with the same +names.

+
+
+
+PLACEMENT_TYPE_VSPHERECLUSTERNODEVMDEPLOYMENTCONFIG = 'VsphereClusterNodeVMDeploymentConfig'
+
+ +
+ +
+
+class com.vmware.nsx_policy.model_client.ClusterNodeVMDeploymentRequest(deployment_config=None, form_factor=None, roles=None, user_settings=None, vm_id=None)
+

Bases: vmware.vapi.bindings.struct.VapiStruct

+

Contains the deployment information for a cluster node VM soon to be +deployed or already deployed by the Manager

+
+

Tip

+

The arguments are used to initialize data attributes with the same +names.

+
+
+
+FORM_FACTOR_LARGE = 'LARGE'
+
+ +
+
+FORM_FACTOR_MEDIUM = 'MEDIUM'
+
+ +
+
+FORM_FACTOR_SMALL = 'SMALL'
+
+ +
+
+ROLES_CONTROLLER = 'CONTROLLER'
+
+ +
+ +
+
+class com.vmware.nsx_policy.model_client.ClusterNodeVMDeploymentRequestList(links=None, schema=None, self_=None, cursor=None, result_count=None, sort_ascending=None, sort_by=None, results=None)
+

Bases: vmware.vapi.bindings.struct.VapiStruct

+

List of ClusterNodeVMDeploymentRequests

+
+

Tip

+

The arguments are used to initialize data attributes with the same +names.

+
+
+ +
+
+class com.vmware.nsx_policy.model_client.ClusterProfile(links=None, schema=None, self_=None, revision=None, create_time=None, create_user=None, last_modified_time=None, last_modified_user=None, protection=None, system_owned=None, description=None, display_name=None, id=None, resource_type='ClusterProfile', tags=None)
+

Bases: vmware.vapi.bindings.struct.VapiStruct

+
+

Tip

+

The arguments are used to initialize data attributes with the same +names.

+
+
+
+RESOURCE_TYPE_BRIDGEHIGHAVAILABILITYCLUSTERPROFILE = 'BridgeHighAvailabilityClusterProfile'
+
+ +
+
+RESOURCE_TYPE_EDGEHIGHAVAILABILITYPROFILE = 'EdgeHighAvailabilityProfile'
+
+ +
+ +
+
+class com.vmware.nsx_policy.model_client.ClusterProfileListResult(links=None, schema=None, self_=None, cursor=None, result_count=None, sort_ascending=None, sort_by=None, results=None)
+

Bases: vmware.vapi.bindings.struct.VapiStruct

+

Cluster Profile queries result

+
+

Tip

+

The arguments are used to initialize data attributes with the same +names.

+
+
+ +
+
+class com.vmware.nsx_policy.model_client.ClusterProfileTypeIdEntry(profile_id=None, resource_type=None)
+

Bases: vmware.vapi.bindings.struct.VapiStruct

+
+

Tip

+

The arguments are used to initialize data attributes with the same +names.

+
+
+
+RESOURCE_TYPE_BRIDGEHIGHAVAILABILITYCLUSTERPROFILE = 'BridgeHighAvailabilityClusterProfile'
+
+ +
+
+RESOURCE_TYPE_EDGEHIGHAVAILABILITYPROFILE = 'EdgeHighAvailabilityProfile'
+
+ +
+ +
+
+class com.vmware.nsx_policy.model_client.ClusterRestoreStatus(backup_timestamp=None, endpoints=None, id=None, instructions=None, restore_end_time=None, restore_start_time=None, status=None, step=None, total_steps=None)
+

Bases: vmware.vapi.bindings.struct.VapiStruct

+

Cluster restore status

+
+

Tip

+

The arguments are used to initialize data attributes with the same +names.

+
+
+ +
+
+class com.vmware.nsx_policy.model_client.ClusterRoleConfig(type=None)
+

Bases: vmware.vapi.bindings.struct.VapiStruct

+
+

Tip

+

The arguments are used to initialize data attributes with the same +names.

+
+
+
+TYPE_CONTROLLERCLUSTERROLECONFIG = 'ControllerClusterRoleConfig'
+
+ +
+
+TYPE_MANAGEMENTCLUSTERROLECONFIG = 'ManagementClusterRoleConfig'
+
+ +
+ +
+
+class com.vmware.nsx_policy.model_client.ClusterStatus(control_cluster_status=None, mgmt_cluster_status=None)
+

Bases: vmware.vapi.bindings.struct.VapiStruct

+
+

Tip

+

The arguments are used to initialize data attributes with the same +names.

+
+
+ +
+
+class com.vmware.nsx_policy.model_client.ClusteringInfo(join_to_existing_cluster=None, shared_secret=None)
+

Bases: vmware.vapi.bindings.struct.VapiStruct

+

Clustering parameters for the controller cluster

+
+

Tip

+

The arguments are used to initialize data attributes with the same +names.

+
+
+ +
+
+class com.vmware.nsx_policy.model_client.ClustersAggregateInfo(cluster_status=None, controller_cluster=None, management_cluster=None)
+

Bases: vmware.vapi.bindings.struct.VapiStruct

+
+

Tip

+

The arguments are used to initialize data attributes with the same +names.

+
+
+ +
+
+class com.vmware.nsx_policy.model_client.ColumnItem(column_identifier=None, drilldown_id=None, field=None, hidden=None, label=None, navigation=None, render_configuration=None, sort_ascending=None, sort_key=None, tooltip=None, type=None)
+

Bases: vmware.vapi.bindings.struct.VapiStruct

+

Represents a column of the Grid

+
+

Tip

+

The arguments are used to initialize data attributes with the same +names.

+
+
+
+TYPE_DATE = 'Date'
+
+ +
+
+TYPE_NUMBER = 'Number'
+
+ +
+
+TYPE_STRING = 'String'
+
+ +
+ +
+
+class com.vmware.nsx_policy.model_client.CommunicationEntry(links=None, schema=None, self_=None, revision=None, create_time=None, create_user=None, last_modified_time=None, last_modified_user=None, protection=None, system_owned=None, description=None, display_name=None, id=None, resource_type=None, tags=None, parent_path=None, path=None, relative_path=None, children=None, marked_for_delete=None, action=None, destination_groups=None, logged=None, scope=None, sequence_number=None, services=None, source_groups=None)
+

Bases: vmware.vapi.bindings.struct.VapiStruct

+

A communication entry indicates the action to be performed for various +types of traffic flowing between workload groups.

+
+

Tip

+

The arguments are used to initialize data attributes with the same +names.

+
+
+
+ACTION_ALLOW = 'ALLOW'
+
+ +
+
+ACTION_DROP = 'DROP'
+
+ +
+
+ACTION_REJECT = 'REJECT'
+
+ +
+ +
+
+class com.vmware.nsx_policy.model_client.CommunicationEntryListResult(links=None, schema=None, self_=None, cursor=None, result_count=None, sort_ascending=None, sort_by=None, results=None)
+

Bases: vmware.vapi.bindings.struct.VapiStruct

+

Paged Collection of CommunicationEntries

+
+

Tip

+

The arguments are used to initialize data attributes with the same +names.

+
+
+ +
+
+class com.vmware.nsx_policy.model_client.CommunicationInsertParameters(anchor_path=None, operation=None)
+

Bases: vmware.vapi.bindings.struct.VapiStruct

+

Parameters to let the admin specify a relative position of a communication +map or communication entry w.r.t to another one.

+
+

Tip

+

The arguments are used to initialize data attributes with the same +names.

+
+
+
+OPERATION_AFTER = 'insert_after'
+
+ +
+
+OPERATION_BEFORE = 'insert_before'
+
+ +
+
+OPERATION_BOTTOM = 'insert_bottom'
+
+ +
+
+OPERATION_TOP = 'insert_top'
+
+ +
+ +
+
+class com.vmware.nsx_policy.model_client.CommunicationMap(links=None, schema=None, self_=None, revision=None, create_time=None, create_user=None, last_modified_time=None, last_modified_user=None, protection=None, system_owned=None, description=None, display_name=None, id=None, resource_type=None, tags=None, parent_path=None, path=None, relative_path=None, children=None, marked_for_delete=None, category=None, communication_entries=None, precedence=None)
+

Bases: vmware.vapi.bindings.struct.VapiStruct

+

Ordered list of CommunicationEntries. This object is created by default +along with the Domain.

+
+

Tip

+

The arguments are used to initialize data attributes with the same +names.

+
+
+ +
+
+class com.vmware.nsx_policy.model_client.CommunicationMapListResult(links=None, schema=None, self_=None, cursor=None, result_count=None, sort_ascending=None, sort_by=None, results=None)
+

Bases: vmware.vapi.bindings.struct.VapiStruct

+

Paged Collection of Communication map

+
+

Tip

+

The arguments are used to initialize data attributes with the same +names.

+
+
+ +
+
+class com.vmware.nsx_policy.model_client.CommunityMatchExpression(expression=None, operator=None)
+

Bases: vmware.vapi.bindings.struct.VapiStruct

+

Community match expression

+
+

Tip

+

The arguments are used to initialize data attributes with the same +names.

+
+
+
+OPERATOR_AND = 'AND'
+
+ +
+ +
+
+class com.vmware.nsx_policy.model_client.CommunityMatchOperation(community_list_id=None, match_operator=None, regular_expression=None)
+

Bases: vmware.vapi.bindings.struct.VapiStruct

+

Community match operation

+
+

Tip

+

The arguments are used to initialize data attributes with the same +names.

+
+
+
+MATCH_OPERATOR_ALL = 'MATCH_ALL'
+
+ +
+
+MATCH_OPERATOR_ANY = 'MATCH_ANY'
+
+ +
+
+MATCH_OPERATOR_EXACT = 'MATCH_EXACT'
+
+ +
+
+MATCH_OPERATOR_NONE = 'MATCH_NONE'
+
+ +
+
+MATCH_OPERATOR_REGEX = 'MATCH_REGEX'
+
+ +
+ +
+
+class com.vmware.nsx_policy.model_client.ComputeCollection(links=None, schema=None, self_=None, last_sync_time=None, description=None, display_name=None, resource_type=None, tags=None, cm_local_id=None, external_id=None, origin_id=None, origin_properties=None, origin_type=None, owner_id=None)
+

Bases: vmware.vapi.bindings.struct.VapiStruct

+
+

Tip

+

The arguments are used to initialize data attributes with the same +names.

+
+
+ +
+
+class com.vmware.nsx_policy.model_client.ComputeCollectionFabricTemplate(links=None, schema=None, self_=None, revision=None, create_time=None, create_user=None, last_modified_time=None, last_modified_user=None, protection=None, system_owned=None, description=None, display_name=None, id=None, resource_type=None, tags=None, auto_install_nsx=None, compute_collection_id=None)
+

Bases: vmware.vapi.bindings.struct.VapiStruct

+

Compute collection fabric template

+
+

Tip

+

The arguments are used to initialize data attributes with the same +names.

+
+
+ +
+
+class com.vmware.nsx_policy.model_client.ComputeCollectionFabricTemplateListResult(links=None, schema=None, self_=None, cursor=None, result_count=None, sort_ascending=None, sort_by=None, results=None)
+

Bases: vmware.vapi.bindings.struct.VapiStruct

+

List of compute collection fabric template

+
+

Tip

+

The arguments are used to initialize data attributes with the same +names.

+
+
+ +
+
+class com.vmware.nsx_policy.model_client.ComputeCollectionListResult(links=None, schema=None, self_=None, cursor=None, result_count=None, sort_ascending=None, sort_by=None, results=None)
+

Bases: vmware.vapi.bindings.struct.VapiStruct

+

Compute Collection list result

+
+

Tip

+

The arguments are used to initialize data attributes with the same +names.

+
+
+ +
+
+class com.vmware.nsx_policy.model_client.ComputeCollectionTransportNodeTemplate(links=None, schema=None, self_=None, revision=None, create_time=None, create_user=None, last_modified_time=None, last_modified_user=None, protection=None, system_owned=None, description=None, display_name=None, id=None, resource_type=None, tags=None, compute_collection_ids=None, host_switch_spec=None, network_migration_spec_ids=None, transport_zone_endpoints=None)
+

Bases: vmware.vapi.bindings.struct.VapiStruct

+

Compute collection transport node template

+
+

Tip

+

The arguments are used to initialize data attributes with the same +names.

+
+
+ +
+
+class com.vmware.nsx_policy.model_client.ComputeCollectionTransportNodeTemplateState(compute_collection_id=None, template_states=None)
+

Bases: vmware.vapi.bindings.struct.VapiStruct

+

Transport node state per compute collection

+
+

Tip

+

The arguments are used to initialize data attributes with the same +names.

+
+
+ +
+
+class com.vmware.nsx_policy.model_client.ComputeCollectionTransportNodeTemplateStateList(links=None, schema=None, self_=None, cursor=None, result_count=None, sort_ascending=None, sort_by=None, results=None)
+

Bases: vmware.vapi.bindings.struct.VapiStruct

+

Transport node creation state list

+
+

Tip

+

The arguments are used to initialize data attributes with the same +names.

+
+
+ +
+
+class com.vmware.nsx_policy.model_client.ComputeManager(links=None, schema=None, self_=None, revision=None, create_time=None, create_user=None, last_modified_time=None, last_modified_user=None, protection=None, system_owned=None, description=None, display_name=None, id=None, resource_type=None, tags=None, credential=None, origin_properties=None, origin_type=None, server=None)
+

Bases: vmware.vapi.bindings.struct.VapiStruct

+
+

Tip

+

The arguments are used to initialize data attributes with the same +names.

+
+
+ +
+
+class com.vmware.nsx_policy.model_client.ComputeManagerListResult(links=None, schema=None, self_=None, cursor=None, result_count=None, sort_ascending=None, sort_by=None, results=None)
+

Bases: vmware.vapi.bindings.struct.VapiStruct

+

List of compute managers

+
+

Tip

+

The arguments are used to initialize data attributes with the same +names.

+
+
+ +
+
+class com.vmware.nsx_policy.model_client.Condition(key=None, member_type=None, operator=None, value=None, links=None, schema=None, self_=None, revision=None, create_time=None, create_user=None, last_modified_time=None, last_modified_user=None, protection=None, system_owned=None, description=None, display_name=None, id=None, resource_type='Condition', tags=None, parent_path=None, path=None, relative_path=None, children=None, marked_for_delete=None)
+

Bases: vmware.vapi.bindings.struct.VapiStruct

+

Represents the leaf level condition

+
+

Tip

+

The arguments are used to initialize data attributes with the same +names.

+
+
+
+KEY_NAME = 'Name'
+
+ +
+
+KEY_TAG = 'Tag'
+
+ +
+
+MEMBER_TYPE_LOGICALPORT = 'LogicalPort'
+
+ +
+
+MEMBER_TYPE_VIRTUALMACHINE = 'VirtualMachine'
+
+ +
+
+OPERATOR_CONTAINS = 'CONTAINS'
+
+ +
+
+OPERATOR_EQUALS = 'EQUALS'
+
+ +
+
+OPERATOR_STARTSWITH = 'STARTSWITH'
+
+ +
+ +
+
+class com.vmware.nsx_policy.model_client.ConditionalForwarderZone(source_ip=None, upstream_servers=None, domain_names=None)
+

Bases: vmware.vapi.bindings.struct.VapiStruct

+
+

Tip

+

The arguments are used to initialize data attributes with the same +names.

+
+
+ +
+
+class com.vmware.nsx_policy.model_client.ConditionalValueConstraintExpression(operator=None, rhs_value=None, value_constraint=None)
+

Bases: vmware.vapi.bindings.struct.VapiStruct

+

Represents the leaf level expression to restrict the target attribute value +based on the set of existing values. Generally, used in combination with +RelatedAttributeConditionalExpression to constraint the values related to +another attribute on the same resource. This object is always used in +conjunction with some exression. Example - { "condition" : { +"operator":"INCLUDES", "rhs_value": +["/infra/domains/mgw/groups/VCENTER", +"/infra/domains/mgw/groups/SRM", +"/infra/domains/mgw/groups/NSX"], "value_constraint": { +"resource_type": "ValueConstraintExpression", +"operator":"EXCLUDES", +"values":["/infra/domains/mgw/groups/VCENTER", +"/infra/domains/mgw/groups/SRM", +"/infra/domains/mgw/groups/NSX"] } }

+
+

Tip

+

The arguments are used to initialize data attributes with the same +names.

+
+
+
+OPERATOR_EQUALS = 'EQUALS'
+
+ +
+
+OPERATOR_EXCLUDES = 'EXCLUDES'
+
+ +
+
+OPERATOR_INCLUDES = 'INCLUDES'
+
+ +
+ +
+
+class com.vmware.nsx_policy.model_client.ConfigurationState(details=None, failure_code=None, failure_message=None, state=None)
+

Bases: vmware.vapi.bindings.struct.VapiStruct

+

Describes status of configuration of an entity

+
+

Tip

+

The arguments are used to initialize data attributes with the same +names.

+
+
+
+STATE_FAILED = 'failed'
+
+ +
+
+STATE_IN_PROGRESS = 'in_progress'
+
+ +
+
+STATE_ORPHANED = 'orphaned'
+
+ +
+
+STATE_PARTIAL_SUCCESS = 'partial_success'
+
+ +
+
+STATE_PENDING = 'pending'
+
+ +
+
+STATE_SUCCESS = 'success'
+
+ +
+
+STATE_UNKNOWN = 'unknown'
+
+ +
+ +
+
+class com.vmware.nsx_policy.model_client.ConfigurationStateElement(failure_code=None, failure_message=None, state=None, sub_system_address=None, sub_system_id=None, sub_system_type=None)
+

Bases: vmware.vapi.bindings.struct.VapiStruct

+

Describes status of configuration of an entity

+
+

Tip

+

The arguments are used to initialize data attributes with the same +names.

+
+
+
+STATE_FAILED = 'failed'
+
+ +
+
+STATE_IN_PROGRESS = 'in_progress'
+
+ +
+
+STATE_PARTIAL_SUCCESS = 'partial_success'
+
+ +
+
+STATE_SUCCESS = 'success'
+
+ +
+ +
+
+class com.vmware.nsx_policy.model_client.ConjunctionOperator(conjunction_operator=None, links=None, schema=None, self_=None, revision=None, create_time=None, create_user=None, last_modified_time=None, last_modified_user=None, protection=None, system_owned=None, description=None, display_name=None, id=None, resource_type='ConjunctionOperator', tags=None, parent_path=None, path=None, relative_path=None, children=None, marked_for_delete=None)
+

Bases: vmware.vapi.bindings.struct.VapiStruct

+

Represents the operators AND or OR

+
+

Tip

+

The arguments are used to initialize data attributes with the same +names.

+
+
+
+CONJUNCTION_OPERATOR_AND = 'AND'
+
+ +
+
+CONJUNCTION_OPERATOR_OR = 'OR'
+
+ +
+ +
+
+class com.vmware.nsx_policy.model_client.Connection(dest_element_id=None, number_of_events=None, src_element_id=None)
+

Bases: vmware.vapi.bindings.struct.VapiStruct

+

Connection are edges that provides the information about connectivity +between the source and destination elements.

+
+

Tip

+

The arguments are used to initialize data attributes with the same +names.

+
+
+ +
+
+class com.vmware.nsx_policy.model_client.Connections(group_connections=None, network_connections=None, process_connections=None, vm_connections=None)
+

Bases: vmware.vapi.bindings.struct.VapiStruct

+

Contains the list of VM, process, group and network connections. Depending +on the view option specified in ViewTypeQueryParameter appropriate +connection information is returned.

+
+

Tip

+

The arguments are used to initialize data attributes with the same +names.

+
+
+ +
+
+class com.vmware.nsx_policy.model_client.ConsolidatedRealizedStatus(consolidated_status=None, consolidated_status_per_enforcement_point=None, intent_path=None)
+

Bases: vmware.vapi.bindings.struct.VapiStruct

+

Represents aggregated realized status for intent entity across associated +realized entities and enforcement points.

+
+

Tip

+

The arguments are used to initialize data attributes with the same +names.

+
+
+ +
+
+class com.vmware.nsx_policy.model_client.ConsolidatedStatus(consolidated_status=None)
+

Bases: vmware.vapi.bindings.struct.VapiStruct

+

Represents consolidated status of an object

+
+

Tip

+

The arguments are used to initialize data attributes with the same +names.

+
+
+ +
+
+class com.vmware.nsx_policy.model_client.ConsolidatedStatusPerEnforcementPoint(consolidated_status=None, enforcement_point_id=None)
+

Bases: vmware.vapi.bindings.struct.VapiStruct

+

Realized status consolidated by enfocement point

+
+

Tip

+

The arguments are used to initialize data attributes with the same +names.

+
+
+ +
+
+class com.vmware.nsx_policy.model_client.Constraint(links=None, schema=None, self_=None, revision=None, create_time=None, create_user=None, last_modified_time=None, last_modified_user=None, protection=None, system_owned=None, description=None, display_name=None, id=None, resource_type=None, tags=None, parent_path=None, path=None, relative_path=None, children=None, marked_for_delete=None, constraint_expression=None, message=None, target=None)
+

Bases: vmware.vapi.bindings.struct.VapiStruct

+

Constraint object to constraint any attribute on a resource based on +specified expression. Example- Restrict the allowed services in Edge +Communication Entry to list of services, if the destinationGroups contain +vCenter. { "target":{ +"target_resource_type":"CommunicationEntry", +"attribute":"services", +"path_prefix":"/infra/domains/vmc-domain/edge-communication-maps/default/communication-entries" +} "constraint_expression":{ "related_attribute":{ +"attribute":"destinationGroups" } "condition":{ +"operator":"INCLUDES", +"rhs_value":{"vCenter"} "value_constraint":{ +"operator":"ALLOW", +"values":{"/ref/services/HTTPS", +"/ref/services/HTTOP", …} } } } }

+
+

Tip

+

The arguments are used to initialize data attributes with the same +names.

+
+
+ +
+
+class com.vmware.nsx_policy.model_client.ConstraintExpression(links=None, schema=None, self_=None, revision=None, create_time=None, create_user=None, last_modified_time=None, last_modified_user=None, protection=None, system_owned=None, description=None, display_name=None, id=None, resource_type='ConstraintExpression', tags=None)
+

Bases: vmware.vapi.bindings.struct.VapiStruct

+

All the types of the expression extend from this abstract class. This is +present for extensibility.

+
+

Tip

+

The arguments are used to initialize data attributes with the same +names.

+
+
+
+RESOURCE_TYPE_ENTITYINSTANCECOUNTCONSTRAINTEXPRESSION = 'EntityInstanceCountConstraintExpression'
+
+ +
+
+RESOURCE_TYPE_RELATEDATTRIBUTECONDITIONALEXPRESSION = 'RelatedAttributeConditionalExpression'
+
+ +
+
+RESOURCE_TYPE_VALUECONSTRAINTEXPRESSION = 'ValueConstraintExpression'
+
+ +
+ +
+
+class com.vmware.nsx_policy.model_client.ConstraintListResult(links=None, schema=None, self_=None, cursor=None, result_count=None, sort_ascending=None, sort_by=None, results=None)
+

Bases: vmware.vapi.bindings.struct.VapiStruct

+

Paged Collection of Constraints

+
+

Tip

+

The arguments are used to initialize data attributes with the same +names.

+
+
+ +
+
+class com.vmware.nsx_policy.model_client.ConstraintTarget(attribute=None, path_prefix=None, target_resource_type=None)
+

Bases: vmware.vapi.bindings.struct.VapiStruct

+

Resource attribute on which constraint should be applied. Example - +sourceGroups attribute of Edge CommunicationEntry to be restricted, is +given as: { "target_resource_type":"CommunicationEntry", +"attribute":"sourceGroups", +"path_prefix":"/infra/domains/vmc-domain/edge-communication-maps/default/communication-entries" +}

+
+

Tip

+

The arguments are used to initialize data attributes with the same +names.

+
+
+ +
+
+class com.vmware.nsx_policy.model_client.ContainerConfiguration(labels=None, navigation=None, span=None, widgets=None, links=None, schema=None, self_=None, revision=None, create_time=None, create_user=None, last_modified_time=None, last_modified_user=None, protection=None, system_owned=None, description=None, display_name=None, id=None, resource_type='ContainerConfiguration', tags=None, datasources=None, drilldown_id=None, footer=None, is_drilldown=None, shared=None, weight=None)
+

Bases: vmware.vapi.bindings.struct.VapiStruct

+

Represents a container to group widgets that belong to a common category or +have a common purpose.

+
+

Tip

+

The arguments are used to initialize data attributes with the same +names.

+
+
+ +
+
+class com.vmware.nsx_policy.model_client.ControlClusterNodeStatus(control_cluster_status=None, mgmt_connection_status=None)
+

Bases: vmware.vapi.bindings.struct.VapiStruct

+
+

Tip

+

The arguments are used to initialize data attributes with the same +names.

+
+
+
+CONTROL_CLUSTER_STATUS_CONNECTED = 'CONNECTED'
+
+ +
+
+CONTROL_CLUSTER_STATUS_DISCONNECTED = 'DISCONNECTED'
+
+ +
+
+CONTROL_CLUSTER_STATUS_UNKNOWN = 'UNKNOWN'
+
+ +
+ +
+
+class com.vmware.nsx_policy.model_client.ControlConnStatus(control_node_ip=None, failure_status=None, status=None)
+

Bases: vmware.vapi.bindings.struct.VapiStruct

+
+

Tip

+

The arguments are used to initialize data attributes with the same +names.

+
+
+
+FAILURE_STATUS_CONNECTION_REFUSED = 'CONNECTION_REFUSED'
+
+ +
+
+FAILURE_STATUS_CONTROLLER_REJECTED_HOST_CERT = 'CONTROLLER_REJECTED_HOST_CERT'
+
+ +
+
+FAILURE_STATUS_HOST_REJECTED_CONTROLLER_CERT = 'HOST_REJECTED_CONTROLLER_CERT'
+
+ +
+
+FAILURE_STATUS_INCOMPLETE_CONTROLLER_CERT = 'INCOMPLETE_CONTROLLER_CERT'
+
+ +
+
+FAILURE_STATUS_INCOMPLETE_HOST_CERT = 'INCOMPLETE_HOST_CERT'
+
+ +
+
+FAILURE_STATUS_KEEP_ALIVE_TIMEOUT = 'KEEP_ALIVE_TIMEOUT'
+
+ +
+
+FAILURE_STATUS_OTHER_ERROR = 'OTHER_ERROR'
+
+ +
+
+FAILURE_STATUS_OTHER_SSL_ERROR = 'OTHER_SSL_ERROR'
+
+ +
+
+STATUS_DOWN = 'DOWN'
+
+ +
+
+STATUS_UP = 'UP'
+
+ +
+ +
+
+class com.vmware.nsx_policy.model_client.ControllerClusterRoleConfig(type=None, control_cluster_listen_addr=None, control_plane_listen_addr=None, host_msg_client_info=None, mpa_msg_client_info=None)
+

Bases: vmware.vapi.bindings.struct.VapiStruct

+
+

Tip

+

The arguments are used to initialize data attributes with the same +names.

+
+
+
+TYPE_CONTROLLERCLUSTERROLECONFIG = 'ControllerClusterRoleConfig'
+
+ +
+
+TYPE_MANAGEMENTCLUSTERROLECONFIG = 'ManagementClusterRoleConfig'
+
+ +
+ +
+
+class com.vmware.nsx_policy.model_client.ControllerClusterStatus(status=None)
+

Bases: vmware.vapi.bindings.struct.VapiStruct

+
+

Tip

+

The arguments are used to initialize data attributes with the same +names.

+
+
+
+STATUS_STABLE = 'STABLE'
+
+ +
+
+STATUS_UNKNOWN = 'UNKNOWN'
+
+ +
+
+STATUS_UNSTABLE = 'UNSTABLE'
+
+ +
+ +
+
+class com.vmware.nsx_policy.model_client.ControllerNodeAggregateInfo(display_name=None, id=None, node_interface_properties=None, node_interface_statistics=None, node_status=None, node_status_properties=None, role_config=None)
+

Bases: vmware.vapi.bindings.struct.VapiStruct

+
+

Tip

+

The arguments are used to initialize data attributes with the same +names.

+
+
+ +
+
+class com.vmware.nsx_policy.model_client.CpuCoreConfigForEnhancedNetworkingStackSwitch(num_lcores=None, numa_node_index=None)
+

Bases: vmware.vapi.bindings.struct.VapiStruct

+

Non Uniform Memory Access (NUMA) nodes and Logical cpu cores (Lcores) per +NUMA node configuration for Enhanced Networking Stack enabled HostSwitch.

+
+

Tip

+

The arguments are used to initialize data attributes with the same +names.

+
+
+ +
+
+class com.vmware.nsx_policy.model_client.Crl(links=None, schema=None, self_=None, revision=None, create_time=None, create_user=None, last_modified_time=None, last_modified_user=None, protection=None, system_owned=None, description=None, display_name=None, id=None, resource_type=None, tags=None, details=None, pem_encoded=None)
+

Bases: vmware.vapi.bindings.struct.VapiStruct

+
+

Tip

+

The arguments are used to initialize data attributes with the same +names.

+
+
+ +
+
+class com.vmware.nsx_policy.model_client.CrlList(links=None, schema=None, self_=None, cursor=None, result_count=None, sort_ascending=None, sort_by=None, results=None)
+

Bases: vmware.vapi.bindings.struct.VapiStruct

+

Crl queries result

+
+

Tip

+

The arguments are used to initialize data attributes with the same +names.

+
+
+ +
+
+class com.vmware.nsx_policy.model_client.CrlObjectData(links=None, schema=None, self_=None, revision=None, create_time=None, create_user=None, last_modified_time=None, last_modified_user=None, protection=None, system_owned=None, description=None, display_name=None, id=None, resource_type=None, tags=None, pem_encoded=None)
+

Bases: vmware.vapi.bindings.struct.VapiStruct

+
+

Tip

+

The arguments are used to initialize data attributes with the same +names.

+
+
+ +
+
+class com.vmware.nsx_policy.model_client.CryptoAlgorithm(key_size=None, name=None)
+

Bases: vmware.vapi.bindings.struct.VapiStruct

+
+

Tip

+

The arguments are used to initialize data attributes with the same +names.

+
+
+ +
+
+class com.vmware.nsx_policy.model_client.Csr(links=None, schema=None, self_=None, revision=None, create_time=None, create_user=None, last_modified_time=None, last_modified_user=None, protection=None, system_owned=None, description=None, display_name=None, id=None, resource_type=None, tags=None, algorithm=None, key_size=None, pem_encoded=None, subject=None)
+

Bases: vmware.vapi.bindings.struct.VapiStruct

+
+

Tip

+

The arguments are used to initialize data attributes with the same +names.

+
+
+
+ALGORITHM_DSA = 'DSA'
+
+ +
+
+ALGORITHM_RSA = 'RSA'
+
+ +
+ +
+
+class com.vmware.nsx_policy.model_client.CsrList(links=None, schema=None, self_=None, cursor=None, result_count=None, sort_ascending=None, sort_by=None, results=None)
+

Bases: vmware.vapi.bindings.struct.VapiStruct

+

Csr queries result

+
+

Tip

+

The arguments are used to initialize data attributes with the same +names.

+
+
+ +
+
+class com.vmware.nsx_policy.model_client.CsvListResult(file_name=None)
+

Bases: vmware.vapi.bindings.struct.VapiStruct

+

Base type for CSV result.

+
+

Tip

+

The arguments are used to initialize data attributes with the same +names.

+
+
+ +
+
+class com.vmware.nsx_policy.model_client.CsvRecord
+

Bases: vmware.vapi.bindings.struct.VapiStruct

+

Base type for CSV records.

+
+

Tip

+

The arguments are used to initialize data attributes with the same +names.

+
+
+ +
+
+class com.vmware.nsx_policy.model_client.CurrentBackupOperationStatus(backup_id=None, current_step=None, current_step_message=None, end_time=None, operation_type=None, start_time=None)
+

Bases: vmware.vapi.bindings.struct.VapiStruct

+

Current backup operation status

+
+

Tip

+

The arguments are used to initialize data attributes with the same +names.

+
+
+
+CURRENT_STEP_CLUSTER_BACKUP = 'BACKUP_CREATING_CLUSTER_BACKUP'
+
+ +
+
+CURRENT_STEP_NODE_BACKUP = 'BACKUP_CREATING_NODE_BACKUP'
+
+ +
+
+OPERATION_TYPE_BACKUP = 'BACKUP'
+
+ +
+
+OPERATION_TYPE_NONE = 'NONE'
+
+ +
+ +
+
+class com.vmware.nsx_policy.model_client.CustomPolicyLbPersistenceProfile(persistence=None, persistence_shared=None, links=None, schema=None, self_=None, revision=None, create_time=None, create_user=None, last_modified_time=None, last_modified_user=None, protection=None, system_owned=None, description=None, display_name=None, id=None, resource_type='CustomPolicyLbPersistenceProfile', tags=None, parent_path=None, path=None, relative_path=None, children=None, marked_for_delete=None)
+

Bases: vmware.vapi.bindings.struct.VapiStruct

+

Some applications maintain state and require all relevant connections to be +sent to the same server as the application state is not synchronized among +servers. Persistence is enabled on a PolicyLbVirtualServer by binding a +persistence profile to it.

+
+

Tip

+

The arguments are used to initialize data attributes with the same +names.

+
+
+ +
+ +
+
+PERSISTENCE_SOURCE_IP = 'SOURCE_IP'
+
+ +
+ +
+
+class com.vmware.nsx_policy.model_client.CustomPolicyLbVirtualServer(app_protocol=None, client_ssl_certificate_ids=None, client_ssl_settings=None, default_client_ssl_certificate_id=None, server_auth_ca_certificate_ids=None, server_ssl_settings=None, insert_client_ip_header=None, links=None, schema=None, self_=None, revision=None, create_time=None, create_user=None, last_modified_time=None, last_modified_user=None, protection=None, system_owned=None, description=None, display_name=None, id=None, resource_type=None, tags=None, parent_path=None, path=None, relative_path=None, children=None, marked_for_delete=None, access_log_enabled=None, ip_address=None, lb_persistence_profile=None, ports=None, router_path=None, traffic_source=None)
+

Bases: vmware.vapi.bindings.struct.VapiStruct

+

Virtual server acts as a facade to an application, receives all client +connections over a specified protocol and distributes them among the +backend servers. This custom type allows for more complex settings than the +simplified PolicyLbVirtualServer types. This object allows for complex +configurations for PolicyLbVirtualServers of all types. All HTTP specific +inputs will be rejected when combined with TPC or UDP protocols.

+
+

Tip

+

The arguments are used to initialize data attributes with the same +names.

+
+
+
+APP_PROTOCOL_HTTP = 'HTTP'
+
+ +
+
+APP_PROTOCOL_HTTPS = 'HTTPS'
+
+ +
+
+APP_PROTOCOL_TCP = 'TCP'
+
+ +
+
+APP_PROTOCOL_UDP = 'UDP'
+
+ +
+
+CLIENT_SSL_SETTINGS_BASE_SECURE_111317 = 'BASE_SECURE_111317'
+
+ +
+
+CLIENT_SSL_SETTINGS_HIGH_SECURE_111317 = 'HIGH_SECURE_111317'
+
+ +
+
+CLIENT_SSL_SETTINGS_MODERATE_SECURE_111317 = 'MODERATE_SECURE_111317'
+
+ +
+
+SERVER_SSL_SETTINGS_BASE_SECURE_111317 = 'BASE_SECURE_111317'
+
+ +
+
+SERVER_SSL_SETTINGS_DISABLED = 'DISABLED'
+
+ +
+
+SERVER_SSL_SETTINGS_HIGH_SECURE_111317 = 'HIGH_SECURE_111317'
+
+ +
+
+SERVER_SSL_SETTINGS_MODERATE_SECURE_111317 = 'MODERATE_SECURE_111317'
+
+ +
+ +
+
+class com.vmware.nsx_policy.model_client.DSRule(links=None, schema=None, self_=None, revision=None, owner=None, description=None, display_name=None, id=None, resource_type=None, action=None, applied_tos=None, destinations=None, destinations_excluded=None, direction=None, disabled=None, ip_protocol=None, is_default=None, logged=None, notes=None, rule_tag=None, services=None, sources=None, sources_excluded=None)
+

Bases: vmware.vapi.bindings.struct.VapiStruct

+
+

Tip

+

The arguments are used to initialize data attributes with the same +names.

+
+
+
+ACTION_ALLOW = 'ALLOW'
+
+ +
+
+ACTION_DO_NOT_REDIRECT = 'DO_NOT_REDIRECT'
+
+ +
+
+ACTION_DROP = 'DROP'
+
+ +
+
+ACTION_REDIRECT = 'REDIRECT'
+
+ +
+
+ACTION_REJECT = 'REJECT'
+
+ +
+
+DIRECTION_IN = 'IN'
+
+ +
+
+DIRECTION_IN_OUT = 'IN_OUT'
+
+ +
+
+DIRECTION_OUT = 'OUT'
+
+ +
+
+IP_PROTOCOL_IPV4 = 'IPV4'
+
+ +
+
+IP_PROTOCOL_IPV4_IPV6 = 'IPV4_IPV6'
+
+ +
+
+IP_PROTOCOL_IPV6 = 'IPV6'
+
+ +
+ +
+
+class com.vmware.nsx_policy.model_client.DSRuleState(details=None, failure_code=None, failure_message=None, state=None, revision_desired=None)
+

Bases: vmware.vapi.bindings.struct.VapiStruct

+
+

Tip

+

The arguments are used to initialize data attributes with the same +names.

+
+
+
+STATE_FAILED = 'failed'
+
+ +
+
+STATE_IN_PROGRESS = 'in_progress'
+
+ +
+
+STATE_ORPHANED = 'orphaned'
+
+ +
+
+STATE_PARTIAL_SUCCESS = 'partial_success'
+
+ +
+
+STATE_PENDING = 'pending'
+
+ +
+
+STATE_SUCCESS = 'success'
+
+ +
+
+STATE_UNKNOWN = 'unknown'
+
+ +
+ +
+
+class com.vmware.nsx_policy.model_client.DSSection(links=None, schema=None, self_=None, revision=None, create_time=None, create_user=None, last_modified_time=None, last_modified_user=None, protection=None, system_owned=None, description=None, display_name=None, id=None, resource_type=None, tags=None, applied_tos=None, is_default=None, rule_count=None, section_type=None, stateful=None)
+

Bases: vmware.vapi.bindings.struct.VapiStruct

+
+

Tip

+

The arguments are used to initialize data attributes with the same +names.

+
+
+
+SECTION_TYPE_L3REDIRECT = 'L3REDIRECT'
+
+ +
+
+SECTION_TYPE_LAYER2 = 'LAYER2'
+
+ +
+
+SECTION_TYPE_LAYER3 = 'LAYER3'
+
+ +
+ +
+
+class com.vmware.nsx_policy.model_client.DSSectionListResult(links=None, schema=None, self_=None, cursor=None, result_count=None, sort_ascending=None, sort_by=None, results=None)
+

Bases: vmware.vapi.bindings.struct.VapiStruct

+
+

Tip

+

The arguments are used to initialize data attributes with the same +names.

+
+
+ +
+
+class com.vmware.nsx_policy.model_client.DSSectionState(details=None, failure_code=None, failure_message=None, state=None, revision_desired=None)
+

Bases: vmware.vapi.bindings.struct.VapiStruct

+
+

Tip

+

The arguments are used to initialize data attributes with the same +names.

+
+
+
+STATE_FAILED = 'failed'
+
+ +
+
+STATE_IN_PROGRESS = 'in_progress'
+
+ +
+
+STATE_ORPHANED = 'orphaned'
+
+ +
+
+STATE_PARTIAL_SUCCESS = 'partial_success'
+
+ +
+
+STATE_PENDING = 'pending'
+
+ +
+
+STATE_SUCCESS = 'success'
+
+ +
+
+STATE_UNKNOWN = 'unknown'
+
+ +
+ +
+
+class com.vmware.nsx_policy.model_client.DSService(is_valid=None, target_display_name=None, target_id=None, target_type=None, service=None)
+

Bases: vmware.vapi.bindings.struct.VapiStruct

+
+

Tip

+

The arguments are used to initialize data attributes with the same +names.

+
+
+ +
+
+class com.vmware.nsx_policy.model_client.DailyTelemetrySchedule(hour_of_day=None, minutes=None, frequency_type=None)
+

Bases: vmware.vapi.bindings.struct.VapiStruct

+
+

Tip

+

The arguments are used to initialize data attributes with the same +names.

+
+
+ +
+
+class com.vmware.nsx_policy.model_client.DataTypeCollectionConfiguration(collection_frequency=None, data_type=None)
+

Bases: vmware.vapi.bindings.struct.VapiStruct

+

Data type collection configuration

+
+

Tip

+

The arguments are used to initialize data attributes with the same +names.

+
+
+
+DATA_TYPE_STATISTICS = 'STATISTICS'
+
+ +
+
+DATA_TYPE_STATUS = 'STATUS'
+
+ +
+ +
+
+class com.vmware.nsx_policy.model_client.Datasource(display_name=None, urls=None)
+

Bases: vmware.vapi.bindings.struct.VapiStruct

+

An instance of a datasource configuration.

+
+

Tip

+

The arguments are used to initialize data attributes with the same +names.

+
+
+ +
+
+class com.vmware.nsx_policy.model_client.DeleteRequestParameters(force=None)
+

Bases: vmware.vapi.bindings.struct.VapiStruct

+

Parameters that affect how delete operations are processed

+
+

Tip

+

The arguments are used to initialize data attributes with the same +names.

+
+
+ +
+
+class com.vmware.nsx_policy.model_client.DeploymentConfig(placement_type='DeploymentConfig')
+

Bases: vmware.vapi.bindings.struct.VapiStruct

+
+

Tip

+

The arguments are used to initialize data attributes with the same +names.

+
+
+
+PLACEMENT_TYPE_VSPHEREDEPLOYMENTCONFIG = 'VsphereDeploymentConfig'
+
+ +
+ +
+
+class com.vmware.nsx_policy.model_client.DeploymentSpec(fabric_module_version=None, versioned_deployment_specs=None)
+

Bases: vmware.vapi.bindings.struct.VapiStruct

+

Deployment spec is a specific version of fabric module

+
+

Tip

+

The arguments are used to initialize data attributes with the same +names.

+
+
+ +
+
+class com.vmware.nsx_policy.model_client.DeploymentTemplate(attributes=None, name=None)
+

Bases: vmware.vapi.bindings.struct.VapiStruct

+

Deployment Template holds the attributes specific to partner for which the +service is created. These attributes are opaque to NSX.

+
+

Tip

+

The arguments are used to initialize data attributes with the same +names.

+
+
+ +
+
+class com.vmware.nsx_policy.model_client.DeploymentZone(links=None, schema=None, self_=None, revision=None, create_time=None, create_user=None, last_modified_time=None, last_modified_user=None, protection=None, system_owned=None, description=None, display_name=None, id=None, resource_type=None, tags=None, parent_path=None, path=None, relative_path=None, children=None, marked_for_delete=None, enforcement_points=None)
+

Bases: vmware.vapi.bindings.struct.VapiStruct

+

Logical grouping of enforcement points

+
+

Tip

+

The arguments are used to initialize data attributes with the same +names.

+
+
+ +
+
+class com.vmware.nsx_policy.model_client.DeploymentZoneListResult(links=None, schema=None, self_=None, cursor=None, result_count=None, sort_ascending=None, sort_by=None, results=None)
+

Bases: vmware.vapi.bindings.struct.VapiStruct

+

Paged Collection of Deployment Zones

+
+

Tip

+

The arguments are used to initialize data attributes with the same +names.

+
+
+ +
+
+class com.vmware.nsx_policy.model_client.DestinationFilteringConfiguration(links=None, schema=None, self_=None, revision=None, create_time=None, create_user=None, last_modified_time=None, last_modified_user=None, protection=None, system_owned=None, description=None, display_name=None, id=None, resource_type=None, tags=None, customer_id=None, enabled=None, provider_url=None)
+

Bases: vmware.vapi.bindings.struct.VapiStruct

+

It is used to configure the reputation and category provider. It can also +be used to enable or disable the destination filtering feature by setting +the enable property.

+
+

Tip

+

The arguments are used to initialize data attributes with the same +names.

+
+
+ +
+
+class com.vmware.nsx_policy.model_client.DhcpFilter(client_block_enabled=None, server_block_enabled=None)
+

Bases: vmware.vapi.bindings.struct.VapiStruct

+

DHCP filtering configuration

+
+

Tip

+

The arguments are used to initialize data attributes with the same +names.

+
+
+ +
+
+class com.vmware.nsx_policy.model_client.DhcpIpPool(links=None, schema=None, self_=None, revision=None, create_time=None, create_user=None, last_modified_time=None, last_modified_user=None, protection=None, system_owned=None, description=None, display_name=None, id=None, resource_type=None, tags=None, gateway_ip=None, lease_time=None, options=None, allocation_ranges=None, error_threshold=None, warning_threshold=None)
+

Bases: vmware.vapi.bindings.struct.VapiStruct

+
+

Tip

+

The arguments are used to initialize data attributes with the same +names.

+
+
+ +
+
+class com.vmware.nsx_policy.model_client.DhcpIpPoolListResult(links=None, schema=None, self_=None, cursor=None, result_count=None, sort_ascending=None, sort_by=None, results=None)
+

Bases: vmware.vapi.bindings.struct.VapiStruct

+
+

Tip

+

The arguments are used to initialize data attributes with the same +names.

+
+
+ +
+
+class com.vmware.nsx_policy.model_client.DhcpOption121(static_routes=None)
+

Bases: vmware.vapi.bindings.struct.VapiStruct

+
+

Tip

+

The arguments are used to initialize data attributes with the same +names.

+
+
+ +
+
+class com.vmware.nsx_policy.model_client.DhcpOptions(option121=None, others=None)
+

Bases: vmware.vapi.bindings.struct.VapiStruct

+
+

Tip

+

The arguments are used to initialize data attributes with the same +names.

+
+
+ +
+
+class com.vmware.nsx_policy.model_client.DhcpProfile(links=None, schema=None, self_=None, revision=None, create_time=None, create_user=None, last_modified_time=None, last_modified_user=None, protection=None, system_owned=None, description=None, display_name=None, id=None, resource_type=None, tags=None, edge_cluster_id=None, edge_cluster_member_indexes=None)
+

Bases: vmware.vapi.bindings.struct.VapiStruct

+
+

Tip

+

The arguments are used to initialize data attributes with the same +names.

+
+
+ +
+
+class com.vmware.nsx_policy.model_client.DhcpProfileListResult(links=None, schema=None, self_=None, cursor=None, result_count=None, sort_ascending=None, sort_by=None, results=None)
+

Bases: vmware.vapi.bindings.struct.VapiStruct

+
+

Tip

+

The arguments are used to initialize data attributes with the same +names.

+
+
+ +
+
+class com.vmware.nsx_policy.model_client.DhcpRelayProfile(links=None, schema=None, self_=None, revision=None, create_time=None, create_user=None, last_modified_time=None, last_modified_user=None, protection=None, system_owned=None, description=None, display_name=None, id=None, resource_type=None, tags=None, server_addresses=None)
+

Bases: vmware.vapi.bindings.struct.VapiStruct

+
+

Tip

+

The arguments are used to initialize data attributes with the same +names.

+
+
+ +
+
+class com.vmware.nsx_policy.model_client.DhcpRelayProfileListResult(links=None, schema=None, self_=None, cursor=None, result_count=None, sort_ascending=None, sort_by=None, results=None)
+

Bases: vmware.vapi.bindings.struct.VapiStruct

+
+

Tip

+

The arguments are used to initialize data attributes with the same +names.

+
+
+ +
+
+class com.vmware.nsx_policy.model_client.DhcpRelayService(links=None, schema=None, self_=None, revision=None, create_time=None, create_user=None, last_modified_time=None, last_modified_user=None, protection=None, system_owned=None, description=None, display_name=None, id=None, resource_type=None, tags=None, dhcp_relay_profile_id=None)
+

Bases: vmware.vapi.bindings.struct.VapiStruct

+
+

Tip

+

The arguments are used to initialize data attributes with the same +names.

+
+
+ +
+
+class com.vmware.nsx_policy.model_client.DhcpRelayServiceListResult(links=None, schema=None, self_=None, cursor=None, result_count=None, sort_ascending=None, sort_by=None, results=None)
+

Bases: vmware.vapi.bindings.struct.VapiStruct

+
+

Tip

+

The arguments are used to initialize data attributes with the same +names.

+
+
+ +
+
+class com.vmware.nsx_policy.model_client.DhcpStaticBinding(links=None, schema=None, self_=None, revision=None, create_time=None, create_user=None, last_modified_time=None, last_modified_user=None, protection=None, system_owned=None, description=None, display_name=None, id=None, resource_type=None, tags=None, gateway_ip=None, lease_time=None, options=None, host_name=None, ip_address=None, mac_address=None)
+

Bases: vmware.vapi.bindings.struct.VapiStruct

+
+

Tip

+

The arguments are used to initialize data attributes with the same +names.

+
+
+ +
+
+class com.vmware.nsx_policy.model_client.DhcpStaticBindingListResult(links=None, schema=None, self_=None, cursor=None, result_count=None, sort_ascending=None, sort_by=None, results=None)
+

Bases: vmware.vapi.bindings.struct.VapiStruct

+
+

Tip

+

The arguments are used to initialize data attributes with the same +names.

+
+
+ +
+
+class com.vmware.nsx_policy.model_client.DirectoryAdDomain(base_distinguished_name=None, links=None, schema=None, self_=None, revision=None, create_time=None, create_user=None, last_modified_time=None, last_modified_user=None, protection=None, system_owned=None, description=None, display_name=None, id=None, resource_type=None, tags=None, name=None)
+

Bases: vmware.vapi.bindings.struct.VapiStruct

+

Active Directory Domain

+
+

Tip

+

The arguments are used to initialize data attributes with the same +names.

+
+
+ +
+
+class com.vmware.nsx_policy.model_client.DirectoryAdGroup(object_guid=None, secure_id=None, links=None, schema=None, self_=None, revision=None, create_time=None, create_user=None, last_modified_time=None, last_modified_user=None, protection=None, system_owned=None, description=None, display_name=None, id=None, resource_type=None, tags=None, distinguished_name=None, domain_id=None, domain_sync_node_id=None)
+

Bases: vmware.vapi.bindings.struct.VapiStruct

+
+

Tip

+

The arguments are used to initialize data attributes with the same +names.

+
+
+ +
+
+class com.vmware.nsx_policy.model_client.DirectoryDomain(links=None, schema=None, self_=None, revision=None, create_time=None, create_user=None, last_modified_time=None, last_modified_user=None, protection=None, system_owned=None, description=None, display_name=None, id=None, resource_type='DirectoryDomain', tags=None, name=None)
+

Bases: vmware.vapi.bindings.struct.VapiStruct

+

Directory Domain

+
+

Tip

+

The arguments are used to initialize data attributes with the same +names.

+
+
+ +
+
+class com.vmware.nsx_policy.model_client.DirectoryDomainListResults(links=None, schema=None, self_=None, cursor=None, result_count=None, sort_ascending=None, sort_by=None, results=None)
+

Bases: vmware.vapi.bindings.struct.VapiStruct

+

List of Directory Domain

+
+

Tip

+

The arguments are used to initialize data attributes with the same +names.

+
+
+ +
+
+class com.vmware.nsx_policy.model_client.DirectoryDomainSyncNode(links=None, schema=None, self_=None, revision=None, create_time=None, create_user=None, last_modified_time=None, last_modified_user=None, protection=None, system_owned=None, description=None, display_name=None, id=None, resource_type=None, tags=None, distinguished_name=None, domain_id=None)
+

Bases: vmware.vapi.bindings.struct.VapiStruct

+

Directory Domain Synchronization Nodes

+
+

Tip

+

The arguments are used to initialize data attributes with the same +names.

+
+
+ +
+
+class com.vmware.nsx_policy.model_client.DirectoryDomainSyncNodeListResults(links=None, schema=None, self_=None, cursor=None, result_count=None, sort_ascending=None, sort_by=None, results=None)
+

Bases: vmware.vapi.bindings.struct.VapiStruct

+

List of Directory Domain Synchronization Nodes

+
+

Tip

+

The arguments are used to initialize data attributes with the same +names.

+
+
+ +
+
+class com.vmware.nsx_policy.model_client.DirectoryDomainSyncRemoteNodes(links=None, schema=None, self_=None, cursor=None, result_count=None, sort_ascending=None, sort_by=None, results=None)
+

Bases: vmware.vapi.bindings.struct.VapiStruct

+

List of Directory Domain sync remote nodes

+
+

Tip

+

The arguments are used to initialize data attributes with the same +names.

+
+
+ +
+
+class com.vmware.nsx_policy.model_client.DirectoryDomainSyncSettings(links=None, schema=None, self_=None, revision=None, create_time=None, create_user=None, last_modified_time=None, last_modified_user=None, protection=None, system_owned=None, description=None, display_name=None, id=None, resource_type=None, tags=None, delta_sync_interval=None, enable_full_sync=None, full_sync_cron_expr=None, sync_entire_domain=None)
+

Bases: vmware.vapi.bindings.struct.VapiStruct

+

Domain synchronization settings

+
+

Tip

+

The arguments are used to initialize data attributes with the same +names.

+
+
+ +
+
+class com.vmware.nsx_policy.model_client.DirectoryDomainSyncStats(links=None, schema=None, self_=None, revision=None, create_time=None, create_user=None, last_modified_time=None, last_modified_user=None, protection=None, system_owned=None, description=None, display_name=None, id=None, resource_type=None, tags=None, avg_delta_sync_time=None, avg_full_sync_time=None, current_state=None, current_state_begin_time=None, num_delta_sync=None, num_full_sync=None, prev_sync_end_time=None, prev_sync_status=None, prev_sync_type=None)
+

Bases: vmware.vapi.bindings.struct.VapiStruct

+

Directory Domain Synchronization Statistics

+
+

Tip

+

The arguments are used to initialize data attributes with the same +names.

+
+
+
+CURRENT_STATE_DELTA_SYNC = 'DELTA_SYNC'
+
+ +
+
+CURRENT_STATE_FULL_SYNC = 'FULL_SYNC'
+
+ +
+
+CURRENT_STATE_IDLE = 'IDLE'
+
+ +
+
+PREV_SYNC_STATUS_FAILURE = 'FAILURE'
+
+ +
+
+PREV_SYNC_STATUS_SUCCESS = 'SUCCESS'
+
+ +
+
+PREV_SYNC_STATUS_UNKNOWN = 'UNKNOWN'
+
+ +
+
+PREV_SYNC_TYPE_DELTA_SYNC = 'DELTA_SYNC'
+
+ +
+
+PREV_SYNC_TYPE_FULL_SYNC = 'FULL_SYNC'
+
+ +
+
+PREV_SYNC_TYPE_IDLE = 'IDLE'
+
+ +
+ +
+
+class com.vmware.nsx_policy.model_client.DirectoryGroup(links=None, schema=None, self_=None, revision=None, create_time=None, create_user=None, last_modified_time=None, last_modified_user=None, protection=None, system_owned=None, description=None, display_name=None, id=None, resource_type='DirectoryGroup', tags=None, distinguished_name=None, domain_id=None, domain_sync_node_id=None)
+

Bases: vmware.vapi.bindings.struct.VapiStruct

+
+

Tip

+

The arguments are used to initialize data attributes with the same +names.

+
+
+ +
+
+class com.vmware.nsx_policy.model_client.DirectoryGroupListResults(links=None, schema=None, self_=None, cursor=None, result_count=None, sort_ascending=None, sort_by=None, results=None)
+

Bases: vmware.vapi.bindings.struct.VapiStruct

+
+

Tip

+

The arguments are used to initialize data attributes with the same +names.

+
+
+ +
+
+class com.vmware.nsx_policy.model_client.DirectoryGroupMember(links=None, schema=None, self_=None, revision=None, create_time=None, create_user=None, last_modified_time=None, last_modified_user=None, protection=None, system_owned=None, description=None, display_name=None, id=None, resource_type=None, tags=None, group_distinguished_name=None, group_id=None, member_group_distinguished_name=None, member_group_id=None, nested=None)
+

Bases: vmware.vapi.bindings.struct.VapiStruct

+
+

Tip

+

The arguments are used to initialize data attributes with the same +names.

+
+
+ +
+
+class com.vmware.nsx_policy.model_client.DirectoryGroupMemberListResults(links=None, schema=None, self_=None, cursor=None, result_count=None, sort_ascending=None, sort_by=None, results=None)
+

Bases: vmware.vapi.bindings.struct.VapiStruct

+
+

Tip

+

The arguments are used to initialize data attributes with the same +names.

+
+
+ +
+
+class com.vmware.nsx_policy.model_client.DirectoryLdapServer(links=None, schema=None, self_=None, revision=None, create_time=None, create_user=None, last_modified_time=None, last_modified_user=None, protection=None, system_owned=None, description=None, display_name=None, id=None, resource_type=None, tags=None, enabled=None, host=None, password=None, port=None, protocol=None, thumbprint=None, username=None)
+

Bases: vmware.vapi.bindings.struct.VapiStruct

+

Ldap Server of Directory Domain

+
+

Tip

+

The arguments are used to initialize data attributes with the same +names.

+
+
+
+PROTOCOL_LDAP = 'LDAP'
+
+ +
+
+PROTOCOL_LDAPS = 'LDAPS'
+
+ +
+ +
+
+class com.vmware.nsx_policy.model_client.DirectoryLdapServerListResults(links=None, schema=None, self_=None, cursor=None, result_count=None, sort_ascending=None, sort_by=None, results=None)
+

Bases: vmware.vapi.bindings.struct.VapiStruct

+

List of Directory Domain LDAP servers

+
+

Tip

+

The arguments are used to initialize data attributes with the same +names.

+
+
+ +
+
+class com.vmware.nsx_policy.model_client.DiscoveredNode(links=None, schema=None, self_=None, last_sync_time=None, description=None, display_name=None, resource_type=None, tags=None, certificate=None, cm_local_id=None, external_id=None, hardware_id=None, ip_addresses=None, node_type=None, origin_id=None, origin_properties=None, os_type=None, os_version=None, parent_compute_collection=None, stateless=None)
+

Bases: vmware.vapi.bindings.struct.VapiStruct

+
+

Tip

+

The arguments are used to initialize data attributes with the same +names.

+
+
+ +
+
+class com.vmware.nsx_policy.model_client.DiscoveredNodeListResult(links=None, schema=None, self_=None, cursor=None, result_count=None, sort_ascending=None, sort_by=None, results=None)
+

Bases: vmware.vapi.bindings.struct.VapiStruct

+

Discovered Node list result

+
+

Tip

+

The arguments are used to initialize data attributes with the same +names.

+
+
+ +
+
+class com.vmware.nsx_policy.model_client.DiscoveredResource(links=None, schema=None, self_=None, last_sync_time=None, description=None, display_name=None, resource_type=None, tags=None)
+

Bases: vmware.vapi.bindings.struct.VapiStruct

+

Base class for resources that are discovered and automatically updated

+
+

Tip

+

The arguments are used to initialize data attributes with the same +names.

+
+
+ +
+
+class com.vmware.nsx_policy.model_client.DiscoverySession(links=None, schema=None, self_=None, revision=None, create_time=None, create_user=None, last_modified_time=None, last_modified_user=None, protection=None, system_owned=None, description=None, display_name=None, id=None, resource_type=None, tags=None, parent_path=None, path=None, relative_path=None, children=None, marked_for_delete=None)
+

Bases: vmware.vapi.bindings.struct.VapiStruct

+

Contains the details of selected application/domain discovery session

+
+

Tip

+

The arguments are used to initialize data attributes with the same +names.

+
+
+ +
+
+class com.vmware.nsx_policy.model_client.DiscoverySessionListResult(links=None, schema=None, self_=None, cursor=None, result_count=None, sort_ascending=None, sort_by=None, results=None)
+

Bases: vmware.vapi.bindings.struct.VapiStruct

+

Collection of discovery sessions

+
+

Tip

+

The arguments are used to initialize data attributes with the same +names.

+
+
+ +
+
+class com.vmware.nsx_policy.model_client.DnsForwarder(links=None, schema=None, self_=None, revision=None, create_time=None, create_user=None, last_modified_time=None, last_modified_user=None, protection=None, system_owned=None, description=None, display_name=None, id=None, resource_type=None, tags=None, cache_size=None, conditional_forwarders=None, default_forwarder=None, listener_ip=None, log_level=None, logical_router_id=None)
+

Bases: vmware.vapi.bindings.struct.VapiStruct

+
+

Tip

+

The arguments are used to initialize data attributes with the same +names.

+
+
+
+LOG_LEVEL_DEBUG = 'DEBUG'
+
+ +
+
+LOG_LEVEL_ERROR = 'ERROR'
+
+ +
+
+LOG_LEVEL_FATAL = 'FATAL'
+
+ +
+
+LOG_LEVEL_INFO = 'INFO'
+
+ +
+
+LOG_LEVEL_WARNING = 'WARNING'
+
+ +
+ +
+
+class com.vmware.nsx_policy.model_client.DnsForwarderListResult(links=None, schema=None, self_=None, cursor=None, result_count=None, sort_ascending=None, sort_by=None, results=None)
+

Bases: vmware.vapi.bindings.struct.VapiStruct

+
+

Tip

+

The arguments are used to initialize data attributes with the same +names.

+
+
+ +
+
+class com.vmware.nsx_policy.model_client.Domain(links=None, schema=None, self_=None, revision=None, create_time=None, create_user=None, last_modified_time=None, last_modified_user=None, protection=None, system_owned=None, description=None, display_name=None, id=None, resource_type=None, tags=None, parent_path=None, path=None, relative_path=None, children=None, marked_for_delete=None, communication_maps=None, groups=None)
+

Bases: vmware.vapi.bindings.struct.VapiStruct

+
+

Tip

+

The arguments are used to initialize data attributes with the same +names.

+
+
+ +
+
+class com.vmware.nsx_policy.model_client.DomainDeploymentMap(links=None, schema=None, self_=None, revision=None, create_time=None, create_user=None, last_modified_time=None, last_modified_user=None, protection=None, system_owned=None, description=None, display_name=None, id=None, resource_type=None, tags=None, parent_path=None, path=None, relative_path=None, children=None, marked_for_delete=None, enforcement_point_path=None)
+

Bases: vmware.vapi.bindings.struct.VapiStruct

+

Binding of domains to the enforcement point.

+
+

Tip

+

The arguments are used to initialize data attributes with the same +names.

+
+
+ +
+
+class com.vmware.nsx_policy.model_client.DomainDeploymentMapListResult(links=None, schema=None, self_=None, cursor=None, result_count=None, sort_ascending=None, sort_by=None, results=None)
+

Bases: vmware.vapi.bindings.struct.VapiStruct

+

Paged Collection of Domain Deployment map

+
+

Tip

+

The arguments are used to initialize data attributes with the same +names.

+
+
+ +
+
+class com.vmware.nsx_policy.model_client.DomainListResult(links=None, schema=None, self_=None, cursor=None, result_count=None, sort_ascending=None, sort_by=None, results=None)
+

Bases: vmware.vapi.bindings.struct.VapiStruct

+

Paged Collection of Domains

+
+

Tip

+

The arguments are used to initialize data attributes with the same +names.

+
+
+ +
+
+class com.vmware.nsx_policy.model_client.DonutConfiguration(display_count=None, label=None, navigation=None, sections=None, links=None, schema=None, self_=None, revision=None, create_time=None, create_user=None, last_modified_time=None, last_modified_user=None, protection=None, system_owned=None, description=None, display_name=None, id=None, resource_type='DonutConfiguration', tags=None, datasources=None, drilldown_id=None, footer=None, is_drilldown=None, shared=None, weight=None)
+

Bases: vmware.vapi.bindings.struct.VapiStruct

+

Represents configuration of a Donut

+
+

Tip

+

The arguments are used to initialize data attributes with the same +names.

+
+
+ +
+
+class com.vmware.nsx_policy.model_client.DonutPart(field=None, label=None, render_configuration=None, tooltip=None)
+

Bases: vmware.vapi.bindings.struct.VapiStruct

+

Represents an entity or portion to be plotted on a donut or stats chart.

+
+

Tip

+

The arguments are used to initialize data attributes with the same +names.

+
+
+ +
+
+class com.vmware.nsx_policy.model_client.DonutSection(parts=None, row_list_field=None, template=None)
+

Bases: vmware.vapi.bindings.struct.VapiStruct

+

Represents high level logical grouping of portions or segments of a donut / +stats chart.

+
+

Tip

+

The arguments are used to initialize data attributes with the same +names.

+
+
+ +
+
+class com.vmware.nsx_policy.model_client.Dscp(mode=None, priority=None)
+

Bases: vmware.vapi.bindings.struct.VapiStruct

+

Dscp value is ignored in case of ‘TRUSTED’ DscpMode.

+
+

Tip

+

The arguments are used to initialize data attributes with the same +names.

+
+
+
+MODE_TRUSTED = 'TRUSTED'
+
+ +
+
+MODE_UNTRUSTED = 'UNTRUSTED'
+
+ +
+ +
+
+class com.vmware.nsx_policy.model_client.EULAAcceptance(acceptance=None)
+

Bases: vmware.vapi.bindings.struct.VapiStruct

+

Indicate the status of End User License Agreement acceptance

+
+

Tip

+

The arguments are used to initialize data attributes with the same +names.

+
+
+ +
+
+class com.vmware.nsx_policy.model_client.EULAContent(content=None)
+

Bases: vmware.vapi.bindings.struct.VapiStruct

+

End User License Agreement content

+
+

Tip

+

The arguments are used to initialize data attributes with the same +names.

+
+
+ +
+
+class com.vmware.nsx_policy.model_client.EdgeCluster(links=None, schema=None, self_=None, revision=None, create_time=None, create_user=None, last_modified_time=None, last_modified_user=None, protection=None, system_owned=None, description=None, display_name=None, id=None, resource_type=None, tags=None, cluster_profile_bindings=None, deployment_type=None, member_node_type=None, members=None)
+

Bases: vmware.vapi.bindings.struct.VapiStruct

+
+

Tip

+

The arguments are used to initialize data attributes with the same +names.

+
+
+
+DEPLOYMENT_TYPE_PHYSICAL_MACHINE = 'PHYSICAL_MACHINE'
+
+ +
+
+DEPLOYMENT_TYPE_UNKNOWN = 'UNKNOWN'
+
+ +
+
+DEPLOYMENT_TYPE_VIRTUAL_MACHINE = 'VIRTUAL_MACHINE'
+
+ +
+
+MEMBER_NODE_TYPE_EDGE_NODE = 'EDGE_NODE'
+
+ +
+
+MEMBER_NODE_TYPE_PUBLIC_CLOUD_GATEWAY_NODE = 'PUBLIC_CLOUD_GATEWAY_NODE'
+
+ +
+
+MEMBER_NODE_TYPE_UNKNOWN = 'UNKNOWN'
+
+ +
+ +
+
+class com.vmware.nsx_policy.model_client.EdgeClusterListResult(links=None, schema=None, self_=None, cursor=None, result_count=None, sort_ascending=None, sort_by=None, results=None)
+

Bases: vmware.vapi.bindings.struct.VapiStruct

+
+

Tip

+

The arguments are used to initialize data attributes with the same +names.

+
+
+ +
+
+class com.vmware.nsx_policy.model_client.EdgeClusterMember(description=None, display_name=None, member_index=None, transport_node_id=None)
+

Bases: vmware.vapi.bindings.struct.VapiStruct

+
+

Tip

+

The arguments are used to initialize data attributes with the same +names.

+
+
+ +
+
+class com.vmware.nsx_policy.model_client.EdgeClusterMemberListResult(links=None, schema=None, self_=None, cursor=None, result_count=None, sort_ascending=None, sort_by=None, results=None)
+

Bases: vmware.vapi.bindings.struct.VapiStruct

+
+

Tip

+

The arguments are used to initialize data attributes with the same +names.

+
+
+ +
+
+class com.vmware.nsx_policy.model_client.EdgeCommunicationMap(links=None, schema=None, self_=None, revision=None, create_time=None, create_user=None, last_modified_time=None, last_modified_user=None, protection=None, system_owned=None, description=None, display_name=None, id=None, resource_type=None, tags=None, parent_path=None, path=None, relative_path=None, children=None, marked_for_delete=None, category=None, communication_entries=None, precedence=None)
+

Bases: vmware.vapi.bindings.struct.VapiStruct

+

Contains ordered list of CommunicationEntries for EdgeCommunicationMap

+
+

Tip

+

The arguments are used to initialize data attributes with the same +names.

+
+
+ +
+
+class com.vmware.nsx_policy.model_client.EdgeCommunicationMapListResult(links=None, schema=None, self_=None, cursor=None, result_count=None, sort_ascending=None, sort_by=None, results=None)
+

Bases: vmware.vapi.bindings.struct.VapiStruct

+

Paged Collection of Edge Communication map

+
+

Tip

+

The arguments are used to initialize data attributes with the same +names.

+
+
+ +
+
+class com.vmware.nsx_policy.model_client.EdgeHighAvailabilityProfile(bfd_allowed_hops=None, bfd_declare_dead_multiple=None, bfd_probe_interval=None, links=None, schema=None, self_=None, revision=None, create_time=None, create_user=None, last_modified_time=None, last_modified_user=None, protection=None, system_owned=None, description=None, display_name=None, id=None, resource_type='EdgeHighAvailabilityProfile', tags=None)
+

Bases: vmware.vapi.bindings.struct.VapiStruct

+

Profile for BFD HA cluster setting

+
+

Tip

+

The arguments are used to initialize data attributes with the same +names.

+
+
+ +
+
+class com.vmware.nsx_policy.model_client.EdgeNode(allocation_list=None, deployment_config=None, deployment_type=None, links=None, schema=None, self_=None, revision=None, create_time=None, create_user=None, last_modified_time=None, last_modified_user=None, protection=None, system_owned=None, description=None, display_name=None, id=None, resource_type='EdgeNode', tags=None, discovered_ip_addresses=None, external_id=None, fqdn=None, ip_addresses=None)
+

Bases: vmware.vapi.bindings.struct.VapiStruct

+
+

Tip

+

The arguments are used to initialize data attributes with the same +names.

+
+
+
+DEPLOYMENT_TYPE_PHYSICAL_MACHINE = 'PHYSICAL_MACHINE'
+
+ +
+
+DEPLOYMENT_TYPE_UNKNOWN = 'UNKNOWN'
+
+ +
+
+DEPLOYMENT_TYPE_VIRTUAL_MACHINE = 'VIRTUAL_MACHINE'
+
+ +
+ +
+
+class com.vmware.nsx_policy.model_client.EdgeNodeDeploymentConfig(form_factor=None, node_user_settings=None, vm_deployment_config=None)
+

Bases: vmware.vapi.bindings.struct.VapiStruct

+
+

Tip

+

The arguments are used to initialize data attributes with the same +names.

+
+
+
+FORM_FACTOR_LARGE = 'LARGE'
+
+ +
+
+FORM_FACTOR_MEDIUM = 'MEDIUM'
+
+ +
+
+FORM_FACTOR_SMALL = 'SMALL'
+
+ +
+ +
+
+class com.vmware.nsx_policy.model_client.EffectiveIPAddressMemberListResult(links=None, schema=None, self_=None, cursor=None, result_count=None, sort_ascending=None, sort_by=None, results=None)
+

Bases: vmware.vapi.bindings.struct.VapiStruct

+
+

Tip

+

The arguments are used to initialize data attributes with the same +names.

+
+
+ +
+
+class com.vmware.nsx_policy.model_client.EffectiveMemberResourceListResult(links=None, schema=None, self_=None, cursor=None, result_count=None, sort_ascending=None, sort_by=None, results=None)
+

Bases: vmware.vapi.bindings.struct.VapiStruct

+
+

Tip

+

The arguments are used to initialize data attributes with the same +names.

+
+
+ +
+
+class com.vmware.nsx_policy.model_client.EgressRateShaper(enabled=None, resource_type=None, average_bandwidth_mbps=None, burst_size_bytes=None, peak_bandwidth_mbps=None)
+

Bases: vmware.vapi.bindings.struct.VapiStruct

+

A shaper that specifies egress rate properties in Mb/s

+
+

Tip

+

The arguments are used to initialize data attributes with the same +names.

+
+
+
+RESOURCE_TYPE_EGRESSRATESHAPER = 'EgressRateShaper'
+
+ +
+
+RESOURCE_TYPE_INGRESSBROADCASTRATESHAPER = 'IngressBroadcastRateShaper'
+
+ +
+
+RESOURCE_TYPE_INGRESSRATESHAPER = 'IngressRateShaper'
+
+ +
+ +
+
+class com.vmware.nsx_policy.model_client.Element(element_id=None, elements=None, resource_name=None, resource_type=None)
+

Bases: vmware.vapi.bindings.struct.VapiStruct

+

Abstract base class of the realized element. Element can be VM, Group, +Process, LogicalSwitch, LogicalT0Router, LogicalT1Router element.

+
+

Tip

+

The arguments are used to initialize data attributes with the same +names.

+
+
+
+RESOURCE_TYPE_GROUPELEMENT = 'GroupElement'
+
+ +
+
+RESOURCE_TYPE_LOGICALSWITCHELEMENT = 'LogicalSwitchElement'
+
+ +
+
+RESOURCE_TYPE_LOGICALT0ROUTERELEMENT = 'LogicalT0RouterElement'
+
+ +
+
+RESOURCE_TYPE_LOGICALT1ROUTERELEMENT = 'LogicalT1RouterElement'
+
+ +
+
+RESOURCE_TYPE_PROCESSELEMENT = 'ProcessElement'
+
+ +
+
+RESOURCE_TYPE_VMELEMENT = 'VMElement'
+
+ +
+ +
+
+class com.vmware.nsx_policy.model_client.EmbeddedResource(links=None, schema=None, self_=None, revision=None, owner=None, description=None, display_name=None, id=None, resource_type=None)
+

Bases: vmware.vapi.bindings.struct.VapiStruct

+

Base class for resources that are embedded in other resources

+
+

Tip

+

The arguments are used to initialize data attributes with the same +names.

+
+
+ +
+
+class com.vmware.nsx_policy.model_client.Endpoint(default_gateway=None, device_name=None, ip=None, label=None, subnet_mask=None)
+

Bases: vmware.vapi.bindings.struct.VapiStruct

+

An Endpoint object is part of HostSwitch configuration in TransportNode

+
+

Tip

+

The arguments are used to initialize data attributes with the same +names.

+
+
+ +
+
+class com.vmware.nsx_policy.model_client.EnforcementPoint(links=None, schema=None, self_=None, revision=None, create_time=None, create_user=None, last_modified_time=None, last_modified_user=None, protection=None, system_owned=None, description=None, display_name=None, id=None, resource_type=None, tags=None, parent_path=None, path=None, relative_path=None, children=None, marked_for_delete=None, connection_info=None, version=None)
+

Bases: vmware.vapi.bindings.struct.VapiStruct

+

Represents endpoint where policy will be applied

+
+

Tip

+

The arguments are used to initialize data attributes with the same +names.

+
+
+ +
+
+class com.vmware.nsx_policy.model_client.EnforcementPointConnectionInfo(enforcement_point_address=None, resource_type='EnforcementPointConnectionInfo')
+

Bases: vmware.vapi.bindings.struct.VapiStruct

+

Contains information required to connect to enforcement point

+
+

Tip

+

The arguments are used to initialize data attributes with the same +names.

+
+
+
+RESOURCE_TYPE_NSXTCONNECTIONINFO = 'NSXTConnectionInfo'
+
+ +
+
+RESOURCE_TYPE_NSXVCONNECTIONINFO = 'NSXVConnectionInfo'
+
+ +
+ +
+
+class com.vmware.nsx_policy.model_client.EnforcementPointListResult(links=None, schema=None, self_=None, cursor=None, result_count=None, sort_ascending=None, sort_by=None, results=None)
+

Bases: vmware.vapi.bindings.struct.VapiStruct

+

Paged collection of enforcement points

+
+

Tip

+

The arguments are used to initialize data attributes with the same +names.

+
+
+ +
+
+class com.vmware.nsx_policy.model_client.EntityInstanceCountConstraintExpression(count=None, operator=None, links=None, schema=None, self_=None, revision=None, create_time=None, create_user=None, last_modified_time=None, last_modified_user=None, protection=None, system_owned=None, description=None, display_name=None, id=None, resource_type='EntityInstanceCountConstraintExpression', tags=None)
+

Bases: vmware.vapi.bindings.struct.VapiStruct

+

Represents the leaf level constraint to restrict the number instances of an +entity type can be created. This is useful in restricting number of CGWs or +MGWs or Providers that can created in a system.

+
+

Tip

+

The arguments are used to initialize data attributes with the same +names.

+
+
+ +
+
+class com.vmware.nsx_policy.model_client.ErrorResolverInfo(error_id=None, resolver_present=None, user_metadata=None)
+

Bases: vmware.vapi.bindings.struct.VapiStruct

+

Metadata related to a given error_id

+
+

Tip

+

The arguments are used to initialize data attributes with the same +names.

+
+
+ +
+
+class com.vmware.nsx_policy.model_client.ErrorResolverInfoList(results=None)
+

Bases: vmware.vapi.bindings.struct.VapiStruct

+

Collection of all registered ErrorResolverInfo

+
+

Tip

+

The arguments are used to initialize data attributes with the same +names.

+
+
+ +
+
+class com.vmware.nsx_policy.model_client.ErrorResolverMetadata(entity_id=None, error_id=None, system_metadata=None, user_metadata=None)
+

Bases: vmware.vapi.bindings.struct.VapiStruct

+

Error along with its metadata

+
+

Tip

+

The arguments are used to initialize data attributes with the same +names.

+
+
+ +
+
+class com.vmware.nsx_policy.model_client.ErrorResolverMetadataList(errors=None)
+

Bases: vmware.vapi.bindings.struct.VapiStruct

+

List of errors with their metadata

+
+

Tip

+

The arguments are used to initialize data attributes with the same +names.

+
+
+ +
+
+class com.vmware.nsx_policy.model_client.ErrorResolverSystemMetadata(value=None)
+

Bases: vmware.vapi.bindings.struct.VapiStruct

+

Metadata fetched from an external system like Syslog or LogInsight.

+
+

Tip

+

The arguments are used to initialize data attributes with the same +names.

+
+
+ +
+
+class com.vmware.nsx_policy.model_client.ErrorResolverUserInputData(data_type=None, property_name=None, property_value=None)
+

Bases: vmware.vapi.bindings.struct.VapiStruct

+

Corresponds to one property entered by the user

+
+

Tip

+

The arguments are used to initialize data attributes with the same +names.

+
+
+
+DATA_TYPE_NUMBER = 'NUMBER'
+
+ +
+
+DATA_TYPE_PASSWORD = 'PASSWORD'
+
+ +
+
+DATA_TYPE_TEXT = 'TEXT'
+
+ +
+ +
+
+class com.vmware.nsx_policy.model_client.ErrorResolverUserMetadata(user_input_list=None)
+

Bases: vmware.vapi.bindings.struct.VapiStruct

+

User supplied metadata needed for resolving errors

+
+

Tip

+

The arguments are used to initialize data attributes with the same +names.

+
+
+ +
+
+class com.vmware.nsx_policy.model_client.EtherTypeNSService(ether_type=None, resource_type='EtherTypeNSService')
+

Bases: vmware.vapi.bindings.struct.VapiStruct

+

An NSService element that represents an ethertype protocol

+
+

Tip

+

The arguments are used to initialize data attributes with the same +names.

+
+
+ +
+
+class com.vmware.nsx_policy.model_client.EtherTypeServiceEntry(ether_type=None, links=None, schema=None, self_=None, revision=None, create_time=None, create_user=None, last_modified_time=None, last_modified_user=None, protection=None, system_owned=None, description=None, display_name=None, id=None, resource_type='EtherTypeServiceEntry', tags=None, parent_path=None, path=None, relative_path=None, children=None, marked_for_delete=None)
+

Bases: vmware.vapi.bindings.struct.VapiStruct

+

A ServiceEntry that represents an ethertype protocol

+
+

Tip

+

The arguments are used to initialize data attributes with the same +names.

+
+
+ +
+
+class com.vmware.nsx_policy.model_client.ExcludeList(links=None, schema=None, self_=None, revision=None, create_time=None, create_user=None, last_modified_time=None, last_modified_user=None, protection=None, system_owned=None, description=None, display_name=None, id=None, resource_type=None, tags=None, members=None)
+

Bases: vmware.vapi.bindings.struct.VapiStruct

+
+

Tip

+

The arguments are used to initialize data attributes with the same +names.

+
+
+ +
+
+class com.vmware.nsx_policy.model_client.Expression(links=None, schema=None, self_=None, revision=None, create_time=None, create_user=None, last_modified_time=None, last_modified_user=None, protection=None, system_owned=None, description=None, display_name=None, id=None, resource_type='Expression', tags=None, parent_path=None, path=None, relative_path=None, children=None, marked_for_delete=None)
+

Bases: vmware.vapi.bindings.struct.VapiStruct

+

All the nodes of the expression extend from this abstract class. This is +present for extensibility.

+
+

Tip

+

The arguments are used to initialize data attributes with the same +names.

+
+
+
+RESOURCE_TYPE_CONDITION = 'Condition'
+
+ +
+
+RESOURCE_TYPE_CONJUNCTIONOPERATOR = 'ConjunctionOperator'
+
+ +
+
+RESOURCE_TYPE_IPADDRESSEXPRESSION = 'IPAddressExpression'
+
+ +
+
+RESOURCE_TYPE_NESTEDEXPRESSION = 'NestedExpression'
+
+ +
+ +
+
+class com.vmware.nsx_policy.model_client.ExtraConfig(config_pair=None)
+

Bases: vmware.vapi.bindings.struct.VapiStruct

+

Extra config is intended for supporting vendor specific configuration on +the data path, it can be set as key value string pairs on either logical +switch or logical port. If it was set on logical switch, it will be +inherited automatically by logical ports in it. Also logical port setting +will override logical switch setting if specific key was dual set on both +logical switch and logical port.

+
+

Tip

+

The arguments are used to initialize data attributes with the same +names.

+
+
+ +
+
+class com.vmware.nsx_policy.model_client.ExtraConfigHostSwitchProfile(extra_configs=None, links=None, schema=None, self_=None, revision=None, create_time=None, create_user=None, last_modified_time=None, last_modified_user=None, protection=None, system_owned=None, description=None, display_name=None, id=None, resource_type='ExtraConfigHostSwitchProfile', tags=None, required_capabilities=None)
+

Bases: vmware.vapi.bindings.struct.VapiStruct

+

Profile for extra configs in host switch

+
+

Tip

+

The arguments are used to initialize data attributes with the same +names.

+
+
+ +
+
+class com.vmware.nsx_policy.model_client.FabricModule(links=None, schema=None, self_=None, revision=None, create_time=None, create_user=None, last_modified_time=None, last_modified_user=None, protection=None, system_owned=None, description=None, display_name=None, id=None, resource_type=None, tags=None, current_version=None, deployment_specs=None, fabric_module_name=None, source_authentication_mode=None)
+

Bases: vmware.vapi.bindings.struct.VapiStruct

+

Fabric module contains list of deployment specs and current version. Each +deployment spec is a different version of same fabric module. If fabric +module have two deployment specs or say two different versions then current +version will specify which version needs to be installed.

+
+

Tip

+

The arguments are used to initialize data attributes with the same +names.

+
+
+
+SOURCE_AUTHENTICATION_MODE_BASIC_AUTHENTICATION = 'BASIC_AUTHENTICATION'
+
+ +
+
+SOURCE_AUTHENTICATION_MODE_MARKET_PLACE = 'MARKET_PLACE'
+
+ +
+
+SOURCE_AUTHENTICATION_MODE_NO_AUTHENTICATION = 'NO_AUTHENTICATION'
+
+ +
+ +
+
+class com.vmware.nsx_policy.model_client.FabricModuleListResult(links=None, schema=None, self_=None, cursor=None, result_count=None, sort_ascending=None, sort_by=None, results=None)
+

Bases: vmware.vapi.bindings.struct.VapiStruct

+

Fabric Module list result

+
+

Tip

+

The arguments are used to initialize data attributes with the same +names.

+
+
+ +
+
+class com.vmware.nsx_policy.model_client.FeaturePermission(feature=None, permission=None)
+

Bases: vmware.vapi.bindings.struct.VapiStruct

+

Feature Permission

+
+

Tip

+

The arguments are used to initialize data attributes with the same +names.

+
+
+
+PERMISSION_CRUD = 'crud'
+
+ +
+
+PERMISSION_EXECUTE = 'execute'
+
+ +
+
+PERMISSION_NONE = 'none'
+
+ +
+
+PERMISSION_READ = 'read'
+
+ +
+ +
+
+class com.vmware.nsx_policy.model_client.FeaturePermissionListResult(links=None, schema=None, self_=None, cursor=None, result_count=None, sort_ascending=None, sort_by=None, results=None)
+

Bases: vmware.vapi.bindings.struct.VapiStruct

+
+

Tip

+

The arguments are used to initialize data attributes with the same +names.

+
+
+ +
+
+class com.vmware.nsx_policy.model_client.FeatureStackCollectionConfiguration(links=None, schema=None, self_=None, revision=None, create_time=None, create_user=None, last_modified_time=None, last_modified_user=None, protection=None, system_owned=None, description=None, display_name=None, id=None, resource_type=None, tags=None, client_type_collection_configurations=None, feature_stack_name=None)
+

Bases: vmware.vapi.bindings.struct.VapiStruct

+

HPM feature stack data collection frequency configuration

+
+

Tip

+

The arguments are used to initialize data attributes with the same +names.

+
+
+ +
+
+class com.vmware.nsx_policy.model_client.FeatureStackCollectionConfigurationList(results=None)
+

Bases: vmware.vapi.bindings.struct.VapiStruct

+

Feature stack collection configuration list result

+
+

Tip

+

The arguments are used to initialize data attributes with the same +names.

+
+
+ +
+
+class com.vmware.nsx_policy.model_client.FeatureUsage(links=None, schema=None, self_=None, capacity_usage=None, feature=None)
+

Bases: vmware.vapi.bindings.struct.VapiStruct

+

feature usage result item

+
+

Tip

+

The arguments are used to initialize data attributes with the same +names.

+
+
+ +
+
+class com.vmware.nsx_policy.model_client.FeatureUsageCsvRecord(cpu_usage_count=None, feature=None, vm_usage_count=None)
+

Bases: vmware.vapi.bindings.struct.VapiStruct

+
+

Tip

+

The arguments are used to initialize data attributes with the same +names.

+
+
+ +
+
+class com.vmware.nsx_policy.model_client.FeatureUsageList(links=None, schema=None, self_=None, feature_usage_info=None)
+

Bases: vmware.vapi.bindings.struct.VapiStruct

+

list of feature usage items

+
+

Tip

+

The arguments are used to initialize data attributes with the same +names.

+
+
+ +
+
+class com.vmware.nsx_policy.model_client.FeatureUsageListInCsvFormat(file_name=None, last_update_timestamp=None, results=None)
+

Bases: vmware.vapi.bindings.struct.VapiStruct

+
+

Tip

+

The arguments are used to initialize data attributes with the same +names.

+
+
+ +
+
+class com.vmware.nsx_policy.model_client.FileTransferAuthenticationScheme(password=None, scheme_name=None, username=None)
+

Bases: vmware.vapi.bindings.struct.VapiStruct

+

Remote server authentication details

+
+

Tip

+

The arguments are used to initialize data attributes with the same +names.

+
+
+
+SCHEME_NAME_PASSWORD = 'PASSWORD'
+
+ +
+ +
+
+class com.vmware.nsx_policy.model_client.FileTransferProtocol(authentication_scheme=None, protocol_name=None, ssh_fingerprint=None)
+

Bases: vmware.vapi.bindings.struct.VapiStruct

+

Protocol to transfer backup file to remote server

+
+

Tip

+

The arguments are used to initialize data attributes with the same +names.

+
+
+
+PROTOCOL_NAME_SFTP = 'sftp'
+
+ +
+ +
+
+class com.vmware.nsx_policy.model_client.FilterRequest(field_names=None, value=None)
+

Bases: vmware.vapi.bindings.struct.VapiStruct

+

Filter request parameters

+
+

Tip

+

The arguments are used to initialize data attributes with the same +names.

+
+
+ +
+
+class com.vmware.nsx_policy.model_client.FireWallServiceAssociationListResult(results=None, links=None, schema=None, self_=None, cursor=None, result_count=None, sort_ascending=None, sort_by=None, service_type='FireWallServiceAssociationListResult')
+

Bases: vmware.vapi.bindings.struct.VapiStruct

+
+

Tip

+

The arguments are used to initialize data attributes with the same +names.

+
+
+ +
+
+class com.vmware.nsx_policy.model_client.FirewallRule(links=None, schema=None, self_=None, revision=None, owner=None, description=None, display_name=None, id=None, resource_type=None, action=None, applied_tos=None, destinations=None, destinations_excluded=None, direction=None, disabled=None, ip_protocol=None, is_default=None, logged=None, notes=None, rule_tag=None, services=None, sources=None, sources_excluded=None, section_id=None)
+

Bases: vmware.vapi.bindings.struct.VapiStruct

+
+

Tip

+

The arguments are used to initialize data attributes with the same +names.

+
+
+
+ACTION_ALLOW = 'ALLOW'
+
+ +
+
+ACTION_DO_NOT_REDIRECT = 'DO_NOT_REDIRECT'
+
+ +
+
+ACTION_DROP = 'DROP'
+
+ +
+
+ACTION_REDIRECT = 'REDIRECT'
+
+ +
+
+ACTION_REJECT = 'REJECT'
+
+ +
+
+DIRECTION_IN = 'IN'
+
+ +
+
+DIRECTION_IN_OUT = 'IN_OUT'
+
+ +
+
+DIRECTION_OUT = 'OUT'
+
+ +
+
+IP_PROTOCOL_IPV4 = 'IPV4'
+
+ +
+
+IP_PROTOCOL_IPV4_IPV6 = 'IPV4_IPV6'
+
+ +
+
+IP_PROTOCOL_IPV6 = 'IPV6'
+
+ +
+ +
+
+class com.vmware.nsx_policy.model_client.FirewallRuleListResult(links=None, schema=None, self_=None, cursor=None, result_count=None, sort_ascending=None, sort_by=None, results=None)
+

Bases: vmware.vapi.bindings.struct.VapiStruct

+
+

Tip

+

The arguments are used to initialize data attributes with the same +names.

+
+
+ +
+
+class com.vmware.nsx_policy.model_client.FirewallSection(links=None, schema=None, self_=None, revision=None, create_time=None, create_user=None, last_modified_time=None, last_modified_user=None, protection=None, system_owned=None, description=None, display_name=None, id=None, resource_type=None, tags=None, applied_tos=None, is_default=None, rule_count=None, section_type=None, stateful=None)
+

Bases: vmware.vapi.bindings.struct.VapiStruct

+
+

Tip

+

The arguments are used to initialize data attributes with the same +names.

+
+
+
+SECTION_TYPE_L3REDIRECT = 'L3REDIRECT'
+
+ +
+
+SECTION_TYPE_LAYER2 = 'LAYER2'
+
+ +
+
+SECTION_TYPE_LAYER3 = 'LAYER3'
+
+ +
+ +
+
+class com.vmware.nsx_policy.model_client.FirewallSectionListResult(links=None, schema=None, self_=None, cursor=None, result_count=None, sort_ascending=None, sort_by=None, results=None)
+

Bases: vmware.vapi.bindings.struct.VapiStruct

+
+

Tip

+

The arguments are used to initialize data attributes with the same +names.

+
+
+ +
+
+class com.vmware.nsx_policy.model_client.FirewallSectionRuleList(links=None, schema=None, self_=None, revision=None, create_time=None, create_user=None, last_modified_time=None, last_modified_user=None, protection=None, system_owned=None, description=None, display_name=None, id=None, resource_type=None, tags=None, applied_tos=None, is_default=None, rule_count=None, section_type=None, stateful=None, rules=None)
+

Bases: vmware.vapi.bindings.struct.VapiStruct

+
+

Tip

+

The arguments are used to initialize data attributes with the same +names.

+
+
+
+SECTION_TYPE_L3REDIRECT = 'L3REDIRECT'
+
+ +
+
+SECTION_TYPE_LAYER2 = 'LAYER2'
+
+ +
+
+SECTION_TYPE_LAYER3 = 'LAYER3'
+
+ +
+ +
+
+class com.vmware.nsx_policy.model_client.FirewallSectionState(details=None, failure_code=None, failure_message=None, state=None, revision_desired=None)
+

Bases: vmware.vapi.bindings.struct.VapiStruct

+
+

Tip

+

The arguments are used to initialize data attributes with the same +names.

+
+
+
+STATE_FAILED = 'failed'
+
+ +
+
+STATE_IN_PROGRESS = 'in_progress'
+
+ +
+
+STATE_ORPHANED = 'orphaned'
+
+ +
+
+STATE_PARTIAL_SUCCESS = 'partial_success'
+
+ +
+
+STATE_PENDING = 'pending'
+
+ +
+
+STATE_SUCCESS = 'success'
+
+ +
+
+STATE_UNKNOWN = 'unknown'
+
+ +
+ +
+
+class com.vmware.nsx_policy.model_client.FirewallSectionsSummary(links=None, schema=None, self_=None, rule_count=None, section_count=None, section_type=None)
+

Bases: vmware.vapi.bindings.struct.VapiStruct

+
+

Tip

+

The arguments are used to initialize data attributes with the same +names.

+
+
+
+SECTION_TYPE_L2DFW = 'L2DFW'
+
+ +
+
+SECTION_TYPE_L3DFW = 'L3DFW'
+
+ +
+ +
+
+class com.vmware.nsx_policy.model_client.FirewallService(is_valid=None, target_display_name=None, target_id=None, target_type=None, service=None)
+

Bases: vmware.vapi.bindings.struct.VapiStruct

+
+

Tip

+

The arguments are used to initialize data attributes with the same +names.

+
+
+ +
+
+class com.vmware.nsx_policy.model_client.FirewallStats(links=None, schema=None, self_=None, byte_count=None, packet_count=None, rule_id=None, session_count=None, total_session_count=None)
+

Bases: vmware.vapi.bindings.struct.VapiStruct

+
+

Tip

+

The arguments are used to initialize data attributes with the same +names.

+
+
+ +
+
+class com.vmware.nsx_policy.model_client.FirewallStatus(links=None, schema=None, self_=None, revision=None, create_time=None, create_user=None, last_modified_time=None, last_modified_user=None, protection=None, system_owned=None, description=None, display_name=None, id=None, resource_type=None, tags=None, context=None, global_status=None, target_statuses=None)
+

Bases: vmware.vapi.bindings.struct.VapiStruct

+

Firewall Status Response

+
+

Tip

+

The arguments are used to initialize data attributes with the same +names.

+
+
+
+CONTEXT_LOGICAL_ROUTERS = 'logical_routers'
+
+ +
+
+CONTEXT_TRANSPORT_NODES = 'transport_nodes'
+
+ +
+
+GLOBAL_STATUS_DISABLED = 'DISABLED'
+
+ +
+
+GLOBAL_STATUS_ENABLED = 'ENABLED'
+
+ +
+ +
+
+class com.vmware.nsx_policy.model_client.FirewallStatusListResult(links=None, schema=None, self_=None, cursor=None, result_count=None, sort_ascending=None, sort_by=None, results=None)
+

Bases: vmware.vapi.bindings.struct.VapiStruct

+

List of firewall statuses for a context or all context

+
+

Tip

+

The arguments are used to initialize data attributes with the same +names.

+
+
+ +
+
+class com.vmware.nsx_policy.model_client.Footer(actions=None, condition=None)
+

Bases: vmware.vapi.bindings.struct.VapiStruct

+

Footer of a widget that provides additional information or allows an action +such as clickable url for navigation. An example usage of footer is +provided under ‘example_request’ section of ‘CreateWidgetConfiguration’ +API.

+
+

Tip

+

The arguments are used to initialize data attributes with the same +names.

+
+
+ +
+
+class com.vmware.nsx_policy.model_client.FooterAction(dock_to_container_footer=None, label=None, url=None)
+

Bases: vmware.vapi.bindings.struct.VapiStruct

+

Action specified at the footer of a widget to provide additional +information or to provide a clickable url for navigation. An example usage +of footer action is provided under the ‘example_request’ section of +‘CreateWidgetConfiguration’ API.

+
+

Tip

+

The arguments are used to initialize data attributes with the same +names.

+
+
+ +
+
+class com.vmware.nsx_policy.model_client.ForwarderZone(source_ip=None, upstream_servers=None)
+

Bases: vmware.vapi.bindings.struct.VapiStruct

+
+

Tip

+

The arguments are used to initialize data attributes with the same +names.

+
+
+ +
+
+class com.vmware.nsx_policy.model_client.GenericDhcpOption(code=None, values=None)
+

Bases: vmware.vapi.bindings.struct.VapiStruct

+
+

Tip

+

The arguments are used to initialize data attributes with the same +names.

+
+
+ +
+
+class com.vmware.nsx_policy.model_client.GenericPolicyRealizedResource(links=None, schema=None, self_=None, revision=None, create_time=None, create_user=None, last_modified_time=None, last_modified_user=None, protection=None, system_owned=None, description=None, display_name=None, id=None, resource_type=None, tags=None, parent_path=None, path=None, relative_path=None, alarms=None, intent_reference=None, realization_specific_identifier=None, runtime_status=None, state=None, entity_type=None, extended_attributes=None)
+

Bases: vmware.vapi.bindings.struct.VapiStruct

+

Represents realized entity

+
+

Tip

+

The arguments are used to initialize data attributes with the same +names.

+
+
+
+ENTITY_TYPE_DUMMY = 'DUMMY'
+
+ +
+
+STATE_ERROR = 'ERROR'
+
+ +
+
+STATE_REALIZED = 'REALIZED'
+
+ +
+
+STATE_UNAVAILABLE = 'UNAVAILABLE'
+
+ +
+
+STATE_UNREALIZED = 'UNREALIZED'
+
+ +
+ +
+
+class com.vmware.nsx_policy.model_client.GenericPolicyRealizedResourceListResult(links=None, schema=None, self_=None, cursor=None, result_count=None, sort_ascending=None, sort_by=None, results=None)
+

Bases: vmware.vapi.bindings.struct.VapiStruct

+

GenericPolicyRealizedResource list result

+
+

Tip

+

The arguments are used to initialize data attributes with the same +names.

+
+
+ +
+
+class com.vmware.nsx_policy.model_client.GlobalCollectionConfiguration(links=None, schema=None, self_=None, revision=None, create_time=None, create_user=None, last_modified_time=None, last_modified_user=None, protection=None, system_owned=None, description=None, display_name=None, id=None, resource_type=None, tags=None, aggregated_data_collection_frequency=None, is_data_collection_enabled=None, modified_feature_stack_collection_configurations=None)
+

Bases: vmware.vapi.bindings.struct.VapiStruct

+
+

Tip

+

The arguments are used to initialize data attributes with the same +names.

+
+
+ +
+
+class com.vmware.nsx_policy.model_client.GlobalRestoreStatus(description=None, value=None)
+

Bases: vmware.vapi.bindings.struct.VapiStruct

+

Overall restore process status

+
+

Tip

+

The arguments are used to initialize data attributes with the same +names.

+
+
+
+VALUE_ABORTED = 'ABORTED'
+
+ +
+
+VALUE_ERROR = 'ERROR'
+
+ +
+
+VALUE_NOT_AVAILABLE = 'NOT_AVAILABLE'
+
+ +
+
+VALUE_NOT_STARTED = 'NOT_STARTED'
+
+ +
+
+VALUE_RUNNING = 'RUNNING'
+
+ +
+
+VALUE_SUCCESS = 'SUCCESS'
+
+ +
+
+VALUE_SUSPENDED = 'SUSPENDED'
+
+ +
+
+VALUE_SUSPENDING = 'SUSPENDING'
+
+ +
+ +
+
+class com.vmware.nsx_policy.model_client.GridConfiguration(columns=None, page_size=None, row_list_fields=None, span=None, links=None, schema=None, self_=None, revision=None, create_time=None, create_user=None, last_modified_time=None, last_modified_user=None, protection=None, system_owned=None, description=None, display_name=None, id=None, resource_type='GridConfiguration', tags=None, datasources=None, drilldown_id=None, footer=None, is_drilldown=None, shared=None, weight=None)
+

Bases: vmware.vapi.bindings.struct.VapiStruct

+

Represents configuration of a Grid or Table widget.

+
+

Tip

+

The arguments are used to initialize data attributes with the same +names.

+
+
+ +
+
+class com.vmware.nsx_policy.model_client.Group(links=None, schema=None, self_=None, revision=None, create_time=None, create_user=None, last_modified_time=None, last_modified_user=None, protection=None, system_owned=None, description=None, display_name=None, id=None, resource_type=None, tags=None, parent_path=None, path=None, relative_path=None, children=None, marked_for_delete=None, expression=None, state=None)
+

Bases: vmware.vapi.bindings.struct.VapiStruct

+
+

Tip

+

The arguments are used to initialize data attributes with the same +names.

+
+
+
+STATE_FAILURE = 'FAILURE'
+
+ +
+
+STATE_IN_PROGRESS = 'IN_PROGRESS'
+
+ +
+
+STATE_SUCCESS = 'SUCCESS'
+
+ +
+ +
+
+class com.vmware.nsx_policy.model_client.GroupConnection(dest_element_id=None, number_of_events=None, src_element_id=None)
+

Bases: vmware.vapi.bindings.struct.VapiStruct

+

GroupConnection contains the statistic information of the connection +between two groups.

+
+

Tip

+

The arguments are used to initialize data attributes with the same +names.

+
+
+ +
+
+class com.vmware.nsx_policy.model_client.GroupElement(element_id=None, elements=None, resource_name=None, resource_type=None)
+

Bases: vmware.vapi.bindings.struct.VapiStruct

+

Group element extends from Element class. This class contains the +information related to the group.

+
+

Tip

+

The arguments are used to initialize data attributes with the same +names.

+
+
+
+RESOURCE_TYPE_GROUPELEMENT = 'GroupElement'
+
+ +
+
+RESOURCE_TYPE_LOGICALSWITCHELEMENT = 'LogicalSwitchElement'
+
+ +
+
+RESOURCE_TYPE_LOGICALT0ROUTERELEMENT = 'LogicalT0RouterElement'
+
+ +
+
+RESOURCE_TYPE_LOGICALT1ROUTERELEMENT = 'LogicalT1RouterElement'
+
+ +
+
+RESOURCE_TYPE_PROCESSELEMENT = 'ProcessElement'
+
+ +
+
+RESOURCE_TYPE_VMELEMENT = 'VMElement'
+
+ +
+ +
+
+class com.vmware.nsx_policy.model_client.GroupListResult(links=None, schema=None, self_=None, cursor=None, result_count=None, sort_ascending=None, sort_by=None, results=None)
+

Bases: vmware.vapi.bindings.struct.VapiStruct

+

Paged Collection of Groups

+
+

Tip

+

The arguments are used to initialize data attributes with the same +names.

+
+
+ +
+
+class com.vmware.nsx_policy.model_client.HaVipConfig(enabled=None, ha_vip_subnets=None, redundant_uplink_port_ids=None)
+

Bases: vmware.vapi.bindings.struct.VapiStruct

+
+

Tip

+

The arguments are used to initialize data attributes with the same +names.

+
+
+ +
+
+class com.vmware.nsx_policy.model_client.HostAggregateInfo(links=None, schema=None, self_=None, revision=None, create_time=None, create_user=None, last_modified_time=None, last_modified_user=None, protection=None, system_owned=None, description=None, display_name=None, id=None, resource_type=None, tags=None, host=None, status=None, transport_node=None)
+

Bases: vmware.vapi.bindings.struct.VapiStruct

+

Aggregation of desired and runtime status of host

+
+

Tip

+

The arguments are used to initialize data attributes with the same +names.

+
+
+ +
+
+class com.vmware.nsx_policy.model_client.HostAggregateInfoListResult(links=None, schema=None, self_=None, cursor=None, result_count=None, sort_ascending=None, sort_by=None, results=None)
+

Bases: vmware.vapi.bindings.struct.VapiStruct

+

Host aggregate state list result

+
+

Tip

+

The arguments are used to initialize data attributes with the same +names.

+
+
+ +
+
+class com.vmware.nsx_policy.model_client.HostInfraTrafficType(dynamic_res_pool_name=None, traffic_name=None)
+

Bases: vmware.vapi.bindings.struct.VapiStruct

+

The traffic_name specifies the infrastructure traffic type and it must be +one of the following system-defined types: FAULT_TOLERANCE is traffic for +failover and recovery. HBR is traffic for Host based replication. ISCSI is +traffic for Internet Small Computer System Interface. MANAGEMENT is traffic +for host management. NFS is traffic related to file transfer in network +file system. VDP is traffic for vSphere data protection. VIRTUAL_MACHINE is +traffic generated by virtual machines. VMOTION is traffic for computing +resource migration. VSAN is traffic generated by virtual storage area +network. The dynamic_res_pool_name provides a name for the resource pool. +It can be any arbitrary string. Either traffic_name or +dynamic_res_pool_name must be set. If both are specified or omitted, an +error will be returned.

+
+

Tip

+

The arguments are used to initialize data attributes with the same +names.

+
+
+
+TRAFFIC_NAME_FAULT_TOLERANCE = 'FAULT_TOLERANCE'
+
+ +
+
+TRAFFIC_NAME_HBR = 'HBR'
+
+ +
+
+TRAFFIC_NAME_ISCSI = 'ISCSI'
+
+ +
+
+TRAFFIC_NAME_MANAGEMENT = 'MANAGEMENT'
+
+ +
+
+TRAFFIC_NAME_NFS = 'NFS'
+
+ +
+
+TRAFFIC_NAME_VDP = 'VDP'
+
+ +
+
+TRAFFIC_NAME_VIRTUAL_MACHINE = 'VIRTUAL_MACHINE'
+
+ +
+
+TRAFFIC_NAME_VMOTION = 'VMOTION'
+
+ +
+
+TRAFFIC_NAME_VSAN = 'VSAN'
+
+ +
+ +
+
+class com.vmware.nsx_policy.model_client.HostNode(discovered_node_id=None, host_credential=None, managed_by_server=None, os_type=None, os_version=None, links=None, schema=None, self_=None, revision=None, create_time=None, create_user=None, last_modified_time=None, last_modified_user=None, protection=None, system_owned=None, description=None, display_name=None, id=None, resource_type='HostNode', tags=None, discovered_ip_addresses=None, external_id=None, fqdn=None, ip_addresses=None)
+

Bases: vmware.vapi.bindings.struct.VapiStruct

+
+

Tip

+

The arguments are used to initialize data attributes with the same +names.

+
+
+
+OS_TYPE_ESXI = 'ESXI'
+
+ +
+
+OS_TYPE_HYPERV = 'HYPERV'
+
+ +
+
+OS_TYPE_RHELKVM = 'RHELKVM'
+
+ +
+
+OS_TYPE_UBUNTUKVM = 'UBUNTUKVM'
+
+ +
+ +
+
+class com.vmware.nsx_policy.model_client.HostNodeLoginCredential(password=None, thumbprint=None, username=None)
+

Bases: vmware.vapi.bindings.struct.VapiStruct

+

The credentials to login into the host node

+
+

Tip

+

The arguments are used to initialize data attributes with the same +names.

+
+
+ +
+
+class com.vmware.nsx_policy.model_client.HostProfileNetworkMigrationSpec(network_mappings=None, links=None, schema=None, self_=None, revision=None, create_time=None, create_user=None, last_modified_time=None, last_modified_user=None, protection=None, system_owned=None, description=None, display_name=None, id=None, resource_type='HostProfileNetworkMigrationSpec', tags=None)
+

Bases: vmware.vapi.bindings.struct.VapiStruct

+

This specification should be used to define which VMK adapters need to be +migrated to NSX logical switches from VC network switches. Migrations +specified here should match with those from associated Host Profiles from +VC. Mismatch will result in migration failures. This specification only +supports migration vmkernal adapters to NSX logical switches.

+
+

Tip

+

The arguments are used to initialize data attributes with the same +names.

+
+
+ +
+
+class com.vmware.nsx_policy.model_client.HostSwitch(host_switch_name=None, host_switch_profile_ids=None, pnics=None, static_ip_pool_id=None)
+

Bases: vmware.vapi.bindings.struct.VapiStruct

+

Host Switch specification

+
+

Tip

+

The arguments are used to initialize data attributes with the same +names.

+
+
+ +
+
+class com.vmware.nsx_policy.model_client.HostSwitchProfileTypeIdEntry(key=None, value=None)
+

Bases: vmware.vapi.bindings.struct.VapiStruct

+
+

Tip

+

The arguments are used to initialize data attributes with the same +names.

+
+
+
+KEY_EXTRACONFIGHOSTSWITCHPROFILE = 'ExtraConfigHostSwitchProfile'
+
+ +
+
+KEY_LLDPHOSTSWITCHPROFILE = 'LldpHostSwitchProfile'
+
+ +
+
+KEY_NIOCPROFILE = 'NiocProfile'
+
+ +
+
+KEY_UPLINKHOSTSWITCHPROFILE = 'UplinkHostSwitchProfile'
+
+ +
+ +
+
+class com.vmware.nsx_policy.model_client.HostSwitchProfilesListResult(links=None, schema=None, self_=None, cursor=None, result_count=None, sort_ascending=None, sort_by=None, results=None)
+

Bases: vmware.vapi.bindings.struct.VapiStruct

+

HostSwitch Profile queries result

+
+

Tip

+

The arguments are used to initialize data attributes with the same +names.

+
+
+ +
+
+class com.vmware.nsx_policy.model_client.HostSwitchSpec(resource_type='HostSwitchSpec')
+

Bases: vmware.vapi.bindings.struct.VapiStruct

+

The HostSwitchSpec is the base class for standard and preconfigured host +switch specifications.

+
+

Tip

+

The arguments are used to initialize data attributes with the same +names.

+
+
+
+RESOURCE_TYPE_PRECONFIGUREDHOSTSWITCHSPEC = 'PreconfiguredHostSwitchSpec'
+
+ +
+
+RESOURCE_TYPE_STANDARDHOSTSWITCHSPEC = 'StandardHostSwitchSpec'
+
+ +
+ +
+
+class com.vmware.nsx_policy.model_client.HostSwitchState(endpoints=None, host_switch_id=None, host_switch_name=None, transport_zone_ids=None)
+

Bases: vmware.vapi.bindings.struct.VapiStruct

+

Host Switch State

+
+

Tip

+

The arguments are used to initialize data attributes with the same +names.

+
+
+ +
+
+class com.vmware.nsx_policy.model_client.HttpPolicyLbMonitorProfile(url=None, links=None, schema=None, self_=None, revision=None, create_time=None, create_user=None, last_modified_time=None, last_modified_user=None, protection=None, system_owned=None, description=None, display_name=None, id=None, resource_type='HttpPolicyLbMonitorProfile', tags=None, parent_path=None, path=None, relative_path=None, children=None, marked_for_delete=None, fall_count=None, interval=None, monitor_port=None, rise_count=None, timeout=None)
+

Bases: vmware.vapi.bindings.struct.VapiStruct

+

Active healthchecks are disabled by default and can be enabled for a server +pool by binding a health monitor to the Group through the PolicyLbRule +object. This represents active health monitoring over HTTP. Active +healthchecks are initiated periodically, at a configurable interval, to +each member of the Group. Only if a healthcheck fails consecutively for a +specified number of times (fall_count) to a member will the member status +be marked DOWN. Once a member is DOWN, a specified number of consecutive +successful healthchecks (rise_count) will bring the member back to UP +state. After a healthcheck is initiated, if it does not complete within a +certain period, then also the healthcheck is considered to be unsuccessful. +Completing a healthcheck within timeout means establishing a connection +(TCP or SSL), if applicable, sending the request and receiving the +response, all within the configured timeout.

+
+

Tip

+

The arguments are used to initialize data attributes with the same +names.

+
+
+ +
+
+class com.vmware.nsx_policy.model_client.HttpPolicyLbVirtualServer(insert_client_ip_header=None, links=None, schema=None, self_=None, revision=None, create_time=None, create_user=None, last_modified_time=None, last_modified_user=None, protection=None, system_owned=None, description=None, display_name=None, id=None, resource_type='HttpPolicyLbVirtualServer', tags=None, parent_path=None, path=None, relative_path=None, children=None, marked_for_delete=None, access_log_enabled=None, ip_address=None, lb_persistence_profile=None, ports=None, router_path=None, traffic_source=None)
+

Bases: vmware.vapi.bindings.struct.VapiStruct

+

Virtual server acts as a facade to an application, receives all client +connections over HTTP and distributes them among the backend servers.

+
+

Tip

+

The arguments are used to initialize data attributes with the same +names.

+
+
+ +
+
+class com.vmware.nsx_policy.model_client.HttpsPolicyLbMonitorProfile(url=None, links=None, schema=None, self_=None, revision=None, create_time=None, create_user=None, last_modified_time=None, last_modified_user=None, protection=None, system_owned=None, description=None, display_name=None, id=None, resource_type=None, tags=None, parent_path=None, path=None, relative_path=None, children=None, marked_for_delete=None, fall_count=None, interval=None, monitor_port=None, rise_count=None, timeout=None)
+

Bases: vmware.vapi.bindings.struct.VapiStruct

+

Active healthchecks are disabled by default and can be enabled for a server +pool by binding a health monitor to the Group through the PolicyLbRule +object. This represents active health monitoring over HTTPS. Active +healthchecks are initiated periodically, at a configurable interval, to +each member of the Group. Only if a healthcheck fails consecutively for a +specified number of times (fall_count) to a member will the member status +be marked DOWN. Once a member is DOWN, a specified number of consecutive +successful healthchecks (rise_count) will bring the member back to UP +state. After a healthcheck is initiated, if it does not complete within a +certain period, then also the healthcheck is considered to be unsuccessful. +Completing a healthcheck within timeout means establishing a connection +(TCP or SSL), if applicable, sending the request and receiving the +response, all within the configured timeout.

+
+

Tip

+

The arguments are used to initialize data attributes with the same +names.

+
+
+ +
+
+class com.vmware.nsx_policy.model_client.HttpsPolicyLbVirtualServer(client_ssl_certificate_ids=None, client_ssl_settings=None, default_client_ssl_certificate_id=None, insert_client_ip_header=None, links=None, schema=None, self_=None, revision=None, create_time=None, create_user=None, last_modified_time=None, last_modified_user=None, protection=None, system_owned=None, description=None, display_name=None, id=None, resource_type=None, tags=None, parent_path=None, path=None, relative_path=None, children=None, marked_for_delete=None, access_log_enabled=None, ip_address=None, lb_persistence_profile=None, ports=None, router_path=None, traffic_source=None)
+

Bases: vmware.vapi.bindings.struct.VapiStruct

+

Virtual server acts as a facade to an application, receives all client +connections over HTTPS and distributes them among the backend servers.

+
+

Tip

+

The arguments are used to initialize data attributes with the same +names.

+
+
+
+CLIENT_SSL_SETTINGS_BASE_SECURE_111317 = 'BASE_SECURE_111317'
+
+ +
+
+CLIENT_SSL_SETTINGS_HIGH_SECURE_111317 = 'HIGH_SECURE_111317'
+
+ +
+
+CLIENT_SSL_SETTINGS_MODERATE_SECURE_111317 = 'MODERATE_SECURE_111317'
+
+ +
+ +
+
+class com.vmware.nsx_policy.model_client.ICMPTypeNSService(icmp_code=None, icmp_type=None, protocol=None, resource_type='ICMPTypeNSService')
+

Bases: vmware.vapi.bindings.struct.VapiStruct

+

A NSService that represents IPv4 or IPv6 ICMP protocol

+
+

Tip

+

The arguments are used to initialize data attributes with the same +names.

+
+
+
+PROTOCOL_ICMPV4 = 'ICMPv4'
+
+ +
+
+PROTOCOL_ICMPV6 = 'ICMPv6'
+
+ +
+ +
+
+class com.vmware.nsx_policy.model_client.ICMPTypeServiceEntry(icmp_code=None, icmp_type=None, protocol=None, links=None, schema=None, self_=None, revision=None, create_time=None, create_user=None, last_modified_time=None, last_modified_user=None, protection=None, system_owned=None, description=None, display_name=None, id=None, resource_type='ICMPTypeServiceEntry', tags=None, parent_path=None, path=None, relative_path=None, children=None, marked_for_delete=None)
+

Bases: vmware.vapi.bindings.struct.VapiStruct

+

A ServiceEntry that represents IPv4 or IPv6 ICMP protocol

+
+

Tip

+

The arguments are used to initialize data attributes with the same +names.

+
+
+
+PROTOCOL_ICMPV4 = 'ICMPv4'
+
+ +
+
+PROTOCOL_ICMPV6 = 'ICMPv6'
+
+ +
+ +
+
+class com.vmware.nsx_policy.model_client.IGMPTypeNSService(resource_type='IGMPTypeNSService')
+

Bases: vmware.vapi.bindings.struct.VapiStruct

+

A NSService that represents IGMP protocol

+
+

Tip

+

The arguments are used to initialize data attributes with the same +names.

+
+
+ +
+
+class com.vmware.nsx_policy.model_client.IGMPTypeServiceEntry(links=None, schema=None, self_=None, revision=None, create_time=None, create_user=None, last_modified_time=None, last_modified_user=None, protection=None, system_owned=None, description=None, display_name=None, id=None, resource_type='IGMPTypeServiceEntry', tags=None, parent_path=None, path=None, relative_path=None, children=None, marked_for_delete=None)
+

Bases: vmware.vapi.bindings.struct.VapiStruct

+

A ServiceEntry that represents IGMP protocol

+
+

Tip

+

The arguments are used to initialize data attributes with the same +names.

+
+
+ +
+
+class com.vmware.nsx_policy.model_client.IPAddressExpression(ip_addresses=None, links=None, schema=None, self_=None, revision=None, create_time=None, create_user=None, last_modified_time=None, last_modified_user=None, protection=None, system_owned=None, description=None, display_name=None, id=None, resource_type='IPAddressExpression', tags=None, parent_path=None, path=None, relative_path=None, children=None, marked_for_delete=None)
+

Bases: vmware.vapi.bindings.struct.VapiStruct

+

Represents IP address expressions in the form of an array, to support +addition of IP addresses in a group.

+
+

Tip

+

The arguments are used to initialize data attributes with the same +names.

+
+
+ +
+
+class com.vmware.nsx_policy.model_client.IPAddressPortPair(ip_address=None, port=None)
+

Bases: vmware.vapi.bindings.struct.VapiStruct

+

IP Address and Port information

+
+

Tip

+

The arguments are used to initialize data attributes with the same +names.

+
+
+ +
+
+class com.vmware.nsx_policy.model_client.IPFIXCollectorProfile(links=None, schema=None, self_=None, revision=None, create_time=None, create_user=None, last_modified_time=None, last_modified_user=None, protection=None, system_owned=None, description=None, display_name=None, id=None, resource_type=None, tags=None, parent_path=None, path=None, relative_path=None, children=None, marked_for_delete=None, ipaddress=None, port=None)
+

Bases: vmware.vapi.bindings.struct.VapiStruct

+

IPFIX data will be collected on collector Host ip and port address should +be provided for collector.

+
+

Tip

+

The arguments are used to initialize data attributes with the same +names.

+
+
+ +
+
+class com.vmware.nsx_policy.model_client.IPFIXCollectorProfileListResult(links=None, schema=None, self_=None, cursor=None, result_count=None, sort_ascending=None, sort_by=None, results=None)
+

Bases: vmware.vapi.bindings.struct.VapiStruct

+

Paged collection of IPFIX collector profiles.

+
+

Tip

+

The arguments are used to initialize data attributes with the same +names.

+
+
+ +
+
+class com.vmware.nsx_policy.model_client.IPFIXCollectorProfileUIResource(links=None, schema=None, self_=None, revision=None, create_time=None, create_user=None, last_modified_time=None, last_modified_user=None, protection=None, system_owned=None, description=None, display_name=None, id=None, resource_type=None, tags=None, parent_path=None, path=None, relative_path=None, children=None, marked_for_delete=None, ipaddress=None, port=None)
+

Bases: vmware.vapi.bindings.struct.VapiStruct

+

IPFIX data will be collected on collector Host ip and port address should +be provided for collector.

+
+

Tip

+

The arguments are used to initialize data attributes with the same +names.

+
+
+ +
+
+class com.vmware.nsx_policy.model_client.IPFIXCollectorProfileUIResourceList(links=None, schema=None, self_=None, revision=None, create_time=None, create_user=None, last_modified_time=None, last_modified_user=None, protection=None, system_owned=None, description=None, display_name=None, id=None, resource_type=None, tags=None, parent_path=None, path=None, relative_path=None, children=None, marked_for_delete=None, ipfix_collectors=None)
+

Bases: vmware.vapi.bindings.struct.VapiStruct

+

List of IPFIX Collectors

+
+

Tip

+

The arguments are used to initialize data attributes with the same +names.

+
+
+ +
+
+class com.vmware.nsx_policy.model_client.IPFIXSwitchCollectionInstance(links=None, schema=None, self_=None, revision=None, create_time=None, create_user=None, last_modified_time=None, last_modified_user=None, protection=None, system_owned=None, description=None, display_name=None, id=None, resource_type=None, tags=None, parent_path=None, path=None, relative_path=None, children=None, marked_for_delete=None, active_timeout=None, idle_timeout=None, ipfix_collector_profile_paths=None, max_flows=None, observation_domain_id=None, packet_sample_probability=None, source_logical_segment_paths=None)
+

Bases: vmware.vapi.bindings.struct.VapiStruct

+

IPFIX data from source logical segment will be copied to IPFIX collector.

+
+

Tip

+

The arguments are used to initialize data attributes with the same +names.

+
+
+ +
+
+class com.vmware.nsx_policy.model_client.IPFIXSwitchCollectionInstanceListResult(links=None, schema=None, self_=None, cursor=None, result_count=None, sort_ascending=None, sort_by=None, results=None)
+

Bases: vmware.vapi.bindings.struct.VapiStruct

+

Paged Collection of IPFIX Switch Collection Instances

+
+

Tip

+

The arguments are used to initialize data attributes with the same +names.

+
+
+ +
+
+class com.vmware.nsx_policy.model_client.IPInfo(ip_addresses=None, prefix_length=None)
+

Bases: vmware.vapi.bindings.struct.VapiStruct

+
+

Tip

+

The arguments are used to initialize data attributes with the same +names.

+
+
+ +
+
+class com.vmware.nsx_policy.model_client.IPMirrorDestination(destination_ips=None, encapsulation_type=None, erspan_id=None, gre_key=None, resource_type='IPMirrorDestination')
+

Bases: vmware.vapi.bindings.struct.VapiStruct

+
+

Tip

+

The arguments are used to initialize data attributes with the same +names.

+
+
+
+ENCAPSULATION_TYPE_ERSPAN_THREE = 'ERSPAN_THREE'
+
+ +
+
+ENCAPSULATION_TYPE_ERSPAN_TWO = 'ERSPAN_TWO'
+
+ +
+
+ENCAPSULATION_TYPE_GRE = 'GRE'
+
+ +
+ +
+
+class com.vmware.nsx_policy.model_client.IPPrefixList(links=None, schema=None, self_=None, revision=None, create_time=None, create_user=None, last_modified_time=None, last_modified_user=None, protection=None, system_owned=None, description=None, display_name=None, id=None, resource_type=None, tags=None, logical_router_id=None, prefixes=None)
+

Bases: vmware.vapi.bindings.struct.VapiStruct

+
+

Tip

+

The arguments are used to initialize data attributes with the same +names.

+
+
+ +
+
+class com.vmware.nsx_policy.model_client.IPPrefixListListResult(links=None, schema=None, self_=None, cursor=None, result_count=None, sort_ascending=None, sort_by=None, results=None)
+

Bases: vmware.vapi.bindings.struct.VapiStruct

+
+

Tip

+

The arguments are used to initialize data attributes with the same +names.

+
+
+ +
+
+class com.vmware.nsx_policy.model_client.IPProtocolNSService(protocol_number=None, resource_type='IPProtocolNSService')
+

Bases: vmware.vapi.bindings.struct.VapiStruct

+

An NSService element that represents an IP protocol

+
+

Tip

+

The arguments are used to initialize data attributes with the same +names.

+
+
+ +
+
+class com.vmware.nsx_policy.model_client.IPProtocolServiceEntry(protocol_number=None, links=None, schema=None, self_=None, revision=None, create_time=None, create_user=None, last_modified_time=None, last_modified_user=None, protection=None, system_owned=None, description=None, display_name=None, id=None, resource_type='IPProtocolServiceEntry', tags=None, parent_path=None, path=None, relative_path=None, children=None, marked_for_delete=None)
+

Bases: vmware.vapi.bindings.struct.VapiStruct

+

A ServiceEntry that represents an IP protocol

+
+

Tip

+

The arguments are used to initialize data attributes with the same +names.

+
+
+ +
+
+class com.vmware.nsx_policy.model_client.IPSecVPNDPDProfile(links=None, schema=None, self_=None, revision=None, create_time=None, create_user=None, last_modified_time=None, last_modified_user=None, protection=None, system_owned=None, description=None, display_name=None, id=None, resource_type=None, tags=None, dpd_probe_interval=None, enabled=None)
+

Bases: vmware.vapi.bindings.struct.VapiStruct

+

Dead peer detection (DPD) is a method that allows detection of unreachable +internet key excahnge (IKE) peers. Any changes affects all IPSec VPN +sessions consuming this profile.

+
+

Tip

+

The arguments are used to initialize data attributes with the same +names.

+
+
+ +
+
+class com.vmware.nsx_policy.model_client.IPSecVPNDPDProfileListResult(links=None, schema=None, self_=None, cursor=None, result_count=None, sort_ascending=None, sort_by=None, results=None)
+

Bases: vmware.vapi.bindings.struct.VapiStruct

+

List all the dead peer detection (DPD) profiles.

+
+

Tip

+

The arguments are used to initialize data attributes with the same +names.

+
+
+ +
+
+class com.vmware.nsx_policy.model_client.IPSecVPNIKEProfile(links=None, schema=None, self_=None, revision=None, create_time=None, create_user=None, last_modified_time=None, last_modified_user=None, protection=None, system_owned=None, description=None, display_name=None, id=None, resource_type=None, tags=None, dh_groups=None, digest_algorithms=None, encryption_algorithms=None, ike_version=None, sa_life_time=None)
+

Bases: vmware.vapi.bindings.struct.VapiStruct

+

IKE Profile is a reusable profile that captures IKE phase one negotiation +parameters. Any changes affects all IPSec VPN sessions consuming this +profile.

+
+

Tip

+

The arguments are used to initialize data attributes with the same +names.

+
+
+
+DH_GROUPS_GROUP14 = 'GROUP14'
+
+ +
+
+DH_GROUPS_GROUP15 = 'GROUP15'
+
+ +
+
+DH_GROUPS_GROUP16 = 'GROUP16'
+
+ +
+
+DIGEST_ALGORITHMS_SHA1 = 'SHA1'
+
+ +
+
+DIGEST_ALGORITHMS_SHA2_256 = 'SHA2_256'
+
+ +
+
+ENCRYPTION_ALGORITHMS_128 = 'AES_128'
+
+ +
+
+ENCRYPTION_ALGORITHMS_256 = 'AES_256'
+
+ +
+
+ENCRYPTION_ALGORITHMS_GCM_128 = 'AES_GCM_128'
+
+ +
+
+ENCRYPTION_ALGORITHMS_GCM_192 = 'AES_GCM_192'
+
+ +
+
+ENCRYPTION_ALGORITHMS_GCM_256 = 'AES_GCM_256'
+
+ +
+
+IKE_VERSION_FLEX = 'IKE_FLEX'
+
+ +
+
+IKE_VERSION_V1 = 'IKE_V1'
+
+ +
+
+IKE_VERSION_V2 = 'IKE_V2'
+
+ +
+ +
+
+class com.vmware.nsx_policy.model_client.IPSecVPNIKEProfileListResult(links=None, schema=None, self_=None, cursor=None, result_count=None, sort_ascending=None, sort_by=None, results=None)
+

Bases: vmware.vapi.bindings.struct.VapiStruct

+

List all the IKE profiles.

+
+

Tip

+

The arguments are used to initialize data attributes with the same +names.

+
+
+ +
+
+class com.vmware.nsx_policy.model_client.IPSecVPNLocalEndpoint(links=None, schema=None, self_=None, revision=None, create_time=None, create_user=None, last_modified_time=None, last_modified_user=None, protection=None, system_owned=None, description=None, display_name=None, id=None, resource_type=None, tags=None, certificate_id=None, ipsec_vpn_service_id=None, local_address=None, local_id=None, trust_ca_ids=None, trust_crl_ids=None)
+

Bases: vmware.vapi.bindings.struct.VapiStruct

+

Local endpoint represents a logical router on which tunnel needs to be +terminated.

+
+

Tip

+

The arguments are used to initialize data attributes with the same +names.

+
+
+ +
+
+class com.vmware.nsx_policy.model_client.IPSecVPNLocalEndpointListResult(links=None, schema=None, self_=None, cursor=None, result_count=None, sort_ascending=None, sort_by=None, results=None)
+

Bases: vmware.vapi.bindings.struct.VapiStruct

+

List all the local endpoints.

+
+

Tip

+

The arguments are used to initialize data attributes with the same +names.

+
+
+ +
+
+class com.vmware.nsx_policy.model_client.IPSecVPNPeerEndpoint(links=None, schema=None, self_=None, revision=None, create_time=None, create_user=None, last_modified_time=None, last_modified_user=None, protection=None, system_owned=None, description=None, display_name=None, id=None, resource_type=None, tags=None, authentication_mode=None, connection_initiation_mode=None, dpd_profile_id=None, ike_profile_id=None, ipsec_tunnel_profile_id=None, peer_address=None, peer_id=None, psk=None)
+

Bases: vmware.vapi.bindings.struct.VapiStruct

+

IPSec VPN Peer Endpoint covers configuration to be applied locally to +establish a session with remote endpoint on peer site.

+
+

Tip

+

The arguments are used to initialize data attributes with the same +names.

+
+
+
+AUTHENTICATION_MODE_PSK = 'PSK'
+
+ +
+
+CONNECTION_INITIATION_MODE_INITIATOR = 'INITIATOR'
+
+ +
+
+CONNECTION_INITIATION_MODE_ON_DEMAND = 'ON_DEMAND'
+
+ +
+
+CONNECTION_INITIATION_MODE_RESPOND_ONLY = 'RESPOND_ONLY'
+
+ +
+ +
+
+class com.vmware.nsx_policy.model_client.IPSecVPNPeerEndpointListResult(links=None, schema=None, self_=None, cursor=None, result_count=None, sort_ascending=None, sort_by=None, results=None)
+

Bases: vmware.vapi.bindings.struct.VapiStruct

+

List all the peer endpoints.

+
+

Tip

+

The arguments are used to initialize data attributes with the same +names.

+
+
+ +
+
+class com.vmware.nsx_policy.model_client.IPSecVPNPolicyRule(links=None, schema=None, self_=None, revision=None, owner=None, description=None, display_name=None, id=None, resource_type=None, action=None, destinations=None, enabled=None, logged=None, sources=None)
+

Bases: vmware.vapi.bindings.struct.VapiStruct

+

For policy-based IPsec VPNs, a security policy specifies as its action the +VPN tunnel to be used for transit traffic that meets the policys match +criteria.

+
+

Tip

+

The arguments are used to initialize data attributes with the same +names.

+
+
+
+ACTION_BYPASS = 'BYPASS'
+
+ +
+
+ACTION_PROTECT = 'PROTECT'
+
+ +
+ +
+
+class com.vmware.nsx_policy.model_client.IPSecVPNPolicySubnet(subnet=None)
+

Bases: vmware.vapi.bindings.struct.VapiStruct

+

Used to specify the local/peer subnets in IPSec VPN Policy rule.

+
+

Tip

+

The arguments are used to initialize data attributes with the same +names.

+
+
+ +
+
+class com.vmware.nsx_policy.model_client.IPSecVPNService(links=None, schema=None, self_=None, revision=None, create_time=None, create_user=None, last_modified_time=None, last_modified_user=None, protection=None, system_owned=None, description=None, display_name=None, id=None, resource_type=None, tags=None, bypass_rules=None, enabled=None, ike_log_level=None, logical_router_id=None)
+

Bases: vmware.vapi.bindings.struct.VapiStruct

+

Create and manage IPSec VPN service for given logical router.

+
+

Tip

+

The arguments are used to initialize data attributes with the same +names.

+
+
+
+IKE_LOG_LEVEL_DEBUG = 'DEBUG'
+
+ +
+
+IKE_LOG_LEVEL_EMERGENCY = 'EMERGENCY'
+
+ +
+
+IKE_LOG_LEVEL_ERROR = 'ERROR'
+
+ +
+
+IKE_LOG_LEVEL_INFO = 'INFO'
+
+ +
+
+IKE_LOG_LEVEL_WARN = 'WARN'
+
+ +
+ +
+
+class com.vmware.nsx_policy.model_client.IPSecVPNServiceListResult(links=None, schema=None, self_=None, cursor=None, result_count=None, sort_ascending=None, sort_by=None, results=None)
+

Bases: vmware.vapi.bindings.struct.VapiStruct

+

List all the IPSec VPN services.

+
+

Tip

+

The arguments are used to initialize data attributes with the same +names.

+
+
+ +
+
+class com.vmware.nsx_policy.model_client.IPSecVPNSession(links=None, schema=None, self_=None, revision=None, create_time=None, create_user=None, last_modified_time=None, last_modified_user=None, protection=None, system_owned=None, description=None, display_name=None, id=None, resource_type='IPSecVPNSession', tags=None, enabled=None, ipsec_vpn_service_id=None, local_endpoint_id=None, peer_endpoint_id=None)
+

Bases: vmware.vapi.bindings.struct.VapiStruct

+

VPN session defines connection between local and peer endpoint. Untill VPN +session is defined configuration is not realized.

+
+

Tip

+

The arguments are used to initialize data attributes with the same +names.

+
+
+
+RESOURCE_TYPE_POLICYBASEDIPSECVPNSESSION = 'PolicyBasedIPSecVPNSession'
+
+ +
+
+RESOURCE_TYPE_ROUTEBASEDIPSECVPNSESSION = 'RouteBasedIPSecVPNSession'
+
+ +
+ +
+
+class com.vmware.nsx_policy.model_client.IPSecVPNSessionListResult(links=None, schema=None, self_=None, cursor=None, result_count=None, sort_ascending=None, sort_by=None, results=None)
+

Bases: vmware.vapi.bindings.struct.VapiStruct

+

List all the IPSec VPN sessions.

+
+

Tip

+

The arguments are used to initialize data attributes with the same +names.

+
+
+ +
+
+class com.vmware.nsx_policy.model_client.IPSecVPNTunnelProfile(links=None, schema=None, self_=None, revision=None, create_time=None, create_user=None, last_modified_time=None, last_modified_user=None, protection=None, system_owned=None, description=None, display_name=None, id=None, resource_type=None, tags=None, df_policy=None, dh_groups=None, digest_algorithms=None, enable_perfect_forward_secrecy=None, encapsulation_mode=None, encryption_algorithms=None, sa_life_time=None, transform_protocol=None)
+

Bases: vmware.vapi.bindings.struct.VapiStruct

+

IPSec VPN tunnel profile is a reusable profile that captures phase two +negotiation parameters and tunnel properties. Any changes affects all IPSec +VPN sessions consuming this profile.

+
+

Tip

+

The arguments are used to initialize data attributes with the same +names.

+
+
+
+DF_POLICY_CLEAR = 'CLEAR'
+
+ +
+
+DF_POLICY_COPY = 'COPY'
+
+ +
+
+DH_GROUPS_GROUP14 = 'GROUP14'
+
+ +
+
+DH_GROUPS_GROUP15 = 'GROUP15'
+
+ +
+
+DH_GROUPS_GROUP16 = 'GROUP16'
+
+ +
+
+DIGEST_ALGORITHMS_SHA1 = 'SHA1'
+
+ +
+
+DIGEST_ALGORITHMS_SHA2_256 = 'SHA2_256'
+
+ +
+
+ENCAPSULATION_MODE_MODE = 'TUNNEL_MODE'
+
+ +
+
+ENCRYPTION_ALGORITHMS_128 = 'AES_128'
+
+ +
+
+ENCRYPTION_ALGORITHMS_256 = 'AES_256'
+
+ +
+
+ENCRYPTION_ALGORITHMS_GCM_128 = 'AES_GCM_128'
+
+ +
+
+ENCRYPTION_ALGORITHMS_GCM_192 = 'AES_GCM_192'
+
+ +
+
+ENCRYPTION_ALGORITHMS_GCM_256 = 'AES_GCM_256'
+
+ +
+
+TRANSFORM_PROTOCOL_ESP = 'ESP'
+
+ +
+ +
+
+class com.vmware.nsx_policy.model_client.IPSecVPNTunnelProfileListResult(links=None, schema=None, self_=None, cursor=None, result_count=None, sort_ascending=None, sort_by=None, results=None)
+

Bases: vmware.vapi.bindings.struct.VapiStruct

+

List all the tunnel profiles.

+
+

Tip

+

The arguments are used to initialize data attributes with the same +names.

+
+
+ +
+
+class com.vmware.nsx_policy.model_client.IPSecVpnIkeSessionStatus(fail_reason=None, ike_session_state=None)
+

Bases: vmware.vapi.bindings.struct.VapiStruct

+

Status for IPSec Vpn Ike session UP, DOWN, NEGOTIATING and fail reason if +Ike session is down.

+
+

Tip

+

The arguments are used to initialize data attributes with the same +names.

+
+
+
+IKE_SESSION_STATE_DOWN = 'DOWN'
+
+ +
+
+IKE_SESSION_STATE_NEGOTIATING = 'NEGOTIATING'
+
+ +
+
+IKE_SESSION_STATE_UP = 'UP'
+
+ +
+ +
+
+class com.vmware.nsx_policy.model_client.IPSecVpnIkeTrafficStatistics(bytes_in=None, bytes_out=None, fail_count=None, packets_in=None, packets_out=None)
+

Bases: vmware.vapi.bindings.struct.VapiStruct

+

Traffic statistics for IPSec Vpn Ike session.

+
+

Tip

+

The arguments are used to initialize data attributes with the same +names.

+
+
+ +
+
+class com.vmware.nsx_policy.model_client.IPSecVpnPolicyTrafficStatistics(aggregate_traffic_counters=None, rule_path=None, tunnel_statistics=None)
+

Bases: vmware.vapi.bindings.struct.VapiStruct

+

IPSec Vpn policy traffic statistics

+
+

Tip

+

The arguments are used to initialize data attributes with the same +names.

+
+
+ +
+
+class com.vmware.nsx_policy.model_client.IPSecVpnSessionStatistics(aggregate_traffic_counters=None, ike_status=None, ike_traffic_statistics=None, last_update_timestamp=None, policy_statistics=None, enforcement_point_path=None, resource_type='IPSecVpnSessionStatistics')
+

Bases: vmware.vapi.bindings.struct.VapiStruct

+

IPSec Vpn session statistics represents statistics on an NSX-T type of +enforcement point. It gives aggregated statistics of all policies for all +the tunnels.

+
+

Tip

+

The arguments are used to initialize data attributes with the same +names.

+
+
+ +
+
+class com.vmware.nsx_policy.model_client.IPSecVpnTrafficCounters(bytes_in=None, bytes_out=None, dropped_packets_in=None, dropped_packets_out=None, packets_in=None, packets_out=None)
+

Bases: vmware.vapi.bindings.struct.VapiStruct

+

Traffic counters for IPSec Vpn session.

+
+

Tip

+

The arguments are used to initialize data attributes with the same +names.

+
+
+ +
+
+class com.vmware.nsx_policy.model_client.IPSecVpnTunnelTrafficStatistics(bytes_in=None, bytes_out=None, decryption_failures=None, dropped_packets_in=None, dropped_packets_out=None, encryption_failures=None, integrity_failures=None, local_subnet=None, nomatching_policy_errors=None, packets_in=None, packets_out=None, packets_received_other_error=None, packets_sent_other_error=None, remote_subnet=None, replay_errors=None, sa_mismatch_errors_in=None, sa_mismatch_errors_out=None, seq_number_overflow_error=None, tunnel_down_reason=None, tunnel_status=None)
+

Bases: vmware.vapi.bindings.struct.VapiStruct

+

IPSec Vpn tunnel traffic statistics.

+
+

Tip

+

The arguments are used to initialize data attributes with the same +names.

+
+
+
+TUNNEL_STATUS_DOWN = 'DOWN'
+
+ +
+
+TUNNEL_STATUS_UP = 'UP'
+
+ +
+ +
+
+class com.vmware.nsx_policy.model_client.IPSet(links=None, schema=None, self_=None, revision=None, create_time=None, create_user=None, last_modified_time=None, last_modified_user=None, protection=None, system_owned=None, description=None, display_name=None, id=None, resource_type=None, tags=None, ip_addresses=None)
+

Bases: vmware.vapi.bindings.struct.VapiStruct

+

IPSet is used to group individual IP addresses, range of IP addresses or +subnets. An IPSet is a homogeneous group of IP addresses, either of type +IPv4 or of type IPv6. IPSets can be used as source or destination in +firewall rules. These can also be used as members of NSGroups.

+
+

Tip

+

The arguments are used to initialize data attributes with the same +names.

+
+
+ +
+
+class com.vmware.nsx_policy.model_client.IPSetDeleteRequestParameters(force=None)
+

Bases: vmware.vapi.bindings.struct.VapiStruct

+

IPSet delete request parameters

+
+

Tip

+

The arguments are used to initialize data attributes with the same +names.

+
+
+ +
+
+class com.vmware.nsx_policy.model_client.IPSetListResult(links=None, schema=None, self_=None, cursor=None, result_count=None, sort_ascending=None, sort_by=None, results=None)
+

Bases: vmware.vapi.bindings.struct.VapiStruct

+

Paged collection of IPSets

+
+

Tip

+

The arguments are used to initialize data attributes with the same +names.

+
+
+ +
+
+class com.vmware.nsx_policy.model_client.IPSubnet(ip_addresses=None, prefix_length=None)
+

Bases: vmware.vapi.bindings.struct.VapiStruct

+
+

Tip

+

The arguments are used to initialize data attributes with the same +names.

+
+
+ +
+
+class com.vmware.nsx_policy.model_client.IPv4DhcpServer(dhcp_server_ip=None, dns_nameservers=None, domain_name=None, gateway_ip=None, options=None)
+

Bases: vmware.vapi.bindings.struct.VapiStruct

+
+

Tip

+

The arguments are used to initialize data attributes with the same +names.

+
+
+ +
+
+class com.vmware.nsx_policy.model_client.IcmpPolicyLbMonitorProfile(links=None, schema=None, self_=None, revision=None, create_time=None, create_user=None, last_modified_time=None, last_modified_user=None, protection=None, system_owned=None, description=None, display_name=None, id=None, resource_type='IcmpPolicyLbMonitorProfile', tags=None, parent_path=None, path=None, relative_path=None, children=None, marked_for_delete=None, fall_count=None, interval=None, monitor_port=None, rise_count=None, timeout=None)
+

Bases: vmware.vapi.bindings.struct.VapiStruct

+

Active healthchecks are disabled by default and can be enabled for a server +pool by binding a health monitor to the Group through the PolicyLbRule +object. This represents active health monitoring over ICMP. Active +healthchecks are initiated periodically, at a configurable interval, to +each member of the Group. Only if a healthcheck fails consecutively for a +specified number of times (fall_count) to a member will the member status +be marked DOWN. Once a member is DOWN, a specified number of consecutive +successful healt hchecks (rise_count) will bring the member back to UP +state. After a healthcheck is initiated, if it does not complete within a +certain period, then also the healthcheck is considered to be unsuccessful. +Completing a healthcheck within timeout means establishing a connection +(TCP or SSL), if applicable, sending the request and receiving the +response, all within the configured timeout.

+
+

Tip

+

The arguments are used to initialize data attributes with the same +names.

+
+
+ +
+
+class com.vmware.nsx_policy.model_client.Icon(placement=None, tooltip=None, type=None)
+

Bases: vmware.vapi.bindings.struct.VapiStruct

+

Icon to be applied at dashboard for widgets and UI elements.

+
+

Tip

+

The arguments are used to initialize data attributes with the same +names.

+
+
+
+PLACEMENT_POST = 'POST'
+
+ +
+
+PLACEMENT_PRE = 'PRE'
+
+ +
+
+TYPE_DETAIL = 'DETAIL'
+
+ +
+
+TYPE_ERROR = 'ERROR'
+
+ +
+
+TYPE_INFO = 'INFO'
+
+ +
+
+TYPE_INPROGRESS = 'INPROGRESS'
+
+ +
+
+TYPE_NOT_AVAILABLE = 'NOT_AVAILABLE'
+
+ +
+
+TYPE_SUCCESS = 'SUCCESS'
+
+ +
+
+TYPE_WARNING = 'WARNING'
+
+ +
+ +
+
+class com.vmware.nsx_policy.model_client.IncludedFieldsParameters(included_fields=None)
+

Bases: vmware.vapi.bindings.struct.VapiStruct

+

A list of fields to include in query results

+
+

Tip

+

The arguments are used to initialize data attributes with the same +names.

+
+
+ +
+
+class com.vmware.nsx_policy.model_client.Infra(links=None, schema=None, self_=None, revision=None, create_time=None, create_user=None, last_modified_time=None, last_modified_user=None, protection=None, system_owned=None, description=None, display_name=None, id=None, resource_type=None, tags=None, parent_path=None, path=None, relative_path=None, children=None, marked_for_delete=None, connectivity_strategy=None, domains=None)
+

Bases: vmware.vapi.bindings.struct.VapiStruct

+

Infra space related policy

+
+

Tip

+

The arguments are used to initialize data attributes with the same +names.

+
+
+
+CONNECTIVITY_STRATEGY_BLACKLIST = 'BLACKLIST'
+
+ +
+
+CONNECTIVITY_STRATEGY_NONE = 'NONE'
+
+ +
+
+CONNECTIVITY_STRATEGY_WHITELIST = 'WHITELIST'
+
+ +
+ +
+
+class com.vmware.nsx_policy.model_client.IngressBroadcastRateShaper(enabled=None, resource_type=None, average_bandwidth_kbps=None, burst_size_bytes=None, peak_bandwidth_kbps=None)
+

Bases: vmware.vapi.bindings.struct.VapiStruct

+

A shaper that specifies ingress rate properties in kb/s

+
+

Tip

+

The arguments are used to initialize data attributes with the same +names.

+
+
+
+RESOURCE_TYPE_EGRESSRATESHAPER = 'EgressRateShaper'
+
+ +
+
+RESOURCE_TYPE_INGRESSBROADCASTRATESHAPER = 'IngressBroadcastRateShaper'
+
+ +
+
+RESOURCE_TYPE_INGRESSRATESHAPER = 'IngressRateShaper'
+
+ +
+ +
+
+class com.vmware.nsx_policy.model_client.IngressRateShaper(enabled=None, resource_type=None, average_bandwidth_mbps=None, burst_size_bytes=None, peak_bandwidth_mbps=None)
+

Bases: vmware.vapi.bindings.struct.VapiStruct

+

A shaper that specifies ingress rate properties in Mb/s

+
+

Tip

+

The arguments are used to initialize data attributes with the same +names.

+
+
+
+RESOURCE_TYPE_EGRESSRATESHAPER = 'EgressRateShaper'
+
+ +
+
+RESOURCE_TYPE_INGRESSBROADCASTRATESHAPER = 'IngressBroadcastRateShaper'
+
+ +
+
+RESOURCE_TYPE_INGRESSRATESHAPER = 'IngressRateShaper'
+
+ +
+ +
+
+class com.vmware.nsx_policy.model_client.InitiateClusterRestoreRequest(node_id=None, timestamp=None)
+

Bases: vmware.vapi.bindings.struct.VapiStruct

+
+

Tip

+

The arguments are used to initialize data attributes with the same +names.

+
+
+ +
+
+class com.vmware.nsx_policy.model_client.InstanceDeploymentConfig(compute_id=None, context_id=None, storage_id=None, vm_nic_infos=None)
+

Bases: vmware.vapi.bindings.struct.VapiStruct

+

The Instance Deployment Config contains settings that is applied during +install time.

+
+

Tip

+

The arguments are used to initialize data attributes with the same +names.

+
+
+ +
+
+class com.vmware.nsx_policy.model_client.InstanceEndpoint(links=None, schema=None, self_=None, revision=None, create_time=None, create_user=None, last_modified_time=None, last_modified_user=None, protection=None, system_owned=None, description=None, display_name=None, id=None, resource_type=None, tags=None, endpoint_type=None, service_attachment_id=None, target_ips=None)
+

Bases: vmware.vapi.bindings.struct.VapiStruct

+

An InstanceEndpoint belongs to one ServiceInstance and is attached to one +ServiceAttachment. An InstanceEndpoint represents a redirection target for +a Rule. For Example - It can be an L3 Destination.

+
+

Tip

+

The arguments are used to initialize data attributes with the same +names.

+
+
+
+ENDPOINT_TYPE_LOGICAL = 'LOGICAL'
+
+ +
+
+ENDPOINT_TYPE_VIRTUAL = 'VIRTUAL'
+
+ +
+ +
+
+class com.vmware.nsx_policy.model_client.InstanceEndpointListResult(links=None, schema=None, self_=None, cursor=None, result_count=None, sort_ascending=None, sort_by=None, results=None)
+

Bases: vmware.vapi.bindings.struct.VapiStruct

+

List of instance endpoints.

+
+

Tip

+

The arguments are used to initialize data attributes with the same +names.

+
+
+ +
+
+class com.vmware.nsx_policy.model_client.InstanceRuntime(links=None, schema=None, self_=None, revision=None, create_time=None, create_user=None, last_modified_time=None, last_modified_user=None, protection=None, system_owned=None, description=None, display_name=None, id=None, resource_type=None, tags=None, deployment_status=None, error_message=None, runtime_status=None, service_instance_id=None, service_vm_id=None, vm_nic_info=None)
+

Bases: vmware.vapi.bindings.struct.VapiStruct

+

A Service Runtime is the runtime entity associated with ever Service-VM +deployed.

+
+

Tip

+

The arguments are used to initialize data attributes with the same +names.

+
+
+
+DEPLOYMENT_STATUS_DEPLOYMENT_FAILED = 'DEPLOYMENT_FAILED'
+
+ +
+
+DEPLOYMENT_STATUS_DEPLOYMENT_IN_PROGRESS = 'DEPLOYMENT_IN_PROGRESS'
+
+ +
+
+DEPLOYMENT_STATUS_DEPLOYMENT_SUCCESSFUL = 'DEPLOYMENT_SUCCESSFUL'
+
+ +
+
+DEPLOYMENT_STATUS_UNDEPLOYMENT_FAILED = 'UNDEPLOYMENT_FAILED'
+
+ +
+
+DEPLOYMENT_STATUS_UNDEPLOYMENT_IN_PROGRESS = 'UNDEPLOYMENT_IN_PROGRESS'
+
+ +
+
+DEPLOYMENT_STATUS_UNDEPLOYMENT_SUCCESSFUL = 'UNDEPLOYMENT_SUCCESSFUL'
+
+ +
+
+DEPLOYMENT_STATUS_UNKNOWN = 'UNKNOWN'
+
+ +
+
+DEPLOYMENT_STATUS_UPGRADE_FAILED = 'UPGRADE_FAILED'
+
+ +
+
+DEPLOYMENT_STATUS_UPGRADE_IN_PROGRESS = 'UPGRADE_IN_PROGRESS'
+
+ +
+
+RUNTIME_STATUS_IN_SERVICE = 'IN_SERVICE'
+
+ +
+
+RUNTIME_STATUS_NEEDS_ATTENTION = 'NEEDS_ATTENTION'
+
+ +
+
+RUNTIME_STATUS_OUT_OF_SERVICE = 'OUT_OF_SERVICE'
+
+ +
+ +
+
+class com.vmware.nsx_policy.model_client.InstanceRuntimeListResult(links=None, schema=None, self_=None, cursor=None, result_count=None, sort_ascending=None, sort_by=None, results=None)
+

Bases: vmware.vapi.bindings.struct.VapiStruct

+

Result of List of InstanceRuntimes

+
+

Tip

+

The arguments are used to initialize data attributes with the same +names.

+
+
+ +
+
+class com.vmware.nsx_policy.model_client.InstructionInfo(actions=None, fields=None, id=None, name=None)
+

Bases: vmware.vapi.bindings.struct.VapiStruct

+

Details of the instructions displayed during restore process

+
+

Tip

+

The arguments are used to initialize data attributes with the same +names.

+
+
+ +
+
+class com.vmware.nsx_policy.model_client.InterfaceNeighborProperties(links=None, schema=None, self_=None, revision=None, create_time=None, create_user=None, last_modified_time=None, last_modified_user=None, protection=None, system_owned=None, description=None, display_name=None, id=None, resource_type=None, tags=None, ifindex=None, mac=None, name=None, neighbors=None)
+

Bases: vmware.vapi.bindings.struct.VapiStruct

+

Interface neighbor properties

+
+

Tip

+

The arguments are used to initialize data attributes with the same +names.

+
+
+ +
+
+class com.vmware.nsx_policy.model_client.InterfaceNeighborPropertyListResult(links=None, schema=None, self_=None, cursor=None, result_count=None, sort_ascending=None, sort_by=None, results=None)
+

Bases: vmware.vapi.bindings.struct.VapiStruct

+

Interface neighbor property query results

+
+

Tip

+

The arguments are used to initialize data attributes with the same +names.

+
+
+ +
+
+class com.vmware.nsx_policy.model_client.InterfaceStatistics(links=None, schema=None, self_=None, rx_bytes=None, rx_errors=None, rx_packets=None, tx_bytes=None, tx_errors=None, tx_packets=None)
+

Bases: vmware.vapi.bindings.struct.VapiStruct

+

Statistics for a network interface

+
+

Tip

+

The arguments are used to initialize data attributes with the same +names.

+
+
+ +
+
+class com.vmware.nsx_policy.model_client.InterfaceSubnet(ip_addresses=None, prefix_len=None)
+

Bases: vmware.vapi.bindings.struct.VapiStruct

+

Subnet specification for interface connectivity

+
+

Tip

+

The arguments are used to initialize data attributes with the same +names.

+
+
+ +
+
+class com.vmware.nsx_policy.model_client.IntervalBackupSchedule(seconds_between_backups=None, resource_type='IntervalBackupSchedule')
+

Bases: vmware.vapi.bindings.struct.VapiStruct

+

Schedule to specify the interval time at which automated backups need to be +taken

+
+

Tip

+

The arguments are used to initialize data attributes with the same +names.

+
+
+ +
+
+class com.vmware.nsx_policy.model_client.IpAddressInfo(ip_addresses=None, source=None)
+

Bases: vmware.vapi.bindings.struct.VapiStruct

+

Ipaddress information of the fabric node.

+
+

Tip

+

The arguments are used to initialize data attributes with the same +names.

+
+
+
+SOURCE_TOOLS = 'VM_TOOLS'
+
+ +
+ +
+
+class com.vmware.nsx_policy.model_client.IpAllocationBase(links=None, schema=None, self_=None, revision=None, create_time=None, create_user=None, last_modified_time=None, last_modified_user=None, protection=None, system_owned=None, description=None, display_name=None, id=None, resource_type=None, tags=None, gateway_ip=None, lease_time=None, options=None)
+

Bases: vmware.vapi.bindings.struct.VapiStruct

+
+

Tip

+

The arguments are used to initialize data attributes with the same +names.

+
+
+ +
+
+class com.vmware.nsx_policy.model_client.IpAssignmentSpec(resource_type='IpAssignmentSpec')
+

Bases: vmware.vapi.bindings.struct.VapiStruct

+

Abstract base type for specification of IPs to be used with host switch +virtual tunnel endpoints

+
+

Tip

+

The arguments are used to initialize data attributes with the same +names.

+
+
+
+RESOURCE_TYPE_ASSIGNEDBYDHCP = 'AssignedByDhcp'
+
+ +
+
+RESOURCE_TYPE_STATICIPLISTSPEC = 'StaticIpListSpec'
+
+ +
+
+RESOURCE_TYPE_STATICIPMACLISTSPEC = 'StaticIpMacListSpec'
+
+ +
+
+RESOURCE_TYPE_STATICIPPOOLSPEC = 'StaticIpPoolSpec'
+
+ +
+ +
+
+class com.vmware.nsx_policy.model_client.IpBlock(links=None, schema=None, self_=None, revision=None, create_time=None, create_user=None, last_modified_time=None, last_modified_user=None, protection=None, system_owned=None, description=None, display_name=None, id=None, resource_type=None, tags=None, cidr=None)
+

Bases: vmware.vapi.bindings.struct.VapiStruct

+

A block of IPv4 addresses defined by a start address and a mask/prefix +(network CIDR). An IP block is typically large & allocated to a tenant for +automated consumption. An IP block is always a contiguous address space, +for example 192.0.0.1/8. An IP block can be further subdivided into subnets +called IP block subnets. These IP block subnets can later be added to IP +pools and used for IP allocation. An IP pool is typically a collection of +subnets that are often not a contiguous address space. Clients are +allocated IP addresses only from IP pools. Sample Structure Diagram +IpBlock_VMware 192.0.0.1/8 +======================================================================= / +___________________________________________/________ / +IpBlockSubnet_Finance ( IpBlockSubnet_Eng1 IpBlockSubnet_Eng2 / ) / +192.168.0.1/16 ( 192.170.1.1/16 192.180.1.1/24 / ) IpPool_Eng / +(___________________________________________/________) / / +=======================================================================

+
+

Tip

+

The arguments are used to initialize data attributes with the same +names.

+
+
+ +
+
+class com.vmware.nsx_policy.model_client.IpBlockListResult(links=None, schema=None, self_=None, cursor=None, result_count=None, sort_ascending=None, sort_by=None, results=None)
+

Bases: vmware.vapi.bindings.struct.VapiStruct

+
+

Tip

+

The arguments are used to initialize data attributes with the same +names.

+
+
+ +
+
+class com.vmware.nsx_policy.model_client.IpBlockSubnet(links=None, schema=None, self_=None, revision=None, create_time=None, create_user=None, last_modified_time=None, last_modified_user=None, protection=None, system_owned=None, description=None, display_name=None, id=None, resource_type=None, tags=None, allocation_ranges=None, block_id=None, cidr=None, size=None)
+

Bases: vmware.vapi.bindings.struct.VapiStruct

+

A set of IPv4 addresses defined by a start address and a mask/prefix which +will typically be associated with a layer-2 broadcast domain.

+
+

Tip

+

The arguments are used to initialize data attributes with the same +names.

+
+
+ +
+
+class com.vmware.nsx_policy.model_client.IpBlockSubnetListResult(links=None, schema=None, self_=None, cursor=None, result_count=None, sort_ascending=None, sort_by=None, results=None)
+

Bases: vmware.vapi.bindings.struct.VapiStruct

+
+

Tip

+

The arguments are used to initialize data attributes with the same +names.

+
+
+ +
+
+class com.vmware.nsx_policy.model_client.IpDiscoverySwitchingProfile(arp_bindings_limit=None, arp_snooping_enabled=None, dhcp_snooping_enabled=None, vm_tools_enabled=None, links=None, schema=None, self_=None, revision=None, create_time=None, create_user=None, last_modified_time=None, last_modified_user=None, protection=None, system_owned=None, description=None, display_name=None, id=None, resource_type='IpDiscoverySwitchingProfile', tags=None, required_capabilities=None)
+

Bases: vmware.vapi.bindings.struct.VapiStruct

+
+

Tip

+

The arguments are used to initialize data attributes with the same +names.

+
+
+ +
+
+class com.vmware.nsx_policy.model_client.IpMacPair(ip=None, mac=None)
+

Bases: vmware.vapi.bindings.struct.VapiStruct

+

IP and MAC pair.

+
+

Tip

+

The arguments are used to initialize data attributes with the same +names.

+
+
+ +
+
+class com.vmware.nsx_policy.model_client.IpPool(links=None, schema=None, self_=None, revision=None, create_time=None, create_user=None, last_modified_time=None, last_modified_user=None, protection=None, system_owned=None, description=None, display_name=None, id=None, resource_type=None, tags=None, pool_usage=None, subnets=None)
+

Bases: vmware.vapi.bindings.struct.VapiStruct

+

A collection of one or more IPv4 or IPv6 subnets or ranges that are often +not a contiguous address space. Clients are allocated IPs from an IP pool. +Often used when a client that consumes addresses exhausts an initial subnet +or range and needs to be expanded but the adjoining address space is not +available as it has been allocated to a different client.

+
+

Tip

+

The arguments are used to initialize data attributes with the same +names.

+
+
+ +
+
+class com.vmware.nsx_policy.model_client.IpPoolDeleteRequestParameters(force=None)
+

Bases: vmware.vapi.bindings.struct.VapiStruct

+

IpPool delete request parameters

+
+

Tip

+

The arguments are used to initialize data attributes with the same +names.

+
+
+ +
+
+class com.vmware.nsx_policy.model_client.IpPoolListResult(links=None, schema=None, self_=None, cursor=None, result_count=None, sort_ascending=None, sort_by=None, results=None)
+

Bases: vmware.vapi.bindings.struct.VapiStruct

+
+

Tip

+

The arguments are used to initialize data attributes with the same +names.

+
+
+ +
+
+class com.vmware.nsx_policy.model_client.IpPoolRange(links=None, schema=None, self_=None, end=None, start=None)
+

Bases: vmware.vapi.bindings.struct.VapiStruct

+

A set of IPv4 or IPv6 addresses defined by a start and end address.

+
+

Tip

+

The arguments are used to initialize data attributes with the same +names.

+
+
+ +
+
+class com.vmware.nsx_policy.model_client.IpPoolSubnet(links=None, schema=None, self_=None, allocation_ranges=None, cidr=None, dns_nameservers=None, dns_suffix=None, gateway_ip=None)
+

Bases: vmware.vapi.bindings.struct.VapiStruct

+

A set of IPv4 or IPv6 addresses defined by a network CIDR.

+
+

Tip

+

The arguments are used to initialize data attributes with the same +names.

+
+
+ +
+
+class com.vmware.nsx_policy.model_client.IpfixCollector(collector_ip_address=None, collector_port=None)
+

Bases: vmware.vapi.bindings.struct.VapiStruct

+
+

Tip

+

The arguments are used to initialize data attributes with the same +names.

+
+
+ +
+
+class com.vmware.nsx_policy.model_client.IpfixCollectorConfig(links=None, schema=None, self_=None, revision=None, create_time=None, create_user=None, last_modified_time=None, last_modified_user=None, protection=None, system_owned=None, description=None, display_name=None, id=None, resource_type=None, tags=None, collectors=None)
+

Bases: vmware.vapi.bindings.struct.VapiStruct

+

This managed entity contains a set of IPFIX collectors.

+
+

Tip

+

The arguments are used to initialize data attributes with the same +names.

+
+
+ +
+
+class com.vmware.nsx_policy.model_client.IpfixCollectorConfigListResult(links=None, schema=None, self_=None, cursor=None, result_count=None, sort_ascending=None, sort_by=None, results=None)
+

Bases: vmware.vapi.bindings.struct.VapiStruct

+

List of IPFIX Collector Configs

+
+

Tip

+

The arguments are used to initialize data attributes with the same +names.

+
+
+ +
+
+class com.vmware.nsx_policy.model_client.IpfixCollectorUpmProfile(links=None, schema=None, self_=None, revision=None, create_time=None, create_user=None, last_modified_time=None, last_modified_user=None, protection=None, system_owned=None, description=None, display_name=None, id=None, resource_type=None, tags=None, collectors=None)
+

Bases: vmware.vapi.bindings.struct.VapiStruct

+

The configuration for Internet protocol flow information export (IPFIX) +collector. It should be referenced in other IPFIX profile as a collecor +config. The IPFIX exporter will send records to these collectors.

+
+

Tip

+

The arguments are used to initialize data attributes with the same +names.

+
+
+
+RESOURCE_TYPE_IPFIXCOLLECTORUPMPROFILE = 'IpfixCollectorUpmProfile'
+
+ +
+ +
+
+class com.vmware.nsx_policy.model_client.IpfixCollectorUpmProfileListResult(links=None, schema=None, self_=None, cursor=None, result_count=None, sort_ascending=None, sort_by=None, results=None)
+

Bases: vmware.vapi.bindings.struct.VapiStruct

+

IPFIX collector profile list result for query with profile list parameters

+
+

Tip

+

The arguments are used to initialize data attributes with the same +names.

+
+
+ +
+
+class com.vmware.nsx_policy.model_client.IpfixConfig(links=None, schema=None, self_=None, revision=None, create_time=None, create_user=None, last_modified_time=None, last_modified_user=None, protection=None, system_owned=None, description=None, display_name=None, id=None, resource_type='IpfixConfig', tags=None, applied_tos=None)
+

Bases: vmware.vapi.bindings.struct.VapiStruct

+

IPFIX Config base representation

+
+

Tip

+

The arguments are used to initialize data attributes with the same +names.

+
+
+
+RESOURCE_TYPE_IPFIXDFWCONFIG = 'IpfixDfwConfig'
+
+ +
+
+RESOURCE_TYPE_IPFIXSWITCHCONFIG = 'IpfixSwitchConfig'
+
+ +
+ +
+
+class com.vmware.nsx_policy.model_client.IpfixConfigListResult(links=None, schema=None, self_=None, cursor=None, result_count=None, sort_ascending=None, sort_by=None, results=None)
+

Bases: vmware.vapi.bindings.struct.VapiStruct

+

List of IPFIX Config

+
+

Tip

+

The arguments are used to initialize data attributes with the same +names.

+
+
+ +
+
+class com.vmware.nsx_policy.model_client.IpfixDfwConfig(active_flow_export_timeout=None, collector=None, observation_domain_id=None, priority=None, template_parameters=None, links=None, schema=None, self_=None, revision=None, create_time=None, create_user=None, last_modified_time=None, last_modified_user=None, protection=None, system_owned=None, description=None, display_name=None, id=None, resource_type='IpfixDfwConfig', tags=None, applied_tos=None)
+

Bases: vmware.vapi.bindings.struct.VapiStruct

+

It defines IPFIX DFW Configuration.

+
+

Tip

+

The arguments are used to initialize data attributes with the same +names.

+
+
+ +
+
+class com.vmware.nsx_policy.model_client.IpfixDfwTemplateParameters(destination_address=None, destination_transport_port=None, firewall_event=None, flow_direction=None, flow_end=None, flow_start=None, icmp_code=None, octet_delta_count=None, packet_delta_count=None, protocol_identifier=None, rule_id=None, source_address=None, source_icmp_type=None, source_transport_port=None, vif_uuid=None)
+

Bases: vmware.vapi.bindings.struct.VapiStruct

+

This entity represents the flow parameters which are exported.

+
+

Tip

+

The arguments are used to initialize data attributes with the same +names.

+
+
+ +
+
+class com.vmware.nsx_policy.model_client.IpfixObsPointConfig(links=None, schema=None, self_=None, revision=None, create_time=None, create_user=None, last_modified_time=None, last_modified_user=None, protection=None, system_owned=None, description=None, display_name=None, id=None, resource_type=None, tags=None, active_timeout=None, collectors=None, enabled=None, idle_timeout=None, max_flows=None, observation_domain_id=None, packet_sample_probability=None)
+

Bases: vmware.vapi.bindings.struct.VapiStruct

+

IpfixObsPointConfig (i.e. global switch IPFIX config) is deprecated. Please +use IpfixSwitchUpmProfile & IpfixCollectorUpmProfile instead. With them, +switch IPFIX profile can be applied to specific entities, such as logical +switch, logical port and so on.

+
+

Tip

+

The arguments are used to initialize data attributes with the same +names.

+
+
+ +
+
+class com.vmware.nsx_policy.model_client.IpfixObsPointsListResult(links=None, schema=None, self_=None, cursor=None, result_count=None, sort_ascending=None, sort_by=None, results=None)
+

Bases: vmware.vapi.bindings.struct.VapiStruct

+

This is deprecated. Please use UpmProfileListResult instead.

+
+

Tip

+

The arguments are used to initialize data attributes with the same +names.

+
+
+ +
+
+class com.vmware.nsx_policy.model_client.IpfixServiceAssociationListResult(results=None, links=None, schema=None, self_=None, cursor=None, result_count=None, sort_ascending=None, sort_by=None, service_type='IpfixServiceAssociationListResult')
+

Bases: vmware.vapi.bindings.struct.VapiStruct

+
+

Tip

+

The arguments are used to initialize data attributes with the same +names.

+
+
+ +
+
+class com.vmware.nsx_policy.model_client.IpfixSwitchConfig(active_timeout=None, idle_timeout=None, max_flows=None, packet_sample_probability=None, links=None, schema=None, self_=None, revision=None, create_time=None, create_user=None, last_modified_time=None, last_modified_user=None, protection=None, system_owned=None, description=None, display_name=None, id=None, resource_type='IpfixSwitchConfig', tags=None, applied_tos=None)
+

Bases: vmware.vapi.bindings.struct.VapiStruct

+

This is deprecated. Please use IpfixSwitchUpmProfile instead which can +specify its own collectors and observation ID.

+
+

Tip

+

The arguments are used to initialize data attributes with the same +names.

+
+
+ +
+
+class com.vmware.nsx_policy.model_client.IpfixSwitchUpmProfile(active_timeout=None, applied_tos=None, collector_profile=None, idle_timeout=None, max_flows=None, observation_domain_id=None, packet_sample_probability=None, priority=None, links=None, schema=None, self_=None, revision=None, create_time=None, create_user=None, last_modified_time=None, last_modified_user=None, protection=None, system_owned=None, description=None, display_name=None, id=None, resource_type='IpfixSwitchUpmProfile', tags=None)
+

Bases: vmware.vapi.bindings.struct.VapiStruct

+

The configuration for Internet protocol flow information export (IPFIX) and +would be enabled on the switching module to collect flow information.

+
+

Tip

+

The arguments are used to initialize data attributes with the same +names.

+
+
+ +
+
+class com.vmware.nsx_policy.model_client.IpfixUpmProfile(links=None, schema=None, self_=None, revision=None, create_time=None, create_user=None, last_modified_time=None, last_modified_user=None, protection=None, system_owned=None, description=None, display_name=None, id=None, resource_type='IpfixUpmProfile', tags=None)
+

Bases: vmware.vapi.bindings.struct.VapiStruct

+

Parent profile of all IPFIX profiles.

+
+

Tip

+

The arguments are used to initialize data attributes with the same +names.

+
+
+
+RESOURCE_TYPE_IPFIXSWITCHUPMPROFILE = 'IpfixSwitchUpmProfile'
+
+ +
+ +
+
+class com.vmware.nsx_policy.model_client.IpfixUpmProfileListResult(links=None, schema=None, self_=None, cursor=None, result_count=None, sort_ascending=None, sort_by=None, results=None)
+

Bases: vmware.vapi.bindings.struct.VapiStruct

+

IPFIX profile list result for query with list parameters

+
+

Tip

+

The arguments are used to initialize data attributes with the same +names.

+
+
+ +
+
+class com.vmware.nsx_policy.model_client.KeyValue(key=None, value=None)
+

Bases: vmware.vapi.bindings.struct.VapiStruct

+
+

Tip

+

The arguments are used to initialize data attributes with the same +names.

+
+
+ +
+
+class com.vmware.nsx_policy.model_client.KeyValuePair(key=None, value=None)
+

Bases: vmware.vapi.bindings.struct.VapiStruct

+

An arbitrary key-value pair

+
+

Tip

+

The arguments are used to initialize data attributes with the same +names.

+
+
+ +
+
+class com.vmware.nsx_policy.model_client.L2Extension(l2vpn_path=None, tunnel_id=None)
+

Bases: vmware.vapi.bindings.struct.VapiStruct

+

Segment specific L2 VPN configuration

+
+

Tip

+

The arguments are used to initialize data attributes with the same +names.

+
+
+ +
+
+class com.vmware.nsx_policy.model_client.L2Vpn(links=None, schema=None, self_=None, revision=None, create_time=None, create_user=None, last_modified_time=None, last_modified_user=None, protection=None, system_owned=None, description=None, display_name=None, id=None, resource_type=None, tags=None, parent_path=None, path=None, relative_path=None, children=None, marked_for_delete=None, enabled=None, transport_tunnels=None)
+

Bases: vmware.vapi.bindings.struct.VapiStruct

+

Contains information necessary to configure L2Vpn.

+
+

Tip

+

The arguments are used to initialize data attributes with the same +names.

+
+
+ +
+
+class com.vmware.nsx_policy.model_client.L2VpnAttachmentContext(tunnel_id=None, allocate_addresses=None, resource_type='L2VpnAttachmentContext')
+

Bases: vmware.vapi.bindings.struct.VapiStruct

+
+

Tip

+

The arguments are used to initialize data attributes with the same +names.

+
+
+ +
+
+class com.vmware.nsx_policy.model_client.L2VpnContext(links=None, schema=None, self_=None, revision=None, create_time=None, create_user=None, last_modified_time=None, last_modified_user=None, protection=None, system_owned=None, description=None, display_name=None, id=None, resource_type=None, tags=None, parent_path=None, path=None, relative_path=None, children=None, marked_for_delete=None, enable_hub=None)
+

Bases: vmware.vapi.bindings.struct.VapiStruct

+

L2Vpn Context provides meta-data information about the parent Provider.

+
+

Tip

+

The arguments are used to initialize data attributes with the same +names.

+
+
+ +
+
+class com.vmware.nsx_policy.model_client.L2VpnListResult(links=None, schema=None, self_=None, cursor=None, result_count=None, sort_ascending=None, sort_by=None, results=None)
+

Bases: vmware.vapi.bindings.struct.VapiStruct

+

Paged Collection of L2Vpns

+
+

Tip

+

The arguments are used to initialize data attributes with the same +names.

+
+
+ +
+
+class com.vmware.nsx_policy.model_client.L2VpnPeerCodes(peer_codes=None, enforcement_point_path=None, resource_type='L2VpnPeerCodes')
+

Bases: vmware.vapi.bindings.struct.VapiStruct

+

Get the peer_code for each tunnel to paste on the remote end of the tunnel. +Currently only stand-along/unmanaged edge is supported on the remote end of +the tunnel.

+
+

Tip

+

The arguments are used to initialize data attributes with the same +names.

+
+
+ +
+
+class com.vmware.nsx_policy.model_client.L2VpnPeerConfigPerEnforcementPoint(enforcement_point_path=None, resource_type='L2VpnPeerConfigPerEnforcementPoint')
+

Bases: vmware.vapi.bindings.struct.VapiStruct

+

Peer config per Enforcement Point to configure the other side of the +tunnel.

+
+

Tip

+

The arguments are used to initialize data attributes with the same +names.

+
+
+
+RESOURCE_TYPE_L2VPNPEERCODES = 'L2VpnPeerCodes'
+
+ +
+ +
+
+class com.vmware.nsx_policy.model_client.L2VpnPerSegmentTrafficStatistics(bum_bytes_in=None, bum_bytes_out=None, bum_packets_in=None, bum_packets_out=None, bytes_in=None, bytes_out=None, packets_in=None, packets_out=None, packets_receive_error=None, packets_sent_error=None, segment_path=None)
+

Bases: vmware.vapi.bindings.struct.VapiStruct

+

Traffic statistics for a segment.

+
+

Tip

+

The arguments are used to initialize data attributes with the same +names.

+
+
+ +
+
+class com.vmware.nsx_policy.model_client.L2VpnService(links=None, schema=None, self_=None, revision=None, create_time=None, create_user=None, last_modified_time=None, last_modified_user=None, protection=None, system_owned=None, description=None, display_name=None, id=None, resource_type=None, tags=None, enable_full_mesh=None, logical_router_id=None, logical_tap_ip_pool=None)
+

Bases: vmware.vapi.bindings.struct.VapiStruct

+

Defines if service running as hub or spoke Also defines all the common +properties for the multiple L2VpnSessions associated with this service.

+
+

Tip

+

The arguments are used to initialize data attributes with the same +names.

+
+
+ +
+
+class com.vmware.nsx_policy.model_client.L2VpnServiceListResult(links=None, schema=None, self_=None, cursor=None, result_count=None, sort_ascending=None, sort_by=None, results=None)
+

Bases: vmware.vapi.bindings.struct.VapiStruct

+

Paginated list all the L2VPN services.

+
+

Tip

+

The arguments are used to initialize data attributes with the same +names.

+
+
+ +
+
+class com.vmware.nsx_policy.model_client.L2VpnSession(links=None, schema=None, self_=None, revision=None, create_time=None, create_user=None, last_modified_time=None, last_modified_user=None, protection=None, system_owned=None, description=None, display_name=None, id=None, resource_type=None, tags=None, enabled=None, l2vpn_service_id=None, transport_tunnels=None, tunnel_encapsulation=None)
+

Bases: vmware.vapi.bindings.struct.VapiStruct

+

Defines the tunnel local and peer addresses along with the multiple +tansport tunnels for redundancy. L2VpnSession belongs on to only one +L2VpnService.

+
+

Tip

+

The arguments are used to initialize data attributes with the same +names.

+
+
+ +
+
+class com.vmware.nsx_policy.model_client.L2VpnSessionListResult(links=None, schema=None, self_=None, cursor=None, result_count=None, sort_ascending=None, sort_by=None, results=None)
+

Bases: vmware.vapi.bindings.struct.VapiStruct

+

Paginated list all the L2VPN sessions

+
+

Tip

+

The arguments are used to initialize data attributes with the same +names.

+
+
+ +
+
+class com.vmware.nsx_policy.model_client.L2VpnSessionStatistics(tap_traffic_counters=None, traffic_statistics_per_segment=None, enforcement_point_path=None, resource_type='L2VpnSessionStatistics')
+

Bases: vmware.vapi.bindings.struct.VapiStruct

+

Session statistics gives Vpn session status and traffic statistics per +segment.

+
+

Tip

+

The arguments are used to initialize data attributes with the same +names.

+
+
+ +
+
+class com.vmware.nsx_policy.model_client.L2VpnStatisticsPerEnforcementPoint(enforcement_point_path=None, resource_type='L2VpnStatisticsPerEnforcementPoint')
+

Bases: vmware.vapi.bindings.struct.VapiStruct

+

L2Vpn Statistics Per Enforcement Point.

+
+

Tip

+

The arguments are used to initialize data attributes with the same +names.

+
+
+
+RESOURCE_TYPE_L2VPNSESSIONSTATISTICS = 'L2VpnSessionStatistics'
+
+ +
+ +
+
+class com.vmware.nsx_policy.model_client.L2VpnTapTrafficStatistics(bytes_in=None, bytes_out=None, packets_in=None, packets_out=None, packets_receive_error=None, packets_sent_error=None)
+

Bases: vmware.vapi.bindings.struct.VapiStruct

+

TAP (Terminal access point) traffic statistics for L2Vpn.

+
+

Tip

+

The arguments are used to initialize data attributes with the same +names.

+
+
+ +
+
+class com.vmware.nsx_policy.model_client.L2VpnTransportTunnelPeerCode(peer_code=None, transport_tunnel_path=None)
+

Bases: vmware.vapi.bindings.struct.VapiStruct

+

L2Vpn transport tunnel peer code.

+
+

Tip

+

The arguments are used to initialize data attributes with the same +names.

+
+
+ +
+
+class com.vmware.nsx_policy.model_client.L2VpnTunnelEncapsulation(local_endpoint_ip=None, peer_endpoint_ip=None, protocol=None)
+

Bases: vmware.vapi.bindings.struct.VapiStruct

+

L2VPN tunnel encapsulation config

+
+

Tip

+

The arguments are used to initialize data attributes with the same +names.

+
+
+
+PROTOCOL_GRE = 'GRE'
+
+ +
+ +
+
+class com.vmware.nsx_policy.model_client.L3Vpn(links=None, schema=None, self_=None, revision=None, create_time=None, create_user=None, last_modified_time=None, last_modified_user=None, protection=None, system_owned=None, description=None, display_name=None, id=None, resource_type=None, tags=None, parent_path=None, path=None, relative_path=None, children=None, marked_for_delete=None, dh_groups=None, enable_perfect_forward_secrecy=None, enabled=None, ike_digest_algorithms=None, ike_encryption_algorithms=None, ike_version=None, l3vpn_session=None, local_address=None, passphrases=None, remote_private_address=None, remote_public_address=None, tunnel_digest_algorithms=None, tunnel_encryption_algorithms=None)
+

Bases: vmware.vapi.bindings.struct.VapiStruct

+

Contains information necessary to configure IPSec Vpn.

+
+

Tip

+

The arguments are used to initialize data attributes with the same +names.

+
+
+
+DH_GROUPS_GROUP14 = 'GROUP14'
+
+ +
+
+DH_GROUPS_GROUP15 = 'GROUP15'
+
+ +
+
+DH_GROUPS_GROUP16 = 'GROUP16'
+
+ +
+
+IKE_DIGEST_ALGORITHMS_SHA1 = 'SHA1'
+
+ +
+
+IKE_DIGEST_ALGORITHMS_SHA2_256 = 'SHA2_256'
+
+ +
+
+IKE_ENCRYPTION_ALGORITHMS_128 = 'AES_128'
+
+ +
+
+IKE_ENCRYPTION_ALGORITHMS_256 = 'AES_256'
+
+ +
+
+IKE_ENCRYPTION_ALGORITHMS_GCM_128 = 'AES_GCM_128'
+
+ +
+
+IKE_ENCRYPTION_ALGORITHMS_GCM_192 = 'AES_GCM_192'
+
+ +
+
+IKE_ENCRYPTION_ALGORITHMS_GCM_256 = 'AES_GCM_256'
+
+ +
+
+IKE_VERSION_FLEX = 'IKE_FLEX'
+
+ +
+
+IKE_VERSION_V1 = 'IKE_V1'
+
+ +
+
+IKE_VERSION_V2 = 'IKE_V2'
+
+ +
+
+TUNNEL_DIGEST_ALGORITHMS_SHA1 = 'SHA1'
+
+ +
+
+TUNNEL_DIGEST_ALGORITHMS_SHA2_256 = 'SHA2_256'
+
+ +
+
+TUNNEL_ENCRYPTION_ALGORITHMS_128 = 'AES_128'
+
+ +
+
+TUNNEL_ENCRYPTION_ALGORITHMS_256 = 'AES_256'
+
+ +
+
+TUNNEL_ENCRYPTION_ALGORITHMS_GCM_128 = 'AES_GCM_128'
+
+ +
+
+TUNNEL_ENCRYPTION_ALGORITHMS_GCM_192 = 'AES_GCM_192'
+
+ +
+
+TUNNEL_ENCRYPTION_ALGORITHMS_GCM_256 = 'AES_GCM_256'
+
+ +
+ +
+
+class com.vmware.nsx_policy.model_client.L3VpnContext(links=None, schema=None, self_=None, revision=None, create_time=None, create_user=None, last_modified_time=None, last_modified_user=None, protection=None, system_owned=None, description=None, display_name=None, id=None, resource_type=None, tags=None, parent_path=None, path=None, relative_path=None, children=None, marked_for_delete=None, available_local_addresses=None, bypass_rules=None, enabled=None, ike_log_level=None, label=None)
+

Bases: vmware.vapi.bindings.struct.VapiStruct

+

L3Vpn Context provides the configuration context that different L3Vpns can +consume.

+
+

Tip

+

The arguments are used to initialize data attributes with the same +names.

+
+
+
+IKE_LOG_LEVEL_DEBUG = 'DEBUG'
+
+ +
+
+IKE_LOG_LEVEL_EMERGENCY = 'EMERGENCY'
+
+ +
+
+IKE_LOG_LEVEL_ERROR = 'ERROR'
+
+ +
+
+IKE_LOG_LEVEL_INFO = 'INFO'
+
+ +
+
+IKE_LOG_LEVEL_WARN = 'WARN'
+
+ +
+ +
+
+class com.vmware.nsx_policy.model_client.L3VpnListResult(links=None, schema=None, self_=None, cursor=None, result_count=None, sort_ascending=None, sort_by=None, results=None)
+

Bases: vmware.vapi.bindings.struct.VapiStruct

+

Paged Collection of L3Vpns

+
+

Tip

+

The arguments are used to initialize data attributes with the same +names.

+
+
+ +
+
+class com.vmware.nsx_policy.model_client.L3VpnPeerConfigRequestParameters(enforcement_point_path=None)
+

Bases: vmware.vapi.bindings.struct.VapiStruct

+

Peer Config Request parameters that represents an enforcement point path. A +request to get the Peer config for an L3Vpn can be parameterized with this +path and will be evaluted as follows: - no enforcement point path +specified: the request is evaluated on all enforcement points. - +{enforcement_point_path}: the request is evaluated only on the given +enforcement point.

+
+

Tip

+

The arguments are used to initialize data attributes with the same +names.

+
+
+ +
+
+class com.vmware.nsx_policy.model_client.L3VpnRule(links=None, schema=None, self_=None, revision=None, create_time=None, create_user=None, last_modified_time=None, last_modified_user=None, protection=None, system_owned=None, description=None, display_name=None, id=None, resource_type=None, tags=None, parent_path=None, path=None, relative_path=None, children=None, marked_for_delete=None, action=None, destinations=None, sequence_number=None, sources=None)
+

Bases: vmware.vapi.bindings.struct.VapiStruct

+

For policy-based L3Vpn sessions, a rule specifies as its action the vpn +tunnel to be used for transit traffic that meets the rules match criteria.

+
+

Tip

+

The arguments are used to initialize data attributes with the same +names.

+
+
+
+ACTION_BYPASS = 'BYPASS'
+
+ +
+
+ACTION_PROTECT = 'PROTECT'
+
+ +
+ +
+
+class com.vmware.nsx_policy.model_client.L3VpnSession(resource_type='L3VpnSession')
+

Bases: vmware.vapi.bindings.struct.VapiStruct

+

Contains information about L3Vpn session.

+
+

Tip

+

The arguments are used to initialize data attributes with the same +names.

+
+
+
+RESOURCE_TYPE_POLICYBASEDL3VPNSESSION = 'PolicyBasedL3VpnSession'
+
+ +
+
+RESOURCE_TYPE_ROUTEBASEDL3VPNSESSION = 'RouteBasedL3VpnSession'
+
+ +
+ +
+
+class com.vmware.nsx_policy.model_client.L3VpnStatisticsPerEnforcementPoint(enforcement_point_path=None, resource_type='L3VpnStatisticsPerEnforcementPoint')
+

Bases: vmware.vapi.bindings.struct.VapiStruct

+

L3Vpn Statistics Per Enforcement Point.

+
+

Tip

+

The arguments are used to initialize data attributes with the same +names.

+
+
+
+RESOURCE_TYPE_IPSECVPNSESSIONSTATISTICS = 'IPSecVpnSessionStatistics'
+
+ +
+ +
+
+class com.vmware.nsx_policy.model_client.L3VpnSubnet(subnet=None)
+

Bases: vmware.vapi.bindings.struct.VapiStruct

+

Used to specify subnets in L3Vpn rule.

+
+

Tip

+

The arguments are used to initialize data attributes with the same +names.

+
+
+ +
+
+class com.vmware.nsx_policy.model_client.L4PolicyLbPersistenceProfile(persistence=None, links=None, schema=None, self_=None, revision=None, create_time=None, create_user=None, last_modified_time=None, last_modified_user=None, protection=None, system_owned=None, description=None, display_name=None, id=None, resource_type='L4PolicyLbPersistenceProfile', tags=None, parent_path=None, path=None, relative_path=None, children=None, marked_for_delete=None)
+

Bases: vmware.vapi.bindings.struct.VapiStruct

+

Some applications maintain state and require all relevant connections to be +sent to the same server as the application state is not synchronized among +servers. Persistence is enabled on a PolicyLbVirtualServer by binding a +persistence profile to it.

+
+

Tip

+

The arguments are used to initialize data attributes with the same +names.

+
+
+
+PERSISTENCE_IP = 'SOURCE_IP'
+
+ +
+ +
+
+class com.vmware.nsx_policy.model_client.L4PortSetNSService(destination_ports=None, l4_protocol=None, source_ports=None, resource_type='L4PortSetNSService')
+

Bases: vmware.vapi.bindings.struct.VapiStruct

+

L4PortSet can be specified in comma separated notation of parts. Parts of a +L4PortSet includes single integer or range of port in hyphen notation. +Example of a PortSet: "22, 33-70, 44".

+
+

Tip

+

The arguments are used to initialize data attributes with the same +names.

+
+
+
+L4PROTOCOL_TCP = 'TCP'
+
+ +
+
+L4PROTOCOL_UDP = 'UDP'
+
+ +
+ +
+
+class com.vmware.nsx_policy.model_client.L4PortSetServiceEntry(destination_ports=None, l4_protocol=None, source_ports=None, links=None, schema=None, self_=None, revision=None, create_time=None, create_user=None, last_modified_time=None, last_modified_user=None, protection=None, system_owned=None, description=None, display_name=None, id=None, resource_type='L4PortSetServiceEntry', tags=None, parent_path=None, path=None, relative_path=None, children=None, marked_for_delete=None)
+

Bases: vmware.vapi.bindings.struct.VapiStruct

+

L4PortSet can be specified in comma separated notation of parts. Parts of a +L4PortSet includes single integer or range of port in hyphen notation. +Example of a PortSet: "22, 33-70, 44".

+
+

Tip

+

The arguments are used to initialize data attributes with the same +names.

+
+
+
+L4PROTOCOL_TCP = 'TCP'
+
+ +
+
+L4PROTOCOL_UDP = 'UDP'
+
+ +
+ +
+
+class com.vmware.nsx_policy.model_client.L7PolicyLbPersistenceProfile(persistence=None, links=None, schema=None, self_=None, revision=None, create_time=None, create_user=None, last_modified_time=None, last_modified_user=None, protection=None, system_owned=None, description=None, display_name=None, id=None, resource_type='L7PolicyLbPersistenceProfile', tags=None, parent_path=None, path=None, relative_path=None, children=None, marked_for_delete=None)
+

Bases: vmware.vapi.bindings.struct.VapiStruct

+

Some applications maintain state and require all relevant connections to be +sent to the same server as the application state is not synchronized among +servers. Persistence is enabled on a PolicyLbVirtualServer by binding a +persistence profile to it.

+
+

Tip

+

The arguments are used to initialize data attributes with the same +names.

+
+
+ +
+ +
+ +
+
+class com.vmware.nsx_policy.model_client.L7ServiceEntry(destination_ports=None, entity=None, l7_protocol=None, operations=None, source_ports=None, links=None, schema=None, self_=None, revision=None, create_time=None, create_user=None, last_modified_time=None, last_modified_user=None, protection=None, system_owned=None, description=None, display_name=None, id=None, resource_type='L7ServiceEntry', tags=None, parent_path=None, path=None, relative_path=None, children=None, marked_for_delete=None)
+

Bases: vmware.vapi.bindings.struct.VapiStruct

+

A ServiceEntry that represents L7 services

+
+

Tip

+

The arguments are used to initialize data attributes with the same +names.

+
+
+ +
+
+class com.vmware.nsx_policy.model_client.Label(condition=None, hover=None, icons=None, navigation=None, text=None)
+

Bases: vmware.vapi.bindings.struct.VapiStruct

+

Label that will be displayed for a UI element.

+
+

Tip

+

The arguments are used to initialize data attributes with the same +names.

+
+
+ +
+
+class com.vmware.nsx_policy.model_client.LabelValueConfiguration(navigation=None, properties=None, links=None, schema=None, self_=None, revision=None, create_time=None, create_user=None, last_modified_time=None, last_modified_user=None, protection=None, system_owned=None, description=None, display_name=None, id=None, resource_type='LabelValueConfiguration', tags=None, datasources=None, drilldown_id=None, footer=None, is_drilldown=None, shared=None, weight=None)
+

Bases: vmware.vapi.bindings.struct.VapiStruct

+

Represents a Label-Value widget configuration

+
+

Tip

+

The arguments are used to initialize data attributes with the same +names.

+
+
+ +
+
+class com.vmware.nsx_policy.model_client.Lag(id=None, load_balance_algorithm=None, mode=None, name=None, number_of_uplinks=None, timeout_type=None, uplinks=None)
+

Bases: vmware.vapi.bindings.struct.VapiStruct

+

LACP group

+
+

Tip

+

The arguments are used to initialize data attributes with the same +names.

+
+
+
+LOAD_BALANCE_ALGORITHM_DESTMAC = 'DESTMAC'
+
+ +
+
+LOAD_BALANCE_ALGORITHM_SRCDESTIPVLAN = 'SRCDESTIPVLAN'
+
+ +
+
+LOAD_BALANCE_ALGORITHM_SRCDESTMAC = 'SRCDESTMAC'
+
+ +
+
+LOAD_BALANCE_ALGORITHM_SRCDESTMACIPPORT = 'SRCDESTMACIPPORT'
+
+ +
+
+LOAD_BALANCE_ALGORITHM_SRCMAC = 'SRCMAC'
+
+ +
+
+MODE_ACTIVE = 'ACTIVE'
+
+ +
+
+MODE_PASSIVE = 'PASSIVE'
+
+ +
+
+TIMEOUT_TYPE_FAST = 'FAST'
+
+ +
+
+TIMEOUT_TYPE_SLOW = 'SLOW'
+
+ +
+ +
+
+class com.vmware.nsx_policy.model_client.LbActiveMonitor(fall_count=None, interval=None, monitor_port=None, rise_count=None, timeout=None, links=None, schema=None, self_=None, revision=None, create_time=None, create_user=None, last_modified_time=None, last_modified_user=None, protection=None, system_owned=None, description=None, display_name=None, id=None, resource_type='LbActiveMonitor', tags=None)
+

Bases: vmware.vapi.bindings.struct.VapiStruct

+
+

Tip

+

The arguments are used to initialize data attributes with the same +names.

+
+
+ +
+
+class com.vmware.nsx_policy.model_client.LbAppProfile(links=None, schema=None, self_=None, revision=None, create_time=None, create_user=None, last_modified_time=None, last_modified_user=None, protection=None, system_owned=None, description=None, display_name=None, id=None, resource_type='LbAppProfile', tags=None)
+

Bases: vmware.vapi.bindings.struct.VapiStruct

+
+

Tip

+

The arguments are used to initialize data attributes with the same +names.

+
+
+
+RESOURCE_TYPE_LBFASTTCPPROFILE = 'LbFastTcpProfile'
+
+ +
+
+RESOURCE_TYPE_LBFASTUDPPROFILE = 'LbFastUdpProfile'
+
+ +
+
+RESOURCE_TYPE_LBHTTPPROFILE = 'LbHttpProfile'
+
+ +
+ +
+
+class com.vmware.nsx_policy.model_client.LbAppProfileListResult(links=None, schema=None, self_=None, cursor=None, result_count=None, sort_ascending=None, sort_by=None, results=None)
+

Bases: vmware.vapi.bindings.struct.VapiStruct

+
+

Tip

+

The arguments are used to initialize data attributes with the same +names.

+
+
+ +
+
+class com.vmware.nsx_policy.model_client.LbClientSslProfile(links=None, schema=None, self_=None, revision=None, create_time=None, create_user=None, last_modified_time=None, last_modified_user=None, protection=None, system_owned=None, description=None, display_name=None, id=None, resource_type=None, tags=None, ciphers=None, is_secure=None, prefer_server_ciphers=None, protocols=None, session_cache_enabled=None, session_cache_timeout=None)
+

Bases: vmware.vapi.bindings.struct.VapiStruct

+
+

Tip

+

The arguments are used to initialize data attributes with the same +names.

+
+
+
+CIPHERS_ECDHE_ECDSA_WITH_AES_128_CBC_SHA = 'TLS_ECDHE_ECDSA_WITH_AES_128_CBC_SHA'
+
+ +
+
+CIPHERS_ECDHE_ECDSA_WITH_AES_128_CBC_SHA256 = 'TLS_ECDHE_ECDSA_WITH_AES_128_CBC_SHA256'
+
+ +
+
+CIPHERS_ECDHE_ECDSA_WITH_AES_128_GCM_SHA256 = 'TLS_ECDHE_ECDSA_WITH_AES_128_GCM_SHA256'
+
+ +
+
+CIPHERS_ECDHE_ECDSA_WITH_AES_256_CBC_SHA = 'TLS_ECDHE_ECDSA_WITH_AES_256_CBC_SHA'
+
+ +
+
+CIPHERS_ECDHE_ECDSA_WITH_AES_256_CBC_SHA384 = 'TLS_ECDHE_ECDSA_WITH_AES_256_CBC_SHA384'
+
+ +
+
+CIPHERS_ECDHE_ECDSA_WITH_AES_256_GCM_SHA384 = 'TLS_ECDHE_ECDSA_WITH_AES_256_GCM_SHA384'
+
+ +
+
+CIPHERS_ECDHE_RSA_WITH_AES_128_CBC_SHA = 'TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA'
+
+ +
+
+CIPHERS_ECDHE_RSA_WITH_AES_128_CBC_SHA256 = 'TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA256'
+
+ +
+
+CIPHERS_ECDHE_RSA_WITH_AES_128_GCM_SHA256 = 'TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256'
+
+ +
+
+CIPHERS_ECDHE_RSA_WITH_AES_256_CBC_SHA = 'TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA'
+
+ +
+
+CIPHERS_ECDHE_RSA_WITH_AES_256_CBC_SHA384 = 'TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA384'
+
+ +
+
+CIPHERS_ECDHE_RSA_WITH_AES_256_GCM_SHA384 = 'TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384'
+
+ +
+
+CIPHERS_ECDH_ECDSA_WITH_AES_128_CBC_SHA = 'TLS_ECDH_ECDSA_WITH_AES_128_CBC_SHA'
+
+ +
+
+CIPHERS_ECDH_ECDSA_WITH_AES_128_CBC_SHA256 = 'TLS_ECDH_ECDSA_WITH_AES_128_CBC_SHA256'
+
+ +
+
+CIPHERS_ECDH_ECDSA_WITH_AES_128_GCM_SHA256 = 'TLS_ECDH_ECDSA_WITH_AES_128_GCM_SHA256'
+
+ +
+
+CIPHERS_ECDH_ECDSA_WITH_AES_256_CBC_SHA = 'TLS_ECDH_ECDSA_WITH_AES_256_CBC_SHA'
+
+ +
+
+CIPHERS_ECDH_ECDSA_WITH_AES_256_CBC_SHA384 = 'TLS_ECDH_ECDSA_WITH_AES_256_CBC_SHA384'
+
+ +
+
+CIPHERS_ECDH_ECDSA_WITH_AES_256_GCM_SHA384 = 'TLS_ECDH_ECDSA_WITH_AES_256_GCM_SHA384'
+
+ +
+
+CIPHERS_ECDH_RSA_WITH_AES_128_CBC_SHA = 'TLS_ECDH_RSA_WITH_AES_128_CBC_SHA'
+
+ +
+
+CIPHERS_ECDH_RSA_WITH_AES_128_CBC_SHA256 = 'TLS_ECDH_RSA_WITH_AES_128_CBC_SHA256'
+
+ +
+
+CIPHERS_ECDH_RSA_WITH_AES_128_GCM_SHA256 = 'TLS_ECDH_RSA_WITH_AES_128_GCM_SHA256'
+
+ +
+
+CIPHERS_ECDH_RSA_WITH_AES_256_CBC_SHA = 'TLS_ECDH_RSA_WITH_AES_256_CBC_SHA'
+
+ +
+
+CIPHERS_ECDH_RSA_WITH_AES_256_CBC_SHA384 = 'TLS_ECDH_RSA_WITH_AES_256_CBC_SHA384'
+
+ +
+
+CIPHERS_ECDH_RSA_WITH_AES_256_GCM_SHA384 = 'TLS_ECDH_RSA_WITH_AES_256_GCM_SHA384'
+
+ +
+
+CIPHERS_RSA_WITH_3DES_EDE_CBC_SHA = 'TLS_RSA_WITH_3DES_EDE_CBC_SHA'
+
+ +
+
+CIPHERS_RSA_WITH_AES_128_CBC_SHA = 'TLS_RSA_WITH_AES_128_CBC_SHA'
+
+ +
+
+CIPHERS_RSA_WITH_AES_128_CBC_SHA256 = 'TLS_RSA_WITH_AES_128_CBC_SHA256'
+
+ +
+
+CIPHERS_RSA_WITH_AES_128_GCM_SHA256 = 'TLS_RSA_WITH_AES_128_GCM_SHA256'
+
+ +
+
+CIPHERS_RSA_WITH_AES_256_CBC_SHA = 'TLS_RSA_WITH_AES_256_CBC_SHA'
+
+ +
+
+CIPHERS_RSA_WITH_AES_256_CBC_SHA256 = 'TLS_RSA_WITH_AES_256_CBC_SHA256'
+
+ +
+
+CIPHERS_RSA_WITH_AES_256_GCM_SHA384 = 'TLS_RSA_WITH_AES_256_GCM_SHA384'
+
+ +
+
+PROTOCOLS_SSL_V2 = 'SSL_V2'
+
+ +
+
+PROTOCOLS_SSL_V3 = 'SSL_V3'
+
+ +
+
+PROTOCOLS_TLS_V1 = 'TLS_V1'
+
+ +
+
+PROTOCOLS_TLS_V1_1 = 'TLS_V1_1'
+
+ +
+
+PROTOCOLS_TLS_V1_2 = 'TLS_V1_2'
+
+ +
+ +
+
+class com.vmware.nsx_policy.model_client.LbClientSslProfileListResult(links=None, schema=None, self_=None, cursor=None, result_count=None, sort_ascending=None, sort_by=None, results=None)
+

Bases: vmware.vapi.bindings.struct.VapiStruct

+
+

Tip

+

The arguments are used to initialize data attributes with the same +names.

+
+
+ +
+
+class com.vmware.nsx_policy.model_client.LbCookiePersistenceProfile(cookie_domain=None, cookie_fallback=None, cookie_garble=None, cookie_mode=None, cookie_name=None, cookie_path=None, cookie_time=None, links=None, schema=None, self_=None, revision=None, create_time=None, create_user=None, last_modified_time=None, last_modified_user=None, protection=None, system_owned=None, description=None, display_name=None, id=None, resource_type='LbCookiePersistenceProfile', tags=None, persistence_shared=None)
+

Bases: vmware.vapi.bindings.struct.VapiStruct

+
+

Tip

+

The arguments are used to initialize data attributes with the same +names.

+
+
+
+COOKIE_MODE_INSERT = 'INSERT'
+
+ +
+
+COOKIE_MODE_PREFIX = 'PREFIX'
+
+ +
+
+COOKIE_MODE_REWRITE = 'REWRITE'
+
+ +
+ +
+
+class com.vmware.nsx_policy.model_client.LbCookieTime(type='LbCookieTime')
+

Bases: vmware.vapi.bindings.struct.VapiStruct

+
+

Tip

+

The arguments are used to initialize data attributes with the same +names.

+
+
+
+TYPE_LBPERSISTENCECOOKIETIME = 'LbPersistenceCookieTime'
+
+ +
+
+TYPE_LBSESSIONCOOKIETIME = 'LbSessionCookieTime'
+
+ +
+ +
+
+class com.vmware.nsx_policy.model_client.LbFastTcpProfile(close_timeout=None, ha_flow_mirroring_enabled=None, idle_timeout=None, links=None, schema=None, self_=None, revision=None, create_time=None, create_user=None, last_modified_time=None, last_modified_user=None, protection=None, system_owned=None, description=None, display_name=None, id=None, resource_type='LbFastTcpProfile', tags=None)
+

Bases: vmware.vapi.bindings.struct.VapiStruct

+
+

Tip

+

The arguments are used to initialize data attributes with the same +names.

+
+
+ +
+
+class com.vmware.nsx_policy.model_client.LbFastUdpProfile(flow_mirroring_enabled=None, idle_timeout=None, links=None, schema=None, self_=None, revision=None, create_time=None, create_user=None, last_modified_time=None, last_modified_user=None, protection=None, system_owned=None, description=None, display_name=None, id=None, resource_type='LbFastUdpProfile', tags=None)
+

Bases: vmware.vapi.bindings.struct.VapiStruct

+
+

Tip

+

The arguments are used to initialize data attributes with the same +names.

+
+
+ +
+
+class com.vmware.nsx_policy.model_client.LbHttpMonitor(request_body=None, request_headers=None, request_method=None, request_url=None, request_version=None, response_body=None, response_status_codes=None, fall_count=None, interval=None, monitor_port=None, rise_count=None, timeout=None, links=None, schema=None, self_=None, revision=None, create_time=None, create_user=None, last_modified_time=None, last_modified_user=None, protection=None, system_owned=None, description=None, display_name=None, id=None, resource_type=None, tags=None)
+

Bases: vmware.vapi.bindings.struct.VapiStruct

+
+

Tip

+

The arguments are used to initialize data attributes with the same +names.

+
+
+
+REQUEST_METHOD_GET = 'GET'
+
+ +
+
+REQUEST_METHOD_HEAD = 'HEAD'
+
+ +
+
+REQUEST_METHOD_OPTIONS = 'OPTIONS'
+
+ +
+
+REQUEST_METHOD_POST = 'POST'
+
+ +
+
+REQUEST_METHOD_PUT = 'PUT'
+
+ +
+
+REQUEST_VERSION_1_0 = 'HTTP_VERSION_1_0'
+
+ +
+
+REQUEST_VERSION_1_1 = 'HTTP_VERSION_1_1'
+
+ +
+
+REQUEST_VERSION_2_0 = 'HTTP_VERSION_2_0'
+
+ +
+ +
+
+class com.vmware.nsx_policy.model_client.LbHttpProfile(http_redirect_to=None, http_redirect_to_https=None, idle_timeout=None, ntlm=None, request_body_size=None, request_header_size=None, response_timeout=None, x_forwarded_for=None, links=None, schema=None, self_=None, revision=None, create_time=None, create_user=None, last_modified_time=None, last_modified_user=None, protection=None, system_owned=None, description=None, display_name=None, id=None, resource_type='LbHttpProfile', tags=None)
+

Bases: vmware.vapi.bindings.struct.VapiStruct

+
+

Tip

+

The arguments are used to initialize data attributes with the same +names.

+
+
+
+XFORWARDED_FOR_INSERT = 'INSERT'
+
+ +
+
+XFORWARDED_FOR_REPLACE = 'REPLACE'
+
+ +
+ +
+
+class com.vmware.nsx_policy.model_client.LbHttpRedirectAction(redirect_status=None, redirect_url=None, type='LbHttpRedirectAction')
+

Bases: vmware.vapi.bindings.struct.VapiStruct

+

This action is used to redirect HTTP request messages to a new URL. The +reply_status value specified in this action is used as the status code of +HTTP response message which is sent back to client (Normally a browser). +The HTTP status code for redirection is 3xx, for example, 301, 302, 303, +307, etc. The redirect_url is the new URL that the HTTP request message is +redirected to. Normally browser will send another HTTP request to the new +URL after receiving a redirection response message. Captured variables and +built-in variables can be used in redirect_url field. For example, to +redirect all HTTP requests to HTTPS requests for a virtual server. We +create an LbRule without any conditions, add an LbHttpRedirectAction to the +rule. Set the redirect_url field of the LbHttpRedirectAction to: +https://$_host$_request_uri And set redirect_status to "302", which +means found. This rule will redirect all HTTP requests to HTTPS server port +on the same host.

+
+

Tip

+

The arguments are used to initialize data attributes with the same +names.

+
+
+ +
+
+class com.vmware.nsx_policy.model_client.LbHttpRejectAction(reply_message=None, reply_status=None, type='LbHttpRejectAction')
+

Bases: vmware.vapi.bindings.struct.VapiStruct

+

This action is used to reject HTTP request messages. The specified +reply_status value is used as the status code for the corresponding HTTP +response message which is sent back to client (Normally a browser) +indicating the reason it was rejected. Reference official HTTP status code +list for your specific HTTP version to set the reply_status properly. +LbHttpRejectAction does not support variables.

+
+

Tip

+

The arguments are used to initialize data attributes with the same +names.

+
+
+ +
+
+class com.vmware.nsx_policy.model_client.LbHttpRequestBodyCondition(body_value=None, case_sensitive=None, match_type=None, inverse=None, type='LbHttpRequestBodyCondition')
+

Bases: vmware.vapi.bindings.struct.VapiStruct

+

This condition is used to match the message body of an HTTP request. +Typically, only HTTP POST, PATCH, or PUT requests have request body. The +match_type field defines how body_value field is used to match the body of +HTTP requests.

+
+

Tip

+

The arguments are used to initialize data attributes with the same +names.

+
+
+
+MATCH_TYPE_CONTAINS = 'CONTAINS'
+
+ +
+
+MATCH_TYPE_ENDS_WITH = 'ENDS_WITH'
+
+ +
+
+MATCH_TYPE_EQUALS = 'EQUALS'
+
+ +
+
+MATCH_TYPE_REGEX = 'REGEX'
+
+ +
+
+MATCH_TYPE_STARTS_WITH = 'STARTS_WITH'
+
+ +
+ +
+
+class com.vmware.nsx_policy.model_client.LbHttpRequestCookieCondition(case_sensitive=None, cookie_name=None, cookie_value=None, match_type=None, inverse=None, type='LbHttpRequestCookieCondition')
+

Bases: vmware.vapi.bindings.struct.VapiStruct

+

This condition is used to match HTTP request messages by cookie which is a +specific type of HTTP header. The match_type and case_sensitive define how +to compare cookie value.

+
+

Tip

+

The arguments are used to initialize data attributes with the same +names.

+
+
+
+MATCH_TYPE_CONTAINS = 'CONTAINS'
+
+ +
+
+MATCH_TYPE_ENDS_WITH = 'ENDS_WITH'
+
+ +
+
+MATCH_TYPE_EQUALS = 'EQUALS'
+
+ +
+
+MATCH_TYPE_REGEX = 'REGEX'
+
+ +
+
+MATCH_TYPE_STARTS_WITH = 'STARTS_WITH'
+
+ +
+ +
+
+class com.vmware.nsx_policy.model_client.LbHttpRequestHeader(header_name=None, header_value=None)
+

Bases: vmware.vapi.bindings.struct.VapiStruct

+
+

Tip

+

The arguments are used to initialize data attributes with the same +names.

+
+
+ +
+
+class com.vmware.nsx_policy.model_client.LbHttpRequestHeaderCondition(case_sensitive=None, header_name=None, header_value=None, match_type=None, inverse=None, type='LbHttpRequestHeaderCondition')
+

Bases: vmware.vapi.bindings.struct.VapiStruct

+

This condition is used to match HTTP request messages by HTTP header +fields. HTTP header fields are components of the header section of HTTP +request and response messages. They define the operating parameters of an +HTTP transaction. For example, Cookie, Authorization, User-Agent, etc. One +condition can be used to match one header field, to match multiple header +fields, multiple conditions must be specified. The match_type field defines +how header_value field is used to match HTTP requests. The header_name +field does not support match types.

+
+

Tip

+

The arguments are used to initialize data attributes with the same +names.

+
+
+
+MATCH_TYPE_CONTAINS = 'CONTAINS'
+
+ +
+
+MATCH_TYPE_ENDS_WITH = 'ENDS_WITH'
+
+ +
+
+MATCH_TYPE_EQUALS = 'EQUALS'
+
+ +
+
+MATCH_TYPE_REGEX = 'REGEX'
+
+ +
+
+MATCH_TYPE_STARTS_WITH = 'STARTS_WITH'
+
+ +
+ +
+
+class com.vmware.nsx_policy.model_client.LbHttpRequestHeaderRewriteAction(header_name=None, header_value=None, type='LbHttpRequestHeaderRewriteAction')
+

Bases: vmware.vapi.bindings.struct.VapiStruct

+

This action is used to rewrite header fields of matched HTTP request +messages to specified new values. One action can be used to rewrite one +header field. To rewrite multiple header fields, multiple actions must be +defined. Captured variables and built-in variables can be used in the +header_value field, header_name field does not support variables.

+
+

Tip

+

The arguments are used to initialize data attributes with the same +names.

+
+
+ +
+
+class com.vmware.nsx_policy.model_client.LbHttpRequestMethodCondition(method=None, inverse=None, type='LbHttpRequestMethodCondition')
+

Bases: vmware.vapi.bindings.struct.VapiStruct

+

This condition is used to match method of HTTP requests. If the method of +an HTTP request is same as the method specified in this condition, the HTTP +request match this condition. For example, if the method field is set to +GET in this condition, any HTTP request with GET method matches the +condition.

+
+

Tip

+

The arguments are used to initialize data attributes with the same +names.

+
+
+
+METHOD_GET = 'GET'
+
+ +
+
+METHOD_HEAD = 'HEAD'
+
+ +
+
+METHOD_OPTIONS = 'OPTIONS'
+
+ +
+
+METHOD_POST = 'POST'
+
+ +
+
+METHOD_PUT = 'PUT'
+
+ +
+ +
+
+class com.vmware.nsx_policy.model_client.LbHttpRequestUriArgumentsCondition(case_sensitive=None, match_type=None, uri_arguments=None, inverse=None, type='LbHttpRequestUriArgumentsCondition')
+

Bases: vmware.vapi.bindings.struct.VapiStruct

+

This condition is used to match URI arguments aka query string of Http +request messages, for example, in URI http://exaple.com?foo=1&bar=2, the +"foo=1&bar=2" is the query string containing URI arguments. In an +URI scheme, query string is indicated by the first question mark +("?") character and terminated by a number sign ("#") +character or by the end of the URI. The uri_arguments field can be +specified as a regular expression(Set match_type to REGEX). For example, +"foo=(?&lt;x&gt;\d+)". It matches HTTP requests whose URI +arguments containing "foo", the value of foo contains only digits. +And the value of foo is captured as $x which can be used in LbRuleAction +fields which support variables.

+
+

Tip

+

The arguments are used to initialize data attributes with the same +names.

+
+
+
+MATCH_TYPE_CONTAINS = 'CONTAINS'
+
+ +
+
+MATCH_TYPE_ENDS_WITH = 'ENDS_WITH'
+
+ +
+
+MATCH_TYPE_EQUALS = 'EQUALS'
+
+ +
+
+MATCH_TYPE_REGEX = 'REGEX'
+
+ +
+
+MATCH_TYPE_STARTS_WITH = 'STARTS_WITH'
+
+ +
+ +
+
+class com.vmware.nsx_policy.model_client.LbHttpRequestUriCondition(case_sensitive=None, match_type=None, uri=None, inverse=None, type='LbHttpRequestUriCondition')
+

Bases: vmware.vapi.bindings.struct.VapiStruct

+

This condition is used to match URIs(Uniform Resource Identifier) of HTTP +request messages. The URI field can be specified as a regular expression. +If an HTTP request message is requesting an URI which matches specified +regular expression, it matches the condition. The syntax of whole URI looks +like this: +scheme:[//[user[:password]\@]host[:port]][/path][?query][#fragment] This +condition matches only the path part of entire URI. When match_type field +is specified as REGEX, the uri field is used as a regular expression to +match URI path of HTTP requests. For example, to match any URI that has +"/image/" or "/images/", uri field can be specified as: +"/image[s]?/". Named capturing groups can be used in the uri field +to capture substrings of matched URIs and store them in variables for use +in LbRuleAction. For example, specify uri field as: +"/news/(?&lt;year&gt;\d+)/(?&lt;month&gt;\d+)/(?&lt;article&gt;.\*)" +If the URI path is /articles/news/2017/06/xyz.html, then substring +"2017" is captured in variable year, "06" is captured in +variable month, and "xyz.html" is captured in variable article. +These variables can then be used in an LbRuleAction field which supports +variables, such as uri field of LbHttpRequestUriRewriteAction. For example, +set the uri field of LbHttpRequestUriRewriteAction as: +"/articles/news/$year-$month-$article" Then the URI path +/articles/news/2017/06/xyz.html is rewritten to: +"/articles/news/2017-06-xyz.html"

+
+

Tip

+

The arguments are used to initialize data attributes with the same +names.

+
+
+
+MATCH_TYPE_CONTAINS = 'CONTAINS'
+
+ +
+
+MATCH_TYPE_ENDS_WITH = 'ENDS_WITH'
+
+ +
+
+MATCH_TYPE_EQUALS = 'EQUALS'
+
+ +
+
+MATCH_TYPE_REGEX = 'REGEX'
+
+ +
+
+MATCH_TYPE_STARTS_WITH = 'STARTS_WITH'
+
+ +
+ +
+
+class com.vmware.nsx_policy.model_client.LbHttpRequestUriRewriteAction(uri=None, uri_arguments=None, type='LbHttpRequestUriRewriteAction')
+

Bases: vmware.vapi.bindings.struct.VapiStruct

+

This action is used to rewrite URIs in matched HTTP request messages. +Specify the uri and uri_arguments fields in this condition to rewrite the +matched HTTP request message’s URI and URI arguments to the new values. +Full URI scheme of HTTP messages have following syntax: +scheme:[//[user[:password]\@]host[:port]][/path][?query][#fragment] The +uri field of this action is used to rewrite the /path part in above scheme. +And the uri_arguments field is used to rewrite the query part. Captured +variables and built-in variables can be used in the uri and uri_arguments +fields. Check the example in LbRuleAction to see how to use variables in +this action.

+
+

Tip

+

The arguments are used to initialize data attributes with the same +names.

+
+
+ +
+
+class com.vmware.nsx_policy.model_client.LbHttpRequestVersionCondition(version=None, inverse=None, type='LbHttpRequestVersionCondition')
+

Bases: vmware.vapi.bindings.struct.VapiStruct

+

This condition is used to match the HTTP protocol version of the HTTP +request messages.

+
+

Tip

+

The arguments are used to initialize data attributes with the same +names.

+
+
+
+VERSION_1_0 = 'HTTP_VERSION_1_0'
+
+ +
+
+VERSION_1_1 = 'HTTP_VERSION_1_1'
+
+ +
+
+VERSION_2_0 = 'HTTP_VERSION_2_0'
+
+ +
+ +
+
+class com.vmware.nsx_policy.model_client.LbHttpResponseHeaderCondition(case_sensitive=None, header_name=None, header_value=None, match_type=None, inverse=None, type='LbHttpResponseHeaderCondition')
+

Bases: vmware.vapi.bindings.struct.VapiStruct

+

This condition is used to match HTTP response messages from backend servers +by HTTP header fields. HTTP header fields are components of the header +section of HTTP request and response messages. They define the operating +parameters of an HTTP transaction. For example, Cookie, Authorization, +User-Agent, etc. One condition can be used to match one header field, to +match multiple header fields, multiple conditions must be specified. The +match_type field defines how header_value field is used to match HTTP +responses. The header_name field does not support match types.

+
+

Tip

+

The arguments are used to initialize data attributes with the same +names.

+
+
+
+MATCH_TYPE_CONTAINS = 'CONTAINS'
+
+ +
+
+MATCH_TYPE_ENDS_WITH = 'ENDS_WITH'
+
+ +
+
+MATCH_TYPE_EQUALS = 'EQUALS'
+
+ +
+
+MATCH_TYPE_REGEX = 'REGEX'
+
+ +
+
+MATCH_TYPE_STARTS_WITH = 'STARTS_WITH'
+
+ +
+ +
+
+class com.vmware.nsx_policy.model_client.LbHttpResponseHeaderRewriteAction(header_name=None, header_value=None, type='LbHttpResponseHeaderRewriteAction')
+

Bases: vmware.vapi.bindings.struct.VapiStruct

+

This action is used to rewrite header fields of HTTP response messages to +specified new values at HTTP_RESPONSE_REWRITE phase. One action can be used +to rewrite one header field. To rewrite multiple header fields, multiple +actions must be defined. Captured variables and built-in variables can be +used in the header_value field, header_name field does not support +variables.

+
+

Tip

+

The arguments are used to initialize data attributes with the same +names.

+
+
+ +
+
+class com.vmware.nsx_policy.model_client.LbHttpsMonitor(certificate_chain_depth=None, ciphers=None, client_certificate_id=None, is_secure=None, protocols=None, request_body=None, request_headers=None, request_method=None, request_url=None, request_version=None, response_body=None, response_status_codes=None, server_auth=None, server_auth_ca_ids=None, server_auth_crl_ids=None, fall_count=None, interval=None, monitor_port=None, rise_count=None, timeout=None, links=None, schema=None, self_=None, revision=None, create_time=None, create_user=None, last_modified_time=None, last_modified_user=None, protection=None, system_owned=None, description=None, display_name=None, id=None, resource_type=None, tags=None)
+

Bases: vmware.vapi.bindings.struct.VapiStruct

+
+

Tip

+

The arguments are used to initialize data attributes with the same +names.

+
+
+
+CIPHERS_ECDHE_ECDSA_WITH_AES_128_CBC_SHA = 'TLS_ECDHE_ECDSA_WITH_AES_128_CBC_SHA'
+
+ +
+
+CIPHERS_ECDHE_ECDSA_WITH_AES_128_CBC_SHA256 = 'TLS_ECDHE_ECDSA_WITH_AES_128_CBC_SHA256'
+
+ +
+
+CIPHERS_ECDHE_ECDSA_WITH_AES_128_GCM_SHA256 = 'TLS_ECDHE_ECDSA_WITH_AES_128_GCM_SHA256'
+
+ +
+
+CIPHERS_ECDHE_ECDSA_WITH_AES_256_CBC_SHA = 'TLS_ECDHE_ECDSA_WITH_AES_256_CBC_SHA'
+
+ +
+
+CIPHERS_ECDHE_ECDSA_WITH_AES_256_CBC_SHA384 = 'TLS_ECDHE_ECDSA_WITH_AES_256_CBC_SHA384'
+
+ +
+
+CIPHERS_ECDHE_ECDSA_WITH_AES_256_GCM_SHA384 = 'TLS_ECDHE_ECDSA_WITH_AES_256_GCM_SHA384'
+
+ +
+
+CIPHERS_ECDHE_RSA_WITH_AES_128_CBC_SHA = 'TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA'
+
+ +
+
+CIPHERS_ECDHE_RSA_WITH_AES_128_CBC_SHA256 = 'TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA256'
+
+ +
+
+CIPHERS_ECDHE_RSA_WITH_AES_128_GCM_SHA256 = 'TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256'
+
+ +
+
+CIPHERS_ECDHE_RSA_WITH_AES_256_CBC_SHA = 'TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA'
+
+ +
+
+CIPHERS_ECDHE_RSA_WITH_AES_256_CBC_SHA384 = 'TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA384'
+
+ +
+
+CIPHERS_ECDHE_RSA_WITH_AES_256_GCM_SHA384 = 'TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384'
+
+ +
+
+CIPHERS_ECDH_ECDSA_WITH_AES_128_CBC_SHA = 'TLS_ECDH_ECDSA_WITH_AES_128_CBC_SHA'
+
+ +
+
+CIPHERS_ECDH_ECDSA_WITH_AES_128_CBC_SHA256 = 'TLS_ECDH_ECDSA_WITH_AES_128_CBC_SHA256'
+
+ +
+
+CIPHERS_ECDH_ECDSA_WITH_AES_128_GCM_SHA256 = 'TLS_ECDH_ECDSA_WITH_AES_128_GCM_SHA256'
+
+ +
+
+CIPHERS_ECDH_ECDSA_WITH_AES_256_CBC_SHA = 'TLS_ECDH_ECDSA_WITH_AES_256_CBC_SHA'
+
+ +
+
+CIPHERS_ECDH_ECDSA_WITH_AES_256_CBC_SHA384 = 'TLS_ECDH_ECDSA_WITH_AES_256_CBC_SHA384'
+
+ +
+
+CIPHERS_ECDH_ECDSA_WITH_AES_256_GCM_SHA384 = 'TLS_ECDH_ECDSA_WITH_AES_256_GCM_SHA384'
+
+ +
+
+CIPHERS_ECDH_RSA_WITH_AES_128_CBC_SHA = 'TLS_ECDH_RSA_WITH_AES_128_CBC_SHA'
+
+ +
+
+CIPHERS_ECDH_RSA_WITH_AES_128_CBC_SHA256 = 'TLS_ECDH_RSA_WITH_AES_128_CBC_SHA256'
+
+ +
+
+CIPHERS_ECDH_RSA_WITH_AES_128_GCM_SHA256 = 'TLS_ECDH_RSA_WITH_AES_128_GCM_SHA256'
+
+ +
+
+CIPHERS_ECDH_RSA_WITH_AES_256_CBC_SHA = 'TLS_ECDH_RSA_WITH_AES_256_CBC_SHA'
+
+ +
+
+CIPHERS_ECDH_RSA_WITH_AES_256_CBC_SHA384 = 'TLS_ECDH_RSA_WITH_AES_256_CBC_SHA384'
+
+ +
+
+CIPHERS_ECDH_RSA_WITH_AES_256_GCM_SHA384 = 'TLS_ECDH_RSA_WITH_AES_256_GCM_SHA384'
+
+ +
+
+CIPHERS_RSA_WITH_3DES_EDE_CBC_SHA = 'TLS_RSA_WITH_3DES_EDE_CBC_SHA'
+
+ +
+
+CIPHERS_RSA_WITH_AES_128_CBC_SHA = 'TLS_RSA_WITH_AES_128_CBC_SHA'
+
+ +
+
+CIPHERS_RSA_WITH_AES_128_CBC_SHA256 = 'TLS_RSA_WITH_AES_128_CBC_SHA256'
+
+ +
+
+CIPHERS_RSA_WITH_AES_128_GCM_SHA256 = 'TLS_RSA_WITH_AES_128_GCM_SHA256'
+
+ +
+
+CIPHERS_RSA_WITH_AES_256_CBC_SHA = 'TLS_RSA_WITH_AES_256_CBC_SHA'
+
+ +
+
+CIPHERS_RSA_WITH_AES_256_CBC_SHA256 = 'TLS_RSA_WITH_AES_256_CBC_SHA256'
+
+ +
+
+CIPHERS_RSA_WITH_AES_256_GCM_SHA384 = 'TLS_RSA_WITH_AES_256_GCM_SHA384'
+
+ +
+
+PROTOCOLS_SSL_V2 = 'SSL_V2'
+
+ +
+
+PROTOCOLS_SSL_V3 = 'SSL_V3'
+
+ +
+
+PROTOCOLS_TLS_V1 = 'TLS_V1'
+
+ +
+
+PROTOCOLS_TLS_V1_1 = 'TLS_V1_1'
+
+ +
+
+PROTOCOLS_TLS_V1_2 = 'TLS_V1_2'
+
+ +
+
+REQUEST_METHOD_GET = 'GET'
+
+ +
+
+REQUEST_METHOD_HEAD = 'HEAD'
+
+ +
+
+REQUEST_METHOD_OPTIONS = 'OPTIONS'
+
+ +
+
+REQUEST_METHOD_POST = 'POST'
+
+ +
+
+REQUEST_METHOD_PUT = 'PUT'
+
+ +
+
+REQUEST_VERSION_1_0 = 'HTTP_VERSION_1_0'
+
+ +
+
+REQUEST_VERSION_1_1 = 'HTTP_VERSION_1_1'
+
+ +
+
+REQUEST_VERSION_2_0 = 'HTTP_VERSION_2_0'
+
+ +
+
+SERVER_AUTH_IGNORE = 'IGNORE'
+
+ +
+
+SERVER_AUTH_REQUIRED = 'REQUIRED'
+
+ +
+ +
+
+class com.vmware.nsx_policy.model_client.LbIcmpMonitor(data_length=None, fall_count=None, interval=None, monitor_port=None, rise_count=None, timeout=None, links=None, schema=None, self_=None, revision=None, create_time=None, create_user=None, last_modified_time=None, last_modified_user=None, protection=None, system_owned=None, description=None, display_name=None, id=None, resource_type=None, tags=None)
+

Bases: vmware.vapi.bindings.struct.VapiStruct

+
+

Tip

+

The arguments are used to initialize data attributes with the same +names.

+
+
+ +
+
+class com.vmware.nsx_policy.model_client.LbIpHeaderCondition(source_address=None, inverse=None, type='LbIpHeaderCondition')
+

Bases: vmware.vapi.bindings.struct.VapiStruct

+

This condition is used to match IP header fields of HTTP messages. +Currently, only the source IP address is supported. IP addresses can be +expressed as a single IP address like 10.1.1.1, or a range of IP addresses +like 10.1.1.101-10.1.1.160. Both IPv4 and IPv6 addresses are supported.

+
+

Tip

+

The arguments are used to initialize data attributes with the same +names.

+
+
+ +
+
+class com.vmware.nsx_policy.model_client.LbMonitor(links=None, schema=None, self_=None, revision=None, create_time=None, create_user=None, last_modified_time=None, last_modified_user=None, protection=None, system_owned=None, description=None, display_name=None, id=None, resource_type='LbMonitor', tags=None)
+

Bases: vmware.vapi.bindings.struct.VapiStruct

+
+

Tip

+

The arguments are used to initialize data attributes with the same +names.

+
+
+
+RESOURCE_TYPE_LBHTTPMONITOR = 'LbHttpMonitor'
+
+ +
+
+RESOURCE_TYPE_LBHTTPSMONITOR = 'LbHttpsMonitor'
+
+ +
+
+RESOURCE_TYPE_LBICMPMONITOR = 'LbIcmpMonitor'
+
+ +
+
+RESOURCE_TYPE_LBPASSIVEMONITOR = 'LbPassiveMonitor'
+
+ +
+
+RESOURCE_TYPE_LBTCPMONITOR = 'LbTcpMonitor'
+
+ +
+
+RESOURCE_TYPE_LBUDPMONITOR = 'LbUdpMonitor'
+
+ +
+ +
+
+class com.vmware.nsx_policy.model_client.LbMonitorListResult(links=None, schema=None, self_=None, cursor=None, result_count=None, sort_ascending=None, sort_by=None, results=None)
+

Bases: vmware.vapi.bindings.struct.VapiStruct

+
+

Tip

+

The arguments are used to initialize data attributes with the same +names.

+
+
+ +
+
+class com.vmware.nsx_policy.model_client.LbPassiveMonitor(max_fails=None, timeout=None, links=None, schema=None, self_=None, revision=None, create_time=None, create_user=None, last_modified_time=None, last_modified_user=None, protection=None, system_owned=None, description=None, display_name=None, id=None, resource_type='LbPassiveMonitor', tags=None)
+

Bases: vmware.vapi.bindings.struct.VapiStruct

+
+

Tip

+

The arguments are used to initialize data attributes with the same +names.

+
+
+ +
+
+class com.vmware.nsx_policy.model_client.LbPersistenceCookieTime(cookie_max_idle=None, type='LbPersistenceCookieTime')
+

Bases: vmware.vapi.bindings.struct.VapiStruct

+
+

Tip

+

The arguments are used to initialize data attributes with the same +names.

+
+
+ +
+
+class com.vmware.nsx_policy.model_client.LbPersistenceProfile(links=None, schema=None, self_=None, revision=None, create_time=None, create_user=None, last_modified_time=None, last_modified_user=None, protection=None, system_owned=None, description=None, display_name=None, id=None, resource_type='LbPersistenceProfile', tags=None, persistence_shared=None)
+

Bases: vmware.vapi.bindings.struct.VapiStruct

+
+

Tip

+

The arguments are used to initialize data attributes with the same +names.

+
+
+
+RESOURCE_TYPE_LBCOOKIEPERSISTENCEPROFILE = 'LbCookiePersistenceProfile'
+
+ +
+
+RESOURCE_TYPE_LBSOURCEIPPERSISTENCEPROFILE = 'LbSourceIpPersistenceProfile'
+
+ +
+ +
+
+class com.vmware.nsx_policy.model_client.LbPersistenceProfileListResult(links=None, schema=None, self_=None, cursor=None, result_count=None, sort_ascending=None, sort_by=None, results=None)
+

Bases: vmware.vapi.bindings.struct.VapiStruct

+
+

Tip

+

The arguments are used to initialize data attributes with the same +names.

+
+
+ +
+
+class com.vmware.nsx_policy.model_client.LbPool(links=None, schema=None, self_=None, revision=None, create_time=None, create_user=None, last_modified_time=None, last_modified_user=None, protection=None, system_owned=None, description=None, display_name=None, id=None, resource_type=None, tags=None, active_monitor_ids=None, algorithm=None, member_group=None, members=None, min_active_members=None, passive_monitor_id=None, snat_translation=None, tcp_multiplexing_enabled=None, tcp_multiplexing_number=None)
+

Bases: vmware.vapi.bindings.struct.VapiStruct

+
+

Tip

+

The arguments are used to initialize data attributes with the same +names.

+
+
+
+ALGORITHM_IP_HASH = 'IP_HASH'
+
+ +
+
+ALGORITHM_LEAST_CONNECTION = 'LEAST_CONNECTION'
+
+ +
+
+ALGORITHM_ROUND_ROBIN = 'ROUND_ROBIN'
+
+ +
+
+ALGORITHM_WEIGHTED_LEAST_CONNECTION = 'WEIGHTED_LEAST_CONNECTION'
+
+ +
+
+ALGORITHM_WEIGHTED_ROUND_ROBIN = 'WEIGHTED_ROUND_ROBIN'
+
+ +
+ +
+
+class com.vmware.nsx_policy.model_client.LbPoolListResult(links=None, schema=None, self_=None, cursor=None, result_count=None, sort_ascending=None, sort_by=None, results=None)
+

Bases: vmware.vapi.bindings.struct.VapiStruct

+
+

Tip

+

The arguments are used to initialize data attributes with the same +names.

+
+
+ +
+
+class com.vmware.nsx_policy.model_client.LbPoolMemberStatistics(ip_address=None, port=None, statistics=None)
+

Bases: vmware.vapi.bindings.struct.VapiStruct

+
+

Tip

+

The arguments are used to initialize data attributes with the same +names.

+
+
+ +
+
+class com.vmware.nsx_policy.model_client.LbPoolMemberStatus(failure_cause=None, ip_address=None, last_check_time=None, last_state_change_time=None, port=None, status=None)
+

Bases: vmware.vapi.bindings.struct.VapiStruct

+
+

Tip

+

The arguments are used to initialize data attributes with the same +names.

+
+
+
+STATUS_DISABLED = 'DISABLED'
+
+ +
+
+STATUS_DOWN = 'DOWN'
+
+ +
+
+STATUS_GRACEFUL_DISABLED = 'GRACEFUL_DISABLED'
+
+ +
+
+STATUS_UP = 'UP'
+
+ +
+ +
+
+class com.vmware.nsx_policy.model_client.LbPoolStatistics(last_update_timestamp=None, members=None, pool_id=None, statistics=None)
+

Bases: vmware.vapi.bindings.struct.VapiStruct

+
+

Tip

+

The arguments are used to initialize data attributes with the same +names.

+
+
+ +
+
+class com.vmware.nsx_policy.model_client.LbPoolStatisticsListResult(links=None, schema=None, self_=None, cursor=None, result_count=None, sort_ascending=None, sort_by=None, results=None)
+

Bases: vmware.vapi.bindings.struct.VapiStruct

+
+

Tip

+

The arguments are used to initialize data attributes with the same +names.

+
+
+ +
+
+class com.vmware.nsx_policy.model_client.LbPoolStatus(last_update_timestamp=None, members=None, pool_id=None, status=None)
+

Bases: vmware.vapi.bindings.struct.VapiStruct

+
+

Tip

+

The arguments are used to initialize data attributes with the same +names.

+
+
+
+STATUS_DETACHED = 'DETACHED'
+
+ +
+
+STATUS_DOWN = 'DOWN'
+
+ +
+
+STATUS_PARTIALLY_UP = 'PARTIALLY_UP'
+
+ +
+
+STATUS_PRIMARY_DOWN = 'PRIMARY_DOWN'
+
+ +
+
+STATUS_UP = 'UP'
+
+ +
+ +
+
+class com.vmware.nsx_policy.model_client.LbPoolStatusListResult(links=None, schema=None, self_=None, cursor=None, result_count=None, sort_ascending=None, sort_by=None, results=None)
+

Bases: vmware.vapi.bindings.struct.VapiStruct

+
+

Tip

+

The arguments are used to initialize data attributes with the same +names.

+
+
+ +
+
+class com.vmware.nsx_policy.model_client.LbRule(links=None, schema=None, self_=None, revision=None, create_time=None, create_user=None, last_modified_time=None, last_modified_user=None, protection=None, system_owned=None, description=None, display_name=None, id=None, resource_type=None, tags=None, actions=None, match_conditions=None, match_strategy=None, phase=None)
+

Bases: vmware.vapi.bindings.struct.VapiStruct

+

Load balancer rules allow customization of load balancing behavior using +match/action rules. Currently, load balancer rules are supported for only +layer 7 virtual servers with application profile LbHttpProfile. Each +application rule consists of one or more match conditions and one or more +actions. Load balancer rules could be used by different load balancer +services.

+
+

Tip

+

The arguments are used to initialize data attributes with the same +names.

+
+
+
+MATCH_STRATEGY_ALL = 'ALL'
+
+ +
+
+MATCH_STRATEGY_ANY = 'ANY'
+
+ +
+
+PHASE_FORWARDING = 'HTTP_FORWARDING'
+
+ +
+
+PHASE_REQUEST_REWRITE = 'HTTP_REQUEST_REWRITE'
+
+ +
+
+PHASE_RESPONSE_REWRITE = 'HTTP_RESPONSE_REWRITE'
+
+ +
+ +
+
+class com.vmware.nsx_policy.model_client.LbRuleAction(type='LbRuleAction')
+

Bases: vmware.vapi.bindings.struct.VapiStruct

+

Load balancer rule actions are used to manipulate application traffic. +Currently load balancer rules can be used at three load balancer processing +phases. Each phase has its own supported type of actions. Supported actions +in HTTP_REQUST_REWRITE phase are: LbHttpRequestUriRewriteAction +LbHttpRequestHeaderRewriteAction Supported actions in HTTP_FORWARDING phase +are: LbHttpRejectAction LbHttpRedirectAction LbSelectPoolAction +LbSelectServerAction Supported action in HTTP_RESPONSE_REWRITE phase is: +LbHttpResponseHeaderRewriteAction If the match type of an LbRuleCondition +field is specified as REGEX and named capturing groups are used in the +specified regular expression. The groups can be used as variables in +LbRuleAction fields. For example, define a rule with +LbHttpRequestUriCondition as match condition and +LbHttpRequestUriRewriteAction as action. Set match_type field of +LbHttpRequestUriCondition to REGEX, and set uri field to +"/news/(?&lt;year&gt;\d+)/(?&lt;month&gt;\d+)/(?&lt;article&gt;.\*)". +Set uri field of LbHttpRequestUriRewriteAction to: +"/news/$year-$month/$article" In uri field of +LbHttpRequestUriCondition, the (?&lt;year&gt;\d+), +(?&lt;month&gt;\d+) and (?&lt;article&gt;.\*) are named capturing +groups, they define variables named $year, $month and $article +respectively. The defined variables are used in +LbHttpRequestUriRewriteAction. For a matched HTTP request with URI +"/news/2017/06/xyz.html", the substring "2017" is captured +in variable $year, "06" is captured in variable $month, and +"xyz.html" is captured in variable $article. The +LbHttpRequestUriRewriteAction will rewrite the URI to: +"/news/2017-06/xyz.html" A set of built-in variables can be used in +LbRuleAction as well. The name of built-in variables start with underscore, +the name of user defined variables is not allowed to start with underscore. +Following are some of the built-in variables: $_scheme: Reference the +scheme part of matched HTTP messages, could be "http" or +"https". $_host: Host of matched HTTP messages, for example +"www.example.com". $_server_port: Port part of URI, it is also the +port of the server which accepted a request. Default port is 80 for http +and 443 for https. $_uri: The URI path, for example +"/products/sample.html". $_request_uri: Full original request URI +with arguments, for example, "/products/sample.html?a=b&c=d". +$_args: URI arguments, for instance "a=b&c=d" $_is_args: +"?" if a request has URI arguments, or an empty string otherwise. +For the full list of built-in variables, please reference the NSX-T +Administrator’s Guide.

+
+

Tip

+

The arguments are used to initialize data attributes with the same +names.

+
+
+
+TYPE_LBHTTPREDIRECTACTION = 'LbHttpRedirectAction'
+
+ +
+
+TYPE_LBHTTPREJECTACTION = 'LbHttpRejectAction'
+
+ +
+
+TYPE_LBHTTPREQUESTHEADERREWRITEACTION = 'LbHttpRequestHeaderRewriteAction'
+
+ +
+
+TYPE_LBHTTPREQUESTURIREWRITEACTION = 'LbHttpRequestUriRewriteAction'
+
+ +
+
+TYPE_LBHTTPRESPONSEHEADERREWRITEACTION = 'LbHttpResponseHeaderRewriteAction'
+
+ +
+
+TYPE_LBSELECTPOOLACTION = 'LbSelectPoolAction'
+
+ +
+
+TYPE_LBSELECTSERVERACTION = 'LbSelectServerAction'
+
+ +
+ +
+
+class com.vmware.nsx_policy.model_client.LbRuleCondition(inverse=None, type='LbRuleCondition')
+

Bases: vmware.vapi.bindings.struct.VapiStruct

+

Match conditions are used to match application traffic passing through load +balancers. Multiple match conditions can be specified in one load balancer +rule, each match condition defines a criterion for application traffic. If +inverse field is set to true, the match result of the condition is +inverted. If more than one match condition is specified, match strategy +determines if all conditions should match or any one condition should match +for the load balancer rule to be considered a match. Currently only HTTP +messages are supported by load balancer rules. Each load balancer rule is +used at a specific phase of load balancer processing. Currently three +phases are supported, HTTP_REQUEST_REWRITE, HTTP_FORWARDING and +HTTP_RESPONSE_REWRITE. Each phase supports certain types of match +conditions, supported match conditions in HTTP_REQUEST_REWRITE phase are: +LbHttpRequestMethodCondition LbHttpRequestUriCondition +LbHttpRequestUriArgumentsCondition LbHttpRequestVersionCondition +LbHttpRequestHeaderCondition LbHttpRequestCookieCondition +LbHttpRequestBodyCondition LbTcpHeaderCondition LbIpHeaderCondition +Supported match conditions in HTTP_FORWARDING phase are: +LbHttpRequestMethodCondition LbHttpRequestUriCondition +LbHttpRequestVersionCondition LbHttpRequestHeaderCondition +LbHttpRequestCookieCondition LbHttpRequestBodyCondition +LbTcpHeaderCondition LbIpHeaderCondition Supported match condition in +HTTP_RESPONSE_REWRITE phase is: LbHttpResponseHeaderCondition +LbHttpRequestMethodCondition LbHttpRequestUriCondition +LbHttpRequestUriArgumentsCondition LbHttpRequestVersionCondition +LbHttpRequestHeaderCondition LbHttpRequestCookieCondition +LbTcpHeaderCondition LbIpHeaderCondition

+
+

Tip

+

The arguments are used to initialize data attributes with the same +names.

+
+
+
+TYPE_LBHTTPREQUESTBODYCONDITION = 'LbHttpRequestBodyCondition'
+
+ +
+
+TYPE_LBHTTPREQUESTCOOKIECONDITION = 'LbHttpRequestCookieCondition'
+
+ +
+
+TYPE_LBHTTPREQUESTHEADERCONDITION = 'LbHttpRequestHeaderCondition'
+
+ +
+
+TYPE_LBHTTPREQUESTMETHODCONDITION = 'LbHttpRequestMethodCondition'
+
+ +
+
+TYPE_LBHTTPREQUESTURIARGUMENTSCONDITION = 'LbHttpRequestUriArgumentsCondition'
+
+ +
+
+TYPE_LBHTTPREQUESTURICONDITION = 'LbHttpRequestUriCondition'
+
+ +
+
+TYPE_LBHTTPREQUESTVERSIONCONDITION = 'LbHttpRequestVersionCondition'
+
+ +
+
+TYPE_LBHTTPRESPONSEHEADERCONDITION = 'LbHttpResponseHeaderCondition'
+
+ +
+
+TYPE_LBIPHEADERCONDITION = 'LbIpHeaderCondition'
+
+ +
+
+TYPE_LBTCPHEADERCONDITION = 'LbTcpHeaderCondition'
+
+ +
+ +
+
+class com.vmware.nsx_policy.model_client.LbRuleListResult(links=None, schema=None, self_=None, cursor=None, result_count=None, sort_ascending=None, sort_by=None, results=None)
+

Bases: vmware.vapi.bindings.struct.VapiStruct

+
+

Tip

+

The arguments are used to initialize data attributes with the same +names.

+
+
+ +
+
+class com.vmware.nsx_policy.model_client.LbSelectPoolAction(pool_id=None, type='LbSelectPoolAction')
+

Bases: vmware.vapi.bindings.struct.VapiStruct

+

This action is used to select a pool for matched HTTP request messages. The +pool is specified by UUID. The matched HTTP request messages are forwarded +to the specified pool.

+
+

Tip

+

The arguments are used to initialize data attributes with the same +names.

+
+
+ +
+
+class com.vmware.nsx_policy.model_client.LbSelectServerAction(ip=None, pool_id=None, port=None, type='LbSelectServerAction')
+

Bases: vmware.vapi.bindings.struct.VapiStruct

+

This action is used to select a backend server for matched HTTP request +messages. Matched HTTP request messages are forwarded to the specified +backend server. The ip and port fields must be specified as single values, +IP range and port range are not supported.

+
+

Tip

+

The arguments are used to initialize data attributes with the same +names.

+
+
+ +
+
+class com.vmware.nsx_policy.model_client.LbServerSslProfile(links=None, schema=None, self_=None, revision=None, create_time=None, create_user=None, last_modified_time=None, last_modified_user=None, protection=None, system_owned=None, description=None, display_name=None, id=None, resource_type=None, tags=None, ciphers=None, is_secure=None, protocols=None, session_cache_enabled=None)
+

Bases: vmware.vapi.bindings.struct.VapiStruct

+
+

Tip

+

The arguments are used to initialize data attributes with the same +names.

+
+
+
+CIPHERS_ECDHE_ECDSA_WITH_AES_128_CBC_SHA = 'TLS_ECDHE_ECDSA_WITH_AES_128_CBC_SHA'
+
+ +
+
+CIPHERS_ECDHE_ECDSA_WITH_AES_128_CBC_SHA256 = 'TLS_ECDHE_ECDSA_WITH_AES_128_CBC_SHA256'
+
+ +
+
+CIPHERS_ECDHE_ECDSA_WITH_AES_128_GCM_SHA256 = 'TLS_ECDHE_ECDSA_WITH_AES_128_GCM_SHA256'
+
+ +
+
+CIPHERS_ECDHE_ECDSA_WITH_AES_256_CBC_SHA = 'TLS_ECDHE_ECDSA_WITH_AES_256_CBC_SHA'
+
+ +
+
+CIPHERS_ECDHE_ECDSA_WITH_AES_256_CBC_SHA384 = 'TLS_ECDHE_ECDSA_WITH_AES_256_CBC_SHA384'
+
+ +
+
+CIPHERS_ECDHE_ECDSA_WITH_AES_256_GCM_SHA384 = 'TLS_ECDHE_ECDSA_WITH_AES_256_GCM_SHA384'
+
+ +
+
+CIPHERS_ECDHE_RSA_WITH_AES_128_CBC_SHA = 'TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA'
+
+ +
+
+CIPHERS_ECDHE_RSA_WITH_AES_128_CBC_SHA256 = 'TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA256'
+
+ +
+
+CIPHERS_ECDHE_RSA_WITH_AES_128_GCM_SHA256 = 'TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256'
+
+ +
+
+CIPHERS_ECDHE_RSA_WITH_AES_256_CBC_SHA = 'TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA'
+
+ +
+
+CIPHERS_ECDHE_RSA_WITH_AES_256_CBC_SHA384 = 'TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA384'
+
+ +
+
+CIPHERS_ECDHE_RSA_WITH_AES_256_GCM_SHA384 = 'TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384'
+
+ +
+
+CIPHERS_ECDH_ECDSA_WITH_AES_128_CBC_SHA = 'TLS_ECDH_ECDSA_WITH_AES_128_CBC_SHA'
+
+ +
+
+CIPHERS_ECDH_ECDSA_WITH_AES_128_CBC_SHA256 = 'TLS_ECDH_ECDSA_WITH_AES_128_CBC_SHA256'
+
+ +
+
+CIPHERS_ECDH_ECDSA_WITH_AES_128_GCM_SHA256 = 'TLS_ECDH_ECDSA_WITH_AES_128_GCM_SHA256'
+
+ +
+
+CIPHERS_ECDH_ECDSA_WITH_AES_256_CBC_SHA = 'TLS_ECDH_ECDSA_WITH_AES_256_CBC_SHA'
+
+ +
+
+CIPHERS_ECDH_ECDSA_WITH_AES_256_CBC_SHA384 = 'TLS_ECDH_ECDSA_WITH_AES_256_CBC_SHA384'
+
+ +
+
+CIPHERS_ECDH_ECDSA_WITH_AES_256_GCM_SHA384 = 'TLS_ECDH_ECDSA_WITH_AES_256_GCM_SHA384'
+
+ +
+
+CIPHERS_ECDH_RSA_WITH_AES_128_CBC_SHA = 'TLS_ECDH_RSA_WITH_AES_128_CBC_SHA'
+
+ +
+
+CIPHERS_ECDH_RSA_WITH_AES_128_CBC_SHA256 = 'TLS_ECDH_RSA_WITH_AES_128_CBC_SHA256'
+
+ +
+
+CIPHERS_ECDH_RSA_WITH_AES_128_GCM_SHA256 = 'TLS_ECDH_RSA_WITH_AES_128_GCM_SHA256'
+
+ +
+
+CIPHERS_ECDH_RSA_WITH_AES_256_CBC_SHA = 'TLS_ECDH_RSA_WITH_AES_256_CBC_SHA'
+
+ +
+
+CIPHERS_ECDH_RSA_WITH_AES_256_CBC_SHA384 = 'TLS_ECDH_RSA_WITH_AES_256_CBC_SHA384'
+
+ +
+
+CIPHERS_ECDH_RSA_WITH_AES_256_GCM_SHA384 = 'TLS_ECDH_RSA_WITH_AES_256_GCM_SHA384'
+
+ +
+
+CIPHERS_RSA_WITH_3DES_EDE_CBC_SHA = 'TLS_RSA_WITH_3DES_EDE_CBC_SHA'
+
+ +
+
+CIPHERS_RSA_WITH_AES_128_CBC_SHA = 'TLS_RSA_WITH_AES_128_CBC_SHA'
+
+ +
+
+CIPHERS_RSA_WITH_AES_128_CBC_SHA256 = 'TLS_RSA_WITH_AES_128_CBC_SHA256'
+
+ +
+
+CIPHERS_RSA_WITH_AES_128_GCM_SHA256 = 'TLS_RSA_WITH_AES_128_GCM_SHA256'
+
+ +
+
+CIPHERS_RSA_WITH_AES_256_CBC_SHA = 'TLS_RSA_WITH_AES_256_CBC_SHA'
+
+ +
+
+CIPHERS_RSA_WITH_AES_256_CBC_SHA256 = 'TLS_RSA_WITH_AES_256_CBC_SHA256'
+
+ +
+
+CIPHERS_RSA_WITH_AES_256_GCM_SHA384 = 'TLS_RSA_WITH_AES_256_GCM_SHA384'
+
+ +
+
+PROTOCOLS_SSL_V2 = 'SSL_V2'
+
+ +
+
+PROTOCOLS_SSL_V3 = 'SSL_V3'
+
+ +
+
+PROTOCOLS_TLS_V1 = 'TLS_V1'
+
+ +
+
+PROTOCOLS_TLS_V1_1 = 'TLS_V1_1'
+
+ +
+
+PROTOCOLS_TLS_V1_2 = 'TLS_V1_2'
+
+ +
+ +
+
+class com.vmware.nsx_policy.model_client.LbServerSslProfileListResult(links=None, schema=None, self_=None, cursor=None, result_count=None, sort_ascending=None, sort_by=None, results=None)
+

Bases: vmware.vapi.bindings.struct.VapiStruct

+
+

Tip

+

The arguments are used to initialize data attributes with the same +names.

+
+
+ +
+
+class com.vmware.nsx_policy.model_client.LbService(links=None, schema=None, self_=None, revision=None, create_time=None, create_user=None, last_modified_time=None, last_modified_user=None, protection=None, system_owned=None, description=None, display_name=None, id=None, resource_type=None, tags=None, access_log_enabled=None, attachment=None, enabled=None, error_log_level=None, size=None, virtual_server_ids=None)
+

Bases: vmware.vapi.bindings.struct.VapiStruct

+
+

Tip

+

The arguments are used to initialize data attributes with the same +names.

+
+
+
+ERROR_LOG_LEVEL_ALERT = 'ALERT'
+
+ +
+
+ERROR_LOG_LEVEL_CRITICAL = 'CRITICAL'
+
+ +
+
+ERROR_LOG_LEVEL_DEBUG = 'DEBUG'
+
+ +
+
+ERROR_LOG_LEVEL_EMERGENCY = 'EMERGENCY'
+
+ +
+
+ERROR_LOG_LEVEL_ERROR = 'ERROR'
+
+ +
+
+ERROR_LOG_LEVEL_INFO = 'INFO'
+
+ +
+
+ERROR_LOG_LEVEL_WARNING = 'WARNING'
+
+ +
+
+SIZE_LARGE = 'LARGE'
+
+ +
+
+SIZE_MEDIUM = 'MEDIUM'
+
+ +
+
+SIZE_SMALL = 'SMALL'
+
+ +
+ +
+
+class com.vmware.nsx_policy.model_client.LbServiceListResult(links=None, schema=None, self_=None, cursor=None, result_count=None, sort_ascending=None, sort_by=None, results=None)
+

Bases: vmware.vapi.bindings.struct.VapiStruct

+
+

Tip

+

The arguments are used to initialize data attributes with the same +names.

+
+
+ +
+
+class com.vmware.nsx_policy.model_client.LbSessionCookieTime(cookie_max_idle=None, cookie_max_life=None, type='LbSessionCookieTime')
+

Bases: vmware.vapi.bindings.struct.VapiStruct

+
+

Tip

+

The arguments are used to initialize data attributes with the same +names.

+
+
+ +
+
+class com.vmware.nsx_policy.model_client.LbSnatAutoMap(port_overload=None, type='LbSnatAutoMap')
+

Bases: vmware.vapi.bindings.struct.VapiStruct

+
+

Tip

+

The arguments are used to initialize data attributes with the same +names.

+
+
+ +
+
+class com.vmware.nsx_policy.model_client.LbSnatIpElement(ip_address=None, prefix_length=None)
+

Bases: vmware.vapi.bindings.struct.VapiStruct

+
+

Tip

+

The arguments are used to initialize data attributes with the same +names.

+
+
+ +
+
+class com.vmware.nsx_policy.model_client.LbSnatIpPool(ip_addresses=None, port_overload=None, type='LbSnatIpPool')
+

Bases: vmware.vapi.bindings.struct.VapiStruct

+
+

Tip

+

The arguments are used to initialize data attributes with the same +names.

+
+
+ +
+
+class com.vmware.nsx_policy.model_client.LbSnatTranslation(port_overload=None, type='LbSnatTranslation')
+

Bases: vmware.vapi.bindings.struct.VapiStruct

+
+

Tip

+

The arguments are used to initialize data attributes with the same +names.

+
+
+
+TYPE_LBSNATAUTOMAP = 'LbSnatAutoMap'
+
+ +
+
+TYPE_LBSNATIPPOOL = 'LbSnatIpPool'
+
+ +
+ +
+
+class com.vmware.nsx_policy.model_client.LbSourceIpPersistenceProfile(ha_persistence_mirroring_enabled=None, purge=None, timeout=None, links=None, schema=None, self_=None, revision=None, create_time=None, create_user=None, last_modified_time=None, last_modified_user=None, protection=None, system_owned=None, description=None, display_name=None, id=None, resource_type='LbSourceIpPersistenceProfile', tags=None, persistence_shared=None)
+

Bases: vmware.vapi.bindings.struct.VapiStruct

+
+

Tip

+

The arguments are used to initialize data attributes with the same +names.

+
+
+
+PURGE_FULL = 'FULL'
+
+ +
+
+PURGE_NO_PURGE = 'NO_PURGE'
+
+ +
+ +
+
+class com.vmware.nsx_policy.model_client.LbSslCipherAndProtocolListResult(links=None, schema=None, self_=None, cursor=None, result_count=None, sort_ascending=None, sort_by=None, ciphers=None, protocols=None)
+

Bases: vmware.vapi.bindings.struct.VapiStruct

+
+

Tip

+

The arguments are used to initialize data attributes with the same +names.

+
+
+ +
+
+class com.vmware.nsx_policy.model_client.LbSslCipherInfo(cipher=None, is_default=None, is_secure=None)
+

Bases: vmware.vapi.bindings.struct.VapiStruct

+

SSL cipher

+
+

Tip

+

The arguments are used to initialize data attributes with the same +names.

+
+
+
+CIPHER_ECDHE_ECDSA_WITH_AES_128_CBC_SHA = 'TLS_ECDHE_ECDSA_WITH_AES_128_CBC_SHA'
+
+ +
+
+CIPHER_ECDHE_ECDSA_WITH_AES_128_CBC_SHA256 = 'TLS_ECDHE_ECDSA_WITH_AES_128_CBC_SHA256'
+
+ +
+
+CIPHER_ECDHE_ECDSA_WITH_AES_128_GCM_SHA256 = 'TLS_ECDHE_ECDSA_WITH_AES_128_GCM_SHA256'
+
+ +
+
+CIPHER_ECDHE_ECDSA_WITH_AES_256_CBC_SHA = 'TLS_ECDHE_ECDSA_WITH_AES_256_CBC_SHA'
+
+ +
+
+CIPHER_ECDHE_ECDSA_WITH_AES_256_CBC_SHA384 = 'TLS_ECDHE_ECDSA_WITH_AES_256_CBC_SHA384'
+
+ +
+
+CIPHER_ECDHE_ECDSA_WITH_AES_256_GCM_SHA384 = 'TLS_ECDHE_ECDSA_WITH_AES_256_GCM_SHA384'
+
+ +
+
+CIPHER_ECDHE_RSA_WITH_AES_128_CBC_SHA = 'TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA'
+
+ +
+
+CIPHER_ECDHE_RSA_WITH_AES_128_CBC_SHA256 = 'TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA256'
+
+ +
+
+CIPHER_ECDHE_RSA_WITH_AES_128_GCM_SHA256 = 'TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256'
+
+ +
+
+CIPHER_ECDHE_RSA_WITH_AES_256_CBC_SHA = 'TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA'
+
+ +
+
+CIPHER_ECDHE_RSA_WITH_AES_256_CBC_SHA384 = 'TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA384'
+
+ +
+
+CIPHER_ECDHE_RSA_WITH_AES_256_GCM_SHA384 = 'TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384'
+
+ +
+
+CIPHER_ECDH_ECDSA_WITH_AES_128_CBC_SHA = 'TLS_ECDH_ECDSA_WITH_AES_128_CBC_SHA'
+
+ +
+
+CIPHER_ECDH_ECDSA_WITH_AES_128_CBC_SHA256 = 'TLS_ECDH_ECDSA_WITH_AES_128_CBC_SHA256'
+
+ +
+
+CIPHER_ECDH_ECDSA_WITH_AES_128_GCM_SHA256 = 'TLS_ECDH_ECDSA_WITH_AES_128_GCM_SHA256'
+
+ +
+
+CIPHER_ECDH_ECDSA_WITH_AES_256_CBC_SHA = 'TLS_ECDH_ECDSA_WITH_AES_256_CBC_SHA'
+
+ +
+
+CIPHER_ECDH_ECDSA_WITH_AES_256_CBC_SHA384 = 'TLS_ECDH_ECDSA_WITH_AES_256_CBC_SHA384'
+
+ +
+
+CIPHER_ECDH_ECDSA_WITH_AES_256_GCM_SHA384 = 'TLS_ECDH_ECDSA_WITH_AES_256_GCM_SHA384'
+
+ +
+
+CIPHER_ECDH_RSA_WITH_AES_128_CBC_SHA = 'TLS_ECDH_RSA_WITH_AES_128_CBC_SHA'
+
+ +
+
+CIPHER_ECDH_RSA_WITH_AES_128_CBC_SHA256 = 'TLS_ECDH_RSA_WITH_AES_128_CBC_SHA256'
+
+ +
+
+CIPHER_ECDH_RSA_WITH_AES_128_GCM_SHA256 = 'TLS_ECDH_RSA_WITH_AES_128_GCM_SHA256'
+
+ +
+
+CIPHER_ECDH_RSA_WITH_AES_256_CBC_SHA = 'TLS_ECDH_RSA_WITH_AES_256_CBC_SHA'
+
+ +
+
+CIPHER_ECDH_RSA_WITH_AES_256_CBC_SHA384 = 'TLS_ECDH_RSA_WITH_AES_256_CBC_SHA384'
+
+ +
+
+CIPHER_ECDH_RSA_WITH_AES_256_GCM_SHA384 = 'TLS_ECDH_RSA_WITH_AES_256_GCM_SHA384'
+
+ +
+
+CIPHER_RSA_WITH_3DES_EDE_CBC_SHA = 'TLS_RSA_WITH_3DES_EDE_CBC_SHA'
+
+ +
+
+CIPHER_RSA_WITH_AES_128_CBC_SHA = 'TLS_RSA_WITH_AES_128_CBC_SHA'
+
+ +
+
+CIPHER_RSA_WITH_AES_128_CBC_SHA256 = 'TLS_RSA_WITH_AES_128_CBC_SHA256'
+
+ +
+
+CIPHER_RSA_WITH_AES_128_GCM_SHA256 = 'TLS_RSA_WITH_AES_128_GCM_SHA256'
+
+ +
+
+CIPHER_RSA_WITH_AES_256_CBC_SHA = 'TLS_RSA_WITH_AES_256_CBC_SHA'
+
+ +
+
+CIPHER_RSA_WITH_AES_256_CBC_SHA256 = 'TLS_RSA_WITH_AES_256_CBC_SHA256'
+
+ +
+
+CIPHER_RSA_WITH_AES_256_GCM_SHA384 = 'TLS_RSA_WITH_AES_256_GCM_SHA384'
+
+ +
+ +
+
+class com.vmware.nsx_policy.model_client.LbSslProfile(links=None, schema=None, self_=None, revision=None, create_time=None, create_user=None, last_modified_time=None, last_modified_user=None, protection=None, system_owned=None, description=None, display_name=None, id=None, resource_type=None, tags=None)
+

Bases: vmware.vapi.bindings.struct.VapiStruct

+

Load balancer abstract SSL profile

+
+

Tip

+

The arguments are used to initialize data attributes with the same +names.

+
+
+ +
+
+class com.vmware.nsx_policy.model_client.LbSslProfileListResult(links=None, schema=None, self_=None, cursor=None, result_count=None, sort_ascending=None, sort_by=None, results=None)
+

Bases: vmware.vapi.bindings.struct.VapiStruct

+
+

Tip

+

The arguments are used to initialize data attributes with the same +names.

+
+
+ +
+
+class com.vmware.nsx_policy.model_client.LbSslProtocolInfo(is_default=None, is_secure=None, protocol=None)
+

Bases: vmware.vapi.bindings.struct.VapiStruct

+

SSL protocol

+
+

Tip

+

The arguments are used to initialize data attributes with the same +names.

+
+
+
+PROTOCOL_SSL_V2 = 'SSL_V2'
+
+ +
+
+PROTOCOL_SSL_V3 = 'SSL_V3'
+
+ +
+
+PROTOCOL_TLS_V1 = 'TLS_V1'
+
+ +
+
+PROTOCOL_TLS_V1_1 = 'TLS_V1_1'
+
+ +
+
+PROTOCOL_TLS_V1_2 = 'TLS_V1_2'
+
+ +
+ +
+
+class com.vmware.nsx_policy.model_client.LbStatisticsCounter(bytes_in=None, bytes_in_rate=None, bytes_out=None, bytes_out_rate=None, current_session_rate=None, current_sessions=None, http_request_rate=None, http_requests=None, max_sessions=None, packets_in=None, packets_in_rate=None, packets_out=None, packets_out_rate=None, source_ip_persistence_entry_size=None, total_sessions=None)
+

Bases: vmware.vapi.bindings.struct.VapiStruct

+
+

Tip

+

The arguments are used to initialize data attributes with the same +names.

+
+
+ +
+
+class com.vmware.nsx_policy.model_client.LbTcpHeaderCondition(source_port=None, inverse=None, type='LbTcpHeaderCondition')
+

Bases: vmware.vapi.bindings.struct.VapiStruct

+

This condition is used to match TCP header fields of HTTP messages. +Currently, only the TCP source port is supported. Ports can be expressed as +a single port number like 80, or a port range like 1024-1030.

+
+

Tip

+

The arguments are used to initialize data attributes with the same +names.

+
+
+ +
+
+class com.vmware.nsx_policy.model_client.LbTcpMonitor(receive=None, send=None, fall_count=None, interval=None, monitor_port=None, rise_count=None, timeout=None, links=None, schema=None, self_=None, revision=None, create_time=None, create_user=None, last_modified_time=None, last_modified_user=None, protection=None, system_owned=None, description=None, display_name=None, id=None, resource_type=None, tags=None)
+

Bases: vmware.vapi.bindings.struct.VapiStruct

+
+

Tip

+

The arguments are used to initialize data attributes with the same +names.

+
+
+ +
+
+class com.vmware.nsx_policy.model_client.LbTcpProfile(links=None, schema=None, self_=None, revision=None, create_time=None, create_user=None, last_modified_time=None, last_modified_user=None, protection=None, system_owned=None, description=None, display_name=None, id=None, resource_type=None, tags=None, fin_wait2_timeout=None, max_syn_retransmissions=None, nagle_algorithm_enabled=None, receive_window_size=None, transmit_window_size=None)
+

Bases: vmware.vapi.bindings.struct.VapiStruct

+

TCP profile allows customization of TCP stack behavior for each +application. As TCP connections are terminated (or initiated) on the load +balancer only for L7 virtual servers, TCP profiles are applicable only to +them. As the desired TCP characteristics (e.g. Rx/Tx buffers) may be +different for client (typically on WAN) and server (typically on LAN) +sides, two separate profiles can be bound to virtual server, one for +client-side (LbVirtualServer.client_tcp_profile_id) and another for +server-side (LbVirtualServer.server_tcp_profile_id).

+
+

Tip

+

The arguments are used to initialize data attributes with the same +names.

+
+
+ +
+
+class com.vmware.nsx_policy.model_client.LbTcpProfileListResult(links=None, schema=None, self_=None, cursor=None, result_count=None, sort_ascending=None, sort_by=None, results=None)
+

Bases: vmware.vapi.bindings.struct.VapiStruct

+
+

Tip

+

The arguments are used to initialize data attributes with the same +names.

+
+
+ +
+
+class com.vmware.nsx_policy.model_client.LbUdpMonitor(receive=None, send=None, fall_count=None, interval=None, monitor_port=None, rise_count=None, timeout=None, links=None, schema=None, self_=None, revision=None, create_time=None, create_user=None, last_modified_time=None, last_modified_user=None, protection=None, system_owned=None, description=None, display_name=None, id=None, resource_type=None, tags=None)
+

Bases: vmware.vapi.bindings.struct.VapiStruct

+
+

Tip

+

The arguments are used to initialize data attributes with the same +names.

+
+
+ +
+
+class com.vmware.nsx_policy.model_client.LbVirtualServer(links=None, schema=None, self_=None, revision=None, create_time=None, create_user=None, last_modified_time=None, last_modified_user=None, protection=None, system_owned=None, description=None, display_name=None, id=None, resource_type=None, tags=None, access_log_enabled=None, application_profile_id=None, client_ssl_profile_binding=None, client_tcp_profile_id=None, default_pool_member_port=None, default_pool_member_ports=None, enabled=None, ip_address=None, ip_protocol=None, max_concurrent_connections=None, max_new_connection_rate=None, persistence_profile_id=None, pool_id=None, port=None, ports=None, rule_ids=None, server_ssl_profile_binding=None, server_tcp_profile_id=None, sorry_pool_id=None)
+

Bases: vmware.vapi.bindings.struct.VapiStruct

+
+

Tip

+

The arguments are used to initialize data attributes with the same +names.

+
+
+
+IP_PROTOCOL_TCP = 'TCP'
+
+ +
+
+IP_PROTOCOL_UDP = 'UDP'
+
+ +
+ +
+
+class com.vmware.nsx_policy.model_client.LbVirtualServerListResult(links=None, schema=None, self_=None, cursor=None, result_count=None, sort_ascending=None, sort_by=None, results=None)
+

Bases: vmware.vapi.bindings.struct.VapiStruct

+
+

Tip

+

The arguments are used to initialize data attributes with the same +names.

+
+
+ +
+
+class com.vmware.nsx_policy.model_client.LbVirtualServerStatistics(last_update_timestamp=None, statistics=None, virtual_server_id=None)
+

Bases: vmware.vapi.bindings.struct.VapiStruct

+
+

Tip

+

The arguments are used to initialize data attributes with the same +names.

+
+
+ +
+
+class com.vmware.nsx_policy.model_client.LbVirtualServerStatisticsListResult(links=None, schema=None, self_=None, cursor=None, result_count=None, sort_ascending=None, sort_by=None, results=None)
+

Bases: vmware.vapi.bindings.struct.VapiStruct

+
+

Tip

+

The arguments are used to initialize data attributes with the same +names.

+
+
+ +
+
+class com.vmware.nsx_policy.model_client.LbVirtualServerStatus(last_update_timestamp=None, status=None, virtual_server_id=None)
+

Bases: vmware.vapi.bindings.struct.VapiStruct

+
+

Tip

+

The arguments are used to initialize data attributes with the same +names.

+
+
+
+STATUS_DETACHED = 'DETACHED'
+
+ +
+
+STATUS_DISABLED = 'DISABLED'
+
+ +
+
+STATUS_DOWN = 'DOWN'
+
+ +
+
+STATUS_PARTIALLY_UP = 'PARTIALLY_UP'
+
+ +
+
+STATUS_PRIMARY_DOWN = 'PRIMARY_DOWN'
+
+ +
+
+STATUS_UP = 'UP'
+
+ +
+ +
+
+class com.vmware.nsx_policy.model_client.LbVirtualServerStatusListResult(links=None, schema=None, self_=None, cursor=None, result_count=None, sort_ascending=None, sort_by=None, results=None)
+

Bases: vmware.vapi.bindings.struct.VapiStruct

+
+

Tip

+

The arguments are used to initialize data attributes with the same +names.

+
+
+ +
+
+class com.vmware.nsx_policy.model_client.License(links=None, schema=None, self_=None, capacity_type=None, description=None, expiry=None, features=None, is_eval=None, is_expired=None, is_mh=None, license_key=None, product_name=None, product_version=None, quantity=None)
+

Bases: vmware.vapi.bindings.struct.VapiStruct

+

license properties

+
+

Tip

+

The arguments are used to initialize data attributes with the same +names.

+
+
+
+CAPACITY_TYPE_CPU = 'CPU'
+
+ +
+
+CAPACITY_TYPE_USER = 'USER'
+
+ +
+
+CAPACITY_TYPE_VM = 'VM'
+
+ +
+ +
+
+class com.vmware.nsx_policy.model_client.LicensesListResult(links=None, schema=None, self_=None, cursor=None, result_count=None, sort_ascending=None, sort_by=None, results=None)
+

Bases: vmware.vapi.bindings.struct.VapiStruct

+

Licenses queries result

+
+

Tip

+

The arguments are used to initialize data attributes with the same +names.

+
+
+ +
+
+class com.vmware.nsx_policy.model_client.ListResult(links=None, schema=None, self_=None, cursor=None, result_count=None, sort_ascending=None, sort_by=None)
+

Bases: vmware.vapi.bindings.struct.VapiStruct

+

Base class for list results from collections

+
+

Tip

+

The arguments are used to initialize data attributes with the same +names.

+
+
+ +
+
+class com.vmware.nsx_policy.model_client.LldpHostSwitchProfile(send_enabled=None, links=None, schema=None, self_=None, revision=None, create_time=None, create_user=None, last_modified_time=None, last_modified_user=None, protection=None, system_owned=None, description=None, display_name=None, id=None, resource_type='LldpHostSwitchProfile', tags=None, required_capabilities=None)
+

Bases: vmware.vapi.bindings.struct.VapiStruct

+

Host Switch for LLDP

+
+

Tip

+

The arguments are used to initialize data attributes with the same +names.

+
+
+ +
+
+class com.vmware.nsx_policy.model_client.LogicalDhcpServer(links=None, schema=None, self_=None, revision=None, create_time=None, create_user=None, last_modified_time=None, last_modified_user=None, protection=None, system_owned=None, description=None, display_name=None, id=None, resource_type=None, tags=None, attached_logical_port_id=None, dhcp_profile_id=None, ipv4_dhcp_server=None)
+

Bases: vmware.vapi.bindings.struct.VapiStruct

+
+

Tip

+

The arguments are used to initialize data attributes with the same +names.

+
+
+ +
+
+class com.vmware.nsx_policy.model_client.LogicalDhcpServerListResult(links=None, schema=None, self_=None, cursor=None, result_count=None, sort_ascending=None, sort_by=None, results=None)
+

Bases: vmware.vapi.bindings.struct.VapiStruct

+
+

Tip

+

The arguments are used to initialize data attributes with the same +names.

+
+
+ +
+
+class com.vmware.nsx_policy.model_client.LogicalPort(links=None, schema=None, self_=None, revision=None, create_time=None, create_user=None, last_modified_time=None, last_modified_user=None, protection=None, system_owned=None, description=None, display_name=None, id=None, resource_type=None, tags=None, address_bindings=None, admin_state=None, attachment=None, extra_configs=None, init_state=None, logical_switch_id=None, switching_profile_ids=None)
+

Bases: vmware.vapi.bindings.struct.VapiStruct

+
+

Tip

+

The arguments are used to initialize data attributes with the same +names.

+
+
+
+ADMIN_STATE_DOWN = 'DOWN'
+
+ +
+
+ADMIN_STATE_UP = 'UP'
+
+ +
+
+INIT_STATE_VLAN = 'UNBLOCKED_VLAN'
+
+ +
+ +
+
+class com.vmware.nsx_policy.model_client.LogicalPortAttachment(attachment_type=None, context=None, id=None)
+

Bases: vmware.vapi.bindings.struct.VapiStruct

+

Logical port attachment

+
+

Tip

+

The arguments are used to initialize data attributes with the same +names.

+
+
+
+ATTACHMENT_TYPE_BRIDGEENDPOINT = 'BRIDGEENDPOINT'
+
+ +
+
+ATTACHMENT_TYPE_DHCP_SERVICE = 'DHCP_SERVICE'
+
+ +
+
+ATTACHMENT_TYPE_L2VPN_SESSION = 'L2VPN_SESSION'
+
+ +
+
+ATTACHMENT_TYPE_LOGICALROUTER = 'LOGICALROUTER'
+
+ +
+
+ATTACHMENT_TYPE_METADATA_PROXY = 'METADATA_PROXY'
+
+ +
+
+ATTACHMENT_TYPE_VIF = 'VIF'
+
+ +
+ +
+
+class com.vmware.nsx_policy.model_client.LogicalPortListResult(links=None, schema=None, self_=None, cursor=None, result_count=None, sort_ascending=None, sort_by=None, results=None)
+

Bases: vmware.vapi.bindings.struct.VapiStruct

+

Logical port queries result

+
+

Tip

+

The arguments are used to initialize data attributes with the same +names.

+
+
+ +
+
+class com.vmware.nsx_policy.model_client.LogicalPortMacAddressCsvListResult(file_name=None, last_update_timestamp=None, results=None)
+

Bases: vmware.vapi.bindings.struct.VapiStruct

+
+

Tip

+

The arguments are used to initialize data attributes with the same +names.

+
+
+ +
+
+class com.vmware.nsx_policy.model_client.LogicalPortMacAddressListResult(links=None, schema=None, self_=None, cursor=None, result_count=None, sort_ascending=None, sort_by=None, last_update_timestamp=None, logical_port_id=None, results=None, transport_node_id=None)
+

Bases: vmware.vapi.bindings.struct.VapiStruct

+
+

Tip

+

The arguments are used to initialize data attributes with the same +names.

+
+
+ +
+
+class com.vmware.nsx_policy.model_client.LogicalPortMacTableCsvEntry(mac_address=None, mac_type=None)
+

Bases: vmware.vapi.bindings.struct.VapiStruct

+
+

Tip

+

The arguments are used to initialize data attributes with the same +names.

+
+
+
+MAC_TYPE_LEARNED = 'LEARNED'
+
+ +
+
+MAC_TYPE_STATIC = 'STATIC'
+
+ +
+ +
+
+class com.vmware.nsx_policy.model_client.LogicalPortMacTableEntry(mac_address=None, mac_type=None)
+

Bases: vmware.vapi.bindings.struct.VapiStruct

+
+

Tip

+

The arguments are used to initialize data attributes with the same +names.

+
+
+
+MAC_TYPE_LEARNED = 'LEARNED'
+
+ +
+
+MAC_TYPE_STATIC = 'STATIC'
+
+ +
+ +
+
+class com.vmware.nsx_policy.model_client.LogicalPortMirrorDestination(port_ids=None, resource_type='LogicalPortMirrorDestination')
+

Bases: vmware.vapi.bindings.struct.VapiStruct

+
+

Tip

+

The arguments are used to initialize data attributes with the same +names.

+
+
+ +
+
+class com.vmware.nsx_policy.model_client.LogicalPortMirrorSource(port_ids=None, resource_type='LogicalPortMirrorSource')
+

Bases: vmware.vapi.bindings.struct.VapiStruct

+
+

Tip

+

The arguments are used to initialize data attributes with the same +names.

+
+
+ +
+
+class com.vmware.nsx_policy.model_client.LogicalRouter(links=None, schema=None, self_=None, revision=None, create_time=None, create_user=None, last_modified_time=None, last_modified_user=None, protection=None, system_owned=None, description=None, display_name=None, id=None, resource_type=None, tags=None, advanced_config=None, edge_cluster_id=None, failover_mode=None, firewall_sections=None, high_availability_mode=None, preferred_edge_cluster_member_index=None, router_type=None)
+

Bases: vmware.vapi.bindings.struct.VapiStruct

+
+

Tip

+

The arguments are used to initialize data attributes with the same +names.

+
+
+
+FAILOVER_MODE_NON_PREEMPTIVE = 'NON_PREEMPTIVE'
+
+ +
+
+FAILOVER_MODE_PREEMPTIVE = 'PREEMPTIVE'
+
+ +
+
+HIGH_AVAILABILITY_MODE_ACTIVE = 'ACTIVE_ACTIVE'
+
+ +
+
+HIGH_AVAILABILITY_MODE_STANDBY = 'ACTIVE_STANDBY'
+
+ +
+
+ROUTER_TYPE_TIER0 = 'TIER0'
+
+ +
+
+ROUTER_TYPE_TIER1 = 'TIER1'
+
+ +
+ +
+
+class com.vmware.nsx_policy.model_client.LogicalRouterCentralizedServicePort(enable_netx=None, linked_logical_switch_port_id=None, subnets=None, urpf_mode=None, links=None, schema=None, self_=None, revision=None, create_time=None, create_user=None, last_modified_time=None, last_modified_user=None, protection=None, system_owned=None, description=None, display_name=None, id=None, resource_type='LogicalRouterCentralizedServicePort', tags=None, logical_router_id=None, service_bindings=None)
+

Bases: vmware.vapi.bindings.struct.VapiStruct

+

This port can be configured on both TIER0 and TIER1 logical router. Port +can be connected to VLAN or overlay logical switch. Unlike downlink port it +does not participate in distributed routing and hosted on all edge cluster +members associated with logical router. Stateful services can be applied on +this port.

+
+

Tip

+

The arguments are used to initialize data attributes with the same +names.

+
+
+
+URPF_MODE_NONE = 'NONE'
+
+ +
+
+URPF_MODE_STRICT = 'STRICT'
+
+ +
+ +
+
+class com.vmware.nsx_policy.model_client.LogicalRouterConfig(external_transit_networks=None, ha_vip_configs=None, internal_transit_network=None, transport_zone_id=None)
+

Bases: vmware.vapi.bindings.struct.VapiStruct

+
+

Tip

+

The arguments are used to initialize data attributes with the same +names.

+
+
+ +
+
+class com.vmware.nsx_policy.model_client.LogicalRouterDeleteRequestParameters(force=None)
+

Bases: vmware.vapi.bindings.struct.VapiStruct

+

LogicalRouter delete request parameters

+
+

Tip

+

The arguments are used to initialize data attributes with the same +names.

+
+
+ +
+
+class com.vmware.nsx_policy.model_client.LogicalRouterDownLinkPort(linked_logical_switch_port_id=None, mac_address=None, subnets=None, urpf_mode=None, links=None, schema=None, self_=None, revision=None, create_time=None, create_user=None, last_modified_time=None, last_modified_user=None, protection=None, system_owned=None, description=None, display_name=None, id=None, resource_type='LogicalRouterDownLinkPort', tags=None, logical_router_id=None, service_bindings=None)
+

Bases: vmware.vapi.bindings.struct.VapiStruct

+
+

Tip

+

The arguments are used to initialize data attributes with the same +names.

+
+
+
+URPF_MODE_NONE = 'NONE'
+
+ +
+
+URPF_MODE_STRICT = 'STRICT'
+
+ +
+ +
+
+class com.vmware.nsx_policy.model_client.LogicalRouterIPTunnelPort(admin_state=None, subnets=None, vpn_session_id=None, links=None, schema=None, self_=None, revision=None, create_time=None, create_user=None, last_modified_time=None, last_modified_user=None, protection=None, system_owned=None, description=None, display_name=None, id=None, resource_type='LogicalRouterIPTunnelPort', tags=None, logical_router_id=None, service_bindings=None)
+

Bases: vmware.vapi.bindings.struct.VapiStruct

+

Logical router IP tunnel port.

+
+

Tip

+

The arguments are used to initialize data attributes with the same +names.

+
+
+
+ADMIN_STATE_DOWN = 'DOWN'
+
+ +
+
+ADMIN_STATE_UP = 'UP'
+
+ +
+ +
+
+class com.vmware.nsx_policy.model_client.LogicalRouterLinkPortOnTIER0(linked_logical_router_port_id=None, mac_address=None, subnets=None, links=None, schema=None, self_=None, revision=None, create_time=None, create_user=None, last_modified_time=None, last_modified_user=None, protection=None, system_owned=None, description=None, display_name=None, id=None, resource_type='LogicalRouterLinkPortOnTIER0', tags=None, logical_router_id=None, service_bindings=None)
+

Bases: vmware.vapi.bindings.struct.VapiStruct

+

This port can be configured only on a TIER0 LogicalRouter. Create an empty +port to generate an id. Use this id in the linked_logical_router_port_id on +LogicalRouterLinkPortOnTIER1 on TIER1 logical router.

+
+

Tip

+

The arguments are used to initialize data attributes with the same +names.

+
+
+ +
+
+class com.vmware.nsx_policy.model_client.LogicalRouterLinkPortOnTIER1(edge_cluster_member_index=None, linked_logical_router_port_id=None, mac_address=None, subnets=None, links=None, schema=None, self_=None, revision=None, create_time=None, create_user=None, last_modified_time=None, last_modified_user=None, protection=None, system_owned=None, description=None, display_name=None, id=None, resource_type='LogicalRouterLinkPortOnTIER1', tags=None, logical_router_id=None, service_bindings=None)
+

Bases: vmware.vapi.bindings.struct.VapiStruct

+

This port can be configured only on a TIER1 LogicalRouter. Use the id of +the LogicalRouterLinkPortOnTIER0 from TIER0 logical router to set the +linked_logical_router_port_id on the port on TIER1 logical router.

+
+

Tip

+

The arguments are used to initialize data attributes with the same +names.

+
+
+ +
+
+class com.vmware.nsx_policy.model_client.LogicalRouterListResult(links=None, schema=None, self_=None, cursor=None, result_count=None, sort_ascending=None, sort_by=None, results=None)
+

Bases: vmware.vapi.bindings.struct.VapiStruct

+
+

Tip

+

The arguments are used to initialize data attributes with the same +names.

+
+
+ +
+
+class com.vmware.nsx_policy.model_client.LogicalRouterLoopbackPort(edge_cluster_member_index=None, subnets=None, links=None, schema=None, self_=None, revision=None, create_time=None, create_user=None, last_modified_time=None, last_modified_user=None, protection=None, system_owned=None, description=None, display_name=None, id=None, resource_type='LogicalRouterLoopbackPort', tags=None, logical_router_id=None, service_bindings=None)
+

Bases: vmware.vapi.bindings.struct.VapiStruct

+
+

Tip

+

The arguments are used to initialize data attributes with the same +names.

+
+
+ +
+
+class com.vmware.nsx_policy.model_client.LogicalRouterPort(links=None, schema=None, self_=None, revision=None, create_time=None, create_user=None, last_modified_time=None, last_modified_user=None, protection=None, system_owned=None, description=None, display_name=None, id=None, resource_type='LogicalRouterPort', tags=None, logical_router_id=None, service_bindings=None)
+

Bases: vmware.vapi.bindings.struct.VapiStruct

+
+

Tip

+

The arguments are used to initialize data attributes with the same +names.

+
+
+
+RESOURCE_TYPE_LOGICALROUTERCENTRALIZEDSERVICEPORT = 'LogicalRouterCentralizedServicePort'
+
+ +
+
+RESOURCE_TYPE_LOGICALROUTERDOWNLINKPORT = 'LogicalRouterDownLinkPort'
+
+ +
+
+RESOURCE_TYPE_LOGICALROUTERIPTUNNELPORT = 'LogicalRouterIPTunnelPort'
+
+ +
+
+RESOURCE_TYPE_LOGICALROUTERLINKPORTONTIER0 = 'LogicalRouterLinkPortOnTIER0'
+
+ +
+
+RESOURCE_TYPE_LOGICALROUTERLINKPORTONTIER1 = 'LogicalRouterLinkPortOnTIER1'
+
+ +
+
+RESOURCE_TYPE_LOGICALROUTERLOOPBACKPORT = 'LogicalRouterLoopbackPort'
+
+ +
+
+RESOURCE_TYPE_LOGICALROUTERUPLINKPORT = 'LogicalRouterUpLinkPort'
+
+ +
+ +
+
+class com.vmware.nsx_policy.model_client.LogicalRouterPortArpCsvRecord(ip=None, mac_address=None)
+

Bases: vmware.vapi.bindings.struct.VapiStruct

+
+

Tip

+

The arguments are used to initialize data attributes with the same +names.

+
+
+ +
+
+class com.vmware.nsx_policy.model_client.LogicalRouterPortArpEntry(ip=None, mac_address=None)
+

Bases: vmware.vapi.bindings.struct.VapiStruct

+
+

Tip

+

The arguments are used to initialize data attributes with the same +names.

+
+
+ +
+
+class com.vmware.nsx_policy.model_client.LogicalRouterPortArpTable(links=None, schema=None, self_=None, cursor=None, result_count=None, sort_ascending=None, sort_by=None, last_update_timestamp=None, logical_router_port_id=None, results=None)
+

Bases: vmware.vapi.bindings.struct.VapiStruct

+
+

Tip

+

The arguments are used to initialize data attributes with the same +names.

+
+
+ +
+
+class com.vmware.nsx_policy.model_client.LogicalRouterPortArpTableInCsvFormat(file_name=None, last_update_timestamp=None, results=None)
+

Bases: vmware.vapi.bindings.struct.VapiStruct

+
+

Tip

+

The arguments are used to initialize data attributes with the same +names.

+
+
+ +
+
+class com.vmware.nsx_policy.model_client.LogicalRouterPortDeleteRequestParameters(force=None)
+

Bases: vmware.vapi.bindings.struct.VapiStruct

+

LogicalRouterPort delete request parameters

+
+

Tip

+

The arguments are used to initialize data attributes with the same +names.

+
+
+ +
+
+class com.vmware.nsx_policy.model_client.LogicalRouterPortListResult(links=None, schema=None, self_=None, cursor=None, result_count=None, sort_ascending=None, sort_by=None, results=None)
+

Bases: vmware.vapi.bindings.struct.VapiStruct

+
+

Tip

+

The arguments are used to initialize data attributes with the same +names.

+
+
+ +
+
+class com.vmware.nsx_policy.model_client.LogicalRouterRouteCsvRecord(admin_distance=None, logical_router_port_id=None, lr_component_id=None, lr_component_type=None, network=None, next_hop=None, route_type=None)
+

Bases: vmware.vapi.bindings.struct.VapiStruct

+
+

Tip

+

The arguments are used to initialize data attributes with the same +names.

+
+
+ +
+
+class com.vmware.nsx_policy.model_client.LogicalRouterRouteEntry(admin_distance=None, logical_router_port_id=None, lr_component_id=None, lr_component_type=None, network=None, next_hop=None, route_type=None)
+

Bases: vmware.vapi.bindings.struct.VapiStruct

+
+

Tip

+

The arguments are used to initialize data attributes with the same +names.

+
+
+ +
+
+class com.vmware.nsx_policy.model_client.LogicalRouterRouteTable(links=None, schema=None, self_=None, cursor=None, result_count=None, sort_ascending=None, sort_by=None, last_update_timestamp=None, logical_router_id=None, logical_router_name=None, results=None)
+

Bases: vmware.vapi.bindings.struct.VapiStruct

+
+

Tip

+

The arguments are used to initialize data attributes with the same +names.

+
+
+ +
+
+class com.vmware.nsx_policy.model_client.LogicalRouterRouteTableInCsvFormat(file_name=None, last_update_timestamp=None, results=None)
+

Bases: vmware.vapi.bindings.struct.VapiStruct

+
+

Tip

+

The arguments are used to initialize data attributes with the same +names.

+
+
+ +
+
+class com.vmware.nsx_policy.model_client.LogicalRouterUpLinkPort(edge_cluster_member_index=None, linked_logical_switch_port_id=None, mac_address=None, mtu=None, subnets=None, urpf_mode=None, links=None, schema=None, self_=None, revision=None, create_time=None, create_user=None, last_modified_time=None, last_modified_user=None, protection=None, system_owned=None, description=None, display_name=None, id=None, resource_type='LogicalRouterUpLinkPort', tags=None, logical_router_id=None, service_bindings=None)
+

Bases: vmware.vapi.bindings.struct.VapiStruct

+
+

Tip

+

The arguments are used to initialize data attributes with the same +names.

+
+
+
+URPF_MODE_NONE = 'NONE'
+
+ +
+
+URPF_MODE_STRICT = 'STRICT'
+
+ +
+ +
+
+class com.vmware.nsx_policy.model_client.LogicalService(links=None, schema=None, self_=None, revision=None, create_time=None, create_user=None, last_modified_time=None, last_modified_user=None, protection=None, system_owned=None, description=None, display_name=None, id=None, resource_type=None, tags=None, dhcp_relay_profile_id=None)
+

Bases: vmware.vapi.bindings.struct.VapiStruct

+
+

Tip

+

The arguments are used to initialize data attributes with the same +names.

+
+
+
+RESOURCE_TYPE_DHCPRELAYSERVICE = 'DhcpRelayService'
+
+ +
+ +
+
+class com.vmware.nsx_policy.model_client.LogicalServiceListResult(links=None, schema=None, self_=None, cursor=None, result_count=None, sort_ascending=None, sort_by=None, results=None)
+

Bases: vmware.vapi.bindings.struct.VapiStruct

+
+

Tip

+

The arguments are used to initialize data attributes with the same +names.

+
+
+ +
+
+class com.vmware.nsx_policy.model_client.LogicalSwitch(links=None, schema=None, self_=None, revision=None, create_time=None, create_user=None, last_modified_time=None, last_modified_user=None, protection=None, system_owned=None, description=None, display_name=None, id=None, resource_type=None, tags=None, address_bindings=None, admin_state=None, extra_configs=None, ip_pool_id=None, mac_pool_id=None, replication_mode=None, switching_profile_ids=None, transport_zone_id=None, uplink_teaming_policy_name=None, vlan=None, vlan_trunk_spec=None, vni=None)
+

Bases: vmware.vapi.bindings.struct.VapiStruct

+
+

Tip

+

The arguments are used to initialize data attributes with the same +names.

+
+
+
+ADMIN_STATE_DOWN = 'DOWN'
+
+ +
+
+ADMIN_STATE_UP = 'UP'
+
+ +
+
+REPLICATION_MODE_MTEP = 'MTEP'
+
+ +
+
+REPLICATION_MODE_SOURCE = 'SOURCE'
+
+ +
+ +
+
+class com.vmware.nsx_policy.model_client.LogicalSwitchElement(element_id=None, elements=None, resource_name=None, resource_type=None)
+

Bases: vmware.vapi.bindings.struct.VapiStruct

+

Logical switch element extends from Element class. This class contains the +information related to the logical switch.

+
+

Tip

+

The arguments are used to initialize data attributes with the same +names.

+
+
+
+RESOURCE_TYPE_GROUPELEMENT = 'GroupElement'
+
+ +
+
+RESOURCE_TYPE_LOGICALSWITCHELEMENT = 'LogicalSwitchElement'
+
+ +
+
+RESOURCE_TYPE_LOGICALT0ROUTERELEMENT = 'LogicalT0RouterElement'
+
+ +
+
+RESOURCE_TYPE_LOGICALT1ROUTERELEMENT = 'LogicalT1RouterElement'
+
+ +
+
+RESOURCE_TYPE_PROCESSELEMENT = 'ProcessElement'
+
+ +
+
+RESOURCE_TYPE_VMELEMENT = 'VMElement'
+
+ +
+ +
+
+class com.vmware.nsx_policy.model_client.LogicalSwitchListResult(links=None, schema=None, self_=None, cursor=None, result_count=None, sort_ascending=None, sort_by=None, results=None)
+

Bases: vmware.vapi.bindings.struct.VapiStruct

+

Logical Switch queries result

+
+

Tip

+

The arguments are used to initialize data attributes with the same +names.

+
+
+ +
+
+class com.vmware.nsx_policy.model_client.LogicalSwitchMirrorSource(switch_id=None, resource_type='LogicalSwitchMirrorSource')
+

Bases: vmware.vapi.bindings.struct.VapiStruct

+
+

Tip

+

The arguments are used to initialize data attributes with the same +names.

+
+
+ +
+
+class com.vmware.nsx_policy.model_client.LogicalSwitchState(details=None, failure_code=None, failure_message=None, state=None, logical_switch_id=None)
+

Bases: vmware.vapi.bindings.struct.VapiStruct

+
+

Tip

+

The arguments are used to initialize data attributes with the same +names.

+
+
+
+STATE_FAILED = 'failed'
+
+ +
+
+STATE_IN_PROGRESS = 'in_progress'
+
+ +
+
+STATE_ORPHANED = 'orphaned'
+
+ +
+
+STATE_PARTIAL_SUCCESS = 'partial_success'
+
+ +
+
+STATE_PENDING = 'pending'
+
+ +
+
+STATE_SUCCESS = 'success'
+
+ +
+
+STATE_UNKNOWN = 'unknown'
+
+ +
+ +
+
+class com.vmware.nsx_policy.model_client.LogicalSwitchStateListResult(links=None, schema=None, self_=None, cursor=None, result_count=None, sort_ascending=None, sort_by=None, results=None)
+

Bases: vmware.vapi.bindings.struct.VapiStruct

+

Logical Switch state queries result

+
+

Tip

+

The arguments are used to initialize data attributes with the same +names.

+
+
+ +
+
+class com.vmware.nsx_policy.model_client.LogicalSwitchStatus(logical_switch_id=None, num_logical_ports=None)
+

Bases: vmware.vapi.bindings.struct.VapiStruct

+
+

Tip

+

The arguments are used to initialize data attributes with the same +names.

+
+
+ +
+
+class com.vmware.nsx_policy.model_client.LogicalSwitchStatusListResult(links=None, schema=None, self_=None, cursor=None, result_count=None, sort_ascending=None, sort_by=None, results=None)
+

Bases: vmware.vapi.bindings.struct.VapiStruct

+

Logical Switch runtime status queries result

+
+

Tip

+

The arguments are used to initialize data attributes with the same +names.

+
+
+ +
+
+class com.vmware.nsx_policy.model_client.LogicalT0RouterElement(element_id=None, elements=None, resource_name=None, resource_type=None)
+

Bases: vmware.vapi.bindings.struct.VapiStruct

+

Logical T0 router element extends from Element class. This class contains +the information related to logical T0 router.

+
+

Tip

+

The arguments are used to initialize data attributes with the same +names.

+
+
+
+RESOURCE_TYPE_GROUPELEMENT = 'GroupElement'
+
+ +
+
+RESOURCE_TYPE_LOGICALSWITCHELEMENT = 'LogicalSwitchElement'
+
+ +
+
+RESOURCE_TYPE_LOGICALT0ROUTERELEMENT = 'LogicalT0RouterElement'
+
+ +
+
+RESOURCE_TYPE_LOGICALT1ROUTERELEMENT = 'LogicalT1RouterElement'
+
+ +
+
+RESOURCE_TYPE_PROCESSELEMENT = 'ProcessElement'
+
+ +
+
+RESOURCE_TYPE_VMELEMENT = 'VMElement'
+
+ +
+ +
+
+class com.vmware.nsx_policy.model_client.LogicalT1RouterElement(element_id=None, elements=None, resource_name=None, resource_type=None)
+

Bases: vmware.vapi.bindings.struct.VapiStruct

+

Logical T1 router element extends from Element class. This class contains +the information related to logical T1 router.

+
+

Tip

+

The arguments are used to initialize data attributes with the same +names.

+
+
+
+RESOURCE_TYPE_GROUPELEMENT = 'GroupElement'
+
+ +
+
+RESOURCE_TYPE_LOGICALSWITCHELEMENT = 'LogicalSwitchElement'
+
+ +
+
+RESOURCE_TYPE_LOGICALT0ROUTERELEMENT = 'LogicalT0RouterElement'
+
+ +
+
+RESOURCE_TYPE_LOGICALT1ROUTERELEMENT = 'LogicalT1RouterElement'
+
+ +
+
+RESOURCE_TYPE_PROCESSELEMENT = 'ProcessElement'
+
+ +
+
+RESOURCE_TYPE_VMELEMENT = 'VMElement'
+
+ +
+ +
+
+class com.vmware.nsx_policy.model_client.LoginCredential(credential_type='LoginCredential')
+

Bases: vmware.vapi.bindings.struct.VapiStruct

+

Base type for various login credential types

+
+

Tip

+

The arguments are used to initialize data attributes with the same +names.

+
+
+ +
+
+class com.vmware.nsx_policy.model_client.MACAddressElement(links=None, schema=None, self_=None, revision=None, mac_address=None)
+

Bases: vmware.vapi.bindings.struct.VapiStruct

+

MAC Address

+
+

Tip

+

The arguments are used to initialize data attributes with the same +names.

+
+
+ +
+
+class com.vmware.nsx_policy.model_client.MACAddressElementListResult(links=None, schema=None, self_=None, cursor=None, result_count=None, sort_ascending=None, sort_by=None, results=None)
+

Bases: vmware.vapi.bindings.struct.VapiStruct

+

Collection of MAC address elements

+
+

Tip

+

The arguments are used to initialize data attributes with the same +names.

+
+
+ +
+
+class com.vmware.nsx_policy.model_client.MACSet(links=None, schema=None, self_=None, revision=None, create_time=None, create_user=None, last_modified_time=None, last_modified_user=None, protection=None, system_owned=None, description=None, display_name=None, id=None, resource_type=None, tags=None, mac_addresses=None)
+

Bases: vmware.vapi.bindings.struct.VapiStruct

+

MACSet is used to group individual MAC addresses. MACSets can be used as +sources and destinations in layer2 firewall rules. These can also be used +as members of NSGroups.

+
+

Tip

+

The arguments are used to initialize data attributes with the same +names.

+
+
+ +
+
+class com.vmware.nsx_policy.model_client.MACSetDeleteRequestParameters(force=None)
+

Bases: vmware.vapi.bindings.struct.VapiStruct

+

MACSet delete request parameters

+
+

Tip

+

The arguments are used to initialize data attributes with the same +names.

+
+
+ +
+
+class com.vmware.nsx_policy.model_client.MACSetListResult(links=None, schema=None, self_=None, cursor=None, result_count=None, sort_ascending=None, sort_by=None, results=None)
+

Bases: vmware.vapi.bindings.struct.VapiStruct

+
+

Tip

+

The arguments are used to initialize data attributes with the same +names.

+
+
+ +
+
+class com.vmware.nsx_policy.model_client.MacAddressCsvListResult(file_name=None, last_update_timestamp=None, results=None)
+

Bases: vmware.vapi.bindings.struct.VapiStruct

+
+

Tip

+

The arguments are used to initialize data attributes with the same +names.

+
+
+ +
+
+class com.vmware.nsx_policy.model_client.MacAddressListResult(links=None, schema=None, self_=None, cursor=None, result_count=None, sort_ascending=None, sort_by=None, last_update_timestamp=None, logical_switch_id=None, results=None, transport_node_id=None)
+

Bases: vmware.vapi.bindings.struct.VapiStruct

+
+

Tip

+

The arguments are used to initialize data attributes with the same +names.

+
+
+ +
+
+class com.vmware.nsx_policy.model_client.MacLearningSpec(aging_time=None, enabled=None, limit=None, limit_policy=None, unicast_flooding_allowed=None)
+

Bases: vmware.vapi.bindings.struct.VapiStruct

+

MAC learning configuration

+
+

Tip

+

The arguments are used to initialize data attributes with the same +names.

+
+
+
+LIMIT_POLICY_ALLOW = 'ALLOW'
+
+ +
+
+LIMIT_POLICY_DROP = 'DROP'
+
+ +
+ +
+
+class com.vmware.nsx_policy.model_client.MacManagementSwitchingProfile(mac_change_allowed=None, mac_learning=None, links=None, schema=None, self_=None, revision=None, create_time=None, create_user=None, last_modified_time=None, last_modified_user=None, protection=None, system_owned=None, description=None, display_name=None, id=None, resource_type='MacManagementSwitchingProfile', tags=None, required_capabilities=None)
+

Bases: vmware.vapi.bindings.struct.VapiStruct

+
+

Tip

+

The arguments are used to initialize data attributes with the same +names.

+
+
+ +
+
+class com.vmware.nsx_policy.model_client.MacPool(links=None, schema=None, self_=None, revision=None, create_time=None, create_user=None, last_modified_time=None, last_modified_user=None, protection=None, system_owned=None, description=None, display_name=None, id=None, resource_type=None, tags=None, ranges=None)
+

Bases: vmware.vapi.bindings.struct.VapiStruct

+

A collection of ranges of MAC addresses

+
+

Tip

+

The arguments are used to initialize data attributes with the same +names.

+
+
+ +
+
+class com.vmware.nsx_policy.model_client.MacPoolListResult(links=None, schema=None, self_=None, cursor=None, result_count=None, sort_ascending=None, sort_by=None, results=None)
+

Bases: vmware.vapi.bindings.struct.VapiStruct

+
+

Tip

+

The arguments are used to initialize data attributes with the same +names.

+
+
+ +
+
+class com.vmware.nsx_policy.model_client.MacRange(end=None, start=None)
+

Bases: vmware.vapi.bindings.struct.VapiStruct

+

A range of MAC addresses with a start and end value

+
+

Tip

+

The arguments are used to initialize data attributes with the same +names.

+
+
+ +
+
+class com.vmware.nsx_policy.model_client.MacTableCsvRecord(mac_address=None, vtep_ip=None, vtep_mac_address=None)
+

Bases: vmware.vapi.bindings.struct.VapiStruct

+
+

Tip

+

The arguments are used to initialize data attributes with the same +names.

+
+
+ +
+
+class com.vmware.nsx_policy.model_client.MacTableEntry(mac_address=None, vtep_ip=None, vtep_mac_address=None)
+

Bases: vmware.vapi.bindings.struct.VapiStruct

+
+

Tip

+

The arguments are used to initialize data attributes with the same +names.

+
+
+ +
+
+class com.vmware.nsx_policy.model_client.ManagedResource(links=None, schema=None, self_=None, revision=None, create_time=None, create_user=None, last_modified_time=None, last_modified_user=None, protection=None, system_owned=None, description=None, display_name=None, id=None, resource_type=None, tags=None)
+

Bases: vmware.vapi.bindings.struct.VapiStruct

+

Base type for resources that are managed by API clients

+
+

Tip

+

The arguments are used to initialize data attributes with the same +names.

+
+
+ +
+
+class com.vmware.nsx_policy.model_client.ManagementClusterNodeStatus(mgmt_cluster_status=None)
+

Bases: vmware.vapi.bindings.struct.VapiStruct

+
+

Tip

+

The arguments are used to initialize data attributes with the same +names.

+
+
+
+MGMT_CLUSTER_STATUS_CONNECTED = 'CONNECTED'
+
+ +
+
+MGMT_CLUSTER_STATUS_DISCONNECTED = 'DISCONNECTED'
+
+ +
+
+MGMT_CLUSTER_STATUS_UNKNOWN = 'UNKNOWN'
+
+ +
+ +
+
+class com.vmware.nsx_policy.model_client.ManagementClusterRoleConfig(type=None, api_listen_addr=None, mgmt_cluster_listen_addr=None, mgmt_plane_listen_addr=None, mpa_msg_client_info=None)
+

Bases: vmware.vapi.bindings.struct.VapiStruct

+
+

Tip

+

The arguments are used to initialize data attributes with the same +names.

+
+
+
+TYPE_CONTROLLERCLUSTERROLECONFIG = 'ControllerClusterRoleConfig'
+
+ +
+
+TYPE_MANAGEMENTCLUSTERROLECONFIG = 'ManagementClusterRoleConfig'
+
+ +
+ +
+
+class com.vmware.nsx_policy.model_client.ManagementClusterStatus(offline_nodes=None, online_nodes=None, required_members_for_initialization=None, status=None)
+

Bases: vmware.vapi.bindings.struct.VapiStruct

+
+

Tip

+

The arguments are used to initialize data attributes with the same +names.

+
+
+
+STATUS_INITIALIZING = 'INITIALIZING'
+
+ +
+
+STATUS_STABLE = 'STABLE'
+
+ +
+
+STATUS_UNKNOWN = 'UNKNOWN'
+
+ +
+
+STATUS_UNSTABLE = 'UNSTABLE'
+
+ +
+ +
+
+class com.vmware.nsx_policy.model_client.ManagementConfig(links=None, schema=None, self_=None, revision=None, publish_fqdns=None)
+

Bases: vmware.vapi.bindings.struct.VapiStruct

+
+

Tip

+

The arguments are used to initialize data attributes with the same +names.

+
+
+ +
+
+class com.vmware.nsx_policy.model_client.ManagementNodeAggregateInfo(display_name=None, id=None, node_interface_properties=None, node_interface_statistics=None, node_status=None, node_status_properties=None, role_config=None, transport_nodes_connected=None)
+

Bases: vmware.vapi.bindings.struct.VapiStruct

+
+

Tip

+

The arguments are used to initialize data attributes with the same +names.

+
+
+ +
+
+class com.vmware.nsx_policy.model_client.ManagementPlaneBaseNodeInfo(mgmt_cluster_listen_ip_address=None, uuid=None)
+

Bases: vmware.vapi.bindings.struct.VapiStruct

+

The basic node info of management plane node

+
+

Tip

+

The arguments are used to initialize data attributes with the same +names.

+
+
+ +
+
+class com.vmware.nsx_policy.model_client.MetadataProxy(links=None, schema=None, self_=None, revision=None, create_time=None, create_user=None, last_modified_time=None, last_modified_user=None, protection=None, system_owned=None, description=None, display_name=None, id=None, resource_type=None, tags=None, attached_logical_port_id=None, edge_cluster_id=None, edge_cluster_member_indexes=None, metadata_server_ca_ids=None, metadata_server_url=None, secret=None)
+

Bases: vmware.vapi.bindings.struct.VapiStruct

+
+

Tip

+

The arguments are used to initialize data attributes with the same +names.

+
+
+ +
+
+class com.vmware.nsx_policy.model_client.MetadataProxyListResult(links=None, schema=None, self_=None, cursor=None, result_count=None, sort_ascending=None, sort_by=None, results=None)
+

Bases: vmware.vapi.bindings.struct.VapiStruct

+
+

Tip

+

The arguments are used to initialize data attributes with the same +names.

+
+
+ +
+
+class com.vmware.nsx_policy.model_client.MgmtConnStatus(connectivity_status=None)
+

Bases: vmware.vapi.bindings.struct.VapiStruct

+
+

Tip

+

The arguments are used to initialize data attributes with the same +names.

+
+
+
+CONNECTIVITY_STATUS_CONNECTED = 'CONNECTED'
+
+ +
+
+CONNECTIVITY_STATUS_DISCONNECTED = 'DISCONNECTED'
+
+ +
+
+CONNECTIVITY_STATUS_UNKNOWN = 'UNKNOWN'
+
+ +
+ +
+
+class com.vmware.nsx_policy.model_client.MirrorDestination(resource_type='MirrorDestination')
+

Bases: vmware.vapi.bindings.struct.VapiStruct

+
+

Tip

+

The arguments are used to initialize data attributes with the same +names.

+
+
+
+RESOURCE_TYPE_IPMIRRORDESTINATION = 'IPMirrorDestination'
+
+ +
+
+RESOURCE_TYPE_LOGICALPORTMIRRORDESTINATION = 'LogicalPortMirrorDestination'
+
+ +
+
+RESOURCE_TYPE_PNICMIRRORDESTINATION = 'PnicMirrorDestination'
+
+ +
+ +
+
+class com.vmware.nsx_policy.model_client.MirrorSource(resource_type='MirrorSource')
+

Bases: vmware.vapi.bindings.struct.VapiStruct

+
+

Tip

+

The arguments are used to initialize data attributes with the same +names.

+
+
+
+RESOURCE_TYPE_LOGICALPORTMIRRORSOURCE = 'LogicalPortMirrorSource'
+
+ +
+
+RESOURCE_TYPE_LOGICALSWITCHMIRRORSOURCE = 'LogicalSwitchMirrorSource'
+
+ +
+
+RESOURCE_TYPE_PNICMIRRORSOURCE = 'PnicMirrorSource'
+
+ +
+
+RESOURCE_TYPE_VLANMIRRORSOURCE = 'VlanMirrorSource'
+
+ +
+ +
+
+class com.vmware.nsx_policy.model_client.MonthlyTelemetrySchedule(day_of_month=None, hour_of_day=None, minutes=None, frequency_type=None)
+

Bases: vmware.vapi.bindings.struct.VapiStruct

+
+

Tip

+

The arguments are used to initialize data attributes with the same +names.

+
+
+ +
+
+class com.vmware.nsx_policy.model_client.MsgClientInfo(account_name=None, certificate=None, shared_secret=None, software_version=None)
+

Bases: vmware.vapi.bindings.struct.VapiStruct

+

Information about a messaging client

+
+

Tip

+

The arguments are used to initialize data attributes with the same +names.

+
+
+ +
+
+class com.vmware.nsx_policy.model_client.MultiWidgetConfiguration(navigation=None, widgets=None, links=None, schema=None, self_=None, revision=None, create_time=None, create_user=None, last_modified_time=None, last_modified_user=None, protection=None, system_owned=None, description=None, display_name=None, id=None, resource_type='MultiWidgetConfiguration', tags=None, datasources=None, drilldown_id=None, footer=None, is_drilldown=None, shared=None, weight=None)
+

Bases: vmware.vapi.bindings.struct.VapiStruct

+

Combines two or more widgetconfigurations into a multi-widget

+
+

Tip

+

The arguments are used to initialize data attributes with the same +names.

+
+
+ +
+
+class com.vmware.nsx_policy.model_client.NSGroup(links=None, schema=None, self_=None, revision=None, create_time=None, create_user=None, last_modified_time=None, last_modified_user=None, protection=None, system_owned=None, description=None, display_name=None, id=None, resource_type=None, tags=None, member_count=None, members=None, membership_criteria=None)
+

Bases: vmware.vapi.bindings.struct.VapiStruct

+

NSGroups are recursive groupings of different NSX elements (logical and +physical), typically used in policy definitions.

+
+

Tip

+

The arguments are used to initialize data attributes with the same +names.

+
+
+ +
+
+class com.vmware.nsx_policy.model_client.NSGroupComplexExpression(expressions=None, resource_type='NSGroupComplexExpression')
+

Bases: vmware.vapi.bindings.struct.VapiStruct

+

Complex expressions to represent NSGroup membership

+
+

Tip

+

The arguments are used to initialize data attributes with the same +names.

+
+
+ +
+
+class com.vmware.nsx_policy.model_client.NSGroupDeleteRequestParameters(force=None)
+

Bases: vmware.vapi.bindings.struct.VapiStruct

+

NSGroup delete request parameters

+
+

Tip

+

The arguments are used to initialize data attributes with the same +names.

+
+
+ +
+
+class com.vmware.nsx_policy.model_client.NSGroupExpression(resource_type='NSGroupExpression')
+

Bases: vmware.vapi.bindings.struct.VapiStruct

+

Policy expression for NSGroup membership

+
+

Tip

+

The arguments are used to initialize data attributes with the same +names.

+
+
+
+RESOURCE_TYPE_NSGROUPCOMPLEXEXPRESSION = 'NSGroupComplexExpression'
+
+ +
+
+RESOURCE_TYPE_NSGROUPSIMPLEEXPRESSION = 'NSGroupSimpleExpression'
+
+ +
+
+RESOURCE_TYPE_NSGROUPTAGEXPRESSION = 'NSGroupTagExpression'
+
+ +
+ +
+
+class com.vmware.nsx_policy.model_client.NSGroupListResult(links=None, schema=None, self_=None, cursor=None, result_count=None, sort_ascending=None, sort_by=None, results=None)
+

Bases: vmware.vapi.bindings.struct.VapiStruct

+

Paged Collection of NSGroups

+
+

Tip

+

The arguments are used to initialize data attributes with the same +names.

+
+
+ +
+
+class com.vmware.nsx_policy.model_client.NSGroupSimpleExpression(op=None, target_property=None, target_resource=None, target_type=None, value=None, resource_type='NSGroupSimpleExpression')
+

Bases: vmware.vapi.bindings.struct.VapiStruct

+

Simple expressions to represent NSGroup membership

+
+

Tip

+

The arguments are used to initialize data attributes with the same +names.

+
+
+
+OP_CONTAINS = 'CONTAINS'
+
+ +
+
+OP_EQUALS = 'EQUALS'
+
+ +
+
+OP_STARTSWITH = 'STARTSWITH'
+
+ +
+
+TARGET_TYPE_IPSET = 'IPSet'
+
+ +
+
+TARGET_TYPE_LOGICALPORT = 'LogicalPort'
+
+ +
+
+TARGET_TYPE_LOGICALSWITCH = 'LogicalSwitch'
+
+ +
+
+TARGET_TYPE_MACSET = 'MACSet'
+
+ +
+
+TARGET_TYPE_NSGROUP = 'NSGroup'
+
+ +
+
+TARGET_TYPE_VIRTUALMACHINE = 'VirtualMachine'
+
+ +
+ +
+
+class com.vmware.nsx_policy.model_client.NSGroupTagExpression(scope=None, scope_op=None, tag=None, tag_op=None, target_type=None, resource_type='NSGroupTagExpression')
+

Bases: vmware.vapi.bindings.struct.VapiStruct

+

Includes both scope and tag attribute of Tag. The scope and tag expressions +are logically ‘AND’ with each other. eg- tag.scope = "S1" AND +tag.tag = ‘T1’

+
+

Tip

+

The arguments are used to initialize data attributes with the same +names.

+
+
+
+SCOPE_OP_EQUALS = 'EQUALS'
+
+ +
+
+TAG_OP_EQUALS = 'EQUALS'
+
+ +
+
+TARGET_TYPE_LOGICALPORT = 'LogicalPort'
+
+ +
+
+TARGET_TYPE_LOGICALSWITCH = 'LogicalSwitch'
+
+ +
+
+TARGET_TYPE_VIRTUALMACHINE = 'VirtualMachine'
+
+ +
+ +
+
+class com.vmware.nsx_policy.model_client.NSService(links=None, schema=None, self_=None, revision=None, create_time=None, create_user=None, last_modified_time=None, last_modified_user=None, protection=None, system_owned=None, description=None, display_name=None, id=None, resource_type=None, tags=None, default_service=None, nsservice_element=None)
+

Bases: vmware.vapi.bindings.struct.VapiStruct

+

A Networking and Security Service allows users to specify characteristics +to use for matching network traffic. For example the user can specify port +and protocol pair.

+
+

Tip

+

The arguments are used to initialize data attributes with the same +names.

+
+
+ +
+
+class com.vmware.nsx_policy.model_client.NSServiceDeleteRequestParameters(force=None)
+

Bases: vmware.vapi.bindings.struct.VapiStruct

+

NSService delete request parameters

+
+

Tip

+

The arguments are used to initialize data attributes with the same +names.

+
+
+ +
+
+class com.vmware.nsx_policy.model_client.NSServiceElement(resource_type='NSServiceElement')
+

Bases: vmware.vapi.bindings.struct.VapiStruct

+

An NSService element that describes traffic corresponding to an NSService

+
+

Tip

+

The arguments are used to initialize data attributes with the same +names.

+
+
+
+RESOURCE_TYPE_ALGTYPENSSERVICE = 'ALGTypeNSService'
+
+ +
+
+RESOURCE_TYPE_ETHERTYPENSSERVICE = 'EtherTypeNSService'
+
+ +
+
+RESOURCE_TYPE_ICMPTYPENSSERVICE = 'ICMPTypeNSService'
+
+ +
+
+RESOURCE_TYPE_IGMPTYPENSSERVICE = 'IGMPTypeNSService'
+
+ +
+
+RESOURCE_TYPE_IPPROTOCOLNSSERVICE = 'IPProtocolNSService'
+
+ +
+
+RESOURCE_TYPE_L4PORTSETNSSERVICE = 'L4PortSetNSService'
+
+ +
+ +
+
+class com.vmware.nsx_policy.model_client.NSServiceGroup(links=None, schema=None, self_=None, revision=None, create_time=None, create_user=None, last_modified_time=None, last_modified_user=None, protection=None, system_owned=None, description=None, display_name=None, id=None, resource_type=None, tags=None, default_service=None, members=None, service_type=None)
+

Bases: vmware.vapi.bindings.struct.VapiStruct

+

A Networking and Security Service Group that represents a group of +NSServices

+
+

Tip

+

The arguments are used to initialize data attributes with the same +names.

+
+
+
+SERVICE_TYPE_ETHER = 'ETHER'
+
+ +
+
+SERVICE_TYPE_NON_ETHER = 'NON_ETHER'
+
+ +
+ +
+
+class com.vmware.nsx_policy.model_client.NSServiceGroupDeleteRequestParameters(force=None)
+

Bases: vmware.vapi.bindings.struct.VapiStruct

+

NSServiceGroup delete request parameters

+
+

Tip

+

The arguments are used to initialize data attributes with the same +names.

+
+
+ +
+
+class com.vmware.nsx_policy.model_client.NSServiceGroupListResult(links=None, schema=None, self_=None, cursor=None, result_count=None, sort_ascending=None, sort_by=None, results=None)
+

Bases: vmware.vapi.bindings.struct.VapiStruct

+

List result of NSServiceGroups

+
+

Tip

+

The arguments are used to initialize data attributes with the same +names.

+
+
+ +
+
+class com.vmware.nsx_policy.model_client.NSServiceListResult(links=None, schema=None, self_=None, cursor=None, result_count=None, sort_ascending=None, sort_by=None, results=None)
+

Bases: vmware.vapi.bindings.struct.VapiStruct

+

List result of NSservices

+
+

Tip

+

The arguments are used to initialize data attributes with the same +names.

+
+
+ +
+
+class com.vmware.nsx_policy.model_client.NSXTConnectionInfo(edge_cluster_ids=None, password=None, thumbprint=None, transport_zone_ids=None, username=None, enforcement_point_address=None, resource_type='NSXTConnectionInfo')
+

Bases: vmware.vapi.bindings.struct.VapiStruct

+

Credential info to connect to NSXT enforcement type

+
+

Tip

+

The arguments are used to initialize data attributes with the same +names.

+
+
+ +
+
+class com.vmware.nsx_policy.model_client.NSXVConnectionInfo(password=None, thumbprint=None, username=None, enforcement_point_address=None, resource_type='NSXVConnectionInfo')
+

Bases: vmware.vapi.bindings.struct.VapiStruct

+

Credential info to connect to NSXV enforcement type

+
+

Tip

+

The arguments are used to initialize data attributes with the same +names.

+
+
+ +
+
+class com.vmware.nsx_policy.model_client.NamedTeamingPolicy(active_list=None, policy=None, standby_list=None, name=None)
+

Bases: vmware.vapi.bindings.struct.VapiStruct

+

Uplink Teaming Policy with a name that can be referenced by logical +switches

+
+

Tip

+

The arguments are used to initialize data attributes with the same +names.

+
+
+
+POLICY_FAILOVER_ORDER = 'FAILOVER_ORDER'
+
+ +
+
+POLICY_LOADBALANCE_SRCID = 'LOADBALANCE_SRCID'
+
+ +
+ +
+
+class com.vmware.nsx_policy.model_client.NatRule(links=None, schema=None, self_=None, revision=None, create_time=None, create_user=None, last_modified_time=None, last_modified_user=None, protection=None, system_owned=None, description=None, display_name=None, id=None, resource_type=None, tags=None, action=None, applied_tos=None, enabled=None, logging=None, logical_router_id=None, match_destination_network=None, match_service=None, match_source_network=None, nat_pass=None, rule_priority=None, translated_network=None, translated_ports=None)
+

Bases: vmware.vapi.bindings.struct.VapiStruct

+
+

Tip

+

The arguments are used to initialize data attributes with the same +names.

+
+
+
+ACTION_DNAT = 'DNAT'
+
+ +
+
+ACTION_NO_DNAT = 'NO_DNAT'
+
+ +
+
+ACTION_NO_NAT = 'NO_NAT'
+
+ +
+
+ACTION_NO_SNAT = 'NO_SNAT'
+
+ +
+
+ACTION_REFLEXIVE = 'REFLEXIVE'
+
+ +
+
+ACTION_SNAT = 'SNAT'
+
+ +
+ +
+
+class com.vmware.nsx_policy.model_client.NatRuleListResult(links=None, schema=None, self_=None, cursor=None, result_count=None, sort_ascending=None, sort_by=None, results=None)
+

Bases: vmware.vapi.bindings.struct.VapiStruct

+
+

Tip

+

The arguments are used to initialize data attributes with the same +names.

+
+
+ +
+
+class com.vmware.nsx_policy.model_client.NeighborProperties(capabilities=None, enabled_capabilities=None, ifindex=None, link_aggregation_capable=None, link_aggregation_port_id=None, link_aggregation_status=None, mac=None, mgmt_addr=None, name=None, oid=None, port_desc=None, system_desc=None, system_name=None, system_port_number=None)
+

Bases: vmware.vapi.bindings.struct.VapiStruct

+

Neighbor properties

+
+

Tip

+

The arguments are used to initialize data attributes with the same +names.

+
+
+ +
+
+class com.vmware.nsx_policy.model_client.NestedExpression(expressions=None, links=None, schema=None, self_=None, revision=None, create_time=None, create_user=None, last_modified_time=None, last_modified_user=None, protection=None, system_owned=None, description=None, display_name=None, id=None, resource_type='NestedExpression', tags=None, parent_path=None, path=None, relative_path=None, children=None, marked_for_delete=None)
+

Bases: vmware.vapi.bindings.struct.VapiStruct

+
+

Tip

+

The arguments are used to initialize data attributes with the same +names.

+
+
+ +
+
+class com.vmware.nsx_policy.model_client.Network(links=None, schema=None, self_=None, revision=None, create_time=None, create_user=None, last_modified_time=None, last_modified_user=None, protection=None, system_owned=None, description=None, display_name=None, id=None, resource_type=None, tags=None, parent_path=None, path=None, relative_path=None, children=None, marked_for_delete=None, force_whitelisting=None, ha_mode=None, ip_addresses=None, provider=None)
+

Bases: vmware.vapi.bindings.struct.VapiStruct

+

Network instance configuration

+
+

Tip

+

The arguments are used to initialize data attributes with the same +names.

+
+
+
+HA_MODE_ACTIVE = 'ACTIVE_ACTIVE'
+
+ +
+
+HA_MODE_STANDBY = 'ACTIVE_STANDBY'
+
+ +
+ +
+
+class com.vmware.nsx_policy.model_client.NetworkConnection(dest_element_id=None, number_of_events=None, src_element_id=None)
+

Bases: vmware.vapi.bindings.struct.VapiStruct

+

Network Connection contains the statistical information of network events.

+
+

Tip

+

The arguments are used to initialize data attributes with the same +names.

+
+
+ +
+
+class com.vmware.nsx_policy.model_client.NetworkListResult(links=None, schema=None, self_=None, cursor=None, result_count=None, sort_ascending=None, sort_by=None, results=None)
+

Bases: vmware.vapi.bindings.struct.VapiStruct

+

Paged collection of Network instances

+
+

Tip

+

The arguments are used to initialize data attributes with the same +names.

+
+
+ +
+
+class com.vmware.nsx_policy.model_client.NetworkMigrationSpec(links=None, schema=None, self_=None, revision=None, create_time=None, create_user=None, last_modified_time=None, last_modified_user=None, protection=None, system_owned=None, description=None, display_name=None, id=None, resource_type='NetworkMigrationSpec', tags=None)
+

Bases: vmware.vapi.bindings.struct.VapiStruct

+

The NetworkMigrationSpec is the base class for any types of network +migration specifications to be handled by transport node.

+
+

Tip

+

The arguments are used to initialize data attributes with the same +names.

+
+
+
+RESOURCE_TYPE_HOSTPROFILENETWORKMIGRATIONSPEC = 'HostProfileNetworkMigrationSpec'
+
+ +
+ +
+
+class com.vmware.nsx_policy.model_client.NetworkMigrationSpecListResult(links=None, schema=None, self_=None, cursor=None, result_count=None, sort_ascending=None, sort_by=None, results=None)
+

Bases: vmware.vapi.bindings.struct.VapiStruct

+

Network migration specification template list result

+
+

Tip

+

The arguments are used to initialize data attributes with the same +names.

+
+
+ +
+
+class com.vmware.nsx_policy.model_client.NetworkMigrationSpecTypeIdEntry(key=None, value=None)
+

Bases: vmware.vapi.bindings.struct.VapiStruct

+
+

Tip

+

The arguments are used to initialize data attributes with the same +names.

+
+
+
+KEY_HOSTPROFILENETWORKMIGRATIONSPEC = 'HostProfileNetworkMigrationSpec'
+
+ +
+ +
+
+class com.vmware.nsx_policy.model_client.NicInfo(gateway_address=None, ip_address=None, network_id=None, nic_metadata=None, subnet_mask=None)
+

Bases: vmware.vapi.bindings.struct.VapiStruct

+

Information of a network interface present on the partner appliance that +needs to be configured by the NSX Manager.

+
+

Tip

+

The arguments are used to initialize data attributes with the same +names.

+
+
+ +
+
+class com.vmware.nsx_policy.model_client.NicMetadata(interface_index=None, interface_label=None, interface_type=None)
+

Bases: vmware.vapi.bindings.struct.VapiStruct

+

Information on the Network interfaces present on the partner appliance that +needs to be configured by the NSX Manager.

+
+

Tip

+

The arguments are used to initialize data attributes with the same +names.

+
+
+
+INTERFACE_TYPE_DATA1 = 'DATA1'
+
+ +
+
+INTERFACE_TYPE_DATA2 = 'DATA2'
+
+ +
+
+INTERFACE_TYPE_HA1 = 'HA1'
+
+ +
+
+INTERFACE_TYPE_HA2 = 'HA2'
+
+ +
+
+INTERFACE_TYPE_MANAGEMENT = 'MANAGEMENT'
+
+ +
+ +
+
+class com.vmware.nsx_policy.model_client.NiocProfile(enabled=None, host_infra_traffic_res=None, links=None, schema=None, self_=None, revision=None, create_time=None, create_user=None, last_modified_time=None, last_modified_user=None, protection=None, system_owned=None, description=None, display_name=None, id=None, resource_type='NiocProfile', tags=None, required_capabilities=None)
+

Bases: vmware.vapi.bindings.struct.VapiStruct

+

This profile is created for Network I/O Control(NIOC).

+
+

Tip

+

The arguments are used to initialize data attributes with the same +names.

+
+
+ +
+
+class com.vmware.nsx_policy.model_client.Node(links=None, schema=None, self_=None, revision=None, create_time=None, create_user=None, last_modified_time=None, last_modified_user=None, protection=None, system_owned=None, description=None, display_name=None, id=None, resource_type='Node', tags=None, discovered_ip_addresses=None, external_id=None, fqdn=None, ip_addresses=None)
+

Bases: vmware.vapi.bindings.struct.VapiStruct

+
+

Tip

+

The arguments are used to initialize data attributes with the same +names.

+
+
+ +
+
+class com.vmware.nsx_policy.model_client.NodeAggregateInfo(links=None, schema=None, self_=None, revision=None, create_time=None, create_user=None, last_modified_time=None, last_modified_user=None, protection=None, system_owned=None, description=None, display_name=None, id=None, resource_type=None, tags=None, node=None, status=None)
+

Bases: vmware.vapi.bindings.struct.VapiStruct

+

Aggregation of desired and runtime status of fabric node

+
+

Tip

+

The arguments are used to initialize data attributes with the same +names.

+
+
+ +
+
+class com.vmware.nsx_policy.model_client.NodeAggregateInfoListResult(links=None, schema=None, self_=None, cursor=None, result_count=None, sort_ascending=None, sort_by=None, results=None)
+

Bases: vmware.vapi.bindings.struct.VapiStruct

+

Node aggregate state list result

+
+

Tip

+

The arguments are used to initialize data attributes with the same +names.

+
+
+ +
+
+class com.vmware.nsx_policy.model_client.NodeFileSystemProperties(file_system=None, mount=None, total=None, type=None, used=None)
+

Bases: vmware.vapi.bindings.struct.VapiStruct

+

File system properties

+
+

Tip

+

The arguments are used to initialize data attributes with the same +names.

+
+
+ +
+
+class com.vmware.nsx_policy.model_client.NodeIdServicesMap(node_id=None, service_types=None)
+

Bases: vmware.vapi.bindings.struct.VapiStruct

+
+

Tip

+

The arguments are used to initialize data attributes with the same +names.

+
+
+
+SERVICE_TYPES_API = 'API'
+
+ +
+
+SERVICE_TYPES_MGMT_CLUSTER = 'MGMT_CLUSTER'
+
+ +
+
+SERVICE_TYPES_MGMT_PLANE = 'MGMT_PLANE'
+
+ +
+ +
+
+class com.vmware.nsx_policy.model_client.NodeInterfaceAlias(broadcast_address=None, ip_address=None, ip_configuration=None, netmask=None, physical_address=None)
+

Bases: vmware.vapi.bindings.struct.VapiStruct

+

Node network interface alias

+
+

Tip

+

The arguments are used to initialize data attributes with the same +names.

+
+
+
+IP_CONFIGURATION_DHCP = 'dhcp'
+
+ +
+
+IP_CONFIGURATION_NOT_CONFIGURED = 'not configured'
+
+ +
+
+IP_CONFIGURATION_STATIC = 'static'
+
+ +
+ +
+
+class com.vmware.nsx_policy.model_client.NodeInterfaceProperties(admin_status=None, connected_switch=None, ens_capable=None, ens_enabled=None, interface_alias=None, interface_id=None, interface_type=None, link_status=None, mtu=None, source=None)
+

Bases: vmware.vapi.bindings.struct.VapiStruct

+

Node network interface properties

+
+

Tip

+

The arguments are used to initialize data attributes with the same +names.

+
+
+
+ADMIN_STATUS_DOWN = 'DOWN'
+
+ +
+
+ADMIN_STATUS_UP = 'UP'
+
+ +
+
+INTERFACE_TYPE_PHYSICAL = 'PHYSICAL'
+
+ +
+
+INTERFACE_TYPE_VIRTUAL = 'VIRTUAL'
+
+ +
+ +
+ +
+ +
+ +
+
+SOURCE_CACHED = 'cached'
+
+ +
+
+SOURCE_REALTIME = 'realtime'
+
+ +
+ +
+
+class com.vmware.nsx_policy.model_client.NodeInterfacePropertiesListResult(links=None, schema=None, self_=None, cursor=None, result_count=None, sort_ascending=None, sort_by=None, results=None)
+

Bases: vmware.vapi.bindings.struct.VapiStruct

+

Node network interface properties list results

+
+

Tip

+

The arguments are used to initialize data attributes with the same +names.

+
+
+ +
+
+class com.vmware.nsx_policy.model_client.NodeInterfaceStatisticsProperties(links=None, schema=None, self_=None, interface_id=None, rx_bytes=None, rx_dropped=None, rx_errors=None, rx_frame=None, rx_packets=None, source=None, tx_bytes=None, tx_carrier=None, tx_colls=None, tx_dropped=None, tx_errors=None, tx_packets=None)
+

Bases: vmware.vapi.bindings.struct.VapiStruct

+

Node network interface statistic properties

+
+

Tip

+

The arguments are used to initialize data attributes with the same +names.

+
+
+
+SOURCE_CACHED = 'cached'
+
+ +
+
+SOURCE_REALTIME = 'realtime'
+
+ +
+ +
+
+class com.vmware.nsx_policy.model_client.NodeListResult(links=None, schema=None, self_=None, cursor=None, result_count=None, sort_ascending=None, sort_by=None, results=None)
+

Bases: vmware.vapi.bindings.struct.VapiStruct

+

Node list result

+
+

Tip

+

The arguments are used to initialize data attributes with the same +names.

+
+
+ +
+
+class com.vmware.nsx_policy.model_client.NodeStatus(external_id=None, host_node_deployment_status=None, inventory_sync_paused=None, inventory_sync_reenable_time=None, last_heartbeat_timestamp=None, last_sync_time=None, lcp_connectivity_status=None, lcp_connectivity_status_details=None, maintenance_mode=None, mpa_connectivity_status=None, mpa_connectivity_status_details=None, software_version=None, system_status=None)
+

Bases: vmware.vapi.bindings.struct.VapiStruct

+

Runtime status information of the fabric node.

+
+

Tip

+

The arguments are used to initialize data attributes with the same +names.

+
+
+
+HOST_NODE_DEPLOYMENT_STATUS_EDGE_CONFIG_ERROR = 'EDGE_CONFIG_ERROR'
+
+ +
+
+HOST_NODE_DEPLOYMENT_STATUS_INSTALL_FAILED = 'INSTALL_FAILED'
+
+ +
+
+HOST_NODE_DEPLOYMENT_STATUS_INSTALL_IN_PROGRESS = 'INSTALL_IN_PROGRESS'
+
+ +
+
+HOST_NODE_DEPLOYMENT_STATUS_INSTALL_SUCCESSFUL = 'INSTALL_SUCCESSFUL'
+
+ +
+
+HOST_NODE_DEPLOYMENT_STATUS_NODE_NOT_READY = 'NODE_NOT_READY'
+
+ +
+
+HOST_NODE_DEPLOYMENT_STATUS_NODE_READY = 'NODE_READY'
+
+ +
+
+HOST_NODE_DEPLOYMENT_STATUS_NOT_AVAILABLE = 'NOT_AVAILABLE'
+
+ +
+
+HOST_NODE_DEPLOYMENT_STATUS_NOT_PREPARED = 'NOT_PREPARED'
+
+ +
+
+HOST_NODE_DEPLOYMENT_STATUS_PENDING_UPGRADE = 'PENDING_UPGRADE'
+
+ +
+
+HOST_NODE_DEPLOYMENT_STATUS_REGISTRATION_FAILED = 'REGISTRATION_FAILED'
+
+ +
+
+HOST_NODE_DEPLOYMENT_STATUS_REGISTRATION_PENDING = 'REGISTRATION_PENDING'
+
+ +
+
+HOST_NODE_DEPLOYMENT_STATUS_UNINSTALL_FAILED = 'UNINSTALL_FAILED'
+
+ +
+
+HOST_NODE_DEPLOYMENT_STATUS_UNINSTALL_IN_PROGRESS = 'UNINSTALL_IN_PROGRESS'
+
+ +
+
+HOST_NODE_DEPLOYMENT_STATUS_UNINSTALL_SUCCESSFUL = 'UNINSTALL_SUCCESSFUL'
+
+ +
+
+HOST_NODE_DEPLOYMENT_STATUS_UPGRADE_FAILED = 'UPGRADE_FAILED'
+
+ +
+
+HOST_NODE_DEPLOYMENT_STATUS_UPGRADE_IN_PROGRESS = 'UPGRADE_IN_PROGRESS'
+
+ +
+
+HOST_NODE_DEPLOYMENT_STATUS_VM_DEPLOYMENT_FAILED = 'VM_DEPLOYMENT_FAILED'
+
+ +
+
+HOST_NODE_DEPLOYMENT_STATUS_VM_DEPLOYMENT_IN_PROGRESS = 'VM_DEPLOYMENT_IN_PROGRESS'
+
+ +
+
+HOST_NODE_DEPLOYMENT_STATUS_VM_DEPLOYMENT_QUEUED = 'VM_DEPLOYMENT_QUEUED'
+
+ +
+
+HOST_NODE_DEPLOYMENT_STATUS_VM_DEPLOYMENT_RESTARTED = 'VM_DEPLOYMENT_RESTARTED'
+
+ +
+
+HOST_NODE_DEPLOYMENT_STATUS_VM_POWER_OFF_FAILED = 'VM_POWER_OFF_FAILED'
+
+ +
+
+HOST_NODE_DEPLOYMENT_STATUS_VM_POWER_OFF_IN_PROGRESS = 'VM_POWER_OFF_IN_PROGRESS'
+
+ +
+
+HOST_NODE_DEPLOYMENT_STATUS_VM_POWER_ON_FAILED = 'VM_POWER_ON_FAILED'
+
+ +
+
+HOST_NODE_DEPLOYMENT_STATUS_VM_POWER_ON_IN_PROGRESS = 'VM_POWER_ON_IN_PROGRESS'
+
+ +
+
+HOST_NODE_DEPLOYMENT_STATUS_VM_UNDEPLOY_FAILED = 'VM_UNDEPLOY_FAILED'
+
+ +
+
+HOST_NODE_DEPLOYMENT_STATUS_VM_UNDEPLOY_IN_PROGRESS = 'VM_UNDEPLOY_IN_PROGRESS'
+
+ +
+
+HOST_NODE_DEPLOYMENT_STATUS_VM_UNDEPLOY_SUCCESSFUL = 'VM_UNDEPLOY_SUCCESSFUL'
+
+ +
+
+LCP_CONNECTIVITY_STATUS_DEGRADED = 'DEGRADED'
+
+ +
+
+LCP_CONNECTIVITY_STATUS_DOWN = 'DOWN'
+
+ +
+
+LCP_CONNECTIVITY_STATUS_UNKNOWN = 'UNKNOWN'
+
+ +
+
+LCP_CONNECTIVITY_STATUS_UP = 'UP'
+
+ +
+
+MAINTENANCE_MODE_ENTERING = 'ENTERING'
+
+ +
+
+MAINTENANCE_MODE_EXITING = 'EXITING'
+
+ +
+
+MAINTENANCE_MODE_OFF = 'OFF'
+
+ +
+
+MAINTENANCE_MODE_ON = 'ON'
+
+ +
+
+MPA_CONNECTIVITY_STATUS_DOWN = 'DOWN'
+
+ +
+
+MPA_CONNECTIVITY_STATUS_UNKNOWN = 'UNKNOWN'
+
+ +
+
+MPA_CONNECTIVITY_STATUS_UP = 'UP'
+
+ +
+ +
+
+class com.vmware.nsx_policy.model_client.NodeStatusProperties(links=None, schema=None, self_=None, cpu_cores=None, file_systems=None, load_average=None, mem_cache=None, mem_total=None, mem_used=None, source=None, swap_total=None, swap_used=None, system_time=None, uptime=None)
+

Bases: vmware.vapi.bindings.struct.VapiStruct

+

Node status properties

+
+

Tip

+

The arguments are used to initialize data attributes with the same +names.

+
+
+
+SOURCE_CACHED = 'cached'
+
+ +
+
+SOURCE_REALTIME = 'realtime'
+
+ +
+ +
+
+class com.vmware.nsx_policy.model_client.NodeUserSettings(audit_password=None, audit_username=None, cli_password=None, cli_username=None, root_password=None)
+

Bases: vmware.vapi.bindings.struct.VapiStruct

+
+

Tip

+

The arguments are used to initialize data attributes with the same +names.

+
+
+ +
+
+class com.vmware.nsx_policy.model_client.NormalizedResourceListResult(links=None, schema=None, self_=None, cursor=None, result_count=None, sort_ascending=None, sort_by=None, results=None)
+

Bases: vmware.vapi.bindings.struct.VapiStruct

+

Paged Collection of normalized resources

+
+

Tip

+

The arguments are used to initialize data attributes with the same +names.

+
+
+ +
+
+class com.vmware.nsx_policy.model_client.NsxRole(permissions=None, role=None)
+

Bases: vmware.vapi.bindings.struct.VapiStruct

+

Role

+
+

Tip

+

The arguments are used to initialize data attributes with the same +names.

+
+
+
+PERMISSIONS_CRUD = 'crud'
+
+ +
+
+PERMISSIONS_EXECUTE = 'execute'
+
+ +
+
+PERMISSIONS_NONE = 'none'
+
+ +
+
+PERMISSIONS_READ = 'read'
+
+ +
+
+PERMISSIONS_READ_API = 'read-api'
+
+ +
+
+PERMISSIONS_READ_WRITE_API = 'read-write-api'
+
+ +
+
+ROLE_AUDITOR = 'auditor'
+
+ +
+
+ROLE_CLOUD_ADMIN = 'cloud_admin'
+
+ +
+
+ROLE_CLOUD_AUDITOR = 'cloud_auditor'
+
+ +
+
+ROLE_CLOUD_SERVICE_ADMIN = 'cloud_service_admin'
+
+ +
+
+ROLE_CLOUD_SERVICE_AUDITOR = 'cloud_service_auditor'
+
+ +
+
+ROLE_ENTERPRISE_ADMIN = 'enterprise_admin'
+
+ +
+
+ROLE_LB_ADMIN = 'lb_admin'
+
+ +
+
+ROLE_LB_AUDITOR = 'lb_auditor'
+
+ +
+
+ROLE_NETWORK_ENGINEER = 'network_engineer'
+
+ +
+
+ROLE_NETWORK_OP = 'network_op'
+
+ +
+
+ROLE_READ_ONLY_API_USERS = 'read_only_api_users'
+
+ +
+
+ROLE_READ_WRITE_API_USERS = 'read_write_api_users'
+
+ +
+
+ROLE_SECURITY_ENGINEER = 'security_engineer'
+
+ +
+
+ROLE_SECURITY_OP = 'security_op'
+
+ +
+
+ROLE_SITE_RELIABILITY_AUDITOR = 'site_reliability_auditor'
+
+ +
+
+ROLE_SITE_RELIABILITY_ENGINEER = 'site_reliability_engineer'
+
+ +
+ +
+
+class com.vmware.nsx_policy.model_client.ObjectRolePermissionGroup(links=None, schema=None, self_=None, revision=None, create_time=None, create_user=None, last_modified_time=None, last_modified_user=None, protection=None, system_owned=None, description=None, display_name=None, id=None, resource_type=None, tags=None, operation=None, path_prefix=None, role_name=None, rule_disabled=None)
+

Bases: vmware.vapi.bindings.struct.VapiStruct

+

RBAC Objects qualifier

+
+

Tip

+

The arguments are used to initialize data attributes with the same +names.

+
+
+
+OPERATION_CRUD = 'crud'
+
+ +
+
+OPERATION_EXECUTE = 'execute'
+
+ +
+
+OPERATION_NONE = 'none'
+
+ +
+
+OPERATION_READ = 'read'
+
+ +
+ +
+
+class com.vmware.nsx_policy.model_client.ObjectRolePermissionGroupListResult(links=None, schema=None, self_=None, cursor=None, result_count=None, sort_ascending=None, sort_by=None, results=None)
+

Bases: vmware.vapi.bindings.struct.VapiStruct

+

Paged collection of RBAC Objects

+
+

Tip

+

The arguments are used to initialize data attributes with the same +names.

+
+
+ +
+ +

Bases: vmware.vapi.bindings.struct.VapiStruct

+

The server will populate this field when returing the resource. Ignored on +PUT and POST.

+
+

Tip

+

The arguments are used to initialize data attributes with the same +names.

+
+
+ +
+
+class com.vmware.nsx_policy.model_client.PBRRule(links=None, schema=None, self_=None, revision=None, owner=None, description=None, display_name=None, id=None, resource_type=None, action=None, applied_tos=None, destinations=None, disabled=None, logged=None, notes=None, rule_tag=None, services=None, sources=None)
+

Bases: vmware.vapi.bindings.struct.VapiStruct

+
+

Tip

+

The arguments are used to initialize data attributes with the same +names.

+
+
+
+ACTION_OVERLAY = 'ROUTE_TO_OVERLAY'
+
+ +
+
+ACTION_OVERLAY_NAT = 'ROUTE_TO_OVERLAY_NAT'
+
+ +
+
+ACTION_UNDERLAY = 'ROUTE_TO_UNDERLAY'
+
+ +
+
+ACTION_UNDERLAY_NAT = 'ROUTE_TO_UNDERLAY_NAT'
+
+ +
+ +
+
+class com.vmware.nsx_policy.model_client.PBRRuleListResult(links=None, schema=None, self_=None, cursor=None, result_count=None, sort_ascending=None, sort_by=None, results=None)
+

Bases: vmware.vapi.bindings.struct.VapiStruct

+
+

Tip

+

The arguments are used to initialize data attributes with the same +names.

+
+
+ +
+
+class com.vmware.nsx_policy.model_client.PBRSection(links=None, schema=None, self_=None, revision=None, create_time=None, create_user=None, last_modified_time=None, last_modified_user=None, protection=None, system_owned=None, description=None, display_name=None, id=None, resource_type=None, tags=None, rule_count=None)
+

Bases: vmware.vapi.bindings.struct.VapiStruct

+
+

Tip

+

The arguments are used to initialize data attributes with the same +names.

+
+
+ +
+
+class com.vmware.nsx_policy.model_client.PBRSectionListResult(links=None, schema=None, self_=None, cursor=None, result_count=None, sort_ascending=None, sort_by=None, results=None)
+

Bases: vmware.vapi.bindings.struct.VapiStruct

+
+

Tip

+

The arguments are used to initialize data attributes with the same +names.

+
+
+ +
+
+class com.vmware.nsx_policy.model_client.PBRSectionRuleList(links=None, schema=None, self_=None, revision=None, create_time=None, create_user=None, last_modified_time=None, last_modified_user=None, protection=None, system_owned=None, description=None, display_name=None, id=None, resource_type=None, tags=None, rule_count=None, rules=None)
+

Bases: vmware.vapi.bindings.struct.VapiStruct

+
+

Tip

+

The arguments are used to initialize data attributes with the same +names.

+
+
+ +
+
+class com.vmware.nsx_policy.model_client.PBRService(is_valid=None, target_display_name=None, target_id=None, target_type=None, service=None)
+

Bases: vmware.vapi.bindings.struct.VapiStruct

+

Type to define services associated with every rule

+
+

Tip

+

The arguments are used to initialize data attributes with the same +names.

+
+
+ +
+
+class com.vmware.nsx_policy.model_client.PackageStore(bulletin_ids=None, package_url=None)
+

Bases: vmware.vapi.bindings.struct.VapiStruct

+

Contains package information

+
+

Tip

+

The arguments are used to initialize data attributes with the same +names.

+
+
+ +
+
+class com.vmware.nsx_policy.model_client.PacketAddressClassifier(ip_address=None, mac_address=None, vlan=None)
+

Bases: vmware.vapi.bindings.struct.VapiStruct

+

A packet is classified to have an address binding, if its address +configuration matches with all user specified properties.

+
+

Tip

+

The arguments are used to initialize data attributes with the same +names.

+
+
+ +
+
+class com.vmware.nsx_policy.model_client.PacketCaptureOption(name=None, value=None)
+

Bases: vmware.vapi.bindings.struct.VapiStruct

+

The option is used to filter data on given node.

+
+

Tip

+

The arguments are used to initialize data attributes with the same +names.

+
+
+
+NAME_DSTIP = 'DSTIP'
+
+ +
+
+NAME_DSTMAC = 'DSTMAC'
+
+ +
+
+NAME_DSTPORT = 'DSTPORT'
+
+ +
+
+NAME_ETHTYPE = 'ETHTYPE'
+
+ +
+
+NAME_IP = 'IP'
+
+ +
+
+NAME_IPPROTO = 'IPPROTO'
+
+ +
+
+NAME_MAC = 'MAC'
+
+ +
+
+NAME_PORT = 'PORT'
+
+ +
+
+NAME_SRCIP = 'SRCIP'
+
+ +
+
+NAME_SRCMAC = 'SRCMAC'
+
+ +
+
+NAME_SRCPORT = 'SRCPORT'
+
+ +
+
+NAME_VLAN = 'VLAN'
+
+ +
+
+NAME_VNI = 'VNI'
+
+ +
+ +
+
+class com.vmware.nsx_policy.model_client.PacketCaptureOptionList(links=None, schema=None, self_=None, cursor=None, result_count=None, sort_ascending=None, sort_by=None, values=None)
+

Bases: vmware.vapi.bindings.struct.VapiStruct

+

List of packet capture options to filter data in capture process.

+
+

Tip

+

The arguments are used to initialize data attributes with the same +names.

+
+
+ +
+
+class com.vmware.nsx_policy.model_client.PacketCaptureRequest(capamount=None, capduration=None, capfilesize=None, capmode=None, cappoint=None, caprate=None, capsource=None, capvalue=None, direction=None, filtertype=None, node=None, options=None, streamaddress=None, streamport=None)
+

Bases: vmware.vapi.bindings.struct.VapiStruct

+

This type is used to create packet request on give node. Need to specify +related parameters according to the capture point.

+
+

Tip

+

The arguments are used to initialize data attributes with the same +names.

+
+
+
+CAPMODE_STANDALONE = 'STANDALONE'
+
+ +
+
+CAPMODE_STREAM = 'STREAM'
+
+ +
+
+CAPPOINT_DVFILTER = 'DVFILTER'
+
+ +
+
+CAPPOINT_LOGICALPORT = 'LOGICALPORT'
+
+ +
+
+CAPPOINT_OTHERS = 'OTHERS'
+
+ +
+
+CAPPOINT_VDRPORT = 'VDRPORT'
+
+ +
+
+CAPPOINT_VMKNIC = 'VMKNIC'
+
+ +
+
+CAPPOINT_VMNIC = 'VMNIC'
+
+ +
+
+CAPPOINT_VNIC = 'VNIC'
+
+ +
+
+CAPSOURCE_CLI = 'CLI'
+
+ +
+
+CAPSOURCE_UI = 'UI'
+
+ +
+
+DIRECTION_DUAL = 'DUAL'
+
+ +
+
+DIRECTION_INPUT = 'INPUT'
+
+ +
+
+DIRECTION_OUTPUT = 'OUTPUT'
+
+ +
+
+FILTERTYPE_POST = 'POST'
+
+ +
+
+FILTERTYPE_PRE = 'PRE'
+
+ +
+ +
+
+class com.vmware.nsx_policy.model_client.PacketCaptureSession(endtime=None, errormsg=None, filelocation=None, filesize=None, request=None, sessionid=None, sessionname=None, sessionstatus=None, starttime=None)
+

Bases: vmware.vapi.bindings.struct.VapiStruct

+

Packet capture response information

+
+

Tip

+

The arguments are used to initialize data attributes with the same +names.

+
+
+
+SESSIONSTATUS_CREATED = 'CREATED'
+
+ +
+
+SESSIONSTATUS_ERROR = 'ERROR'
+
+ +
+
+SESSIONSTATUS_FINISHED = 'FINISHED'
+
+ +
+
+SESSIONSTATUS_STARTED = 'STARTED'
+
+ +
+
+SESSIONSTATUS_STOPPED = 'STOPPED'
+
+ +
+ +
+
+class com.vmware.nsx_policy.model_client.PacketCaptureSessionList(links=None, schema=None, self_=None, cursor=None, result_count=None, sort_ascending=None, sort_by=None, results=None)
+

Bases: vmware.vapi.bindings.struct.VapiStruct

+
+

Tip

+

The arguments are used to initialize data attributes with the same +names.

+
+
+ +
+
+class com.vmware.nsx_policy.model_client.PartnerServiceEULAStatus(accepted=None, eula_link=None)
+

Bases: vmware.vapi.bindings.struct.VapiStruct

+

EULA status for partner service per user

+
+

Tip

+

The arguments are used to initialize data attributes with the same +names.

+
+
+ +
+
+class com.vmware.nsx_policy.model_client.PerStepRestoreStatus(description=None, value=None)
+

Bases: vmware.vapi.bindings.struct.VapiStruct

+

Restore step status

+
+

Tip

+

The arguments are used to initialize data attributes with the same +names.

+
+
+
+VALUE_FAILED = 'FAILED'
+
+ +
+
+VALUE_INITIAL = 'INITIAL'
+
+ +
+
+VALUE_RUNNING = 'RUNNING'
+
+ +
+
+VALUE_SUCCESS = 'SUCCESS'
+
+ +
+
+VALUE_SUSPENDED_BY_USER = 'SUSPENDED_BY_USER'
+
+ +
+
+VALUE_SUSPENDED_FOR_USER_ACTION = 'SUSPENDED_FOR_USER_ACTION'
+
+ +
+ +
+
+class com.vmware.nsx_policy.model_client.Pnic(device_name=None, uplink_name=None)
+

Bases: vmware.vapi.bindings.struct.VapiStruct

+

Physical NIC specification

+
+

Tip

+

The arguments are used to initialize data attributes with the same +names.

+
+
+ +
+
+class com.vmware.nsx_policy.model_client.PnicBondStatus(name=None, status=None, type=None)
+

Bases: vmware.vapi.bindings.struct.VapiStruct

+

pNIC/bond statuses

+
+

Tip

+

The arguments are used to initialize data attributes with the same +names.

+
+
+
+STATUS_DEGRADED = 'DEGRADED'
+
+ +
+
+STATUS_DOWN = 'DOWN'
+
+ +
+
+STATUS_UNKNOWN = 'UNKNOWN'
+
+ +
+
+STATUS_UP = 'UP'
+
+ +
+
+TYPE_BOND = 'BOND'
+
+ +
+
+TYPE_PNIC = 'PNIC'
+
+ +
+
+TYPE_UNKNOWN_TYPE = 'UNKNOWN_TYPE'
+
+ +
+ +
+
+class com.vmware.nsx_policy.model_client.PnicBondStatusListResult(links=None, schema=None, self_=None, cursor=None, result_count=None, sort_ascending=None, sort_by=None, results=None)
+

Bases: vmware.vapi.bindings.struct.VapiStruct

+

This object contains reference to list of pNIC/bond statuses

+
+

Tip

+

The arguments are used to initialize data attributes with the same +names.

+
+
+ +
+
+class com.vmware.nsx_policy.model_client.PnicMirrorDestination(dest_pnics=None, node_id=None, resource_type='PnicMirrorDestination')
+

Bases: vmware.vapi.bindings.struct.VapiStruct

+
+

Tip

+

The arguments are used to initialize data attributes with the same +names.

+
+
+ +
+
+class com.vmware.nsx_policy.model_client.PnicMirrorSource(encapsulated=None, node_id=None, source_pnics=None, resource_type='PnicMirrorSource')
+

Bases: vmware.vapi.bindings.struct.VapiStruct

+
+

Tip

+

The arguments are used to initialize data attributes with the same +names.

+
+
+ +
+
+class com.vmware.nsx_policy.model_client.PolicyAlarmResource(links=None, schema=None, self_=None, revision=None, create_time=None, create_user=None, last_modified_time=None, last_modified_user=None, protection=None, system_owned=None, description=None, display_name=None, id=None, resource_type=None, tags=None, parent_path=None, path=None, relative_path=None, message=None)
+

Bases: vmware.vapi.bindings.struct.VapiStruct

+

Alarm base class of realized policy object

+
+

Tip

+

The arguments are used to initialize data attributes with the same +names.

+
+
+ +
+
+class com.vmware.nsx_policy.model_client.PolicyAssociationsListResult(links=None, schema=None, self_=None, cursor=None, result_count=None, sort_ascending=None, sort_by=None, results=None)
+

Bases: vmware.vapi.bindings.struct.VapiStruct

+

Paged Collection for Associations

+
+

Tip

+

The arguments are used to initialize data attributes with the same +names.

+
+
+ +
+
+class com.vmware.nsx_policy.model_client.PolicyBasedIPSecVPNSession(policy_rules=None, links=None, schema=None, self_=None, revision=None, create_time=None, create_user=None, last_modified_time=None, last_modified_user=None, protection=None, system_owned=None, description=None, display_name=None, id=None, resource_type='PolicyBasedIPSecVPNSession', tags=None, enabled=None, ipsec_vpn_service_id=None, local_endpoint_id=None, peer_endpoint_id=None)
+

Bases: vmware.vapi.bindings.struct.VapiStruct

+

A Policy Based VPN requires to define protect rules that match local and +peer subnets. IPSec security associations is negotiated for each pair of +local and peer subnet.

+
+

Tip

+

The arguments are used to initialize data attributes with the same +names.

+
+
+ +
+
+class com.vmware.nsx_policy.model_client.PolicyBasedL3VpnSession(rules=None, resource_type='PolicyBasedL3VpnSession')
+

Bases: vmware.vapi.bindings.struct.VapiStruct

+

A Policy-based L3Vpn session is a configuration in which a specific vpn +tunnel is referenced in a policy whose action is set as tunnel.

+
+

Tip

+

The arguments are used to initialize data attributes with the same +names.

+
+
+ +
+
+class com.vmware.nsx_policy.model_client.PolicyConfigResource(links=None, schema=None, self_=None, revision=None, create_time=None, create_user=None, last_modified_time=None, last_modified_user=None, protection=None, system_owned=None, description=None, display_name=None, id=None, resource_type=None, tags=None, parent_path=None, path=None, relative_path=None, children=None, marked_for_delete=None)
+

Bases: vmware.vapi.bindings.struct.VapiStruct

+

Represents an object on the desired state

+
+

Tip

+

The arguments are used to initialize data attributes with the same +names.

+
+
+ +
+
+class com.vmware.nsx_policy.model_client.PolicyDnsForwarder(links=None, schema=None, self_=None, revision=None, create_time=None, create_user=None, last_modified_time=None, last_modified_user=None, protection=None, system_owned=None, description=None, display_name=None, id=None, resource_type=None, tags=None, parent_path=None, path=None, relative_path=None, children=None, marked_for_delete=None, conditional_forwarder_zone_paths=None, default_forwarder_zone_path=None, listener_ip=None, log_level=None)
+

Bases: vmware.vapi.bindings.struct.VapiStruct

+

Used to configure DNS Forwarder

+
+

Tip

+

The arguments are used to initialize data attributes with the same +names.

+
+
+
+LOG_LEVEL_DEBUG = 'DEBUG'
+
+ +
+
+LOG_LEVEL_DISABLED = 'DISABLED'
+
+ +
+
+LOG_LEVEL_ERROR = 'ERROR'
+
+ +
+
+LOG_LEVEL_FATAL = 'FATAL'
+
+ +
+
+LOG_LEVEL_INFO = 'INFO'
+
+ +
+
+LOG_LEVEL_TRACE = 'TRACE'
+
+ +
+
+LOG_LEVEL_WARNING = 'WARNING'
+
+ +
+ +
+
+class com.vmware.nsx_policy.model_client.PolicyDnsForwarderListResult(links=None, schema=None, self_=None, cursor=None, result_count=None, sort_ascending=None, sort_by=None, results=None)
+

Bases: vmware.vapi.bindings.struct.VapiStruct

+

Paged Collection of Dns Forwarders

+
+

Tip

+

The arguments are used to initialize data attributes with the same +names.

+
+
+ +
+
+class com.vmware.nsx_policy.model_client.PolicyDnsForwarderZone(links=None, schema=None, self_=None, revision=None, create_time=None, create_user=None, last_modified_time=None, last_modified_user=None, protection=None, system_owned=None, description=None, display_name=None, id=None, resource_type=None, tags=None, parent_path=None, path=None, relative_path=None, children=None, marked_for_delete=None, dns_domain_names=None, upstream_servers=None)
+

Bases: vmware.vapi.bindings.struct.VapiStruct

+

Used to configure zones on DNS Forwarder

+
+

Tip

+

The arguments are used to initialize data attributes with the same +names.

+
+
+ +
+
+class com.vmware.nsx_policy.model_client.PolicyDnsForwarderZoneListResult(links=None, schema=None, self_=None, cursor=None, result_count=None, sort_ascending=None, sort_by=None, results=None)
+

Bases: vmware.vapi.bindings.struct.VapiStruct

+

Paged Collection of DNS Forwarder Zones

+
+

Tip

+

The arguments are used to initialize data attributes with the same +names.

+
+
+ +
+
+class com.vmware.nsx_policy.model_client.PolicyIPAddressInfo(address_value=None, display_name=None)
+

Bases: vmware.vapi.bindings.struct.VapiStruct

+

Used to specify the display name and value of the IPv4Address.

+
+

Tip

+

The arguments are used to initialize data attributes with the same +names.

+
+
+ +
+
+class com.vmware.nsx_policy.model_client.PolicyLabel(links=None, schema=None, self_=None, revision=None, create_time=None, create_user=None, last_modified_time=None, last_modified_user=None, protection=None, system_owned=None, description=None, display_name=None, id=None, resource_type=None, tags=None, parent_path=None, path=None, relative_path=None, children=None, marked_for_delete=None, refs=None, type=None)
+

Bases: vmware.vapi.bindings.struct.VapiStruct

+

Label to reference group of policy entities of same type.

+
+

Tip

+

The arguments are used to initialize data attributes with the same +names.

+
+
+ +
+
+class com.vmware.nsx_policy.model_client.PolicyLabelListResult(links=None, schema=None, self_=None, cursor=None, result_count=None, sort_ascending=None, sort_by=None, results=None)
+

Bases: vmware.vapi.bindings.struct.VapiStruct

+

Paged Collection of Domains

+
+

Tip

+

The arguments are used to initialize data attributes with the same +names.

+
+
+ +
+
+class com.vmware.nsx_policy.model_client.PolicyLbMonitorProfile(links=None, schema=None, self_=None, revision=None, create_time=None, create_user=None, last_modified_time=None, last_modified_user=None, protection=None, system_owned=None, description=None, display_name=None, id=None, resource_type='PolicyLbMonitorProfile', tags=None, parent_path=None, path=None, relative_path=None, children=None, marked_for_delete=None, fall_count=None, interval=None, monitor_port=None, rise_count=None, timeout=None)
+

Bases: vmware.vapi.bindings.struct.VapiStruct

+

All the types of PolicyLbMonitorProfile extend from this abstract class. +This is present for extensibility.

+
+

Tip

+

The arguments are used to initialize data attributes with the same +names.

+
+
+
+RESOURCE_TYPE_HTTPPOLICYLBMONITORPROFILE = 'HttpPolicyLbMonitorProfile'
+
+ +
+
+RESOURCE_TYPE_HTTPSPOLICYLBMONITORPROFILE = 'HttpsPolicyLbMonitorProfile'
+
+ +
+
+RESOURCE_TYPE_ICMPPOLICYLBMONITORPROFILE = 'IcmpPolicyLbMonitorProfile'
+
+ +
+
+RESOURCE_TYPE_TCPPOLICYLBMONITORPROFILE = 'TcpPolicyLbMonitorProfile'
+
+ +
+
+RESOURCE_TYPE_UDPPOLICYLBMONITORPROFILE = 'UdpPolicyLbMonitorProfile'
+
+ +
+ +
+
+class com.vmware.nsx_policy.model_client.PolicyLbMonitorProfileListResult(links=None, schema=None, self_=None, cursor=None, result_count=None, sort_ascending=None, sort_by=None, results=None)
+

Bases: vmware.vapi.bindings.struct.VapiStruct

+

Paged Collection of PolicyLbMonitorProfiles

+
+

Tip

+

The arguments are used to initialize data attributes with the same +names.

+
+
+ +
+
+class com.vmware.nsx_policy.model_client.PolicyLbPersistenceProfile(links=None, schema=None, self_=None, revision=None, create_time=None, create_user=None, last_modified_time=None, last_modified_user=None, protection=None, system_owned=None, description=None, display_name=None, id=None, resource_type='PolicyLbPersistenceProfile', tags=None, parent_path=None, path=None, relative_path=None, children=None, marked_for_delete=None)
+

Bases: vmware.vapi.bindings.struct.VapiStruct

+

Some applications maintain state and require all relevant connections to be +sent to the same server as the application state is not synchronized among +servers. Persistence is enabled on a PolicyLbVirtualServer by binding a +persistence profile to it.

+
+

Tip

+

The arguments are used to initialize data attributes with the same +names.

+
+
+
+RESOURCE_TYPE_CUSTOMPOLICYLBPERSISTENCEPROFILE = 'CustomPolicyLbPersistenceProfile'
+
+ +
+
+RESOURCE_TYPE_L4POLICYLBPERSISTENCEPROFILE = 'L4PolicyLbPersistenceProfile'
+
+ +
+
+RESOURCE_TYPE_L7POLICYLBPERSISTENCEPROFILE = 'L7PolicyLbPersistenceProfile'
+
+ +
+ +
+
+class com.vmware.nsx_policy.model_client.PolicyLbPersistenceProfileListResult(links=None, schema=None, self_=None, cursor=None, result_count=None, sort_ascending=None, sort_by=None, results=None)
+

Bases: vmware.vapi.bindings.struct.VapiStruct

+

Paged Collection of PolicyLbPersistenceProfiles

+
+

Tip

+

The arguments are used to initialize data attributes with the same +names.

+
+
+ +
+
+class com.vmware.nsx_policy.model_client.PolicyLbPoolAccess(links=None, schema=None, self_=None, revision=None, create_time=None, create_user=None, last_modified_time=None, last_modified_user=None, protection=None, system_owned=None, description=None, display_name=None, id=None, resource_type=None, tags=None, parent_path=None, path=None, relative_path=None, children=None, marked_for_delete=None, algorithm=None, ip_port_list=None, lb_monitor_profile=None, pool_port=None)
+

Bases: vmware.vapi.bindings.struct.VapiStruct

+

Defining access of a Group from a PolicyLbVirtualServer and binding to +PolicyLbMonitorProfile.

+
+

Tip

+

The arguments are used to initialize data attributes with the same +names.

+
+
+
+ALGORITHM_LEAST_CONNECTION = 'LEAST_CONNECTION'
+
+ +
+
+ALGORITHM_ROUND_ROBIN = 'ROUND_ROBIN'
+
+ +
+ +
+
+class com.vmware.nsx_policy.model_client.PolicyLbPoolAccessListResult(links=None, schema=None, self_=None, cursor=None, result_count=None, sort_ascending=None, sort_by=None, results=None)
+

Bases: vmware.vapi.bindings.struct.VapiStruct

+

Paged Collection of PolicyLbPoolAccess

+
+

Tip

+

The arguments are used to initialize data attributes with the same +names.

+
+
+ +
+
+class com.vmware.nsx_policy.model_client.PolicyLbRule(links=None, schema=None, self_=None, revision=None, create_time=None, create_user=None, last_modified_time=None, last_modified_user=None, protection=None, system_owned=None, description=None, display_name=None, id=None, resource_type=None, tags=None, parent_path=None, path=None, relative_path=None, children=None, marked_for_delete=None, host_match=None, lb_virtual_server=None, match_strategy=None, path_match=None, sequence_number=None)
+

Bases: vmware.vapi.bindings.struct.VapiStruct

+

Binding of a LbPoolAccess and Group to a PolicyLbVirtualServer used to +route application traffic passing through load balancers. PolicyLbRule uses +match conditions to match application traffic passing through a +PolicyLbVirtualServer using HTTP or HTTPS. Can bind multiple +PolicyLbVirtualServers to a Group. Each PolicyLbRule consists of two +optional match conditions, each match contidion defines a criterion for +application traffic. If no match conditions are specified, then the +PolicyLbRule will always match and it is used typically to define default +rules. If more than one match condition is specified, then matching +strategy determines if all conditions should match or any one condition +should match for the PolicyLbRule to be considered a match. A match +indicates that the PolicyLbVirtualServer should route the request to the +Group (parent of PolicyLbRule).

+
+

Tip

+

The arguments are used to initialize data attributes with the same +names.

+
+
+
+MATCH_STRATEGY_ALL = 'ALL'
+
+ +
+
+MATCH_STRATEGY_ANY = 'ANY'
+
+ +
+ +
+
+class com.vmware.nsx_policy.model_client.PolicyLbRuleListResult(links=None, schema=None, self_=None, cursor=None, result_count=None, sort_ascending=None, sort_by=None, results=None)
+

Bases: vmware.vapi.bindings.struct.VapiStruct

+

Paged Collection of PolicyLbRules

+
+

Tip

+

The arguments are used to initialize data attributes with the same +names.

+
+
+ +
+
+class com.vmware.nsx_policy.model_client.PolicyLbVirtualServer(links=None, schema=None, self_=None, revision=None, create_time=None, create_user=None, last_modified_time=None, last_modified_user=None, protection=None, system_owned=None, description=None, display_name=None, id=None, resource_type='PolicyLbVirtualServer', tags=None, parent_path=None, path=None, relative_path=None, children=None, marked_for_delete=None, access_log_enabled=None, ip_address=None, lb_persistence_profile=None, ports=None, router_path=None, traffic_source=None)
+

Bases: vmware.vapi.bindings.struct.VapiStruct

+

All the types of PolicyLbVirtualServer extend from this abstract class. +This is present for extensibility.

+
+

Tip

+

The arguments are used to initialize data attributes with the same +names.

+
+
+
+RESOURCE_TYPE_CUSTOMPOLICYLBVIRTUALSERVER = 'CustomPolicyLbVirtualServer'
+
+ +
+
+RESOURCE_TYPE_HTTPPOLICYLBVIRTUALSERVER = 'HttpPolicyLbVirtualServer'
+
+ +
+
+RESOURCE_TYPE_HTTPSPOLICYLBVIRTUALSERVER = 'HttpsPolicyLbVirtualServer'
+
+ +
+
+RESOURCE_TYPE_TCPPOLICYLBVIRTUALSERVER = 'TcpPolicyLbVirtualServer'
+
+ +
+
+RESOURCE_TYPE_UDPPOLICYLBVIRTUALSERVER = 'UdpPolicyLbVirtualServer'
+
+ +
+
+TRAFFIC_SOURCE_EXTERNAL_PUBLIC = 'EXTERNAL_PUBLIC'
+
+ +
+
+TRAFFIC_SOURCE_EXTERNAL_VPN = 'EXTERNAL_VPN'
+
+ +
+
+TRAFFIC_SOURCE_INTERNAL = 'INTERNAL'
+
+ +
+ +
+
+class com.vmware.nsx_policy.model_client.PolicyLbVirtualServerListResult(links=None, schema=None, self_=None, cursor=None, result_count=None, sort_ascending=None, sort_by=None, results=None)
+

Bases: vmware.vapi.bindings.struct.VapiStruct

+

Paged Collection of PolicyLbVirtualServers

+
+

Tip

+

The arguments are used to initialize data attributes with the same +names.

+
+
+ +
+
+class com.vmware.nsx_policy.model_client.PolicyNat(links=None, schema=None, self_=None, revision=None, create_time=None, create_user=None, last_modified_time=None, last_modified_user=None, protection=None, system_owned=None, description=None, display_name=None, id=None, resource_type=None, tags=None, parent_path=None, path=None, relative_path=None, children=None, marked_for_delete=None, nat_type=None)
+

Bases: vmware.vapi.bindings.struct.VapiStruct

+

Represents NAT section. This object is created by default when +corresponding Network is created. Under Network there will be 3 different +NATs(sections). (INTERNAL, USER and DEFAULT).

+
+

Tip

+

The arguments are used to initialize data attributes with the same +names.

+
+
+
+NAT_TYPE_DEFAULT = 'DEFAULT'
+
+ +
+
+NAT_TYPE_INTERNAL = 'INTERNAL'
+
+ +
+
+NAT_TYPE_USER = 'USER'
+
+ +
+ +
+
+class com.vmware.nsx_policy.model_client.PolicyNatRule(links=None, schema=None, self_=None, revision=None, create_time=None, create_user=None, last_modified_time=None, last_modified_user=None, protection=None, system_owned=None, description=None, display_name=None, id=None, resource_type=None, tags=None, parent_path=None, path=None, relative_path=None, children=None, marked_for_delete=None, action=None, destination_network=None, scope=None, sequence_number=None, service=None, source_network=None, translated_network=None, translated_ports=None)
+

Bases: vmware.vapi.bindings.struct.VapiStruct

+

Represents a NAT rule between source and destination at T0/T1 router.

+
+

Tip

+

The arguments are used to initialize data attributes with the same +names.

+
+
+
+ACTION_DNAT = 'DNAT'
+
+ +
+
+ACTION_NO_DNAT = 'NO_DNAT'
+
+ +
+
+ACTION_NO_SNAT = 'NO_SNAT'
+
+ +
+
+ACTION_REFLEXIVE = 'REFLEXIVE'
+
+ +
+
+ACTION_SNAT = 'SNAT'
+
+ +
+ +
+
+class com.vmware.nsx_policy.model_client.PolicyNatRuleListResult(links=None, schema=None, self_=None, cursor=None, result_count=None, sort_ascending=None, sort_by=None, results=None)
+

Bases: vmware.vapi.bindings.struct.VapiStruct

+

Paged Collection of NAT Rules

+
+

Tip

+

The arguments are used to initialize data attributes with the same +names.

+
+
+ +
+
+class com.vmware.nsx_policy.model_client.PolicyRealizedResource(links=None, schema=None, self_=None, revision=None, create_time=None, create_user=None, last_modified_time=None, last_modified_user=None, protection=None, system_owned=None, description=None, display_name=None, id=None, resource_type=None, tags=None, parent_path=None, path=None, relative_path=None, alarms=None, intent_reference=None, realization_specific_identifier=None, runtime_status=None, state=None)
+

Bases: vmware.vapi.bindings.struct.VapiStruct

+

Abstract base class for all the realized policy objects

+
+

Tip

+

The arguments are used to initialize data attributes with the same +names.

+
+
+
+STATE_ERROR = 'ERROR'
+
+ +
+
+STATE_REALIZED = 'REALIZED'
+
+ +
+
+STATE_UNAVAILABLE = 'UNAVAILABLE'
+
+ +
+
+STATE_UNREALIZED = 'UNREALIZED'
+
+ +
+ +
+
+class com.vmware.nsx_policy.model_client.PolicyResource(links=None, schema=None, self_=None, revision=None, create_time=None, create_user=None, last_modified_time=None, last_modified_user=None, protection=None, system_owned=None, description=None, display_name=None, id=None, resource_type=None, tags=None, parent_path=None, path=None, relative_path=None)
+

Bases: vmware.vapi.bindings.struct.VapiStruct

+

Abstract base class for all the policy objects

+
+

Tip

+

The arguments are used to initialize data attributes with the same +names.

+
+
+ +
+
+class com.vmware.nsx_policy.model_client.PolicyResourceReference(is_valid=None, target_display_name=None, target_id=None, target_type=None, path=None)
+

Bases: vmware.vapi.bindings.struct.VapiStruct

+

Policy resource reference

+
+

Tip

+

The arguments are used to initialize data attributes with the same +names.

+
+
+ +
+
+class com.vmware.nsx_policy.model_client.PolicyResourceReferenceListResult(links=None, schema=None, self_=None, cursor=None, result_count=None, sort_ascending=None, sort_by=None, results=None)
+

Bases: vmware.vapi.bindings.struct.VapiStruct

+

Paged Collection of PolicyResourceReference

+
+

Tip

+

The arguments are used to initialize data attributes with the same +names.

+
+
+ +
+
+class com.vmware.nsx_policy.model_client.PolicyRoot(links=None, schema=None, self_=None, revision=None, create_time=None, create_user=None, last_modified_time=None, last_modified_user=None, protection=None, system_owned=None, description=None, display_name=None, id=None, resource_type=None, tags=None, parent_path=None, path=None, relative_path=None, children=None, marked_for_delete=None)
+

Bases: vmware.vapi.bindings.struct.VapiStruct

+

Represents the root of the policy tree

+
+

Tip

+

The arguments are used to initialize data attributes with the same +names.

+
+
+ +
+
+class com.vmware.nsx_policy.model_client.PolicyServiceInstance(links=None, schema=None, self_=None, revision=None, create_time=None, create_user=None, last_modified_time=None, last_modified_user=None, protection=None, system_owned=None, description=None, display_name=None, id=None, resource_type=None, tags=None, parent_path=None, path=None, relative_path=None, children=None, marked_for_delete=None, deployment_mode=None, partner_service_name=None, transport_type=None, attributes=None, compute_id=None, context_id=None, deployment_spec_name=None, deployment_template_name=None, failure_policy=None, primary_interface_mgmt_ip=None, primary_interface_network=None, secondary_interface_mgmt_ip=None, secondary_interface_network=None, storage_id=None)
+

Bases: vmware.vapi.bindings.struct.VapiStruct

+

Represents an instance of partner Service and its configuration.

+
+

Tip

+

The arguments are used to initialize data attributes with the same +names.

+
+
+
+DEPLOYMENT_MODE_ACTIVE_STANDBY = 'ACTIVE_STANDBY'
+
+ +
+
+DEPLOYMENT_MODE_STAND_ALONE = 'STAND_ALONE'
+
+ +
+
+FAILURE_POLICY_ALLOW = 'ALLOW'
+
+ +
+
+FAILURE_POLICY_BLOCK = 'BLOCK'
+
+ +
+
+TRANSPORT_TYPE_L2_BRIDGE = 'L2_BRIDGE'
+
+ +
+
+TRANSPORT_TYPE_L3_ROUTED = 'L3_ROUTED'
+
+ +
+ +
+
+class com.vmware.nsx_policy.model_client.PolicyServiceInstanceListResult(links=None, schema=None, self_=None, cursor=None, result_count=None, sort_ascending=None, sort_by=None, results=None)
+

Bases: vmware.vapi.bindings.struct.VapiStruct

+

Collection of only SI objects

+
+

Tip

+

The arguments are used to initialize data attributes with the same +names.

+
+
+ +
+
+class com.vmware.nsx_policy.model_client.PolicyTemplate(links=None, schema=None, self_=None, revision=None, create_time=None, create_user=None, last_modified_time=None, last_modified_user=None, protection=None, system_owned=None, description=None, display_name=None, id=None, resource_type=None, tags=None, template_body=None, template_placeholders=None)
+

Bases: vmware.vapi.bindings.struct.VapiStruct

+

Policy Template

+
+

Tip

+

The arguments are used to initialize data attributes with the same +names.

+
+
+ +
+
+class com.vmware.nsx_policy.model_client.PolicyTemplateListResult(links=None, schema=None, self_=None, cursor=None, result_count=None, sort_ascending=None, sort_by=None, results=None)
+

Bases: vmware.vapi.bindings.struct.VapiStruct

+

Paged Collection of Policy Templates

+
+

Tip

+

The arguments are used to initialize data attributes with the same +names.

+
+
+ +
+
+class com.vmware.nsx_policy.model_client.PolicyTemplateParameter(parameter_id=None, parameter_value=None)
+

Bases: vmware.vapi.bindings.struct.VapiStruct

+

Policy template parameter

+
+

Tip

+

The arguments are used to initialize data attributes with the same +names.

+
+
+ +
+
+class com.vmware.nsx_policy.model_client.PolicyTemplateParameters(placeholders=None)
+

Bases: vmware.vapi.bindings.struct.VapiStruct

+

Policy template parameters

+
+

Tip

+

The arguments are used to initialize data attributes with the same +names.

+
+
+ +
+
+class com.vmware.nsx_policy.model_client.PolicyTemplatePlaceholder(placeholder_id=None, placeholder_message=None)
+

Bases: vmware.vapi.bindings.struct.VapiStruct

+

Policy template placeholdder

+
+

Tip

+

The arguments are used to initialize data attributes with the same +names.

+
+
+ +
+
+class com.vmware.nsx_policy.model_client.PoolMember(admin_state=None, backup_member=None, display_name=None, ip_address=None, max_concurrent_connections=None, port=None, weight=None)
+

Bases: vmware.vapi.bindings.struct.VapiStruct

+
+

Tip

+

The arguments are used to initialize data attributes with the same +names.

+
+
+
+ADMIN_STATE_DISABLED = 'DISABLED'
+
+ +
+
+ADMIN_STATE_ENABLED = 'ENABLED'
+
+ +
+
+ADMIN_STATE_GRACEFUL_DISABLED = 'GRACEFUL_DISABLED'
+
+ +
+ +
+
+class com.vmware.nsx_policy.model_client.PoolMemberGroup(customized_members=None, grouping_object=None, ip_revision_filter=None, max_ip_list_size=None, port=None)
+

Bases: vmware.vapi.bindings.struct.VapiStruct

+
+

Tip

+

The arguments are used to initialize data attributes with the same +names.

+
+
+
+IP_REVISION_FILTER_IPV4 = 'IPV4'
+
+ +
+
+IP_REVISION_FILTER_IPV4_IPV6 = 'IPV4_IPV6'
+
+ +
+
+IP_REVISION_FILTER_IPV6 = 'IPV6'
+
+ +
+ +
+
+class com.vmware.nsx_policy.model_client.PoolMemberSetting(admin_state=None, display_name=None, ip_address=None, port=None, weight=None)
+

Bases: vmware.vapi.bindings.struct.VapiStruct

+

The setting is used to add, update or remove pool members from pool. For +static pool members, admin_state, display_name and weight can be updated. +For dynamic pool members, only admin_state can be updated.

+
+

Tip

+

The arguments are used to initialize data attributes with the same +names.

+
+
+
+ADMIN_STATE_DISABLED = 'DISABLED'
+
+ +
+
+ADMIN_STATE_ENABLED = 'ENABLED'
+
+ +
+
+ADMIN_STATE_GRACEFUL_DISABLED = 'GRACEFUL_DISABLED'
+
+ +
+ +
+
+class com.vmware.nsx_policy.model_client.PoolUsage(allocated_ids=None, free_ids=None, total_ids=None)
+

Bases: vmware.vapi.bindings.struct.VapiStruct

+

Pool usage statistics in a pool.

+
+

Tip

+

The arguments are used to initialize data attributes with the same +names.

+
+
+ +
+
+class com.vmware.nsx_policy.model_client.PortMirroringInstance(links=None, schema=None, self_=None, revision=None, create_time=None, create_user=None, last_modified_time=None, last_modified_user=None, protection=None, system_owned=None, description=None, display_name=None, id=None, resource_type=None, tags=None, parent_path=None, path=None, relative_path=None, children=None, marked_for_delete=None, destination_group=None, direction=None, snap_length=None)
+

Bases: vmware.vapi.bindings.struct.VapiStruct

+

Mirrors Data from source to destination

+
+

Tip

+

The arguments are used to initialize data attributes with the same +names.

+
+
+
+DIRECTION_BIDIRECTIONAL = 'BIDIRECTIONAL'
+
+ +
+
+DIRECTION_EGRESS = 'EGRESS'
+
+ +
+
+DIRECTION_INGRESS = 'INGRESS'
+
+ +
+ +
+
+class com.vmware.nsx_policy.model_client.PortMirroringInstanceListResult(links=None, schema=None, self_=None, cursor=None, result_count=None, sort_ascending=None, sort_by=None, results=None)
+

Bases: vmware.vapi.bindings.struct.VapiStruct

+

Paged collection of port mirroring instances

+
+

Tip

+

The arguments are used to initialize data attributes with the same +names.

+
+
+ +
+
+class com.vmware.nsx_policy.model_client.PortMirroringSession(links=None, schema=None, self_=None, revision=None, create_time=None, create_user=None, last_modified_time=None, last_modified_user=None, protection=None, system_owned=None, description=None, display_name=None, id=None, resource_type=None, tags=None, direction=None, encapsulation_vlan_id=None, mirror_destination=None, mirror_sources=None, preserve_original_vlan=None, session_type=None, snap_length=None)
+

Bases: vmware.vapi.bindings.struct.VapiStruct

+
+

Tip

+

The arguments are used to initialize data attributes with the same +names.

+
+
+
+DIRECTION_BIDIRECTIONAL = 'BIDIRECTIONAL'
+
+ +
+
+DIRECTION_EGRESS = 'EGRESS'
+
+ +
+
+DIRECTION_INGRESS = 'INGRESS'
+
+ +
+
+SESSION_TYPE_L3PORTMIRRORSESSION = 'L3PortMirrorSession'
+
+ +
+
+SESSION_TYPE_LOCALPORTMIRRORSESSION = 'LocalPortMirrorSession'
+
+ +
+
+SESSION_TYPE_LOGICALLOCALPORTMIRRORSESSION = 'LogicalLocalPortMirrorSession'
+
+ +
+
+SESSION_TYPE_LOGICALPORTMIRRORSESSION = 'LogicalPortMirrorSession'
+
+ +
+
+SESSION_TYPE_RSPANDSTMIRRORSESSION = 'RspanDstMirrorSession'
+
+ +
+
+SESSION_TYPE_RSPANSRCMIRRORSESSION = 'RspanSrcMirrorSession'
+
+ +
+
+SESSION_TYPE_UPLINKPORTMIRRORSESSION = 'UplinkPortMirrorSession'
+
+ +
+ +
+
+class com.vmware.nsx_policy.model_client.PortMirroringSessionListResult(links=None, schema=None, self_=None, cursor=None, result_count=None, sort_ascending=None, sort_by=None, results=None)
+

Bases: vmware.vapi.bindings.struct.VapiStruct

+

Mirror session queries result

+
+

Tip

+

The arguments are used to initialize data attributes with the same +names.

+
+
+ +
+
+class com.vmware.nsx_policy.model_client.PortMirroringSwitchingProfile(destinations=None, direction=None, key=None, snap_length=None, links=None, schema=None, self_=None, revision=None, create_time=None, create_user=None, last_modified_time=None, last_modified_user=None, protection=None, system_owned=None, description=None, display_name=None, id=None, resource_type='PortMirroringSwitchingProfile', tags=None, required_capabilities=None)
+

Bases: vmware.vapi.bindings.struct.VapiStruct

+
+

Tip

+

The arguments are used to initialize data attributes with the same +names.

+
+
+
+DIRECTION_BIDIRECTIONAL = 'BIDIRECTIONAL'
+
+ +
+
+DIRECTION_EGRESS = 'EGRESS'
+
+ +
+
+DIRECTION_INGRESS = 'INGRESS'
+
+ +
+ +
+
+class com.vmware.nsx_policy.model_client.PreconfiguredEndpoint(device_name=None)
+

Bases: vmware.vapi.bindings.struct.VapiStruct

+

Tunnel endpoint configuration of preconfigured host switch

+
+

Tip

+

The arguments are used to initialize data attributes with the same +names.

+
+
+ +
+
+class com.vmware.nsx_policy.model_client.PreconfiguredHostSwitch(endpoints=None, host_switch_id=None)
+

Bases: vmware.vapi.bindings.struct.VapiStruct

+

Preconfigured host switch is used for manually configured transport node.

+
+

Tip

+

The arguments are used to initialize data attributes with the same +names.

+
+
+ +
+
+class com.vmware.nsx_policy.model_client.PreconfiguredHostSwitchSpec(host_switches=None, resource_type='PreconfiguredHostSwitchSpec')
+

Bases: vmware.vapi.bindings.struct.VapiStruct

+

Preconfigured host switch specification is used for manually configured +transport node. It is user’s responsibility to ensure correct configuration +is provided to NSX. This type is only valid for supported KVM fabric nodes.

+
+

Tip

+

The arguments are used to initialize data attributes with the same +names.

+
+
+ +
+
+class com.vmware.nsx_policy.model_client.PrefixConfig(action=None, ge=None, le=None, network=None)
+

Bases: vmware.vapi.bindings.struct.VapiStruct

+
+

Tip

+

The arguments are used to initialize data attributes with the same +names.

+
+
+
+ACTION_DENY = 'DENY'
+
+ +
+
+ACTION_PERMIT = 'PERMIT'
+
+ +
+ +
+
+class com.vmware.nsx_policy.model_client.Principal(attributes=None)
+

Bases: vmware.vapi.bindings.struct.VapiStruct

+
+

Tip

+

The arguments are used to initialize data attributes with the same +names.

+
+
+ +
+
+class com.vmware.nsx_policy.model_client.PrincipalIdentity(links=None, schema=None, self_=None, revision=None, create_time=None, create_user=None, last_modified_time=None, last_modified_user=None, protection=None, system_owned=None, description=None, display_name=None, id=None, resource_type=None, tags=None, certificate_id=None, is_protected=None, name=None, node_id=None, permission_group=None, role=None)
+

Bases: vmware.vapi.bindings.struct.VapiStruct

+
+

Tip

+

The arguments are used to initialize data attributes with the same +names.

+
+
+
+PERMISSION_GROUP_READ_ONLY_API_USERS = 'read_only_api_users'
+
+ +
+
+PERMISSION_GROUP_READ_WRITE_API_USERS = 'read_write_api_users'
+
+ +
+
+PERMISSION_GROUP_SUPERUSERS = 'superusers'
+
+ +
+
+PERMISSION_GROUP_UNDEFINED = 'undefined'
+
+ +
+ +
+
+class com.vmware.nsx_policy.model_client.PrincipalIdentityList(links=None, schema=None, self_=None, cursor=None, result_count=None, sort_ascending=None, sort_by=None, results=None)
+

Bases: vmware.vapi.bindings.struct.VapiStruct

+

PrincipalIdentity query result

+
+

Tip

+

The arguments are used to initialize data attributes with the same +names.

+
+
+ +
+
+class com.vmware.nsx_policy.model_client.ProcessConnection(dest_element_id=None, number_of_events=None, src_element_id=None, dest_port=None, latency=None, packets_rx=None, packets_tx=None, protocol=None, source_ports=None)
+

Bases: vmware.vapi.bindings.struct.VapiStruct

+

ProcessConnection contains the statistic information of the connection +between two processes.

+
+

Tip

+

The arguments are used to initialize data attributes with the same +names.

+
+
+
+PROTOCOL_INVALID = 'INVALID'
+
+ +
+
+PROTOCOL_TCP = 'TCP'
+
+ +
+
+PROTOCOL_UDP = 'UDP'
+
+ +
+ +
+
+class com.vmware.nsx_policy.model_client.ProcessElement(element_id=None, elements=None, resource_name=None, resource_type=None, process_command_line=None)
+

Bases: vmware.vapi.bindings.struct.VapiStruct

+

Process element extends from Element class. This class contains the +information related to the process.

+
+

Tip

+

The arguments are used to initialize data attributes with the same +names.

+
+
+
+RESOURCE_TYPE_GROUPELEMENT = 'GroupElement'
+
+ +
+
+RESOURCE_TYPE_LOGICALSWITCHELEMENT = 'LogicalSwitchElement'
+
+ +
+
+RESOURCE_TYPE_LOGICALT0ROUTERELEMENT = 'LogicalT0RouterElement'
+
+ +
+
+RESOURCE_TYPE_LOGICALT1ROUTERELEMENT = 'LogicalT1RouterElement'
+
+ +
+
+RESOURCE_TYPE_PROCESSELEMENT = 'ProcessElement'
+
+ +
+
+RESOURCE_TYPE_VMELEMENT = 'VMElement'
+
+ +
+ +
+
+class com.vmware.nsx_policy.model_client.PropertyItem(condition=None, field=None, heading=None, label=None, render_configuration=None, type=None)
+

Bases: vmware.vapi.bindings.struct.VapiStruct

+

Represents a label-value pair.

+
+

Tip

+

The arguments are used to initialize data attributes with the same +names.

+
+
+
+TYPE_DATE = 'Date'
+
+ +
+
+TYPE_NUMBER = 'Number'
+
+ +
+
+TYPE_STRING = 'String'
+
+ +
+
+TYPE_URL = 'Url'
+
+ +
+ +
+
+class com.vmware.nsx_policy.model_client.Provider(links=None, schema=None, self_=None, revision=None, create_time=None, create_user=None, last_modified_time=None, last_modified_user=None, protection=None, system_owned=None, description=None, display_name=None, id=None, resource_type=None, tags=None, parent_path=None, path=None, relative_path=None, children=None, marked_for_delete=None, force_whitelisting=None, ha_mode=None, transit_subnet=None)
+

Bases: vmware.vapi.bindings.struct.VapiStruct

+

Provider configuration for external connectivity

+
+

Tip

+

The arguments are used to initialize data attributes with the same +names.

+
+
+
+HA_MODE_ACTIVE = 'ACTIVE_ACTIVE'
+
+ +
+
+HA_MODE_STANDBY = 'ACTIVE_STANDBY'
+
+ +
+ +
+
+class com.vmware.nsx_policy.model_client.ProviderDeploymentMap(links=None, schema=None, self_=None, revision=None, create_time=None, create_user=None, last_modified_time=None, last_modified_user=None, protection=None, system_owned=None, description=None, display_name=None, id=None, resource_type=None, tags=None, parent_path=None, path=None, relative_path=None, children=None, marked_for_delete=None, enforcement_point=None)
+

Bases: vmware.vapi.bindings.struct.VapiStruct

+

Associate provider to the enforcement point to realize policy intent

+
+

Tip

+

The arguments are used to initialize data attributes with the same +names.

+
+
+ +
+
+class com.vmware.nsx_policy.model_client.ProviderDeploymentMapListResult(links=None, schema=None, self_=None, cursor=None, result_count=None, sort_ascending=None, sort_by=None, results=None)
+

Bases: vmware.vapi.bindings.struct.VapiStruct

+

Paged Collection of Provider Deployment map

+
+

Tip

+

The arguments are used to initialize data attributes with the same +names.

+
+
+ +
+
+class com.vmware.nsx_policy.model_client.ProviderInterface(links=None, schema=None, self_=None, revision=None, create_time=None, create_user=None, last_modified_time=None, last_modified_user=None, protection=None, system_owned=None, description=None, display_name=None, id=None, resource_type=None, tags=None, parent_path=None, path=None, relative_path=None, children=None, marked_for_delete=None, subnets=None, edge_cluster_member_index=None, ls_id=None)
+

Bases: vmware.vapi.bindings.struct.VapiStruct

+

Provider interface configuration for external connectivity

+
+

Tip

+

The arguments are used to initialize data attributes with the same +names.

+
+
+ +
+
+class com.vmware.nsx_policy.model_client.ProviderInterfaceListResult(links=None, schema=None, self_=None, cursor=None, result_count=None, sort_ascending=None, sort_by=None, results=None)
+

Bases: vmware.vapi.bindings.struct.VapiStruct

+

Paged collection of Provider Interfaces

+
+

Tip

+

The arguments are used to initialize data attributes with the same +names.

+
+
+ +
+
+class com.vmware.nsx_policy.model_client.ProviderListResult(links=None, schema=None, self_=None, cursor=None, result_count=None, sort_ascending=None, sort_by=None, results=None)
+

Bases: vmware.vapi.bindings.struct.VapiStruct

+

Paged collection of Providers

+
+

Tip

+

The arguments are used to initialize data attributes with the same +names.

+
+
+ +
+
+class com.vmware.nsx_policy.model_client.PublicCloudGatewayNode(allocation_list=None, deployment_config=None, deployment_type=None, links=None, schema=None, self_=None, revision=None, create_time=None, create_user=None, last_modified_time=None, last_modified_user=None, protection=None, system_owned=None, description=None, display_name=None, id=None, resource_type=None, tags=None, discovered_ip_addresses=None, external_id=None, fqdn=None, ip_addresses=None)
+

Bases: vmware.vapi.bindings.struct.VapiStruct

+
+

Tip

+

The arguments are used to initialize data attributes with the same +names.

+
+
+ +
+
+class com.vmware.nsx_policy.model_client.QosBaseRateShaper(enabled=None, resource_type=None)
+

Bases: vmware.vapi.bindings.struct.VapiStruct

+

A shaper configuration entry that specifies type and metrics

+
+

Tip

+

The arguments are used to initialize data attributes with the same +names.

+
+
+
+RESOURCE_TYPE_EGRESSRATESHAPER = 'EgressRateShaper'
+
+ +
+
+RESOURCE_TYPE_INGRESSBROADCASTRATESHAPER = 'IngressBroadcastRateShaper'
+
+ +
+
+RESOURCE_TYPE_INGRESSRATESHAPER = 'IngressRateShaper'
+
+ +
+ +
+
+class com.vmware.nsx_policy.model_client.QosSwitchingProfile(class_of_service=None, dscp=None, shaper_configuration=None, links=None, schema=None, self_=None, revision=None, create_time=None, create_user=None, last_modified_time=None, last_modified_user=None, protection=None, system_owned=None, description=None, display_name=None, id=None, resource_type='QosSwitchingProfile', tags=None, required_capabilities=None)
+

Bases: vmware.vapi.bindings.struct.VapiStruct

+
+

Tip

+

The arguments are used to initialize data attributes with the same +names.

+
+
+ +
+
+class com.vmware.nsx_policy.model_client.QuickSearchResponse(links=None, schema=None, self_=None, result_count=None, results=None)
+

Bases: vmware.vapi.bindings.struct.VapiStruct

+
+

Tip

+

The arguments are used to initialize data attributes with the same +names.

+
+
+ +
+
+class com.vmware.nsx_policy.model_client.RateLimits(enabled=None, rx_broadcast=None, rx_multicast=None, tx_broadcast=None, tx_multicast=None)
+

Bases: vmware.vapi.bindings.struct.VapiStruct

+

Enables traffic limit for incoming/outgoing broadcast and multicast +packets. Use 0 to disable rate limiting for a specific traffic type

+
+

Tip

+

The arguments are used to initialize data attributes with the same +names.

+
+
+ +
+
+class com.vmware.nsx_policy.model_client.RealizationStateBarrierConfig(links=None, schema=None, self_=None, revision=None, interval=None)
+

Bases: vmware.vapi.bindings.struct.VapiStruct

+

The configuration data for setting the global realization state barrier

+
+

Tip

+

The arguments are used to initialize data attributes with the same +names.

+
+
+ +
+
+class com.vmware.nsx_policy.model_client.RealizedDiscoverySession(links=None, schema=None, self_=None, revision=None, create_time=None, create_user=None, last_modified_time=None, last_modified_user=None, protection=None, system_owned=None, description=None, display_name=None, id=None, resource_type=None, tags=None, parent_path=None, path=None, relative_path=None, alarms=None, intent_reference=None, realization_specific_identifier=None, runtime_status=None, state=None, message=None, status=None, timestamp=None, topology=None)
+

Bases: vmware.vapi.bindings.struct.VapiStruct

+

Contains the realized information of a discovery session.

+
+

Tip

+

The arguments are used to initialize data attributes with the same +names.

+
+
+
+STATE_ERROR = 'ERROR'
+
+ +
+
+STATE_REALIZED = 'REALIZED'
+
+ +
+
+STATE_UNAVAILABLE = 'UNAVAILABLE'
+
+ +
+
+STATE_UNREALIZED = 'UNREALIZED'
+
+ +
+
+STATUS_COMPLETED = 'COMPLETED'
+
+ +
+
+STATUS_FAILED = 'FAILED'
+
+ +
+
+STATUS_INVALID = 'INVALID'
+
+ +
+
+STATUS_IN_PROGRESS = 'IN_PROGRESS'
+
+ +
+
+STATUS_STARTED = 'STARTED'
+
+ +
+ +
+
+class com.vmware.nsx_policy.model_client.RealizedEnforcementPoint(links=None, schema=None, self_=None, revision=None, create_time=None, create_user=None, last_modified_time=None, last_modified_user=None, protection=None, system_owned=None, description=None, display_name=None, id=None, resource_type=None, tags=None, parent_path=None, path=None, relative_path=None, alarms=None, intent_reference=None, realization_specific_identifier=None, runtime_status=None, state=None, realized_firewalls=None, realized_groups=None, realized_services=None)
+

Bases: vmware.vapi.bindings.struct.VapiStruct

+

Realized Enforcement Point

+
+

Tip

+

The arguments are used to initialize data attributes with the same +names.

+
+
+
+STATE_ERROR = 'ERROR'
+
+ +
+
+STATE_REALIZED = 'REALIZED'
+
+ +
+
+STATE_UNAVAILABLE = 'UNAVAILABLE'
+
+ +
+
+STATE_UNREALIZED = 'UNREALIZED'
+
+ +
+ +
+
+class com.vmware.nsx_policy.model_client.RealizedEnforcementPointListResult(links=None, schema=None, self_=None, cursor=None, result_count=None, sort_ascending=None, sort_by=None, results=None)
+

Bases: vmware.vapi.bindings.struct.VapiStruct

+
+

Tip

+

The arguments are used to initialize data attributes with the same +names.

+
+
+ +
+
+class com.vmware.nsx_policy.model_client.RealizedFirewall(links=None, schema=None, self_=None, revision=None, create_time=None, create_user=None, last_modified_time=None, last_modified_user=None, protection=None, system_owned=None, description=None, display_name=None, id=None, resource_type='RealizedFirewall', tags=None, parent_path=None, path=None, relative_path=None, alarms=None, intent_reference=None, realization_specific_identifier=None, runtime_status=None, state=None)
+

Bases: vmware.vapi.bindings.struct.VapiStruct

+

Realized firewall

+
+

Tip

+

The arguments are used to initialize data attributes with the same +names.

+
+
+
+RESOURCE_TYPE_REALIZEDFIREWALLSECTION = 'RealizedFirewallSection'
+
+ +
+
+STATE_ERROR = 'ERROR'
+
+ +
+
+STATE_REALIZED = 'REALIZED'
+
+ +
+
+STATE_UNAVAILABLE = 'UNAVAILABLE'
+
+ +
+
+STATE_UNREALIZED = 'UNREALIZED'
+
+ +
+ +
+
+class com.vmware.nsx_policy.model_client.RealizedFirewallRule(links=None, schema=None, self_=None, revision=None, create_time=None, create_user=None, last_modified_time=None, last_modified_user=None, protection=None, system_owned=None, description=None, display_name=None, id=None, resource_type=None, tags=None, parent_path=None, path=None, relative_path=None, alarms=None, intent_reference=None, realization_specific_identifier=None, runtime_status=None, state=None, action=None, destinations=None, direction=None, disabled=None, services=None, sources=None)
+

Bases: vmware.vapi.bindings.struct.VapiStruct

+

Realized Firewall Rule

+
+

Tip

+

The arguments are used to initialize data attributes with the same +names.

+
+
+
+ACTION_ALLOW = 'ALLOW'
+
+ +
+
+ACTION_DROP = 'DROP'
+
+ +
+
+ACTION_REJECT = 'REJECT'
+
+ +
+
+DIRECTION_IN = 'IN'
+
+ +
+
+DIRECTION_IN_OUT = 'IN_OUT'
+
+ +
+
+DIRECTION_OUT = 'OUT'
+
+ +
+
+STATE_ERROR = 'ERROR'
+
+ +
+
+STATE_REALIZED = 'REALIZED'
+
+ +
+
+STATE_UNAVAILABLE = 'UNAVAILABLE'
+
+ +
+
+STATE_UNREALIZED = 'UNREALIZED'
+
+ +
+ +
+
+class com.vmware.nsx_policy.model_client.RealizedFirewallSection(rule_count=None, rules=None, section_type=None, links=None, schema=None, self_=None, revision=None, create_time=None, create_user=None, last_modified_time=None, last_modified_user=None, protection=None, system_owned=None, description=None, display_name=None, id=None, resource_type='RealizedFirewallSection', tags=None, parent_path=None, path=None, relative_path=None, alarms=None, intent_reference=None, realization_specific_identifier=None, runtime_status=None, state=None)
+

Bases: vmware.vapi.bindings.struct.VapiStruct

+

Realized Firewall section

+
+

Tip

+

The arguments are used to initialize data attributes with the same +names.

+
+
+
+SECTION_TYPE_LAYER2 = 'LAYER2'
+
+ +
+
+SECTION_TYPE_LAYER3 = 'LAYER3'
+
+ +
+ +
+
+class com.vmware.nsx_policy.model_client.RealizedFirewallSectionListResult(links=None, schema=None, self_=None, cursor=None, result_count=None, sort_ascending=None, sort_by=None, results=None)
+

Bases: vmware.vapi.bindings.struct.VapiStruct

+
+

Tip

+

The arguments are used to initialize data attributes with the same +names.

+
+
+ +
+
+class com.vmware.nsx_policy.model_client.RealizedFirewallUIResource(links=None, schema=None, self_=None, revision=None, create_time=None, create_user=None, last_modified_time=None, last_modified_user=None, protection=None, system_owned=None, description=None, display_name=None, id=None, resource_type=None, tags=None, parent_path=None, path=None, relative_path=None, children=None, marked_for_delete=None, intent_communication_map=None, realized_firewall_sections=None)
+

Bases: vmware.vapi.bindings.struct.VapiStruct

+

Realized Firewall Sections and associated communication map

+
+

Tip

+

The arguments are used to initialize data attributes with the same +names.

+
+
+ +
+
+class com.vmware.nsx_policy.model_client.RealizedFirewallUIResourceListResult(links=None, schema=None, self_=None, cursor=None, result_count=None, sort_ascending=None, sort_by=None, results=None)
+

Bases: vmware.vapi.bindings.struct.VapiStruct

+

Paged Collection of communication map and Realized Firewall Sections Pairs

+
+

Tip

+

The arguments are used to initialize data attributes with the same +names.

+
+
+ +
+
+class com.vmware.nsx_policy.model_client.RealizedFirewalls(links=None, schema=None, self_=None, revision=None, create_time=None, create_user=None, last_modified_time=None, last_modified_user=None, protection=None, system_owned=None, description=None, display_name=None, id=None, resource_type=None, tags=None, parent_path=None, path=None, relative_path=None, alarms=None, intent_reference=None, realization_specific_identifier=None, runtime_status=None, state=None, realized_firewalls=None)
+

Bases: vmware.vapi.bindings.struct.VapiStruct

+

Realized firewalls

+
+

Tip

+

The arguments are used to initialize data attributes with the same +names.

+
+
+
+STATE_ERROR = 'ERROR'
+
+ +
+
+STATE_REALIZED = 'REALIZED'
+
+ +
+
+STATE_UNAVAILABLE = 'UNAVAILABLE'
+
+ +
+
+STATE_UNREALIZED = 'UNREALIZED'
+
+ +
+ +
+
+class com.vmware.nsx_policy.model_client.RealizedGroup(links=None, schema=None, self_=None, revision=None, create_time=None, create_user=None, last_modified_time=None, last_modified_user=None, protection=None, system_owned=None, description=None, display_name=None, id=None, resource_type='RealizedGroup', tags=None, parent_path=None, path=None, relative_path=None, alarms=None, intent_reference=None, realization_specific_identifier=None, runtime_status=None, state=None)
+

Bases: vmware.vapi.bindings.struct.VapiStruct

+

Realized group

+
+

Tip

+

The arguments are used to initialize data attributes with the same +names.

+
+
+
+RESOURCE_TYPE_REALIZEDNSGROUP = 'RealizedNSGroup'
+
+ +
+
+RESOURCE_TYPE_REALIZEDSECURITYGROUP = 'RealizedSecurityGroup'
+
+ +
+
+STATE_ERROR = 'ERROR'
+
+ +
+
+STATE_REALIZED = 'REALIZED'
+
+ +
+
+STATE_UNAVAILABLE = 'UNAVAILABLE'
+
+ +
+
+STATE_UNREALIZED = 'UNREALIZED'
+
+ +
+ +
+
+class com.vmware.nsx_policy.model_client.RealizedGroupUIResource(links=None, schema=None, self_=None, revision=None, create_time=None, create_user=None, last_modified_time=None, last_modified_user=None, protection=None, system_owned=None, description=None, display_name=None, id=None, resource_type=None, tags=None, parent_path=None, path=None, relative_path=None, children=None, marked_for_delete=None, intent_group=None, realized_groups=None)
+

Bases: vmware.vapi.bindings.struct.VapiStruct

+

Realized Groups and associated Intent Group

+
+

Tip

+

The arguments are used to initialize data attributes with the same +names.

+
+
+ +
+
+class com.vmware.nsx_policy.model_client.RealizedGroupUIResourceListResult(links=None, schema=None, self_=None, cursor=None, result_count=None, sort_ascending=None, sort_by=None, results=None)
+

Bases: vmware.vapi.bindings.struct.VapiStruct

+

Paged Collection of Intent and Realized Group Pairs

+
+

Tip

+

The arguments are used to initialize data attributes with the same +names.

+
+
+ +
+
+class com.vmware.nsx_policy.model_client.RealizedGroups(links=None, schema=None, self_=None, revision=None, create_time=None, create_user=None, last_modified_time=None, last_modified_user=None, protection=None, system_owned=None, description=None, display_name=None, id=None, resource_type=None, tags=None, parent_path=None, path=None, relative_path=None, alarms=None, intent_reference=None, realization_specific_identifier=None, runtime_status=None, state=None, realized_groups=None)
+

Bases: vmware.vapi.bindings.struct.VapiStruct

+

Realized groups

+
+

Tip

+

The arguments are used to initialize data attributes with the same +names.

+
+
+
+STATE_ERROR = 'ERROR'
+
+ +
+
+STATE_REALIZED = 'REALIZED'
+
+ +
+
+STATE_UNAVAILABLE = 'UNAVAILABLE'
+
+ +
+
+STATE_UNREALIZED = 'UNREALIZED'
+
+ +
+ +
+
+class com.vmware.nsx_policy.model_client.RealizedIPSet(links=None, schema=None, self_=None, revision=None, create_time=None, create_user=None, last_modified_time=None, last_modified_user=None, protection=None, system_owned=None, description=None, display_name=None, id=None, resource_type=None, tags=None, parent_path=None, path=None, relative_path=None, alarms=None, intent_reference=None, realization_specific_identifier=None, runtime_status=None, state=None)
+

Bases: vmware.vapi.bindings.struct.VapiStruct

+

Realized IPSet

+
+

Tip

+

The arguments are used to initialize data attributes with the same +names.

+
+
+
+STATE_ERROR = 'ERROR'
+
+ +
+
+STATE_REALIZED = 'REALIZED'
+
+ +
+
+STATE_UNAVAILABLE = 'UNAVAILABLE'
+
+ +
+
+STATE_UNREALIZED = 'UNREALIZED'
+
+ +
+ +
+
+class com.vmware.nsx_policy.model_client.RealizedIPSetListResult(links=None, schema=None, self_=None, cursor=None, result_count=None, sort_ascending=None, sort_by=None, results=None)
+

Bases: vmware.vapi.bindings.struct.VapiStruct

+
+

Tip

+

The arguments are used to initialize data attributes with the same +names.

+
+
+ +
+
+class com.vmware.nsx_policy.model_client.RealizedLogicalPort(links=None, schema=None, self_=None, revision=None, create_time=None, create_user=None, last_modified_time=None, last_modified_user=None, protection=None, system_owned=None, description=None, display_name=None, id=None, resource_type=None, tags=None, parent_path=None, path=None, relative_path=None, alarms=None, intent_reference=None, realization_specific_identifier=None, runtime_status=None, state=None, logical_port_id=None, status=None)
+

Bases: vmware.vapi.bindings.struct.VapiStruct

+

Realized Logical Port

+
+

Tip

+

The arguments are used to initialize data attributes with the same +names.

+
+
+
+STATE_ERROR = 'ERROR'
+
+ +
+
+STATE_REALIZED = 'REALIZED'
+
+ +
+
+STATE_UNAVAILABLE = 'UNAVAILABLE'
+
+ +
+
+STATE_UNREALIZED = 'UNREALIZED'
+
+ +
+
+STATUS_DOWN = 'DOWN'
+
+ +
+
+STATUS_UNKNOWN = 'UNKNOWN'
+
+ +
+
+STATUS_UP = 'UP'
+
+ +
+ +
+
+class com.vmware.nsx_policy.model_client.RealizedLogicalSwitch(links=None, schema=None, self_=None, revision=None, create_time=None, create_user=None, last_modified_time=None, last_modified_user=None, protection=None, system_owned=None, description=None, display_name=None, id=None, resource_type=None, tags=None, parent_path=None, path=None, relative_path=None, alarms=None, intent_reference=None, realization_specific_identifier=None, runtime_status=None, state=None, logical_switch_id=None, transport_zone_id=None)
+

Bases: vmware.vapi.bindings.struct.VapiStruct

+

Realized Logical Switch

+
+

Tip

+

The arguments are used to initialize data attributes with the same +names.

+
+
+
+STATE_ERROR = 'ERROR'
+
+ +
+
+STATE_REALIZED = 'REALIZED'
+
+ +
+
+STATE_UNAVAILABLE = 'UNAVAILABLE'
+
+ +
+
+STATE_UNREALIZED = 'UNREALIZED'
+
+ +
+ +
+
+class com.vmware.nsx_policy.model_client.RealizedMACSet(links=None, schema=None, self_=None, revision=None, create_time=None, create_user=None, last_modified_time=None, last_modified_user=None, protection=None, system_owned=None, description=None, display_name=None, id=None, resource_type=None, tags=None, parent_path=None, path=None, relative_path=None, alarms=None, intent_reference=None, realization_specific_identifier=None, runtime_status=None, state=None)
+

Bases: vmware.vapi.bindings.struct.VapiStruct

+

Realized MACSet

+
+

Tip

+

The arguments are used to initialize data attributes with the same +names.

+
+
+
+STATE_ERROR = 'ERROR'
+
+ +
+
+STATE_REALIZED = 'REALIZED'
+
+ +
+
+STATE_UNAVAILABLE = 'UNAVAILABLE'
+
+ +
+
+STATE_UNREALIZED = 'UNREALIZED'
+
+ +
+ +
+
+class com.vmware.nsx_policy.model_client.RealizedMACSetListResult(links=None, schema=None, self_=None, cursor=None, result_count=None, sort_ascending=None, sort_by=None, results=None)
+

Bases: vmware.vapi.bindings.struct.VapiStruct

+
+

Tip

+

The arguments are used to initialize data attributes with the same +names.

+
+
+ +
+
+class com.vmware.nsx_policy.model_client.RealizedNSGroup(evaluations=None, links=None, schema=None, self_=None, revision=None, create_time=None, create_user=None, last_modified_time=None, last_modified_user=None, protection=None, system_owned=None, description=None, display_name=None, id=None, resource_type='RealizedNSGroup', tags=None, parent_path=None, path=None, relative_path=None, alarms=None, intent_reference=None, realization_specific_identifier=None, runtime_status=None, state=None)
+

Bases: vmware.vapi.bindings.struct.VapiStruct

+

Realized Network and Security Group

+
+

Tip

+

The arguments are used to initialize data attributes with the same +names.

+
+
+ +
+
+class com.vmware.nsx_policy.model_client.RealizedNSGroupListResult(links=None, schema=None, self_=None, cursor=None, result_count=None, sort_ascending=None, sort_by=None, results=None)
+

Bases: vmware.vapi.bindings.struct.VapiStruct

+
+

Tip

+

The arguments are used to initialize data attributes with the same +names.

+
+
+ +
+
+class com.vmware.nsx_policy.model_client.RealizedNSGroupMemberEvaluation(links=None, schema=None, self_=None, revision=None, create_time=None, create_user=None, last_modified_time=None, last_modified_user=None, protection=None, system_owned=None, description=None, display_name=None, id=None, resource_type=None, tags=None, parent_path=None, path=None, relative_path=None, alarms=None, intent_reference=None, realization_specific_identifier=None, runtime_status=None, state=None, logical_ports=None, logical_switches=None, member_count=None, virtual_machines=None)
+

Bases: vmware.vapi.bindings.struct.VapiStruct

+

Realized NSGroup member evaluation

+
+

Tip

+

The arguments are used to initialize data attributes with the same +names.

+
+
+
+STATE_ERROR = 'ERROR'
+
+ +
+
+STATE_REALIZED = 'REALIZED'
+
+ +
+
+STATE_UNAVAILABLE = 'UNAVAILABLE'
+
+ +
+
+STATE_UNREALIZED = 'UNREALIZED'
+
+ +
+ +
+
+class com.vmware.nsx_policy.model_client.RealizedNSService(service_type=None, links=None, schema=None, self_=None, revision=None, create_time=None, create_user=None, last_modified_time=None, last_modified_user=None, protection=None, system_owned=None, description=None, display_name=None, id=None, resource_type='RealizedNSService', tags=None, parent_path=None, path=None, relative_path=None, alarms=None, intent_reference=None, realization_specific_identifier=None, runtime_status=None, state=None)
+

Bases: vmware.vapi.bindings.struct.VapiStruct

+

Realized NSService

+
+

Tip

+

The arguments are used to initialize data attributes with the same +names.

+
+
+
+SERVICE_TYPE_SERVICE = 'SERVICE'
+
+ +
+
+SERVICE_TYPE_SERVICE_GROUP = 'SERVICE_GROUP'
+
+ +
+ +
+
+class com.vmware.nsx_policy.model_client.RealizedNSServiceListResult(links=None, schema=None, self_=None, cursor=None, result_count=None, sort_ascending=None, sort_by=None, results=None)
+

Bases: vmware.vapi.bindings.struct.VapiStruct

+
+

Tip

+

The arguments are used to initialize data attributes with the same +names.

+
+
+ +
+
+class com.vmware.nsx_policy.model_client.RealizedSecurityGroup(evaluations=None, links=None, schema=None, self_=None, revision=None, create_time=None, create_user=None, last_modified_time=None, last_modified_user=None, protection=None, system_owned=None, description=None, display_name=None, id=None, resource_type='RealizedSecurityGroup', tags=None, parent_path=None, path=None, relative_path=None, alarms=None, intent_reference=None, realization_specific_identifier=None, runtime_status=None, state=None)
+

Bases: vmware.vapi.bindings.struct.VapiStruct

+

Realized Network and Security Group

+
+

Tip

+

The arguments are used to initialize data attributes with the same +names.

+
+
+ +
+
+class com.vmware.nsx_policy.model_client.RealizedSecurityGroupListResult(links=None, schema=None, self_=None, cursor=None, result_count=None, sort_ascending=None, sort_by=None, results=None)
+

Bases: vmware.vapi.bindings.struct.VapiStruct

+
+

Tip

+

The arguments are used to initialize data attributes with the same +names.

+
+
+ +
+
+class com.vmware.nsx_policy.model_client.RealizedSecurityGroupMemberEvaluation(links=None, schema=None, self_=None, revision=None, create_time=None, create_user=None, last_modified_time=None, last_modified_user=None, protection=None, system_owned=None, description=None, display_name=None, id=None, resource_type=None, tags=None, parent_path=None, path=None, relative_path=None, alarms=None, intent_reference=None, realization_specific_identifier=None, runtime_status=None, state=None, member_count=None, virtual_machines=None)
+

Bases: vmware.vapi.bindings.struct.VapiStruct

+

Realized Security Group member evaluation

+
+

Tip

+

The arguments are used to initialize data attributes with the same +names.

+
+
+
+STATE_ERROR = 'ERROR'
+
+ +
+
+STATE_REALIZED = 'REALIZED'
+
+ +
+
+STATE_UNAVAILABLE = 'UNAVAILABLE'
+
+ +
+
+STATE_UNREALIZED = 'UNREALIZED'
+
+ +
+ +
+
+class com.vmware.nsx_policy.model_client.RealizedService(links=None, schema=None, self_=None, revision=None, create_time=None, create_user=None, last_modified_time=None, last_modified_user=None, protection=None, system_owned=None, description=None, display_name=None, id=None, resource_type='RealizedService', tags=None, parent_path=None, path=None, relative_path=None, alarms=None, intent_reference=None, realization_specific_identifier=None, runtime_status=None, state=None)
+

Bases: vmware.vapi.bindings.struct.VapiStruct

+

Realized Service

+
+

Tip

+

The arguments are used to initialize data attributes with the same +names.

+
+
+
+RESOURCE_TYPE_REALIZEDNSSERVICE = 'RealizedNSService'
+
+ +
+
+STATE_ERROR = 'ERROR'
+
+ +
+
+STATE_REALIZED = 'REALIZED'
+
+ +
+
+STATE_UNAVAILABLE = 'UNAVAILABLE'
+
+ +
+
+STATE_UNREALIZED = 'UNREALIZED'
+
+ +
+ +
+
+class com.vmware.nsx_policy.model_client.RealizedServices(links=None, schema=None, self_=None, revision=None, create_time=None, create_user=None, last_modified_time=None, last_modified_user=None, protection=None, system_owned=None, description=None, display_name=None, id=None, resource_type=None, tags=None, parent_path=None, path=None, relative_path=None, alarms=None, intent_reference=None, realization_specific_identifier=None, runtime_status=None, state=None, realized_services=None)
+

Bases: vmware.vapi.bindings.struct.VapiStruct

+

Realized services

+
+

Tip

+

The arguments are used to initialize data attributes with the same +names.

+
+
+
+STATE_ERROR = 'ERROR'
+
+ +
+
+STATE_REALIZED = 'REALIZED'
+
+ +
+
+STATE_UNAVAILABLE = 'UNAVAILABLE'
+
+ +
+
+STATE_UNREALIZED = 'UNREALIZED'
+
+ +
+ +
+
+class com.vmware.nsx_policy.model_client.RealizedState(links=None, schema=None, self_=None, revision=None, create_time=None, create_user=None, last_modified_time=None, last_modified_user=None, protection=None, system_owned=None, description=None, display_name=None, id=None, resource_type=None, tags=None, parent_path=None, path=None, relative_path=None, alarms=None, intent_reference=None, realization_specific_identifier=None, runtime_status=None, state=None, enforcement_points=None)
+

Bases: vmware.vapi.bindings.struct.VapiStruct

+

Root of realized policy state

+
+

Tip

+

The arguments are used to initialize data attributes with the same +names.

+
+
+
+STATE_ERROR = 'ERROR'
+
+ +
+
+STATE_REALIZED = 'REALIZED'
+
+ +
+
+STATE_UNAVAILABLE = 'UNAVAILABLE'
+
+ +
+
+STATE_UNREALIZED = 'UNREALIZED'
+
+ +
+ +
+
+class com.vmware.nsx_policy.model_client.RealizedVirtualMachine(links=None, schema=None, self_=None, revision=None, create_time=None, create_user=None, last_modified_time=None, last_modified_user=None, protection=None, system_owned=None, description=None, display_name=None, id=None, resource_type=None, tags=None, parent_path=None, path=None, relative_path=None, alarms=None, intent_reference=None, realization_specific_identifier=None, runtime_status=None, state=None, compute_ids=None, host_id=None, local_id_on_host=None, power_state=None)
+

Bases: vmware.vapi.bindings.struct.VapiStruct

+

Realized Virtual Machine

+
+

Tip

+

The arguments are used to initialize data attributes with the same +names.

+
+
+
+POWER_STATE_UNKNOWN = 'UNKNOWN'
+
+ +
+
+POWER_STATE_VM_RUNNING = 'VM_RUNNING'
+
+ +
+
+POWER_STATE_VM_STOPPED = 'VM_STOPPED'
+
+ +
+
+POWER_STATE_VM_SUSPENDED = 'VM_SUSPENDED'
+
+ +
+
+STATE_ERROR = 'ERROR'
+
+ +
+
+STATE_REALIZED = 'REALIZED'
+
+ +
+
+STATE_UNAVAILABLE = 'UNAVAILABLE'
+
+ +
+
+STATE_UNREALIZED = 'UNREALIZED'
+
+ +
+ +
+
+class com.vmware.nsx_policy.model_client.RealizedVirtualMachineListResult(links=None, schema=None, self_=None, cursor=None, result_count=None, sort_ascending=None, sort_by=None, results=None)
+

Bases: vmware.vapi.bindings.struct.VapiStruct

+
+

Tip

+

The arguments are used to initialize data attributes with the same +names.

+
+
+ +
+
+class com.vmware.nsx_policy.model_client.RedirectionCommunicationEntry(links=None, schema=None, self_=None, revision=None, create_time=None, create_user=None, last_modified_time=None, last_modified_user=None, protection=None, system_owned=None, description=None, display_name=None, id=None, resource_type=None, tags=None, parent_path=None, path=None, relative_path=None, children=None, marked_for_delete=None, action=None, destination_groups=None, logged=None, scope=None, sequence_number=None, services=None, source_groups=None)
+

Bases: vmware.vapi.bindings.struct.VapiStruct

+

It define redirection rule for service insertion

+
+

Tip

+

The arguments are used to initialize data attributes with the same +names.

+
+
+
+ACTION_DO_NOT_REDIRECT = 'DO_NOT_REDIRECT'
+
+ +
+
+ACTION_REDIRECT = 'REDIRECT'
+
+ +
+ +
+
+class com.vmware.nsx_policy.model_client.RedirectionCommunicationEntryListResult(links=None, schema=None, self_=None, cursor=None, result_count=None, sort_ascending=None, sort_by=None, results=None)
+

Bases: vmware.vapi.bindings.struct.VapiStruct

+

Paged Collection of RedirectionCommunicationEntries

+
+

Tip

+

The arguments are used to initialize data attributes with the same +names.

+
+
+ +
+
+class com.vmware.nsx_policy.model_client.RedirectionCommunicationMap(links=None, schema=None, self_=None, revision=None, create_time=None, create_user=None, last_modified_time=None, last_modified_user=None, protection=None, system_owned=None, description=None, display_name=None, id=None, resource_type=None, tags=None, parent_path=None, path=None, relative_path=None, children=None, marked_for_delete=None, category=None, communication_entries=None, precedence=None, redirect_to=None)
+

Bases: vmware.vapi.bindings.struct.VapiStruct

+

Ordered list of CommunicationEntries long with the path of +PolicyServiceInstance to which the traffic needs to be redirected.

+
+

Tip

+

The arguments are used to initialize data attributes with the same +names.

+
+
+ +
+
+class com.vmware.nsx_policy.model_client.RedirectionCommunicationMapListResult(links=None, schema=None, self_=None, cursor=None, result_count=None, sort_ascending=None, sort_by=None, results=None)
+

Bases: vmware.vapi.bindings.struct.VapiStruct

+

Paged Collection of Groups

+
+

Tip

+

The arguments are used to initialize data attributes with the same +names.

+
+
+ +
+
+class com.vmware.nsx_policy.model_client.RedistributionConfig(links=None, schema=None, self_=None, revision=None, create_time=None, create_user=None, last_modified_time=None, last_modified_user=None, protection=None, system_owned=None, description=None, display_name=None, id=None, resource_type=None, tags=None, bgp_enabled=None, logical_router_id=None)
+

Bases: vmware.vapi.bindings.struct.VapiStruct

+
+

Tip

+

The arguments are used to initialize data attributes with the same +names.

+
+
+ +
+
+class com.vmware.nsx_policy.model_client.RedistributionRule(description=None, destination=None, display_name=None, route_map_id=None, sources=None)
+

Bases: vmware.vapi.bindings.struct.VapiStruct

+
+

Tip

+

The arguments are used to initialize data attributes with the same +names.

+
+
+
+DESTINATION_BGP = 'BGP'
+
+ +
+
+DESTINATION_NSX_CONNECTED = 'NSX_CONNECTED'
+
+ +
+
+DESTINATION_NSX_STATIC = 'NSX_STATIC'
+
+ +
+
+DESTINATION_STATIC = 'STATIC'
+
+ +
+
+DESTINATION_TIER0_NAT = 'TIER0_NAT'
+
+ +
+
+DESTINATION_TIER1_LB_SNAT = 'TIER1_LB_SNAT'
+
+ +
+
+DESTINATION_TIER1_LB_VIP = 'TIER1_LB_VIP'
+
+ +
+
+DESTINATION_TIER1_NAT = 'TIER1_NAT'
+
+ +
+
+SOURCES_BGP = 'BGP'
+
+ +
+
+SOURCES_NSX_CONNECTED = 'NSX_CONNECTED'
+
+ +
+
+SOURCES_NSX_STATIC = 'NSX_STATIC'
+
+ +
+
+SOURCES_STATIC = 'STATIC'
+
+ +
+
+SOURCES_TIER0_NAT = 'TIER0_NAT'
+
+ +
+
+SOURCES_TIER1_LB_SNAT = 'TIER1_LB_SNAT'
+
+ +
+
+SOURCES_TIER1_LB_VIP = 'TIER1_LB_VIP'
+
+ +
+
+SOURCES_TIER1_NAT = 'TIER1_NAT'
+
+ +
+ +
+
+class com.vmware.nsx_policy.model_client.RedistributionRuleList(links=None, schema=None, self_=None, revision=None, create_time=None, create_user=None, last_modified_time=None, last_modified_user=None, protection=None, system_owned=None, description=None, display_name=None, id=None, resource_type=None, tags=None, logical_router_id=None, rules=None)
+

Bases: vmware.vapi.bindings.struct.VapiStruct

+
+

Tip

+

The arguments are used to initialize data attributes with the same +names.

+
+
+ +
+
+class com.vmware.nsx_policy.model_client.RegistrationToken(roles=None, token=None)
+

Bases: vmware.vapi.bindings.struct.VapiStruct

+

Appliance registration access token

+
+

Tip

+

The arguments are used to initialize data attributes with the same +names.

+
+
+ +
+
+class com.vmware.nsx_policy.model_client.RelatedAttribute(attribute=None)
+

Bases: vmware.vapi.bindings.struct.VapiStruct

+

Related attribute on the target resource for conditional constraints based +on related attribute value. Example - destinationGroups/service/action is +related attribute of sourceGroups in communcation entry.

+
+

Tip

+

The arguments are used to initialize data attributes with the same +names.

+
+
+ +
+
+class com.vmware.nsx_policy.model_client.RelatedAttributeConditionalExpression(condition=None, related_attribute=None, links=None, schema=None, self_=None, revision=None, create_time=None, create_user=None, last_modified_time=None, last_modified_user=None, protection=None, system_owned=None, description=None, display_name=None, id=None, resource_type='RelatedAttributeConditionalExpression', tags=None)
+

Bases: vmware.vapi.bindings.struct.VapiStruct

+

Represents the leaf level type expression to express constraint as value of +realted attribute to the target. Example - Constraint traget attribute ‘X’ +(example in Constraint), if destinationGroups contains ‘vCeneter’ then +allow only values "HTTPS", "HTTP" for attribute X. { +"target":{ +"target_resource_type":"CommunicationEntry", +"attribute":"services", "path_prefix": +"/infra/domains/{{DOMAIN}}/edge-communication-maps/default/communication-entries/" +}, "constraint_expression": { "resource_type": +"RelatedAttributeConditionalExpression", +"related_attribute":{ +"attribute":"destinationGroups" }, "condition" : { +"operator":"INCLUDES", "rhs_value": +["/infra/domains/mgw/groups/VCENTER"], "value_constraint": +{ "resource_type": "ValueConstraintExpression", +"operator":"INCLUDES", +"values":["/infra/services/HTTP", +"/infra/services/HTTPS"] } } } }

+
+

Tip

+

The arguments are used to initialize data attributes with the same +names.

+
+
+ +
+
+class com.vmware.nsx_policy.model_client.RelatedData(links=None, schema=None, self_=None, cursor=None, result_count=None, sort_ascending=None, sort_by=None, alias=None, results=None)
+

Bases: vmware.vapi.bindings.struct.VapiStruct

+

The results array will contain all the related objects

+
+

Tip

+

The arguments are used to initialize data attributes with the same +names.

+
+
+ +
+
+class com.vmware.nsx_policy.model_client.RelatedDataRequest(included_fields=None, alias=None, filters=None, resource_type=None, join_condition=None, size=None)
+

Bases: vmware.vapi.bindings.struct.VapiStruct

+

Request parameters for the related types

+
+

Tip

+

The arguments are used to initialize data attributes with the same +names.

+
+
+ +
+
+class com.vmware.nsx_policy.model_client.RemoteFileServer(directory_path=None, port=None, protocol=None, server=None)
+

Bases: vmware.vapi.bindings.struct.VapiStruct

+

Remote file server

+
+

Tip

+

The arguments are used to initialize data attributes with the same +names.

+
+
+ +
+
+class com.vmware.nsx_policy.model_client.RemoteServerFingerprint(port=None, server=None, ssh_fingerprint=None)
+

Bases: vmware.vapi.bindings.struct.VapiStruct

+

Remote server

+
+

Tip

+

The arguments are used to initialize data attributes with the same +names.

+
+
+ +
+
+class com.vmware.nsx_policy.model_client.RemoteServerFingerprintRequest(port=None, server=None)
+

Bases: vmware.vapi.bindings.struct.VapiStruct

+

Remote server

+
+

Tip

+

The arguments are used to initialize data attributes with the same +names.

+
+
+ +
+
+class com.vmware.nsx_policy.model_client.RenderConfiguration(color=None, condition=None, display_value=None, icons=None, tooltip=None)
+

Bases: vmware.vapi.bindings.struct.VapiStruct

+

Render configuration to be applied to the widget.

+
+

Tip

+

The arguments are used to initialize data attributes with the same +names.

+
+
+
+COLOR_BLUE = 'BLUE'
+
+ +
+
+COLOR_GREEN = 'GREEN'
+
+ +
+
+COLOR_GREY = 'GREY'
+
+ +
+
+COLOR_RED = 'RED'
+
+ +
+
+COLOR_SKY_BLUE = 'SKY_BLUE'
+
+ +
+
+COLOR_YELLOW = 'YELLOW'
+
+ +
+ +
+
+class com.vmware.nsx_policy.model_client.Resource(links=None, schema=None, self_=None)
+

Bases: vmware.vapi.bindings.struct.VapiStruct

+

Base class for resources

+
+

Tip

+

The arguments are used to initialize data attributes with the same +names.

+
+
+ +
+
+class com.vmware.nsx_policy.model_client.ResourceAllocation(limit=None, reservation=None, shares=None, traffic_type=None)
+

Bases: vmware.vapi.bindings.struct.VapiStruct

+

Specify limit, shares and reservation for all kinds of traffic. Values for +limit and reservation are expressed in percentage. And for shares, the +value is expressed as a number between 1-100. The overall reservation among +all traffic types should not exceed 75%. Otherwise, the API request will be +rejected.

+
+

Tip

+

The arguments are used to initialize data attributes with the same +names.

+
+
+ +
+ +

Bases: vmware.vapi.bindings.struct.VapiStruct

+

A link to a related resource

+
+

Tip

+

The arguments are used to initialize data attributes with the same +names.

+
+
+ +
+
+class com.vmware.nsx_policy.model_client.ResourceReference(is_valid=None, target_display_name=None, target_id=None, target_type=None)
+

Bases: vmware.vapi.bindings.struct.VapiStruct

+

A weak reference to an NSX resource.

+
+

Tip

+

The arguments are used to initialize data attributes with the same +names.

+
+
+ +
+
+class com.vmware.nsx_policy.model_client.RestoreConfiguration(passphrase=None, remote_file_server=None)
+

Bases: vmware.vapi.bindings.struct.VapiStruct

+

Configuration where backup files are stored for restore

+
+

Tip

+

The arguments are used to initialize data attributes with the same +names.

+
+
+ +
+
+class com.vmware.nsx_policy.model_client.RestoreStep(description=None, status=None, step_number=None, value=None)
+

Bases: vmware.vapi.bindings.struct.VapiStruct

+

Restore step info

+
+

Tip

+

The arguments are used to initialize data attributes with the same +names.

+
+
+ +
+
+class com.vmware.nsx_policy.model_client.RevisionedResource(links=None, schema=None, self_=None, revision=None)
+

Bases: vmware.vapi.bindings.struct.VapiStruct

+

A base class for types that track revisions

+
+

Tip

+

The arguments are used to initialize data attributes with the same +names.

+
+
+ +
+
+class com.vmware.nsx_policy.model_client.RevokeNodeRequest(hosts=None)
+

Bases: vmware.vapi.bindings.struct.VapiStruct

+
+

Tip

+

The arguments are used to initialize data attributes with the same +names.

+
+
+ +
+
+class com.vmware.nsx_policy.model_client.Role(role=None)
+

Bases: vmware.vapi.bindings.struct.VapiStruct

+
+

Tip

+

The arguments are used to initialize data attributes with the same +names.

+
+
+ +
+
+class com.vmware.nsx_policy.model_client.RoleBinding(links=None, schema=None, self_=None, revision=None, create_time=None, create_user=None, last_modified_time=None, last_modified_user=None, protection=None, system_owned=None, description=None, display_name=None, id=None, resource_type=None, tags=None, name=None, roles=None, type=None)
+

Bases: vmware.vapi.bindings.struct.VapiStruct

+

User/Group’s role binding

+
+

Tip

+

The arguments are used to initialize data attributes with the same +names.

+
+
+
+TYPE_LOCAL_USER = 'local_user'
+
+ +
+
+TYPE_PRINCIPAL_IDENTITY = 'principal_identity'
+
+ +
+
+TYPE_REMOTE_GROUP = 'remote_group'
+
+ +
+
+TYPE_REMOTE_USER = 'remote_user'
+
+ +
+ +
+
+class com.vmware.nsx_policy.model_client.RoleBindingListResult(links=None, schema=None, self_=None, cursor=None, result_count=None, sort_ascending=None, sort_by=None, results=None)
+

Bases: vmware.vapi.bindings.struct.VapiStruct

+
+

Tip

+

The arguments are used to initialize data attributes with the same +names.

+
+
+ +
+
+class com.vmware.nsx_policy.model_client.RoleListResult(links=None, schema=None, self_=None, cursor=None, result_count=None, sort_ascending=None, sort_by=None, results=None)
+

Bases: vmware.vapi.bindings.struct.VapiStruct

+
+

Tip

+

The arguments are used to initialize data attributes with the same +names.

+
+
+ +
+
+class com.vmware.nsx_policy.model_client.RoleWithFeatures(features=None, role=None)
+

Bases: vmware.vapi.bindings.struct.VapiStruct

+

Role

+
+

Tip

+

The arguments are used to initialize data attributes with the same +names.

+
+
+ +
+
+class com.vmware.nsx_policy.model_client.RouteBasedIPSecVPNSession(tunnel_ports=None, links=None, schema=None, self_=None, revision=None, create_time=None, create_user=None, last_modified_time=None, last_modified_user=None, protection=None, system_owned=None, description=None, display_name=None, id=None, resource_type='RouteBasedIPSecVPNSession', tags=None, enabled=None, ipsec_vpn_service_id=None, local_endpoint_id=None, peer_endpoint_id=None)
+

Bases: vmware.vapi.bindings.struct.VapiStruct

+

A Route Based VPN is more flexible, more powerful and recommended over +policy based VPN. IP Tunnel port is created and all traffic routed via +tunnel port is protected. Routes can be configured statically or can be +learned through BGP. A route based VPN is must for establishing redundant +VPN session to remote site.

+
+

Tip

+

The arguments are used to initialize data attributes with the same +names.

+
+
+ +
+
+class com.vmware.nsx_policy.model_client.RouteBasedL3VpnSession(routing_config_path=None, tunnel_subnets=None, resource_type='RouteBasedL3VpnSession')
+

Bases: vmware.vapi.bindings.struct.VapiStruct

+

A Route Based L3Vpn is more flexible, more powerful and recommended over +policy based. IP Tunnel subnet is created and all traffic routed through +tunnel subnet is sent over tunnel. Routes can be learned through BGP. A +route based L3Vpn is required when using redundant L3Vpn.

+
+

Tip

+

The arguments are used to initialize data attributes with the same +names.

+
+
+ +
+
+class com.vmware.nsx_policy.model_client.RouteMap(links=None, schema=None, self_=None, revision=None, create_time=None, create_user=None, last_modified_time=None, last_modified_user=None, protection=None, system_owned=None, description=None, display_name=None, id=None, resource_type=None, tags=None, logical_router_id=None, sequences=None)
+

Bases: vmware.vapi.bindings.struct.VapiStruct

+
+

Tip

+

The arguments are used to initialize data attributes with the same +names.

+
+
+ +
+
+class com.vmware.nsx_policy.model_client.RouteMapListResult(links=None, schema=None, self_=None, cursor=None, result_count=None, sort_ascending=None, sort_by=None, results=None)
+

Bases: vmware.vapi.bindings.struct.VapiStruct

+
+

Tip

+

The arguments are used to initialize data attributes with the same +names.

+
+
+ +
+
+class com.vmware.nsx_policy.model_client.RouteMapSequence(action=None, match_criteria=None, set_criteria=None)
+

Bases: vmware.vapi.bindings.struct.VapiStruct

+
+

Tip

+

The arguments are used to initialize data attributes with the same +names.

+
+
+
+ACTION_DENY = 'DENY'
+
+ +
+
+ACTION_PERMIT = 'PERMIT'
+
+ +
+ +
+
+class com.vmware.nsx_policy.model_client.RouteMapSequenceMatch(ip_prefix_lists=None, match_community_expression=None)
+

Bases: vmware.vapi.bindings.struct.VapiStruct

+

Match sequence in route map which is used for matching routes. IP prefix +lists and match community expression are mutually exclusive fields, one of +them must be provided.

+
+

Tip

+

The arguments are used to initialize data attributes with the same +names.

+
+
+ +
+
+class com.vmware.nsx_policy.model_client.RouteMapSequenceSet(as_path_prepend=None, community=None, multi_exit_discriminator=None, weight=None)
+

Bases: vmware.vapi.bindings.struct.VapiStruct

+
+

Tip

+

The arguments are used to initialize data attributes with the same +names.

+
+
+ +
+
+class com.vmware.nsx_policy.model_client.RouterNexthop(admin_distance=None, interface_name=None, ip_address=None)
+

Bases: vmware.vapi.bindings.struct.VapiStruct

+

Next hop configuration for network

+
+

Tip

+

The arguments are used to initialize data attributes with the same +names.

+
+
+ +
+
+class com.vmware.nsx_policy.model_client.RoutingConfig(links=None, schema=None, self_=None, revision=None, create_time=None, create_user=None, last_modified_time=None, last_modified_user=None, protection=None, system_owned=None, description=None, display_name=None, id=None, resource_type=None, tags=None, forwarding_up_timer=None, logical_router_id=None)
+

Bases: vmware.vapi.bindings.struct.VapiStruct

+
+

Tip

+

The arguments are used to initialize data attributes with the same +names.

+
+
+ +
+
+class com.vmware.nsx_policy.model_client.RowListField(alias=None, path=None)
+

Bases: vmware.vapi.bindings.struct.VapiStruct

+

Root of the api result set for forming rows.

+
+

Tip

+

The arguments are used to initialize data attributes with the same +names.

+
+
+ +
+
+class com.vmware.nsx_policy.model_client.RuleState(details=None, failure_code=None, failure_message=None, state=None, revision_desired=None)
+

Bases: vmware.vapi.bindings.struct.VapiStruct

+
+

Tip

+

The arguments are used to initialize data attributes with the same +names.

+
+
+
+STATE_FAILED = 'failed'
+
+ +
+
+STATE_IN_PROGRESS = 'in_progress'
+
+ +
+
+STATE_ORPHANED = 'orphaned'
+
+ +
+
+STATE_PARTIAL_SUCCESS = 'partial_success'
+
+ +
+
+STATE_PENDING = 'pending'
+
+ +
+
+STATE_SUCCESS = 'success'
+
+ +
+
+STATE_UNKNOWN = 'unknown'
+
+ +
+ +
+
+class com.vmware.nsx_policy.model_client.SVMDeploymentSpec(host_type=None, name=None, ovf_url=None, service_form_factor=None)
+

Bases: vmware.vapi.bindings.struct.VapiStruct

+

Deployment Specs holds information required to deploy the Service-VMs.i.e. +OVF url where the partner Service-VM OVF is hosted. The host type on which +the OVF(Open Virtualization Format) can be deployed, Form factor to name a +few.

+
+

Tip

+

The arguments are used to initialize data attributes with the same +names.

+
+
+
+HOST_TYPE_ESXI = 'ESXI'
+
+ +
+
+HOST_TYPE_RHELKVM = 'RHELKVM'
+
+ +
+
+HOST_TYPE_UBUNTUKVM = 'UBUNTUKVM'
+
+ +
+
+SERVICE_FORM_FACTOR_LARGE = 'LARGE'
+
+ +
+
+SERVICE_FORM_FACTOR_MEDIUM = 'MEDIUM'
+
+ +
+
+SERVICE_FORM_FACTOR_SMALL = 'SMALL'
+
+ +
+ +
+
+class com.vmware.nsx_policy.model_client.SearchResponse(links=None, schema=None, self_=None, cursor=None, result_count=None, sort_ascending=None, sort_by=None, results=None)
+

Bases: vmware.vapi.bindings.struct.VapiStruct

+
+

Tip

+

The arguments are used to initialize data attributes with the same +names.

+
+
+ +
+
+class com.vmware.nsx_policy.model_client.Segment(links=None, schema=None, self_=None, revision=None, create_time=None, create_user=None, last_modified_time=None, last_modified_user=None, protection=None, system_owned=None, description=None, display_name=None, id=None, resource_type=None, tags=None, parent_path=None, path=None, relative_path=None, children=None, marked_for_delete=None, domain_name=None, l2_extension=None, ls_id=None, subnets=None)
+

Bases: vmware.vapi.bindings.struct.VapiStruct

+

Segment configuration to attach workloads

+
+

Tip

+

The arguments are used to initialize data attributes with the same +names.

+
+
+ +
+
+class com.vmware.nsx_policy.model_client.SegmentListResult(links=None, schema=None, self_=None, cursor=None, result_count=None, sort_ascending=None, sort_by=None, results=None)
+

Bases: vmware.vapi.bindings.struct.VapiStruct

+

Paged collection of Segments

+
+

Tip

+

The arguments are used to initialize data attributes with the same +names.

+
+
+ +
+
+class com.vmware.nsx_policy.model_client.SegmentSubnet(dhcp_ranges=None, gateway_addresses=None, network=None, prefix_len=None)
+

Bases: vmware.vapi.bindings.struct.VapiStruct

+

Subnet configuration for segment

+
+

Tip

+

The arguments are used to initialize data attributes with the same +names.

+
+
+ +
+
+class com.vmware.nsx_policy.model_client.SelectableResourceReference(is_valid=None, target_display_name=None, target_id=None, target_type=None, selected=None)
+

Bases: vmware.vapi.bindings.struct.VapiStruct

+

Resources to take action on

+
+

Tip

+

The arguments are used to initialize data attributes with the same +names.

+
+
+ +
+ +

Bases: vmware.vapi.bindings.struct.VapiStruct

+

The server will populate this field when returing the resource. Ignored on +PUT and POST.

+
+

Tip

+

The arguments are used to initialize data attributes with the same +names.

+
+
+ +
+
+class com.vmware.nsx_policy.model_client.ServerSslProfileBinding(certificate_chain_depth=None, client_certificate_id=None, server_auth=None, server_auth_ca_ids=None, server_auth_crl_ids=None, ssl_profile_id=None)
+

Bases: vmware.vapi.bindings.struct.VapiStruct

+
+

Tip

+

The arguments are used to initialize data attributes with the same +names.

+
+
+
+SERVER_AUTH_IGNORE = 'IGNORE'
+
+ +
+
+SERVER_AUTH_REQUIRED = 'REQUIRED'
+
+ +
+ +
+
+class com.vmware.nsx_policy.model_client.Service(links=None, schema=None, self_=None, revision=None, create_time=None, create_user=None, last_modified_time=None, last_modified_user=None, protection=None, system_owned=None, description=None, display_name=None, id=None, resource_type=None, tags=None, parent_path=None, path=None, relative_path=None, children=None, marked_for_delete=None, service_entries=None)
+

Bases: vmware.vapi.bindings.struct.VapiStruct

+

Used while defining a CommunicationEntry. A service may have multiple +service entries.

+
+

Tip

+

The arguments are used to initialize data attributes with the same +names.

+
+
+ +
+
+class com.vmware.nsx_policy.model_client.ServiceAssociationListResult(links=None, schema=None, self_=None, cursor=None, result_count=None, sort_ascending=None, sort_by=None, service_type='ServiceAssociationListResult')
+

Bases: vmware.vapi.bindings.struct.VapiStruct

+
+

Tip

+

The arguments are used to initialize data attributes with the same +names.

+
+
+
+SERVICE_TYPE_FIREWALLSERVICEASSOCIATIONLISTRESULT = 'FireWallServiceAssociationListResult'
+
+ +
+
+SERVICE_TYPE_IPFIXSERVICEASSOCIATIONLISTRESULT = 'IpfixServiceAssociationListResult'
+
+ +
+ +
+
+class com.vmware.nsx_policy.model_client.ServiceAttachment(links=None, schema=None, self_=None, revision=None, create_time=None, create_user=None, last_modified_time=None, last_modified_user=None, protection=None, system_owned=None, description=None, display_name=None, id=None, resource_type=None, tags=None, attachment_status=None, deployed_to=None, local_ips=None, logical_switch=None, service_port=None)
+

Bases: vmware.vapi.bindings.struct.VapiStruct

+

A ServiceAttachment represents a point on NSX entity (Example - Edge +Router) to which ServiceInstance can be connected through an +InstanceEndpoint. Example - In VMWare Hybric Cloud Extention (HCX) use +case, HCX appliances connect to this Service Attachment Point. We do not +handle the lifecycle of these appliance/s.

+
+

Tip

+

The arguments are used to initialize data attributes with the same +names.

+
+
+
+ATTACHMENT_STATUS_DOWN = 'DOWN'
+
+ +
+
+ATTACHMENT_STATUS_UP = 'UP'
+
+ +
+ +
+
+class com.vmware.nsx_policy.model_client.ServiceAttachmentListResult(links=None, schema=None, self_=None, cursor=None, result_count=None, sort_ascending=None, sort_by=None, results=None)
+

Bases: vmware.vapi.bindings.struct.VapiStruct

+

List of Service Attachments.

+
+

Tip

+

The arguments are used to initialize data attributes with the same +names.

+
+
+ +
+
+class com.vmware.nsx_policy.model_client.ServiceBinding(service_id=None)
+

Bases: vmware.vapi.bindings.struct.VapiStruct

+
+

Tip

+

The arguments are used to initialize data attributes with the same +names.

+
+
+ +
+
+class com.vmware.nsx_policy.model_client.ServiceDefinition(links=None, schema=None, self_=None, revision=None, create_time=None, create_user=None, last_modified_time=None, last_modified_user=None, protection=None, system_owned=None, description=None, display_name=None, id=None, resource_type=None, tags=None, attachment_point=None, functionalities=None, implementations=None, on_failure_policy=None, service_deployment_spec=None, transports=None, vendor_id=None)
+

Bases: vmware.vapi.bindings.struct.VapiStruct

+

Registering a Service is the first step in the ServiceInsertion mechanism. +A ServiceDefinition is used to create a service.

+
+

Tip

+

The arguments are used to initialize data attributes with the same +names.

+
+
+
+ATTACHMENT_POINT_TIER0_LR = 'TIER0_LR'
+
+ +
+
+ATTACHMENT_POINT_TIER1_LR = 'TIER1_LR'
+
+ +
+
+FUNCTIONALITIES_HCX = 'HCX'
+
+ +
+
+FUNCTIONALITIES_IDS_IPS = 'IDS_IPS'
+
+ +
+
+FUNCTIONALITIES_NG_FW = 'NG_FW'
+
+ +
+
+IMPLEMENTATIONS_EAST_WEST = 'EAST_WEST'
+
+ +
+
+IMPLEMENTATIONS_NORTH_SOUTH = 'NORTH_SOUTH'
+
+ +
+
+ON_FAILURE_POLICY_ALLOW = 'ALLOW'
+
+ +
+
+ON_FAILURE_POLICY_BLOCK = 'BLOCK'
+
+ +
+
+TRANSPORTS_L2_BRIDGE = 'L2_BRIDGE'
+
+ +
+
+TRANSPORTS_L3_ROUTED = 'L3_ROUTED'
+
+ +
+ +
+
+class com.vmware.nsx_policy.model_client.ServiceDeploymentSpec(deployment_specs=None, deployment_template=None, nic_metadata_list=None)
+

Bases: vmware.vapi.bindings.struct.VapiStruct

+

ServiceDeployment Spec consists of information required to deploy and +configure the partner appliances. viz. Deployment template, deployment spec +and NIC metatdata.

+
+

Tip

+

The arguments are used to initialize data attributes with the same +names.

+
+
+ +
+
+class com.vmware.nsx_policy.model_client.ServiceEndpoint(certificate=None, certificate_sha256_thumbprint=None, fqdn=None, ip_address=None, port=None)
+

Bases: vmware.vapi.bindings.struct.VapiStruct

+
+

Tip

+

The arguments are used to initialize data attributes with the same +names.

+
+
+ +
+
+class com.vmware.nsx_policy.model_client.ServiceEntry(links=None, schema=None, self_=None, revision=None, create_time=None, create_user=None, last_modified_time=None, last_modified_user=None, protection=None, system_owned=None, description=None, display_name=None, id=None, resource_type='ServiceEntry', tags=None, parent_path=None, path=None, relative_path=None, children=None, marked_for_delete=None)
+

Bases: vmware.vapi.bindings.struct.VapiStruct

+

An Service entry that describes traffic

+
+

Tip

+

The arguments are used to initialize data attributes with the same +names.

+
+
+
+RESOURCE_TYPE_ALGTYPESERVICEENTRY = 'ALGTypeServiceEntry'
+
+ +
+
+RESOURCE_TYPE_ICMPTYPESERVICEENTRY = 'ICMPTypeServiceEntry'
+
+ +
+
+RESOURCE_TYPE_IGMPTYPESERVICEENTRY = 'IGMPTypeServiceEntry'
+
+ +
+
+RESOURCE_TYPE_IPPROTOCOLSERVICEENTRY = 'IPProtocolServiceEntry'
+
+ +
+
+RESOURCE_TYPE_L4PORTSETSERVICEENTRY = 'L4PortSetServiceEntry'
+
+ +
+ +
+
+class com.vmware.nsx_policy.model_client.ServiceEntryListResult(links=None, schema=None, self_=None, cursor=None, result_count=None, sort_ascending=None, sort_by=None, results=None)
+

Bases: vmware.vapi.bindings.struct.VapiStruct

+

Paged Collection of Service entries

+
+

Tip

+

The arguments are used to initialize data attributes with the same +names.

+
+
+ +
+
+class com.vmware.nsx_policy.model_client.ServiceIP(ip_address=None, is_advertised=None, is_arp_proxy_enabled=None, is_loopback_enabled=None, service=None)
+

Bases: vmware.vapi.bindings.struct.VapiStruct

+
+

Tip

+

The arguments are used to initialize data attributes with the same +names.

+
+
+ +
+
+class com.vmware.nsx_policy.model_client.ServiceInsertionRule(links=None, schema=None, self_=None, revision=None, owner=None, description=None, display_name=None, id=None, resource_type=None, action=None, applied_tos=None, destinations=None, destinations_excluded=None, direction=None, disabled=None, ip_protocol=None, is_default=None, logged=None, notes=None, rule_tag=None, services=None, sources=None, sources_excluded=None, redirect_tos=None)
+

Bases: vmware.vapi.bindings.struct.VapiStruct

+

ServiceInsertion Rule.

+
+

Tip

+

The arguments are used to initialize data attributes with the same +names.

+
+
+
+ACTION_ALLOW = 'ALLOW'
+
+ +
+
+ACTION_DO_NOT_REDIRECT = 'DO_NOT_REDIRECT'
+
+ +
+
+ACTION_DROP = 'DROP'
+
+ +
+
+ACTION_REDIRECT = 'REDIRECT'
+
+ +
+
+ACTION_REJECT = 'REJECT'
+
+ +
+
+DIRECTION_IN = 'IN'
+
+ +
+
+DIRECTION_IN_OUT = 'IN_OUT'
+
+ +
+
+DIRECTION_OUT = 'OUT'
+
+ +
+
+IP_PROTOCOL_IPV4 = 'IPV4'
+
+ +
+
+IP_PROTOCOL_IPV4_IPV6 = 'IPV4_IPV6'
+
+ +
+
+IP_PROTOCOL_IPV6 = 'IPV6'
+
+ +
+ +
+
+class com.vmware.nsx_policy.model_client.ServiceInsertionRuleListResult(links=None, schema=None, self_=None, cursor=None, result_count=None, sort_ascending=None, sort_by=None, results=None)
+

Bases: vmware.vapi.bindings.struct.VapiStruct

+

List of ServiceInsertion Rules.

+
+

Tip

+

The arguments are used to initialize data attributes with the same +names.

+
+
+ +
+
+class com.vmware.nsx_policy.model_client.ServiceInsertionSection(links=None, schema=None, self_=None, revision=None, create_time=None, create_user=None, last_modified_time=None, last_modified_user=None, protection=None, system_owned=None, description=None, display_name=None, id=None, resource_type=None, tags=None, applied_tos=None, is_default=None, rule_count=None, section_type=None, stateful=None)
+

Bases: vmware.vapi.bindings.struct.VapiStruct

+

A ServiceInsertion section composed of ServiceInsertion Rules.

+
+

Tip

+

The arguments are used to initialize data attributes with the same +names.

+
+
+
+SECTION_TYPE_L3REDIRECT = 'L3REDIRECT'
+
+ +
+
+SECTION_TYPE_LAYER2 = 'LAYER2'
+
+ +
+
+SECTION_TYPE_LAYER3 = 'LAYER3'
+
+ +
+ +
+
+class com.vmware.nsx_policy.model_client.ServiceInsertionSectionListResult(links=None, schema=None, self_=None, cursor=None, result_count=None, sort_ascending=None, sort_by=None, results=None)
+

Bases: vmware.vapi.bindings.struct.VapiStruct

+

List of ServiceInsertion Sections.

+
+

Tip

+

The arguments are used to initialize data attributes with the same +names.

+
+
+ +
+
+class com.vmware.nsx_policy.model_client.ServiceInsertionSectionRuleList(links=None, schema=None, self_=None, revision=None, create_time=None, create_user=None, last_modified_time=None, last_modified_user=None, protection=None, system_owned=None, description=None, display_name=None, id=None, resource_type=None, tags=None, applied_tos=None, is_default=None, rule_count=None, section_type=None, stateful=None, rules=None)
+

Bases: vmware.vapi.bindings.struct.VapiStruct

+

List of ServiceInsertion Rules.

+
+

Tip

+

The arguments are used to initialize data attributes with the same +names.

+
+
+
+SECTION_TYPE_L3REDIRECT = 'L3REDIRECT'
+
+ +
+
+SECTION_TYPE_LAYER2 = 'LAYER2'
+
+ +
+
+SECTION_TYPE_LAYER3 = 'LAYER3'
+
+ +
+ +
+
+class com.vmware.nsx_policy.model_client.ServiceInsertionService(is_valid=None, target_display_name=None, target_id=None, target_type=None, service=None)
+

Bases: vmware.vapi.bindings.struct.VapiStruct

+

Protocol on which a particular ServiceInsertion Rule should apply to.

+
+

Tip

+

The arguments are used to initialize data attributes with the same +names.

+
+
+ +
+
+class com.vmware.nsx_policy.model_client.ServiceInsertionServiceListResult(links=None, schema=None, self_=None, cursor=None, result_count=None, sort_ascending=None, sort_by=None, results=None)
+

Bases: vmware.vapi.bindings.struct.VapiStruct

+

Service List

+
+

Tip

+

The arguments are used to initialize data attributes with the same +names.

+
+
+ +
+
+class com.vmware.nsx_policy.model_client.ServiceInstance(attachment_point=None, deployed_to=None, deployment_spec_name=None, implementation_type=None, instance_deployment_config=None, instance_deployment_template=None, links=None, schema=None, self_=None, revision=None, create_time=None, create_user=None, last_modified_time=None, last_modified_user=None, protection=None, system_owned=None, description=None, display_name=None, id=None, resource_type='ServiceInstance', tags=None, deployment_mode=None, on_failure_policy=None, service_id=None, transport_type=None)
+

Bases: vmware.vapi.bindings.struct.VapiStruct

+

The deployment of a registered service. Service instance is instantiation +of service. It is the most used type of instance. It is a default instance +to be used when NSX handles lifecycle of appliance. Deployment and +appliance related all the information is necessary.

+
+

Tip

+

The arguments are used to initialize data attributes with the same +names.

+
+
+
+ATTACHMENT_POINT_TIER0_LR = 'TIER0_LR'
+
+ +
+
+ATTACHMENT_POINT_TIER1_LR = 'TIER1_LR'
+
+ +
+
+IMPLEMENTATION_TYPE_EAST_WEST = 'EAST_WEST'
+
+ +
+
+IMPLEMENTATION_TYPE_NORTH_SOUTH = 'NORTH_SOUTH'
+
+ +
+ +
+
+class com.vmware.nsx_policy.model_client.ServiceInstanceEndpoint(links=None, schema=None, self_=None, revision=None, create_time=None, create_user=None, last_modified_time=None, last_modified_user=None, protection=None, system_owned=None, description=None, display_name=None, id=None, resource_type=None, tags=None, parent_path=None, path=None, relative_path=None, children=None, marked_for_delete=None, endpoint_type=None, service_interface_path=None, target_ips=None)
+

Bases: vmware.vapi.bindings.struct.VapiStruct

+

A ServiceInstanceEndpoint belongs to one ByodPolicyServiceInstance and is +attached to one ServiceInterface. A ServiceInstanceEndpoint represents a +redirection target for a RedirectionCommunicationMap.

+
+

Tip

+

The arguments are used to initialize data attributes with the same +names.

+
+
+
+ENDPOINT_TYPE_LOGICAL = 'LOGICAL'
+
+ +
+
+ENDPOINT_TYPE_VIRTUAL = 'VIRTUAL'
+
+ +
+ +
+
+class com.vmware.nsx_policy.model_client.ServiceInstanceListResult(links=None, schema=None, self_=None, cursor=None, result_count=None, sort_ascending=None, sort_by=None, results=None)
+

Bases: vmware.vapi.bindings.struct.VapiStruct

+

Service Instance List

+
+

Tip

+

The arguments are used to initialize data attributes with the same +names.

+
+
+ +
+
+class com.vmware.nsx_policy.model_client.ServiceInterface(links=None, schema=None, self_=None, revision=None, create_time=None, create_user=None, last_modified_time=None, last_modified_user=None, protection=None, system_owned=None, description=None, display_name=None, id=None, resource_type=None, tags=None, parent_path=None, path=None, relative_path=None, children=None, marked_for_delete=None, subnets=None)
+

Bases: vmware.vapi.bindings.struct.VapiStruct

+

Service interface configuration for internal connectivity.

+
+

Tip

+

The arguments are used to initialize data attributes with the same +names.

+
+
+ +
+
+class com.vmware.nsx_policy.model_client.ServiceInterfaceListResult(links=None, schema=None, self_=None, cursor=None, result_count=None, sort_ascending=None, sort_by=None, results=None)
+

Bases: vmware.vapi.bindings.struct.VapiStruct

+

Paged collection of Service Interfaces

+
+

Tip

+

The arguments are used to initialize data attributes with the same +names.

+
+
+ +
+
+class com.vmware.nsx_policy.model_client.ServiceListResult(links=None, schema=None, self_=None, cursor=None, result_count=None, sort_ascending=None, sort_by=None, results=None)
+

Bases: vmware.vapi.bindings.struct.VapiStruct

+

Paged Collection of Services

+
+

Tip

+

The arguments are used to initialize data attributes with the same +names.

+
+
+ +
+
+class com.vmware.nsx_policy.model_client.ServiceProfile(links=None, schema=None, self_=None, revision=None, create_time=None, create_user=None, last_modified_time=None, last_modified_user=None, protection=None, system_owned=None, description=None, display_name=None, id=None, resource_type=None, tags=None, server_addresses=None)
+

Bases: vmware.vapi.bindings.struct.VapiStruct

+
+

Tip

+

The arguments are used to initialize data attributes with the same +names.

+
+
+
+RESOURCE_TYPE_DHCPRELAYPROFILE = 'DhcpRelayProfile'
+
+ +
+ +
+
+class com.vmware.nsx_policy.model_client.ServiceProfileListResult(links=None, schema=None, self_=None, cursor=None, result_count=None, sort_ascending=None, sort_by=None, results=None)
+

Bases: vmware.vapi.bindings.struct.VapiStruct

+
+

Tip

+

The arguments are used to initialize data attributes with the same +names.

+
+
+ +
+
+class com.vmware.nsx_policy.model_client.ServiceiPsListResult(links=None, schema=None, self_=None, cursor=None, result_count=None, sort_ascending=None, sort_by=None, results=None)
+

Bases: vmware.vapi.bindings.struct.VapiStruct

+
+

Tip

+

The arguments are used to initialize data attributes with the same +names.

+
+
+ +
+
+class com.vmware.nsx_policy.model_client.SpoofGuardSwitchingProfile(white_list_providers=None, links=None, schema=None, self_=None, revision=None, create_time=None, create_user=None, last_modified_time=None, last_modified_user=None, protection=None, system_owned=None, description=None, display_name=None, id=None, resource_type='SpoofGuardSwitchingProfile', tags=None, required_capabilities=None)
+

Bases: vmware.vapi.bindings.struct.VapiStruct

+

SpoofGuard configuration

+
+

Tip

+

The arguments are used to initialize data attributes with the same +names.

+
+
+
+WHITE_LIST_PROVIDERS_LPORT_BINDINGS = 'LPORT_BINDINGS'
+
+ +
+
+WHITE_LIST_PROVIDERS_LSWITCH_BINDINGS = 'LSWITCH_BINDINGS'
+
+ +
+ +
+
+class com.vmware.nsx_policy.model_client.SslCertificate(links=None, schema=None, self_=None, revision=None, create_time=None, create_user=None, last_modified_time=None, last_modified_user=None, protection=None, system_owned=None, description=None, display_name=None, id=None, resource_type=None, tags=None, parent_path=None, path=None, relative_path=None, children=None, marked_for_delete=None, details=None, pem_encoded=None)
+

Bases: vmware.vapi.bindings.struct.VapiStruct

+
+

Tip

+

The arguments are used to initialize data attributes with the same +names.

+
+
+ +
+
+class com.vmware.nsx_policy.model_client.SslCertificateList(links=None, schema=None, self_=None, cursor=None, result_count=None, sort_ascending=None, sort_by=None, results=None)
+

Bases: vmware.vapi.bindings.struct.VapiStruct

+

Certificate queries result

+
+

Tip

+

The arguments are used to initialize data attributes with the same +names.

+
+
+ +
+
+class com.vmware.nsx_policy.model_client.SslTrustObjectData(links=None, schema=None, self_=None, revision=None, create_time=None, create_user=None, last_modified_time=None, last_modified_user=None, protection=None, system_owned=None, description=None, display_name=None, id=None, resource_type=None, tags=None, parent_path=None, path=None, relative_path=None, children=None, marked_for_delete=None, key_algo=None, passphrase=None, pem_encoded=None, private_key=None)
+

Bases: vmware.vapi.bindings.struct.VapiStruct

+
+

Tip

+

The arguments are used to initialize data attributes with the same +names.

+
+
+ +
+
+class com.vmware.nsx_policy.model_client.StandardHostSwitch(cpu_config=None, host_switch_name=None, host_switch_profile_ids=None, ip_assignment_spec=None, pnics=None)
+

Bases: vmware.vapi.bindings.struct.VapiStruct

+

Standard host switch specification

+
+

Tip

+

The arguments are used to initialize data attributes with the same +names.

+
+
+ +
+
+class com.vmware.nsx_policy.model_client.StandardHostSwitchSpec(host_switches=None, resource_type='StandardHostSwitchSpec')
+

Bases: vmware.vapi.bindings.struct.VapiStruct

+

Standard host switch specification is used for NSX configured transport +node.

+
+

Tip

+

The arguments are used to initialize data attributes with the same +names.

+
+
+ +
+
+class com.vmware.nsx_policy.model_client.StatItem(drilldown_id=None, tooltip=None, value=None)
+

Bases: vmware.vapi.bindings.struct.VapiStruct

+

Displayed as a single number. It can be used to show the characteristics of +entities such as Logical Switches, Firewall Rules, and so on. For example, +number of logical switches and their admin states.

+
+

Tip

+

The arguments are used to initialize data attributes with the same +names.

+
+
+ +
+
+class com.vmware.nsx_policy.model_client.StaticARPConfig(links=None, schema=None, self_=None, revision=None, create_time=None, create_user=None, last_modified_time=None, last_modified_user=None, protection=None, system_owned=None, description=None, display_name=None, id=None, resource_type=None, tags=None, parent_path=None, path=None, relative_path=None, children=None, marked_for_delete=None, ip_address=None, mac_address=None)
+

Bases: vmware.vapi.bindings.struct.VapiStruct

+

Contains Static ARP configuration for Segment.

+
+

Tip

+

The arguments are used to initialize data attributes with the same +names.

+
+
+ +
+
+class com.vmware.nsx_policy.model_client.StaticHopBfdPeer(links=None, schema=None, self_=None, revision=None, create_time=None, create_user=None, last_modified_time=None, last_modified_user=None, protection=None, system_owned=None, description=None, display_name=None, id=None, resource_type=None, tags=None, bfd_config=None, enabled=None, peer_ip_address=None, source_addresses=None)
+

Bases: vmware.vapi.bindings.struct.VapiStruct

+
+

Tip

+

The arguments are used to initialize data attributes with the same +names.

+
+
+ +
+
+class com.vmware.nsx_policy.model_client.StaticHopBfdPeerDeleteRequestParameters(force=None)
+

Bases: vmware.vapi.bindings.struct.VapiStruct

+

BFD peer delete request parameters

+
+

Tip

+

The arguments are used to initialize data attributes with the same +names.

+
+
+ +
+
+class com.vmware.nsx_policy.model_client.StaticHopBfdPeerListResult(links=None, schema=None, self_=None, cursor=None, result_count=None, sort_ascending=None, sort_by=None, results=None)
+

Bases: vmware.vapi.bindings.struct.VapiStruct

+
+

Tip

+

The arguments are used to initialize data attributes with the same +names.

+
+
+ +
+
+class com.vmware.nsx_policy.model_client.StaticIpListSpec(default_gateway=None, ip_list=None, subnet_mask=None, resource_type='StaticIpListSpec')
+

Bases: vmware.vapi.bindings.struct.VapiStruct

+

IP assignment specification for Static IP List.

+
+

Tip

+

The arguments are used to initialize data attributes with the same +names.

+
+
+ +
+
+class com.vmware.nsx_policy.model_client.StaticIpMacListSpec(default_gateway=None, ip_mac_list=None, subnet_mask=None, resource_type='StaticIpMacListSpec')
+

Bases: vmware.vapi.bindings.struct.VapiStruct

+

IP and MAC assignment specification for Static IP List.

+
+

Tip

+

The arguments are used to initialize data attributes with the same +names.

+
+
+ +
+
+class com.vmware.nsx_policy.model_client.StaticIpPoolSpec(ip_pool_id=None, resource_type='StaticIpPoolSpec')
+

Bases: vmware.vapi.bindings.struct.VapiStruct

+

IP assignment specification for Static IP Pool.

+
+

Tip

+

The arguments are used to initialize data attributes with the same +names.

+
+
+ +
+
+class com.vmware.nsx_policy.model_client.StaticRoute(links=None, schema=None, self_=None, revision=None, create_time=None, create_user=None, last_modified_time=None, last_modified_user=None, protection=None, system_owned=None, description=None, display_name=None, id=None, resource_type=None, tags=None, logical_router_id=None, network=None, next_hops=None)
+

Bases: vmware.vapi.bindings.struct.VapiStruct

+
+

Tip

+

The arguments are used to initialize data attributes with the same +names.

+
+
+ +
+
+class com.vmware.nsx_policy.model_client.StaticRouteListResult(links=None, schema=None, self_=None, cursor=None, result_count=None, sort_ascending=None, sort_by=None, results=None)
+

Bases: vmware.vapi.bindings.struct.VapiStruct

+
+

Tip

+

The arguments are used to initialize data attributes with the same +names.

+
+
+ +
+
+class com.vmware.nsx_policy.model_client.StaticRouteNextHop(administrative_distance=None, bfd_enabled=None, blackhole_action=None, ip_address=None, logical_router_port_id=None)
+

Bases: vmware.vapi.bindings.struct.VapiStruct

+
+

Tip

+

The arguments are used to initialize data attributes with the same +names.

+
+
+
+BLACKHOLE_ACTION_DISCARD = 'DISCARD'
+
+ +
+ +
+
+class com.vmware.nsx_policy.model_client.StaticRoutes(links=None, schema=None, self_=None, revision=None, create_time=None, create_user=None, last_modified_time=None, last_modified_user=None, protection=None, system_owned=None, description=None, display_name=None, id=None, resource_type=None, tags=None, parent_path=None, path=None, relative_path=None, children=None, marked_for_delete=None, network=None, next_hops=None)
+

Bases: vmware.vapi.bindings.struct.VapiStruct

+

Static routes configuration on Provider or Network

+
+

Tip

+

The arguments are used to initialize data attributes with the same +names.

+
+
+ +
+
+class com.vmware.nsx_policy.model_client.StaticRoutesListResult(links=None, schema=None, self_=None, cursor=None, result_count=None, sort_ascending=None, sort_by=None, results=None)
+

Bases: vmware.vapi.bindings.struct.VapiStruct

+

Paged collection of Static Routes

+
+

Tip

+

The arguments are used to initialize data attributes with the same +names.

+
+
+ +
+
+class com.vmware.nsx_policy.model_client.StatsConfiguration(label=None, navigation=None, sections=None, stat=None, links=None, schema=None, self_=None, revision=None, create_time=None, create_user=None, last_modified_time=None, last_modified_user=None, protection=None, system_owned=None, description=None, display_name=None, id=None, resource_type='StatsConfiguration', tags=None, datasources=None, drilldown_id=None, footer=None, is_drilldown=None, shared=None, weight=None)
+

Bases: vmware.vapi.bindings.struct.VapiStruct

+

Represents configuration of a statistic for an entity. Example, number of +logical switches and their admin states.

+
+

Tip

+

The arguments are used to initialize data attributes with the same +names.

+
+
+ +
+
+class com.vmware.nsx_policy.model_client.StatusCount(degraded_count=None, down_count=None, status=None, up_count=None)
+

Bases: vmware.vapi.bindings.struct.VapiStruct

+
+

Tip

+

The arguments are used to initialize data attributes with the same +names.

+
+
+
+STATUS_DEGRADED = 'DEGRADED'
+
+ +
+
+STATUS_DOWN = 'DOWN'
+
+ +
+
+STATUS_UNKNOWN = 'UNKNOWN'
+
+ +
+
+STATUS_UP = 'UP'
+
+ +
+ +
+
+class com.vmware.nsx_policy.model_client.StringListResult(links=None, schema=None, self_=None, cursor=None, result_count=None, sort_ascending=None, sort_by=None, results=None)
+

Bases: vmware.vapi.bindings.struct.VapiStruct

+

Collection of all records

+
+

Tip

+

The arguments are used to initialize data attributes with the same +names.

+
+
+ +
+
+class com.vmware.nsx_policy.model_client.StubFactory(stub_config)
+

Bases: vmware.vapi.bindings.stub.StubFactoryBase

+
+ +
+
+class com.vmware.nsx_policy.model_client.SwitchSecuritySwitchingProfile(block_non_ip_traffic=None, bpdu_filter=None, dhcp_filter=None, rate_limits=None, links=None, schema=None, self_=None, revision=None, create_time=None, create_user=None, last_modified_time=None, last_modified_user=None, protection=None, system_owned=None, description=None, display_name=None, id=None, resource_type='SwitchSecuritySwitchingProfile', tags=None, required_capabilities=None)
+

Bases: vmware.vapi.bindings.struct.VapiStruct

+
+

Tip

+

The arguments are used to initialize data attributes with the same +names.

+
+
+ +
+
+class com.vmware.nsx_policy.model_client.SwitchingProfileTypeIdEntry(key=None, value=None)
+

Bases: vmware.vapi.bindings.struct.VapiStruct

+
+

Tip

+

The arguments are used to initialize data attributes with the same +names.

+
+
+
+KEY_IPDISCOVERYSWITCHINGPROFILE = 'IpDiscoverySwitchingProfile'
+
+ +
+
+KEY_MACMANAGEMENTSWITCHINGPROFILE = 'MacManagementSwitchingProfile'
+
+ +
+
+KEY_PORTMIRRORINGSWITCHINGPROFILE = 'PortMirroringSwitchingProfile'
+
+ +
+
+KEY_QOSSWITCHINGPROFILE = 'QosSwitchingProfile'
+
+ +
+
+KEY_SPOOFGUARDSWITCHINGPROFILE = 'SpoofGuardSwitchingProfile'
+
+ +
+
+KEY_SWITCHSECURITYSWITCHINGPROFILE = 'SwitchSecuritySwitchingProfile'
+
+ +
+ +
+
+class com.vmware.nsx_policy.model_client.SwitchingProfilesListResult(links=None, schema=None, self_=None, cursor=None, result_count=None, sort_ascending=None, sort_by=None, results=None)
+

Bases: vmware.vapi.bindings.struct.VapiStruct

+

Switching Profile queries result

+
+

Tip

+

The arguments are used to initialize data attributes with the same +names.

+
+
+ +
+
+class com.vmware.nsx_policy.model_client.Tag(scope=None, tag=None)
+

Bases: vmware.vapi.bindings.struct.VapiStruct

+

Arbitrary key-value pairs that may be attached to an entity

+
+

Tip

+

The arguments are used to initialize data attributes with the same +names.

+
+
+ +
+
+class com.vmware.nsx_policy.model_client.TargetResourceStatus(target_id=None, target_status=None)
+

Bases: vmware.vapi.bindings.struct.VapiStruct

+

Holds status of target resource in firewall context.

+
+

Tip

+

The arguments are used to initialize data attributes with the same +names.

+
+
+
+TARGET_STATUS_DISABLED = 'DISABLED'
+
+ +
+
+TARGET_STATUS_ENABLED = 'ENABLED'
+
+ +
+ +
+
+class com.vmware.nsx_policy.model_client.TaskListResult(links=None, schema=None, self_=None, cursor=None, result_count=None, sort_ascending=None, sort_by=None, results=None)
+

Bases: vmware.vapi.bindings.struct.VapiStruct

+

Task query results

+
+

Tip

+

The arguments are used to initialize data attributes with the same +names.

+
+
+ +
+
+class com.vmware.nsx_policy.model_client.TaskProperties(links=None, schema=None, self_=None, async_response_available=None, cancelable=None, description=None, end_time=None, id=None, message=None, progress=None, request_method=None, request_uri=None, start_time=None, status=None, user=None)
+

Bases: vmware.vapi.bindings.struct.VapiStruct

+

Task properties

+
+

Tip

+

The arguments are used to initialize data attributes with the same +names.

+
+
+
+STATUS_CANCELED = 'canceled'
+
+ +
+
+STATUS_CANCELING = 'canceling'
+
+ +
+
+STATUS_ERROR = 'error'
+
+ +
+
+STATUS_KILLED = 'killed'
+
+ +
+
+STATUS_RUNNING = 'running'
+
+ +
+
+STATUS_SUCCESS = 'success'
+
+ +
+ +
+
+class com.vmware.nsx_policy.model_client.TcpPolicyLbMonitorProfile(links=None, schema=None, self_=None, revision=None, create_time=None, create_user=None, last_modified_time=None, last_modified_user=None, protection=None, system_owned=None, description=None, display_name=None, id=None, resource_type='TcpPolicyLbMonitorProfile', tags=None, parent_path=None, path=None, relative_path=None, children=None, marked_for_delete=None, fall_count=None, interval=None, monitor_port=None, rise_count=None, timeout=None)
+

Bases: vmware.vapi.bindings.struct.VapiStruct

+

Active healthchecks are disabled by default and can be enabled for a server +pool by binding a health monitor to the Group through the PolicyLbRule +object. This represents active health monitoring over TCP. Active +healthchecks are initiated periodically, at a configurable interval, to +each member of the Group. Only if a healthcheck fails consecutively for a +specified number of times (fall_count) to a member will the member status +be marked DOWN. Once a member is DOWN, a specified number of consecutive +successful healthchecks (rise_count) will bring the member back to UP +state. After a healthcheck is initiated, if it does not complete within a +certain period, then also the healthcheck is considered to be unsuccessful. +Completing a healthcheck within timeout means establishing a connection +(TCP or SSL), if applicable, sending the request and receiving the +response, all within the configured timeout.

+
+

Tip

+

The arguments are used to initialize data attributes with the same +names.

+
+
+ +
+
+class com.vmware.nsx_policy.model_client.TcpPolicyLbVirtualServer(links=None, schema=None, self_=None, revision=None, create_time=None, create_user=None, last_modified_time=None, last_modified_user=None, protection=None, system_owned=None, description=None, display_name=None, id=None, resource_type='TcpPolicyLbVirtualServer', tags=None, parent_path=None, path=None, relative_path=None, children=None, marked_for_delete=None, access_log_enabled=None, ip_address=None, lb_persistence_profile=None, ports=None, router_path=None, traffic_source=None)
+

Bases: vmware.vapi.bindings.struct.VapiStruct

+

Virtual server acts as a facade to an application, receives all client +connections over TCP and distributes them among the backend servers.

+
+

Tip

+

The arguments are used to initialize data attributes with the same +names.

+
+
+ +
+
+class com.vmware.nsx_policy.model_client.TeamingPolicy(active_list=None, policy=None, standby_list=None)
+

Bases: vmware.vapi.bindings.struct.VapiStruct

+

Uplink Teaming Policy

+
+

Tip

+

The arguments are used to initialize data attributes with the same +names.

+
+
+
+POLICY_FAILOVER_ORDER = 'FAILOVER_ORDER'
+
+ +
+
+POLICY_LOADBALANCE_SRCID = 'LOADBALANCE_SRCID'
+
+ +
+ +
+
+class com.vmware.nsx_policy.model_client.TelemetryAgreement(links=None, schema=None, self_=None, revision=None, create_time=None, create_user=None, last_modified_time=None, last_modified_user=None, protection=None, system_owned=None, description=None, display_name=None, id=None, resource_type=None, tags=None, telemetry_agreement_displayed=None)
+

Bases: vmware.vapi.bindings.struct.VapiStruct

+
+

Tip

+

The arguments are used to initialize data attributes with the same +names.

+
+
+ +
+
+class com.vmware.nsx_policy.model_client.TelemetryConfig(links=None, schema=None, self_=None, revision=None, create_time=None, create_user=None, last_modified_time=None, last_modified_user=None, protection=None, system_owned=None, description=None, display_name=None, id=None, resource_type=None, tags=None, ceip_acceptance=None, proxy_enabled=None, schedule_enabled=None, telemetry_proxy=None, telemetry_schedule=None)
+

Bases: vmware.vapi.bindings.struct.VapiStruct

+
+

Tip

+

The arguments are used to initialize data attributes with the same +names.

+
+
+ +
+
+class com.vmware.nsx_policy.model_client.TelemetryProxy(links=None, schema=None, self_=None, revision=None, create_time=None, create_user=None, last_modified_time=None, last_modified_user=None, protection=None, system_owned=None, description=None, display_name=None, id=None, resource_type=None, tags=None, hostname=None, password=None, port=None, scheme=None, username=None)
+

Bases: vmware.vapi.bindings.struct.VapiStruct

+
+

Tip

+

The arguments are used to initialize data attributes with the same +names.

+
+
+
+SCHEME_HTTP = 'HTTP'
+
+ +
+
+SCHEME_HTTPS = 'HTTPS'
+
+ +
+ +
+
+class com.vmware.nsx_policy.model_client.TelemetrySchedule(frequency_type='TelemetrySchedule')
+

Bases: vmware.vapi.bindings.struct.VapiStruct

+

Abstract base type for telemetry schedule configuration

+
+

Tip

+

The arguments are used to initialize data attributes with the same +names.

+
+
+ +
+
+class com.vmware.nsx_policy.model_client.Tooltip(condition=None, text=None)
+

Bases: vmware.vapi.bindings.struct.VapiStruct

+

Tooltip to be shown while hovering over the dashboard UI element.

+
+

Tip

+

The arguments are used to initialize data attributes with the same +names.

+
+
+ +
+
+class com.vmware.nsx_policy.model_client.Topology(connections=None, elements=None)
+

Bases: vmware.vapi.bindings.struct.VapiStruct

+

Topology contains the discovered/realized data for a discovery session that +can be represented in graphical view. It contains two parts: - Elements: +Elements are verticies that represent a policy group which contains list of +VMs and processes inside VM. - Connections: Connections are edges which +provides information of connectivity between the elements.

+
+

Tip

+

The arguments are used to initialize data attributes with the same +names.

+
+
+ +
+
+class com.vmware.nsx_policy.model_client.Traceflow(links=None, schema=None, self_=None, analysis=None, counters=None, id=None, logical_counters=None, lport_id=None, operation_state=None, result_overflowed=None, timeout=None)
+

Bases: vmware.vapi.bindings.struct.VapiStruct

+
+

Tip

+

The arguments are used to initialize data attributes with the same +names.

+
+
+
+OPERATION_STATE_FAILED = 'FAILED'
+
+ +
+
+OPERATION_STATE_FINISHED = 'FINISHED'
+
+ +
+
+OPERATION_STATE_IN_PROGRESS = 'IN_PROGRESS'
+
+ +
+ +
+
+class com.vmware.nsx_policy.model_client.TraceflowListResult(links=None, schema=None, self_=None, cursor=None, result_count=None, sort_ascending=None, sort_by=None, results=None)
+

Bases: vmware.vapi.bindings.struct.VapiStruct

+

Traceflow queries result

+
+

Tip

+

The arguments are used to initialize data attributes with the same +names.

+
+
+ +
+
+class com.vmware.nsx_policy.model_client.TraceflowObservation(component_name=None, component_sub_type=None, component_type=None, resource_type=None, sequence_no=None, timestamp=None, timestamp_micro=None, transport_node_id=None, transport_node_name=None, transport_node_type=None)
+

Bases: vmware.vapi.bindings.struct.VapiStruct

+
+

Tip

+

The arguments are used to initialize data attributes with the same +names.

+
+
+
+COMPONENT_SUB_TYPE_LR_TIER0 = 'LR_TIER0'
+
+ +
+
+COMPONENT_SUB_TYPE_LR_TIER1 = 'LR_TIER1'
+
+ +
+
+COMPONENT_SUB_TYPE_LR_VRF_TIER0 = 'LR_VRF_TIER0'
+
+ +
+
+COMPONENT_SUB_TYPE_LS_TRANSIT = 'LS_TRANSIT'
+
+ +
+
+COMPONENT_SUB_TYPE_UNKNOWN = 'UNKNOWN'
+
+ +
+
+COMPONENT_TYPE_BRIDGE = 'BRIDGE'
+
+ +
+
+COMPONENT_TYPE_DFW = 'DFW'
+
+ +
+
+COMPONENT_TYPE_EDGE_HOSTSWITCH = 'EDGE_HOSTSWITCH'
+
+ +
+
+COMPONENT_TYPE_EDGE_TUNNEL = 'EDGE_TUNNEL'
+
+ +
+
+COMPONENT_TYPE_LR = 'LR'
+
+ +
+
+COMPONENT_TYPE_LS = 'LS'
+
+ +
+
+COMPONENT_TYPE_PHYSICAL = 'PHYSICAL'
+
+ +
+
+COMPONENT_TYPE_UNKNOWN = 'UNKNOWN'
+
+ +
+
+RESOURCE_TYPE_TRACEFLOWOBSERVATIONDELIVERED = 'TraceflowObservationDelivered'
+
+ +
+
+RESOURCE_TYPE_TRACEFLOWOBSERVATIONDROPPED = 'TraceflowObservationDropped'
+
+ +
+
+RESOURCE_TYPE_TRACEFLOWOBSERVATIONDROPPEDLOGICAL = 'TraceflowObservationDroppedLogical'
+
+ +
+
+RESOURCE_TYPE_TRACEFLOWOBSERVATIONFORWARDED = 'TraceflowObservationForwarded'
+
+ +
+
+RESOURCE_TYPE_TRACEFLOWOBSERVATIONFORWARDEDLOGICAL = 'TraceflowObservationForwardedLogical'
+
+ +
+
+RESOURCE_TYPE_TRACEFLOWOBSERVATIONRECEIVED = 'TraceflowObservationReceived'
+
+ +
+
+RESOURCE_TYPE_TRACEFLOWOBSERVATIONRECEIVEDLOGICAL = 'TraceflowObservationReceivedLogical'
+
+ +
+
+TRANSPORT_NODE_TYPE_EDGE = 'EDGE'
+
+ +
+
+TRANSPORT_NODE_TYPE_ESX = 'ESX'
+
+ +
+
+TRANSPORT_NODE_TYPE_HYPERV = 'HYPERV'
+
+ +
+
+TRANSPORT_NODE_TYPE_OTHERS = 'OTHERS'
+
+ +
+
+TRANSPORT_NODE_TYPE_PUBLIC_CLOUD_GATEWAY_NODE = 'PUBLIC_CLOUD_GATEWAY_NODE'
+
+ +
+
+TRANSPORT_NODE_TYPE_RHELKVM = 'RHELKVM'
+
+ +
+
+TRANSPORT_NODE_TYPE_UBUNTUKVM = 'UBUNTUKVM'
+
+ +
+ +
+
+class com.vmware.nsx_policy.model_client.TraceflowObservationCounters(delivered_count=None, dropped_count=None, forwarded_count=None, received_count=None)
+

Bases: vmware.vapi.bindings.struct.VapiStruct

+
+

Tip

+

The arguments are used to initialize data attributes with the same +names.

+
+
+ +
+
+class com.vmware.nsx_policy.model_client.TraceflowObservationDelivered(component_name=None, component_sub_type=None, component_type=None, resource_type=None, sequence_no=None, timestamp=None, timestamp_micro=None, transport_node_id=None, transport_node_name=None, transport_node_type=None, lport_id=None, lport_name=None, vlan_id=None)
+

Bases: vmware.vapi.bindings.struct.VapiStruct

+
+

Tip

+

The arguments are used to initialize data attributes with the same +names.

+
+
+
+COMPONENT_SUB_TYPE_LR_TIER0 = 'LR_TIER0'
+
+ +
+
+COMPONENT_SUB_TYPE_LR_TIER1 = 'LR_TIER1'
+
+ +
+
+COMPONENT_SUB_TYPE_LR_VRF_TIER0 = 'LR_VRF_TIER0'
+
+ +
+
+COMPONENT_SUB_TYPE_LS_TRANSIT = 'LS_TRANSIT'
+
+ +
+
+COMPONENT_SUB_TYPE_UNKNOWN = 'UNKNOWN'
+
+ +
+
+COMPONENT_TYPE_BRIDGE = 'BRIDGE'
+
+ +
+
+COMPONENT_TYPE_DFW = 'DFW'
+
+ +
+
+COMPONENT_TYPE_EDGE_HOSTSWITCH = 'EDGE_HOSTSWITCH'
+
+ +
+
+COMPONENT_TYPE_EDGE_TUNNEL = 'EDGE_TUNNEL'
+
+ +
+
+COMPONENT_TYPE_LR = 'LR'
+
+ +
+
+COMPONENT_TYPE_LS = 'LS'
+
+ +
+
+COMPONENT_TYPE_PHYSICAL = 'PHYSICAL'
+
+ +
+
+COMPONENT_TYPE_UNKNOWN = 'UNKNOWN'
+
+ +
+
+RESOURCE_TYPE_TRACEFLOWOBSERVATIONDELIVERED = 'TraceflowObservationDelivered'
+
+ +
+
+RESOURCE_TYPE_TRACEFLOWOBSERVATIONDROPPED = 'TraceflowObservationDropped'
+
+ +
+
+RESOURCE_TYPE_TRACEFLOWOBSERVATIONDROPPEDLOGICAL = 'TraceflowObservationDroppedLogical'
+
+ +
+
+RESOURCE_TYPE_TRACEFLOWOBSERVATIONFORWARDED = 'TraceflowObservationForwarded'
+
+ +
+
+RESOURCE_TYPE_TRACEFLOWOBSERVATIONFORWARDEDLOGICAL = 'TraceflowObservationForwardedLogical'
+
+ +
+
+RESOURCE_TYPE_TRACEFLOWOBSERVATIONRECEIVED = 'TraceflowObservationReceived'
+
+ +
+
+RESOURCE_TYPE_TRACEFLOWOBSERVATIONRECEIVEDLOGICAL = 'TraceflowObservationReceivedLogical'
+
+ +
+
+TRANSPORT_NODE_TYPE_EDGE = 'EDGE'
+
+ +
+
+TRANSPORT_NODE_TYPE_ESX = 'ESX'
+
+ +
+
+TRANSPORT_NODE_TYPE_HYPERV = 'HYPERV'
+
+ +
+
+TRANSPORT_NODE_TYPE_OTHERS = 'OTHERS'
+
+ +
+
+TRANSPORT_NODE_TYPE_PUBLIC_CLOUD_GATEWAY_NODE = 'PUBLIC_CLOUD_GATEWAY_NODE'
+
+ +
+
+TRANSPORT_NODE_TYPE_RHELKVM = 'RHELKVM'
+
+ +
+
+TRANSPORT_NODE_TYPE_UBUNTUKVM = 'UBUNTUKVM'
+
+ +
+ +
+
+class com.vmware.nsx_policy.model_client.TraceflowObservationDropped(component_name=None, component_sub_type=None, component_type=None, resource_type=None, sequence_no=None, timestamp=None, timestamp_micro=None, transport_node_id=None, transport_node_name=None, transport_node_type=None, acl_rule_id=None, lport_id=None, lport_name=None, reason=None)
+

Bases: vmware.vapi.bindings.struct.VapiStruct

+
+

Tip

+

The arguments are used to initialize data attributes with the same +names.

+
+
+
+COMPONENT_SUB_TYPE_LR_TIER0 = 'LR_TIER0'
+
+ +
+
+COMPONENT_SUB_TYPE_LR_TIER1 = 'LR_TIER1'
+
+ +
+
+COMPONENT_SUB_TYPE_LR_VRF_TIER0 = 'LR_VRF_TIER0'
+
+ +
+
+COMPONENT_SUB_TYPE_LS_TRANSIT = 'LS_TRANSIT'
+
+ +
+
+COMPONENT_SUB_TYPE_UNKNOWN = 'UNKNOWN'
+
+ +
+
+COMPONENT_TYPE_BRIDGE = 'BRIDGE'
+
+ +
+
+COMPONENT_TYPE_DFW = 'DFW'
+
+ +
+
+COMPONENT_TYPE_EDGE_HOSTSWITCH = 'EDGE_HOSTSWITCH'
+
+ +
+
+COMPONENT_TYPE_EDGE_TUNNEL = 'EDGE_TUNNEL'
+
+ +
+
+COMPONENT_TYPE_LR = 'LR'
+
+ +
+
+COMPONENT_TYPE_LS = 'LS'
+
+ +
+
+COMPONENT_TYPE_PHYSICAL = 'PHYSICAL'
+
+ +
+
+COMPONENT_TYPE_UNKNOWN = 'UNKNOWN'
+
+ +
+
+REASON_ARP_FAIL = 'ARP_FAIL'
+
+ +
+
+REASON_FW_RULE = 'FW_RULE'
+
+ +
+
+REASON_NO_ROUTE = 'NO_ROUTE'
+
+ +
+
+REASON_TTL_ZERO = 'TTL_ZERO'
+
+ +
+
+REASON_UNKNOWN = 'UNKNOWN'
+
+ +
+
+RESOURCE_TYPE_TRACEFLOWOBSERVATIONDELIVERED = 'TraceflowObservationDelivered'
+
+ +
+
+RESOURCE_TYPE_TRACEFLOWOBSERVATIONDROPPED = 'TraceflowObservationDropped'
+
+ +
+
+RESOURCE_TYPE_TRACEFLOWOBSERVATIONDROPPEDLOGICAL = 'TraceflowObservationDroppedLogical'
+
+ +
+
+RESOURCE_TYPE_TRACEFLOWOBSERVATIONFORWARDED = 'TraceflowObservationForwarded'
+
+ +
+
+RESOURCE_TYPE_TRACEFLOWOBSERVATIONFORWARDEDLOGICAL = 'TraceflowObservationForwardedLogical'
+
+ +
+
+RESOURCE_TYPE_TRACEFLOWOBSERVATIONRECEIVED = 'TraceflowObservationReceived'
+
+ +
+
+RESOURCE_TYPE_TRACEFLOWOBSERVATIONRECEIVEDLOGICAL = 'TraceflowObservationReceivedLogical'
+
+ +
+
+TRANSPORT_NODE_TYPE_EDGE = 'EDGE'
+
+ +
+
+TRANSPORT_NODE_TYPE_ESX = 'ESX'
+
+ +
+
+TRANSPORT_NODE_TYPE_HYPERV = 'HYPERV'
+
+ +
+
+TRANSPORT_NODE_TYPE_OTHERS = 'OTHERS'
+
+ +
+
+TRANSPORT_NODE_TYPE_PUBLIC_CLOUD_GATEWAY_NODE = 'PUBLIC_CLOUD_GATEWAY_NODE'
+
+ +
+
+TRANSPORT_NODE_TYPE_RHELKVM = 'RHELKVM'
+
+ +
+
+TRANSPORT_NODE_TYPE_UBUNTUKVM = 'UBUNTUKVM'
+
+ +
+ +
+
+class com.vmware.nsx_policy.model_client.TraceflowObservationDroppedLogical(component_name=None, component_sub_type=None, component_type=None, resource_type=None, sequence_no=None, timestamp=None, timestamp_micro=None, transport_node_id=None, transport_node_name=None, transport_node_type=None, acl_rule_id=None, lport_id=None, lport_name=None, reason=None, component_id=None)
+

Bases: vmware.vapi.bindings.struct.VapiStruct

+
+

Tip

+

The arguments are used to initialize data attributes with the same +names.

+
+
+
+COMPONENT_SUB_TYPE_LR_TIER0 = 'LR_TIER0'
+
+ +
+
+COMPONENT_SUB_TYPE_LR_TIER1 = 'LR_TIER1'
+
+ +
+
+COMPONENT_SUB_TYPE_LR_VRF_TIER0 = 'LR_VRF_TIER0'
+
+ +
+
+COMPONENT_SUB_TYPE_LS_TRANSIT = 'LS_TRANSIT'
+
+ +
+
+COMPONENT_SUB_TYPE_UNKNOWN = 'UNKNOWN'
+
+ +
+
+COMPONENT_TYPE_BRIDGE = 'BRIDGE'
+
+ +
+
+COMPONENT_TYPE_DFW = 'DFW'
+
+ +
+
+COMPONENT_TYPE_EDGE_HOSTSWITCH = 'EDGE_HOSTSWITCH'
+
+ +
+
+COMPONENT_TYPE_EDGE_TUNNEL = 'EDGE_TUNNEL'
+
+ +
+
+COMPONENT_TYPE_LR = 'LR'
+
+ +
+
+COMPONENT_TYPE_LS = 'LS'
+
+ +
+
+COMPONENT_TYPE_PHYSICAL = 'PHYSICAL'
+
+ +
+
+COMPONENT_TYPE_UNKNOWN = 'UNKNOWN'
+
+ +
+
+REASON_ARP_FAIL = 'ARP_FAIL'
+
+ +
+
+REASON_FW_RULE = 'FW_RULE'
+
+ +
+
+REASON_NO_ROUTE = 'NO_ROUTE'
+
+ +
+
+REASON_TTL_ZERO = 'TTL_ZERO'
+
+ +
+
+REASON_UNKNOWN = 'UNKNOWN'
+
+ +
+
+RESOURCE_TYPE_TRACEFLOWOBSERVATIONDELIVERED = 'TraceflowObservationDelivered'
+
+ +
+
+RESOURCE_TYPE_TRACEFLOWOBSERVATIONDROPPED = 'TraceflowObservationDropped'
+
+ +
+
+RESOURCE_TYPE_TRACEFLOWOBSERVATIONDROPPEDLOGICAL = 'TraceflowObservationDroppedLogical'
+
+ +
+
+RESOURCE_TYPE_TRACEFLOWOBSERVATIONFORWARDED = 'TraceflowObservationForwarded'
+
+ +
+
+RESOURCE_TYPE_TRACEFLOWOBSERVATIONFORWARDEDLOGICAL = 'TraceflowObservationForwardedLogical'
+
+ +
+
+RESOURCE_TYPE_TRACEFLOWOBSERVATIONRECEIVED = 'TraceflowObservationReceived'
+
+ +
+
+RESOURCE_TYPE_TRACEFLOWOBSERVATIONRECEIVEDLOGICAL = 'TraceflowObservationReceivedLogical'
+
+ +
+
+TRANSPORT_NODE_TYPE_EDGE = 'EDGE'
+
+ +
+
+TRANSPORT_NODE_TYPE_ESX = 'ESX'
+
+ +
+
+TRANSPORT_NODE_TYPE_HYPERV = 'HYPERV'
+
+ +
+
+TRANSPORT_NODE_TYPE_OTHERS = 'OTHERS'
+
+ +
+
+TRANSPORT_NODE_TYPE_PUBLIC_CLOUD_GATEWAY_NODE = 'PUBLIC_CLOUD_GATEWAY_NODE'
+
+ +
+
+TRANSPORT_NODE_TYPE_RHELKVM = 'RHELKVM'
+
+ +
+
+TRANSPORT_NODE_TYPE_UBUNTUKVM = 'UBUNTUKVM'
+
+ +
+ +
+
+class com.vmware.nsx_policy.model_client.TraceflowObservationForwarded(component_name=None, component_sub_type=None, component_type=None, resource_type=None, sequence_no=None, timestamp=None, timestamp_micro=None, transport_node_id=None, transport_node_name=None, transport_node_type=None, context=None, dst_transport_node_id=None, dst_transport_node_name=None, local_ip_address=None, remote_ip_address=None, uplink_name=None, vtep_label=None)
+

Bases: vmware.vapi.bindings.struct.VapiStruct

+
+

Tip

+

The arguments are used to initialize data attributes with the same +names.

+
+
+
+COMPONENT_SUB_TYPE_LR_TIER0 = 'LR_TIER0'
+
+ +
+
+COMPONENT_SUB_TYPE_LR_TIER1 = 'LR_TIER1'
+
+ +
+
+COMPONENT_SUB_TYPE_LR_VRF_TIER0 = 'LR_VRF_TIER0'
+
+ +
+
+COMPONENT_SUB_TYPE_LS_TRANSIT = 'LS_TRANSIT'
+
+ +
+
+COMPONENT_SUB_TYPE_UNKNOWN = 'UNKNOWN'
+
+ +
+
+COMPONENT_TYPE_BRIDGE = 'BRIDGE'
+
+ +
+
+COMPONENT_TYPE_DFW = 'DFW'
+
+ +
+
+COMPONENT_TYPE_EDGE_HOSTSWITCH = 'EDGE_HOSTSWITCH'
+
+ +
+
+COMPONENT_TYPE_EDGE_TUNNEL = 'EDGE_TUNNEL'
+
+ +
+
+COMPONENT_TYPE_LR = 'LR'
+
+ +
+
+COMPONENT_TYPE_LS = 'LS'
+
+ +
+
+COMPONENT_TYPE_PHYSICAL = 'PHYSICAL'
+
+ +
+
+COMPONENT_TYPE_UNKNOWN = 'UNKNOWN'
+
+ +
+
+RESOURCE_TYPE_TRACEFLOWOBSERVATIONDELIVERED = 'TraceflowObservationDelivered'
+
+ +
+
+RESOURCE_TYPE_TRACEFLOWOBSERVATIONDROPPED = 'TraceflowObservationDropped'
+
+ +
+
+RESOURCE_TYPE_TRACEFLOWOBSERVATIONDROPPEDLOGICAL = 'TraceflowObservationDroppedLogical'
+
+ +
+
+RESOURCE_TYPE_TRACEFLOWOBSERVATIONFORWARDED = 'TraceflowObservationForwarded'
+
+ +
+
+RESOURCE_TYPE_TRACEFLOWOBSERVATIONFORWARDEDLOGICAL = 'TraceflowObservationForwardedLogical'
+
+ +
+
+RESOURCE_TYPE_TRACEFLOWOBSERVATIONRECEIVED = 'TraceflowObservationReceived'
+
+ +
+
+RESOURCE_TYPE_TRACEFLOWOBSERVATIONRECEIVEDLOGICAL = 'TraceflowObservationReceivedLogical'
+
+ +
+
+TRANSPORT_NODE_TYPE_EDGE = 'EDGE'
+
+ +
+
+TRANSPORT_NODE_TYPE_ESX = 'ESX'
+
+ +
+
+TRANSPORT_NODE_TYPE_HYPERV = 'HYPERV'
+
+ +
+
+TRANSPORT_NODE_TYPE_OTHERS = 'OTHERS'
+
+ +
+
+TRANSPORT_NODE_TYPE_PUBLIC_CLOUD_GATEWAY_NODE = 'PUBLIC_CLOUD_GATEWAY_NODE'
+
+ +
+
+TRANSPORT_NODE_TYPE_RHELKVM = 'RHELKVM'
+
+ +
+
+TRANSPORT_NODE_TYPE_UBUNTUKVM = 'UBUNTUKVM'
+
+ +
+ +
+
+class com.vmware.nsx_policy.model_client.TraceflowObservationForwardedLogical(component_name=None, component_sub_type=None, component_type=None, resource_type=None, sequence_no=None, timestamp=None, timestamp_micro=None, transport_node_id=None, transport_node_name=None, transport_node_type=None, acl_rule_id=None, component_id=None, dst_component_id=None, dst_component_name=None, dst_component_type=None, lport_id=None, lport_name=None, vni=None)
+

Bases: vmware.vapi.bindings.struct.VapiStruct

+
+

Tip

+

The arguments are used to initialize data attributes with the same +names.

+
+
+
+COMPONENT_SUB_TYPE_LR_TIER0 = 'LR_TIER0'
+
+ +
+
+COMPONENT_SUB_TYPE_LR_TIER1 = 'LR_TIER1'
+
+ +
+
+COMPONENT_SUB_TYPE_LR_VRF_TIER0 = 'LR_VRF_TIER0'
+
+ +
+
+COMPONENT_SUB_TYPE_LS_TRANSIT = 'LS_TRANSIT'
+
+ +
+
+COMPONENT_SUB_TYPE_UNKNOWN = 'UNKNOWN'
+
+ +
+
+COMPONENT_TYPE_BRIDGE = 'BRIDGE'
+
+ +
+
+COMPONENT_TYPE_DFW = 'DFW'
+
+ +
+
+COMPONENT_TYPE_EDGE_HOSTSWITCH = 'EDGE_HOSTSWITCH'
+
+ +
+
+COMPONENT_TYPE_EDGE_TUNNEL = 'EDGE_TUNNEL'
+
+ +
+
+COMPONENT_TYPE_LR = 'LR'
+
+ +
+
+COMPONENT_TYPE_LS = 'LS'
+
+ +
+
+COMPONENT_TYPE_PHYSICAL = 'PHYSICAL'
+
+ +
+
+COMPONENT_TYPE_UNKNOWN = 'UNKNOWN'
+
+ +
+
+DST_COMPONENT_TYPE_BRIDGE = 'BRIDGE'
+
+ +
+
+DST_COMPONENT_TYPE_DFW = 'DFW'
+
+ +
+
+DST_COMPONENT_TYPE_EDGE_HOSTSWITCH = 'EDGE_HOSTSWITCH'
+
+ +
+
+DST_COMPONENT_TYPE_EDGE_TUNNEL = 'EDGE_TUNNEL'
+
+ +
+
+DST_COMPONENT_TYPE_LR = 'LR'
+
+ +
+
+DST_COMPONENT_TYPE_LS = 'LS'
+
+ +
+
+DST_COMPONENT_TYPE_PHYSICAL = 'PHYSICAL'
+
+ +
+
+DST_COMPONENT_TYPE_UNKNOWN = 'UNKNOWN'
+
+ +
+
+RESOURCE_TYPE_TRACEFLOWOBSERVATIONDELIVERED = 'TraceflowObservationDelivered'
+
+ +
+
+RESOURCE_TYPE_TRACEFLOWOBSERVATIONDROPPED = 'TraceflowObservationDropped'
+
+ +
+
+RESOURCE_TYPE_TRACEFLOWOBSERVATIONDROPPEDLOGICAL = 'TraceflowObservationDroppedLogical'
+
+ +
+
+RESOURCE_TYPE_TRACEFLOWOBSERVATIONFORWARDED = 'TraceflowObservationForwarded'
+
+ +
+
+RESOURCE_TYPE_TRACEFLOWOBSERVATIONFORWARDEDLOGICAL = 'TraceflowObservationForwardedLogical'
+
+ +
+
+RESOURCE_TYPE_TRACEFLOWOBSERVATIONRECEIVED = 'TraceflowObservationReceived'
+
+ +
+
+RESOURCE_TYPE_TRACEFLOWOBSERVATIONRECEIVEDLOGICAL = 'TraceflowObservationReceivedLogical'
+
+ +
+
+TRANSPORT_NODE_TYPE_EDGE = 'EDGE'
+
+ +
+
+TRANSPORT_NODE_TYPE_ESX = 'ESX'
+
+ +
+
+TRANSPORT_NODE_TYPE_HYPERV = 'HYPERV'
+
+ +
+
+TRANSPORT_NODE_TYPE_OTHERS = 'OTHERS'
+
+ +
+
+TRANSPORT_NODE_TYPE_PUBLIC_CLOUD_GATEWAY_NODE = 'PUBLIC_CLOUD_GATEWAY_NODE'
+
+ +
+
+TRANSPORT_NODE_TYPE_RHELKVM = 'RHELKVM'
+
+ +
+
+TRANSPORT_NODE_TYPE_UBUNTUKVM = 'UBUNTUKVM'
+
+ +
+ +
+
+class com.vmware.nsx_policy.model_client.TraceflowObservationListResult(links=None, schema=None, self_=None, cursor=None, result_count=None, sort_ascending=None, sort_by=None, results=None)
+

Bases: vmware.vapi.bindings.struct.VapiStruct

+
+

Tip

+

The arguments are used to initialize data attributes with the same +names.

+
+
+ +
+
+class com.vmware.nsx_policy.model_client.TraceflowObservationReceived(component_name=None, component_sub_type=None, component_type=None, resource_type=None, sequence_no=None, timestamp=None, timestamp_micro=None, transport_node_id=None, transport_node_name=None, transport_node_type=None, local_ip_address=None, remote_ip_address=None, uplink_name=None, vtep_label=None)
+

Bases: vmware.vapi.bindings.struct.VapiStruct

+
+

Tip

+

The arguments are used to initialize data attributes with the same +names.

+
+
+
+COMPONENT_SUB_TYPE_LR_TIER0 = 'LR_TIER0'
+
+ +
+
+COMPONENT_SUB_TYPE_LR_TIER1 = 'LR_TIER1'
+
+ +
+
+COMPONENT_SUB_TYPE_LR_VRF_TIER0 = 'LR_VRF_TIER0'
+
+ +
+
+COMPONENT_SUB_TYPE_LS_TRANSIT = 'LS_TRANSIT'
+
+ +
+
+COMPONENT_SUB_TYPE_UNKNOWN = 'UNKNOWN'
+
+ +
+
+COMPONENT_TYPE_BRIDGE = 'BRIDGE'
+
+ +
+
+COMPONENT_TYPE_DFW = 'DFW'
+
+ +
+
+COMPONENT_TYPE_EDGE_HOSTSWITCH = 'EDGE_HOSTSWITCH'
+
+ +
+
+COMPONENT_TYPE_EDGE_TUNNEL = 'EDGE_TUNNEL'
+
+ +
+
+COMPONENT_TYPE_LR = 'LR'
+
+ +
+
+COMPONENT_TYPE_LS = 'LS'
+
+ +
+
+COMPONENT_TYPE_PHYSICAL = 'PHYSICAL'
+
+ +
+
+COMPONENT_TYPE_UNKNOWN = 'UNKNOWN'
+
+ +
+
+RESOURCE_TYPE_TRACEFLOWOBSERVATIONDELIVERED = 'TraceflowObservationDelivered'
+
+ +
+
+RESOURCE_TYPE_TRACEFLOWOBSERVATIONDROPPED = 'TraceflowObservationDropped'
+
+ +
+
+RESOURCE_TYPE_TRACEFLOWOBSERVATIONDROPPEDLOGICAL = 'TraceflowObservationDroppedLogical'
+
+ +
+
+RESOURCE_TYPE_TRACEFLOWOBSERVATIONFORWARDED = 'TraceflowObservationForwarded'
+
+ +
+
+RESOURCE_TYPE_TRACEFLOWOBSERVATIONFORWARDEDLOGICAL = 'TraceflowObservationForwardedLogical'
+
+ +
+
+RESOURCE_TYPE_TRACEFLOWOBSERVATIONRECEIVED = 'TraceflowObservationReceived'
+
+ +
+
+RESOURCE_TYPE_TRACEFLOWOBSERVATIONRECEIVEDLOGICAL = 'TraceflowObservationReceivedLogical'
+
+ +
+
+TRANSPORT_NODE_TYPE_EDGE = 'EDGE'
+
+ +
+
+TRANSPORT_NODE_TYPE_ESX = 'ESX'
+
+ +
+
+TRANSPORT_NODE_TYPE_HYPERV = 'HYPERV'
+
+ +
+
+TRANSPORT_NODE_TYPE_OTHERS = 'OTHERS'
+
+ +
+
+TRANSPORT_NODE_TYPE_PUBLIC_CLOUD_GATEWAY_NODE = 'PUBLIC_CLOUD_GATEWAY_NODE'
+
+ +
+
+TRANSPORT_NODE_TYPE_RHELKVM = 'RHELKVM'
+
+ +
+
+TRANSPORT_NODE_TYPE_UBUNTUKVM = 'UBUNTUKVM'
+
+ +
+ +
+
+class com.vmware.nsx_policy.model_client.TraceflowObservationReceivedLogical(component_name=None, component_sub_type=None, component_type=None, resource_type=None, sequence_no=None, timestamp=None, timestamp_micro=None, transport_node_id=None, transport_node_name=None, transport_node_type=None, component_id=None, lport_id=None, lport_name=None, src_component_id=None, src_component_name=None, src_component_type=None, vni=None)
+

Bases: vmware.vapi.bindings.struct.VapiStruct

+
+

Tip

+

The arguments are used to initialize data attributes with the same +names.

+
+
+
+COMPONENT_SUB_TYPE_LR_TIER0 = 'LR_TIER0'
+
+ +
+
+COMPONENT_SUB_TYPE_LR_TIER1 = 'LR_TIER1'
+
+ +
+
+COMPONENT_SUB_TYPE_LR_VRF_TIER0 = 'LR_VRF_TIER0'
+
+ +
+
+COMPONENT_SUB_TYPE_LS_TRANSIT = 'LS_TRANSIT'
+
+ +
+
+COMPONENT_SUB_TYPE_UNKNOWN = 'UNKNOWN'
+
+ +
+
+COMPONENT_TYPE_BRIDGE = 'BRIDGE'
+
+ +
+
+COMPONENT_TYPE_DFW = 'DFW'
+
+ +
+
+COMPONENT_TYPE_EDGE_HOSTSWITCH = 'EDGE_HOSTSWITCH'
+
+ +
+
+COMPONENT_TYPE_EDGE_TUNNEL = 'EDGE_TUNNEL'
+
+ +
+
+COMPONENT_TYPE_LR = 'LR'
+
+ +
+
+COMPONENT_TYPE_LS = 'LS'
+
+ +
+
+COMPONENT_TYPE_PHYSICAL = 'PHYSICAL'
+
+ +
+
+COMPONENT_TYPE_UNKNOWN = 'UNKNOWN'
+
+ +
+
+RESOURCE_TYPE_TRACEFLOWOBSERVATIONDELIVERED = 'TraceflowObservationDelivered'
+
+ +
+
+RESOURCE_TYPE_TRACEFLOWOBSERVATIONDROPPED = 'TraceflowObservationDropped'
+
+ +
+
+RESOURCE_TYPE_TRACEFLOWOBSERVATIONDROPPEDLOGICAL = 'TraceflowObservationDroppedLogical'
+
+ +
+
+RESOURCE_TYPE_TRACEFLOWOBSERVATIONFORWARDED = 'TraceflowObservationForwarded'
+
+ +
+
+RESOURCE_TYPE_TRACEFLOWOBSERVATIONFORWARDEDLOGICAL = 'TraceflowObservationForwardedLogical'
+
+ +
+
+RESOURCE_TYPE_TRACEFLOWOBSERVATIONRECEIVED = 'TraceflowObservationReceived'
+
+ +
+
+RESOURCE_TYPE_TRACEFLOWOBSERVATIONRECEIVEDLOGICAL = 'TraceflowObservationReceivedLogical'
+
+ +
+
+SRC_COMPONENT_TYPE_BRIDGE = 'BRIDGE'
+
+ +
+
+SRC_COMPONENT_TYPE_DFW = 'DFW'
+
+ +
+
+SRC_COMPONENT_TYPE_EDGE_HOSTSWITCH = 'EDGE_HOSTSWITCH'
+
+ +
+
+SRC_COMPONENT_TYPE_EDGE_TUNNEL = 'EDGE_TUNNEL'
+
+ +
+
+SRC_COMPONENT_TYPE_LR = 'LR'
+
+ +
+
+SRC_COMPONENT_TYPE_LS = 'LS'
+
+ +
+
+SRC_COMPONENT_TYPE_PHYSICAL = 'PHYSICAL'
+
+ +
+
+SRC_COMPONENT_TYPE_UNKNOWN = 'UNKNOWN'
+
+ +
+
+TRANSPORT_NODE_TYPE_EDGE = 'EDGE'
+
+ +
+
+TRANSPORT_NODE_TYPE_ESX = 'ESX'
+
+ +
+
+TRANSPORT_NODE_TYPE_HYPERV = 'HYPERV'
+
+ +
+
+TRANSPORT_NODE_TYPE_OTHERS = 'OTHERS'
+
+ +
+
+TRANSPORT_NODE_TYPE_PUBLIC_CLOUD_GATEWAY_NODE = 'PUBLIC_CLOUD_GATEWAY_NODE'
+
+ +
+
+TRANSPORT_NODE_TYPE_RHELKVM = 'RHELKVM'
+
+ +
+
+TRANSPORT_NODE_TYPE_UBUNTUKVM = 'UBUNTUKVM'
+
+ +
+ +
+
+class com.vmware.nsx_policy.model_client.TransportNode(links=None, schema=None, self_=None, revision=None, create_time=None, create_user=None, last_modified_time=None, last_modified_user=None, protection=None, system_owned=None, description=None, display_name=None, id=None, resource_type=None, tags=None, host_switch_spec=None, host_switches=None, maintenance_mode=None, node_id=None, transport_zone_endpoints=None)
+

Bases: vmware.vapi.bindings.struct.VapiStruct

+

Transport Node

+
+

Tip

+

The arguments are used to initialize data attributes with the same +names.

+
+
+
+MAINTENANCE_MODE_DISABLED = 'DISABLED'
+
+ +
+
+MAINTENANCE_MODE_ENABLED = 'ENABLED'
+
+ +
+
+MAINTENANCE_MODE_FORCE_ENABLED = 'FORCE_ENABLED'
+
+ +
+ +
+
+class com.vmware.nsx_policy.model_client.TransportNodeListResult(links=None, schema=None, self_=None, cursor=None, result_count=None, sort_ascending=None, sort_by=None, results=None)
+

Bases: vmware.vapi.bindings.struct.VapiStruct

+

Transport Node queries result

+
+

Tip

+

The arguments are used to initialize data attributes with the same +names.

+
+
+ +
+
+class com.vmware.nsx_policy.model_client.TransportNodeState(details=None, failure_code=None, failure_message=None, state=None, host_switch_states=None, maintenance_mode_state=None, transport_node_id=None)
+

Bases: vmware.vapi.bindings.struct.VapiStruct

+

Transport Node State

+
+

Tip

+

The arguments are used to initialize data attributes with the same +names.

+
+
+
+MAINTENANCE_MODE_STATE_DISABLED = 'DISABLED'
+
+ +
+
+MAINTENANCE_MODE_STATE_ENABLED = 'ENABLED'
+
+ +
+
+MAINTENANCE_MODE_STATE_ENTERING = 'ENTERING'
+
+ +
+
+MAINTENANCE_MODE_STATE_EXITING = 'EXITING'
+
+ +
+
+STATE_FAILED = 'failed'
+
+ +
+
+STATE_IN_PROGRESS = 'in_progress'
+
+ +
+
+STATE_ORPHANED = 'orphaned'
+
+ +
+
+STATE_PARTIAL_SUCCESS = 'partial_success'
+
+ +
+
+STATE_PENDING = 'pending'
+
+ +
+
+STATE_SUCCESS = 'success'
+
+ +
+
+STATE_UNKNOWN = 'unknown'
+
+ +
+ +
+
+class com.vmware.nsx_policy.model_client.TransportNodeStateListResult(links=None, schema=None, self_=None, cursor=None, result_count=None, sort_ascending=None, sort_by=None, results=None)
+

Bases: vmware.vapi.bindings.struct.VapiStruct

+

Transport node state queries result

+
+

Tip

+

The arguments are used to initialize data attributes with the same +names.

+
+
+ +
+
+class com.vmware.nsx_policy.model_client.TransportNodeStatus(control_connection_status=None, mgmt_connection_status=None, node_display_name=None, node_uuid=None, pnic_status=None, status=None, tunnel_status=None)
+

Bases: vmware.vapi.bindings.struct.VapiStruct

+
+

Tip

+

The arguments are used to initialize data attributes with the same +names.

+
+
+
+MGMT_CONNECTION_STATUS_DOWN = 'DOWN'
+
+ +
+
+MGMT_CONNECTION_STATUS_UP = 'UP'
+
+ +
+
+STATUS_DEGRADED = 'DEGRADED'
+
+ +
+
+STATUS_DOWN = 'DOWN'
+
+ +
+
+STATUS_UNKNOWN = 'UNKNOWN'
+
+ +
+
+STATUS_UP = 'UP'
+
+ +
+ +
+
+class com.vmware.nsx_policy.model_client.TransportNodeStatusListResult(links=None, schema=None, self_=None, cursor=None, result_count=None, sort_ascending=None, sort_by=None, results=None)
+

Bases: vmware.vapi.bindings.struct.VapiStruct

+
+

Tip

+

The arguments are used to initialize data attributes with the same +names.

+
+
+ +
+
+class com.vmware.nsx_policy.model_client.TransportNodeTemplateListResult(links=None, schema=None, self_=None, cursor=None, result_count=None, sort_ascending=None, sort_by=None, results=None)
+

Bases: vmware.vapi.bindings.struct.VapiStruct

+

Compute collection transport node template list result

+
+

Tip

+

The arguments are used to initialize data attributes with the same +names.

+
+
+ +
+
+class com.vmware.nsx_policy.model_client.TransportNodeTemplateState(node_id=None, state=None, transport_node_id=None)
+

Bases: vmware.vapi.bindings.struct.VapiStruct

+

transport node template application state

+
+

Tip

+

The arguments are used to initialize data attributes with the same +names.

+
+
+
+STATE_FAILED_TO_CREATE = 'FAILED_TO_CREATE'
+
+ +
+
+STATE_FAILED_TO_REALIZE = 'FAILED_TO_REALIZE'
+
+ +
+
+STATE_IN_PROGRESS = 'IN_PROGRESS'
+
+ +
+
+STATE_SUCCESS = 'SUCCESS'
+
+ +
+ +
+
+class com.vmware.nsx_policy.model_client.TransportZone(links=None, schema=None, self_=None, revision=None, create_time=None, create_user=None, last_modified_time=None, last_modified_user=None, protection=None, system_owned=None, description=None, display_name=None, id=None, resource_type=None, tags=None, host_switch_mode=None, host_switch_name=None, nested_nsx=None, transport_type=None, transport_zone_profile_ids=None, uplink_teaming_policy_names=None)
+

Bases: vmware.vapi.bindings.struct.VapiStruct

+
+

Tip

+

The arguments are used to initialize data attributes with the same +names.

+
+
+
+HOST_SWITCH_MODE_ENS = 'ENS'
+
+ +
+
+HOST_SWITCH_MODE_STANDARD = 'STANDARD'
+
+ +
+
+TRANSPORT_TYPE_OVERLAY = 'OVERLAY'
+
+ +
+
+TRANSPORT_TYPE_VLAN = 'VLAN'
+
+ +
+ +
+
+class com.vmware.nsx_policy.model_client.TransportZoneEndPoint(transport_zone_id=None, transport_zone_profile_ids=None)
+

Bases: vmware.vapi.bindings.struct.VapiStruct

+

Specify which HostSwitch from this TransportNode is used handle traffic for +given TransportZone

+
+

Tip

+

The arguments are used to initialize data attributes with the same +names.

+
+
+ +
+
+class com.vmware.nsx_policy.model_client.TransportZoneListResult(links=None, schema=None, self_=None, cursor=None, result_count=None, sort_ascending=None, sort_by=None, results=None)
+

Bases: vmware.vapi.bindings.struct.VapiStruct

+

Transport zone queries result

+
+

Tip

+

The arguments are used to initialize data attributes with the same +names.

+
+
+ +
+
+class com.vmware.nsx_policy.model_client.TransportZoneProfile(links=None, schema=None, self_=None, revision=None, create_time=None, create_user=None, last_modified_time=None, last_modified_user=None, protection=None, system_owned=None, description=None, display_name=None, id=None, resource_type='TransportZoneProfile', tags=None)
+

Bases: vmware.vapi.bindings.struct.VapiStruct

+
+

Tip

+

The arguments are used to initialize data attributes with the same +names.

+
+
+
+RESOURCE_TYPE_BFDHEALTHMONITORINGPROFILE = 'BfdHealthMonitoringProfile'
+
+ +
+ +
+
+class com.vmware.nsx_policy.model_client.TransportZoneProfileListResult(links=None, schema=None, self_=None, cursor=None, result_count=None, sort_ascending=None, sort_by=None, results=None)
+

Bases: vmware.vapi.bindings.struct.VapiStruct

+

Transport zone profile queries result

+
+

Tip

+

The arguments are used to initialize data attributes with the same +names.

+
+
+ +
+
+class com.vmware.nsx_policy.model_client.TransportZoneProfileTypeIdEntry(profile_id=None, resource_type=None)
+

Bases: vmware.vapi.bindings.struct.VapiStruct

+
+

Tip

+

The arguments are used to initialize data attributes with the same +names.

+
+
+
+RESOURCE_TYPE_BFDHEALTHMONITORINGPROFILE = 'BfdHealthMonitoringProfile'
+
+ +
+ +
+
+class com.vmware.nsx_policy.model_client.TransportZoneStatus(num_logical_ports=None, num_logical_switches=None, num_transport_nodes=None, transport_zone_id=None)
+

Bases: vmware.vapi.bindings.struct.VapiStruct

+

Transport zone runtime status information

+
+

Tip

+

The arguments are used to initialize data attributes with the same +names.

+
+
+ +
+
+class com.vmware.nsx_policy.model_client.TransportZoneStatusListResult(links=None, schema=None, self_=None, cursor=None, result_count=None, sort_ascending=None, sort_by=None, results=None)
+

Bases: vmware.vapi.bindings.struct.VapiStruct

+

Transport zone runtime status queries result

+
+

Tip

+

The arguments are used to initialize data attributes with the same +names.

+
+
+ +
+
+class com.vmware.nsx_policy.model_client.TrunkVlanRange(end=None, start=None)
+

Bases: vmware.vapi.bindings.struct.VapiStruct

+

Trunk VLAN id range

+
+

Tip

+

The arguments are used to initialize data attributes with the same +names.

+
+
+ +
+
+class com.vmware.nsx_policy.model_client.TrustManagementData(supported_algorithms=None)
+

Bases: vmware.vapi.bindings.struct.VapiStruct

+
+

Tip

+

The arguments are used to initialize data attributes with the same +names.

+
+
+ +
+
+class com.vmware.nsx_policy.model_client.TrustObjectData(links=None, schema=None, self_=None, revision=None, create_time=None, create_user=None, last_modified_time=None, last_modified_user=None, protection=None, system_owned=None, description=None, display_name=None, id=None, resource_type=None, tags=None, key_algo=None, passphrase=None, pem_encoded=None, private_key=None)
+

Bases: vmware.vapi.bindings.struct.VapiStruct

+
+

Tip

+

The arguments are used to initialize data attributes with the same +names.

+
+
+ +
+
+class com.vmware.nsx_policy.model_client.TunnelList(links=None, schema=None, self_=None, cursor=None, result_count=None, sort_ascending=None, sort_by=None, tunnels=None)
+

Bases: vmware.vapi.bindings.struct.VapiStruct

+
+

Tip

+

The arguments are used to initialize data attributes with the same +names.

+
+
+ +
+
+class com.vmware.nsx_policy.model_client.TunnelPortConfig(ip_subnets=None, tunnel_port_id=None)
+

Bases: vmware.vapi.bindings.struct.VapiStruct

+

IP Tunnel port configuration.

+
+

Tip

+

The arguments are used to initialize data attributes with the same +names.

+
+
+ +
+
+class com.vmware.nsx_policy.model_client.TunnelProperties(links=None, schema=None, self_=None, bfd=None, egress_interface=None, encap=None, last_updated_time=None, local_ip=None, name=None, remote_ip=None, remote_node_display_name=None, remote_node_id=None, status=None)
+

Bases: vmware.vapi.bindings.struct.VapiStruct

+
+

Tip

+

The arguments are used to initialize data attributes with the same +names.

+
+
+
+ENCAP_GENEVE = 'GENEVE'
+
+ +
+
+ENCAP_STT = 'STT'
+
+ +
+
+ENCAP_UNKNOWN_ENCAP = 'UNKNOWN_ENCAP'
+
+ +
+
+ENCAP_VXLAN = 'VXLAN'
+
+ +
+
+STATUS_DOWN = 'DOWN'
+
+ +
+
+STATUS_UNKNOWN = 'UNKNOWN'
+
+ +
+
+STATUS_UP = 'UP'
+
+ +
+ +
+
+class com.vmware.nsx_policy.model_client.TunnelStatusCount(degraded_count=None, down_count=None, status=None, up_count=None, bfd_diagnostic=None, bfd_status=None)
+

Bases: vmware.vapi.bindings.struct.VapiStruct

+
+

Tip

+

The arguments are used to initialize data attributes with the same +names.

+
+
+
+STATUS_DEGRADED = 'DEGRADED'
+
+ +
+
+STATUS_DOWN = 'DOWN'
+
+ +
+
+STATUS_UNKNOWN = 'UNKNOWN'
+
+ +
+
+STATUS_UP = 'UP'
+
+ +
+ +
+
+class com.vmware.nsx_policy.model_client.TunnelSubnet(ip_addresses=None, prefix_length=None)
+

Bases: vmware.vapi.bindings.struct.VapiStruct

+
+

Tip

+

The arguments are used to initialize data attributes with the same +names.

+
+
+ +
+
+class com.vmware.nsx_policy.model_client.TypeGroup(count=None, group_by_field_value=None, hits=None)
+

Bases: vmware.vapi.bindings.struct.VapiStruct

+
+

Tip

+

The arguments are used to initialize data attributes with the same +names.

+
+
+ +
+
+class com.vmware.nsx_policy.model_client.UdpPolicyLbMonitorProfile(receive=None, send=None, links=None, schema=None, self_=None, revision=None, create_time=None, create_user=None, last_modified_time=None, last_modified_user=None, protection=None, system_owned=None, description=None, display_name=None, id=None, resource_type='UdpPolicyLbMonitorProfile', tags=None, parent_path=None, path=None, relative_path=None, children=None, marked_for_delete=None, fall_count=None, interval=None, monitor_port=None, rise_count=None, timeout=None)
+

Bases: vmware.vapi.bindings.struct.VapiStruct

+

Active healthchecks are disabled by default and can be enabled for a server +pool by binding a health monitor to the Group through the PolicyLbRule +object. This represents active health monitoring over UDP. Active +healthchecks are initiated periodically, at a configurable interval, to +each member of the Group. Only if a healthcheck fails consecutively for a +specified number of times (fall_count) to a member will the member status +be marked DOWN. Once a member is DOWN, a specified number of consecutive +successful healthchecks (rise_count) will bring the member back to UP +state. After a healthcheck is initiated, if it does not complete within a +certain period, then also the healthcheck is considered to be unsuccessful. +Completing a healthcheck within timeout means establishing a connection +(TCP or SSL), if applicable, sending the request and receiving the +response, all within the configured timeout.

+
+

Tip

+

The arguments are used to initialize data attributes with the same +names.

+
+
+ +
+
+class com.vmware.nsx_policy.model_client.UdpPolicyLbVirtualServer(links=None, schema=None, self_=None, revision=None, create_time=None, create_user=None, last_modified_time=None, last_modified_user=None, protection=None, system_owned=None, description=None, display_name=None, id=None, resource_type='UdpPolicyLbVirtualServer', tags=None, parent_path=None, path=None, relative_path=None, children=None, marked_for_delete=None, access_log_enabled=None, ip_address=None, lb_persistence_profile=None, ports=None, router_path=None, traffic_source=None)
+

Bases: vmware.vapi.bindings.struct.VapiStruct

+

Virtual server acts as a facade to an application, receives all client +connections over UDP and distributes them among the backend servers.

+
+

Tip

+

The arguments are used to initialize data attributes with the same +names.

+
+
+ +
+
+class com.vmware.nsx_policy.model_client.UnassociatedVMListResult(links=None, schema=None, self_=None, cursor=None, result_count=None, sort_ascending=None, sort_by=None, last_update_timestamp=None, results=None)
+

Bases: vmware.vapi.bindings.struct.VapiStruct

+
+

Tip

+

The arguments are used to initialize data attributes with the same +names.

+
+
+ +
+
+class com.vmware.nsx_policy.model_client.UpdatePrincipalIdentityCertificateRequest(links=None, schema=None, self_=None, revision=None, create_time=None, create_user=None, last_modified_time=None, last_modified_user=None, protection=None, system_owned=None, description=None, display_name=None, id=None, resource_type=None, tags=None, certificate_id=None, principal_identity_id=None)
+

Bases: vmware.vapi.bindings.struct.VapiStruct

+

Request to update the certificate of a principal identity with a new +certificate

+
+

Tip

+

The arguments are used to initialize data attributes with the same +names.

+
+
+ +
+
+class com.vmware.nsx_policy.model_client.UpgradeHistory(initial_version=None, target_version=None, timestamp=None, upgrade_status=None)
+

Bases: vmware.vapi.bindings.struct.VapiStruct

+
+

Tip

+

The arguments are used to initialize data attributes with the same +names.

+
+
+
+UPGRADE_STATUS_FAILED = 'FAILED'
+
+ +
+
+UPGRADE_STATUS_STARTED = 'STARTED'
+
+ +
+
+UPGRADE_STATUS_SUCCESS = 'SUCCESS'
+
+ +
+ +
+
+class com.vmware.nsx_policy.model_client.UpgradeHistoryList(links=None, schema=None, self_=None, cursor=None, result_count=None, sort_ascending=None, sort_by=None, results=None)
+

Bases: vmware.vapi.bindings.struct.VapiStruct

+
+

Tip

+

The arguments are used to initialize data attributes with the same +names.

+
+
+ +
+ +

Bases: vmware.vapi.bindings.struct.VapiStruct

+

Object to identify an uplink based on its type and name

+
+

Tip

+

The arguments are used to initialize data attributes with the same +names.

+
+
+ +
+ +
+ +
+ +
+ +
+
+class com.vmware.nsx_policy.model_client.UplinkHostSwitchProfile(lags=None, mtu=None, named_teamings=None, teaming=None, transport_vlan=None, links=None, schema=None, self_=None, revision=None, create_time=None, create_user=None, last_modified_time=None, last_modified_user=None, protection=None, system_owned=None, description=None, display_name=None, id=None, resource_type='UplinkHostSwitchProfile', tags=None, required_capabilities=None)
+

Bases: vmware.vapi.bindings.struct.VapiStruct

+

Profile for uplink policies

+
+

Tip

+

The arguments are used to initialize data attributes with the same +names.

+
+
+ +
+
+class com.vmware.nsx_policy.model_client.UrlAlias(alias=None, query=None, url=None)
+

Bases: vmware.vapi.bindings.struct.VapiStruct

+

Short name or alias of a url. It is used to represent the url.

+
+

Tip

+

The arguments are used to initialize data attributes with the same +names.

+
+
+ +
+
+class com.vmware.nsx_policy.model_client.UserInfo(roles=None, user_name=None)
+

Bases: vmware.vapi.bindings.struct.VapiStruct

+

Authenticated User Info

+
+

Tip

+

The arguments are used to initialize data attributes with the same +names.

+
+
+ +
+
+class com.vmware.nsx_policy.model_client.UsernamePasswordLoginCredential(password=None, thumbprint=None, username=None, credential_type='UsernamePasswordLoginCredential')
+

Bases: vmware.vapi.bindings.struct.VapiStruct

+

A login credential specifying a username and password

+
+

Tip

+

The arguments are used to initialize data attributes with the same +names.

+
+
+ +
+
+class com.vmware.nsx_policy.model_client.VIPSubnet(active_vip_addresses=None, prefix_length=None)
+

Bases: vmware.vapi.bindings.struct.VapiStruct

+
+

Tip

+

The arguments are used to initialize data attributes with the same +names.

+
+
+ +
+
+class com.vmware.nsx_policy.model_client.VMConnection(dest_element_id=None, number_of_events=None, src_element_id=None)
+

Bases: vmware.vapi.bindings.struct.VapiStruct

+

VMConnection contains the statistic information of connection from source +VM to destination VM.

+
+

Tip

+

The arguments are used to initialize data attributes with the same +names.

+
+
+ +
+
+class com.vmware.nsx_policy.model_client.VMElement(element_id=None, elements=None, resource_name=None, resource_type=None, vm_bios_uuid=None, vm_external_id=None, vm_host_id=None, vm_host_name=None, vm_instance_uuid=None, vm_ips=None, vm_path=None)
+

Bases: vmware.vapi.bindings.struct.VapiStruct

+

VM element extends from Element class. This class contains the information +related to a VM.

+
+

Tip

+

The arguments are used to initialize data attributes with the same +names.

+
+
+
+RESOURCE_TYPE_GROUPELEMENT = 'GroupElement'
+
+ +
+
+RESOURCE_TYPE_LOGICALSWITCHELEMENT = 'LogicalSwitchElement'
+
+ +
+
+RESOURCE_TYPE_LOGICALT0ROUTERELEMENT = 'LogicalT0RouterElement'
+
+ +
+
+RESOURCE_TYPE_LOGICALT1ROUTERELEMENT = 'LogicalT1RouterElement'
+
+ +
+
+RESOURCE_TYPE_PROCESSELEMENT = 'ProcessElement'
+
+ +
+
+RESOURCE_TYPE_VMELEMENT = 'VMElement'
+
+ +
+ +
+
+class com.vmware.nsx_policy.model_client.ValueConstraintExpression(operator=None, values=None, links=None, schema=None, self_=None, revision=None, create_time=None, create_user=None, last_modified_time=None, last_modified_user=None, protection=None, system_owned=None, description=None, display_name=None, id=None, resource_type='ValueConstraintExpression', tags=None)
+

Bases: vmware.vapi.bindings.struct.VapiStruct

+

Represents the leaf level value constraint to constrain specified attribute +value to the set of values to be allowed/not-allowed. Example - +sourceGroups allowed to have only with list of groups. { +"operator":"INCLUDES", +"values":["/infra/services/HTTP", +"/infra/services/HTTPS"] }

+
+

Tip

+

The arguments are used to initialize data attributes with the same +names.

+
+
+
+OPERATOR_EQUALS = 'EQUALS'
+
+ +
+
+OPERATOR_EXCLUDES = 'EXCLUDES'
+
+ +
+
+OPERATOR_INCLUDES = 'INCLUDES'
+
+ +
+ +
+
+class com.vmware.nsx_policy.model_client.VerifiableAsymmetricLoginCredential(asymmetric_credential=None, credential_key=None, credential_verifier=None, credential_type='VerifiableAsymmetricLoginCredential')
+

Bases: vmware.vapi.bindings.struct.VapiStruct

+
+

Tip

+

The arguments are used to initialize data attributes with the same +names.

+
+
+ +
+
+class com.vmware.nsx_policy.model_client.VersionList(links=None, schema=None, self_=None, revision=None, create_time=None, create_user=None, last_modified_time=None, last_modified_user=None, protection=None, system_owned=None, description=None, display_name=None, id=None, resource_type=None, tags=None, acceptable_versions=None)
+

Bases: vmware.vapi.bindings.struct.VapiStruct

+
+

Tip

+

The arguments are used to initialize data attributes with the same +names.

+
+
+ +
+
+class com.vmware.nsx_policy.model_client.VersionedDeploymentSpec(host_type=None, host_version=None, package_stores=None, service_vm_ovf_url=None)
+

Bases: vmware.vapi.bindings.struct.VapiStruct

+

Versioned DeploymentSpec contains vibs and ofv urls for specific version of +fabric module and host type and host version.

+
+

Tip

+

The arguments are used to initialize data attributes with the same +names.

+
+
+
+HOST_TYPE_ESXI = 'ESXI'
+
+ +
+
+HOST_TYPE_RHELKVM = 'RHELKVM'
+
+ +
+
+HOST_TYPE_UBUNTUKVM = 'UBUNTUKVM'
+
+ +
+ +
+
+class com.vmware.nsx_policy.model_client.VidmInfo(display_name=None, name=None, type=None)
+

Bases: vmware.vapi.bindings.struct.VapiStruct

+

Vidm Info

+
+

Tip

+

The arguments are used to initialize data attributes with the same +names.

+
+
+
+TYPE_GROUP = 'remote_group'
+
+ +
+
+TYPE_USER = 'remote_user'
+
+ +
+ +
+
+class com.vmware.nsx_policy.model_client.VidmInfoListResult(links=None, schema=None, self_=None, cursor=None, result_count=None, sort_ascending=None, sort_by=None, results=None)
+

Bases: vmware.vapi.bindings.struct.VapiStruct

+
+

Tip

+

The arguments are used to initialize data attributes with the same +names.

+
+
+ +
+
+class com.vmware.nsx_policy.model_client.View(links=None, schema=None, self_=None, revision=None, create_time=None, create_user=None, last_modified_time=None, last_modified_user=None, protection=None, system_owned=None, description=None, display_name=None, id=None, resource_type=None, tags=None, exclude_roles=None, include_roles=None, shared=None, weight=None, widgets=None)
+

Bases: vmware.vapi.bindings.struct.VapiStruct

+

Describes the configuration of a view to be displayed on the dashboard.

+
+

Tip

+

The arguments are used to initialize data attributes with the same +names.

+
+
+ +
+
+class com.vmware.nsx_policy.model_client.VifAttachmentContext(app_id=None, parent_vif_id=None, traffic_tag=None, vif_type=None, allocate_addresses=None, resource_type='VifAttachmentContext')
+

Bases: vmware.vapi.bindings.struct.VapiStruct

+
+

Tip

+

The arguments are used to initialize data attributes with the same +names.

+
+
+
+VIF_TYPE_CHILD = 'CHILD'
+
+ +
+
+VIF_TYPE_INDEPENDENT = 'INDEPENDENT'
+
+ +
+
+VIF_TYPE_PARENT = 'PARENT'
+
+ +
+ +
+
+class com.vmware.nsx_policy.model_client.VirtualMachine(links=None, schema=None, self_=None, last_sync_time=None, description=None, display_name=None, resource_type=None, tags=None, compute_ids=None, external_id=None, host_id=None, local_id_on_host=None, power_state=None, source=None, type=None)
+

Bases: vmware.vapi.bindings.struct.VapiStruct

+
+

Tip

+

The arguments are used to initialize data attributes with the same +names.

+
+
+
+POWER_STATE_UNKNOWN = 'UNKNOWN'
+
+ +
+
+POWER_STATE_VM_RUNNING = 'VM_RUNNING'
+
+ +
+
+POWER_STATE_VM_STOPPED = 'VM_STOPPED'
+
+ +
+
+POWER_STATE_VM_SUSPENDED = 'VM_SUSPENDED'
+
+ +
+
+TYPE_EDGE = 'EDGE'
+
+ +
+
+TYPE_REGULAR = 'REGULAR'
+
+ +
+
+TYPE_SERVICE = 'SERVICE'
+
+ +
+ +
+
+class com.vmware.nsx_policy.model_client.VirtualMachineListResult(links=None, schema=None, self_=None, cursor=None, result_count=None, sort_ascending=None, sort_by=None, results=None)
+

Bases: vmware.vapi.bindings.struct.VapiStruct

+
+

Tip

+

The arguments are used to initialize data attributes with the same +names.

+
+
+ +
+
+class com.vmware.nsx_policy.model_client.VirtualMachineTagsUpdate(tags=None, virtual_machine_id=None)
+

Bases: vmware.vapi.bindings.struct.VapiStruct

+

List of tags applied to the virtual machine. Based on the enforcement +point, the virtual_machine_id will be different. It could be an external id +for NSX T or a moid for NSX V

+
+

Tip

+

The arguments are used to initialize data attributes with the same +names.

+
+
+ +
+
+class com.vmware.nsx_policy.model_client.VirtualNetworkInterface(links=None, schema=None, self_=None, last_sync_time=None, description=None, display_name=None, resource_type=None, tags=None, device_key=None, device_name=None, external_id=None, host_id=None, ip_address_info=None, lport_attachment_id=None, mac_address=None, owner_vm_id=None, vm_local_id_on_host=None)
+

Bases: vmware.vapi.bindings.struct.VapiStruct

+
+

Tip

+

The arguments are used to initialize data attributes with the same +names.

+
+
+ +
+
+class com.vmware.nsx_policy.model_client.VirtualNetworkInterfaceListResult(links=None, schema=None, self_=None, cursor=None, result_count=None, sort_ascending=None, sort_by=None, results=None)
+

Bases: vmware.vapi.bindings.struct.VapiStruct

+
+

Tip

+

The arguments are used to initialize data attributes with the same +names.

+
+
+ +
+
+class com.vmware.nsx_policy.model_client.VlanMirrorSource(vlan_ids=None, resource_type='VlanMirrorSource')
+

Bases: vmware.vapi.bindings.struct.VapiStruct

+
+

Tip

+

The arguments are used to initialize data attributes with the same +names.

+
+
+ +
+
+class com.vmware.nsx_policy.model_client.VlanTrunkSpec(vlan_ranges=None)
+

Bases: vmware.vapi.bindings.struct.VapiStruct

+

VlanTrunkspec is used for specifying trunk VLAN id ranges.

+
+

Tip

+

The arguments are used to initialize data attributes with the same +names.

+
+
+ +
+
+class com.vmware.nsx_policy.model_client.VmNicInfo(nic_infos=None)
+

Bases: vmware.vapi.bindings.struct.VapiStruct

+

Contains a set of information of a VM on the network interfaces present on +the partner appliance that needs to be configured by the NSX Manager.

+
+

Tip

+

The arguments are used to initialize data attributes with the same +names.

+
+
+ +
+
+class com.vmware.nsx_policy.model_client.VmkToLogicalSwitchMapping(dest_network_id=None, src_interface_id=None)
+

Bases: vmware.vapi.bindings.struct.VapiStruct

+

Holds VMkernal to logical switch mapping. This will be used for network +migration.

+
+

Tip

+

The arguments are used to initialize data attributes with the same +names.

+
+
+ +
+
+class com.vmware.nsx_policy.model_client.VniPool(links=None, schema=None, self_=None, revision=None, create_time=None, create_user=None, last_modified_time=None, last_modified_user=None, protection=None, system_owned=None, description=None, display_name=None, id=None, resource_type=None, tags=None, ranges=None)
+

Bases: vmware.vapi.bindings.struct.VapiStruct

+
+

Tip

+

The arguments are used to initialize data attributes with the same +names.

+
+
+ +
+
+class com.vmware.nsx_policy.model_client.VniPoolListResult(links=None, schema=None, self_=None, cursor=None, result_count=None, sort_ascending=None, sort_by=None, results=None)
+

Bases: vmware.vapi.bindings.struct.VapiStruct

+
+

Tip

+

The arguments are used to initialize data attributes with the same +names.

+
+
+ +
+
+class com.vmware.nsx_policy.model_client.VniRange(links=None, schema=None, self_=None, end=None, start=None)
+

Bases: vmware.vapi.bindings.struct.VapiStruct

+

A range of virtual network identifiers (VNIs)

+
+

Tip

+

The arguments are used to initialize data attributes with the same +names.

+
+
+ +
+
+class com.vmware.nsx_policy.model_client.VsphereClusterNodeVMDeploymentConfig(allow_ssh_root_login=None, compute_id=None, default_gateway_addresses=None, enable_ssh=None, host_id=None, hostname=None, management_network_id=None, management_port_subnets=None, storage_id=None, vc_id=None, placement_type='VsphereClusterNodeVMDeploymentConfig')
+

Bases: vmware.vapi.bindings.struct.VapiStruct

+

Config for deploying a cluster node VM through a Vcenter server

+
+

Tip

+

The arguments are used to initialize data attributes with the same +names.

+
+
+ +
+
+class com.vmware.nsx_policy.model_client.VsphereDeploymentConfig(allow_ssh_root_login=None, compute_id=None, data_network_ids=None, default_gateway_addresses=None, dns_servers=None, enable_ssh=None, host_id=None, hostname=None, management_network_id=None, management_port_subnets=None, ntp_servers=None, search_domains=None, storage_id=None, vc_id=None, placement_type='VsphereDeploymentConfig')
+

Bases: vmware.vapi.bindings.struct.VapiStruct

+

The Vsphere deployment configuration determines where to deploy the edge +node. It contains settings that are applied during install time. If using +DHCP, you must leave the following fields unset: search_domains, +management_port_subnets, dns_servers and default_gateway_addresses.

+
+

Tip

+

The arguments are used to initialize data attributes with the same +names.

+
+
+ +
+
+class com.vmware.nsx_policy.model_client.VtepCsvListResult(file_name=None, last_update_timestamp=None, results=None)
+

Bases: vmware.vapi.bindings.struct.VapiStruct

+
+

Tip

+

The arguments are used to initialize data attributes with the same +names.

+
+
+ +
+
+class com.vmware.nsx_policy.model_client.VtepLabelPool(links=None, schema=None, self_=None, revision=None, create_time=None, create_user=None, last_modified_time=None, last_modified_user=None, protection=None, system_owned=None, description=None, display_name=None, id=None, resource_type=None, tags=None, pool_usage=None, ranges=None)
+

Bases: vmware.vapi.bindings.struct.VapiStruct

+

A collection of ranges of virtual tunnel endpoint labels

+
+

Tip

+

The arguments are used to initialize data attributes with the same +names.

+
+
+ +
+
+class com.vmware.nsx_policy.model_client.VtepLabelPoolListResult(links=None, schema=None, self_=None, cursor=None, result_count=None, sort_ascending=None, sort_by=None, results=None)
+

Bases: vmware.vapi.bindings.struct.VapiStruct

+
+

Tip

+

The arguments are used to initialize data attributes with the same +names.

+
+
+ +
+
+class com.vmware.nsx_policy.model_client.VtepLabelPoolUsage(allocated_ids=None, free_ids=None, total_ids=None)
+

Bases: vmware.vapi.bindings.struct.VapiStruct

+

Pool usage statistics in a pool

+
+

Tip

+

The arguments are used to initialize data attributes with the same +names.

+
+
+ +
+
+class com.vmware.nsx_policy.model_client.VtepLabelRange(links=None, schema=None, self_=None, end=None, start=None)
+

Bases: vmware.vapi.bindings.struct.VapiStruct

+
+

Tip

+

The arguments are used to initialize data attributes with the same +names.

+
+
+ +
+
+class com.vmware.nsx_policy.model_client.VtepListResult(links=None, schema=None, self_=None, cursor=None, result_count=None, sort_ascending=None, sort_by=None, last_update_timestamp=None, logical_switch_id=None, results=None, transport_node_id=None)
+

Bases: vmware.vapi.bindings.struct.VapiStruct

+
+

Tip

+

The arguments are used to initialize data attributes with the same +names.

+
+
+ +
+
+class com.vmware.nsx_policy.model_client.VtepTableCsvRecord(segment_id=None, vtep_ip=None, vtep_label=None, vtep_mac_address=None)
+

Bases: vmware.vapi.bindings.struct.VapiStruct

+
+

Tip

+

The arguments are used to initialize data attributes with the same +names.

+
+
+ +
+
+class com.vmware.nsx_policy.model_client.VtepTableEntry(segment_id=None, vtep_ip=None, vtep_label=None, vtep_mac_address=None)
+

Bases: vmware.vapi.bindings.struct.VapiStruct

+
+

Tip

+

The arguments are used to initialize data attributes with the same +names.

+
+
+ +
+
+class com.vmware.nsx_policy.model_client.WeeklyBackupSchedule(days_of_week=None, hour_of_day=None, minute_of_day=None, resource_type='WeeklyBackupSchedule')
+

Bases: vmware.vapi.bindings.struct.VapiStruct

+

Schedule to specify day of the week and time to take automated backup

+
+

Tip

+

The arguments are used to initialize data attributes with the same +names.

+
+
+ +
+
+class com.vmware.nsx_policy.model_client.WeeklyTelemetrySchedule(day_of_week=None, hour_of_day=None, minutes=None, frequency_type='WeeklyTelemetrySchedule')
+

Bases: vmware.vapi.bindings.struct.VapiStruct

+
+

Tip

+

The arguments are used to initialize data attributes with the same +names.

+
+
+
+DAY_OF_WEEK_FRIDAY = 'FRIDAY'
+
+ +
+
+DAY_OF_WEEK_MONDAY = 'MONDAY'
+
+ +
+
+DAY_OF_WEEK_SATURDAY = 'SATURDAY'
+
+ +
+
+DAY_OF_WEEK_SUNDAY = 'SUNDAY'
+
+ +
+
+DAY_OF_WEEK_THURSDAY = 'THURSDAY'
+
+ +
+
+DAY_OF_WEEK_TUESDAY = 'TUESDAY'
+
+ +
+
+DAY_OF_WEEK_WEDNESDAY = 'WEDNESDAY'
+
+ +
+ +
+
+class com.vmware.nsx_policy.model_client.WidgetConfiguration(links=None, schema=None, self_=None, revision=None, create_time=None, create_user=None, last_modified_time=None, last_modified_user=None, protection=None, system_owned=None, description=None, display_name=None, id=None, resource_type='WidgetConfiguration', tags=None, datasources=None, drilldown_id=None, footer=None, is_drilldown=None, shared=None, weight=None)
+

Bases: vmware.vapi.bindings.struct.VapiStruct

+

Describes the configuration of a widget to be displayed on the dashboard. +WidgetConfiguration is a base type that provides attributes of a widget +in-general.

+
+

Tip

+

The arguments are used to initialize data attributes with the same +names.

+
+
+
+RESOURCE_TYPE_CONTAINERCONFIGURATION = 'ContainerConfiguration'
+
+ +
+
+RESOURCE_TYPE_DONUTCONFIGURATION = 'DonutConfiguration'
+
+ +
+
+RESOURCE_TYPE_GRIDCONFIGURATION = 'GridConfiguration'
+
+ +
+
+RESOURCE_TYPE_LABELVALUECONFIGURATION = 'LabelValueConfiguration'
+
+ +
+
+RESOURCE_TYPE_MULTIWIDGETCONFIGURATION = 'MultiWidgetConfiguration'
+
+ +
+
+RESOURCE_TYPE_STATSCONFIGURATION = 'StatsConfiguration'
+
+ +
+ +
+
+class com.vmware.nsx_policy.model_client.WidgetItem(label=None, weight=None, widget_id=None)
+

Bases: vmware.vapi.bindings.struct.VapiStruct

+

Represents a reference to a widget that is held by a container or a +multi-widget or a View.

+
+

Tip

+

The arguments are used to initialize data attributes with the same +names.

+
+
+ +
+
+class com.vmware.nsx_policy.model_client.X509Certificate(dsa_public_keyg=None, dsa_public_keyp=None, dsa_public_keyq=None, dsa_public_keyy=None, is_ca=None, is_valid=None, issuer=None, issuer_cn=None, not_after=None, not_before=None, public_key_algo=None, public_key_length=None, rsa_public_key_exponent=None, rsa_public_key_modulus=None, serial_number=None, signature=None, signature_algorithm=None, subject=None, subject_cn=None, version=None)
+

Bases: vmware.vapi.bindings.struct.VapiStruct

+
+

Tip

+

The arguments are used to initialize data attributes with the same +names.

+
+
+
+PUBLIC_KEY_ALGO_DSA = 'DSA'
+
+ +
+
+PUBLIC_KEY_ALGO_RSA = 'RSA'
+
+ +
+ +
+
+class com.vmware.nsx_policy.model_client.X509Crl(crl_entries=None, issuer=None, next_update=None, version=None)
+

Bases: vmware.vapi.bindings.struct.VapiStruct

+

A CRL is a time-stamped list identifying revoked certificates.

+
+

Tip

+

The arguments are used to initialize data attributes with the same +names.

+
+
+ +
+
+class com.vmware.nsx_policy.model_client.X509CrlEntry(revocation_date=None, serial_number=None)
+

Bases: vmware.vapi.bindings.struct.VapiStruct

+

Each revoked certificate is identified in a CRL by its certificate serial +number.

+
+

Tip

+

The arguments are used to initialize data attributes with the same +names.

+
+
+ +
+
+

com.vmware.nsx_policy.tasks_client module

+
+
+class com.vmware.nsx_policy.tasks_client.Response(config)
+

Bases: vmware.vapi.bindings.stub.VapiInterface

+
+
+get(task_id)
+

Get the response of a task

+ +++ + + + + + + + + + + + + + + + + + +
Parameters:task_id (str) – ID of task to read (required)
Return type:vmware.vapi.struct.VapiStruct
Returns:DynamicStructure
Raise:com.vmware.vapi.std.errors_client.ServiceUnavailable +Service Unavailable
Raise:com.vmware.vapi.std.errors_client.InvalidRequest +Bad Request, Precondition Failed
Raise:com.vmware.vapi.std.errors_client.InternalServerError +Internal Server Error
Raise:com.vmware.vapi.std.errors_client.Unauthorized +Forbidden
Raise:com.vmware.vapi.std.errors_client.NotFound +Not Found
+
+ +
+ +
+
+class com.vmware.nsx_policy.tasks_client.StubFactory(stub_config)
+

Bases: vmware.vapi.bindings.stub.StubFactoryBase

+
+ +
+
+

com.vmware.nsx_policy.trust_management_client module

+
+
+class com.vmware.nsx_policy.trust_management_client.Certificates(config)
+

Bases: vmware.vapi.bindings.stub.VapiInterface

+
+
+LIST_TYPE_CERTIFICATE = 'cluster_api_certificate'
+

Possible value for type of method Certificates.list().

+
+ +
+
+delete(cert_id)
+

Removes the specified certificate. The private key associated with the +certificate is also deleted.

+ +++ + + + + + + + + + + + + + +
Parameters:cert_id (str) – ID of certificate to delete (required)
Raise:com.vmware.vapi.std.errors_client.ServiceUnavailable +Service Unavailable
Raise:com.vmware.vapi.std.errors_client.InvalidRequest +Bad Request, Precondition Failed
Raise:com.vmware.vapi.std.errors_client.InternalServerError +Internal Server Error
Raise:com.vmware.vapi.std.errors_client.Unauthorized +Forbidden
Raise:com.vmware.vapi.std.errors_client.NotFound +Not Found
+
+ +
+
+get(cert_id, details=None)
+

Returns information for the specified certificate ID, including the +certificate’s UUID; resource_type (for example, +certificate_self_signed, certificate_ca, or certificate_signed); +pem_encoded data; and history of the certificate (who created or +modified it and when). For additional information, include the +?details=true modifier at the end of the request URI.

+ +++ + + + + + + + + + + + + + + + + + +
Parameters:
    +
  • cert_id (str) – ID of certificate to read (required)
  • +
  • details (bool or None) – whether to expand the pem data and show all its details (optional, +default to false)
  • +
+
Return type:

com.vmware.nsx_policy.model_client.Certificate

+
Returns:

com.vmware.nsx_policy.model.Certificate

+
Raise:

com.vmware.vapi.std.errors_client.ServiceUnavailable +Service Unavailable

+
Raise:

com.vmware.vapi.std.errors_client.InvalidRequest +Bad Request, Precondition Failed

+
Raise:

com.vmware.vapi.std.errors_client.InternalServerError +Internal Server Error

+
Raise:

com.vmware.vapi.std.errors_client.Unauthorized +Forbidden

+
Raise:

com.vmware.vapi.std.errors_client.NotFound +Not Found

+
+
+ +
+
+importcertificate(trust_object_data)
+

Adds a new private-public certificate or a chain of certificates (CAs) +and, optionally, a private key that can be applied to one of the +user-facing components (appliance management or edge). The certificate +and the key should be stored in PEM format. If no private key is +provided, the certificate is used as a client certificate in the trust +store.

+ +++ + + + + + + + + + + + + + + + + + +
Parameters:trust_object_data (com.vmware.nsx_policy.model_client.TrustObjectData) – (required)
Return type:com.vmware.nsx_policy.model_client.CertificateList
Returns:com.vmware.nsx_policy.model.CertificateList
Raise:com.vmware.vapi.std.errors_client.ServiceUnavailable +Service Unavailable
Raise:com.vmware.vapi.std.errors_client.InvalidRequest +Bad Request, Precondition Failed
Raise:com.vmware.vapi.std.errors_client.InternalServerError +Internal Server Error
Raise:com.vmware.vapi.std.errors_client.Unauthorized +Forbidden
Raise:com.vmware.vapi.std.errors_client.NotFound +Not Found
+
+ +
+
+list(cursor=None, details=None, included_fields=None, page_size=None, sort_ascending=None, sort_by=None, type=None)
+

Returns all certificate information viewable by the user, including +each certificate’s UUID; resource_type (for example, +certificate_self_signed, certificate_ca, or certificate_signed); +pem_encoded data; and history of the certificate (who created or +modified it and when). For additional information, include the +?details=true modifier at the end of the request URI.

+ +++ + + + + + + + + + + + + + + + + + +
Parameters:
    +
  • cursor (str or None) – Opaque cursor to be used for getting next page of records (supplied +by current result page) (optional)
  • +
  • details (bool or None) – whether to expand the pem data and show all its details (optional, +default to false)
  • +
  • included_fields (str or None) – Comma separated list of fields that should be included in query +result (optional)
  • +
  • page_size (long or None) – Maximum number of results to return in this page (server may return +fewer) (optional, default to 1000)
  • +
  • sort_ascending (bool or None) – (optional)
  • +
  • sort_by (str or None) – Field by which records are sorted (optional)
  • +
  • type (str or None) – Type of certificate to return (optional)
  • +
+
Return type:

com.vmware.nsx_policy.model_client.CertificateList

+
Returns:

com.vmware.nsx_policy.model.CertificateList

+
Raise:

com.vmware.vapi.std.errors_client.ServiceUnavailable +Service Unavailable

+
Raise:

com.vmware.vapi.std.errors_client.InvalidRequest +Bad Request, Precondition Failed

+
Raise:

com.vmware.vapi.std.errors_client.InternalServerError +Internal Server Error

+
Raise:

com.vmware.vapi.std.errors_client.Unauthorized +Forbidden

+
Raise:

com.vmware.vapi.std.errors_client.NotFound +Not Found

+
+
+ +
+ +
+
+class com.vmware.nsx_policy.trust_management_client.Crls(config)
+

Bases: vmware.vapi.bindings.stub.VapiInterface

+
+
+LIST_TYPE_CERTIFICATE = 'cluster_api_certificate'
+

Possible value for type of method Crls.list().

+
+ +
+
+delete(crl_id)
+

Deletes an existing CRL.

+ +++ + + + + + + + + + + + + + +
Parameters:crl_id (str) – ID of CRL to delete (required)
Raise:com.vmware.vapi.std.errors_client.ServiceUnavailable +Service Unavailable
Raise:com.vmware.vapi.std.errors_client.InvalidRequest +Bad Request, Precondition Failed
Raise:com.vmware.vapi.std.errors_client.InternalServerError +Internal Server Error
Raise:com.vmware.vapi.std.errors_client.Unauthorized +Forbidden
Raise:com.vmware.vapi.std.errors_client.NotFound +Not Found
+
+ +
+
+get(crl_id, details=None)
+

Returns information about the specified CRL. For additional +information, include the ?details=true modifier at the end of the +request URI.

+ +++ + + + + + + + + + + + + + + + + + +
Parameters:
    +
  • crl_id (str) – ID of CRL to read (required)
  • +
  • details (bool or None) – whether to expand the pem data and show all its details (optional, +default to false)
  • +
+
Return type:

com.vmware.nsx_policy.model_client.Crl

+
Returns:

com.vmware.nsx_policy.model.Crl

+
Raise:

com.vmware.vapi.std.errors_client.ServiceUnavailable +Service Unavailable

+
Raise:

com.vmware.vapi.std.errors_client.InvalidRequest +Bad Request, Precondition Failed

+
Raise:

com.vmware.vapi.std.errors_client.InternalServerError +Internal Server Error

+
Raise:

com.vmware.vapi.std.errors_client.Unauthorized +Forbidden

+
Raise:

com.vmware.vapi.std.errors_client.NotFound +Not Found

+
+
+ +
+
+importcrl(crl_object_data)
+

Adds a new certificate revocation list (CRL). The CRL is used to verify +the client certificate status against the revocation lists published by +the CA. For this reason, the administrator needs to add the CRL in +certificate repository as well.

+ +++ + + + + + + + + + + + + + + + + + +
Parameters:crl_object_data (com.vmware.nsx_policy.model_client.CrlObjectData) – (required)
Return type:com.vmware.nsx_policy.model_client.CrlList
Returns:com.vmware.nsx_policy.model.CrlList
Raise:com.vmware.vapi.std.errors_client.ServiceUnavailable +Service Unavailable
Raise:com.vmware.vapi.std.errors_client.InvalidRequest +Bad Request, Precondition Failed
Raise:com.vmware.vapi.std.errors_client.InternalServerError +Internal Server Error
Raise:com.vmware.vapi.std.errors_client.Unauthorized +Forbidden
Raise:com.vmware.vapi.std.errors_client.NotFound +Not Found
+
+ +
+
+list(cursor=None, details=None, included_fields=None, page_size=None, sort_ascending=None, sort_by=None, type=None)
+

Returns information about all CRLs. For additional information, include +the ?details=true modifier at the end of the request URI.

+ +++ + + + + + + + + + + + + + + + + + +
Parameters:
    +
  • cursor (str or None) – Opaque cursor to be used for getting next page of records (supplied +by current result page) (optional)
  • +
  • details (bool or None) – whether to expand the pem data and show all its details (optional, +default to false)
  • +
  • included_fields (str or None) – Comma separated list of fields that should be included in query +result (optional)
  • +
  • page_size (long or None) – Maximum number of results to return in this page (server may return +fewer) (optional, default to 1000)
  • +
  • sort_ascending (bool or None) – (optional)
  • +
  • sort_by (str or None) – Field by which records are sorted (optional)
  • +
  • type (str or None) – Type of certificate to return (optional)
  • +
+
Return type:

com.vmware.nsx_policy.model_client.CrlList

+
Returns:

com.vmware.nsx_policy.model.CrlList

+
Raise:

com.vmware.vapi.std.errors_client.ServiceUnavailable +Service Unavailable

+
Raise:

com.vmware.vapi.std.errors_client.InvalidRequest +Bad Request, Precondition Failed

+
Raise:

com.vmware.vapi.std.errors_client.InternalServerError +Internal Server Error

+
Raise:

com.vmware.vapi.std.errors_client.Unauthorized +Forbidden

+
Raise:

com.vmware.vapi.std.errors_client.NotFound +Not Found

+
+
+ +
+
+update(crl_id, crl)
+

Updates an existing CRL.

+ +++ + + + + + + + + + + + + + + + + + +
Parameters: +
Return type:

com.vmware.nsx_policy.model_client.Crl

+
Returns:

com.vmware.nsx_policy.model.Crl

+
Raise:

com.vmware.vapi.std.errors_client.ServiceUnavailable +Service Unavailable

+
Raise:

com.vmware.vapi.std.errors_client.InvalidRequest +Bad Request, Precondition Failed

+
Raise:

com.vmware.vapi.std.errors_client.InternalServerError +Internal Server Error

+
Raise:

com.vmware.vapi.std.errors_client.Unauthorized +Forbidden

+
Raise:

com.vmware.vapi.std.errors_client.NotFound +Not Found

+
+
+ +
+ +
+
+class com.vmware.nsx_policy.trust_management_client.Csrs(config)
+

Bases: vmware.vapi.bindings.stub.VapiInterface

+
+
+create(csr)
+

Creates a new certificate signing request (CSR). A CSR is encrypted +text that contains information about your organization (organization +name, country, and so on) and your Web server’s public key, which is a +public certificate the is generated on the server that can be used to +forward this request to a certificate authority (CA). A private key is +also usually created at the same time as the CSR.

+ +++ + + + + + + + + + + + + + + + + + +
Parameters:csr (com.vmware.nsx_policy.model_client.Csr) – (required)
Return type:com.vmware.nsx_policy.model_client.Csr
Returns:com.vmware.nsx_policy.model.Csr
Raise:com.vmware.vapi.std.errors_client.ServiceUnavailable +Service Unavailable
Raise:com.vmware.vapi.std.errors_client.InvalidRequest +Bad Request, Precondition Failed
Raise:com.vmware.vapi.std.errors_client.InternalServerError +Internal Server Error
Raise:com.vmware.vapi.std.errors_client.Unauthorized +Forbidden
Raise:com.vmware.vapi.std.errors_client.NotFound +Not Found
+
+ +
+
+delete(csr_id)
+

Removes a specified CSR. If a CSR is not used for verification, you can +delete it. Note that the CSR import and upload POST actions +automatically delete the associated CSR.

+ +++ + + + + + + + + + + + + + +
Parameters:csr_id (str) – ID of CSR to delete (required)
Raise:com.vmware.vapi.std.errors_client.ServiceUnavailable +Service Unavailable
Raise:com.vmware.vapi.std.errors_client.InvalidRequest +Bad Request, Precondition Failed
Raise:com.vmware.vapi.std.errors_client.InternalServerError +Internal Server Error
Raise:com.vmware.vapi.std.errors_client.Unauthorized +Forbidden
Raise:com.vmware.vapi.std.errors_client.NotFound +Not Found
+
+ +
+
+get(csr_id)
+

Returns information about the specified CSR.

+ +++ + + + + + + + + + + + + + + + + + +
Parameters:csr_id (str) – ID of CSR to read (required)
Return type:com.vmware.nsx_policy.model_client.Csr
Returns:com.vmware.nsx_policy.model.Csr
Raise:com.vmware.vapi.std.errors_client.ServiceUnavailable +Service Unavailable
Raise:com.vmware.vapi.std.errors_client.InvalidRequest +Bad Request, Precondition Failed
Raise:com.vmware.vapi.std.errors_client.InternalServerError +Internal Server Error
Raise:com.vmware.vapi.std.errors_client.Unauthorized +Forbidden
Raise:com.vmware.vapi.std.errors_client.NotFound +Not Found
+
+ +
+
+importcsr(csr_id, trust_object_data)
+

Imports a certificate authority (CA)-signed certificate for a CSR. This +action links the certificate to the private key created by the CSR. The +pem_encoded string in the request body is the signed certificate +provided by your CA in response to the CSR that you provide to them. +The import POST action automatically deletes the associated CSR.

+ +++ + + + + + + + + + + + + + + + + + +
Parameters: +
Return type:

com.vmware.nsx_policy.model_client.CertificateList

+
Returns:

com.vmware.nsx_policy.model.CertificateList

+
Raise:

com.vmware.vapi.std.errors_client.ServiceUnavailable +Service Unavailable

+
Raise:

com.vmware.vapi.std.errors_client.InvalidRequest +Bad Request, Precondition Failed

+
Raise:

com.vmware.vapi.std.errors_client.InternalServerError +Internal Server Error

+
Raise:

com.vmware.vapi.std.errors_client.Unauthorized +Forbidden

+
Raise:

com.vmware.vapi.std.errors_client.NotFound +Not Found

+
+
+ +
+
+list(cursor=None, included_fields=None, page_size=None, sort_ascending=None, sort_by=None)
+

Returns information about all of the CSRs that have been created.

+ +++ + + + + + + + + + + + + + + + + + +
Parameters:
    +
  • cursor (str or None) – Opaque cursor to be used for getting next page of records (supplied +by current result page) (optional)
  • +
  • included_fields (str or None) – Comma separated list of fields that should be included in query +result (optional)
  • +
  • page_size (long or None) – Maximum number of results to return in this page (server may return +fewer) (optional, default to 1000)
  • +
  • sort_ascending (bool or None) – (optional)
  • +
  • sort_by (str or None) – Field by which records are sorted (optional)
  • +
+
Return type:

com.vmware.nsx_policy.model_client.CsrList

+
Returns:

com.vmware.nsx_policy.model.CsrList

+
Raise:

com.vmware.vapi.std.errors_client.ServiceUnavailable +Service Unavailable

+
Raise:

com.vmware.vapi.std.errors_client.InvalidRequest +Bad Request, Precondition Failed

+
Raise:

com.vmware.vapi.std.errors_client.InternalServerError +Internal Server Error

+
Raise:

com.vmware.vapi.std.errors_client.Unauthorized +Forbidden

+
Raise:

com.vmware.vapi.std.errors_client.NotFound +Not Found

+
+
+ +
+
+selfsign(csr_id, days_valid)
+

Self-signs the previously generated CSR. This action is similar to the +import certificate action, but instead of using a public certificate +signed by a CA, the self_sign POST action uses a certificate that is +signed with NSX’s own private key.

+ +++ + + + + + + + + + + + + + + + + + +
Parameters:
    +
  • csr_id (str) – CSR this certificate is associated with (required)
  • +
  • days_valid (long) – Number of days the certificate will be valid, default 10 years +(required)
  • +
+
Return type:

com.vmware.nsx_policy.model_client.Certificate

+
Returns:

com.vmware.nsx_policy.model.Certificate

+
Raise:

com.vmware.vapi.std.errors_client.ServiceUnavailable +Service Unavailable

+
Raise:

com.vmware.vapi.std.errors_client.InvalidRequest +Bad Request, Precondition Failed

+
Raise:

com.vmware.vapi.std.errors_client.InternalServerError +Internal Server Error

+
Raise:

com.vmware.vapi.std.errors_client.Unauthorized +Forbidden

+
Raise:

com.vmware.vapi.std.errors_client.NotFound +Not Found

+
+
+ +
+ +
+
+class com.vmware.nsx_policy.trust_management_client.PrincipalIdentities(config)
+

Bases: vmware.vapi.bindings.stub.VapiInterface

+
+
+create(principal_identity)
+

Associates a principal’s name with a certificate that is used to +authenticate.

+ +++ + + + + + + + + + + + + + + + + + +
Parameters:principal_identity (com.vmware.nsx_policy.model_client.PrincipalIdentity) – (required)
Return type:com.vmware.nsx_policy.model_client.PrincipalIdentity
Returns:com.vmware.nsx_policy.model.PrincipalIdentity
Raise:com.vmware.vapi.std.errors_client.ServiceUnavailable +Service Unavailable
Raise:com.vmware.vapi.std.errors_client.InvalidRequest +Bad Request, Precondition Failed
Raise:com.vmware.vapi.std.errors_client.InternalServerError +Internal Server Error
Raise:com.vmware.vapi.std.errors_client.Unauthorized +Forbidden
Raise:com.vmware.vapi.std.errors_client.NotFound +Not Found
+
+ +
+
+delete(principal_identity_id)
+

Delete a principal identity. It does not delete the certificate.

+ +++ + + + + + + + + + + + + + +
Parameters:principal_identity_id (str) – Unique id of the principal identity to delete (required)
Raise:com.vmware.vapi.std.errors_client.ServiceUnavailable +Service Unavailable
Raise:com.vmware.vapi.std.errors_client.InvalidRequest +Bad Request, Precondition Failed
Raise:com.vmware.vapi.std.errors_client.InternalServerError +Internal Server Error
Raise:com.vmware.vapi.std.errors_client.Unauthorized +Forbidden
Raise:com.vmware.vapi.std.errors_client.NotFound +Not Found
+
+ +
+
+get(principal_identity_id)
+

Get a stored principal identity

+ +++ + + + + + + + + + + + + + + + + + +
Parameters:principal_identity_id (str) – ID of Principal Identity to get (required)
Return type:com.vmware.nsx_policy.model_client.PrincipalIdentity
Returns:com.vmware.nsx_policy.model.PrincipalIdentity
Raise:com.vmware.vapi.std.errors_client.ServiceUnavailable +Service Unavailable
Raise:com.vmware.vapi.std.errors_client.InvalidRequest +Bad Request, Precondition Failed
Raise:com.vmware.vapi.std.errors_client.InternalServerError +Internal Server Error
Raise:com.vmware.vapi.std.errors_client.Unauthorized +Forbidden
Raise:com.vmware.vapi.std.errors_client.NotFound +Not Found
+
+ +
+
+list()
+

Returns the list of principals registered with a certificate.

+ +++ + + + + + + + + + + + + + + + +
Return type:com.vmware.nsx_policy.model_client.PrincipalIdentityList
Returns:com.vmware.nsx_policy.model.PrincipalIdentityList
Raise:com.vmware.vapi.std.errors_client.ServiceUnavailable +Service Unavailable
Raise:com.vmware.vapi.std.errors_client.InvalidRequest +Bad Request, Precondition Failed
Raise:com.vmware.vapi.std.errors_client.InternalServerError +Internal Server Error
Raise:com.vmware.vapi.std.errors_client.Unauthorized +Forbidden
Raise:com.vmware.vapi.std.errors_client.NotFound +Not Found
+
+ +
+
+updatecertificate(update_principal_identity_certificate_request)
+

Update a principal identity’s certificate

+ +++ + + + + + + + + + + + + + + + + + +
Parameters:update_principal_identity_certificate_request (com.vmware.nsx_policy.model_client.UpdatePrincipalIdentityCertificateRequest) – (required)
Return type:com.vmware.nsx_policy.model_client.PrincipalIdentity
Returns:com.vmware.nsx_policy.model.PrincipalIdentity
Raise:com.vmware.vapi.std.errors_client.ServiceUnavailable +Service Unavailable
Raise:com.vmware.vapi.std.errors_client.InvalidRequest +Bad Request, Precondition Failed
Raise:com.vmware.vapi.std.errors_client.InternalServerError +Internal Server Error
Raise:com.vmware.vapi.std.errors_client.Unauthorized +Forbidden
Raise:com.vmware.vapi.std.errors_client.NotFound +Not Found
+
+ +
+ +
+
+class com.vmware.nsx_policy.trust_management_client.StubFactory(stub_config)
+

Bases: vmware.vapi.bindings.stub.StubFactoryBase

+
+ +
+
+

com.vmware.nsx_policy.upgrade_client module

+
+
+class com.vmware.nsx_policy.upgrade_client.StubFactory(stub_config)
+

Bases: vmware.vapi.bindings.stub.StubFactoryBase

+
+ +
+
+class com.vmware.nsx_policy.upgrade_client.VersionWhitelist(config)
+

Bases: vmware.vapi.bindings.stub.VapiInterface

+
+
+get(component_type)
+

Get whitelist of versions for a component. Component can include HOST, +EDGE, CCP, MP

+ +++ + + + + + + + + + + + + + + + + + +
Parameters:component_type (str) – (required)
Return type:com.vmware.nsx_policy.model_client.AcceptableComponentVersion
Returns:com.vmware.nsx_policy.model.AcceptableComponentVersion
Raise:com.vmware.vapi.std.errors_client.ServiceUnavailable +Service Unavailable
Raise:com.vmware.vapi.std.errors_client.InvalidRequest +Bad Request, Precondition Failed
Raise:com.vmware.vapi.std.errors_client.InternalServerError +Internal Server Error
Raise:com.vmware.vapi.std.errors_client.Unauthorized +Forbidden
Raise:com.vmware.vapi.std.errors_client.NotFound +Not Found
+
+ +
+
+list()
+

Get whitelist of versions for different components

+ +++ + + + + + + + + + + + + + + + +
Return type:com.vmware.nsx_policy.model_client.AcceptableComponentVersionList
Returns:com.vmware.nsx_policy.model.AcceptableComponentVersionList
Raise:com.vmware.vapi.std.errors_client.ServiceUnavailable +Service Unavailable
Raise:com.vmware.vapi.std.errors_client.InvalidRequest +Bad Request, Precondition Failed
Raise:com.vmware.vapi.std.errors_client.InternalServerError +Internal Server Error
Raise:com.vmware.vapi.std.errors_client.Unauthorized +Forbidden
Raise:com.vmware.vapi.std.errors_client.NotFound +Not Found
+
+ +
+
+update(component_type, version_list)
+

Update the version whitelist for the specified component type (HOST, +EDGE, CCP, MP).

+ +++ + + + + + + + + + + + + + +
Parameters: +
Raise:

com.vmware.vapi.std.errors_client.ServiceUnavailable +Service Unavailable

+
Raise:

com.vmware.vapi.std.errors_client.InvalidRequest +Bad Request, Precondition Failed

+
Raise:

com.vmware.vapi.std.errors_client.InternalServerError +Internal Server Error

+
Raise:

com.vmware.vapi.std.errors_client.Unauthorized +Forbidden

+
Raise:

com.vmware.vapi.std.errors_client.NotFound +Not Found

+
+
+ +
+ +
+
+ + +
+ +
+ + +
+
+ +
+ +
+ + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/nsx/nsx_policy/com.vmware.nsx_policy.infra.domains.groups.html b/nsx/nsx_policy/com.vmware.nsx_policy.infra.domains.groups.html new file mode 100644 index 00000000..c98b42e1 --- /dev/null +++ b/nsx/nsx_policy/com.vmware.nsx_policy.infra.domains.groups.html @@ -0,0 +1,320 @@ + + + + + + + + + + + com.vmware.nsx_policy.infra.domains.groups package — NSX-T Policy SDK 2.2.0.0.0 documentation + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + + + +
+ + + + + +
+ +
+ + + + + + + + + + + + + + + + + +
+ + + + +
+
+
+
+ +
+

com.vmware.nsx_policy.infra.domains.groups package

+
+

Submodules

+
+
+

com.vmware.nsx_policy.infra.domains.groups.statistics_client module

+
+
+class com.vmware.nsx_policy.infra.domains.groups.statistics_client.StubFactory(stub_config)
+

Bases: vmware.vapi.bindings.stub.StubFactoryBase

+
+ +
+
+class com.vmware.nsx_policy.infra.domains.groups.statistics_client.VirtualMachines(config)
+

Bases: vmware.vapi.bindings.stub.VapiInterface

+
+
+list(domain_id, group_id, cursor=None, enforcement_point_path=None, included_fields=None, page_size=None, sort_ascending=None, sort_by=None)
+

Get the effective VM membership for the Group. This API also gives some +VM details such as VM name, IDs and the current state of the VMs.

+ +++ + + + + + + + + + + + + + + + + + +
Parameters:
    +
  • domain_id (str) – Domain id (required)
  • +
  • group_id (str) – Group Id (required)
  • +
  • cursor (str or None) – Opaque cursor to be used for getting next page of records (supplied +by current result page) (optional)
  • +
  • enforcement_point_path (str or None) – String Path of the enforcement point (optional)
  • +
  • included_fields (str or None) – Comma separated list of fields that should be included in query +result (optional)
  • +
  • page_size (long or None) – Maximum number of results to return in this page (server may return +fewer) (optional, default to 1000)
  • +
  • sort_ascending (bool or None) – (optional)
  • +
  • sort_by (str or None) – Field by which records are sorted (optional)
  • +
+
Return type:

com.vmware.nsx_policy.model_client.RealizedVirtualMachineListResult

+
Returns:

com.vmware.nsx_policy.model.RealizedVirtualMachineListResult

+
Raise:

com.vmware.vapi.std.errors_client.ServiceUnavailable +Service Unavailable

+
Raise:

com.vmware.vapi.std.errors_client.InvalidRequest +Bad Request, Precondition Failed

+
Raise:

com.vmware.vapi.std.errors_client.InternalServerError +Internal Server Error

+
Raise:

com.vmware.vapi.std.errors_client.Unauthorized +Forbidden

+
Raise:

com.vmware.vapi.std.errors_client.NotFound +Not Found

+
+
+ +
+ +
+
+ + +
+ +
+ + +
+
+ +
+ +
+ + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/nsx/nsx_policy/com.vmware.nsx_policy.infra.domains.html b/nsx/nsx_policy/com.vmware.nsx_policy.infra.domains.html new file mode 100644 index 00000000..87ff3d54 --- /dev/null +++ b/nsx/nsx_policy/com.vmware.nsx_policy.infra.domains.html @@ -0,0 +1,1297 @@ + + + + + + + + + + + com.vmware.nsx_policy.infra.domains package — NSX-T Policy SDK 2.2.0.0.0 documentation + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + + + +
+ + + + + +
+ +
+ + + + + + + + + + + + + + + + + +
+ + + + +
+
+
+
+ +
+

com.vmware.nsx_policy.infra.domains package

+ +
+

Submodules

+
+
+

com.vmware.nsx_policy.infra.domains.communication_maps_client module

+
+
+class com.vmware.nsx_policy.infra.domains.communication_maps_client.CommunicationEntries(config)
+

Bases: vmware.vapi.bindings.stub.VapiInterface

+
+
+REVISE_OPERATION_AFTER = 'insert_after'
+

Possible value for operation of method CommunicationEntries.revise().

+
+ +
+
+REVISE_OPERATION_BEFORE = 'insert_before'
+

Possible value for operation of method CommunicationEntries.revise().

+
+ +
+
+REVISE_OPERATION_BOTTOM = 'insert_bottom'
+

Possible value for operation of method CommunicationEntries.revise().

+
+ +
+
+REVISE_OPERATION_TOP = 'insert_top'
+

Possible value for operation of method CommunicationEntries.revise().

+
+ +
+
+delete(domain_id, communication_map_id, communication_entry_id)
+

Delete CommunicationEntry

+ +++ + + + + + + + + + + + + + +
Parameters:
    +
  • domain_id (str) – (required)
  • +
  • communication_map_id (str) – (required)
  • +
  • communication_entry_id (str) – (required)
  • +
+
Raise:

com.vmware.vapi.std.errors_client.ServiceUnavailable +Service Unavailable

+
Raise:

com.vmware.vapi.std.errors_client.InvalidRequest +Bad Request, Precondition Failed

+
Raise:

com.vmware.vapi.std.errors_client.InternalServerError +Internal Server Error

+
Raise:

com.vmware.vapi.std.errors_client.Unauthorized +Forbidden

+
Raise:

com.vmware.vapi.std.errors_client.NotFound +Not Found

+
+
+ +
+
+get(domain_id, communication_map_id, communication_entry_id)
+

Read CommunicationEntry

+ +++ + + + + + + + + + + + + + + + + + +
Parameters:
    +
  • domain_id (str) – (required)
  • +
  • communication_map_id (str) – (required)
  • +
  • communication_entry_id (str) – (required)
  • +
+
Return type:

com.vmware.nsx_policy.model_client.CommunicationEntry

+
Returns:

com.vmware.nsx_policy.model.CommunicationEntry

+
Raise:

com.vmware.vapi.std.errors_client.ServiceUnavailable +Service Unavailable

+
Raise:

com.vmware.vapi.std.errors_client.InvalidRequest +Bad Request, Precondition Failed

+
Raise:

com.vmware.vapi.std.errors_client.InternalServerError +Internal Server Error

+
Raise:

com.vmware.vapi.std.errors_client.Unauthorized +Forbidden

+
Raise:

com.vmware.vapi.std.errors_client.NotFound +Not Found

+
+
+ +
+
+list(domain_id, communication_map_id, cursor=None, included_fields=None, page_size=None, sort_ascending=None, sort_by=None)
+

List CommunicationEntries

+ +++ + + + + + + + + + + + + + + + + + +
Parameters:
    +
  • domain_id (str) – (required)
  • +
  • communication_map_id (str) – (required)
  • +
  • cursor (str or None) – Opaque cursor to be used for getting next page of records (supplied +by current result page) (optional)
  • +
  • included_fields (str or None) – Comma separated list of fields that should be included in query +result (optional)
  • +
  • page_size (long or None) – Maximum number of results to return in this page (server may return +fewer) (optional, default to 1000)
  • +
  • sort_ascending (bool or None) – (optional)
  • +
  • sort_by (str or None) – Field by which records are sorted (optional)
  • +
+
Return type:

com.vmware.nsx_policy.model_client.CommunicationEntryListResult

+
Returns:

com.vmware.nsx_policy.model.CommunicationEntryListResult

+
Raise:

com.vmware.vapi.std.errors_client.ServiceUnavailable +Service Unavailable

+
Raise:

com.vmware.vapi.std.errors_client.InvalidRequest +Bad Request, Precondition Failed

+
Raise:

com.vmware.vapi.std.errors_client.InternalServerError +Internal Server Error

+
Raise:

com.vmware.vapi.std.errors_client.Unauthorized +Forbidden

+
Raise:

com.vmware.vapi.std.errors_client.NotFound +Not Found

+
+
+ +
+
+patch(domain_id, communication_map_id, communication_entry_id, communication_entry)
+

Patch the CommunicationEntry.

+ +++ + + + + + + + + + + + + + +
Parameters: +
Raise:

com.vmware.vapi.std.errors_client.ServiceUnavailable +Service Unavailable

+
Raise:

com.vmware.vapi.std.errors_client.InvalidRequest +Bad Request, Precondition Failed

+
Raise:

com.vmware.vapi.std.errors_client.InternalServerError +Internal Server Error

+
Raise:

com.vmware.vapi.std.errors_client.Unauthorized +Forbidden

+
Raise:

com.vmware.vapi.std.errors_client.NotFound +Not Found

+
+
+ +
+
+revise(domain_id, communication_map_id, communication_entry_id, communication_entry, anchor_path=None, operation=None)
+

This is used to re-order a communictation entry within a communication +map.

+ +++ + + + + + + + + + + + + + + + + + +
Parameters:
    +
  • domain_id (str) – (required)
  • +
  • communication_map_id (str) – (required)
  • +
  • communication_entry_id (str) – (required)
  • +
  • communication_entry (com.vmware.nsx_policy.model_client.CommunicationEntry) – (required)
  • +
  • anchor_path (str or None) – The communication map/communication entry path if operation is +‘insert_after’ or ‘insert_before’ (optional)
  • +
  • operation (str or None) – Operation (optional, default to insert_top)
  • +
+
Return type:

com.vmware.nsx_policy.model_client.CommunicationEntry

+
Returns:

com.vmware.nsx_policy.model.CommunicationEntry

+
Raise:

com.vmware.vapi.std.errors_client.ServiceUnavailable +Service Unavailable

+
Raise:

com.vmware.vapi.std.errors_client.InvalidRequest +Bad Request, Precondition Failed

+
Raise:

com.vmware.vapi.std.errors_client.InternalServerError +Internal Server Error

+
Raise:

com.vmware.vapi.std.errors_client.Unauthorized +Forbidden

+
Raise:

com.vmware.vapi.std.errors_client.NotFound +Not Found

+
+
+ +
+
+update(domain_id, communication_map_id, communication_entry_id, communication_entry)
+

Update the CommunicationEntry. If a CommunicationEntry with the +communication-entry-id is not already present, this API fails with a +404. Creation of CommunicationEntries is not allowed using this API.

+ +++ + + + + + + + + + + + + + + + + + +
Parameters: +
Return type:

com.vmware.nsx_policy.model_client.CommunicationEntry

+
Returns:

com.vmware.nsx_policy.model.CommunicationEntry

+
Raise:

com.vmware.vapi.std.errors_client.ServiceUnavailable +Service Unavailable

+
Raise:

com.vmware.vapi.std.errors_client.InvalidRequest +Bad Request, Precondition Failed

+
Raise:

com.vmware.vapi.std.errors_client.InternalServerError +Internal Server Error

+
Raise:

com.vmware.vapi.std.errors_client.Unauthorized +Forbidden

+
Raise:

com.vmware.vapi.std.errors_client.NotFound +Not Found

+
+
+ +
+ +
+
+class com.vmware.nsx_policy.infra.domains.communication_maps_client.StubFactory(stub_config)
+

Bases: vmware.vapi.bindings.stub.StubFactoryBase

+
+ +
+
+

com.vmware.nsx_policy.infra.domains.edge_communication_maps_client module

+
+
+class com.vmware.nsx_policy.infra.domains.edge_communication_maps_client.CommunicationEntries(config)
+

Bases: vmware.vapi.bindings.stub.VapiInterface

+
+
+delete(domain_id, edge_communication_map_id, communication_entry_id)
+

Delete CommunicationEntry

+ +++ + + + + + + + + + + + + + +
Parameters:
    +
  • domain_id (str) – (required)
  • +
  • edge_communication_map_id (str) – (required)
  • +
  • communication_entry_id (str) – (required)
  • +
+
Raise:

com.vmware.vapi.std.errors_client.ServiceUnavailable +Service Unavailable

+
Raise:

com.vmware.vapi.std.errors_client.InvalidRequest +Bad Request, Precondition Failed

+
Raise:

com.vmware.vapi.std.errors_client.InternalServerError +Internal Server Error

+
Raise:

com.vmware.vapi.std.errors_client.Unauthorized +Forbidden

+
Raise:

com.vmware.vapi.std.errors_client.NotFound +Not Found

+
+
+ +
+
+get(domain_id, edge_communication_map_id, communication_entry_id)
+

Read CommunicationEntry

+ +++ + + + + + + + + + + + + + + + + + +
Parameters:
    +
  • domain_id (str) – (required)
  • +
  • edge_communication_map_id (str) – (required)
  • +
  • communication_entry_id (str) – (required)
  • +
+
Return type:

com.vmware.nsx_policy.model_client.CommunicationEntry

+
Returns:

com.vmware.nsx_policy.model.CommunicationEntry

+
Raise:

com.vmware.vapi.std.errors_client.ServiceUnavailable +Service Unavailable

+
Raise:

com.vmware.vapi.std.errors_client.InvalidRequest +Bad Request, Precondition Failed

+
Raise:

com.vmware.vapi.std.errors_client.InternalServerError +Internal Server Error

+
Raise:

com.vmware.vapi.std.errors_client.Unauthorized +Forbidden

+
Raise:

com.vmware.vapi.std.errors_client.NotFound +Not Found

+
+
+ +
+
+list(domain_id, edge_communication_map_id, cursor=None, included_fields=None, page_size=None, sort_ascending=None, sort_by=None)
+

List CommunicationEntries

+ +++ + + + + + + + + + + + + + + + + + +
Parameters:
    +
  • domain_id (str) – (required)
  • +
  • edge_communication_map_id (str) – (required)
  • +
  • cursor (str or None) – Opaque cursor to be used for getting next page of records (supplied +by current result page) (optional)
  • +
  • included_fields (str or None) – Comma separated list of fields that should be included in query +result (optional)
  • +
  • page_size (long or None) – Maximum number of results to return in this page (server may return +fewer) (optional, default to 1000)
  • +
  • sort_ascending (bool or None) – (optional)
  • +
  • sort_by (str or None) – Field by which records are sorted (optional)
  • +
+
Return type:

com.vmware.nsx_policy.model_client.CommunicationEntryListResult

+
Returns:

com.vmware.nsx_policy.model.CommunicationEntryListResult

+
Raise:

com.vmware.vapi.std.errors_client.ServiceUnavailable +Service Unavailable

+
Raise:

com.vmware.vapi.std.errors_client.InvalidRequest +Bad Request, Precondition Failed

+
Raise:

com.vmware.vapi.std.errors_client.InternalServerError +Internal Server Error

+
Raise:

com.vmware.vapi.std.errors_client.Unauthorized +Forbidden

+
Raise:

com.vmware.vapi.std.errors_client.NotFound +Not Found

+
+
+ +
+
+patch(domain_id, edge_communication_map_id, communication_entry_id, communication_entry)
+

Update the edge CommunicationEntry. If a CommunicationEntry with the +entry-id is not already present, this API fails with a 404. Creation of +CommunicationEntries is not allowed using this API.

+ +++ + + + + + + + + + + + + + +
Parameters: +
Raise:

com.vmware.vapi.std.errors_client.ServiceUnavailable +Service Unavailable

+
Raise:

com.vmware.vapi.std.errors_client.InvalidRequest +Bad Request, Precondition Failed

+
Raise:

com.vmware.vapi.std.errors_client.InternalServerError +Internal Server Error

+
Raise:

com.vmware.vapi.std.errors_client.Unauthorized +Forbidden

+
Raise:

com.vmware.vapi.std.errors_client.NotFound +Not Found

+
+
+ +
+
+update(domain_id, edge_communication_map_id, communication_entry_id, communication_entry)
+

Update the edge CommunicationEntry. If a CommunicationEntry with the +entry-id is not already present, this API fails with a 404. Creation of +CommunicationEntries is not allowed using this API.

+ +++ + + + + + + + + + + + + + + + + + +
Parameters: +
Return type:

com.vmware.nsx_policy.model_client.CommunicationEntry

+
Returns:

com.vmware.nsx_policy.model.CommunicationEntry

+
Raise:

com.vmware.vapi.std.errors_client.ServiceUnavailable +Service Unavailable

+
Raise:

com.vmware.vapi.std.errors_client.InvalidRequest +Bad Request, Precondition Failed

+
Raise:

com.vmware.vapi.std.errors_client.InternalServerError +Internal Server Error

+
Raise:

com.vmware.vapi.std.errors_client.Unauthorized +Forbidden

+
Raise:

com.vmware.vapi.std.errors_client.NotFound +Not Found

+
+
+ +
+ +
+
+class com.vmware.nsx_policy.infra.domains.edge_communication_maps_client.StubFactory(stub_config)
+

Bases: vmware.vapi.bindings.stub.StubFactoryBase

+
+ +
+
+

com.vmware.nsx_policy.infra.domains.groups_client module

+
+
+class com.vmware.nsx_policy.infra.domains.groups_client.PortMirroringInstances(config)
+

Bases: vmware.vapi.bindings.stub.VapiInterface

+
+
+delete(domain_id, group_id, port_mirroring_instance_id)
+

API will delete port mirroring instance. Mirroring from source to +destination ports will be stopped.

+ +++ + + + + + + + + + + + + + +
Parameters:
    +
  • domain_id (str) – Domain ID (required)
  • +
  • group_id (str) – Group ID (required)
  • +
  • port_mirroring_instance_id (str) – Port Mirroring Instance Id (required)
  • +
+
Raise:

com.vmware.vapi.std.errors_client.ServiceUnavailable +Service Unavailable

+
Raise:

com.vmware.vapi.std.errors_client.InvalidRequest +Bad Request, Precondition Failed

+
Raise:

com.vmware.vapi.std.errors_client.InternalServerError +Internal Server Error

+
Raise:

com.vmware.vapi.std.errors_client.Unauthorized +Forbidden

+
Raise:

com.vmware.vapi.std.errors_client.NotFound +Not Found

+
+
+ +
+
+get(domain_id, group_id, port_mirroring_instance_id)
+

API will return details of port mirroring instance. If instance does +not exist, it will return 404.

+ +++ + + + + + + + + + + + + + + + + + +
Parameters:
    +
  • domain_id (str) – Domain ID (required)
  • +
  • group_id (str) – Group ID (required)
  • +
  • port_mirroring_instance_id (str) – Port Mirroring Instance Id (required)
  • +
+
Return type:

com.vmware.nsx_policy.model_client.PortMirroringInstance

+
Returns:

com.vmware.nsx_policy.model.PortMirroringInstance

+
Raise:

com.vmware.vapi.std.errors_client.ServiceUnavailable +Service Unavailable

+
Raise:

com.vmware.vapi.std.errors_client.InvalidRequest +Bad Request, Precondition Failed

+
Raise:

com.vmware.vapi.std.errors_client.InternalServerError +Internal Server Error

+
Raise:

com.vmware.vapi.std.errors_client.Unauthorized +Forbidden

+
Raise:

com.vmware.vapi.std.errors_client.NotFound +Not Found

+
+
+ +
+
+list(domain_id, group_id, cursor=None, included_fields=None, page_size=None, sort_ascending=None, sort_by=None)
+

API will list all port mirroring instances active on current group.

+ +++ + + + + + + + + + + + + + + + + + +
Parameters:
    +
  • domain_id (str) – Domain ID (required)
  • +
  • group_id (str) – Group ID (required)
  • +
  • cursor (str or None) – Opaque cursor to be used for getting next page of records (supplied +by current result page) (optional)
  • +
  • included_fields (str or None) – Comma separated list of fields that should be included in query +result (optional)
  • +
  • page_size (long or None) – Maximum number of results to return in this page (server may return +fewer) (optional, default to 1000)
  • +
  • sort_ascending (bool or None) – (optional)
  • +
  • sort_by (str or None) – Field by which records are sorted (optional)
  • +
+
Return type:

com.vmware.nsx_policy.model_client.PortMirroringInstanceListResult

+
Returns:

com.vmware.nsx_policy.model.PortMirroringInstanceListResult

+
Raise:

com.vmware.vapi.std.errors_client.ServiceUnavailable +Service Unavailable

+
Raise:

com.vmware.vapi.std.errors_client.InvalidRequest +Bad Request, Precondition Failed

+
Raise:

com.vmware.vapi.std.errors_client.InternalServerError +Internal Server Error

+
Raise:

com.vmware.vapi.std.errors_client.Unauthorized +Forbidden

+
Raise:

com.vmware.vapi.std.errors_client.NotFound +Not Found

+
+
+ +
+
+patch(domain_id, group_id, port_mirroring_instance_id, port_mirroring_instance)
+

Create a new Port Mirroring Instance if the Port Mirroring Instance +with given id does not already exist. If the Port Mirroring Instance +with the given id already exists, patch with the existing Port +Mirroring Instance.

+ +++ + + + + + + + + + + + + + +
Parameters: +
Raise:

com.vmware.vapi.std.errors_client.ServiceUnavailable +Service Unavailable

+
Raise:

com.vmware.vapi.std.errors_client.InvalidRequest +Bad Request, Precondition Failed

+
Raise:

com.vmware.vapi.std.errors_client.InternalServerError +Internal Server Error

+
Raise:

com.vmware.vapi.std.errors_client.Unauthorized +Forbidden

+
Raise:

com.vmware.vapi.std.errors_client.NotFound +Not Found

+
+
+ +
+
+update(domain_id, group_id, port_mirroring_instance_id, port_mirroring_instance)
+

Create or Replace port mirroring instance. Packets will be mirrored +from source group to destination group.

+ +++ + + + + + + + + + + + + + + + + + +
Parameters: +
Return type:

com.vmware.nsx_policy.model_client.PortMirroringInstance

+
Returns:

com.vmware.nsx_policy.model.PortMirroringInstance

+
Raise:

com.vmware.vapi.std.errors_client.ServiceUnavailable +Service Unavailable

+
Raise:

com.vmware.vapi.std.errors_client.InvalidRequest +Bad Request, Precondition Failed

+
Raise:

com.vmware.vapi.std.errors_client.InternalServerError +Internal Server Error

+
Raise:

com.vmware.vapi.std.errors_client.Unauthorized +Forbidden

+
Raise:

com.vmware.vapi.std.errors_client.NotFound +Not Found

+
+
+ +
+ +
+
+class com.vmware.nsx_policy.infra.domains.groups_client.StubFactory(stub_config)
+

Bases: vmware.vapi.bindings.stub.StubFactoryBase

+
+ +
+
+

com.vmware.nsx_policy.infra.domains.redirection_communication_maps_client module

+
+
+class com.vmware.nsx_policy.infra.domains.redirection_communication_maps_client.CommunicationEntries(config)
+

Bases: vmware.vapi.bindings.stub.VapiInterface

+
+
+delete(domain_id, redirection_map_id, communication_entry_id)
+

Delete RedirectionCommunicationEntry

+ +++ + + + + + + + + + + + + + +
Parameters:
    +
  • domain_id (str) – Domain ID (required)
  • +
  • redirection_map_id (str) – Redirection Map ID (required)
  • +
  • communication_entry_id (str) – RedirectionCommunicationEntry ID (required)
  • +
+
Raise:

com.vmware.vapi.std.errors_client.ServiceUnavailable +Service Unavailable

+
Raise:

com.vmware.vapi.std.errors_client.InvalidRequest +Bad Request, Precondition Failed

+
Raise:

com.vmware.vapi.std.errors_client.InternalServerError +Internal Server Error

+
Raise:

com.vmware.vapi.std.errors_client.Unauthorized +Forbidden

+
Raise:

com.vmware.vapi.std.errors_client.NotFound +Not Found

+
+
+ +
+
+get(domain_id, redirection_map_id, communication_entry_id)
+

Read communication entry

+ +++ + + + + + + + + + + + + + + + + + +
Parameters:
    +
  • domain_id (str) – Domain id (required)
  • +
  • redirection_map_id (str) – Redirection map id (required)
  • +
  • communication_entry_id (str) – Communication entry id (required)
  • +
+
Return type:

com.vmware.nsx_policy.model_client.RedirectionCommunicationEntry

+
Returns:

com.vmware.nsx_policy.model.RedirectionCommunicationEntry

+
Raise:

com.vmware.vapi.std.errors_client.ServiceUnavailable +Service Unavailable

+
Raise:

com.vmware.vapi.std.errors_client.InvalidRequest +Bad Request, Precondition Failed

+
Raise:

com.vmware.vapi.std.errors_client.InternalServerError +Internal Server Error

+
Raise:

com.vmware.vapi.std.errors_client.Unauthorized +Forbidden

+
Raise:

com.vmware.vapi.std.errors_client.NotFound +Not Found

+
+
+ +
+
+list(domain_id, redirection_map_id, cursor=None, included_fields=None, page_size=None, sort_ascending=None, sort_by=None)
+

List communication entries

+ +++ + + + + + + + + + + + + + + + + + +
Parameters:
    +
  • domain_id (str) – Domain id (required)
  • +
  • redirection_map_id (str) – Redirection map id (required)
  • +
  • cursor (str or None) – Opaque cursor to be used for getting next page of records (supplied +by current result page) (optional)
  • +
  • included_fields (str or None) – Comma separated list of fields that should be included in query +result (optional)
  • +
  • page_size (long or None) – Maximum number of results to return in this page (server may return +fewer) (optional, default to 1000)
  • +
  • sort_ascending (bool or None) – (optional)
  • +
  • sort_by (str or None) – Field by which records are sorted (optional)
  • +
+
Return type:

com.vmware.nsx_policy.model_client.RedirectionCommunicationEntryListResult

+
Returns:

com.vmware.nsx_policy.model.RedirectionCommunicationEntryListResult

+
Raise:

com.vmware.vapi.std.errors_client.ServiceUnavailable +Service Unavailable

+
Raise:

com.vmware.vapi.std.errors_client.InvalidRequest +Bad Request, Precondition Failed

+
Raise:

com.vmware.vapi.std.errors_client.InternalServerError +Internal Server Error

+
Raise:

com.vmware.vapi.std.errors_client.Unauthorized +Forbidden

+
Raise:

com.vmware.vapi.std.errors_client.NotFound +Not Found

+
+
+ +
+
+patch(domain_id, redirection_map_id, communication_entry_id, redirection_communication_entry)
+

Create a communication entry with the communication-entry-id is not +already present, otherwise update the communication entry.

+ +++ + + + + + + + + + + + + + +
Parameters: +
Raise:

com.vmware.vapi.std.errors_client.ServiceUnavailable +Service Unavailable

+
Raise:

com.vmware.vapi.std.errors_client.InvalidRequest +Bad Request, Precondition Failed

+
Raise:

com.vmware.vapi.std.errors_client.InternalServerError +Internal Server Error

+
Raise:

com.vmware.vapi.std.errors_client.Unauthorized +Forbidden

+
Raise:

com.vmware.vapi.std.errors_client.NotFound +Not Found

+
+
+ +
+
+update(domain_id, redirection_map_id, communication_entry_id, redirection_communication_entry)
+

Create a communication entry with the communication-entry-id is not +already present, otherwise update the communication entry.

+ +++ + + + + + + + + + + + + + + + + + +
Parameters: +
Return type:

com.vmware.nsx_policy.model_client.RedirectionCommunicationEntry

+
Returns:

com.vmware.nsx_policy.model.RedirectionCommunicationEntry

+
Raise:

com.vmware.vapi.std.errors_client.ServiceUnavailable +Service Unavailable

+
Raise:

com.vmware.vapi.std.errors_client.InvalidRequest +Bad Request, Precondition Failed

+
Raise:

com.vmware.vapi.std.errors_client.InternalServerError +Internal Server Error

+
Raise:

com.vmware.vapi.std.errors_client.Unauthorized +Forbidden

+
Raise:

com.vmware.vapi.std.errors_client.NotFound +Not Found

+
+
+ +
+ +
+
+class com.vmware.nsx_policy.infra.domains.redirection_communication_maps_client.StubFactory(stub_config)
+

Bases: vmware.vapi.bindings.stub.StubFactoryBase

+
+ +
+
+ + +
+ +
+ + +
+
+ +
+ +
+ + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/nsx/nsx_policy/com.vmware.nsx_policy.infra.html b/nsx/nsx_policy/com.vmware.nsx_policy.infra.html new file mode 100644 index 00000000..cda313dc --- /dev/null +++ b/nsx/nsx_policy/com.vmware.nsx_policy.infra.html @@ -0,0 +1,5475 @@ + + + + + + + + + + + com.vmware.nsx_policy.infra package — NSX-T Policy SDK 2.2.0.0.0 documentation + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + + + +
+ + + + + +
+ +
+ + + + + + + + + + + + + + + + + +
+ + + + +
+
+
+
+ +
+

com.vmware.nsx_policy.infra package

+
+

Subpackages

+
+ +
+
+
+

Submodules

+
+
+

com.vmware.nsx_policy.infra.deployment_zones_client module

+
+
+class com.vmware.nsx_policy.infra.deployment_zones_client.EnforcementPoints(config)
+

Bases: vmware.vapi.bindings.stub.VapiInterface

+
+
+delete(deployment_zone_id, enforcementpoint_id)
+

Delete EnforcementPoint

+ +++ + + + + + + + + + + + + + +
Parameters:
    +
  • deployment_zone_id (str) – Deployment zone id (required)
  • +
  • enforcementpoint_id (str) – enforcementpoint-id (required)
  • +
+
Raise:

com.vmware.vapi.std.errors_client.ServiceUnavailable +Service Unavailable

+
Raise:

com.vmware.vapi.std.errors_client.InvalidRequest +Bad Request, Precondition Failed

+
Raise:

com.vmware.vapi.std.errors_client.InternalServerError +Internal Server Error

+
Raise:

com.vmware.vapi.std.errors_client.Unauthorized +Forbidden

+
Raise:

com.vmware.vapi.std.errors_client.NotFound +Not Found

+
+
+ +
+
+get(deployment_zone_id, enforcementpoint_id)
+

Read an Enforcement Point

+ +++ + + + + + + + + + + + + + + + + + +
Parameters:
    +
  • deployment_zone_id (str) – Deployment zone id (required)
  • +
  • enforcementpoint_id (str) – EnforcementPoint id (required)
  • +
+
Return type:

com.vmware.nsx_policy.model_client.EnforcementPoint

+
Returns:

com.vmware.nsx_policy.model.EnforcementPoint

+
Raise:

com.vmware.vapi.std.errors_client.ServiceUnavailable +Service Unavailable

+
Raise:

com.vmware.vapi.std.errors_client.InvalidRequest +Bad Request, Precondition Failed

+
Raise:

com.vmware.vapi.std.errors_client.InternalServerError +Internal Server Error

+
Raise:

com.vmware.vapi.std.errors_client.Unauthorized +Forbidden

+
Raise:

com.vmware.vapi.std.errors_client.NotFound +Not Found

+
+
+ +
+
+list(deployment_zone_id, cursor=None, included_fields=None, page_size=None, sort_ascending=None, sort_by=None)
+

Paginated list of all enforcementpoints for infra.

+ +++ + + + + + + + + + + + + + + + + + +
Parameters:
    +
  • deployment_zone_id (str) – (required)
  • +
  • cursor (str or None) – Opaque cursor to be used for getting next page of records (supplied +by current result page) (optional)
  • +
  • included_fields (str or None) – Comma separated list of fields that should be included in query +result (optional)
  • +
  • page_size (long or None) – Maximum number of results to return in this page (server may return +fewer) (optional, default to 1000)
  • +
  • sort_ascending (bool or None) – (optional)
  • +
  • sort_by (str or None) – Field by which records are sorted (optional)
  • +
+
Return type:

com.vmware.nsx_policy.model_client.EnforcementPointListResult

+
Returns:

com.vmware.nsx_policy.model.EnforcementPointListResult

+
Raise:

com.vmware.vapi.std.errors_client.ServiceUnavailable +Service Unavailable

+
Raise:

com.vmware.vapi.std.errors_client.InvalidRequest +Bad Request, Precondition Failed

+
Raise:

com.vmware.vapi.std.errors_client.InternalServerError +Internal Server Error

+
Raise:

com.vmware.vapi.std.errors_client.Unauthorized +Forbidden

+
Raise:

com.vmware.vapi.std.errors_client.NotFound +Not Found

+
+
+ +
+
+patch(deployment_zone_id, enforcementpoint_id, enforcement_point)
+

If the passed Enforcement Point does not already exist, create a new +Enforcement Point. If it already exists, patch it.

+ +++ + + + + + + + + + + + + + +
Parameters: +
Raise:

com.vmware.vapi.std.errors_client.ServiceUnavailable +Service Unavailable

+
Raise:

com.vmware.vapi.std.errors_client.InvalidRequest +Bad Request, Precondition Failed

+
Raise:

com.vmware.vapi.std.errors_client.InternalServerError +Internal Server Error

+
Raise:

com.vmware.vapi.std.errors_client.Unauthorized +Forbidden

+
Raise:

com.vmware.vapi.std.errors_client.NotFound +Not Found

+
+
+ +
+
+update(deployment_zone_id, enforcementpoint_id, enforcement_point)
+

If the passed Enforcement Point does not already exist, create a new +Enforcement Point. If it already exists, replace it.

+ +++ + + + + + + + + + + + + + + + + + +
Parameters: +
Return type:

com.vmware.nsx_policy.model_client.EnforcementPoint

+
Returns:

com.vmware.nsx_policy.model.EnforcementPoint

+
Raise:

com.vmware.vapi.std.errors_client.ServiceUnavailable +Service Unavailable

+
Raise:

com.vmware.vapi.std.errors_client.InvalidRequest +Bad Request, Precondition Failed

+
Raise:

com.vmware.vapi.std.errors_client.InternalServerError +Internal Server Error

+
Raise:

com.vmware.vapi.std.errors_client.Unauthorized +Forbidden

+
Raise:

com.vmware.vapi.std.errors_client.NotFound +Not Found

+
+
+ +
+ +
+
+class com.vmware.nsx_policy.infra.deployment_zones_client.StubFactory(stub_config)
+

Bases: vmware.vapi.bindings.stub.StubFactoryBase

+
+ +
+
+

com.vmware.nsx_policy.infra.domains_client module

+
+
+class com.vmware.nsx_policy.infra.domains_client.CommunicationMaps(config)
+

Bases: vmware.vapi.bindings.stub.VapiInterface

+
+
+REVISE_OPERATION_AFTER = 'insert_after'
+

Possible value for operation of method CommunicationMaps.revise().

+
+ +
+
+REVISE_OPERATION_BEFORE = 'insert_before'
+

Possible value for operation of method CommunicationMaps.revise().

+
+ +
+
+REVISE_OPERATION_BOTTOM = 'insert_bottom'
+

Possible value for operation of method CommunicationMaps.revise().

+
+ +
+
+REVISE_OPERATION_TOP = 'insert_top'
+

Possible value for operation of method CommunicationMaps.revise().

+
+ +
+
+delete(domain_id, communication_map_id)
+

Deletes the communication map along with all the communication entries

+ +++ + + + + + + + + + + + + + +
Parameters:
    +
  • domain_id (str) – (required)
  • +
  • communication_map_id (str) – (required)
  • +
+
Raise:

com.vmware.vapi.std.errors_client.ServiceUnavailable +Service Unavailable

+
Raise:

com.vmware.vapi.std.errors_client.InvalidRequest +Bad Request, Precondition Failed

+
Raise:

com.vmware.vapi.std.errors_client.InternalServerError +Internal Server Error

+
Raise:

com.vmware.vapi.std.errors_client.Unauthorized +Forbidden

+
Raise:

com.vmware.vapi.std.errors_client.NotFound +Not Found

+
+
+ +
+
+get(domain_id, communication_map_id)
+

Read communication-map for a domain.

+ +++ + + + + + + + + + + + + + + + + + +
Parameters:
    +
  • domain_id (str) – (required)
  • +
  • communication_map_id (str) – (required)
  • +
+
Return type:

com.vmware.nsx_policy.model_client.CommunicationMap

+
Returns:

com.vmware.nsx_policy.model.CommunicationMap

+
Raise:

com.vmware.vapi.std.errors_client.ServiceUnavailable +Service Unavailable

+
Raise:

com.vmware.vapi.std.errors_client.InvalidRequest +Bad Request, Precondition Failed

+
Raise:

com.vmware.vapi.std.errors_client.InternalServerError +Internal Server Error

+
Raise:

com.vmware.vapi.std.errors_client.Unauthorized +Forbidden

+
Raise:

com.vmware.vapi.std.errors_client.NotFound +Not Found

+
+
+ +
+
+list(domain_id, cursor=None, included_fields=None, page_size=None, sort_ascending=None, sort_by=None)
+

List all communication maps for a domain.

+ +++ + + + + + + + + + + + + + + + + + +
Parameters:
    +
  • domain_id (str) – (required)
  • +
  • cursor (str or None) – Opaque cursor to be used for getting next page of records (supplied +by current result page) (optional)
  • +
  • included_fields (str or None) – Comma separated list of fields that should be included in query +result (optional)
  • +
  • page_size (long or None) – Maximum number of results to return in this page (server may return +fewer) (optional, default to 1000)
  • +
  • sort_ascending (bool or None) – (optional)
  • +
  • sort_by (str or None) – Field by which records are sorted (optional)
  • +
+
Return type:

com.vmware.nsx_policy.model_client.CommunicationMapListResult

+
Returns:

com.vmware.nsx_policy.model.CommunicationMapListResult

+
Raise:

com.vmware.vapi.std.errors_client.ServiceUnavailable +Service Unavailable

+
Raise:

com.vmware.vapi.std.errors_client.InvalidRequest +Bad Request, Precondition Failed

+
Raise:

com.vmware.vapi.std.errors_client.InternalServerError +Internal Server Error

+
Raise:

com.vmware.vapi.std.errors_client.Unauthorized +Forbidden

+
Raise:

com.vmware.vapi.std.errors_client.NotFound +Not Found

+
+
+ +
+
+patch(domain_id, communication_map_id, communication_map)
+

Patch the communication map for a domain.

+ +++ + + + + + + + + + + + + + +
Parameters: +
Raise:

com.vmware.vapi.std.errors_client.ServiceUnavailable +Service Unavailable

+
Raise:

com.vmware.vapi.std.errors_client.InvalidRequest +Bad Request, Precondition Failed

+
Raise:

com.vmware.vapi.std.errors_client.InternalServerError +Internal Server Error

+
Raise:

com.vmware.vapi.std.errors_client.Unauthorized +Forbidden

+
Raise:

com.vmware.vapi.std.errors_client.NotFound +Not Found

+
+
+ +
+
+revise(domain_id, communication_map_id, communication_map, anchor_path=None, operation=None)
+

This is used to set a precedence of a communication map w.r.t others.

+ +++ + + + + + + + + + + + + + + + + + +
Parameters:
    +
  • domain_id (str) – (required)
  • +
  • communication_map_id (str) – (required)
  • +
  • communication_map (com.vmware.nsx_policy.model_client.CommunicationMap) – (required)
  • +
  • anchor_path (str or None) – The communication map/communication entry path if operation is +‘insert_after’ or ‘insert_before’ (optional)
  • +
  • operation (str or None) – Operation (optional, default to insert_top)
  • +
+
Return type:

com.vmware.nsx_policy.model_client.CommunicationMap

+
Returns:

com.vmware.nsx_policy.model.CommunicationMap

+
Raise:

com.vmware.vapi.std.errors_client.ServiceUnavailable +Service Unavailable

+
Raise:

com.vmware.vapi.std.errors_client.InvalidRequest +Bad Request, Precondition Failed

+
Raise:

com.vmware.vapi.std.errors_client.InternalServerError +Internal Server Error

+
Raise:

com.vmware.vapi.std.errors_client.Unauthorized +Forbidden

+
Raise:

com.vmware.vapi.std.errors_client.NotFound +Not Found

+
+
+ +
+
+update(domain_id, communication_map_id, communication_map)
+

Create or Update the communication map for a domain. This is a full +replace. All the CommunicationEntries are replaced.

+ +++ + + + + + + + + + + + + + + + + + +
Parameters: +
Return type:

com.vmware.nsx_policy.model_client.CommunicationMap

+
Returns:

com.vmware.nsx_policy.model.CommunicationMap

+
Raise:

com.vmware.vapi.std.errors_client.ServiceUnavailable +Service Unavailable

+
Raise:

com.vmware.vapi.std.errors_client.InvalidRequest +Bad Request, Precondition Failed

+
Raise:

com.vmware.vapi.std.errors_client.InternalServerError +Internal Server Error

+
Raise:

com.vmware.vapi.std.errors_client.Unauthorized +Forbidden

+
Raise:

com.vmware.vapi.std.errors_client.NotFound +Not Found

+
+
+ +
+ +
+
+class com.vmware.nsx_policy.infra.domains_client.DiscoverySessions(config)
+

Bases: vmware.vapi.bindings.stub.VapiInterface

+
+
+delete(domain_id, discovery_session_id)
+

Delete discovery session identified by discovery-session-id

+ +++ + + + + + + + + + + + + + +
Parameters:
    +
  • domain_id (str) – Domain ID (required)
  • +
  • discovery_session_id (str) – Discovery Session ID (required)
  • +
+
Raise:

com.vmware.vapi.std.errors_client.ServiceUnavailable +Service Unavailable

+
Raise:

com.vmware.vapi.std.errors_client.InvalidRequest +Bad Request, Precondition Failed

+
Raise:

com.vmware.vapi.std.errors_client.InternalServerError +Internal Server Error

+
Raise:

com.vmware.vapi.std.errors_client.Unauthorized +Forbidden

+
Raise:

com.vmware.vapi.std.errors_client.NotFound +Not Found

+
+
+ +
+
+get(domain_id, discovery_session_id)
+

Read discovery session identified by discovery-session-id

+ +++ + + + + + + + + + + + + + + + + + +
Parameters:
    +
  • domain_id (str) – Domain ID (required)
  • +
  • discovery_session_id (str) – Domain ID (required)
  • +
+
Return type:

com.vmware.nsx_policy.model_client.DiscoverySession

+
Returns:

com.vmware.nsx_policy.model.DiscoverySession

+
Raise:

com.vmware.vapi.std.errors_client.ServiceUnavailable +Service Unavailable

+
Raise:

com.vmware.vapi.std.errors_client.InvalidRequest +Bad Request, Precondition Failed

+
Raise:

com.vmware.vapi.std.errors_client.InternalServerError +Internal Server Error

+
Raise:

com.vmware.vapi.std.errors_client.Unauthorized +Forbidden

+
Raise:

com.vmware.vapi.std.errors_client.NotFound +Not Found

+
+
+ +
+
+list(domain_id, cursor=None, included_fields=None, page_size=None, sort_ascending=None, sort_by=None)
+

List all the discovery sessions created on a domain.

+ +++ + + + + + + + + + + + + + + + + + +
Parameters:
    +
  • domain_id (str) – Domain ID (required)
  • +
  • cursor (str or None) – Opaque cursor to be used for getting next page of records (supplied +by current result page) (optional)
  • +
  • included_fields (str or None) – Comma separated list of fields that should be included in query +result (optional)
  • +
  • page_size (long or None) – Maximum number of results to return in this page (server may return +fewer) (optional, default to 1000)
  • +
  • sort_ascending (bool or None) – (optional)
  • +
  • sort_by (str or None) – Field by which records are sorted (optional)
  • +
+
Return type:

com.vmware.nsx_policy.model_client.DiscoverySessionListResult

+
Returns:

com.vmware.nsx_policy.model.DiscoverySessionListResult

+
Raise:

com.vmware.vapi.std.errors_client.ServiceUnavailable +Service Unavailable

+
Raise:

com.vmware.vapi.std.errors_client.InvalidRequest +Bad Request, Precondition Failed

+
Raise:

com.vmware.vapi.std.errors_client.InternalServerError +Internal Server Error

+
Raise:

com.vmware.vapi.std.errors_client.Unauthorized +Forbidden

+
Raise:

com.vmware.vapi.std.errors_client.NotFound +Not Found

+
+
+ +
+
+patch(domain_id, discovery_session_id, discovery_session)
+

Patch discovery session.

+ +++ + + + + + + + + + + + + + +
Parameters: +
Raise:

com.vmware.vapi.std.errors_client.ServiceUnavailable +Service Unavailable

+
Raise:

com.vmware.vapi.std.errors_client.InvalidRequest +Bad Request, Precondition Failed

+
Raise:

com.vmware.vapi.std.errors_client.InternalServerError +Internal Server Error

+
Raise:

com.vmware.vapi.std.errors_client.Unauthorized +Forbidden

+
Raise:

com.vmware.vapi.std.errors_client.NotFound +Not Found

+
+
+ +
+
+update(domain_id, discovery_session_id, discovery_session)
+

Create or update discovery session.

+ +++ + + + + + + + + + + + + + + + + + +
Parameters: +
Return type:

com.vmware.nsx_policy.model_client.DiscoverySession

+
Returns:

com.vmware.nsx_policy.model.DiscoverySession

+
Raise:

com.vmware.vapi.std.errors_client.ServiceUnavailable +Service Unavailable

+
Raise:

com.vmware.vapi.std.errors_client.InvalidRequest +Bad Request, Precondition Failed

+
Raise:

com.vmware.vapi.std.errors_client.InternalServerError +Internal Server Error

+
Raise:

com.vmware.vapi.std.errors_client.Unauthorized +Forbidden

+
Raise:

com.vmware.vapi.std.errors_client.NotFound +Not Found

+
+
+ +
+ +
+
+class com.vmware.nsx_policy.infra.domains_client.DomainDeploymentMaps(config)
+

Bases: vmware.vapi.bindings.stub.VapiInterface

+
+
+delete(domain_id, domain_deployment_map_id)
+

Delete Domain Deployment Map

+ +++ + + + + + + + + + + + + + +
Parameters:
    +
  • domain_id (str) – Domain ID (required)
  • +
  • domain_deployment_map_id (str) – domain-deployment-map-id (required)
  • +
+
Raise:

com.vmware.vapi.std.errors_client.ServiceUnavailable +Service Unavailable

+
Raise:

com.vmware.vapi.std.errors_client.InvalidRequest +Bad Request, Precondition Failed

+
Raise:

com.vmware.vapi.std.errors_client.InternalServerError +Internal Server Error

+
Raise:

com.vmware.vapi.std.errors_client.Unauthorized +Forbidden

+
Raise:

com.vmware.vapi.std.errors_client.NotFound +Not Found

+
+
+ +
+
+get(domain_id, domain_deployment_map_id)
+

Read a Domain Deployment Map

+ +++ + + + + + + + + + + + + + + + + + +
Parameters:
    +
  • domain_id (str) – Domain ID (required)
  • +
  • domain_deployment_map_id (str) – Domain Deployment Map id (required)
  • +
+
Return type:

com.vmware.nsx_policy.model_client.DomainDeploymentMap

+
Returns:

com.vmware.nsx_policy.model.DomainDeploymentMap

+
Raise:

com.vmware.vapi.std.errors_client.ServiceUnavailable +Service Unavailable

+
Raise:

com.vmware.vapi.std.errors_client.InvalidRequest +Bad Request, Precondition Failed

+
Raise:

com.vmware.vapi.std.errors_client.InternalServerError +Internal Server Error

+
Raise:

com.vmware.vapi.std.errors_client.Unauthorized +Forbidden

+
Raise:

com.vmware.vapi.std.errors_client.NotFound +Not Found

+
+
+ +
+
+list(domain_id, cursor=None, included_fields=None, page_size=None, sort_ascending=None, sort_by=None)
+

Paginated list of all Domain Deployment Entries for infra.

+ +++ + + + + + + + + + + + + + + + + + +
Parameters:
    +
  • domain_id (str) – Domain ID (required)
  • +
  • cursor (str or None) – Opaque cursor to be used for getting next page of records (supplied +by current result page) (optional)
  • +
  • included_fields (str or None) – Comma separated list of fields that should be included in query +result (optional)
  • +
  • page_size (long or None) – Maximum number of results to return in this page (server may return +fewer) (optional, default to 1000)
  • +
  • sort_ascending (bool or None) – (optional)
  • +
  • sort_by (str or None) – Field by which records are sorted (optional)
  • +
+
Return type:

com.vmware.nsx_policy.model_client.DomainDeploymentMapListResult

+
Returns:

com.vmware.nsx_policy.model.DomainDeploymentMapListResult

+
Raise:

com.vmware.vapi.std.errors_client.ServiceUnavailable +Service Unavailable

+
Raise:

com.vmware.vapi.std.errors_client.InvalidRequest +Bad Request, Precondition Failed

+
Raise:

com.vmware.vapi.std.errors_client.InternalServerError +Internal Server Error

+
Raise:

com.vmware.vapi.std.errors_client.Unauthorized +Forbidden

+
Raise:

com.vmware.vapi.std.errors_client.NotFound +Not Found

+
+
+ +
+
+patch(domain_id, domain_deployment_map_id, domain_deployment_map)
+

If the passed Domain Deployment Map does not already exist, create a +new Domain Deployment Map. If it already exist, patch it.

+ +++ + + + + + + + + + + + + + +
Parameters: +
Raise:

com.vmware.vapi.std.errors_client.ServiceUnavailable +Service Unavailable

+
Raise:

com.vmware.vapi.std.errors_client.InvalidRequest +Bad Request, Precondition Failed

+
Raise:

com.vmware.vapi.std.errors_client.InternalServerError +Internal Server Error

+
Raise:

com.vmware.vapi.std.errors_client.Unauthorized +Forbidden

+
Raise:

com.vmware.vapi.std.errors_client.NotFound +Not Found

+
+
+ +
+
+update(domain_id, domain_deployment_map_id, domain_deployment_map)
+

If the passed Domain Deployment Map does not already exist, create a +new Domain Deployment Map. If it already exist, replace it.

+ +++ + + + + + + + + + + + + + + + + + +
Parameters: +
Return type:

com.vmware.nsx_policy.model_client.DomainDeploymentMap

+
Returns:

com.vmware.nsx_policy.model.DomainDeploymentMap

+
Raise:

com.vmware.vapi.std.errors_client.ServiceUnavailable +Service Unavailable

+
Raise:

com.vmware.vapi.std.errors_client.InvalidRequest +Bad Request, Precondition Failed

+
Raise:

com.vmware.vapi.std.errors_client.InternalServerError +Internal Server Error

+
Raise:

com.vmware.vapi.std.errors_client.Unauthorized +Forbidden

+
Raise:

com.vmware.vapi.std.errors_client.NotFound +Not Found

+
+
+ +
+ +
+
+class com.vmware.nsx_policy.infra.domains_client.EdgeCommunicationMaps(config)
+

Bases: vmware.vapi.bindings.stub.VapiInterface

+
+
+get(domain_id, edge_communication_map_id)
+

Read Edge FW ns-communication-map for a domain.

+ +++ + + + + + + + + + + + + + + + + + +
Parameters:
    +
  • domain_id (str) – (required)
  • +
  • edge_communication_map_id (str) – (required)
  • +
+
Return type:

com.vmware.nsx_policy.model_client.EdgeCommunicationMap

+
Returns:

com.vmware.nsx_policy.model.EdgeCommunicationMap

+
Raise:

com.vmware.vapi.std.errors_client.ServiceUnavailable +Service Unavailable

+
Raise:

com.vmware.vapi.std.errors_client.InvalidRequest +Bad Request, Precondition Failed

+
Raise:

com.vmware.vapi.std.errors_client.InternalServerError +Internal Server Error

+
Raise:

com.vmware.vapi.std.errors_client.Unauthorized +Forbidden

+
Raise:

com.vmware.vapi.std.errors_client.NotFound +Not Found

+
+
+ +
+
+patch(domain_id, edge_communication_map_id, edge_communication_map)
+

Update the communication map for a domain. This is a full replace. All +the CommunicationEntries are replaced.

+ +++ + + + + + + + + + + + + + +
Parameters: +
Raise:

com.vmware.vapi.std.errors_client.ServiceUnavailable +Service Unavailable

+
Raise:

com.vmware.vapi.std.errors_client.InvalidRequest +Bad Request, Precondition Failed

+
Raise:

com.vmware.vapi.std.errors_client.InternalServerError +Internal Server Error

+
Raise:

com.vmware.vapi.std.errors_client.Unauthorized +Forbidden

+
Raise:

com.vmware.vapi.std.errors_client.NotFound +Not Found

+
+
+ +
+
+update(domain_id, edge_communication_map_id, edge_communication_map)
+

Update the communication map for a domain. This is a full replace. All +the CommunicationEntries are replaced.

+ +++ + + + + + + + + + + + + + + + + + +
Parameters: +
Return type:

com.vmware.nsx_policy.model_client.EdgeCommunicationMap

+
Returns:

com.vmware.nsx_policy.model.EdgeCommunicationMap

+
Raise:

com.vmware.vapi.std.errors_client.ServiceUnavailable +Service Unavailable

+
Raise:

com.vmware.vapi.std.errors_client.InvalidRequest +Bad Request, Precondition Failed

+
Raise:

com.vmware.vapi.std.errors_client.InternalServerError +Internal Server Error

+
Raise:

com.vmware.vapi.std.errors_client.Unauthorized +Forbidden

+
Raise:

com.vmware.vapi.std.errors_client.NotFound +Not Found

+
+
+ +
+ +
+
+class com.vmware.nsx_policy.infra.domains_client.Groups(config)
+

Bases: vmware.vapi.bindings.stub.VapiInterface

+
+
+delete(domain_id, group_id, force=None)
+

Delete Group

+ +++ + + + + + + + + + + + + + +
Parameters:
    +
  • domain_id (str) – Domain ID (required)
  • +
  • group_id (str) – Group ID (required)
  • +
  • force (bool or None) – Force delete the resource even if it is being used somewhere +(optional, default to false)
  • +
+
Raise:

com.vmware.vapi.std.errors_client.ServiceUnavailable +Service Unavailable

+
Raise:

com.vmware.vapi.std.errors_client.InvalidRequest +Bad Request, Precondition Failed

+
Raise:

com.vmware.vapi.std.errors_client.InternalServerError +Internal Server Error

+
Raise:

com.vmware.vapi.std.errors_client.Unauthorized +Forbidden

+
Raise:

com.vmware.vapi.std.errors_client.NotFound +Not Found

+
+
+ +
+
+get(domain_id, group_id)
+

Read group

+ +++ + + + + + + + + + + + + + + + + + +
Parameters:
    +
  • domain_id (str) – Domain ID (required)
  • +
  • group_id (str) – Group ID (required)
  • +
+
Return type:

com.vmware.nsx_policy.model_client.Group

+
Returns:

com.vmware.nsx_policy.model.Group

+
Raise:

com.vmware.vapi.std.errors_client.ServiceUnavailable +Service Unavailable

+
Raise:

com.vmware.vapi.std.errors_client.InvalidRequest +Bad Request, Precondition Failed

+
Raise:

com.vmware.vapi.std.errors_client.InternalServerError +Internal Server Error

+
Raise:

com.vmware.vapi.std.errors_client.Unauthorized +Forbidden

+
Raise:

com.vmware.vapi.std.errors_client.NotFound +Not Found

+
+
+ +
+
+list(domain_id, cursor=None, included_fields=None, page_size=None, sort_ascending=None, sort_by=None)
+

List Groups for a domain

+ +++ + + + + + + + + + + + + + + + + + +
Parameters:
    +
  • domain_id (str) – Domain ID (required)
  • +
  • cursor (str or None) – Opaque cursor to be used for getting next page of records (supplied +by current result page) (optional)
  • +
  • included_fields (str or None) – Comma separated list of fields that should be included in query +result (optional)
  • +
  • page_size (long or None) – Maximum number of results to return in this page (server may return +fewer) (optional, default to 1000)
  • +
  • sort_ascending (bool or None) – (optional)
  • +
  • sort_by (str or None) – Field by which records are sorted (optional)
  • +
+
Return type:

com.vmware.nsx_policy.model_client.GroupListResult

+
Returns:

com.vmware.nsx_policy.model.GroupListResult

+
Raise:

com.vmware.vapi.std.errors_client.ServiceUnavailable +Service Unavailable

+
Raise:

com.vmware.vapi.std.errors_client.InvalidRequest +Bad Request, Precondition Failed

+
Raise:

com.vmware.vapi.std.errors_client.InternalServerError +Internal Server Error

+
Raise:

com.vmware.vapi.std.errors_client.Unauthorized +Forbidden

+
Raise:

com.vmware.vapi.std.errors_client.NotFound +Not Found

+
+
+ +
+
+patch(domain_id, group_id, group)
+

If a group with the group-id is not already present, create a new +group. If it already exists, patch the group.

+ +++ + + + + + + + + + + + + + +
Parameters: +
Raise:

com.vmware.vapi.std.errors_client.ServiceUnavailable +Service Unavailable

+
Raise:

com.vmware.vapi.std.errors_client.InvalidRequest +Bad Request, Precondition Failed

+
Raise:

com.vmware.vapi.std.errors_client.InternalServerError +Internal Server Error

+
Raise:

com.vmware.vapi.std.errors_client.Unauthorized +Forbidden

+
Raise:

com.vmware.vapi.std.errors_client.NotFound +Not Found

+
+
+ +
+
+update(domain_id, group_id, group)
+

If a group with the group-id is not already present, create a new +group. If it already exists, update the group.

+ +++ + + + + + + + + + + + + + + + + + +
Parameters: +
Return type:

com.vmware.nsx_policy.model_client.Group

+
Returns:

com.vmware.nsx_policy.model.Group

+
Raise:

com.vmware.vapi.std.errors_client.ServiceUnavailable +Service Unavailable

+
Raise:

com.vmware.vapi.std.errors_client.InvalidRequest +Bad Request, Precondition Failed

+
Raise:

com.vmware.vapi.std.errors_client.InternalServerError +Internal Server Error

+
Raise:

com.vmware.vapi.std.errors_client.Unauthorized +Forbidden

+
Raise:

com.vmware.vapi.std.errors_client.NotFound +Not Found

+
+
+ +
+ +
+
+class com.vmware.nsx_policy.infra.domains_client.RedirectionCommunicationMaps(config)
+

Bases: vmware.vapi.bindings.stub.VapiInterface

+
+
+delete(domain_id, redirection_map_id)
+

Delete redirection communication map.

+ +++ + + + + + + + + + + + + + +
Parameters:
    +
  • domain_id (str) – Domain id (required)
  • +
  • redirection_map_id (str) – Redirection map id (required)
  • +
+
Raise:

com.vmware.vapi.std.errors_client.ServiceUnavailable +Service Unavailable

+
Raise:

com.vmware.vapi.std.errors_client.InvalidRequest +Bad Request, Precondition Failed

+
Raise:

com.vmware.vapi.std.errors_client.InternalServerError +Internal Server Error

+
Raise:

com.vmware.vapi.std.errors_client.Unauthorized +Forbidden

+
Raise:

com.vmware.vapi.std.errors_client.NotFound +Not Found

+
+
+ +
+
+get(domain_id, redirection_map_id)
+

Read redirection communication map.

+ +++ + + + + + + + + + + + + + + + + + +
Parameters:
    +
  • domain_id (str) – Domain id (required)
  • +
  • redirection_map_id (str) – Redirection map id (required)
  • +
+
Return type:

com.vmware.nsx_policy.model_client.RedirectionCommunicationMap

+
Returns:

com.vmware.nsx_policy.model.RedirectionCommunicationMap

+
Raise:

com.vmware.vapi.std.errors_client.ServiceUnavailable +Service Unavailable

+
Raise:

com.vmware.vapi.std.errors_client.InvalidRequest +Bad Request, Precondition Failed

+
Raise:

com.vmware.vapi.std.errors_client.InternalServerError +Internal Server Error

+
Raise:

com.vmware.vapi.std.errors_client.Unauthorized +Forbidden

+
Raise:

com.vmware.vapi.std.errors_client.NotFound +Not Found

+
+
+ +
+
+patch(domain_id, redirection_map_id, redirection_communication_map)
+

Create or update the redirection communication map.

+ +++ + + + + + + + + + + + + + +
Parameters: +
Raise:

com.vmware.vapi.std.errors_client.ServiceUnavailable +Service Unavailable

+
Raise:

com.vmware.vapi.std.errors_client.InvalidRequest +Bad Request, Precondition Failed

+
Raise:

com.vmware.vapi.std.errors_client.InternalServerError +Internal Server Error

+
Raise:

com.vmware.vapi.std.errors_client.Unauthorized +Forbidden

+
Raise:

com.vmware.vapi.std.errors_client.NotFound +Not Found

+
+
+ +
+
+update(domain_id, redirection_map_id, redirection_communication_map)
+

Create or update the redirection communication map.

+ +++ + + + + + + + + + + + + + + + + + +
Parameters: +
Return type:

com.vmware.nsx_policy.model_client.RedirectionCommunicationMap

+
Returns:

com.vmware.nsx_policy.model.RedirectionCommunicationMap

+
Raise:

com.vmware.vapi.std.errors_client.ServiceUnavailable +Service Unavailable

+
Raise:

com.vmware.vapi.std.errors_client.InvalidRequest +Bad Request, Precondition Failed

+
Raise:

com.vmware.vapi.std.errors_client.InternalServerError +Internal Server Error

+
Raise:

com.vmware.vapi.std.errors_client.Unauthorized +Forbidden

+
Raise:

com.vmware.vapi.std.errors_client.NotFound +Not Found

+
+
+ +
+ +
+
+class com.vmware.nsx_policy.infra.domains_client.StubFactory(stub_config)
+

Bases: vmware.vapi.bindings.stub.StubFactoryBase

+
+ +
+
+

com.vmware.nsx_policy.infra.networks_client module

+
+
+class com.vmware.nsx_policy.infra.networks_client.DnsForwarder(config)
+

Bases: vmware.vapi.bindings.stub.VapiInterface

+
+
+delete(network_id)
+

Delete DNS configuration for network instance

+ +++ + + + + + + + + + + + + + +
Parameters:network_id (str) – Network ID (required)
Raise:com.vmware.vapi.std.errors_client.ServiceUnavailable +Service Unavailable
Raise:com.vmware.vapi.std.errors_client.InvalidRequest +Bad Request, Precondition Failed
Raise:com.vmware.vapi.std.errors_client.InternalServerError +Internal Server Error
Raise:com.vmware.vapi.std.errors_client.Unauthorized +Forbidden
Raise:com.vmware.vapi.std.errors_client.NotFound +Not Found
+
+ +
+
+get(network_id)
+

Read the DNS Forwarder for the given Network instance

+ +++ + + + + + + + + + + + + + + + + + +
Parameters:network_id (str) – Network ID (required)
Return type:com.vmware.nsx_policy.model_client.PolicyDnsForwarder
Returns:com.vmware.nsx_policy.model.PolicyDnsForwarder
Raise:com.vmware.vapi.std.errors_client.ServiceUnavailable +Service Unavailable
Raise:com.vmware.vapi.std.errors_client.InvalidRequest +Bad Request, Precondition Failed
Raise:com.vmware.vapi.std.errors_client.InternalServerError +Internal Server Error
Raise:com.vmware.vapi.std.errors_client.Unauthorized +Forbidden
Raise:com.vmware.vapi.std.errors_client.NotFound +Not Found
+
+ +
+
+patch(network_id, policy_dns_forwarder)
+

Update the DNS Forwarder

+ +++ + + + + + + + + + + + + + +
Parameters: +
Raise:

com.vmware.vapi.std.errors_client.ServiceUnavailable +Service Unavailable

+
Raise:

com.vmware.vapi.std.errors_client.InvalidRequest +Bad Request, Precondition Failed

+
Raise:

com.vmware.vapi.std.errors_client.InternalServerError +Internal Server Error

+
Raise:

com.vmware.vapi.std.errors_client.Unauthorized +Forbidden

+
Raise:

com.vmware.vapi.std.errors_client.NotFound +Not Found

+
+
+ +
+
+update(network_id, policy_dns_forwarder)
+

Update the DNS Forwarder

+ +++ + + + + + + + + + + + + + + + + + +
Parameters: +
Return type:

com.vmware.nsx_policy.model_client.PolicyDnsForwarder

+
Returns:

com.vmware.nsx_policy.model.PolicyDnsForwarder

+
Raise:

com.vmware.vapi.std.errors_client.ServiceUnavailable +Service Unavailable

+
Raise:

com.vmware.vapi.std.errors_client.InvalidRequest +Bad Request, Precondition Failed

+
Raise:

com.vmware.vapi.std.errors_client.InternalServerError +Internal Server Error

+
Raise:

com.vmware.vapi.std.errors_client.Unauthorized +Forbidden

+
Raise:

com.vmware.vapi.std.errors_client.NotFound +Not Found

+
+
+ +
+ +
+
+class com.vmware.nsx_policy.infra.networks_client.IpfixSwitchCollectionInstances(config)
+

Bases: vmware.vapi.bindings.stub.VapiInterface

+
+
+delete(network_id, ipfix_switch_collection_instance_id)
+

API deletes IPFIX Switch Collection Instance.Flow forwarding to +selected collector will be stopped.

+ +++ + + + + + + + + + + + + + +
Parameters:
    +
  • network_id (str) – Network ID (required)
  • +
  • ipfix_switch_collection_instance_id (str) – IPFIX Switch Collection Instance ID (required)
  • +
+
Raise:

com.vmware.vapi.std.errors_client.ServiceUnavailable +Service Unavailable

+
Raise:

com.vmware.vapi.std.errors_client.InvalidRequest +Bad Request, Precondition Failed

+
Raise:

com.vmware.vapi.std.errors_client.InternalServerError +Internal Server Error

+
Raise:

com.vmware.vapi.std.errors_client.Unauthorized +Forbidden

+
Raise:

com.vmware.vapi.std.errors_client.NotFound +Not Found

+
+
+ +
+
+get(network_id, ipfix_switch_collection_instance_id)
+

API will return details of IPFIX switch collection. If instance does +not exist, it will return 404.

+ +++ + + + + + + + + + + + + + + + + + +
Parameters:
    +
  • network_id (str) – Network ID (required)
  • +
  • ipfix_switch_collection_instance_id (str) – IPFIX switch collection id (required)
  • +
+
Return type:

com.vmware.nsx_policy.model_client.IPFIXSwitchCollectionInstance

+
Returns:

com.vmware.nsx_policy.model.IPFIXSwitchCollectionInstance

+
Raise:

com.vmware.vapi.std.errors_client.ServiceUnavailable +Service Unavailable

+
Raise:

com.vmware.vapi.std.errors_client.InvalidRequest +Bad Request, Precondition Failed

+
Raise:

com.vmware.vapi.std.errors_client.InternalServerError +Internal Server Error

+
Raise:

com.vmware.vapi.std.errors_client.Unauthorized +Forbidden

+
Raise:

com.vmware.vapi.std.errors_client.NotFound +Not Found

+
+
+ +
+
+list(network_id, cursor=None, included_fields=None, page_size=None, sort_ascending=None, sort_by=None)
+

API provides list IPFIX Switch collection instances available on +selected logical switch.

+ +++ + + + + + + + + + + + + + + + + + +
Parameters:
    +
  • network_id (str) – Network ID (required)
  • +
  • cursor (str or None) – Opaque cursor to be used for getting next page of records (supplied +by current result page) (optional)
  • +
  • included_fields (str or None) – Comma separated list of fields that should be included in query +result (optional)
  • +
  • page_size (long or None) – Maximum number of results to return in this page (server may return +fewer) (optional, default to 1000)
  • +
  • sort_ascending (bool or None) – (optional)
  • +
  • sort_by (str or None) – Field by which records are sorted (optional)
  • +
+
Return type:

com.vmware.nsx_policy.model_client.IPFIXSwitchCollectionInstanceListResult

+
Returns:

com.vmware.nsx_policy.model.IPFIXSwitchCollectionInstanceListResult

+
Raise:

com.vmware.vapi.std.errors_client.ServiceUnavailable +Service Unavailable

+
Raise:

com.vmware.vapi.std.errors_client.InvalidRequest +Bad Request, Precondition Failed

+
Raise:

com.vmware.vapi.std.errors_client.InternalServerError +Internal Server Error

+
Raise:

com.vmware.vapi.std.errors_client.Unauthorized +Forbidden

+
Raise:

com.vmware.vapi.std.errors_client.NotFound +Not Found

+
+
+ +
+
+patch(network_id, ipfix_switch_collection_instance_id, i_pfix_switch_collection_instance)
+

Create a new IPFIX switch collection instance if the IPFIX switch +collection instance with given id does not already exist. If the IPFIX +switch collection instance with the given id already exists, patch with +the existing IPFIX switch collection instance.

+ +++ + + + + + + + + + + + + + +
Parameters: +
Raise:

com.vmware.vapi.std.errors_client.ServiceUnavailable +Service Unavailable

+
Raise:

com.vmware.vapi.std.errors_client.InvalidRequest +Bad Request, Precondition Failed

+
Raise:

com.vmware.vapi.std.errors_client.InternalServerError +Internal Server Error

+
Raise:

com.vmware.vapi.std.errors_client.Unauthorized +Forbidden

+
Raise:

com.vmware.vapi.std.errors_client.NotFound +Not Found

+
+
+ +
+
+update(network_id, ipfix_switch_collection_instance_id, i_pfix_switch_collection_instance)
+

Create or replace IPFIX switch collection instance. Instance will start +forwarding data to provided IPFIX collector.

+ +++ + + + + + + + + + + + + + + + + + +
Parameters: +
Return type:

com.vmware.nsx_policy.model_client.IPFIXSwitchCollectionInstance

+
Returns:

com.vmware.nsx_policy.model.IPFIXSwitchCollectionInstance

+
Raise:

com.vmware.vapi.std.errors_client.ServiceUnavailable +Service Unavailable

+
Raise:

com.vmware.vapi.std.errors_client.InvalidRequest +Bad Request, Precondition Failed

+
Raise:

com.vmware.vapi.std.errors_client.InternalServerError +Internal Server Error

+
Raise:

com.vmware.vapi.std.errors_client.Unauthorized +Forbidden

+
Raise:

com.vmware.vapi.std.errors_client.NotFound +Not Found

+
+
+ +
+ +
+
+class com.vmware.nsx_policy.infra.networks_client.Segments(config)
+

Bases: vmware.vapi.bindings.stub.VapiInterface

+
+
+delete(network_id, segment_id)
+

Delete segment

+ +++ + + + + + + + + + + + + + +
Parameters:
    +
  • network_id (str) – Network ID (required)
  • +
  • segment_id (str) – Segment ID (required)
  • +
+
Raise:

com.vmware.vapi.std.errors_client.ServiceUnavailable +Service Unavailable

+
Raise:

com.vmware.vapi.std.errors_client.InvalidRequest +Bad Request, Precondition Failed

+
Raise:

com.vmware.vapi.std.errors_client.InternalServerError +Internal Server Error

+
Raise:

com.vmware.vapi.std.errors_client.Unauthorized +Forbidden

+
Raise:

com.vmware.vapi.std.errors_client.NotFound +Not Found

+
+
+ +
+
+get(network_id, segment_id)
+

Read segment

+ +++ + + + + + + + + + + + + + + + + + +
Parameters:
    +
  • network_id (str) – Network ID (required)
  • +
  • segment_id (str) – Segment ID (required)
  • +
+
Return type:

com.vmware.nsx_policy.model_client.Segment

+
Returns:

com.vmware.nsx_policy.model.Segment

+
Raise:

com.vmware.vapi.std.errors_client.ServiceUnavailable +Service Unavailable

+
Raise:

com.vmware.vapi.std.errors_client.InvalidRequest +Bad Request, Precondition Failed

+
Raise:

com.vmware.vapi.std.errors_client.InternalServerError +Internal Server Error

+
Raise:

com.vmware.vapi.std.errors_client.Unauthorized +Forbidden

+
Raise:

com.vmware.vapi.std.errors_client.NotFound +Not Found

+
+
+ +
+
+list(network_id, cursor=None, included_fields=None, page_size=None, sort_ascending=None, sort_by=None)
+

Paginated list of all segments under network instance

+ +++ + + + + + + + + + + + + + + + + + +
Parameters:
    +
  • network_id (str) – Network ID (required)
  • +
  • cursor (str or None) – Opaque cursor to be used for getting next page of records (supplied +by current result page) (optional)
  • +
  • included_fields (str or None) – Comma separated list of fields that should be included in query +result (optional)
  • +
  • page_size (long or None) – Maximum number of results to return in this page (server may return +fewer) (optional, default to 1000)
  • +
  • sort_ascending (bool or None) – (optional)
  • +
  • sort_by (str or None) – Field by which records are sorted (optional)
  • +
+
Return type:

com.vmware.nsx_policy.model_client.SegmentListResult

+
Returns:

com.vmware.nsx_policy.model.SegmentListResult

+
Raise:

com.vmware.vapi.std.errors_client.ServiceUnavailable +Service Unavailable

+
Raise:

com.vmware.vapi.std.errors_client.InvalidRequest +Bad Request, Precondition Failed

+
Raise:

com.vmware.vapi.std.errors_client.InternalServerError +Internal Server Error

+
Raise:

com.vmware.vapi.std.errors_client.Unauthorized +Forbidden

+
Raise:

com.vmware.vapi.std.errors_client.NotFound +Not Found

+
+
+ +
+
+patch(network_id, segment_id, segment)
+

If segment with the segment-id is not already present, create a new +segment. If it already exists, update the segment with specified +attributes.

+ +++ + + + + + + + + + + + + + + + + + +
Parameters: +
Return type:

com.vmware.nsx_policy.model_client.Segment

+
Returns:

com.vmware.nsx_policy.model.Segment

+
Raise:

com.vmware.vapi.std.errors_client.ServiceUnavailable +Service Unavailable

+
Raise:

com.vmware.vapi.std.errors_client.InvalidRequest +Bad Request, Precondition Failed

+
Raise:

com.vmware.vapi.std.errors_client.InternalServerError +Internal Server Error

+
Raise:

com.vmware.vapi.std.errors_client.Unauthorized +Forbidden

+
Raise:

com.vmware.vapi.std.errors_client.NotFound +Not Found

+
+
+ +
+
+update(network_id, segment_id, segment)
+

If segment with the segment-id is not already present, create a new +segment. If it already exists, replace the segment with this object.

+ +++ + + + + + + + + + + + + + + + + + +
Parameters: +
Return type:

com.vmware.nsx_policy.model_client.Segment

+
Returns:

com.vmware.nsx_policy.model.Segment

+
Raise:

com.vmware.vapi.std.errors_client.ServiceUnavailable +Service Unavailable

+
Raise:

com.vmware.vapi.std.errors_client.InvalidRequest +Bad Request, Precondition Failed

+
Raise:

com.vmware.vapi.std.errors_client.InternalServerError +Internal Server Error

+
Raise:

com.vmware.vapi.std.errors_client.Unauthorized +Forbidden

+
Raise:

com.vmware.vapi.std.errors_client.NotFound +Not Found

+
+
+ +
+ +
+
+class com.vmware.nsx_policy.infra.networks_client.StaticRoutes(config)
+

Bases: vmware.vapi.bindings.stub.VapiInterface

+
+
+delete(network_id, route_id)
+

Delete network static routes

+ +++ + + + + + + + + + + + + + +
Parameters:
    +
  • network_id (str) – Network ID (required)
  • +
  • route_id (str) – Route ID (required)
  • +
+
Raise:

com.vmware.vapi.std.errors_client.ServiceUnavailable +Service Unavailable

+
Raise:

com.vmware.vapi.std.errors_client.InvalidRequest +Bad Request, Precondition Failed

+
Raise:

com.vmware.vapi.std.errors_client.InternalServerError +Internal Server Error

+
Raise:

com.vmware.vapi.std.errors_client.Unauthorized +Forbidden

+
Raise:

com.vmware.vapi.std.errors_client.NotFound +Not Found

+
+
+ +
+
+get(network_id, route_id)
+

Read network static routes

+ +++ + + + + + + + + + + + + + + + + + +
Parameters:
    +
  • network_id (str) – Network ID (required)
  • +
  • route_id (str) – Route ID (required)
  • +
+
Return type:

com.vmware.nsx_policy.model_client.StaticRoutes

+
Returns:

com.vmware.nsx_policy.model.StaticRoutes

+
Raise:

com.vmware.vapi.std.errors_client.ServiceUnavailable +Service Unavailable

+
Raise:

com.vmware.vapi.std.errors_client.InvalidRequest +Bad Request, Precondition Failed

+
Raise:

com.vmware.vapi.std.errors_client.InternalServerError +Internal Server Error

+
Raise:

com.vmware.vapi.std.errors_client.Unauthorized +Forbidden

+
Raise:

com.vmware.vapi.std.errors_client.NotFound +Not Found

+
+
+ +
+
+list(network_id, cursor=None, included_fields=None, page_size=None, sort_ascending=None, sort_by=None)
+

Paginated list of all Network Static Routes

+ +++ + + + + + + + + + + + + + + + + + +
Parameters:
    +
  • network_id (str) – Network ID (required)
  • +
  • cursor (str or None) – Opaque cursor to be used for getting next page of records (supplied +by current result page) (optional)
  • +
  • included_fields (str or None) – Comma separated list of fields that should be included in query +result (optional)
  • +
  • page_size (long or None) – Maximum number of results to return in this page (server may return +fewer) (optional, default to 1000)
  • +
  • sort_ascending (bool or None) – (optional)
  • +
  • sort_by (str or None) – Field by which records are sorted (optional)
  • +
+
Return type:

com.vmware.nsx_policy.model_client.StaticRoutesListResult

+
Returns:

com.vmware.nsx_policy.model.StaticRoutesListResult

+
Raise:

com.vmware.vapi.std.errors_client.ServiceUnavailable +Service Unavailable

+
Raise:

com.vmware.vapi.std.errors_client.InvalidRequest +Bad Request, Precondition Failed

+
Raise:

com.vmware.vapi.std.errors_client.InternalServerError +Internal Server Error

+
Raise:

com.vmware.vapi.std.errors_client.Unauthorized +Forbidden

+
Raise:

com.vmware.vapi.std.errors_client.NotFound +Not Found

+
+
+ +
+
+patch(network_id, route_id, static_routes)
+

If static routes for route-id are not already present, create static +routes. If it already exists, update static routes for route-id.

+ +++ + + + + + + + + + + + + + + + + + +
Parameters: +
Return type:

com.vmware.nsx_policy.model_client.StaticRoutes

+
Returns:

com.vmware.nsx_policy.model.StaticRoutes

+
Raise:

com.vmware.vapi.std.errors_client.ServiceUnavailable +Service Unavailable

+
Raise:

com.vmware.vapi.std.errors_client.InvalidRequest +Bad Request, Precondition Failed

+
Raise:

com.vmware.vapi.std.errors_client.InternalServerError +Internal Server Error

+
Raise:

com.vmware.vapi.std.errors_client.Unauthorized +Forbidden

+
Raise:

com.vmware.vapi.std.errors_client.NotFound +Not Found

+
+
+ +
+
+update(network_id, route_id, static_routes)
+

If static routes for route-id are not already present, create static +routes. If it already exists, replace the static routes for route-id.

+ +++ + + + + + + + + + + + + + + + + + +
Parameters: +
Return type:

com.vmware.nsx_policy.model_client.StaticRoutes

+
Returns:

com.vmware.nsx_policy.model.StaticRoutes

+
Raise:

com.vmware.vapi.std.errors_client.ServiceUnavailable +Service Unavailable

+
Raise:

com.vmware.vapi.std.errors_client.InvalidRequest +Bad Request, Precondition Failed

+
Raise:

com.vmware.vapi.std.errors_client.InternalServerError +Internal Server Error

+
Raise:

com.vmware.vapi.std.errors_client.Unauthorized +Forbidden

+
Raise:

com.vmware.vapi.std.errors_client.NotFound +Not Found

+
+
+ +
+ +
+
+class com.vmware.nsx_policy.infra.networks_client.StubFactory(stub_config)
+

Bases: vmware.vapi.bindings.stub.StubFactoryBase

+
+ +
+
+

com.vmware.nsx_policy.infra.partner_services_client module

+
+
+class com.vmware.nsx_policy.infra.partner_services_client.Eula(config)
+

Bases: vmware.vapi.bindings.stub.VapiInterface

+
+
+create(service_name)
+

Accept EULA for given partner service for requesting customer

+ +++ + + + + + + + + + + + + + + + + + + + +
Parameters:service_name (str) – Name of the service (required)
Return type:com.vmware.nsx_policy.model_client.PartnerServiceEULAStatus
Returns:com.vmware.nsx_policy.model.PartnerServiceEULAStatus
Raise:com.vmware.vapi.std.errors_client.ServiceUnavailable +Service Unavailable
Raise:com.vmware.vapi.std.errors_client.InvalidRequest +Bad Request, Precondition Failed
Raise:com.vmware.vapi.std.errors_client.InternalServerError +Internal Server Error
Raise:com.vmware.vapi.std.errors_client.Unauthorized +Forbidden
Raise:com.vmware.vapi.std.errors_client.NotFound +Not Found
Raise:com.vmware.vapi.std.errors_client.Unauthenticated +Unauthorized
+
+ +
+
+get(service_name)
+

Get EULA status for partner service for requesting customer. It also +contains link to EULA Terms and Conditions.

+ +++ + + + + + + + + + + + + + + + + + + + +
Parameters:service_name (str) – Name of the service (required)
Return type:com.vmware.nsx_policy.model_client.PartnerServiceEULAStatus
Returns:com.vmware.nsx_policy.model.PartnerServiceEULAStatus
Raise:com.vmware.vapi.std.errors_client.ServiceUnavailable +Service Unavailable
Raise:com.vmware.vapi.std.errors_client.InvalidRequest +Bad Request, Precondition Failed
Raise:com.vmware.vapi.std.errors_client.InternalServerError +Internal Server Error
Raise:com.vmware.vapi.std.errors_client.Unauthorized +Forbidden
Raise:com.vmware.vapi.std.errors_client.NotFound +Not Found
Raise:com.vmware.vapi.std.errors_client.Unauthenticated +Unauthorized
+
+ +
+ +
+
+class com.vmware.nsx_policy.infra.partner_services_client.StubFactory(stub_config)
+

Bases: vmware.vapi.bindings.stub.StubFactoryBase

+
+ +
+
+

com.vmware.nsx_policy.infra.providers_client module

+
+
+class com.vmware.nsx_policy.infra.providers_client.Bgp(config)
+

Bases: vmware.vapi.bindings.stub.VapiInterface

+
+
+get(provider_id)
+

Read BGP routing config

+ +++ + + + + + + + + + + + + + + + + + +
Parameters:provider_id (str) – (required)
Return type:com.vmware.nsx_policy.model_client.BgpRoutingConfig
Returns:com.vmware.nsx_policy.model.BgpRoutingConfig
Raise:com.vmware.vapi.std.errors_client.ServiceUnavailable +Service Unavailable
Raise:com.vmware.vapi.std.errors_client.InvalidRequest +Bad Request, Precondition Failed
Raise:com.vmware.vapi.std.errors_client.InternalServerError +Internal Server Error
Raise:com.vmware.vapi.std.errors_client.Unauthorized +Forbidden
Raise:com.vmware.vapi.std.errors_client.NotFound +Not Found
+
+ +
+
+patch(provider_id, bgp_routing_config)
+

If an BGP routing config not present, create BGP routing config. If it +already exists, update the routing config.

+ +++ + + + + + + + + + + + + + + + + + +
Parameters: +
Return type:

com.vmware.nsx_policy.model_client.BgpRoutingConfig

+
Returns:

com.vmware.nsx_policy.model.BgpRoutingConfig

+
Raise:

com.vmware.vapi.std.errors_client.ServiceUnavailable +Service Unavailable

+
Raise:

com.vmware.vapi.std.errors_client.InvalidRequest +Bad Request, Precondition Failed

+
Raise:

com.vmware.vapi.std.errors_client.InternalServerError +Internal Server Error

+
Raise:

com.vmware.vapi.std.errors_client.Unauthorized +Forbidden

+
Raise:

com.vmware.vapi.std.errors_client.NotFound +Not Found

+
+
+ +
+
+update(provider_id, bgp_routing_config)
+

If BGP routing config is not already present, create BGP routing +config. If it already exists, replace the BGP routing config with this +object.

+ +++ + + + + + + + + + + + + + + + + + +
Parameters: +
Return type:

com.vmware.nsx_policy.model_client.BgpRoutingConfig

+
Returns:

com.vmware.nsx_policy.model.BgpRoutingConfig

+
Raise:

com.vmware.vapi.std.errors_client.ServiceUnavailable +Service Unavailable

+
Raise:

com.vmware.vapi.std.errors_client.InvalidRequest +Bad Request, Precondition Failed

+
Raise:

com.vmware.vapi.std.errors_client.InternalServerError +Internal Server Error

+
Raise:

com.vmware.vapi.std.errors_client.Unauthorized +Forbidden

+
Raise:

com.vmware.vapi.std.errors_client.NotFound +Not Found

+
+
+ +
+ +
+
+class com.vmware.nsx_policy.infra.providers_client.ByodServiceInstances(config)
+

Bases: vmware.vapi.bindings.stub.VapiInterface

+
+
+delete(provider_id, service_instance_id)
+

Delete policy service instance

+ +++ + + + + + + + + + + + + + +
Parameters:
    +
  • provider_id (str) – Provider id (required)
  • +
  • service_instance_id (str) – Service instance id (required)
  • +
+
Raise:

com.vmware.vapi.std.errors_client.ServiceUnavailable +Service Unavailable

+
Raise:

com.vmware.vapi.std.errors_client.InvalidRequest +Bad Request, Precondition Failed

+
Raise:

com.vmware.vapi.std.errors_client.InternalServerError +Internal Server Error

+
Raise:

com.vmware.vapi.std.errors_client.Unauthorized +Forbidden

+
Raise:

com.vmware.vapi.std.errors_client.NotFound +Not Found

+
+
+ +
+
+get(provider_id, service_instance_id)
+

Read byod service instance

+ +++ + + + + + + + + + + + + + + + + + +
Parameters:
    +
  • provider_id (str) – Provider id (required)
  • +
  • service_instance_id (str) – Service instance id (required)
  • +
+
Return type:

com.vmware.nsx_policy.model_client.ByodPolicyServiceInstance

+
Returns:

com.vmware.nsx_policy.model.ByodPolicyServiceInstance

+
Raise:

com.vmware.vapi.std.errors_client.ServiceUnavailable +Service Unavailable

+
Raise:

com.vmware.vapi.std.errors_client.InvalidRequest +Bad Request, Precondition Failed

+
Raise:

com.vmware.vapi.std.errors_client.InternalServerError +Internal Server Error

+
Raise:

com.vmware.vapi.std.errors_client.Unauthorized +Forbidden

+
Raise:

com.vmware.vapi.std.errors_client.NotFound +Not Found

+
+
+ +
+
+list(provider_id, cursor=None, included_fields=None, page_size=None, sort_ascending=None, sort_by=None)
+

Read all service instance objects under a provider

+ +++ + + + + + + + + + + + + + + + + + +
Parameters:
    +
  • provider_id (str) – Provider id (required)
  • +
  • cursor (str or None) – Opaque cursor to be used for getting next page of records (supplied +by current result page) (optional)
  • +
  • included_fields (str or None) – Comma separated list of fields that should be included in query +result (optional)
  • +
  • page_size (long or None) – Maximum number of results to return in this page (server may return +fewer) (optional, default to 1000)
  • +
  • sort_ascending (bool or None) – (optional)
  • +
  • sort_by (str or None) – Field by which records are sorted (optional)
  • +
+
Return type:

com.vmware.nsx_policy.model_client.ByodPolicyServiceInstanceListResult

+
Returns:

com.vmware.nsx_policy.model.ByodPolicyServiceInstanceListResult

+
Raise:

com.vmware.vapi.std.errors_client.ServiceUnavailable +Service Unavailable

+
Raise:

com.vmware.vapi.std.errors_client.InvalidRequest +Bad Request, Precondition Failed

+
Raise:

com.vmware.vapi.std.errors_client.InternalServerError +Internal Server Error

+
Raise:

com.vmware.vapi.std.errors_client.Unauthorized +Forbidden

+
Raise:

com.vmware.vapi.std.errors_client.NotFound +Not Found

+
+
+ +
+
+patch(provider_id, service_instance_id, byod_policy_service_instance)
+

Create Service Instance.

+ +++ + + + + + + + + + + + + + +
Parameters: +
Raise:

com.vmware.vapi.std.errors_client.ServiceUnavailable +Service Unavailable

+
Raise:

com.vmware.vapi.std.errors_client.InvalidRequest +Bad Request, Precondition Failed

+
Raise:

com.vmware.vapi.std.errors_client.InternalServerError +Internal Server Error

+
Raise:

com.vmware.vapi.std.errors_client.Unauthorized +Forbidden

+
Raise:

com.vmware.vapi.std.errors_client.NotFound +Not Found

+
+
+ +
+
+update(provider_id, service_instance_id, byod_policy_service_instance)
+

Create service instance.

+ +++ + + + + + + + + + + + + + + + + + +
Parameters: +
Return type:

com.vmware.nsx_policy.model_client.ByodPolicyServiceInstance

+
Returns:

com.vmware.nsx_policy.model.ByodPolicyServiceInstance

+
Raise:

com.vmware.vapi.std.errors_client.ServiceUnavailable +Service Unavailable

+
Raise:

com.vmware.vapi.std.errors_client.InvalidRequest +Bad Request, Precondition Failed

+
Raise:

com.vmware.vapi.std.errors_client.InternalServerError +Internal Server Error

+
Raise:

com.vmware.vapi.std.errors_client.Unauthorized +Forbidden

+
Raise:

com.vmware.vapi.std.errors_client.NotFound +Not Found

+
+
+ +
+ +
+
+class com.vmware.nsx_policy.infra.providers_client.Groups(config)
+

Bases: vmware.vapi.bindings.stub.VapiInterface

+
+
+delete(provider_id, group_id)
+

Delete the Group under Provider.

+ +++ + + + + + + + + + + + + + +
Parameters:
    +
  • provider_id (str) – (required)
  • +
  • group_id (str) – (required)
  • +
+
Raise:

com.vmware.vapi.std.errors_client.ServiceUnavailable +Service Unavailable

+
Raise:

com.vmware.vapi.std.errors_client.InvalidRequest +Bad Request, Precondition Failed

+
Raise:

com.vmware.vapi.std.errors_client.InternalServerError +Internal Server Error

+
Raise:

com.vmware.vapi.std.errors_client.Unauthorized +Forbidden

+
Raise:

com.vmware.vapi.std.errors_client.NotFound +Not Found

+
+
+ +
+
+get(provider_id, group_id)
+

Read Provider Group

+ +++ + + + + + + + + + + + + + + + + + +
Parameters:
    +
  • provider_id (str) – (required)
  • +
  • group_id (str) – (required)
  • +
+
Return type:

com.vmware.nsx_policy.model_client.Group

+
Returns:

com.vmware.nsx_policy.model.Group

+
Raise:

com.vmware.vapi.std.errors_client.ServiceUnavailable +Service Unavailable

+
Raise:

com.vmware.vapi.std.errors_client.InvalidRequest +Bad Request, Precondition Failed

+
Raise:

com.vmware.vapi.std.errors_client.InternalServerError +Internal Server Error

+
Raise:

com.vmware.vapi.std.errors_client.Unauthorized +Forbidden

+
Raise:

com.vmware.vapi.std.errors_client.NotFound +Not Found

+
+
+ +
+
+list(provider_id, cursor=None, included_fields=None, page_size=None, sort_ascending=None, sort_by=None)
+

Paginated list of all Groups for Provider.

+ +++ + + + + + + + + + + + + + + + + + +
Parameters:
    +
  • provider_id (str) – (required)
  • +
  • cursor (str or None) – Opaque cursor to be used for getting next page of records (supplied +by current result page) (optional)
  • +
  • included_fields (str or None) – Comma separated list of fields that should be included in query +result (optional)
  • +
  • page_size (long or None) – Maximum number of results to return in this page (server may return +fewer) (optional, default to 1000)
  • +
  • sort_ascending (bool or None) – (optional)
  • +
  • sort_by (str or None) – Field by which records are sorted (optional)
  • +
+
Return type:

com.vmware.nsx_policy.model_client.GroupListResult

+
Returns:

com.vmware.nsx_policy.model.GroupListResult

+
Raise:

com.vmware.vapi.std.errors_client.ServiceUnavailable +Service Unavailable

+
Raise:

com.vmware.vapi.std.errors_client.InvalidRequest +Bad Request, Precondition Failed

+
Raise:

com.vmware.vapi.std.errors_client.InternalServerError +Internal Server Error

+
Raise:

com.vmware.vapi.std.errors_client.Unauthorized +Forbidden

+
Raise:

com.vmware.vapi.std.errors_client.NotFound +Not Found

+
+
+ +
+
+patch(provider_id, group_id, group)
+

If a Group with the group-id is not already present, create a new Group +under the provider-id. Update if exists. The API valiates that Provider +is present before creating the Group.

+ +++ + + + + + + + + + + + + + +
Parameters: +
Raise:

com.vmware.vapi.std.errors_client.ServiceUnavailable +Service Unavailable

+
Raise:

com.vmware.vapi.std.errors_client.InvalidRequest +Bad Request, Precondition Failed

+
Raise:

com.vmware.vapi.std.errors_client.InternalServerError +Internal Server Error

+
Raise:

com.vmware.vapi.std.errors_client.Unauthorized +Forbidden

+
Raise:

com.vmware.vapi.std.errors_client.NotFound +Not Found

+
+
+ +
+
+update(provider_id, group_id, group)
+

If a Group with the group-id is not already present, create a new Group +under the provider-id. Update if exists. The API valiates that Provider +is present before creating the Group.

+ +++ + + + + + + + + + + + + + + + + + +
Parameters: +
Return type:

com.vmware.nsx_policy.model_client.Group

+
Returns:

com.vmware.nsx_policy.model.Group

+
Raise:

com.vmware.vapi.std.errors_client.ServiceUnavailable +Service Unavailable

+
Raise:

com.vmware.vapi.std.errors_client.InvalidRequest +Bad Request, Precondition Failed

+
Raise:

com.vmware.vapi.std.errors_client.InternalServerError +Internal Server Error

+
Raise:

com.vmware.vapi.std.errors_client.Unauthorized +Forbidden

+
Raise:

com.vmware.vapi.std.errors_client.NotFound +Not Found

+
+
+ +
+ +
+
+class com.vmware.nsx_policy.infra.providers_client.Interfaces(config)
+

Bases: vmware.vapi.bindings.stub.VapiInterface

+
+
+delete(provider_id, interface_id)
+

Delete provider interface

+ +++ + + + + + + + + + + + + + +
Parameters:
    +
  • provider_id (str) – Provider ID (required)
  • +
  • interface_id (str) – Interface ID (required)
  • +
+
Raise:

com.vmware.vapi.std.errors_client.ServiceUnavailable +Service Unavailable

+
Raise:

com.vmware.vapi.std.errors_client.InvalidRequest +Bad Request, Precondition Failed

+
Raise:

com.vmware.vapi.std.errors_client.InternalServerError +Internal Server Error

+
Raise:

com.vmware.vapi.std.errors_client.Unauthorized +Forbidden

+
Raise:

com.vmware.vapi.std.errors_client.NotFound +Not Found

+
+
+ +
+
+get(provider_id, interface_id)
+

Read provider interface

+ +++ + + + + + + + + + + + + + + + + + +
Parameters:
    +
  • provider_id (str) – Provider ID (required)
  • +
  • interface_id (str) – Interface ID (required)
  • +
+
Return type:

com.vmware.nsx_policy.model_client.ProviderInterface

+
Returns:

com.vmware.nsx_policy.model.ProviderInterface

+
Raise:

com.vmware.vapi.std.errors_client.ServiceUnavailable +Service Unavailable

+
Raise:

com.vmware.vapi.std.errors_client.InvalidRequest +Bad Request, Precondition Failed

+
Raise:

com.vmware.vapi.std.errors_client.InternalServerError +Internal Server Error

+
Raise:

com.vmware.vapi.std.errors_client.Unauthorized +Forbidden

+
Raise:

com.vmware.vapi.std.errors_client.NotFound +Not Found

+
+
+ +
+
+list(provider_id, cursor=None, included_fields=None, page_size=None, sort_ascending=None, sort_by=None)
+

Paginated list of all Provider Interfaces

+ +++ + + + + + + + + + + + + + + + + + +
Parameters:
    +
  • provider_id (str) – Provider ID (required)
  • +
  • cursor (str or None) – Opaque cursor to be used for getting next page of records (supplied +by current result page) (optional)
  • +
  • included_fields (str or None) – Comma separated list of fields that should be included in query +result (optional)
  • +
  • page_size (long or None) – Maximum number of results to return in this page (server may return +fewer) (optional, default to 1000)
  • +
  • sort_ascending (bool or None) – (optional)
  • +
  • sort_by (str or None) – Field by which records are sorted (optional)
  • +
+
Return type:

com.vmware.nsx_policy.model_client.ProviderInterfaceListResult

+
Returns:

com.vmware.nsx_policy.model.ProviderInterfaceListResult

+
Raise:

com.vmware.vapi.std.errors_client.ServiceUnavailable +Service Unavailable

+
Raise:

com.vmware.vapi.std.errors_client.InvalidRequest +Bad Request, Precondition Failed

+
Raise:

com.vmware.vapi.std.errors_client.InternalServerError +Internal Server Error

+
Raise:

com.vmware.vapi.std.errors_client.Unauthorized +Forbidden

+
Raise:

com.vmware.vapi.std.errors_client.NotFound +Not Found

+
+
+ +
+
+patch(provider_id, interface_id, provider_interface)
+

If an interface with the interface-id is not already present, create a +new interface. If it already exists, update the interface for specified +attributes.

+ +++ + + + + + + + + + + + + + + + + + +
Parameters: +
Return type:

com.vmware.nsx_policy.model_client.ProviderInterface

+
Returns:

com.vmware.nsx_policy.model.ProviderInterface

+
Raise:

com.vmware.vapi.std.errors_client.ServiceUnavailable +Service Unavailable

+
Raise:

com.vmware.vapi.std.errors_client.InvalidRequest +Bad Request, Precondition Failed

+
Raise:

com.vmware.vapi.std.errors_client.InternalServerError +Internal Server Error

+
Raise:

com.vmware.vapi.std.errors_client.Unauthorized +Forbidden

+
Raise:

com.vmware.vapi.std.errors_client.NotFound +Not Found

+
+
+ +
+
+update(provider_id, interface_id, provider_interface)
+

If an interface with the interface-id is not already present, create a +new interface. If it already exists, replace the interface with this +object.

+ +++ + + + + + + + + + + + + + + + + + +
Parameters: +
Return type:

com.vmware.nsx_policy.model_client.ProviderInterface

+
Returns:

com.vmware.nsx_policy.model.ProviderInterface

+
Raise:

com.vmware.vapi.std.errors_client.ServiceUnavailable +Service Unavailable

+
Raise:

com.vmware.vapi.std.errors_client.InvalidRequest +Bad Request, Precondition Failed

+
Raise:

com.vmware.vapi.std.errors_client.InternalServerError +Internal Server Error

+
Raise:

com.vmware.vapi.std.errors_client.Unauthorized +Forbidden

+
Raise:

com.vmware.vapi.std.errors_client.NotFound +Not Found

+
+
+ +
+ +
+
+class com.vmware.nsx_policy.infra.providers_client.L2vpnContext(config)
+

Bases: vmware.vapi.bindings.stub.VapiInterface

+
+
+get(provider_id)
+

Read L2Vpn Context.

+ +++ + + + + + + + + + + + + + + + + + +
Parameters:provider_id (str) – Provider id (required)
Return type:com.vmware.nsx_policy.model_client.L2VpnContext
Returns:com.vmware.nsx_policy.model.L2VpnContext
Raise:com.vmware.vapi.std.errors_client.ServiceUnavailable +Service Unavailable
Raise:com.vmware.vapi.std.errors_client.InvalidRequest +Bad Request, Precondition Failed
Raise:com.vmware.vapi.std.errors_client.InternalServerError +Internal Server Error
Raise:com.vmware.vapi.std.errors_client.Unauthorized +Forbidden
Raise:com.vmware.vapi.std.errors_client.NotFound +Not Found
+
+ +
+ +
+
+class com.vmware.nsx_policy.infra.providers_client.L3vpnContext(config)
+

Bases: vmware.vapi.bindings.stub.VapiInterface

+
+
+get(provider_id)
+

Read the L3Vpn Context under provider.

+ +++ + + + + + + + + + + + + + + + + + +
Parameters:provider_id (str) – Provider id (required)
Return type:com.vmware.nsx_policy.model_client.L3VpnContext
Returns:com.vmware.nsx_policy.model.L3VpnContext
Raise:com.vmware.vapi.std.errors_client.ServiceUnavailable +Service Unavailable
Raise:com.vmware.vapi.std.errors_client.InvalidRequest +Bad Request, Precondition Failed
Raise:com.vmware.vapi.std.errors_client.InternalServerError +Internal Server Error
Raise:com.vmware.vapi.std.errors_client.Unauthorized +Forbidden
Raise:com.vmware.vapi.std.errors_client.NotFound +Not Found
+
+ +
+
+patch(provider_id, l3_vpn_context)
+

Create the new L3Vpn Context under provider if it does not exist. If +the L3Vpn Context already exists under provider, merge with the the +existing one. This is a patch. If the passed L3VpnContext has new +L3VpnRules, add them to the existing L3VpnContext. If the passed +L3VpnContext also has existing L3VpnRules, update the existing +L3VpnRules.

+ +++ + + + + + + + + + + + + + +
Parameters: +
Raise:

com.vmware.vapi.std.errors_client.ServiceUnavailable +Service Unavailable

+
Raise:

com.vmware.vapi.std.errors_client.InvalidRequest +Bad Request, Precondition Failed

+
Raise:

com.vmware.vapi.std.errors_client.InternalServerError +Internal Server Error

+
Raise:

com.vmware.vapi.std.errors_client.Unauthorized +Forbidden

+
Raise:

com.vmware.vapi.std.errors_client.NotFound +Not Found

+
+
+ +
+
+update(provider_id, l3_vpn_context)
+

Create the new L3Vpn Context under provider if it does not exist. If +the L3Vpn Context already exists under provider, replace the the +existing one. This is a full replace.

+ +++ + + + + + + + + + + + + + + + + + +
Parameters: +
Return type:

com.vmware.nsx_policy.model_client.L3VpnContext

+
Returns:

com.vmware.nsx_policy.model.L3VpnContext

+
Raise:

com.vmware.vapi.std.errors_client.ServiceUnavailable +Service Unavailable

+
Raise:

com.vmware.vapi.std.errors_client.InvalidRequest +Bad Request, Precondition Failed

+
Raise:

com.vmware.vapi.std.errors_client.InternalServerError +Internal Server Error

+
Raise:

com.vmware.vapi.std.errors_client.Unauthorized +Forbidden

+
Raise:

com.vmware.vapi.std.errors_client.NotFound +Not Found

+
+
+ +
+ +
+
+class com.vmware.nsx_policy.infra.providers_client.L3vpns(config)
+

Bases: vmware.vapi.bindings.stub.VapiInterface

+
+
+LIST_L3VPN_SESSION_POLICYBASEDL3VPNSESSION = 'PolicyBasedL3VpnSession'
+

Possible value for l3vpnSession of method L3vpns.list().

+
+ +
+
+LIST_L3VPN_SESSION_ROUTEBASEDL3VPNSESSION = 'RouteBasedL3VpnSession'
+

Possible value for l3vpnSession of method L3vpns.list().

+
+ +
+
+delete(provider_id, l3vpn_id)
+

Delete the L3Vpn with the given id.

+ +++ + + + + + + + + + + + + + +
Parameters:
    +
  • provider_id (str) – Provider id (required)
  • +
  • l3vpn_id (str) – L3Vpn id (required)
  • +
+
Raise:

com.vmware.vapi.std.errors_client.ServiceUnavailable +Service Unavailable

+
Raise:

com.vmware.vapi.std.errors_client.InvalidRequest +Bad Request, Precondition Failed

+
Raise:

com.vmware.vapi.std.errors_client.InternalServerError +Internal Server Error

+
Raise:

com.vmware.vapi.std.errors_client.Unauthorized +Forbidden

+
Raise:

com.vmware.vapi.std.errors_client.NotFound +Not Found

+
+
+ +
+
+get(provider_id, l3vpn_id)
+

Read the L3Vpn with the given id. No sensitive data is returned as part +of the response.

+ +++ + + + + + + + + + + + + + + + + + +
Parameters:
    +
  • provider_id (str) – Provider id (required)
  • +
  • l3vpn_id (str) – L3Vpn id (required)
  • +
+
Return type:

com.vmware.nsx_policy.model_client.L3Vpn

+
Returns:

com.vmware.nsx_policy.model.L3Vpn

+
Raise:

com.vmware.vapi.std.errors_client.ServiceUnavailable +Service Unavailable

+
Raise:

com.vmware.vapi.std.errors_client.InvalidRequest +Bad Request, Precondition Failed

+
Raise:

com.vmware.vapi.std.errors_client.InternalServerError +Internal Server Error

+
Raise:

com.vmware.vapi.std.errors_client.Unauthorized +Forbidden

+
Raise:

com.vmware.vapi.std.errors_client.NotFound +Not Found

+
+
+ +
+
+list(provider_id, cursor=None, included_fields=None, l3vpn_session=None, page_size=None, sort_ascending=None, sort_by=None)
+

Paginated list of L3Vpns.

+ +++ + + + + + + + + + + + + + + + + + +
Parameters:
    +
  • provider_id (str) – Provider id (required)
  • +
  • cursor (str or None) – Opaque cursor to be used for getting next page of records (supplied +by current result page) (optional)
  • +
  • included_fields (str or None) – Comma separated list of fields that should be included in query +result (optional)
  • +
  • l3vpn_session (str or None) – Resource type of L3Vpn Session (optional)
  • +
  • page_size (long or None) – Maximum number of results to return in this page (server may return +fewer) (optional, default to 1000)
  • +
  • sort_ascending (bool or None) – (optional)
  • +
  • sort_by (str or None) – Field by which records are sorted (optional)
  • +
+
Return type:

com.vmware.nsx_policy.model_client.L3VpnListResult

+
Returns:

com.vmware.nsx_policy.model.L3VpnListResult

+
Raise:

com.vmware.vapi.std.errors_client.ServiceUnavailable +Service Unavailable

+
Raise:

com.vmware.vapi.std.errors_client.InvalidRequest +Bad Request, Precondition Failed

+
Raise:

com.vmware.vapi.std.errors_client.InternalServerError +Internal Server Error

+
Raise:

com.vmware.vapi.std.errors_client.Unauthorized +Forbidden

+
Raise:

com.vmware.vapi.std.errors_client.NotFound +Not Found

+
+
+ +
+
+patch(provider_id, l3vpn_id, l3_vpn)
+

Create the new L3Vpn if it does not exist. If the L3Vpn already exists, +merge with the the existing one. This is a patch. - If the passed L3Vpn +is a policy-based one and has new L3VpnRules, add them to the existing +L3VpnRules. - If the passed L3Vpn is a policy-based one and also has +existing L3VpnRules, update the existing L3VpnRules.

+ +++ + + + + + + + + + + + + + +
Parameters: +
Raise:

com.vmware.vapi.std.errors_client.ServiceUnavailable +Service Unavailable

+
Raise:

com.vmware.vapi.std.errors_client.InvalidRequest +Bad Request, Precondition Failed

+
Raise:

com.vmware.vapi.std.errors_client.InternalServerError +Internal Server Error

+
Raise:

com.vmware.vapi.std.errors_client.Unauthorized +Forbidden

+
Raise:

com.vmware.vapi.std.errors_client.NotFound +Not Found

+
+
+ +
+
+showsensitivedata(provider_id, l3vpn_id)
+

Read the L3Vpn with the given id. Sensitive data is returned as part of +the response.

+ +++ + + + + + + + + + + + + + + + + + +
Parameters:
    +
  • provider_id (str) – Provider id (required)
  • +
  • l3vpn_id (str) – L3Vpn id (required)
  • +
+
Return type:

com.vmware.nsx_policy.model_client.L3Vpn

+
Returns:

com.vmware.nsx_policy.model.L3Vpn

+
Raise:

com.vmware.vapi.std.errors_client.ServiceUnavailable +Service Unavailable

+
Raise:

com.vmware.vapi.std.errors_client.InvalidRequest +Bad Request, Precondition Failed

+
Raise:

com.vmware.vapi.std.errors_client.InternalServerError +Internal Server Error

+
Raise:

com.vmware.vapi.std.errors_client.Unauthorized +Forbidden

+
Raise:

com.vmware.vapi.std.errors_client.NotFound +Not Found

+
+
+ +
+
+update(provider_id, l3vpn_id, l3_vpn)
+

Create a new L3Vpn if the L3Vpn with given id does not already exist. +If the L3Vpn with the given id already exists, replace the existing +L3Vpn. This a full replace.

+ +++ + + + + + + + + + + + + + + + + + +
Parameters: +
Return type:

com.vmware.nsx_policy.model_client.L3Vpn

+
Returns:

com.vmware.nsx_policy.model.L3Vpn

+
Raise:

com.vmware.vapi.std.errors_client.ServiceUnavailable +Service Unavailable

+
Raise:

com.vmware.vapi.std.errors_client.InvalidRequest +Bad Request, Precondition Failed

+
Raise:

com.vmware.vapi.std.errors_client.InternalServerError +Internal Server Error

+
Raise:

com.vmware.vapi.std.errors_client.Unauthorized +Forbidden

+
Raise:

com.vmware.vapi.std.errors_client.NotFound +Not Found

+
+
+ +
+ +
+
+class com.vmware.nsx_policy.infra.providers_client.ProviderDeploymentMaps(config)
+

Bases: vmware.vapi.bindings.stub.VapiInterface

+
+
+delete(provider_id, provider_deployment_map_id)
+

Delete Provider Deployment Map

+ +++ + + + + + + + + + + + + + +
Parameters:
    +
  • provider_id (str) – Provider ID (required)
  • +
  • provider_deployment_map_id (str) – provider-deployment-map-id (required)
  • +
+
Raise:

com.vmware.vapi.std.errors_client.ServiceUnavailable +Service Unavailable

+
Raise:

com.vmware.vapi.std.errors_client.InvalidRequest +Bad Request, Precondition Failed

+
Raise:

com.vmware.vapi.std.errors_client.InternalServerError +Internal Server Error

+
Raise:

com.vmware.vapi.std.errors_client.Unauthorized +Forbidden

+
Raise:

com.vmware.vapi.std.errors_client.NotFound +Not Found

+
+
+ +
+
+get(provider_id, provider_deployment_map_id)
+

Read a Provider Deployment Map

+ +++ + + + + + + + + + + + + + + + + + +
Parameters:
    +
  • provider_id (str) – Provider ID (required)
  • +
  • provider_deployment_map_id (str) – Provider Deployment Map id (required)
  • +
+
Return type:

com.vmware.nsx_policy.model_client.ProviderDeploymentMap

+
Returns:

com.vmware.nsx_policy.model.ProviderDeploymentMap

+
Raise:

com.vmware.vapi.std.errors_client.ServiceUnavailable +Service Unavailable

+
Raise:

com.vmware.vapi.std.errors_client.InvalidRequest +Bad Request, Precondition Failed

+
Raise:

com.vmware.vapi.std.errors_client.InternalServerError +Internal Server Error

+
Raise:

com.vmware.vapi.std.errors_client.Unauthorized +Forbidden

+
Raise:

com.vmware.vapi.std.errors_client.NotFound +Not Found

+
+
+ +
+
+list(provider_id, cursor=None, included_fields=None, page_size=None, sort_ascending=None, sort_by=None)
+

Paginated list of all Provider Deployment Entries.

+ +++ + + + + + + + + + + + + + + + + + +
Parameters:
    +
  • provider_id (str) – Provider ID (required)
  • +
  • cursor (str or None) – Opaque cursor to be used for getting next page of records (supplied +by current result page) (optional)
  • +
  • included_fields (str or None) – Comma separated list of fields that should be included in query +result (optional)
  • +
  • page_size (long or None) – Maximum number of results to return in this page (server may return +fewer) (optional, default to 1000)
  • +
  • sort_ascending (bool or None) – (optional)
  • +
  • sort_by (str or None) – Field by which records are sorted (optional)
  • +
+
Return type:

com.vmware.nsx_policy.model_client.ProviderDeploymentMapListResult

+
Returns:

com.vmware.nsx_policy.model.ProviderDeploymentMapListResult

+
Raise:

com.vmware.vapi.std.errors_client.ServiceUnavailable +Service Unavailable

+
Raise:

com.vmware.vapi.std.errors_client.InvalidRequest +Bad Request, Precondition Failed

+
Raise:

com.vmware.vapi.std.errors_client.InternalServerError +Internal Server Error

+
Raise:

com.vmware.vapi.std.errors_client.Unauthorized +Forbidden

+
Raise:

com.vmware.vapi.std.errors_client.NotFound +Not Found

+
+
+ +
+
+patch(provider_id, provider_deployment_map_id, provider_deployment_map)
+

If the passed Provider Deployment Map does not already exist, create a +new Provider Deployment Map. If it already exists, patch it.

+ +++ + + + + + + + + + + + + + + + + + +
Parameters: +
Return type:

com.vmware.nsx_policy.model_client.ProviderDeploymentMap

+
Returns:

com.vmware.nsx_policy.model.ProviderDeploymentMap

+
Raise:

com.vmware.vapi.std.errors_client.ServiceUnavailable +Service Unavailable

+
Raise:

com.vmware.vapi.std.errors_client.InvalidRequest +Bad Request, Precondition Failed

+
Raise:

com.vmware.vapi.std.errors_client.InternalServerError +Internal Server Error

+
Raise:

com.vmware.vapi.std.errors_client.Unauthorized +Forbidden

+
Raise:

com.vmware.vapi.std.errors_client.NotFound +Not Found

+
+
+ +
+
+update(provider_id, provider_deployment_map_id, provider_deployment_map)
+

If the passed Provider Deployment Map does not already exist, create a +new Provider Deployment Map. If it already exists, replace it.

+ +++ + + + + + + + + + + + + + + + + + +
Parameters: +
Return type:

com.vmware.nsx_policy.model_client.ProviderDeploymentMap

+
Returns:

com.vmware.nsx_policy.model.ProviderDeploymentMap

+
Raise:

com.vmware.vapi.std.errors_client.ServiceUnavailable +Service Unavailable

+
Raise:

com.vmware.vapi.std.errors_client.InvalidRequest +Bad Request, Precondition Failed

+
Raise:

com.vmware.vapi.std.errors_client.InternalServerError +Internal Server Error

+
Raise:

com.vmware.vapi.std.errors_client.Unauthorized +Forbidden

+
Raise:

com.vmware.vapi.std.errors_client.NotFound +Not Found

+
+
+ +
+ +
+
+class com.vmware.nsx_policy.infra.providers_client.ServiceInstances(config)
+

Bases: vmware.vapi.bindings.stub.VapiInterface

+
+
+delete(provider_id, service_instance_id)
+

Delete policy service instance

+ +++ + + + + + + + + + + + + + +
Parameters:
    +
  • provider_id (str) – Provider id (required)
  • +
  • service_instance_id (str) – Service instance id (required)
  • +
+
Raise:

com.vmware.vapi.std.errors_client.ServiceUnavailable +Service Unavailable

+
Raise:

com.vmware.vapi.std.errors_client.InvalidRequest +Bad Request, Precondition Failed

+
Raise:

com.vmware.vapi.std.errors_client.InternalServerError +Internal Server Error

+
Raise:

com.vmware.vapi.std.errors_client.Unauthorized +Forbidden

+
Raise:

com.vmware.vapi.std.errors_client.NotFound +Not Found

+
+
+ +
+
+get(provider_id, service_instance_id)
+

Read service instance

+ +++ + + + + + + + + + + + + + + + + + +
Parameters:
    +
  • provider_id (str) – Provider id (required)
  • +
  • service_instance_id (str) – Service instance id (required)
  • +
+
Return type:

com.vmware.nsx_policy.model_client.PolicyServiceInstance

+
Returns:

com.vmware.nsx_policy.model.PolicyServiceInstance

+
Raise:

com.vmware.vapi.std.errors_client.ServiceUnavailable +Service Unavailable

+
Raise:

com.vmware.vapi.std.errors_client.InvalidRequest +Bad Request, Precondition Failed

+
Raise:

com.vmware.vapi.std.errors_client.InternalServerError +Internal Server Error

+
Raise:

com.vmware.vapi.std.errors_client.Unauthorized +Forbidden

+
Raise:

com.vmware.vapi.std.errors_client.NotFound +Not Found

+
+
+ +
+
+list(provider_id, cursor=None, included_fields=None, page_size=None, sort_ascending=None, sort_by=None)
+

Read all service instance objects under a provider

+ +++ + + + + + + + + + + + + + + + + + +
Parameters:
    +
  • provider_id (str) – Provider id (required)
  • +
  • cursor (str or None) – Opaque cursor to be used for getting next page of records (supplied +by current result page) (optional)
  • +
  • included_fields (str or None) – Comma separated list of fields that should be included in query +result (optional)
  • +
  • page_size (long or None) – Maximum number of results to return in this page (server may return +fewer) (optional, default to 1000)
  • +
  • sort_ascending (bool or None) – (optional)
  • +
  • sort_by (str or None) – Field by which records are sorted (optional)
  • +
+
Return type:

com.vmware.nsx_policy.model_client.PolicyServiceInstanceListResult

+
Returns:

com.vmware.nsx_policy.model.PolicyServiceInstanceListResult

+
Raise:

com.vmware.vapi.std.errors_client.ServiceUnavailable +Service Unavailable

+
Raise:

com.vmware.vapi.std.errors_client.InvalidRequest +Bad Request, Precondition Failed

+
Raise:

com.vmware.vapi.std.errors_client.InternalServerError +Internal Server Error

+
Raise:

com.vmware.vapi.std.errors_client.Unauthorized +Forbidden

+
Raise:

com.vmware.vapi.std.errors_client.NotFound +Not Found

+
+
+ +
+
+patch(provider_id, service_instance_id, policy_service_instance)
+

Create Service Instance.

+ +++ + + + + + + + + + + + + + +
Parameters: +
Raise:

com.vmware.vapi.std.errors_client.ServiceUnavailable +Service Unavailable

+
Raise:

com.vmware.vapi.std.errors_client.InvalidRequest +Bad Request, Precondition Failed

+
Raise:

com.vmware.vapi.std.errors_client.InternalServerError +Internal Server Error

+
Raise:

com.vmware.vapi.std.errors_client.Unauthorized +Forbidden

+
Raise:

com.vmware.vapi.std.errors_client.NotFound +Not Found

+
+
+ +
+
+update(provider_id, service_instance_id, policy_service_instance)
+

Create service instance.

+ +++ + + + + + + + + + + + + + + + + + +
Parameters: +
Return type:

com.vmware.nsx_policy.model_client.PolicyServiceInstance

+
Returns:

com.vmware.nsx_policy.model.PolicyServiceInstance

+
Raise:

com.vmware.vapi.std.errors_client.ServiceUnavailable +Service Unavailable

+
Raise:

com.vmware.vapi.std.errors_client.InvalidRequest +Bad Request, Precondition Failed

+
Raise:

com.vmware.vapi.std.errors_client.InternalServerError +Internal Server Error

+
Raise:

com.vmware.vapi.std.errors_client.Unauthorized +Forbidden

+
Raise:

com.vmware.vapi.std.errors_client.NotFound +Not Found

+
+
+ +
+ +
+
+class com.vmware.nsx_policy.infra.providers_client.ServiceInterfaces(config)
+

Bases: vmware.vapi.bindings.stub.VapiInterface

+
+
+delete(provider_id, interface_id)
+

Delete service interface

+ +++ + + + + + + + + + + + + + +
Parameters:
    +
  • provider_id (str) – Provider ID (required)
  • +
  • interface_id (str) – Interface ID (required)
  • +
+
Raise:

com.vmware.vapi.std.errors_client.ServiceUnavailable +Service Unavailable

+
Raise:

com.vmware.vapi.std.errors_client.InvalidRequest +Bad Request, Precondition Failed

+
Raise:

com.vmware.vapi.std.errors_client.InternalServerError +Internal Server Error

+
Raise:

com.vmware.vapi.std.errors_client.Unauthorized +Forbidden

+
Raise:

com.vmware.vapi.std.errors_client.NotFound +Not Found

+
+
+ +
+
+get(provider_id, interface_id)
+

Read service interface

+ +++ + + + + + + + + + + + + + + + + + +
Parameters:
    +
  • provider_id (str) – Provider ID (required)
  • +
  • interface_id (str) – Interface ID (required)
  • +
+
Return type:

com.vmware.nsx_policy.model_client.ServiceInterface

+
Returns:

com.vmware.nsx_policy.model.ServiceInterface

+
Raise:

com.vmware.vapi.std.errors_client.ServiceUnavailable +Service Unavailable

+
Raise:

com.vmware.vapi.std.errors_client.InvalidRequest +Bad Request, Precondition Failed

+
Raise:

com.vmware.vapi.std.errors_client.InternalServerError +Internal Server Error

+
Raise:

com.vmware.vapi.std.errors_client.Unauthorized +Forbidden

+
Raise:

com.vmware.vapi.std.errors_client.NotFound +Not Found

+
+
+ +
+
+list(provider_id, cursor=None, included_fields=None, page_size=None, sort_ascending=None, sort_by=None)
+

Paginated list of all Service Interfaces

+ +++ + + + + + + + + + + + + + + + + + +
Parameters:
    +
  • provider_id (str) – Provider ID (required)
  • +
  • cursor (str or None) – Opaque cursor to be used for getting next page of records (supplied +by current result page) (optional)
  • +
  • included_fields (str or None) – Comma separated list of fields that should be included in query +result (optional)
  • +
  • page_size (long or None) – Maximum number of results to return in this page (server may return +fewer) (optional, default to 1000)
  • +
  • sort_ascending (bool or None) – (optional)
  • +
  • sort_by (str or None) – Field by which records are sorted (optional)
  • +
+
Return type:

com.vmware.nsx_policy.model_client.ServiceInterfaceListResult

+
Returns:

com.vmware.nsx_policy.model.ServiceInterfaceListResult

+
Raise:

com.vmware.vapi.std.errors_client.ServiceUnavailable +Service Unavailable

+
Raise:

com.vmware.vapi.std.errors_client.InvalidRequest +Bad Request, Precondition Failed

+
Raise:

com.vmware.vapi.std.errors_client.InternalServerError +Internal Server Error

+
Raise:

com.vmware.vapi.std.errors_client.Unauthorized +Forbidden

+
Raise:

com.vmware.vapi.std.errors_client.NotFound +Not Found

+
+
+ +
+
+patch(provider_id, interface_id, service_interface)
+

If an interface with the interface-id is not already present, create a +new interface. If it already exists, update the interface for specified +attributes.

+ +++ + + + + + + + + + + + + + + + + + +
Parameters: +
Return type:

com.vmware.nsx_policy.model_client.ServiceInterface

+
Returns:

com.vmware.nsx_policy.model.ServiceInterface

+
Raise:

com.vmware.vapi.std.errors_client.ServiceUnavailable +Service Unavailable

+
Raise:

com.vmware.vapi.std.errors_client.InvalidRequest +Bad Request, Precondition Failed

+
Raise:

com.vmware.vapi.std.errors_client.InternalServerError +Internal Server Error

+
Raise:

com.vmware.vapi.std.errors_client.Unauthorized +Forbidden

+
Raise:

com.vmware.vapi.std.errors_client.NotFound +Not Found

+
+
+ +
+
+update(provider_id, interface_id, service_interface)
+

If an interface with the interface-id is not already present, create a +new interface. If it already exists, replace the interface with this +object.

+ +++ + + + + + + + + + + + + + + + + + +
Parameters: +
Return type:

com.vmware.nsx_policy.model_client.ServiceInterface

+
Returns:

com.vmware.nsx_policy.model.ServiceInterface

+
Raise:

com.vmware.vapi.std.errors_client.ServiceUnavailable +Service Unavailable

+
Raise:

com.vmware.vapi.std.errors_client.InvalidRequest +Bad Request, Precondition Failed

+
Raise:

com.vmware.vapi.std.errors_client.InternalServerError +Internal Server Error

+
Raise:

com.vmware.vapi.std.errors_client.Unauthorized +Forbidden

+
Raise:

com.vmware.vapi.std.errors_client.NotFound +Not Found

+
+
+ +
+ +
+
+class com.vmware.nsx_policy.infra.providers_client.StaticRoutes(config)
+

Bases: vmware.vapi.bindings.stub.VapiInterface

+
+
+delete(provider_id, route_id)
+

Delete provider static routes

+ +++ + + + + + + + + + + + + + +
Parameters:
    +
  • provider_id (str) – Provider ID (required)
  • +
  • route_id (str) – Route ID (required)
  • +
+
Raise:

com.vmware.vapi.std.errors_client.ServiceUnavailable +Service Unavailable

+
Raise:

com.vmware.vapi.std.errors_client.InvalidRequest +Bad Request, Precondition Failed

+
Raise:

com.vmware.vapi.std.errors_client.InternalServerError +Internal Server Error

+
Raise:

com.vmware.vapi.std.errors_client.Unauthorized +Forbidden

+
Raise:

com.vmware.vapi.std.errors_client.NotFound +Not Found

+
+
+ +
+
+get(provider_id, route_id)
+

Read provider static routes

+ +++ + + + + + + + + + + + + + + + + + +
Parameters:
    +
  • provider_id (str) – Provider ID (required)
  • +
  • route_id (str) – Route ID (required)
  • +
+
Return type:

com.vmware.nsx_policy.model_client.StaticRoutes

+
Returns:

com.vmware.nsx_policy.model.StaticRoutes

+
Raise:

com.vmware.vapi.std.errors_client.ServiceUnavailable +Service Unavailable

+
Raise:

com.vmware.vapi.std.errors_client.InvalidRequest +Bad Request, Precondition Failed

+
Raise:

com.vmware.vapi.std.errors_client.InternalServerError +Internal Server Error

+
Raise:

com.vmware.vapi.std.errors_client.Unauthorized +Forbidden

+
Raise:

com.vmware.vapi.std.errors_client.NotFound +Not Found

+
+
+ +
+
+list(provider_id, cursor=None, included_fields=None, page_size=None, sort_ascending=None, sort_by=None)
+

Paginated list of all Provider Static Routes

+ +++ + + + + + + + + + + + + + + + + + +
Parameters:
    +
  • provider_id (str) – Provider ID (required)
  • +
  • cursor (str or None) – Opaque cursor to be used for getting next page of records (supplied +by current result page) (optional)
  • +
  • included_fields (str or None) – Comma separated list of fields that should be included in query +result (optional)
  • +
  • page_size (long or None) – Maximum number of results to return in this page (server may return +fewer) (optional, default to 1000)
  • +
  • sort_ascending (bool or None) – (optional)
  • +
  • sort_by (str or None) – Field by which records are sorted (optional)
  • +
+
Return type:

com.vmware.nsx_policy.model_client.StaticRoutesListResult

+
Returns:

com.vmware.nsx_policy.model.StaticRoutesListResult

+
Raise:

com.vmware.vapi.std.errors_client.ServiceUnavailable +Service Unavailable

+
Raise:

com.vmware.vapi.std.errors_client.InvalidRequest +Bad Request, Precondition Failed

+
Raise:

com.vmware.vapi.std.errors_client.InternalServerError +Internal Server Error

+
Raise:

com.vmware.vapi.std.errors_client.Unauthorized +Forbidden

+
Raise:

com.vmware.vapi.std.errors_client.NotFound +Not Found

+
+
+ +
+
+patch(provider_id, route_id, static_routes)
+

If static routes for route-id are not already present, create static +routes. If it already exists, update static routes for route-id.

+ +++ + + + + + + + + + + + + + + + + + +
Parameters: +
Return type:

com.vmware.nsx_policy.model_client.StaticRoutes

+
Returns:

com.vmware.nsx_policy.model.StaticRoutes

+
Raise:

com.vmware.vapi.std.errors_client.ServiceUnavailable +Service Unavailable

+
Raise:

com.vmware.vapi.std.errors_client.InvalidRequest +Bad Request, Precondition Failed

+
Raise:

com.vmware.vapi.std.errors_client.InternalServerError +Internal Server Error

+
Raise:

com.vmware.vapi.std.errors_client.Unauthorized +Forbidden

+
Raise:

com.vmware.vapi.std.errors_client.NotFound +Not Found

+
+
+ +
+
+update(provider_id, route_id, static_routes)
+

If static routes for route-id are not already present, create static +routes. If it already exists, replace the static routes for route-id.

+ +++ + + + + + + + + + + + + + + + + + +
Parameters: +
Return type:

com.vmware.nsx_policy.model_client.StaticRoutes

+
Returns:

com.vmware.nsx_policy.model.StaticRoutes

+
Raise:

com.vmware.vapi.std.errors_client.ServiceUnavailable +Service Unavailable

+
Raise:

com.vmware.vapi.std.errors_client.InvalidRequest +Bad Request, Precondition Failed

+
Raise:

com.vmware.vapi.std.errors_client.InternalServerError +Internal Server Error

+
Raise:

com.vmware.vapi.std.errors_client.Unauthorized +Forbidden

+
Raise:

com.vmware.vapi.std.errors_client.NotFound +Not Found

+
+
+ +
+ +
+
+class com.vmware.nsx_policy.infra.providers_client.StubFactory(stub_config)
+

Bases: vmware.vapi.bindings.stub.StubFactoryBase

+
+ +
+
+

com.vmware.nsx_policy.infra.realized_state_client module

+
+
+class com.vmware.nsx_policy.infra.realized_state_client.EnforcementPoints(config)
+

Bases: vmware.vapi.bindings.stub.VapiInterface

+
+
+get(enforcement_point_name)
+

Read a Enforcement Point and the complete tree underneath. Returns the +populated enforcement point object.

+ +++ + + + + + + + + + + + + + + + + + +
Parameters:enforcement_point_name (str) – Enforcement Point Name (required)
Return type:com.vmware.nsx_policy.model_client.RealizedEnforcementPoint
Returns:com.vmware.nsx_policy.model.RealizedEnforcementPoint
Raise:com.vmware.vapi.std.errors_client.ServiceUnavailable +Service Unavailable
Raise:com.vmware.vapi.std.errors_client.InvalidRequest +Bad Request, Precondition Failed
Raise:com.vmware.vapi.std.errors_client.InternalServerError +Internal Server Error
Raise:com.vmware.vapi.std.errors_client.Unauthorized +Forbidden
Raise:com.vmware.vapi.std.errors_client.NotFound +Not Found
+
+ +
+
+list(cursor=None, included_fields=None, page_size=None, sort_ascending=None, sort_by=None)
+

Paginated list of all enforcement points. Returns the populated +enforcement points.

+ +++ + + + + + + + + + + + + + + + + + +
Parameters:
    +
  • cursor (str or None) – Opaque cursor to be used for getting next page of records (supplied +by current result page) (optional)
  • +
  • included_fields (str or None) – Comma separated list of fields that should be included in query +result (optional)
  • +
  • page_size (long or None) – Maximum number of results to return in this page (server may return +fewer) (optional, default to 1000)
  • +
  • sort_ascending (bool or None) – (optional)
  • +
  • sort_by (str or None) – Field by which records are sorted (optional)
  • +
+
Return type:

com.vmware.nsx_policy.model_client.RealizedEnforcementPointListResult

+
Returns:

com.vmware.nsx_policy.model.RealizedEnforcementPointListResult

+
Raise:

com.vmware.vapi.std.errors_client.ServiceUnavailable +Service Unavailable

+
Raise:

com.vmware.vapi.std.errors_client.InvalidRequest +Bad Request, Precondition Failed

+
Raise:

com.vmware.vapi.std.errors_client.InternalServerError +Internal Server Error

+
Raise:

com.vmware.vapi.std.errors_client.Unauthorized +Forbidden

+
Raise:

com.vmware.vapi.std.errors_client.NotFound +Not Found

+
+
+ +
+ +
+
+class com.vmware.nsx_policy.infra.realized_state_client.RealizedEntities(config)
+

Bases: vmware.vapi.bindings.stub.VapiInterface

+
+
+list(intent_path)
+

Get list of realized objects associated with intent object

+ +++ + + + + + + + + + + + + + + + + + +
Parameters:intent_path (str) – String Path of the intent object (required)
Return type:com.vmware.nsx_policy.model_client.GenericPolicyRealizedResourceListResult
Returns:com.vmware.nsx_policy.model.GenericPolicyRealizedResourceListResult
Raise:com.vmware.vapi.std.errors_client.ServiceUnavailable +Service Unavailable
Raise:com.vmware.vapi.std.errors_client.InvalidRequest +Bad Request, Precondition Failed
Raise:com.vmware.vapi.std.errors_client.InternalServerError +Internal Server Error
Raise:com.vmware.vapi.std.errors_client.Unauthorized +Forbidden
Raise:com.vmware.vapi.std.errors_client.NotFound +Not Found
+
+ +
+ +
+
+class com.vmware.nsx_policy.infra.realized_state_client.RealizedEntity(config)
+

Bases: vmware.vapi.bindings.stub.VapiInterface

+
+
+get(realized_path=None)
+

Get realized entity uniquely identified by realized path

+ +++ + + + + + + + + + + + + + + + + + +
Parameters:realized_path (str or None) – String Path of the realized object (optional)
Return type:com.vmware.nsx_policy.model_client.GenericPolicyRealizedResource
Returns:com.vmware.nsx_policy.model.GenericPolicyRealizedResource
Raise:com.vmware.vapi.std.errors_client.ServiceUnavailable +Service Unavailable
Raise:com.vmware.vapi.std.errors_client.InvalidRequest +Bad Request, Precondition Failed
Raise:com.vmware.vapi.std.errors_client.InternalServerError +Internal Server Error
Raise:com.vmware.vapi.std.errors_client.Unauthorized +Forbidden
Raise:com.vmware.vapi.std.errors_client.NotFound +Not Found
+
+ +
+
+refresh(intent_path, enforcement_point_path=None)
+

Refresh the status and statistics of all realized entities associated +with given intent path synchronously.

+ +++ + + + + + + + + + + + + + +
Parameters:
    +
  • intent_path (str) – String Path of the intent object (required)
  • +
  • enforcement_point_path (str or None) – String Path of the enforcement point (optional)
  • +
+
Raise:

com.vmware.vapi.std.errors_client.ServiceUnavailable +Service Unavailable

+
Raise:

com.vmware.vapi.std.errors_client.InvalidRequest +Bad Request, Precondition Failed

+
Raise:

com.vmware.vapi.std.errors_client.InternalServerError +Internal Server Error

+
Raise:

com.vmware.vapi.std.errors_client.Unauthorized +Forbidden

+
Raise:

com.vmware.vapi.std.errors_client.NotFound +Not Found

+
+
+ +
+ +
+
+class com.vmware.nsx_policy.infra.realized_state_client.Status(config)
+

Bases: vmware.vapi.bindings.stub.VapiInterface

+
+
+get(intent_path)
+

Get consolidated status of an intent object, specified by path in query +parameter

+ +++ + + + + + + + + + + + + + + + + + +
Parameters:intent_path (str) – String Path of the intent object (required)
Return type:com.vmware.nsx_policy.model_client.ConsolidatedRealizedStatus
Returns:com.vmware.nsx_policy.model.ConsolidatedRealizedStatus
Raise:com.vmware.vapi.std.errors_client.ServiceUnavailable +Service Unavailable
Raise:com.vmware.vapi.std.errors_client.InvalidRequest +Bad Request, Precondition Failed
Raise:com.vmware.vapi.std.errors_client.InternalServerError +Internal Server Error
Raise:com.vmware.vapi.std.errors_client.Unauthorized +Forbidden
Raise:com.vmware.vapi.std.errors_client.NotFound +Not Found
+
+ +
+ +
+
+class com.vmware.nsx_policy.infra.realized_state_client.StubFactory(stub_config)
+

Bases: vmware.vapi.bindings.stub.StubFactoryBase

+
+ +
+
+

com.vmware.nsx_policy.infra.services_client module

+
+
+class com.vmware.nsx_policy.infra.services_client.ServiceEntries(config)
+

Bases: vmware.vapi.bindings.stub.VapiInterface

+
+
+delete(service_id, service_entry_id)
+

Delete Service entry

+ +++ + + + + + + + + + + + + + +
Parameters:
    +
  • service_id (str) – Service ID (required)
  • +
  • service_entry_id (str) – Service entry ID (required)
  • +
+
Raise:

com.vmware.vapi.std.errors_client.ServiceUnavailable +Service Unavailable

+
Raise:

com.vmware.vapi.std.errors_client.InvalidRequest +Bad Request, Precondition Failed

+
Raise:

com.vmware.vapi.std.errors_client.InternalServerError +Internal Server Error

+
Raise:

com.vmware.vapi.std.errors_client.Unauthorized +Forbidden

+
Raise:

com.vmware.vapi.std.errors_client.NotFound +Not Found

+
+
+ +
+
+get(service_id, service_entry_id)
+

Service entry

+ +++ + + + + + + + + + + + + + + + + + +
Parameters:
    +
  • service_id (str) – Service ID (required)
  • +
  • service_entry_id (str) – Service entry ID (required)
  • +
+
Return type:

vmware.vapi.struct.VapiStruct

+
Returns:

com.vmware.nsx_policy.model.ServiceEntry +The return value will contain all the attributes defined in +com.vmware.nsx_policy.model_client.ServiceEntry.

+
Raise:

com.vmware.vapi.std.errors_client.ServiceUnavailable +Service Unavailable

+
Raise:

com.vmware.vapi.std.errors_client.InvalidRequest +Bad Request, Precondition Failed

+
Raise:

com.vmware.vapi.std.errors_client.InternalServerError +Internal Server Error

+
Raise:

com.vmware.vapi.std.errors_client.Unauthorized +Forbidden

+
Raise:

com.vmware.vapi.std.errors_client.NotFound +Not Found

+
+
+ +
+
+list(service_id, cursor=None, included_fields=None, page_size=None, sort_ascending=None, sort_by=None)
+

Paginated list of Service entries for the given service

+ +++ + + + + + + + + + + + + + + + + + +
Parameters:
    +
  • service_id (str) – Service ID (required)
  • +
  • cursor (str or None) – Opaque cursor to be used for getting next page of records (supplied +by current result page) (optional)
  • +
  • included_fields (str or None) – Comma separated list of fields that should be included in query +result (optional)
  • +
  • page_size (long or None) – Maximum number of results to return in this page (server may return +fewer) (optional, default to 1000)
  • +
  • sort_ascending (bool or None) – (optional)
  • +
  • sort_by (str or None) – Field by which records are sorted (optional)
  • +
+
Return type:

com.vmware.nsx_policy.model_client.ServiceEntryListResult

+
Returns:

com.vmware.nsx_policy.model.ServiceEntryListResult

+
Raise:

com.vmware.vapi.std.errors_client.ServiceUnavailable +Service Unavailable

+
Raise:

com.vmware.vapi.std.errors_client.InvalidRequest +Bad Request, Precondition Failed

+
Raise:

com.vmware.vapi.std.errors_client.InternalServerError +Internal Server Error

+
Raise:

com.vmware.vapi.std.errors_client.Unauthorized +Forbidden

+
Raise:

com.vmware.vapi.std.errors_client.NotFound +Not Found

+
+
+ +
+
+patch(service_id, service_entry_id, service_entry)
+

If a service entry with the service-entry-id is not already present, +create a new service entry. If it already exists, patch the service +entry.

+ +++ + + + + + + + + + + + + + +
Parameters:
    +
  • service_id (str) – Service ID (required)
  • +
  • service_entry_id (str) – Service entry ID (required)
  • +
  • service_entry (vmware.vapi.struct.VapiStruct) – (required) +The parameter must contain all the attributes defined in +com.vmware.nsx_policy.model_client.ServiceEntry.
  • +
+
Raise:

com.vmware.vapi.std.errors_client.ServiceUnavailable +Service Unavailable

+
Raise:

com.vmware.vapi.std.errors_client.InvalidRequest +Bad Request, Precondition Failed

+
Raise:

com.vmware.vapi.std.errors_client.InternalServerError +Internal Server Error

+
Raise:

com.vmware.vapi.std.errors_client.Unauthorized +Forbidden

+
Raise:

com.vmware.vapi.std.errors_client.NotFound +Not Found

+
+
+ +
+
+update(service_id, service_entry_id, service_entry)
+

If a service entry with the service-entry-id is not already present, +create a new service entry. If it already exists, update the service +entry.

+ +++ + + + + + + + + + + + + + + + + + +
Parameters:
    +
  • service_id (str) – Service ID (required)
  • +
  • service_entry_id (str) – Service entry ID (required)
  • +
  • service_entry (vmware.vapi.struct.VapiStruct) – (required) +The parameter must contain all the attributes defined in +com.vmware.nsx_policy.model_client.ServiceEntry.
  • +
+
Return type:

vmware.vapi.struct.VapiStruct

+
Returns:

com.vmware.nsx_policy.model.ServiceEntry +The return value will contain all the attributes defined in +com.vmware.nsx_policy.model_client.ServiceEntry.

+
Raise:

com.vmware.vapi.std.errors_client.ServiceUnavailable +Service Unavailable

+
Raise:

com.vmware.vapi.std.errors_client.InvalidRequest +Bad Request, Precondition Failed

+
Raise:

com.vmware.vapi.std.errors_client.InternalServerError +Internal Server Error

+
Raise:

com.vmware.vapi.std.errors_client.Unauthorized +Forbidden

+
Raise:

com.vmware.vapi.std.errors_client.NotFound +Not Found

+
+
+ +
+ +
+
+class com.vmware.nsx_policy.infra.services_client.StubFactory(stub_config)
+

Bases: vmware.vapi.bindings.stub.StubFactoryBase

+
+ +
+
+ + +
+ +
+ + +
+
+ +
+ +
+ + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/nsx/nsx_policy/com.vmware.nsx_policy.infra.networks.html b/nsx/nsx_policy/com.vmware.nsx_policy.infra.networks.html new file mode 100644 index 00000000..65e76285 --- /dev/null +++ b/nsx/nsx_policy/com.vmware.nsx_policy.infra.networks.html @@ -0,0 +1,670 @@ + + + + + + + + + + + com.vmware.nsx_policy.infra.networks package — NSX-T Policy SDK 2.2.0.0.0 documentation + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + + + +
+ + + + + +
+ +
+ + + + + + + + + + + + + + + + + +
+ + + + +
+
+
+
+ +
+

com.vmware.nsx_policy.infra.networks package

+
+

Submodules

+
+
+

com.vmware.nsx_policy.infra.networks.nat_client module

+
+
+class com.vmware.nsx_policy.infra.networks.nat_client.NatRules(config)
+

Bases: vmware.vapi.bindings.stub.VapiInterface

+
+
+delete(network_name, nat_id, nat_rule_id)
+

Delete NAT Rule.

+ +++ + + + + + + + + + + + + + +
Parameters:
    +
  • network_name (str) – Network ID (required)
  • +
  • nat_id (str) – NAT id (required)
  • +
  • nat_rule_id (str) – Rule ID (required)
  • +
+
Raise:

com.vmware.vapi.std.errors_client.ServiceUnavailable +Service Unavailable

+
Raise:

com.vmware.vapi.std.errors_client.InvalidRequest +Bad Request, Precondition Failed

+
Raise:

com.vmware.vapi.std.errors_client.InternalServerError +Internal Server Error

+
Raise:

com.vmware.vapi.std.errors_client.Unauthorized +Forbidden

+
Raise:

com.vmware.vapi.std.errors_client.NotFound +Not Found

+
+
+ +
+
+get(network_name, nat_id, nat_rule_id)
+

Get NAT Rule.

+ +++ + + + + + + + + + + + + + + + + + +
Parameters:
    +
  • network_name (str) – Network ID (required)
  • +
  • nat_id (str) – NAT id (required)
  • +
  • nat_rule_id (str) – Rule ID (required)
  • +
+
Return type:

com.vmware.nsx_policy.model_client.PolicyNatRule

+
Returns:

com.vmware.nsx_policy.model.PolicyNatRule

+
Raise:

com.vmware.vapi.std.errors_client.ServiceUnavailable +Service Unavailable

+
Raise:

com.vmware.vapi.std.errors_client.InvalidRequest +Bad Request, Precondition Failed

+
Raise:

com.vmware.vapi.std.errors_client.InternalServerError +Internal Server Error

+
Raise:

com.vmware.vapi.std.errors_client.Unauthorized +Forbidden

+
Raise:

com.vmware.vapi.std.errors_client.NotFound +Not Found

+
+
+ +
+
+list(network_name, nat_id, cursor=None, included_fields=None, page_size=None, sort_ascending=None, sort_by=None)
+

List NAT Rules.

+ +++ + + + + + + + + + + + + + + + + + +
Parameters:
    +
  • network_name (str) – Network ID (required)
  • +
  • nat_id (str) – NAT id (required)
  • +
  • cursor (str or None) – Opaque cursor to be used for getting next page of records (supplied +by current result page) (optional)
  • +
  • included_fields (str or None) – Comma separated list of fields that should be included in query +result (optional)
  • +
  • page_size (long or None) – Maximum number of results to return in this page (server may return +fewer) (optional, default to 1000)
  • +
  • sort_ascending (bool or None) – (optional)
  • +
  • sort_by (str or None) – Field by which records are sorted (optional)
  • +
+
Return type:

com.vmware.nsx_policy.model_client.PolicyNatRuleListResult

+
Returns:

com.vmware.nsx_policy.model.PolicyNatRuleListResult

+
Raise:

com.vmware.vapi.std.errors_client.ServiceUnavailable +Service Unavailable

+
Raise:

com.vmware.vapi.std.errors_client.InvalidRequest +Bad Request, Precondition Failed

+
Raise:

com.vmware.vapi.std.errors_client.InternalServerError +Internal Server Error

+
Raise:

com.vmware.vapi.std.errors_client.Unauthorized +Forbidden

+
Raise:

com.vmware.vapi.std.errors_client.NotFound +Not Found

+
+
+ +
+
+patch(network_name, nat_id, nat_rule_id, policy_nat_rule)
+

If a NAT Rule is not already present on Network denoted by Network ID, +create a new NAT Rule. If it already exists, update the NAT Rule.

+ +++ + + + + + + + + + + + + + +
Parameters: +
Raise:

com.vmware.vapi.std.errors_client.ServiceUnavailable +Service Unavailable

+
Raise:

com.vmware.vapi.std.errors_client.InvalidRequest +Bad Request, Precondition Failed

+
Raise:

com.vmware.vapi.std.errors_client.InternalServerError +Internal Server Error

+
Raise:

com.vmware.vapi.std.errors_client.Unauthorized +Forbidden

+
Raise:

com.vmware.vapi.std.errors_client.NotFound +Not Found

+
+
+ +
+
+update(network_name, nat_id, nat_rule_id, policy_nat_rule)
+

Update NAT Rule.

+ +++ + + + + + + + + + + + + + + + + + +
Parameters: +
Return type:

com.vmware.nsx_policy.model_client.PolicyNatRule

+
Returns:

com.vmware.nsx_policy.model.PolicyNatRule

+
Raise:

com.vmware.vapi.std.errors_client.ServiceUnavailable +Service Unavailable

+
Raise:

com.vmware.vapi.std.errors_client.InvalidRequest +Bad Request, Precondition Failed

+
Raise:

com.vmware.vapi.std.errors_client.InternalServerError +Internal Server Error

+
Raise:

com.vmware.vapi.std.errors_client.Unauthorized +Forbidden

+
Raise:

com.vmware.vapi.std.errors_client.NotFound +Not Found

+
+
+ +
+ +
+
+class com.vmware.nsx_policy.infra.networks.nat_client.StubFactory(stub_config)
+

Bases: vmware.vapi.bindings.stub.StubFactoryBase

+
+ +
+
+

com.vmware.nsx_policy.infra.networks.segments_client module

+
+
+class com.vmware.nsx_policy.infra.networks.segments_client.StaticArp(config)
+

Bases: vmware.vapi.bindings.stub.VapiInterface

+
+
+delete(network_id, segment_id)
+

Delete static ARP config

+ +++ + + + + + + + + + + + + + +
Parameters:
    +
  • network_id (str) – Network ID (required)
  • +
  • segment_id (str) – Segment ID (required)
  • +
+
Raise:

com.vmware.vapi.std.errors_client.ServiceUnavailable +Service Unavailable

+
Raise:

com.vmware.vapi.std.errors_client.InvalidRequest +Bad Request, Precondition Failed

+
Raise:

com.vmware.vapi.std.errors_client.InternalServerError +Internal Server Error

+
Raise:

com.vmware.vapi.std.errors_client.Unauthorized +Forbidden

+
Raise:

com.vmware.vapi.std.errors_client.NotFound +Not Found

+
+
+ +
+
+get(network_id, segment_id)
+

Read static ARP config

+ +++ + + + + + + + + + + + + + + + + + +
Parameters:
    +
  • network_id (str) – Network ID (required)
  • +
  • segment_id (str) – Segment ID (required)
  • +
+
Return type:

com.vmware.nsx_policy.model_client.StaticARPConfig

+
Returns:

com.vmware.nsx_policy.model.StaticARPConfig

+
Raise:

com.vmware.vapi.std.errors_client.ServiceUnavailable +Service Unavailable

+
Raise:

com.vmware.vapi.std.errors_client.InvalidRequest +Bad Request, Precondition Failed

+
Raise:

com.vmware.vapi.std.errors_client.InternalServerError +Internal Server Error

+
Raise:

com.vmware.vapi.std.errors_client.Unauthorized +Forbidden

+
Raise:

com.vmware.vapi.std.errors_client.NotFound +Not Found

+
+
+ +
+
+patch(network_id, segment_id, static_arp_config)
+

Create static ARP config with network and segment IDs provided if it +doesn’t exist, update with provided config if it’s already created.

+ +++ + + + + + + + + + + + + + +
Parameters: +
Raise:

com.vmware.vapi.std.errors_client.ServiceUnavailable +Service Unavailable

+
Raise:

com.vmware.vapi.std.errors_client.InvalidRequest +Bad Request, Precondition Failed

+
Raise:

com.vmware.vapi.std.errors_client.InternalServerError +Internal Server Error

+
Raise:

com.vmware.vapi.std.errors_client.Unauthorized +Forbidden

+
Raise:

com.vmware.vapi.std.errors_client.NotFound +Not Found

+
+
+ +
+
+update(network_id, segment_id, static_arp_config)
+

Create static ARP config with network and segment IDs provided if it +doesn’t exist, update with provided config if it’s already created.

+ +++ + + + + + + + + + + + + + + + + + +
Parameters: +
Return type:

com.vmware.nsx_policy.model_client.StaticARPConfig

+
Returns:

com.vmware.nsx_policy.model.StaticARPConfig

+
Raise:

com.vmware.vapi.std.errors_client.ServiceUnavailable +Service Unavailable

+
Raise:

com.vmware.vapi.std.errors_client.InvalidRequest +Bad Request, Precondition Failed

+
Raise:

com.vmware.vapi.std.errors_client.InternalServerError +Internal Server Error

+
Raise:

com.vmware.vapi.std.errors_client.Unauthorized +Forbidden

+
Raise:

com.vmware.vapi.std.errors_client.NotFound +Not Found

+
+
+ +
+ +
+
+class com.vmware.nsx_policy.infra.networks.segments_client.StubFactory(stub_config)
+

Bases: vmware.vapi.bindings.stub.StubFactoryBase

+
+ +
+
+ + +
+ +
+ + +
+
+ +
+ +
+ + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/nsx/nsx_policy/com.vmware.nsx_policy.infra.providers.html b/nsx/nsx_policy/com.vmware.nsx_policy.infra.providers.html new file mode 100644 index 00000000..851e9232 --- /dev/null +++ b/nsx/nsx_policy/com.vmware.nsx_policy.infra.providers.html @@ -0,0 +1,987 @@ + + + + + + + + + + + com.vmware.nsx_policy.infra.providers package — NSX-T Policy SDK 2.2.0.0.0 documentation + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + + + +
+ + + + + +
+ +
+ + + + + + + + + + + + + + + + + +
+ + + + +
+
+
+
+ +
+

com.vmware.nsx_policy.infra.providers package

+ +
+

Submodules

+
+
+

com.vmware.nsx_policy.infra.providers.bgp_client module

+
+
+class com.vmware.nsx_policy.infra.providers.bgp_client.Neighbors(config)
+

Bases: vmware.vapi.bindings.stub.VapiInterface

+
+
+delete(provider_id, neighbor_id)
+

Delete BGP neighbor config

+ +++ + + + + + + + + + + + + + +
Parameters:
    +
  • provider_id (str) – (required)
  • +
  • neighbor_id (str) – (required)
  • +
+
Raise:

com.vmware.vapi.std.errors_client.ServiceUnavailable +Service Unavailable

+
Raise:

com.vmware.vapi.std.errors_client.InvalidRequest +Bad Request, Precondition Failed

+
Raise:

com.vmware.vapi.std.errors_client.InternalServerError +Internal Server Error

+
Raise:

com.vmware.vapi.std.errors_client.Unauthorized +Forbidden

+
Raise:

com.vmware.vapi.std.errors_client.NotFound +Not Found

+
+
+ +
+
+get(provider_id, neighbor_id)
+

Read BGP neighbor config

+ +++ + + + + + + + + + + + + + + + + + +
Parameters:
    +
  • provider_id (str) – (required)
  • +
  • neighbor_id (str) – (required)
  • +
+
Return type:

com.vmware.nsx_policy.model_client.BgpNeighborConfig

+
Returns:

com.vmware.nsx_policy.model.BgpNeighborConfig

+
Raise:

com.vmware.vapi.std.errors_client.ServiceUnavailable +Service Unavailable

+
Raise:

com.vmware.vapi.std.errors_client.InvalidRequest +Bad Request, Precondition Failed

+
Raise:

com.vmware.vapi.std.errors_client.InternalServerError +Internal Server Error

+
Raise:

com.vmware.vapi.std.errors_client.Unauthorized +Forbidden

+
Raise:

com.vmware.vapi.std.errors_client.NotFound +Not Found

+
+
+ +
+
+list(provider_id, cursor=None, included_fields=None, page_size=None, sort_ascending=None, sort_by=None)
+

Paginated list of all BGP neighbor configurations

+ +++ + + + + + + + + + + + + + + + + + +
Parameters:
    +
  • provider_id (str) – (required)
  • +
  • cursor (str or None) – Opaque cursor to be used for getting next page of records (supplied +by current result page) (optional)
  • +
  • included_fields (str or None) – Comma separated list of fields that should be included in query +result (optional)
  • +
  • page_size (long or None) – Maximum number of results to return in this page (server may return +fewer) (optional, default to 1000)
  • +
  • sort_ascending (bool or None) – (optional)
  • +
  • sort_by (str or None) – Field by which records are sorted (optional)
  • +
+
Return type:

com.vmware.nsx_policy.model_client.BgpNeighborConfigListResult

+
Returns:

com.vmware.nsx_policy.model.BgpNeighborConfigListResult

+
Raise:

com.vmware.vapi.std.errors_client.ServiceUnavailable +Service Unavailable

+
Raise:

com.vmware.vapi.std.errors_client.InvalidRequest +Bad Request, Precondition Failed

+
Raise:

com.vmware.vapi.std.errors_client.InternalServerError +Internal Server Error

+
Raise:

com.vmware.vapi.std.errors_client.Unauthorized +Forbidden

+
Raise:

com.vmware.vapi.std.errors_client.NotFound +Not Found

+
+
+ +
+
+patch(provider_id, neighbor_id, bgp_neighbor_config)
+

If BGP neighbor config with the neighbor-id is not already present, +create a new neighbor config. If it already exists, replace the BGP +neighbor config with this object.

+ +++ + + + + + + + + + + + + + + + + + +
Parameters: +
Return type:

com.vmware.nsx_policy.model_client.BgpNeighborConfig

+
Returns:

com.vmware.nsx_policy.model.BgpNeighborConfig

+
Raise:

com.vmware.vapi.std.errors_client.ServiceUnavailable +Service Unavailable

+
Raise:

com.vmware.vapi.std.errors_client.InvalidRequest +Bad Request, Precondition Failed

+
Raise:

com.vmware.vapi.std.errors_client.InternalServerError +Internal Server Error

+
Raise:

com.vmware.vapi.std.errors_client.Unauthorized +Forbidden

+
Raise:

com.vmware.vapi.std.errors_client.NotFound +Not Found

+
+
+ +
+
+update(provider_id, neighbor_id, bgp_neighbor_config)
+

If BGP neighbor config with the neighbor-id is not already present, +create a new neighbor config. If it already exists, replace the BGP +neighbor config with this object.

+ +++ + + + + + + + + + + + + + + + + + +
Parameters: +
Return type:

com.vmware.nsx_policy.model_client.BgpNeighborConfig

+
Returns:

com.vmware.nsx_policy.model.BgpNeighborConfig

+
Raise:

com.vmware.vapi.std.errors_client.ServiceUnavailable +Service Unavailable

+
Raise:

com.vmware.vapi.std.errors_client.InvalidRequest +Bad Request, Precondition Failed

+
Raise:

com.vmware.vapi.std.errors_client.InternalServerError +Internal Server Error

+
Raise:

com.vmware.vapi.std.errors_client.Unauthorized +Forbidden

+
Raise:

com.vmware.vapi.std.errors_client.NotFound +Not Found

+
+
+ +
+ +
+
+class com.vmware.nsx_policy.infra.providers.bgp_client.StubFactory(stub_config)
+

Bases: vmware.vapi.bindings.stub.StubFactoryBase

+
+ +
+
+

com.vmware.nsx_policy.infra.providers.l2vpn_context_client module

+
+
+class com.vmware.nsx_policy.infra.providers.l2vpn_context_client.L2vpns(config)
+

Bases: vmware.vapi.bindings.stub.VapiInterface

+
+
+delete(provider_id, l2vpn_id)
+

Delete the L2Vpn with the given id.

+ +++ + + + + + + + + + + + + + +
Parameters:
    +
  • provider_id (str) – Provider id (required)
  • +
  • l2vpn_id (str) – L2Vpn id (required)
  • +
+
Raise:

com.vmware.vapi.std.errors_client.ServiceUnavailable +Service Unavailable

+
Raise:

com.vmware.vapi.std.errors_client.InvalidRequest +Bad Request, Precondition Failed

+
Raise:

com.vmware.vapi.std.errors_client.InternalServerError +Internal Server Error

+
Raise:

com.vmware.vapi.std.errors_client.Unauthorized +Forbidden

+
Raise:

com.vmware.vapi.std.errors_client.NotFound +Not Found

+
+
+ +
+
+get(provider_id, l2vpn_id)
+

Read the L2Vpn with the given id.

+ +++ + + + + + + + + + + + + + + + + + +
Parameters:
    +
  • provider_id (str) – Provider id (required)
  • +
  • l2vpn_id (str) – L2Vpn id (required)
  • +
+
Return type:

com.vmware.nsx_policy.model_client.L2Vpn

+
Returns:

com.vmware.nsx_policy.model.L2Vpn

+
Raise:

com.vmware.vapi.std.errors_client.ServiceUnavailable +Service Unavailable

+
Raise:

com.vmware.vapi.std.errors_client.InvalidRequest +Bad Request, Precondition Failed

+
Raise:

com.vmware.vapi.std.errors_client.InternalServerError +Internal Server Error

+
Raise:

com.vmware.vapi.std.errors_client.Unauthorized +Forbidden

+
Raise:

com.vmware.vapi.std.errors_client.NotFound +Not Found

+
+
+ +
+
+list(provider_id, cursor=None, included_fields=None, page_size=None, sort_ascending=None, sort_by=None)
+

Paginated list of L2Vpns.

+ +++ + + + + + + + + + + + + + + + + + +
Parameters:
    +
  • provider_id (str) – Provider id (required)
  • +
  • cursor (str or None) – Opaque cursor to be used for getting next page of records (supplied +by current result page) (optional)
  • +
  • included_fields (str or None) – Comma separated list of fields that should be included in query +result (optional)
  • +
  • page_size (long or None) – Maximum number of results to return in this page (server may return +fewer) (optional, default to 1000)
  • +
  • sort_ascending (bool or None) – (optional)
  • +
  • sort_by (str or None) – Field by which records are sorted (optional)
  • +
+
Return type:

com.vmware.nsx_policy.model_client.L2VpnListResult

+
Returns:

com.vmware.nsx_policy.model.L2VpnListResult

+
Raise:

com.vmware.vapi.std.errors_client.ServiceUnavailable +Service Unavailable

+
Raise:

com.vmware.vapi.std.errors_client.InvalidRequest +Bad Request, Precondition Failed

+
Raise:

com.vmware.vapi.std.errors_client.InternalServerError +Internal Server Error

+
Raise:

com.vmware.vapi.std.errors_client.Unauthorized +Forbidden

+
Raise:

com.vmware.vapi.std.errors_client.NotFound +Not Found

+
+
+ +
+
+patch(provider_id, l2vpn_id, l2_vpn)
+

Create a new L2Vpn if the L2Vpn with given id does not already exist. +If the L2Vpn with the given id already exists, merge with the existing +L2Vpn. This is a patch.

+ +++ + + + + + + + + + + + + + +
Parameters: +
Raise:

com.vmware.vapi.std.errors_client.ServiceUnavailable +Service Unavailable

+
Raise:

com.vmware.vapi.std.errors_client.InvalidRequest +Bad Request, Precondition Failed

+
Raise:

com.vmware.vapi.std.errors_client.InternalServerError +Internal Server Error

+
Raise:

com.vmware.vapi.std.errors_client.Unauthorized +Forbidden

+
Raise:

com.vmware.vapi.std.errors_client.NotFound +Not Found

+
+
+ +
+
+update(provider_id, l2vpn_id, l2_vpn)
+

Create a new L2Vpn if the L2Vpn with given id does not already exist. +If the L2Vpn with the given id already exists, update the existing +L2Vpn. This is a full replace.

+ +++ + + + + + + + + + + + + + + + + + +
Parameters: +
Return type:

com.vmware.nsx_policy.model_client.L2Vpn

+
Returns:

com.vmware.nsx_policy.model.L2Vpn

+
Raise:

com.vmware.vapi.std.errors_client.ServiceUnavailable +Service Unavailable

+
Raise:

com.vmware.vapi.std.errors_client.InvalidRequest +Bad Request, Precondition Failed

+
Raise:

com.vmware.vapi.std.errors_client.InternalServerError +Internal Server Error

+
Raise:

com.vmware.vapi.std.errors_client.Unauthorized +Forbidden

+
Raise:

com.vmware.vapi.std.errors_client.NotFound +Not Found

+
+
+ +
+ +
+
+class com.vmware.nsx_policy.infra.providers.l2vpn_context_client.StubFactory(stub_config)
+

Bases: vmware.vapi.bindings.stub.StubFactoryBase

+
+ +
+
+

com.vmware.nsx_policy.infra.providers.l3vpns_client module

+
+
+class com.vmware.nsx_policy.infra.providers.l3vpns_client.Statistics(config)
+

Bases: vmware.vapi.bindings.stub.VapiInterface

+
+
+get(provider_id, l3vpn_id, enforcement_point_path=None)
+

Get statistics of an L3Vpn. - no enforcement point path specified: +Stats will be evaluated on each enforcement point. - +{enforcement_point_path}: Stats are evaluated only on the given +enforcement point.

+ +++ + + + + + + + + + + + + + + + + + +
Parameters:
    +
  • provider_id (str) – Provider id (required)
  • +
  • l3vpn_id (str) – L3Vpn id (required)
  • +
  • enforcement_point_path (str or None) – String Path of the enforcement point (optional)
  • +
+
Return type:

com.vmware.nsx_policy.model_client.AggregateL3VpnStatistics

+
Returns:

com.vmware.nsx_policy.model.AggregateL3VpnStatistics

+
Raise:

com.vmware.vapi.std.errors_client.ServiceUnavailable +Service Unavailable

+
Raise:

com.vmware.vapi.std.errors_client.InvalidRequest +Bad Request, Precondition Failed

+
Raise:

com.vmware.vapi.std.errors_client.InternalServerError +Internal Server Error

+
Raise:

com.vmware.vapi.std.errors_client.Unauthorized +Forbidden

+
Raise:

com.vmware.vapi.std.errors_client.NotFound +Not Found

+
+
+ +
+ +
+
+class com.vmware.nsx_policy.infra.providers.l3vpns_client.StubFactory(stub_config)
+

Bases: vmware.vapi.bindings.stub.StubFactoryBase

+
+ +
+
+

com.vmware.nsx_policy.infra.providers.service_instances_client module

+
+
+class com.vmware.nsx_policy.infra.providers.service_instances_client.ServiceInstanceEndpoints(config)
+

Bases: vmware.vapi.bindings.stub.VapiInterface

+
+
+delete(provider_id, service_instance_id, service_instance_endpoint_id)
+

Delete policy service instance endpoint

+ +++ + + + + + + + + + + + + + +
Parameters:
    +
  • provider_id (str) – Provider id (required)
  • +
  • service_instance_id (str) – Service instance id (required)
  • +
  • service_instance_endpoint_id (str) – Service instance endpoint id (required)
  • +
+
Raise:

com.vmware.vapi.std.errors_client.ServiceUnavailable +Service Unavailable

+
Raise:

com.vmware.vapi.std.errors_client.InvalidRequest +Bad Request, Precondition Failed

+
Raise:

com.vmware.vapi.std.errors_client.InternalServerError +Internal Server Error

+
Raise:

com.vmware.vapi.std.errors_client.Unauthorized +Forbidden

+
Raise:

com.vmware.vapi.std.errors_client.NotFound +Not Found

+
+
+ +
+
+get(provider_id, service_instance_id, service_instance_endpoint_id)
+

Read service instance endpoint

+ +++ + + + + + + + + + + + + + + + + + +
Parameters:
    +
  • provider_id (str) – Provider id (required)
  • +
  • service_instance_id (str) – Service instance id (required)
  • +
  • service_instance_endpoint_id (str) – Service instance endpoint id (required)
  • +
+
Return type:

com.vmware.nsx_policy.model_client.ServiceInstanceEndpoint

+
Returns:

com.vmware.nsx_policy.model.ServiceInstanceEndpoint

+
Raise:

com.vmware.vapi.std.errors_client.ServiceUnavailable +Service Unavailable

+
Raise:

com.vmware.vapi.std.errors_client.InvalidRequest +Bad Request, Precondition Failed

+
Raise:

com.vmware.vapi.std.errors_client.InternalServerError +Internal Server Error

+
Raise:

com.vmware.vapi.std.errors_client.Unauthorized +Forbidden

+
Raise:

com.vmware.vapi.std.errors_client.NotFound +Not Found

+
+
+ +
+
+patch(provider_id, service_instance_id, service_instance_endpoint_id, service_instance_endpoint)
+

Create Service instance endpoint.

+ +++ + + + + + + + + + + + + + +
Parameters:
    +
  • provider_id (str) – Provider id (required)
  • +
  • service_instance_id (str) – Service instance id (required)
  • +
  • service_instance_endpoint_id (str) – Service instance endpoint id (required)
  • +
  • service_instance_endpoint (com.vmware.nsx_policy.model_client.ServiceInstanceEndpoint) – (required)
  • +
+
Raise:

com.vmware.vapi.std.errors_client.ServiceUnavailable +Service Unavailable

+
Raise:

com.vmware.vapi.std.errors_client.InvalidRequest +Bad Request, Precondition Failed

+
Raise:

com.vmware.vapi.std.errors_client.InternalServerError +Internal Server Error

+
Raise:

com.vmware.vapi.std.errors_client.Unauthorized +Forbidden

+
Raise:

com.vmware.vapi.std.errors_client.NotFound +Not Found

+
+
+ +
+
+update(provider_id, service_instance_id, service_instance_endpoint_id, service_instance_endpoint)
+

Create service instance endpoint.

+ +++ + + + + + + + + + + + + + + + + + +
Parameters:
    +
  • provider_id (str) – Provider id (required)
  • +
  • service_instance_id (str) – Service instance id (required)
  • +
  • service_instance_endpoint_id (str) – Service instance endpoint id (required)
  • +
  • service_instance_endpoint (com.vmware.nsx_policy.model_client.ServiceInstanceEndpoint) – (required)
  • +
+
Return type:

com.vmware.nsx_policy.model_client.ServiceInstanceEndpoint

+
Returns:

com.vmware.nsx_policy.model.ServiceInstanceEndpoint

+
Raise:

com.vmware.vapi.std.errors_client.ServiceUnavailable +Service Unavailable

+
Raise:

com.vmware.vapi.std.errors_client.InvalidRequest +Bad Request, Precondition Failed

+
Raise:

com.vmware.vapi.std.errors_client.InternalServerError +Internal Server Error

+
Raise:

com.vmware.vapi.std.errors_client.Unauthorized +Forbidden

+
Raise:

com.vmware.vapi.std.errors_client.NotFound +Not Found

+
+
+ +
+ +
+
+class com.vmware.nsx_policy.infra.providers.service_instances_client.StubFactory(stub_config)
+

Bases: vmware.vapi.bindings.stub.StubFactoryBase

+
+ +
+
+ + +
+ +
+ + +
+
+ +
+ +
+ + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/nsx/nsx_policy/com.vmware.nsx_policy.infra.providers.l2vpn_context.html b/nsx/nsx_policy/com.vmware.nsx_policy.infra.providers.l2vpn_context.html new file mode 100644 index 00000000..4ced8628 --- /dev/null +++ b/nsx/nsx_policy/com.vmware.nsx_policy.infra.providers.l2vpn_context.html @@ -0,0 +1,368 @@ + + + + + + + + + + + com.vmware.nsx_policy.infra.providers.l2vpn_context package — NSX-T Policy SDK 2.2.0.0.0 documentation + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + + + +
+ + + + + +
+ +
+ + + + + + + + + + + + + + + + + +
+ + + + +
+
+
+
+ +
+

com.vmware.nsx_policy.infra.providers.l2vpn_context package

+
+

Submodules

+
+
+

com.vmware.nsx_policy.infra.providers.l2vpn_context.l2vpns_client module

+
+
+class com.vmware.nsx_policy.infra.providers.l2vpn_context.l2vpns_client.PeerConfig(config)
+

Bases: vmware.vapi.bindings.stub.VapiInterface

+
+
+get(provider_id, l2vpn_id, enforcement_point_path=None)
+

Get peer config for the L2Vpn to configure the remote side of the +tunnel. - no enforcement point path specified: L2Vpn Peer Codes will be +evaluated on each enforcement point. - {enforcement_point_path}: L2Vpn +Peer Codes are evaluated only on the given enforcement point.

+ +++ + + + + + + + + + + + + + + + + + +
Parameters:
    +
  • provider_id (str) – Provider id (required)
  • +
  • l2vpn_id (str) – L2Vpn id (required)
  • +
  • enforcement_point_path (str or None) – String Path of the enforcement point (optional)
  • +
+
Return type:

com.vmware.nsx_policy.model_client.AggregateL2VpnPeerConfig

+
Returns:

com.vmware.nsx_policy.model.AggregateL2VpnPeerConfig

+
Raise:

com.vmware.vapi.std.errors_client.ServiceUnavailable +Service Unavailable

+
Raise:

com.vmware.vapi.std.errors_client.InvalidRequest +Bad Request, Precondition Failed

+
Raise:

com.vmware.vapi.std.errors_client.InternalServerError +Internal Server Error

+
Raise:

com.vmware.vapi.std.errors_client.Unauthorized +Forbidden

+
Raise:

com.vmware.vapi.std.errors_client.NotFound +Not Found

+
+
+ +
+ +
+
+class com.vmware.nsx_policy.infra.providers.l2vpn_context.l2vpns_client.Statistics(config)
+

Bases: vmware.vapi.bindings.stub.VapiInterface

+
+
+get(provider_id, l2vpn_id, enforcement_point_path=None)
+

Get statistics of an L2Vpn. - no enforcement point path specified: +Stats will be evaluated on each enforcement point. - +{enforcement_point_path}: Stats are evaluated only on the given +enforcement point.

+ +++ + + + + + + + + + + + + + + + + + +
Parameters:
    +
  • provider_id (str) – Provider id (required)
  • +
  • l2vpn_id (str) – L2Vpn id (required)
  • +
  • enforcement_point_path (str or None) – String Path of the enforcement point (optional)
  • +
+
Return type:

com.vmware.nsx_policy.model_client.AggregateL2VpnStatistics

+
Returns:

com.vmware.nsx_policy.model.AggregateL2VpnStatistics

+
Raise:

com.vmware.vapi.std.errors_client.ServiceUnavailable +Service Unavailable

+
Raise:

com.vmware.vapi.std.errors_client.InvalidRequest +Bad Request, Precondition Failed

+
Raise:

com.vmware.vapi.std.errors_client.InternalServerError +Internal Server Error

+
Raise:

com.vmware.vapi.std.errors_client.Unauthorized +Forbidden

+
Raise:

com.vmware.vapi.std.errors_client.NotFound +Not Found

+
+
+ +
+ +
+
+class com.vmware.nsx_policy.infra.providers.l2vpn_context.l2vpns_client.StubFactory(stub_config)
+

Bases: vmware.vapi.bindings.stub.StubFactoryBase

+
+ +
+
+ + +
+ +
+ + +
+
+ +
+ +
+ + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/nsx/nsx_policy/com.vmware.nsx_policy.infra.realized_state.enforcement_points.html b/nsx/nsx_policy/com.vmware.nsx_policy.infra.realized_state.enforcement_points.html new file mode 100644 index 00000000..59c48756 --- /dev/null +++ b/nsx/nsx_policy/com.vmware.nsx_policy.infra.realized_state.enforcement_points.html @@ -0,0 +1,918 @@ + + + + + + + + + + + com.vmware.nsx_policy.infra.realized_state.enforcement_points package — NSX-T Policy SDK 2.2.0.0.0 documentation + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + + + +
+ + + + + +
+ +
+ + + + + + + + + + + + + + + + + +
+ + + + +
+
+
+
+ +
+

com.vmware.nsx_policy.infra.realized_state.enforcement_points package

+ +
+

Submodules

+
+
+

com.vmware.nsx_policy.infra.realized_state.enforcement_points.firewalls_client module

+
+
+class com.vmware.nsx_policy.infra.realized_state.enforcement_points.firewalls_client.FirewallSections(config)
+

Bases: vmware.vapi.bindings.stub.VapiInterface

+
+
+get(enforcement_point_name, firewall_section_id)
+

Read a Firewall and the complete tree underneath. Returns the populated +Firewall object.

+ +++ + + + + + + + + + + + + + + + + + +
Parameters:
    +
  • enforcement_point_name (str) – Enforcement Point Name (required)
  • +
  • firewall_section_id (str) – Firewall Section Id (required)
  • +
+
Return type:

com.vmware.nsx_policy.model_client.RealizedFirewallSection

+
Returns:

com.vmware.nsx_policy.model.RealizedFirewallSection

+
Raise:

com.vmware.vapi.std.errors_client.ServiceUnavailable +Service Unavailable

+
Raise:

com.vmware.vapi.std.errors_client.InvalidRequest +Bad Request, Precondition Failed

+
Raise:

com.vmware.vapi.std.errors_client.InternalServerError +Internal Server Error

+
Raise:

com.vmware.vapi.std.errors_client.Unauthorized +Forbidden

+
Raise:

com.vmware.vapi.std.errors_client.NotFound +Not Found

+
+
+ +
+
+list(enforcement_point_name, cursor=None, included_fields=None, page_size=None, sort_ascending=None, sort_by=None)
+

Paginated list of all Firewalls. Returns populated Firewalls.

+ +++ + + + + + + + + + + + + + + + + + +
Parameters:
    +
  • enforcement_point_name (str) – Enforcement Point Name (required)
  • +
  • cursor (str or None) – Opaque cursor to be used for getting next page of records (supplied +by current result page) (optional)
  • +
  • included_fields (str or None) – Comma separated list of fields that should be included in query +result (optional)
  • +
  • page_size (long or None) – Maximum number of results to return in this page (server may return +fewer) (optional, default to 1000)
  • +
  • sort_ascending (bool or None) – (optional)
  • +
  • sort_by (str or None) – Field by which records are sorted (optional)
  • +
+
Return type:

com.vmware.nsx_policy.model_client.RealizedFirewallSectionListResult

+
Returns:

com.vmware.nsx_policy.model.RealizedFirewallSectionListResult

+
Raise:

com.vmware.vapi.std.errors_client.ServiceUnavailable +Service Unavailable

+
Raise:

com.vmware.vapi.std.errors_client.InvalidRequest +Bad Request, Precondition Failed

+
Raise:

com.vmware.vapi.std.errors_client.InternalServerError +Internal Server Error

+
Raise:

com.vmware.vapi.std.errors_client.Unauthorized +Forbidden

+
Raise:

com.vmware.vapi.std.errors_client.NotFound +Not Found

+
+
+ +
+ +
+
+class com.vmware.nsx_policy.infra.realized_state.enforcement_points.firewalls_client.StubFactory(stub_config)
+

Bases: vmware.vapi.bindings.stub.StubFactoryBase

+
+ +
+
+

com.vmware.nsx_policy.infra.realized_state.enforcement_points.groups_client module

+
+
+class com.vmware.nsx_policy.infra.realized_state.enforcement_points.groups_client.Nsgroups(config)
+

Bases: vmware.vapi.bindings.stub.VapiInterface

+
+
+get(enforcement_point_name, nsgroup_name)
+

Read a NSGroup and the complete tree underneath. Returns the populated +NSgroup object.

+ +++ + + + + + + + + + + + + + + + + + +
Parameters:
    +
  • enforcement_point_name (str) – Enforcement Point Name (required)
  • +
  • nsgroup_name (str) – Group Name (required)
  • +
+
Return type:

com.vmware.nsx_policy.model_client.GenericPolicyRealizedResource

+
Returns:

com.vmware.nsx_policy.model.GenericPolicyRealizedResource

+
Raise:

com.vmware.vapi.std.errors_client.ServiceUnavailable +Service Unavailable

+
Raise:

com.vmware.vapi.std.errors_client.InvalidRequest +Bad Request, Precondition Failed

+
Raise:

com.vmware.vapi.std.errors_client.InternalServerError +Internal Server Error

+
Raise:

com.vmware.vapi.std.errors_client.Unauthorized +Forbidden

+
Raise:

com.vmware.vapi.std.errors_client.NotFound +Not Found

+
+
+ +
+
+list(enforcement_point_name, cursor=None, included_fields=None, page_size=None, sort_ascending=None, sort_by=None)
+

Paginated list of all NSGroups. Returns populated NSGroups.

+ +++ + + + + + + + + + + + + + + + + + +
Parameters:
    +
  • enforcement_point_name (str) – Enforcement Point Name (required)
  • +
  • cursor (str or None) – Opaque cursor to be used for getting next page of records (supplied +by current result page) (optional)
  • +
  • included_fields (str or None) – Comma separated list of fields that should be included in query +result (optional)
  • +
  • page_size (long or None) – Maximum number of results to return in this page (server may return +fewer) (optional, default to 1000)
  • +
  • sort_ascending (bool or None) – (optional)
  • +
  • sort_by (str or None) – Field by which records are sorted (optional)
  • +
+
Return type:

com.vmware.nsx_policy.model_client.GenericPolicyRealizedResourceListResult

+
Returns:

com.vmware.nsx_policy.model.GenericPolicyRealizedResourceListResult

+
Raise:

com.vmware.vapi.std.errors_client.ServiceUnavailable +Service Unavailable

+
Raise:

com.vmware.vapi.std.errors_client.InvalidRequest +Bad Request, Precondition Failed

+
Raise:

com.vmware.vapi.std.errors_client.InternalServerError +Internal Server Error

+
Raise:

com.vmware.vapi.std.errors_client.Unauthorized +Forbidden

+
Raise:

com.vmware.vapi.std.errors_client.NotFound +Not Found

+
+
+ +
+ +
+
+class com.vmware.nsx_policy.infra.realized_state.enforcement_points.groups_client.Securitygroups(config)
+

Bases: vmware.vapi.bindings.stub.VapiInterface

+
+
+get(enforcement_point_name, securitygroup_name)
+

Read a Security Group and the complete tree underneath. Returns the +populated Security Group object.

+ +++ + + + + + + + + + + + + + + + + + +
Parameters:
    +
  • enforcement_point_name (str) – Enforcement Point Name (required)
  • +
  • securitygroup_name (str) – Group Name (required)
  • +
+
Return type:

com.vmware.nsx_policy.model_client.RealizedSecurityGroup

+
Returns:

com.vmware.nsx_policy.model.RealizedSecurityGroup

+
Raise:

com.vmware.vapi.std.errors_client.ServiceUnavailable +Service Unavailable

+
Raise:

com.vmware.vapi.std.errors_client.InvalidRequest +Bad Request, Precondition Failed

+
Raise:

com.vmware.vapi.std.errors_client.InternalServerError +Internal Server Error

+
Raise:

com.vmware.vapi.std.errors_client.Unauthorized +Forbidden

+
Raise:

com.vmware.vapi.std.errors_client.NotFound +Not Found

+
+
+ +
+
+list(enforcement_point_name, cursor=None, included_fields=None, page_size=None, sort_ascending=None, sort_by=None)
+

Paginated list of all Security Groups. Returns populated Security +Groups.

+ +++ + + + + + + + + + + + + + + + + + +
Parameters:
    +
  • enforcement_point_name (str) – Enforcement Point Name (required)
  • +
  • cursor (str or None) – Opaque cursor to be used for getting next page of records (supplied +by current result page) (optional)
  • +
  • included_fields (str or None) – Comma separated list of fields that should be included in query +result (optional)
  • +
  • page_size (long or None) – Maximum number of results to return in this page (server may return +fewer) (optional, default to 1000)
  • +
  • sort_ascending (bool or None) – (optional)
  • +
  • sort_by (str or None) – Field by which records are sorted (optional)
  • +
+
Return type:

com.vmware.nsx_policy.model_client.RealizedSecurityGroupListResult

+
Returns:

com.vmware.nsx_policy.model.RealizedSecurityGroupListResult

+
Raise:

com.vmware.vapi.std.errors_client.ServiceUnavailable +Service Unavailable

+
Raise:

com.vmware.vapi.std.errors_client.InvalidRequest +Bad Request, Precondition Failed

+
Raise:

com.vmware.vapi.std.errors_client.InternalServerError +Internal Server Error

+
Raise:

com.vmware.vapi.std.errors_client.Unauthorized +Forbidden

+
Raise:

com.vmware.vapi.std.errors_client.NotFound +Not Found

+
+
+ +
+ +
+
+class com.vmware.nsx_policy.infra.realized_state.enforcement_points.groups_client.StubFactory(stub_config)
+

Bases: vmware.vapi.bindings.stub.StubFactoryBase

+
+ +
+
+

com.vmware.nsx_policy.infra.realized_state.enforcement_points.ip_sets_client module

+
+
+class com.vmware.nsx_policy.infra.realized_state.enforcement_points.ip_sets_client.IpSetsNsxt(config)
+

Bases: vmware.vapi.bindings.stub.VapiInterface

+
+
+get(enforcement_point_name, ip_set_name)
+

Read an IPSet

+ +++ + + + + + + + + + + + + + + + + + +
Parameters:
    +
  • enforcement_point_name (str) – Enforcement Point Name (required)
  • +
  • ip_set_name (str) – IPSet name (required)
  • +
+
Return type:

com.vmware.nsx_policy.model_client.GenericPolicyRealizedResource

+
Returns:

com.vmware.nsx_policy.model.GenericPolicyRealizedResource

+
Raise:

com.vmware.vapi.std.errors_client.ServiceUnavailable +Service Unavailable

+
Raise:

com.vmware.vapi.std.errors_client.InvalidRequest +Bad Request, Precondition Failed

+
Raise:

com.vmware.vapi.std.errors_client.InternalServerError +Internal Server Error

+
Raise:

com.vmware.vapi.std.errors_client.Unauthorized +Forbidden

+
Raise:

com.vmware.vapi.std.errors_client.NotFound +Not Found

+
+
+ +
+
+list(enforcement_point_name, cursor=None, included_fields=None, page_size=None, sort_ascending=None, sort_by=None)
+

Paginated list of all Realized IPSets

+ +++ + + + + + + + + + + + + + + + + + +
Parameters:
    +
  • enforcement_point_name (str) – Enforcement Point Name (required)
  • +
  • cursor (str or None) – Opaque cursor to be used for getting next page of records (supplied +by current result page) (optional)
  • +
  • included_fields (str or None) – Comma separated list of fields that should be included in query +result (optional)
  • +
  • page_size (long or None) – Maximum number of results to return in this page (server may return +fewer) (optional, default to 1000)
  • +
  • sort_ascending (bool or None) – (optional)
  • +
  • sort_by (str or None) – Field by which records are sorted (optional)
  • +
+
Return type:

com.vmware.nsx_policy.model_client.GenericPolicyRealizedResourceListResult

+
Returns:

com.vmware.nsx_policy.model.GenericPolicyRealizedResourceListResult

+
Raise:

com.vmware.vapi.std.errors_client.ServiceUnavailable +Service Unavailable

+
Raise:

com.vmware.vapi.std.errors_client.InvalidRequest +Bad Request, Precondition Failed

+
Raise:

com.vmware.vapi.std.errors_client.InternalServerError +Internal Server Error

+
Raise:

com.vmware.vapi.std.errors_client.Unauthorized +Forbidden

+
Raise:

com.vmware.vapi.std.errors_client.NotFound +Not Found

+
+
+ +
+ +
+
+class com.vmware.nsx_policy.infra.realized_state.enforcement_points.ip_sets_client.StubFactory(stub_config)
+

Bases: vmware.vapi.bindings.stub.StubFactoryBase

+
+ +
+
+

com.vmware.nsx_policy.infra.realized_state.enforcement_points.mac_sets_client module

+
+
+class com.vmware.nsx_policy.infra.realized_state.enforcement_points.mac_sets_client.MacSetsNsxt(config)
+

Bases: vmware.vapi.bindings.stub.VapiInterface

+
+
+get(enforcement_point_name, mac_set_name)
+

Read an MACSet

+ +++ + + + + + + + + + + + + + + + + + +
Parameters:
    +
  • enforcement_point_name (str) – Enforcement Point Name (required)
  • +
  • mac_set_name (str) – MACSet name (required)
  • +
+
Return type:

com.vmware.nsx_policy.model_client.GenericPolicyRealizedResource

+
Returns:

com.vmware.nsx_policy.model.GenericPolicyRealizedResource

+
Raise:

com.vmware.vapi.std.errors_client.ServiceUnavailable +Service Unavailable

+
Raise:

com.vmware.vapi.std.errors_client.InvalidRequest +Bad Request, Precondition Failed

+
Raise:

com.vmware.vapi.std.errors_client.InternalServerError +Internal Server Error

+
Raise:

com.vmware.vapi.std.errors_client.Unauthorized +Forbidden

+
Raise:

com.vmware.vapi.std.errors_client.NotFound +Not Found

+
+
+ +
+
+list(enforcement_point_name, cursor=None, included_fields=None, page_size=None, sort_ascending=None, sort_by=None)
+

Paginated list of all Realized MACSets

+ +++ + + + + + + + + + + + + + + + + + +
Parameters:
    +
  • enforcement_point_name (str) – Enforcement Point Name (required)
  • +
  • cursor (str or None) – Opaque cursor to be used for getting next page of records (supplied +by current result page) (optional)
  • +
  • included_fields (str or None) – Comma separated list of fields that should be included in query +result (optional)
  • +
  • page_size (long or None) – Maximum number of results to return in this page (server may return +fewer) (optional, default to 1000)
  • +
  • sort_ascending (bool or None) – (optional)
  • +
  • sort_by (str or None) – Field by which records are sorted (optional)
  • +
+
Return type:

com.vmware.nsx_policy.model_client.GenericPolicyRealizedResourceListResult

+
Returns:

com.vmware.nsx_policy.model.GenericPolicyRealizedResourceListResult

+
Raise:

com.vmware.vapi.std.errors_client.ServiceUnavailable +Service Unavailable

+
Raise:

com.vmware.vapi.std.errors_client.InvalidRequest +Bad Request, Precondition Failed

+
Raise:

com.vmware.vapi.std.errors_client.InternalServerError +Internal Server Error

+
Raise:

com.vmware.vapi.std.errors_client.Unauthorized +Forbidden

+
Raise:

com.vmware.vapi.std.errors_client.NotFound +Not Found

+
+
+ +
+ +
+
+class com.vmware.nsx_policy.infra.realized_state.enforcement_points.mac_sets_client.StubFactory(stub_config)
+

Bases: vmware.vapi.bindings.stub.StubFactoryBase

+
+ +
+
+

com.vmware.nsx_policy.infra.realized_state.enforcement_points.services_client module

+
+
+class com.vmware.nsx_policy.infra.realized_state.enforcement_points.services_client.Nsservices(config)
+

Bases: vmware.vapi.bindings.stub.VapiInterface

+
+
+get(enforcement_point_name, nsservice_name)
+

Read a NSService.

+ +++ + + + + + + + + + + + + + + + + + +
Parameters:
    +
  • enforcement_point_name (str) – Enforcement Point Name (required)
  • +
  • nsservice_name (str) – NSService Name (required)
  • +
+
Return type:

com.vmware.nsx_policy.model_client.GenericPolicyRealizedResource

+
Returns:

com.vmware.nsx_policy.model.GenericPolicyRealizedResource

+
Raise:

com.vmware.vapi.std.errors_client.ServiceUnavailable +Service Unavailable

+
Raise:

com.vmware.vapi.std.errors_client.InvalidRequest +Bad Request, Precondition Failed

+
Raise:

com.vmware.vapi.std.errors_client.InternalServerError +Internal Server Error

+
Raise:

com.vmware.vapi.std.errors_client.Unauthorized +Forbidden

+
Raise:

com.vmware.vapi.std.errors_client.NotFound +Not Found

+
+
+ +
+
+list(enforcement_point_name, cursor=None, included_fields=None, page_size=None, sort_ascending=None, sort_by=None)
+

Paginated list of all Realized NSService.

+ +++ + + + + + + + + + + + + + + + + + +
Parameters:
    +
  • enforcement_point_name (str) – Enforcement Point Name (required)
  • +
  • cursor (str or None) – Opaque cursor to be used for getting next page of records (supplied +by current result page) (optional)
  • +
  • included_fields (str or None) – Comma separated list of fields that should be included in query +result (optional)
  • +
  • page_size (long or None) – Maximum number of results to return in this page (server may return +fewer) (optional, default to 1000)
  • +
  • sort_ascending (bool or None) – (optional)
  • +
  • sort_by (str or None) – Field by which records are sorted (optional)
  • +
+
Return type:

com.vmware.nsx_policy.model_client.GenericPolicyRealizedResourceListResult

+
Returns:

com.vmware.nsx_policy.model.GenericPolicyRealizedResourceListResult

+
Raise:

com.vmware.vapi.std.errors_client.ServiceUnavailable +Service Unavailable

+
Raise:

com.vmware.vapi.std.errors_client.InvalidRequest +Bad Request, Precondition Failed

+
Raise:

com.vmware.vapi.std.errors_client.InternalServerError +Internal Server Error

+
Raise:

com.vmware.vapi.std.errors_client.Unauthorized +Forbidden

+
Raise:

com.vmware.vapi.std.errors_client.NotFound +Not Found

+
+
+ +
+ +
+
+class com.vmware.nsx_policy.infra.realized_state.enforcement_points.services_client.StubFactory(stub_config)
+

Bases: vmware.vapi.bindings.stub.StubFactoryBase

+
+ +
+
+ + +
+ +
+ + +
+
+ +
+ +
+ + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/nsx/nsx_policy/com.vmware.nsx_policy.infra.realized_state.enforcement_points.ops.html b/nsx/nsx_policy/com.vmware.nsx_policy.infra.realized_state.enforcement_points.ops.html new file mode 100644 index 00000000..cec75e20 --- /dev/null +++ b/nsx/nsx_policy/com.vmware.nsx_policy.infra.realized_state.enforcement_points.ops.html @@ -0,0 +1,341 @@ + + + + + + + + + + + com.vmware.nsx_policy.infra.realized_state.enforcement_points.ops package — NSX-T Policy SDK 2.2.0.0.0 documentation + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + + + +
+ + + + + +
+ +
+ + + + + + + + + + + + + + + + + +
+ + + + +
+
+
+
+ +
+

com.vmware.nsx_policy.infra.realized_state.enforcement_points.ops package

+
+

Submodules

+
+
+

com.vmware.nsx_policy.infra.realized_state.enforcement_points.ops.domains_client module

+
+
+class com.vmware.nsx_policy.infra.realized_state.enforcement_points.ops.domains_client.DiscoverySessions(config)
+

Bases: vmware.vapi.bindings.stub.VapiInterface

+
+
+GET_VIEW_GROUP_CONNECTION = 'GROUP_CONNECTION'
+

Possible value for view of method DiscoverySessions.get().

+
+ +
+
+GET_VIEW_NETWORK_CONNECTION = 'NETWORK_CONNECTION'
+

Possible value for view of method DiscoverySessions.get().

+
+ +
+
+GET_VIEW_PROCESS_CONNECTION = 'PROCESS_CONNECTION'
+

Possible value for view of method DiscoverySessions.get().

+
+ +
+
+GET_VIEW_VM_CONNECTION = 'VM_CONNECTION'
+

Possible value for view of method DiscoverySessions.get().

+
+ +
+
+get(enforcement_point_id, domain_id, discovery_session_id, view=None)
+

Read discovered information for a selected domain/application on +selected enforcement point. Response contains topology information +based on the view option specified in the query parameter. An error is +returned if an unknown view option is specified in the query parameter. +The topology information will not be populated if the discovery session +status is in STARTED, IN-PROGRESS or FAILED state.

+ +++ + + + + + + + + + + + + + + + + + +
Parameters:
    +
  • enforcement_point_id (str) – Enforcement point ID (required)
  • +
  • domain_id (str) – Domain ID (required)
  • +
  • discovery_session_id (str) – Discovery session ID is Domain ID of the domain where discovery +session was started (required)
  • +
  • view (str or None) – Option to specify specific view (optional)
  • +
+
Return type:

com.vmware.nsx_policy.model_client.RealizedDiscoverySession

+
Returns:

com.vmware.nsx_policy.model.RealizedDiscoverySession

+
Raise:

com.vmware.vapi.std.errors_client.ServiceUnavailable +Service Unavailable

+
Raise:

com.vmware.vapi.std.errors_client.InvalidRequest +Bad Request, Precondition Failed

+
Raise:

com.vmware.vapi.std.errors_client.InternalServerError +Internal Server Error

+
Raise:

com.vmware.vapi.std.errors_client.Unauthorized +Forbidden

+
Raise:

com.vmware.vapi.std.errors_client.NotFound +Not Found

+
+
+ +
+ +
+
+class com.vmware.nsx_policy.infra.realized_state.enforcement_points.ops.domains_client.StubFactory(stub_config)
+

Bases: vmware.vapi.bindings.stub.StubFactoryBase

+
+ +
+
+ + +
+ +
+ + +
+
+ +
+ +
+ + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/nsx/nsx_policy/com.vmware.nsx_policy.infra.realized_state.html b/nsx/nsx_policy/com.vmware.nsx_policy.infra.realized_state.html new file mode 100644 index 00000000..589cde4a --- /dev/null +++ b/nsx/nsx_policy/com.vmware.nsx_policy.infra.realized_state.html @@ -0,0 +1,389 @@ + + + + + + + + + + + com.vmware.nsx_policy.infra.realized_state package — NSX-T Policy SDK 2.2.0.0.0 documentation + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + + + +
+ + + + + +
+ +
+ + + + + + + + + + + + + + + + + +
+ + + + +
+
+
+
+ +
+

com.vmware.nsx_policy.infra.realized_state package

+ +
+

Submodules

+
+
+

com.vmware.nsx_policy.infra.realized_state.enforcement_points_client module

+
+
+class com.vmware.nsx_policy.infra.realized_state.enforcement_points_client.StubFactory(stub_config)
+

Bases: vmware.vapi.bindings.stub.StubFactoryBase

+
+ +
+
+class com.vmware.nsx_policy.infra.realized_state.enforcement_points_client.VirtualMachines(config)
+

Bases: vmware.vapi.bindings.stub.VapiInterface

+
+
+list(enforcement_point_name, cursor=None, dsl=None, included_fields=None, page_size=None, query=None, sort_ascending=None, sort_by=None)
+

This API filters objects of type virtual machines from the specified +NSX Manager.

+ +++ + + + + + + + + + + + + + + + + + +
Parameters:
    +
  • enforcement_point_name (str) – (required)
  • +
  • cursor (str or None) – Opaque cursor to be used for getting next page of records (supplied +by current result page) (optional)
  • +
  • dsl (str or None) – Search DSL (domain specific language) query (optional)
  • +
  • included_fields (str or None) – Comma separated list of fields that should be included in query +result (optional)
  • +
  • page_size (long or None) – Maximum number of results to return in this page (server may return +fewer) (optional, default to 1000)
  • +
  • query (str or None) – Search query (optional)
  • +
  • sort_ascending (bool or None) – (optional)
  • +
  • sort_by (str or None) – Field by which records are sorted (optional)
  • +
+
Return type:

com.vmware.nsx_policy.model_client.SearchResponse

+
Returns:

com.vmware.nsx_policy.model.SearchResponse

+
Raise:

com.vmware.vapi.std.errors_client.ServiceUnavailable +Service Unavailable

+
Raise:

com.vmware.vapi.std.errors_client.InvalidRequest +Bad Request, Precondition Failed

+
Raise:

com.vmware.vapi.std.errors_client.InternalServerError +Internal Server Error

+
Raise:

com.vmware.vapi.std.errors_client.Unauthorized +Forbidden

+
Raise:

com.vmware.vapi.std.errors_client.NotFound +Not Found

+
+
+ +
+
+updatetags(enforcement_point_name, virtual_machine_tags_update)
+

Allows an admin to apply multiple tags to a virtual machine. This +operation does not store the intent on the policy side. It applies the +tag directly on the specified enforcement point. This operation will +replace the existing tags on the virtual machine with the ones that +have been passed. If the application of tag fails on the enforcement +point, then an error is reported. The admin will have to retry the +operation again. Policy framework does not perform a retry. Failure +could occur due to multiple reasons. For e.g enforcement point is down, +Enforcement point could not apply the tag due to constraints like max +tags limit exceeded, etc.

+ +++ + + + + + + + + + + + + + +
Parameters: +
Raise:

com.vmware.vapi.std.errors_client.ServiceUnavailable +Service Unavailable

+
Raise:

com.vmware.vapi.std.errors_client.InvalidRequest +Bad Request, Precondition Failed

+
Raise:

com.vmware.vapi.std.errors_client.InternalServerError +Internal Server Error

+
Raise:

com.vmware.vapi.std.errors_client.Unauthorized +Forbidden

+
Raise:

com.vmware.vapi.std.errors_client.NotFound +Not Found

+
+
+ +
+ +
+
+ + +
+ +
+ + +
+
+ +
+ +
+ + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/nsx/nsx_policy/enumeration.html b/nsx/nsx_policy/enumeration.html new file mode 100644 index 00000000..25237a3a --- /dev/null +++ b/nsx/nsx_policy/enumeration.html @@ -0,0 +1,292 @@ + + + + + + + + + + + Interface definition language to python mapping for enumerated types — NSX-T Policy SDK 2.2.0.0.0 documentation + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + + + +
+ + + + + +
+ +
+ + + + + + + + + + + + + + + + + +
+ +
    + +
  • Docs »
  • + +
  • Interface definition language to python mapping for enumerated types
  • + + +
  • + + + View page source + + +
  • + +
+ + +
+
+
+
+ +
+

Interface definition language to python mapping for enumerated types

+

The interface language definition type system includes enumerated types. Python +SDK supports both 2.x and 3.x versions of Python. Since Python 2.x does +not have first class support for enumerations, special classes are +generated to represent enumerated types from the interface definition +language. The special class contains class attributes which represent +the values of the enumerated type.

+

This documentation explains the following:

+
    +
  • How the class variables are defined in the module. This specifies the names that you can use in your program.
  • +
  • How you instantiate a class to use it for communication with future versions of the service.
  • +
+
+

Example of an enumerated type documentation

+
+
class com.vmware.vapi.metadata_client. SourceType (string)
+

Bases: vmware.vapi.bindings.enum.Enum

+

Metadata source type

+
+

Note

+

This class represents an enumerated type in the interface language definition type system. The class contains class attributes which represent the values in the current version of the enumerated type. Newer versions of the enumerated type may contain new values. To use new values of the enumerated type in communication with a server that supports a newer version of the API, you instantiate this class. See enumerated type description page.

+
+

Parameters : string (str) – String value for the SourceType instance.

+
+
FILE = SourceType(string=’FILE’)
+
If the source is backed by a file.
+
REMOTE = SourceType(string=’REMOTE’)
+
If the source is backed by a remote service.
+
+
+
+
+
+

Code Examples

+

The enumerated type classes are defined in python modules that your code +imports. You can use these in your code.

+
    +
  1. If you want to pass an enumerated type value in a method to a server, specify the class variable of the enumerated type class.
  2. +
+
# SourceType is an enumerated type
+from com.vmware.vapi.metadata_client import SourceType
+
+# SourceType has two class attrites, SourceType.FILE and SourceType.REMOTE
+spec = Source.CreateSpec(type=SourceType.FILE, filepath='entity_metadata.json', description='Entity service')
+source_svc.create(id='entity', spec=spec)
+
+
+
    +
  1. When you receive an enumerated type value in the response from a server, allow for unknown enumerated type values.
  2. +
+
# SourceType is an enumerated type
+from com.vmware.vapi.metadata_client import SourceType
+
+source_info = source_svc.get(id='entity')
+if (source_info.type == SourceType.FILE) {
+    print 'Source is a file'
+} else if (source_info.type == SourceType.REMOTE) {
+    print 'Source is a remote provider'
+} else {
+    print 'Unknown source type: %s' % str(source_info.type)
+}
+
+
+
    +
  1. Sending a new enumerated type value to a server that has a newer version of the enumerated type.
  2. +
+

To use new values of the enumerated type in communication with a server that supports a newer version of the API, you instantiate the +enumerated type class.

+
# If a newer version of SourceType has a new value FOLDER, FOLDER would be one
+# of the class attributes for SourceType. In the older version, SourceType has
+# only two class attributes, FILE and REMOTE
+from com.vmware.vapi.metadata_client import SourceType
+spec = Source.CreateSpec(type=SourceType('FOLDER'), filepath='entity_metadata', description='Entity service')
+source_svc.create(id='entity', spec=spec)
+
+
+
+
+ + +
+ +
+ + +
+
+ +
+ +
+ + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/nsx/nsx_policy/genindex.html b/nsx/nsx_policy/genindex.html new file mode 100644 index 00000000..9d48f81f --- /dev/null +++ b/nsx/nsx_policy/genindex.html @@ -0,0 +1,7421 @@ + + + + + + + + + + + + Index — NSX-T Policy SDK 2.2.0.0.0 documentation + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + + + +
+ + + + + +
+ +
+ + + + + + + + + + + + + + + + + +
+ +
    + +
  • Docs »
  • + +
  • Index
  • + + +
  • + + + +
  • + +
+ + +
+
+
+
+ + +

Index

+ +
+ A + | B + | C + | D + | E + | F + | G + | H + | I + | K + | L + | M + | N + | O + | P + | Q + | R + | S + | T + | U + | V + | W + | X + +
+

A

+ + + +
+ +

B

+ + + +
+ +

C

+ + + +
+ +

D

+ + + +
+ +

E

+ + + +
+ +

F

+ + + +
+ +

G

+ + + +
+ +

H

+ + + +
+ +

I

+ + + +
+ +

K

+ + + +
+ +

L

+ + + +
+ +

M

+ + + +
+ +

N

+ + + +
+ +

O

+ + + +
+ +

P

+ + + +
+ +

Q

+ + + +
+ +

R

+ + + +
+ +

S

+ + + +
+ +

T

+ + + +
+ +

U

+ + + +
+ +

V

+ + + +
+ +

W

+ + + +
+ +

X

+ + + +
+ + + +
+ +
+ + +
+
+ +
+ +
+ + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/nsx/nsx_policy/index.html b/nsx/nsx_policy/index.html new file mode 100644 index 00000000..179fcf91 --- /dev/null +++ b/nsx/nsx_policy/index.html @@ -0,0 +1,325 @@ + + + + + + + + + + + Welcome to NSX-T Policy SDK’s documentation! — NSX-T Policy SDK 2.2.0.0.0 documentation + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + + + +
+ + + + + +
+ +
+ + + + + + + + + + + + + + + + + +
+ + + + +
+
+
+
+ +
+

Welcome to NSX-T Policy SDK’s documentation!

+
+

Contents:

+ +
+
+
+

Indices and tables

+ +
+ + +
+ +
+ + +
+
+ +
+ +
+ + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/nsx/nsx_policy/objects.inv b/nsx/nsx_policy/objects.inv new file mode 100644 index 00000000..5bbdde1f Binary files /dev/null and b/nsx/nsx_policy/objects.inv differ diff --git a/nsx/nsx_policy/py-modindex.html b/nsx/nsx_policy/py-modindex.html new file mode 100644 index 00000000..981ffa29 --- /dev/null +++ b/nsx/nsx_policy/py-modindex.html @@ -0,0 +1,505 @@ + + + + + + + + + + + Python Module Index — NSX-T Policy SDK 2.2.0.0.0 documentation + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + + + +
+ + + + + +
+ +
+ + + + + + + + + + + + + + + + + +
+ +
    + +
  • Docs »
  • + +
  • Python Module Index
  • + + +
  • + +
  • + +
+ + +
+
+
+
+ + +

Python Module Index

+ +
+ c +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
 
+ c
+ com +
    + com.vmware +
    + com.vmware.nsx_policy +
    + com.vmware.nsx_policy.aaa +
    + com.vmware.nsx_policy.aaa.vidm_client +
    + com.vmware.nsx_policy.aaa_client +
    + com.vmware.nsx_policy.cluster +
    + com.vmware.nsx_policy.cluster.backups_client +
    + com.vmware.nsx_policy.cluster.nodes_client +
    + com.vmware.nsx_policy.cluster.restore_client +
    + com.vmware.nsx_policy.cluster_client +
    + com.vmware.nsx_policy.configs_client +
    + com.vmware.nsx_policy.enforcement_points_client +
    + com.vmware.nsx_policy.eula_client +
    + com.vmware.nsx_policy.infra +
    + com.vmware.nsx_policy.infra.deployment_zones_client +
    + com.vmware.nsx_policy.infra.domains +
    + com.vmware.nsx_policy.infra.domains.communication_maps_client +
    + com.vmware.nsx_policy.infra.domains.edge_communication_maps_client +
    + com.vmware.nsx_policy.infra.domains.groups +
    + com.vmware.nsx_policy.infra.domains.groups.statistics_client +
    + com.vmware.nsx_policy.infra.domains.groups_client +
    + com.vmware.nsx_policy.infra.domains.redirection_communication_maps_client +
    + com.vmware.nsx_policy.infra.domains_client +
    + com.vmware.nsx_policy.infra.networks +
    + com.vmware.nsx_policy.infra.networks.nat_client +
    + com.vmware.nsx_policy.infra.networks.segments_client +
    + com.vmware.nsx_policy.infra.networks_client +
    + com.vmware.nsx_policy.infra.partner_services_client +
    + com.vmware.nsx_policy.infra.providers +
    + com.vmware.nsx_policy.infra.providers.bgp_client +
    + com.vmware.nsx_policy.infra.providers.l2vpn_context +
    + com.vmware.nsx_policy.infra.providers.l2vpn_context.l2vpns_client +
    + com.vmware.nsx_policy.infra.providers.l2vpn_context_client +
    + com.vmware.nsx_policy.infra.providers.l3vpns_client +
    + com.vmware.nsx_policy.infra.providers.service_instances_client +
    + com.vmware.nsx_policy.infra.providers_client +
    + com.vmware.nsx_policy.infra.realized_state +
    + com.vmware.nsx_policy.infra.realized_state.enforcement_points +
    + com.vmware.nsx_policy.infra.realized_state.enforcement_points.firewalls_client +
    + com.vmware.nsx_policy.infra.realized_state.enforcement_points.groups_client +
    + com.vmware.nsx_policy.infra.realized_state.enforcement_points.ip_sets_client +
    + com.vmware.nsx_policy.infra.realized_state.enforcement_points.mac_sets_client +
    + com.vmware.nsx_policy.infra.realized_state.enforcement_points.ops +
    + com.vmware.nsx_policy.infra.realized_state.enforcement_points.ops.domains_client +
    + com.vmware.nsx_policy.infra.realized_state.enforcement_points.services_client +
    + com.vmware.nsx_policy.infra.realized_state.enforcement_points_client +
    + com.vmware.nsx_policy.infra.realized_state_client +
    + com.vmware.nsx_policy.infra.services_client +
    + com.vmware.nsx_policy.infra_client +
    + com.vmware.nsx_policy.licenses_client +
    + com.vmware.nsx_policy.model_client +
    + com.vmware.nsx_policy.tasks_client +
    + com.vmware.nsx_policy.trust_management_client +
    + com.vmware.nsx_policy.upgrade_client +
    + com.vmware.nsx_policy_client +
+ + +
+ +
+ + +
+
+ +
+ +
+ + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/nsx/nsx_policy/search.html b/nsx/nsx_policy/search.html new file mode 100644 index 00000000..5b48ab39 --- /dev/null +++ b/nsx/nsx_policy/search.html @@ -0,0 +1,231 @@ + + + + + + + + + + + Search — NSX-T Policy SDK 2.2.0.0.0 documentation + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + + + +
+ + + + + +
+ +
+ + + + + + + + + + + + + + + + + +
+ +
    + +
  • Docs »
  • + +
  • Search
  • + + +
  • + + + +
  • + +
+ + +
+
+
+
+ + + + +
+ +
+ +
+ +
+ + +
+
+ +
+ +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/nsx/nsx_policy/searchindex.js b/nsx/nsx_policy/searchindex.js new file mode 100644 index 00000000..7663ac4f --- /dev/null +++ b/nsx/nsx_policy/searchindex.js @@ -0,0 +1 @@ +Search.setIndex({docnames:["com","com.vmware","com.vmware.nsx_policy","com.vmware.nsx_policy.aaa","com.vmware.nsx_policy.cluster","com.vmware.nsx_policy.infra","com.vmware.nsx_policy.infra.domains","com.vmware.nsx_policy.infra.domains.groups","com.vmware.nsx_policy.infra.networks","com.vmware.nsx_policy.infra.providers","com.vmware.nsx_policy.infra.providers.l2vpn_context","com.vmware.nsx_policy.infra.realized_state","com.vmware.nsx_policy.infra.realized_state.enforcement_points","com.vmware.nsx_policy.infra.realized_state.enforcement_points.ops","enumeration","index"],envversion:53,filenames:["com.rst","com.vmware.rst","com.vmware.nsx_policy.rst","com.vmware.nsx_policy.aaa.rst","com.vmware.nsx_policy.cluster.rst","com.vmware.nsx_policy.infra.rst","com.vmware.nsx_policy.infra.domains.rst","com.vmware.nsx_policy.infra.domains.groups.rst","com.vmware.nsx_policy.infra.networks.rst","com.vmware.nsx_policy.infra.providers.rst","com.vmware.nsx_policy.infra.providers.l2vpn_context.rst","com.vmware.nsx_policy.infra.realized_state.rst","com.vmware.nsx_policy.infra.realized_state.enforcement_points.rst","com.vmware.nsx_policy.infra.realized_state.enforcement_points.ops.rst","enumeration.rst","index.rst"],objects:{"":{com:[0,0,0,"-"]},"com.vmware":{nsx_policy:[2,0,0,"-"],nsx_policy_client:[1,0,0,"-"]},"com.vmware.nsx_policy":{aaa:[3,0,0,"-"],aaa_client:[2,0,0,"-"],cluster:[4,0,0,"-"],cluster_client:[2,0,0,"-"],configs_client:[2,0,0,"-"],enforcement_points_client:[2,0,0,"-"],eula_client:[2,0,0,"-"],infra:[5,0,0,"-"],infra_client:[2,0,0,"-"],licenses_client:[2,0,0,"-"],model_client:[2,0,0,"-"],tasks_client:[2,0,0,"-"],trust_management_client:[2,0,0,"-"],upgrade_client:[2,0,0,"-"]},"com.vmware.nsx_policy.aaa":{vidm_client:[3,0,0,"-"]},"com.vmware.nsx_policy.aaa.vidm_client":{Groups:[3,1,1,""],Search:[3,1,1,""],StubFactory:[3,1,1,""],Users:[3,1,1,""]},"com.vmware.nsx_policy.aaa.vidm_client.Groups":{list:[3,2,1,""]},"com.vmware.nsx_policy.aaa.vidm_client.Search":{create:[3,2,1,""]},"com.vmware.nsx_policy.aaa.vidm_client.Users":{list:[3,2,1,""]},"com.vmware.nsx_policy.aaa_client":{RegistrationToken:[2,1,1,""],RoleBindings:[2,1,1,""],Roles:[2,1,1,""],StubFactory:[2,1,1,""],UserInfo:[2,1,1,""]},"com.vmware.nsx_policy.aaa_client.RegistrationToken":{"delete":[2,2,1,""],create:[2,2,1,""],get:[2,2,1,""]},"com.vmware.nsx_policy.aaa_client.RoleBindings":{"delete":[2,2,1,""],LIST_TYPE_LOCAL_USER:[2,3,1,""],LIST_TYPE_PRINCIPAL_IDENTITY:[2,3,1,""],LIST_TYPE_REMOTE_GROUP:[2,3,1,""],LIST_TYPE_REMOTE_USER:[2,3,1,""],create:[2,2,1,""],get:[2,2,1,""],list:[2,2,1,""],update:[2,2,1,""]},"com.vmware.nsx_policy.aaa_client.Roles":{get:[2,2,1,""],list:[2,2,1,""]},"com.vmware.nsx_policy.aaa_client.UserInfo":{get:[2,2,1,""]},"com.vmware.nsx_policy.cluster":{backups_client:[4,0,0,"-"],nodes_client:[4,0,0,"-"],restore_client:[4,0,0,"-"]},"com.vmware.nsx_policy.cluster.backups_client":{Config:[4,1,1,""],History:[4,1,1,""],Status:[4,1,1,""],StubFactory:[4,1,1,""]},"com.vmware.nsx_policy.cluster.backups_client.Config":{get:[4,2,1,""],update:[4,2,1,""]},"com.vmware.nsx_policy.cluster.backups_client.History":{get:[4,2,1,""]},"com.vmware.nsx_policy.cluster.backups_client.Status":{get:[4,2,1,""]},"com.vmware.nsx_policy.cluster.nodes_client":{Status:[4,1,1,""],StubFactory:[4,1,1,""]},"com.vmware.nsx_policy.cluster.nodes_client.Status":{GET_SOURCE_CACHED:[4,3,1,""],GET_SOURCE_REALTIME:[4,3,1,""],get:[4,2,1,""],getall:[4,2,1,""]},"com.vmware.nsx_policy.cluster.restore_client":{Backuptimestamps:[4,1,1,""],Config:[4,1,1,""],InstructionResources:[4,1,1,""],StubFactory:[4,1,1,""]},"com.vmware.nsx_policy.cluster.restore_client.Backuptimestamps":{get:[4,2,1,""]},"com.vmware.nsx_policy.cluster.restore_client.Config":{get:[4,2,1,""],update:[4,2,1,""]},"com.vmware.nsx_policy.cluster.restore_client.InstructionResources":{get:[4,2,1,""]},"com.vmware.nsx_policy.cluster_client":{Backups:[2,1,1,""],Nodes:[2,1,1,""],Restore:[2,1,1,""],Status:[2,1,1,""],StubFactory:[2,1,1,""]},"com.vmware.nsx_policy.cluster_client.Backups":{retrievesshfingerprint:[2,2,1,""]},"com.vmware.nsx_policy.cluster_client.Nodes":{"delete":[2,2,1,""],CREATE_ACTION_NODE:[2,3,1,""],create:[2,2,1,""],get:[2,2,1,""],list:[2,2,1,""],revokemissingnodes:[2,2,1,""]},"com.vmware.nsx_policy.cluster_client.Restore":{advance:[2,2,1,""],cancel:[2,2,1,""],retry:[2,2,1,""],start:[2,2,1,""],suspend:[2,2,1,""]},"com.vmware.nsx_policy.cluster_client.Status":{GET_SOURCE_CACHED:[2,3,1,""],GET_SOURCE_REALTIME:[2,3,1,""],get:[2,2,1,""]},"com.vmware.nsx_policy.configs_client":{Management:[2,1,1,""],StubFactory:[2,1,1,""]},"com.vmware.nsx_policy.configs_client.Management":{get:[2,2,1,""],update:[2,2,1,""]},"com.vmware.nsx_policy.enforcement_points_client":{ServiceDefinitions:[2,1,1,""],StubFactory:[2,1,1,""]},"com.vmware.nsx_policy.enforcement_points_client.ServiceDefinitions":{create:[2,2,1,""],get:[2,2,1,""],list:[2,2,1,""],update:[2,2,1,""]},"com.vmware.nsx_policy.eula_client":{Accept:[2,1,1,""],Acceptance:[2,1,1,""],Content:[2,1,1,""],StubFactory:[2,1,1,""]},"com.vmware.nsx_policy.eula_client.Accept":{create:[2,2,1,""]},"com.vmware.nsx_policy.eula_client.Acceptance":{get:[2,2,1,""]},"com.vmware.nsx_policy.eula_client.Content":{get:[2,2,1,""]},"com.vmware.nsx_policy.infra":{deployment_zones_client:[5,0,0,"-"],domains:[6,0,0,"-"],domains_client:[5,0,0,"-"],networks:[8,0,0,"-"],networks_client:[5,0,0,"-"],partner_services_client:[5,0,0,"-"],providers:[9,0,0,"-"],providers_client:[5,0,0,"-"],realized_state:[11,0,0,"-"],realized_state_client:[5,0,0,"-"],services_client:[5,0,0,"-"]},"com.vmware.nsx_policy.infra.deployment_zones_client":{EnforcementPoints:[5,1,1,""],StubFactory:[5,1,1,""]},"com.vmware.nsx_policy.infra.deployment_zones_client.EnforcementPoints":{"delete":[5,2,1,""],get:[5,2,1,""],list:[5,2,1,""],patch:[5,2,1,""],update:[5,2,1,""]},"com.vmware.nsx_policy.infra.domains":{communication_maps_client:[6,0,0,"-"],edge_communication_maps_client:[6,0,0,"-"],groups:[7,0,0,"-"],groups_client:[6,0,0,"-"],redirection_communication_maps_client:[6,0,0,"-"]},"com.vmware.nsx_policy.infra.domains.communication_maps_client":{CommunicationEntries:[6,1,1,""],StubFactory:[6,1,1,""]},"com.vmware.nsx_policy.infra.domains.communication_maps_client.CommunicationEntries":{"delete":[6,2,1,""],REVISE_OPERATION_AFTER:[6,3,1,""],REVISE_OPERATION_BEFORE:[6,3,1,""],REVISE_OPERATION_BOTTOM:[6,3,1,""],REVISE_OPERATION_TOP:[6,3,1,""],get:[6,2,1,""],list:[6,2,1,""],patch:[6,2,1,""],revise:[6,2,1,""],update:[6,2,1,""]},"com.vmware.nsx_policy.infra.domains.edge_communication_maps_client":{CommunicationEntries:[6,1,1,""],StubFactory:[6,1,1,""]},"com.vmware.nsx_policy.infra.domains.edge_communication_maps_client.CommunicationEntries":{"delete":[6,2,1,""],get:[6,2,1,""],list:[6,2,1,""],patch:[6,2,1,""],update:[6,2,1,""]},"com.vmware.nsx_policy.infra.domains.groups":{statistics_client:[7,0,0,"-"]},"com.vmware.nsx_policy.infra.domains.groups.statistics_client":{StubFactory:[7,1,1,""],VirtualMachines:[7,1,1,""]},"com.vmware.nsx_policy.infra.domains.groups.statistics_client.VirtualMachines":{list:[7,2,1,""]},"com.vmware.nsx_policy.infra.domains.groups_client":{PortMirroringInstances:[6,1,1,""],StubFactory:[6,1,1,""]},"com.vmware.nsx_policy.infra.domains.groups_client.PortMirroringInstances":{"delete":[6,2,1,""],get:[6,2,1,""],list:[6,2,1,""],patch:[6,2,1,""],update:[6,2,1,""]},"com.vmware.nsx_policy.infra.domains.redirection_communication_maps_client":{CommunicationEntries:[6,1,1,""],StubFactory:[6,1,1,""]},"com.vmware.nsx_policy.infra.domains.redirection_communication_maps_client.CommunicationEntries":{"delete":[6,2,1,""],get:[6,2,1,""],list:[6,2,1,""],patch:[6,2,1,""],update:[6,2,1,""]},"com.vmware.nsx_policy.infra.domains_client":{CommunicationMaps:[5,1,1,""],DiscoverySessions:[5,1,1,""],DomainDeploymentMaps:[5,1,1,""],EdgeCommunicationMaps:[5,1,1,""],Groups:[5,1,1,""],RedirectionCommunicationMaps:[5,1,1,""],StubFactory:[5,1,1,""]},"com.vmware.nsx_policy.infra.domains_client.CommunicationMaps":{"delete":[5,2,1,""],REVISE_OPERATION_AFTER:[5,3,1,""],REVISE_OPERATION_BEFORE:[5,3,1,""],REVISE_OPERATION_BOTTOM:[5,3,1,""],REVISE_OPERATION_TOP:[5,3,1,""],get:[5,2,1,""],list:[5,2,1,""],patch:[5,2,1,""],revise:[5,2,1,""],update:[5,2,1,""]},"com.vmware.nsx_policy.infra.domains_client.DiscoverySessions":{"delete":[5,2,1,""],get:[5,2,1,""],list:[5,2,1,""],patch:[5,2,1,""],update:[5,2,1,""]},"com.vmware.nsx_policy.infra.domains_client.DomainDeploymentMaps":{"delete":[5,2,1,""],get:[5,2,1,""],list:[5,2,1,""],patch:[5,2,1,""],update:[5,2,1,""]},"com.vmware.nsx_policy.infra.domains_client.EdgeCommunicationMaps":{get:[5,2,1,""],patch:[5,2,1,""],update:[5,2,1,""]},"com.vmware.nsx_policy.infra.domains_client.Groups":{"delete":[5,2,1,""],get:[5,2,1,""],list:[5,2,1,""],patch:[5,2,1,""],update:[5,2,1,""]},"com.vmware.nsx_policy.infra.domains_client.RedirectionCommunicationMaps":{"delete":[5,2,1,""],get:[5,2,1,""],patch:[5,2,1,""],update:[5,2,1,""]},"com.vmware.nsx_policy.infra.networks":{nat_client:[8,0,0,"-"],segments_client:[8,0,0,"-"]},"com.vmware.nsx_policy.infra.networks.nat_client":{NatRules:[8,1,1,""],StubFactory:[8,1,1,""]},"com.vmware.nsx_policy.infra.networks.nat_client.NatRules":{"delete":[8,2,1,""],get:[8,2,1,""],list:[8,2,1,""],patch:[8,2,1,""],update:[8,2,1,""]},"com.vmware.nsx_policy.infra.networks.segments_client":{StaticArp:[8,1,1,""],StubFactory:[8,1,1,""]},"com.vmware.nsx_policy.infra.networks.segments_client.StaticArp":{"delete":[8,2,1,""],get:[8,2,1,""],patch:[8,2,1,""],update:[8,2,1,""]},"com.vmware.nsx_policy.infra.networks_client":{DnsForwarder:[5,1,1,""],IpfixSwitchCollectionInstances:[5,1,1,""],Segments:[5,1,1,""],StaticRoutes:[5,1,1,""],StubFactory:[5,1,1,""]},"com.vmware.nsx_policy.infra.networks_client.DnsForwarder":{"delete":[5,2,1,""],get:[5,2,1,""],patch:[5,2,1,""],update:[5,2,1,""]},"com.vmware.nsx_policy.infra.networks_client.IpfixSwitchCollectionInstances":{"delete":[5,2,1,""],get:[5,2,1,""],list:[5,2,1,""],patch:[5,2,1,""],update:[5,2,1,""]},"com.vmware.nsx_policy.infra.networks_client.Segments":{"delete":[5,2,1,""],get:[5,2,1,""],list:[5,2,1,""],patch:[5,2,1,""],update:[5,2,1,""]},"com.vmware.nsx_policy.infra.networks_client.StaticRoutes":{"delete":[5,2,1,""],get:[5,2,1,""],list:[5,2,1,""],patch:[5,2,1,""],update:[5,2,1,""]},"com.vmware.nsx_policy.infra.partner_services_client":{Eula:[5,1,1,""],StubFactory:[5,1,1,""]},"com.vmware.nsx_policy.infra.partner_services_client.Eula":{create:[5,2,1,""],get:[5,2,1,""]},"com.vmware.nsx_policy.infra.providers":{bgp_client:[9,0,0,"-"],l2vpn_context:[10,0,0,"-"],l2vpn_context_client:[9,0,0,"-"],l3vpns_client:[9,0,0,"-"],service_instances_client:[9,0,0,"-"]},"com.vmware.nsx_policy.infra.providers.bgp_client":{Neighbors:[9,1,1,""],StubFactory:[9,1,1,""]},"com.vmware.nsx_policy.infra.providers.bgp_client.Neighbors":{"delete":[9,2,1,""],get:[9,2,1,""],list:[9,2,1,""],patch:[9,2,1,""],update:[9,2,1,""]},"com.vmware.nsx_policy.infra.providers.l2vpn_context":{l2vpns_client:[10,0,0,"-"]},"com.vmware.nsx_policy.infra.providers.l2vpn_context.l2vpns_client":{PeerConfig:[10,1,1,""],Statistics:[10,1,1,""],StubFactory:[10,1,1,""]},"com.vmware.nsx_policy.infra.providers.l2vpn_context.l2vpns_client.PeerConfig":{get:[10,2,1,""]},"com.vmware.nsx_policy.infra.providers.l2vpn_context.l2vpns_client.Statistics":{get:[10,2,1,""]},"com.vmware.nsx_policy.infra.providers.l2vpn_context_client":{L2vpns:[9,1,1,""],StubFactory:[9,1,1,""]},"com.vmware.nsx_policy.infra.providers.l2vpn_context_client.L2vpns":{"delete":[9,2,1,""],get:[9,2,1,""],list:[9,2,1,""],patch:[9,2,1,""],update:[9,2,1,""]},"com.vmware.nsx_policy.infra.providers.l3vpns_client":{Statistics:[9,1,1,""],StubFactory:[9,1,1,""]},"com.vmware.nsx_policy.infra.providers.l3vpns_client.Statistics":{get:[9,2,1,""]},"com.vmware.nsx_policy.infra.providers.service_instances_client":{ServiceInstanceEndpoints:[9,1,1,""],StubFactory:[9,1,1,""]},"com.vmware.nsx_policy.infra.providers.service_instances_client.ServiceInstanceEndpoints":{"delete":[9,2,1,""],get:[9,2,1,""],patch:[9,2,1,""],update:[9,2,1,""]},"com.vmware.nsx_policy.infra.providers_client":{Bgp:[5,1,1,""],ByodServiceInstances:[5,1,1,""],Groups:[5,1,1,""],Interfaces:[5,1,1,""],L2vpnContext:[5,1,1,""],L3vpnContext:[5,1,1,""],L3vpns:[5,1,1,""],ProviderDeploymentMaps:[5,1,1,""],ServiceInstances:[5,1,1,""],ServiceInterfaces:[5,1,1,""],StaticRoutes:[5,1,1,""],StubFactory:[5,1,1,""]},"com.vmware.nsx_policy.infra.providers_client.Bgp":{get:[5,2,1,""],patch:[5,2,1,""],update:[5,2,1,""]},"com.vmware.nsx_policy.infra.providers_client.ByodServiceInstances":{"delete":[5,2,1,""],get:[5,2,1,""],list:[5,2,1,""],patch:[5,2,1,""],update:[5,2,1,""]},"com.vmware.nsx_policy.infra.providers_client.Groups":{"delete":[5,2,1,""],get:[5,2,1,""],list:[5,2,1,""],patch:[5,2,1,""],update:[5,2,1,""]},"com.vmware.nsx_policy.infra.providers_client.Interfaces":{"delete":[5,2,1,""],get:[5,2,1,""],list:[5,2,1,""],patch:[5,2,1,""],update:[5,2,1,""]},"com.vmware.nsx_policy.infra.providers_client.L2vpnContext":{get:[5,2,1,""]},"com.vmware.nsx_policy.infra.providers_client.L3vpnContext":{get:[5,2,1,""],patch:[5,2,1,""],update:[5,2,1,""]},"com.vmware.nsx_policy.infra.providers_client.L3vpns":{"delete":[5,2,1,""],LIST_L3VPN_SESSION_POLICYBASEDL3VPNSESSION:[5,3,1,""],LIST_L3VPN_SESSION_ROUTEBASEDL3VPNSESSION:[5,3,1,""],get:[5,2,1,""],list:[5,2,1,""],patch:[5,2,1,""],showsensitivedata:[5,2,1,""],update:[5,2,1,""]},"com.vmware.nsx_policy.infra.providers_client.ProviderDeploymentMaps":{"delete":[5,2,1,""],get:[5,2,1,""],list:[5,2,1,""],patch:[5,2,1,""],update:[5,2,1,""]},"com.vmware.nsx_policy.infra.providers_client.ServiceInstances":{"delete":[5,2,1,""],get:[5,2,1,""],list:[5,2,1,""],patch:[5,2,1,""],update:[5,2,1,""]},"com.vmware.nsx_policy.infra.providers_client.ServiceInterfaces":{"delete":[5,2,1,""],get:[5,2,1,""],list:[5,2,1,""],patch:[5,2,1,""],update:[5,2,1,""]},"com.vmware.nsx_policy.infra.providers_client.StaticRoutes":{"delete":[5,2,1,""],get:[5,2,1,""],list:[5,2,1,""],patch:[5,2,1,""],update:[5,2,1,""]},"com.vmware.nsx_policy.infra.realized_state":{enforcement_points:[12,0,0,"-"],enforcement_points_client:[11,0,0,"-"]},"com.vmware.nsx_policy.infra.realized_state.enforcement_points":{firewalls_client:[12,0,0,"-"],groups_client:[12,0,0,"-"],ip_sets_client:[12,0,0,"-"],mac_sets_client:[12,0,0,"-"],ops:[13,0,0,"-"],services_client:[12,0,0,"-"]},"com.vmware.nsx_policy.infra.realized_state.enforcement_points.firewalls_client":{FirewallSections:[12,1,1,""],StubFactory:[12,1,1,""]},"com.vmware.nsx_policy.infra.realized_state.enforcement_points.firewalls_client.FirewallSections":{get:[12,2,1,""],list:[12,2,1,""]},"com.vmware.nsx_policy.infra.realized_state.enforcement_points.groups_client":{Nsgroups:[12,1,1,""],Securitygroups:[12,1,1,""],StubFactory:[12,1,1,""]},"com.vmware.nsx_policy.infra.realized_state.enforcement_points.groups_client.Nsgroups":{get:[12,2,1,""],list:[12,2,1,""]},"com.vmware.nsx_policy.infra.realized_state.enforcement_points.groups_client.Securitygroups":{get:[12,2,1,""],list:[12,2,1,""]},"com.vmware.nsx_policy.infra.realized_state.enforcement_points.ip_sets_client":{IpSetsNsxt:[12,1,1,""],StubFactory:[12,1,1,""]},"com.vmware.nsx_policy.infra.realized_state.enforcement_points.ip_sets_client.IpSetsNsxt":{get:[12,2,1,""],list:[12,2,1,""]},"com.vmware.nsx_policy.infra.realized_state.enforcement_points.mac_sets_client":{MacSetsNsxt:[12,1,1,""],StubFactory:[12,1,1,""]},"com.vmware.nsx_policy.infra.realized_state.enforcement_points.mac_sets_client.MacSetsNsxt":{get:[12,2,1,""],list:[12,2,1,""]},"com.vmware.nsx_policy.infra.realized_state.enforcement_points.ops":{domains_client:[13,0,0,"-"]},"com.vmware.nsx_policy.infra.realized_state.enforcement_points.ops.domains_client":{DiscoverySessions:[13,1,1,""],StubFactory:[13,1,1,""]},"com.vmware.nsx_policy.infra.realized_state.enforcement_points.ops.domains_client.DiscoverySessions":{GET_VIEW_GROUP_CONNECTION:[13,3,1,""],GET_VIEW_NETWORK_CONNECTION:[13,3,1,""],GET_VIEW_PROCESS_CONNECTION:[13,3,1,""],GET_VIEW_VM_CONNECTION:[13,3,1,""],get:[13,2,1,""]},"com.vmware.nsx_policy.infra.realized_state.enforcement_points.services_client":{Nsservices:[12,1,1,""],StubFactory:[12,1,1,""]},"com.vmware.nsx_policy.infra.realized_state.enforcement_points.services_client.Nsservices":{get:[12,2,1,""],list:[12,2,1,""]},"com.vmware.nsx_policy.infra.realized_state.enforcement_points_client":{StubFactory:[11,1,1,""],VirtualMachines:[11,1,1,""]},"com.vmware.nsx_policy.infra.realized_state.enforcement_points_client.VirtualMachines":{list:[11,2,1,""],updatetags:[11,2,1,""]},"com.vmware.nsx_policy.infra.realized_state_client":{EnforcementPoints:[5,1,1,""],RealizedEntities:[5,1,1,""],RealizedEntity:[5,1,1,""],Status:[5,1,1,""],StubFactory:[5,1,1,""]},"com.vmware.nsx_policy.infra.realized_state_client.EnforcementPoints":{get:[5,2,1,""],list:[5,2,1,""]},"com.vmware.nsx_policy.infra.realized_state_client.RealizedEntities":{list:[5,2,1,""]},"com.vmware.nsx_policy.infra.realized_state_client.RealizedEntity":{get:[5,2,1,""],refresh:[5,2,1,""]},"com.vmware.nsx_policy.infra.realized_state_client.Status":{get:[5,2,1,""]},"com.vmware.nsx_policy.infra.services_client":{ServiceEntries:[5,1,1,""],StubFactory:[5,1,1,""]},"com.vmware.nsx_policy.infra.services_client.ServiceEntries":{"delete":[5,2,1,""],get:[5,2,1,""],list:[5,2,1,""],patch:[5,2,1,""],update:[5,2,1,""]},"com.vmware.nsx_policy.infra_client":{Constraints:[2,1,1,""],DeploymentZones:[2,1,1,""],DnsForwarderZones:[2,1,1,""],Domains:[2,1,1,""],IpfixCollectorProfiles:[2,1,1,""],Labels:[2,1,1,""],Networks:[2,1,1,""],PartnerServices:[2,1,1,""],Providers:[2,1,1,""],Services:[2,1,1,""],StubFactory:[2,1,1,""]},"com.vmware.nsx_policy.infra_client.Constraints":{"delete":[2,2,1,""],get:[2,2,1,""],list:[2,2,1,""],patch:[2,2,1,""],update:[2,2,1,""]},"com.vmware.nsx_policy.infra_client.DeploymentZones":{get:[2,2,1,""],list:[2,2,1,""]},"com.vmware.nsx_policy.infra_client.DnsForwarderZones":{"delete":[2,2,1,""],get:[2,2,1,""],list:[2,2,1,""],patch:[2,2,1,""],update:[2,2,1,""]},"com.vmware.nsx_policy.infra_client.Domains":{"delete":[2,2,1,""],get:[2,2,1,""],list:[2,2,1,""],patch:[2,2,1,""],update:[2,2,1,""]},"com.vmware.nsx_policy.infra_client.IpfixCollectorProfiles":{"delete":[2,2,1,""],get:[2,2,1,""],list:[2,2,1,""],patch:[2,2,1,""],update:[2,2,1,""]},"com.vmware.nsx_policy.infra_client.Labels":{"delete":[2,2,1,""],get:[2,2,1,""],list:[2,2,1,""],patch:[2,2,1,""],update:[2,2,1,""]},"com.vmware.nsx_policy.infra_client.Networks":{"delete":[2,2,1,""],get:[2,2,1,""],list:[2,2,1,""],patch:[2,2,1,""],update:[2,2,1,""]},"com.vmware.nsx_policy.infra_client.PartnerServices":{get:[2,2,1,""],list:[2,2,1,""]},"com.vmware.nsx_policy.infra_client.Providers":{"delete":[2,2,1,""],get:[2,2,1,""],list:[2,2,1,""],patch:[2,2,1,""],update:[2,2,1,""]},"com.vmware.nsx_policy.infra_client.Services":{"delete":[2,2,1,""],get:[2,2,1,""],list:[2,2,1,""],patch:[2,2,1,""],update:[2,2,1,""]},"com.vmware.nsx_policy.licenses_client":{LicensesUsage:[2,1,1,""],StubFactory:[2,1,1,""]},"com.vmware.nsx_policy.licenses_client.LicensesUsage":{get:[2,2,1,""]},"com.vmware.nsx_policy.model_client":{ALGTypeNSService:[2,1,1,""],ALGTypeServiceEntry:[2,1,1,""],AbstractSpace:[2,1,1,""],AcceptableComponentVersion:[2,1,1,""],AcceptableComponentVersionList:[2,1,1,""],ActionableResource:[2,1,1,""],ActionableResourceListResult:[2,1,1,""],AddClusterNodeSpec:[2,1,1,""],AddControllerNodeSpec:[2,1,1,""],AddManagementNodeSpec:[2,1,1,""],AdvanceClusterRestoreInput:[2,1,1,""],AdvanceClusterRestoreRequest:[2,1,1,""],AdvertiseRule:[2,1,1,""],AdvertiseRuleList:[2,1,1,""],AdvertisedNetwork:[2,1,1,""],AdvertisedNetworksListResult:[2,1,1,""],AdvertisementConfig:[2,1,1,""],AdvertisementRuleFilter:[2,1,1,""],AggregateDataResponse:[2,1,1,""],AggregateL2VpnPeerConfig:[2,1,1,""],AggregateL2VpnStatistics:[2,1,1,""],AggregateL3VpnStatistics:[2,1,1,""],AggregateRequest:[2,1,1,""],AggregateResponse:[2,1,1,""],AllClusterGroupStatus:[2,1,1,""],AllocationIpAddress:[2,1,1,""],AllocationIpAddressListResult:[2,1,1,""],ApiError:[2,1,1,""],AppliedTos:[2,1,1,""],AssignedByDhcp:[2,1,1,""],AssociationListResult:[2,1,1,""],AttachmentContext:[2,1,1,""],Attribute:[2,1,1,""],AttributeVal:[2,1,1,""],BFDDiagnosticCount:[2,1,1,""],BFDProperties:[2,1,1,""],BFDStatusCount:[2,1,1,""],BGPCommunityList:[2,1,1,""],BGPCommunityListListResult:[2,1,1,""],BackupConfiguration:[2,1,1,""],BackupOperationHistory:[2,1,1,""],BackupOperationStatus:[2,1,1,""],BackupSchedule:[2,1,1,""],BaseHostSwitchProfile:[2,1,1,""],BaseNodeAggregateInfo:[2,1,1,""],BasePolicyServiceInstance:[2,1,1,""],BasePolicyServiceInstanceListResult:[2,1,1,""],BaseProviderInterface:[2,1,1,""],BaseProviderInterfaceListResult:[2,1,1,""],BaseServiceInstance:[2,1,1,""],BaseSwitchingProfile:[2,1,1,""],BatchRequest:[2,1,1,""],BatchRequestItem:[2,1,1,""],BatchResponse:[2,1,1,""],BatchResponseItem:[2,1,1,""],BfdConfig:[2,1,1,""],BfdConfigParameters:[2,1,1,""],BfdHealthMonitoringProfile:[2,1,1,""],BgpConfig:[2,1,1,""],BgpNeighbor:[2,1,1,""],BgpNeighborAddressFamily:[2,1,1,""],BgpNeighborConfig:[2,1,1,""],BgpNeighborConfigListResult:[2,1,1,""],BgpNeighborListResult:[2,1,1,""],BgpNeighborStatus:[2,1,1,""],BgpNeighborsStatusListResult:[2,1,1,""],BgpRouteAggregation:[2,1,1,""],BgpRoutingConfig:[2,1,1,""],BpduFilter:[2,1,1,""],BridgeCluster:[2,1,1,""],BridgeClusterListResult:[2,1,1,""],BridgeClusterNode:[2,1,1,""],BridgeEndpoint:[2,1,1,""],BridgeEndpointListResult:[2,1,1,""],BridgeEndpointProfile:[2,1,1,""],BridgeEndpointProfileListResult:[2,1,1,""],BridgeHighAvailabilityClusterProfile:[2,1,1,""],ByodPolicyServiceInstance:[2,1,1,""],ByodPolicyServiceInstanceListResult:[2,1,1,""],ByodServiceInstance:[2,1,1,""],CapacityUsage:[2,1,1,""],Certificate:[2,1,1,""],CertificateList:[2,1,1,""],ChildBgpNeighborConfig:[2,1,1,""],ChildBgpRoutingConfig:[2,1,1,""],ChildByodPolicyServiceInstance:[2,1,1,""],ChildCommunicationEntry:[2,1,1,""],ChildCommunicationMap:[2,1,1,""],ChildConstraint:[2,1,1,""],ChildDeploymentZone:[2,1,1,""],ChildDomain:[2,1,1,""],ChildDomainDeploymentMap:[2,1,1,""],ChildEdgeCommunicationMap:[2,1,1,""],ChildEnforcementPoint:[2,1,1,""],ChildGroup:[2,1,1,""],ChildL2Vpn:[2,1,1,""],ChildL2VpnContext:[2,1,1,""],ChildL3Vpn:[2,1,1,""],ChildL3VpnContext:[2,1,1,""],ChildNetwork:[2,1,1,""],ChildPolicyConfigResource:[2,1,1,""],ChildPolicyDnsForwarder:[2,1,1,""],ChildPolicyDnsForwarderZone:[2,1,1,""],ChildPolicyLabel:[2,1,1,""],ChildPolicyLbMonitorProfile:[2,1,1,""],ChildPolicyLbPersistenceProfile:[2,1,1,""],ChildPolicyLbPoolAccess:[2,1,1,""],ChildPolicyLbRule:[2,1,1,""],ChildPolicyLbVirtualServer:[2,1,1,""],ChildPolicyNat:[2,1,1,""],ChildPolicyNatRule:[2,1,1,""],ChildPolicyServiceInstance:[2,1,1,""],ChildProvider:[2,1,1,""],ChildProviderDeploymentMap:[2,1,1,""],ChildProviderInterface:[2,1,1,""],ChildRedirectionCommunicationEntry:[2,1,1,""],ChildRedirectionCommunicationMap:[2,1,1,""],ChildSegment:[2,1,1,""],ChildService:[2,1,1,""],ChildServiceEntry:[2,1,1,""],ChildServiceInstanceEndpoint:[2,1,1,""],ChildServiceInterface:[2,1,1,""],ChildSslTrustObjectData:[2,1,1,""],ChildStaticARPConfig:[2,1,1,""],ChildStaticRoutes:[2,1,1,""],ClasslessStaticRoute:[2,1,1,""],ClientSslProfileBinding:[2,1,1,""],ClientTypeCollectionConfiguration:[2,1,1,""],ClusterBackupInfo:[2,1,1,""],ClusterBackupInfoListResult:[2,1,1,""],ClusterConfig:[2,1,1,""],ClusterGroupMemberStatus:[2,1,1,""],ClusterGroupServiceLeader:[2,1,1,""],ClusterGroupStatus:[2,1,1,""],ClusterInitializationNodeInfo:[2,1,1,""],ClusterNodeConfig:[2,1,1,""],ClusterNodeConfigListResult:[2,1,1,""],ClusterNodeStatus:[2,1,1,""],ClusterNodeVMDeploymentConfig:[2,1,1,""],ClusterNodeVMDeploymentRequest:[2,1,1,""],ClusterNodeVMDeploymentRequestList:[2,1,1,""],ClusterProfile:[2,1,1,""],ClusterProfileListResult:[2,1,1,""],ClusterProfileTypeIdEntry:[2,1,1,""],ClusterRestoreStatus:[2,1,1,""],ClusterRoleConfig:[2,1,1,""],ClusterStatus:[2,1,1,""],ClusteringInfo:[2,1,1,""],ClustersAggregateInfo:[2,1,1,""],ColumnItem:[2,1,1,""],CommunicationEntry:[2,1,1,""],CommunicationEntryListResult:[2,1,1,""],CommunicationInsertParameters:[2,1,1,""],CommunicationMap:[2,1,1,""],CommunicationMapListResult:[2,1,1,""],CommunityMatchExpression:[2,1,1,""],CommunityMatchOperation:[2,1,1,""],ComputeCollection:[2,1,1,""],ComputeCollectionFabricTemplate:[2,1,1,""],ComputeCollectionFabricTemplateListResult:[2,1,1,""],ComputeCollectionListResult:[2,1,1,""],ComputeCollectionTransportNodeTemplate:[2,1,1,""],ComputeCollectionTransportNodeTemplateState:[2,1,1,""],ComputeCollectionTransportNodeTemplateStateList:[2,1,1,""],ComputeManager:[2,1,1,""],ComputeManagerListResult:[2,1,1,""],Condition:[2,1,1,""],ConditionalForwarderZone:[2,1,1,""],ConditionalValueConstraintExpression:[2,1,1,""],ConfigurationState:[2,1,1,""],ConfigurationStateElement:[2,1,1,""],ConjunctionOperator:[2,1,1,""],Connection:[2,1,1,""],Connections:[2,1,1,""],ConsolidatedRealizedStatus:[2,1,1,""],ConsolidatedStatus:[2,1,1,""],ConsolidatedStatusPerEnforcementPoint:[2,1,1,""],Constraint:[2,1,1,""],ConstraintExpression:[2,1,1,""],ConstraintListResult:[2,1,1,""],ConstraintTarget:[2,1,1,""],ContainerConfiguration:[2,1,1,""],ControlClusterNodeStatus:[2,1,1,""],ControlConnStatus:[2,1,1,""],ControllerClusterRoleConfig:[2,1,1,""],ControllerClusterStatus:[2,1,1,""],ControllerNodeAggregateInfo:[2,1,1,""],CpuCoreConfigForEnhancedNetworkingStackSwitch:[2,1,1,""],Crl:[2,1,1,""],CrlList:[2,1,1,""],CrlObjectData:[2,1,1,""],CryptoAlgorithm:[2,1,1,""],Csr:[2,1,1,""],CsrList:[2,1,1,""],CsvListResult:[2,1,1,""],CsvRecord:[2,1,1,""],CurrentBackupOperationStatus:[2,1,1,""],CustomPolicyLbPersistenceProfile:[2,1,1,""],CustomPolicyLbVirtualServer:[2,1,1,""],DSRule:[2,1,1,""],DSRuleState:[2,1,1,""],DSSection:[2,1,1,""],DSSectionListResult:[2,1,1,""],DSSectionState:[2,1,1,""],DSService:[2,1,1,""],DailyTelemetrySchedule:[2,1,1,""],DataTypeCollectionConfiguration:[2,1,1,""],Datasource:[2,1,1,""],DeleteRequestParameters:[2,1,1,""],DeploymentConfig:[2,1,1,""],DeploymentSpec:[2,1,1,""],DeploymentTemplate:[2,1,1,""],DeploymentZone:[2,1,1,""],DeploymentZoneListResult:[2,1,1,""],DestinationFilteringConfiguration:[2,1,1,""],DhcpFilter:[2,1,1,""],DhcpIpPool:[2,1,1,""],DhcpIpPoolListResult:[2,1,1,""],DhcpOption121:[2,1,1,""],DhcpOptions:[2,1,1,""],DhcpProfile:[2,1,1,""],DhcpProfileListResult:[2,1,1,""],DhcpRelayProfile:[2,1,1,""],DhcpRelayProfileListResult:[2,1,1,""],DhcpRelayService:[2,1,1,""],DhcpRelayServiceListResult:[2,1,1,""],DhcpStaticBinding:[2,1,1,""],DhcpStaticBindingListResult:[2,1,1,""],DirectoryAdDomain:[2,1,1,""],DirectoryAdGroup:[2,1,1,""],DirectoryDomain:[2,1,1,""],DirectoryDomainListResults:[2,1,1,""],DirectoryDomainSyncNode:[2,1,1,""],DirectoryDomainSyncNodeListResults:[2,1,1,""],DirectoryDomainSyncRemoteNodes:[2,1,1,""],DirectoryDomainSyncSettings:[2,1,1,""],DirectoryDomainSyncStats:[2,1,1,""],DirectoryGroup:[2,1,1,""],DirectoryGroupListResults:[2,1,1,""],DirectoryGroupMember:[2,1,1,""],DirectoryGroupMemberListResults:[2,1,1,""],DirectoryLdapServer:[2,1,1,""],DirectoryLdapServerListResults:[2,1,1,""],DiscoveredNode:[2,1,1,""],DiscoveredNodeListResult:[2,1,1,""],DiscoveredResource:[2,1,1,""],DiscoverySession:[2,1,1,""],DiscoverySessionListResult:[2,1,1,""],DnsForwarder:[2,1,1,""],DnsForwarderListResult:[2,1,1,""],Domain:[2,1,1,""],DomainDeploymentMap:[2,1,1,""],DomainDeploymentMapListResult:[2,1,1,""],DomainListResult:[2,1,1,""],DonutConfiguration:[2,1,1,""],DonutPart:[2,1,1,""],DonutSection:[2,1,1,""],Dscp:[2,1,1,""],EULAAcceptance:[2,1,1,""],EULAContent:[2,1,1,""],EdgeCluster:[2,1,1,""],EdgeClusterListResult:[2,1,1,""],EdgeClusterMember:[2,1,1,""],EdgeClusterMemberListResult:[2,1,1,""],EdgeCommunicationMap:[2,1,1,""],EdgeCommunicationMapListResult:[2,1,1,""],EdgeHighAvailabilityProfile:[2,1,1,""],EdgeNode:[2,1,1,""],EdgeNodeDeploymentConfig:[2,1,1,""],EffectiveIPAddressMemberListResult:[2,1,1,""],EffectiveMemberResourceListResult:[2,1,1,""],EgressRateShaper:[2,1,1,""],Element:[2,1,1,""],EmbeddedResource:[2,1,1,""],Endpoint:[2,1,1,""],EnforcementPoint:[2,1,1,""],EnforcementPointConnectionInfo:[2,1,1,""],EnforcementPointListResult:[2,1,1,""],EntityInstanceCountConstraintExpression:[2,1,1,""],ErrorResolverInfo:[2,1,1,""],ErrorResolverInfoList:[2,1,1,""],ErrorResolverMetadata:[2,1,1,""],ErrorResolverMetadataList:[2,1,1,""],ErrorResolverSystemMetadata:[2,1,1,""],ErrorResolverUserInputData:[2,1,1,""],ErrorResolverUserMetadata:[2,1,1,""],EtherTypeNSService:[2,1,1,""],EtherTypeServiceEntry:[2,1,1,""],ExcludeList:[2,1,1,""],Expression:[2,1,1,""],ExtraConfig:[2,1,1,""],ExtraConfigHostSwitchProfile:[2,1,1,""],FabricModule:[2,1,1,""],FabricModuleListResult:[2,1,1,""],FeaturePermission:[2,1,1,""],FeaturePermissionListResult:[2,1,1,""],FeatureStackCollectionConfiguration:[2,1,1,""],FeatureStackCollectionConfigurationList:[2,1,1,""],FeatureUsage:[2,1,1,""],FeatureUsageCsvRecord:[2,1,1,""],FeatureUsageList:[2,1,1,""],FeatureUsageListInCsvFormat:[2,1,1,""],FileTransferAuthenticationScheme:[2,1,1,""],FileTransferProtocol:[2,1,1,""],FilterRequest:[2,1,1,""],FireWallServiceAssociationListResult:[2,1,1,""],FirewallRule:[2,1,1,""],FirewallRuleListResult:[2,1,1,""],FirewallSection:[2,1,1,""],FirewallSectionListResult:[2,1,1,""],FirewallSectionRuleList:[2,1,1,""],FirewallSectionState:[2,1,1,""],FirewallSectionsSummary:[2,1,1,""],FirewallService:[2,1,1,""],FirewallStats:[2,1,1,""],FirewallStatus:[2,1,1,""],FirewallStatusListResult:[2,1,1,""],Footer:[2,1,1,""],FooterAction:[2,1,1,""],ForwarderZone:[2,1,1,""],GenericDhcpOption:[2,1,1,""],GenericPolicyRealizedResource:[2,1,1,""],GenericPolicyRealizedResourceListResult:[2,1,1,""],GlobalCollectionConfiguration:[2,1,1,""],GlobalRestoreStatus:[2,1,1,""],GridConfiguration:[2,1,1,""],Group:[2,1,1,""],GroupConnection:[2,1,1,""],GroupElement:[2,1,1,""],GroupListResult:[2,1,1,""],HaVipConfig:[2,1,1,""],HostAggregateInfo:[2,1,1,""],HostAggregateInfoListResult:[2,1,1,""],HostInfraTrafficType:[2,1,1,""],HostNode:[2,1,1,""],HostNodeLoginCredential:[2,1,1,""],HostProfileNetworkMigrationSpec:[2,1,1,""],HostSwitch:[2,1,1,""],HostSwitchProfileTypeIdEntry:[2,1,1,""],HostSwitchProfilesListResult:[2,1,1,""],HostSwitchSpec:[2,1,1,""],HostSwitchState:[2,1,1,""],HttpPolicyLbMonitorProfile:[2,1,1,""],HttpPolicyLbVirtualServer:[2,1,1,""],HttpsPolicyLbMonitorProfile:[2,1,1,""],HttpsPolicyLbVirtualServer:[2,1,1,""],ICMPTypeNSService:[2,1,1,""],ICMPTypeServiceEntry:[2,1,1,""],IGMPTypeNSService:[2,1,1,""],IGMPTypeServiceEntry:[2,1,1,""],IPAddressExpression:[2,1,1,""],IPAddressPortPair:[2,1,1,""],IPFIXCollectorProfile:[2,1,1,""],IPFIXCollectorProfileListResult:[2,1,1,""],IPFIXCollectorProfileUIResource:[2,1,1,""],IPFIXCollectorProfileUIResourceList:[2,1,1,""],IPFIXSwitchCollectionInstance:[2,1,1,""],IPFIXSwitchCollectionInstanceListResult:[2,1,1,""],IPInfo:[2,1,1,""],IPMirrorDestination:[2,1,1,""],IPPrefixList:[2,1,1,""],IPPrefixListListResult:[2,1,1,""],IPProtocolNSService:[2,1,1,""],IPProtocolServiceEntry:[2,1,1,""],IPSecVPNDPDProfile:[2,1,1,""],IPSecVPNDPDProfileListResult:[2,1,1,""],IPSecVPNIKEProfile:[2,1,1,""],IPSecVPNIKEProfileListResult:[2,1,1,""],IPSecVPNLocalEndpoint:[2,1,1,""],IPSecVPNLocalEndpointListResult:[2,1,1,""],IPSecVPNPeerEndpoint:[2,1,1,""],IPSecVPNPeerEndpointListResult:[2,1,1,""],IPSecVPNPolicyRule:[2,1,1,""],IPSecVPNPolicySubnet:[2,1,1,""],IPSecVPNService:[2,1,1,""],IPSecVPNServiceListResult:[2,1,1,""],IPSecVPNSession:[2,1,1,""],IPSecVPNSessionListResult:[2,1,1,""],IPSecVPNTunnelProfile:[2,1,1,""],IPSecVPNTunnelProfileListResult:[2,1,1,""],IPSecVpnIkeSessionStatus:[2,1,1,""],IPSecVpnIkeTrafficStatistics:[2,1,1,""],IPSecVpnPolicyTrafficStatistics:[2,1,1,""],IPSecVpnSessionStatistics:[2,1,1,""],IPSecVpnTrafficCounters:[2,1,1,""],IPSecVpnTunnelTrafficStatistics:[2,1,1,""],IPSet:[2,1,1,""],IPSetDeleteRequestParameters:[2,1,1,""],IPSetListResult:[2,1,1,""],IPSubnet:[2,1,1,""],IPv4DhcpServer:[2,1,1,""],IcmpPolicyLbMonitorProfile:[2,1,1,""],Icon:[2,1,1,""],IncludedFieldsParameters:[2,1,1,""],Infra:[2,1,1,""],IngressBroadcastRateShaper:[2,1,1,""],IngressRateShaper:[2,1,1,""],InitiateClusterRestoreRequest:[2,1,1,""],InstanceDeploymentConfig:[2,1,1,""],InstanceEndpoint:[2,1,1,""],InstanceEndpointListResult:[2,1,1,""],InstanceRuntime:[2,1,1,""],InstanceRuntimeListResult:[2,1,1,""],InstructionInfo:[2,1,1,""],InterfaceNeighborProperties:[2,1,1,""],InterfaceNeighborPropertyListResult:[2,1,1,""],InterfaceStatistics:[2,1,1,""],InterfaceSubnet:[2,1,1,""],IntervalBackupSchedule:[2,1,1,""],IpAddressInfo:[2,1,1,""],IpAllocationBase:[2,1,1,""],IpAssignmentSpec:[2,1,1,""],IpBlock:[2,1,1,""],IpBlockListResult:[2,1,1,""],IpBlockSubnet:[2,1,1,""],IpBlockSubnetListResult:[2,1,1,""],IpDiscoverySwitchingProfile:[2,1,1,""],IpMacPair:[2,1,1,""],IpPool:[2,1,1,""],IpPoolDeleteRequestParameters:[2,1,1,""],IpPoolListResult:[2,1,1,""],IpPoolRange:[2,1,1,""],IpPoolSubnet:[2,1,1,""],IpfixCollector:[2,1,1,""],IpfixCollectorConfig:[2,1,1,""],IpfixCollectorConfigListResult:[2,1,1,""],IpfixCollectorUpmProfile:[2,1,1,""],IpfixCollectorUpmProfileListResult:[2,1,1,""],IpfixConfig:[2,1,1,""],IpfixConfigListResult:[2,1,1,""],IpfixDfwConfig:[2,1,1,""],IpfixDfwTemplateParameters:[2,1,1,""],IpfixObsPointConfig:[2,1,1,""],IpfixObsPointsListResult:[2,1,1,""],IpfixServiceAssociationListResult:[2,1,1,""],IpfixSwitchConfig:[2,1,1,""],IpfixSwitchUpmProfile:[2,1,1,""],IpfixUpmProfile:[2,1,1,""],IpfixUpmProfileListResult:[2,1,1,""],KeyValue:[2,1,1,""],KeyValuePair:[2,1,1,""],L2Extension:[2,1,1,""],L2Vpn:[2,1,1,""],L2VpnAttachmentContext:[2,1,1,""],L2VpnContext:[2,1,1,""],L2VpnListResult:[2,1,1,""],L2VpnPeerCodes:[2,1,1,""],L2VpnPeerConfigPerEnforcementPoint:[2,1,1,""],L2VpnPerSegmentTrafficStatistics:[2,1,1,""],L2VpnService:[2,1,1,""],L2VpnServiceListResult:[2,1,1,""],L2VpnSession:[2,1,1,""],L2VpnSessionListResult:[2,1,1,""],L2VpnSessionStatistics:[2,1,1,""],L2VpnStatisticsPerEnforcementPoint:[2,1,1,""],L2VpnTapTrafficStatistics:[2,1,1,""],L2VpnTransportTunnelPeerCode:[2,1,1,""],L2VpnTunnelEncapsulation:[2,1,1,""],L3Vpn:[2,1,1,""],L3VpnContext:[2,1,1,""],L3VpnListResult:[2,1,1,""],L3VpnPeerConfigRequestParameters:[2,1,1,""],L3VpnRule:[2,1,1,""],L3VpnSession:[2,1,1,""],L3VpnStatisticsPerEnforcementPoint:[2,1,1,""],L3VpnSubnet:[2,1,1,""],L4PolicyLbPersistenceProfile:[2,1,1,""],L4PortSetNSService:[2,1,1,""],L4PortSetServiceEntry:[2,1,1,""],L7PolicyLbPersistenceProfile:[2,1,1,""],L7ServiceEntry:[2,1,1,""],Label:[2,1,1,""],LabelValueConfiguration:[2,1,1,""],Lag:[2,1,1,""],LbActiveMonitor:[2,1,1,""],LbAppProfile:[2,1,1,""],LbAppProfileListResult:[2,1,1,""],LbClientSslProfile:[2,1,1,""],LbClientSslProfileListResult:[2,1,1,""],LbCookiePersistenceProfile:[2,1,1,""],LbCookieTime:[2,1,1,""],LbFastTcpProfile:[2,1,1,""],LbFastUdpProfile:[2,1,1,""],LbHttpMonitor:[2,1,1,""],LbHttpProfile:[2,1,1,""],LbHttpRedirectAction:[2,1,1,""],LbHttpRejectAction:[2,1,1,""],LbHttpRequestBodyCondition:[2,1,1,""],LbHttpRequestCookieCondition:[2,1,1,""],LbHttpRequestHeader:[2,1,1,""],LbHttpRequestHeaderCondition:[2,1,1,""],LbHttpRequestHeaderRewriteAction:[2,1,1,""],LbHttpRequestMethodCondition:[2,1,1,""],LbHttpRequestUriArgumentsCondition:[2,1,1,""],LbHttpRequestUriCondition:[2,1,1,""],LbHttpRequestUriRewriteAction:[2,1,1,""],LbHttpRequestVersionCondition:[2,1,1,""],LbHttpResponseHeaderCondition:[2,1,1,""],LbHttpResponseHeaderRewriteAction:[2,1,1,""],LbHttpsMonitor:[2,1,1,""],LbIcmpMonitor:[2,1,1,""],LbIpHeaderCondition:[2,1,1,""],LbMonitor:[2,1,1,""],LbMonitorListResult:[2,1,1,""],LbPassiveMonitor:[2,1,1,""],LbPersistenceCookieTime:[2,1,1,""],LbPersistenceProfile:[2,1,1,""],LbPersistenceProfileListResult:[2,1,1,""],LbPool:[2,1,1,""],LbPoolListResult:[2,1,1,""],LbPoolMemberStatistics:[2,1,1,""],LbPoolMemberStatus:[2,1,1,""],LbPoolStatistics:[2,1,1,""],LbPoolStatisticsListResult:[2,1,1,""],LbPoolStatus:[2,1,1,""],LbPoolStatusListResult:[2,1,1,""],LbRule:[2,1,1,""],LbRuleAction:[2,1,1,""],LbRuleCondition:[2,1,1,""],LbRuleListResult:[2,1,1,""],LbSelectPoolAction:[2,1,1,""],LbSelectServerAction:[2,1,1,""],LbServerSslProfile:[2,1,1,""],LbServerSslProfileListResult:[2,1,1,""],LbService:[2,1,1,""],LbServiceListResult:[2,1,1,""],LbSessionCookieTime:[2,1,1,""],LbSnatAutoMap:[2,1,1,""],LbSnatIpElement:[2,1,1,""],LbSnatIpPool:[2,1,1,""],LbSnatTranslation:[2,1,1,""],LbSourceIpPersistenceProfile:[2,1,1,""],LbSslCipherAndProtocolListResult:[2,1,1,""],LbSslCipherInfo:[2,1,1,""],LbSslProfile:[2,1,1,""],LbSslProfileListResult:[2,1,1,""],LbSslProtocolInfo:[2,1,1,""],LbStatisticsCounter:[2,1,1,""],LbTcpHeaderCondition:[2,1,1,""],LbTcpMonitor:[2,1,1,""],LbTcpProfile:[2,1,1,""],LbTcpProfileListResult:[2,1,1,""],LbUdpMonitor:[2,1,1,""],LbVirtualServer:[2,1,1,""],LbVirtualServerListResult:[2,1,1,""],LbVirtualServerStatistics:[2,1,1,""],LbVirtualServerStatisticsListResult:[2,1,1,""],LbVirtualServerStatus:[2,1,1,""],LbVirtualServerStatusListResult:[2,1,1,""],License:[2,1,1,""],LicensesListResult:[2,1,1,""],ListResult:[2,1,1,""],LldpHostSwitchProfile:[2,1,1,""],LogicalDhcpServer:[2,1,1,""],LogicalDhcpServerListResult:[2,1,1,""],LogicalPort:[2,1,1,""],LogicalPortAttachment:[2,1,1,""],LogicalPortListResult:[2,1,1,""],LogicalPortMacAddressCsvListResult:[2,1,1,""],LogicalPortMacAddressListResult:[2,1,1,""],LogicalPortMacTableCsvEntry:[2,1,1,""],LogicalPortMacTableEntry:[2,1,1,""],LogicalPortMirrorDestination:[2,1,1,""],LogicalPortMirrorSource:[2,1,1,""],LogicalRouter:[2,1,1,""],LogicalRouterCentralizedServicePort:[2,1,1,""],LogicalRouterConfig:[2,1,1,""],LogicalRouterDeleteRequestParameters:[2,1,1,""],LogicalRouterDownLinkPort:[2,1,1,""],LogicalRouterIPTunnelPort:[2,1,1,""],LogicalRouterLinkPortOnTIER0:[2,1,1,""],LogicalRouterLinkPortOnTIER1:[2,1,1,""],LogicalRouterListResult:[2,1,1,""],LogicalRouterLoopbackPort:[2,1,1,""],LogicalRouterPort:[2,1,1,""],LogicalRouterPortArpCsvRecord:[2,1,1,""],LogicalRouterPortArpEntry:[2,1,1,""],LogicalRouterPortArpTable:[2,1,1,""],LogicalRouterPortArpTableInCsvFormat:[2,1,1,""],LogicalRouterPortDeleteRequestParameters:[2,1,1,""],LogicalRouterPortListResult:[2,1,1,""],LogicalRouterRouteCsvRecord:[2,1,1,""],LogicalRouterRouteEntry:[2,1,1,""],LogicalRouterRouteTable:[2,1,1,""],LogicalRouterRouteTableInCsvFormat:[2,1,1,""],LogicalRouterUpLinkPort:[2,1,1,""],LogicalService:[2,1,1,""],LogicalServiceListResult:[2,1,1,""],LogicalSwitch:[2,1,1,""],LogicalSwitchElement:[2,1,1,""],LogicalSwitchListResult:[2,1,1,""],LogicalSwitchMirrorSource:[2,1,1,""],LogicalSwitchState:[2,1,1,""],LogicalSwitchStateListResult:[2,1,1,""],LogicalSwitchStatus:[2,1,1,""],LogicalSwitchStatusListResult:[2,1,1,""],LogicalT0RouterElement:[2,1,1,""],LogicalT1RouterElement:[2,1,1,""],LoginCredential:[2,1,1,""],MACAddressElement:[2,1,1,""],MACAddressElementListResult:[2,1,1,""],MACSet:[2,1,1,""],MACSetDeleteRequestParameters:[2,1,1,""],MACSetListResult:[2,1,1,""],MacAddressCsvListResult:[2,1,1,""],MacAddressListResult:[2,1,1,""],MacLearningSpec:[2,1,1,""],MacManagementSwitchingProfile:[2,1,1,""],MacPool:[2,1,1,""],MacPoolListResult:[2,1,1,""],MacRange:[2,1,1,""],MacTableCsvRecord:[2,1,1,""],MacTableEntry:[2,1,1,""],ManagedResource:[2,1,1,""],ManagementClusterNodeStatus:[2,1,1,""],ManagementClusterRoleConfig:[2,1,1,""],ManagementClusterStatus:[2,1,1,""],ManagementConfig:[2,1,1,""],ManagementNodeAggregateInfo:[2,1,1,""],ManagementPlaneBaseNodeInfo:[2,1,1,""],MetadataProxy:[2,1,1,""],MetadataProxyListResult:[2,1,1,""],MgmtConnStatus:[2,1,1,""],MirrorDestination:[2,1,1,""],MirrorSource:[2,1,1,""],MonthlyTelemetrySchedule:[2,1,1,""],MsgClientInfo:[2,1,1,""],MultiWidgetConfiguration:[2,1,1,""],NSGroup:[2,1,1,""],NSGroupComplexExpression:[2,1,1,""],NSGroupDeleteRequestParameters:[2,1,1,""],NSGroupExpression:[2,1,1,""],NSGroupListResult:[2,1,1,""],NSGroupSimpleExpression:[2,1,1,""],NSGroupTagExpression:[2,1,1,""],NSService:[2,1,1,""],NSServiceDeleteRequestParameters:[2,1,1,""],NSServiceElement:[2,1,1,""],NSServiceGroup:[2,1,1,""],NSServiceGroupDeleteRequestParameters:[2,1,1,""],NSServiceGroupListResult:[2,1,1,""],NSServiceListResult:[2,1,1,""],NSXTConnectionInfo:[2,1,1,""],NSXVConnectionInfo:[2,1,1,""],NamedTeamingPolicy:[2,1,1,""],NatRule:[2,1,1,""],NatRuleListResult:[2,1,1,""],NeighborProperties:[2,1,1,""],NestedExpression:[2,1,1,""],Network:[2,1,1,""],NetworkConnection:[2,1,1,""],NetworkListResult:[2,1,1,""],NetworkMigrationSpec:[2,1,1,""],NetworkMigrationSpecListResult:[2,1,1,""],NetworkMigrationSpecTypeIdEntry:[2,1,1,""],NicInfo:[2,1,1,""],NicMetadata:[2,1,1,""],NiocProfile:[2,1,1,""],Node:[2,1,1,""],NodeAggregateInfo:[2,1,1,""],NodeAggregateInfoListResult:[2,1,1,""],NodeFileSystemProperties:[2,1,1,""],NodeIdServicesMap:[2,1,1,""],NodeInterfaceAlias:[2,1,1,""],NodeInterfaceProperties:[2,1,1,""],NodeInterfacePropertiesListResult:[2,1,1,""],NodeInterfaceStatisticsProperties:[2,1,1,""],NodeListResult:[2,1,1,""],NodeStatus:[2,1,1,""],NodeStatusProperties:[2,1,1,""],NodeUserSettings:[2,1,1,""],NormalizedResourceListResult:[2,1,1,""],NsxRole:[2,1,1,""],ObjectRolePermissionGroup:[2,1,1,""],ObjectRolePermissionGroupListResult:[2,1,1,""],OwnerResourceLink:[2,1,1,""],PBRRule:[2,1,1,""],PBRRuleListResult:[2,1,1,""],PBRSection:[2,1,1,""],PBRSectionListResult:[2,1,1,""],PBRSectionRuleList:[2,1,1,""],PBRService:[2,1,1,""],PackageStore:[2,1,1,""],PacketAddressClassifier:[2,1,1,""],PacketCaptureOption:[2,1,1,""],PacketCaptureOptionList:[2,1,1,""],PacketCaptureRequest:[2,1,1,""],PacketCaptureSession:[2,1,1,""],PacketCaptureSessionList:[2,1,1,""],PartnerServiceEULAStatus:[2,1,1,""],PerStepRestoreStatus:[2,1,1,""],Pnic:[2,1,1,""],PnicBondStatus:[2,1,1,""],PnicBondStatusListResult:[2,1,1,""],PnicMirrorDestination:[2,1,1,""],PnicMirrorSource:[2,1,1,""],PolicyAlarmResource:[2,1,1,""],PolicyAssociationsListResult:[2,1,1,""],PolicyBasedIPSecVPNSession:[2,1,1,""],PolicyBasedL3VpnSession:[2,1,1,""],PolicyConfigResource:[2,1,1,""],PolicyDnsForwarder:[2,1,1,""],PolicyDnsForwarderListResult:[2,1,1,""],PolicyDnsForwarderZone:[2,1,1,""],PolicyDnsForwarderZoneListResult:[2,1,1,""],PolicyIPAddressInfo:[2,1,1,""],PolicyLabel:[2,1,1,""],PolicyLabelListResult:[2,1,1,""],PolicyLbMonitorProfile:[2,1,1,""],PolicyLbMonitorProfileListResult:[2,1,1,""],PolicyLbPersistenceProfile:[2,1,1,""],PolicyLbPersistenceProfileListResult:[2,1,1,""],PolicyLbPoolAccess:[2,1,1,""],PolicyLbPoolAccessListResult:[2,1,1,""],PolicyLbRule:[2,1,1,""],PolicyLbRuleListResult:[2,1,1,""],PolicyLbVirtualServer:[2,1,1,""],PolicyLbVirtualServerListResult:[2,1,1,""],PolicyNat:[2,1,1,""],PolicyNatRule:[2,1,1,""],PolicyNatRuleListResult:[2,1,1,""],PolicyRealizedResource:[2,1,1,""],PolicyResource:[2,1,1,""],PolicyResourceReference:[2,1,1,""],PolicyResourceReferenceListResult:[2,1,1,""],PolicyRoot:[2,1,1,""],PolicyServiceInstance:[2,1,1,""],PolicyServiceInstanceListResult:[2,1,1,""],PolicyTemplate:[2,1,1,""],PolicyTemplateListResult:[2,1,1,""],PolicyTemplateParameter:[2,1,1,""],PolicyTemplateParameters:[2,1,1,""],PolicyTemplatePlaceholder:[2,1,1,""],PoolMember:[2,1,1,""],PoolMemberGroup:[2,1,1,""],PoolMemberSetting:[2,1,1,""],PoolUsage:[2,1,1,""],PortMirroringInstance:[2,1,1,""],PortMirroringInstanceListResult:[2,1,1,""],PortMirroringSession:[2,1,1,""],PortMirroringSessionListResult:[2,1,1,""],PortMirroringSwitchingProfile:[2,1,1,""],PreconfiguredEndpoint:[2,1,1,""],PreconfiguredHostSwitch:[2,1,1,""],PreconfiguredHostSwitchSpec:[2,1,1,""],PrefixConfig:[2,1,1,""],Principal:[2,1,1,""],PrincipalIdentity:[2,1,1,""],PrincipalIdentityList:[2,1,1,""],ProcessConnection:[2,1,1,""],ProcessElement:[2,1,1,""],PropertyItem:[2,1,1,""],Provider:[2,1,1,""],ProviderDeploymentMap:[2,1,1,""],ProviderDeploymentMapListResult:[2,1,1,""],ProviderInterface:[2,1,1,""],ProviderInterfaceListResult:[2,1,1,""],ProviderListResult:[2,1,1,""],PublicCloudGatewayNode:[2,1,1,""],QosBaseRateShaper:[2,1,1,""],QosSwitchingProfile:[2,1,1,""],QuickSearchResponse:[2,1,1,""],RateLimits:[2,1,1,""],RealizationStateBarrierConfig:[2,1,1,""],RealizedDiscoverySession:[2,1,1,""],RealizedEnforcementPoint:[2,1,1,""],RealizedEnforcementPointListResult:[2,1,1,""],RealizedFirewall:[2,1,1,""],RealizedFirewallRule:[2,1,1,""],RealizedFirewallSection:[2,1,1,""],RealizedFirewallSectionListResult:[2,1,1,""],RealizedFirewallUIResource:[2,1,1,""],RealizedFirewallUIResourceListResult:[2,1,1,""],RealizedFirewalls:[2,1,1,""],RealizedGroup:[2,1,1,""],RealizedGroupUIResource:[2,1,1,""],RealizedGroupUIResourceListResult:[2,1,1,""],RealizedGroups:[2,1,1,""],RealizedIPSet:[2,1,1,""],RealizedIPSetListResult:[2,1,1,""],RealizedLogicalPort:[2,1,1,""],RealizedLogicalSwitch:[2,1,1,""],RealizedMACSet:[2,1,1,""],RealizedMACSetListResult:[2,1,1,""],RealizedNSGroup:[2,1,1,""],RealizedNSGroupListResult:[2,1,1,""],RealizedNSGroupMemberEvaluation:[2,1,1,""],RealizedNSService:[2,1,1,""],RealizedNSServiceListResult:[2,1,1,""],RealizedSecurityGroup:[2,1,1,""],RealizedSecurityGroupListResult:[2,1,1,""],RealizedSecurityGroupMemberEvaluation:[2,1,1,""],RealizedService:[2,1,1,""],RealizedServices:[2,1,1,""],RealizedState:[2,1,1,""],RealizedVirtualMachine:[2,1,1,""],RealizedVirtualMachineListResult:[2,1,1,""],RedirectionCommunicationEntry:[2,1,1,""],RedirectionCommunicationEntryListResult:[2,1,1,""],RedirectionCommunicationMap:[2,1,1,""],RedirectionCommunicationMapListResult:[2,1,1,""],RedistributionConfig:[2,1,1,""],RedistributionRule:[2,1,1,""],RedistributionRuleList:[2,1,1,""],RegistrationToken:[2,1,1,""],RelatedAttribute:[2,1,1,""],RelatedAttributeConditionalExpression:[2,1,1,""],RelatedData:[2,1,1,""],RelatedDataRequest:[2,1,1,""],RemoteFileServer:[2,1,1,""],RemoteServerFingerprint:[2,1,1,""],RemoteServerFingerprintRequest:[2,1,1,""],RenderConfiguration:[2,1,1,""],Resource:[2,1,1,""],ResourceAllocation:[2,1,1,""],ResourceLink:[2,1,1,""],ResourceReference:[2,1,1,""],RestoreConfiguration:[2,1,1,""],RestoreStep:[2,1,1,""],RevisionedResource:[2,1,1,""],RevokeNodeRequest:[2,1,1,""],Role:[2,1,1,""],RoleBinding:[2,1,1,""],RoleBindingListResult:[2,1,1,""],RoleListResult:[2,1,1,""],RoleWithFeatures:[2,1,1,""],RouteBasedIPSecVPNSession:[2,1,1,""],RouteBasedL3VpnSession:[2,1,1,""],RouteMap:[2,1,1,""],RouteMapListResult:[2,1,1,""],RouteMapSequence:[2,1,1,""],RouteMapSequenceMatch:[2,1,1,""],RouteMapSequenceSet:[2,1,1,""],RouterNexthop:[2,1,1,""],RoutingConfig:[2,1,1,""],RowListField:[2,1,1,""],RuleState:[2,1,1,""],SVMDeploymentSpec:[2,1,1,""],SearchResponse:[2,1,1,""],Segment:[2,1,1,""],SegmentListResult:[2,1,1,""],SegmentSubnet:[2,1,1,""],SelectableResourceReference:[2,1,1,""],SelfResourceLink:[2,1,1,""],ServerSslProfileBinding:[2,1,1,""],Service:[2,1,1,""],ServiceAssociationListResult:[2,1,1,""],ServiceAttachment:[2,1,1,""],ServiceAttachmentListResult:[2,1,1,""],ServiceBinding:[2,1,1,""],ServiceDefinition:[2,1,1,""],ServiceDeploymentSpec:[2,1,1,""],ServiceEndpoint:[2,1,1,""],ServiceEntry:[2,1,1,""],ServiceEntryListResult:[2,1,1,""],ServiceIP:[2,1,1,""],ServiceInsertionRule:[2,1,1,""],ServiceInsertionRuleListResult:[2,1,1,""],ServiceInsertionSection:[2,1,1,""],ServiceInsertionSectionListResult:[2,1,1,""],ServiceInsertionSectionRuleList:[2,1,1,""],ServiceInsertionService:[2,1,1,""],ServiceInsertionServiceListResult:[2,1,1,""],ServiceInstance:[2,1,1,""],ServiceInstanceEndpoint:[2,1,1,""],ServiceInstanceListResult:[2,1,1,""],ServiceInterface:[2,1,1,""],ServiceInterfaceListResult:[2,1,1,""],ServiceListResult:[2,1,1,""],ServiceProfile:[2,1,1,""],ServiceProfileListResult:[2,1,1,""],ServiceiPsListResult:[2,1,1,""],SpoofGuardSwitchingProfile:[2,1,1,""],SslCertificate:[2,1,1,""],SslCertificateList:[2,1,1,""],SslTrustObjectData:[2,1,1,""],StandardHostSwitch:[2,1,1,""],StandardHostSwitchSpec:[2,1,1,""],StatItem:[2,1,1,""],StaticARPConfig:[2,1,1,""],StaticHopBfdPeer:[2,1,1,""],StaticHopBfdPeerDeleteRequestParameters:[2,1,1,""],StaticHopBfdPeerListResult:[2,1,1,""],StaticIpListSpec:[2,1,1,""],StaticIpMacListSpec:[2,1,1,""],StaticIpPoolSpec:[2,1,1,""],StaticRoute:[2,1,1,""],StaticRouteListResult:[2,1,1,""],StaticRouteNextHop:[2,1,1,""],StaticRoutes:[2,1,1,""],StaticRoutesListResult:[2,1,1,""],StatsConfiguration:[2,1,1,""],StatusCount:[2,1,1,""],StringListResult:[2,1,1,""],StubFactory:[2,1,1,""],SwitchSecuritySwitchingProfile:[2,1,1,""],SwitchingProfileTypeIdEntry:[2,1,1,""],SwitchingProfilesListResult:[2,1,1,""],Tag:[2,1,1,""],TargetResourceStatus:[2,1,1,""],TaskListResult:[2,1,1,""],TaskProperties:[2,1,1,""],TcpPolicyLbMonitorProfile:[2,1,1,""],TcpPolicyLbVirtualServer:[2,1,1,""],TeamingPolicy:[2,1,1,""],TelemetryAgreement:[2,1,1,""],TelemetryConfig:[2,1,1,""],TelemetryProxy:[2,1,1,""],TelemetrySchedule:[2,1,1,""],Tooltip:[2,1,1,""],Topology:[2,1,1,""],Traceflow:[2,1,1,""],TraceflowListResult:[2,1,1,""],TraceflowObservation:[2,1,1,""],TraceflowObservationCounters:[2,1,1,""],TraceflowObservationDelivered:[2,1,1,""],TraceflowObservationDropped:[2,1,1,""],TraceflowObservationDroppedLogical:[2,1,1,""],TraceflowObservationForwarded:[2,1,1,""],TraceflowObservationForwardedLogical:[2,1,1,""],TraceflowObservationListResult:[2,1,1,""],TraceflowObservationReceived:[2,1,1,""],TraceflowObservationReceivedLogical:[2,1,1,""],TransportNode:[2,1,1,""],TransportNodeListResult:[2,1,1,""],TransportNodeState:[2,1,1,""],TransportNodeStateListResult:[2,1,1,""],TransportNodeStatus:[2,1,1,""],TransportNodeStatusListResult:[2,1,1,""],TransportNodeTemplateListResult:[2,1,1,""],TransportNodeTemplateState:[2,1,1,""],TransportZone:[2,1,1,""],TransportZoneEndPoint:[2,1,1,""],TransportZoneListResult:[2,1,1,""],TransportZoneProfile:[2,1,1,""],TransportZoneProfileListResult:[2,1,1,""],TransportZoneProfileTypeIdEntry:[2,1,1,""],TransportZoneStatus:[2,1,1,""],TransportZoneStatusListResult:[2,1,1,""],TrunkVlanRange:[2,1,1,""],TrustManagementData:[2,1,1,""],TrustObjectData:[2,1,1,""],TunnelList:[2,1,1,""],TunnelPortConfig:[2,1,1,""],TunnelProperties:[2,1,1,""],TunnelStatusCount:[2,1,1,""],TunnelSubnet:[2,1,1,""],TypeGroup:[2,1,1,""],UdpPolicyLbMonitorProfile:[2,1,1,""],UdpPolicyLbVirtualServer:[2,1,1,""],UnassociatedVMListResult:[2,1,1,""],UpdatePrincipalIdentityCertificateRequest:[2,1,1,""],UpgradeHistory:[2,1,1,""],UpgradeHistoryList:[2,1,1,""],Uplink:[2,1,1,""],UplinkHostSwitchProfile:[2,1,1,""],UrlAlias:[2,1,1,""],UserInfo:[2,1,1,""],UsernamePasswordLoginCredential:[2,1,1,""],VIPSubnet:[2,1,1,""],VMConnection:[2,1,1,""],VMElement:[2,1,1,""],ValueConstraintExpression:[2,1,1,""],VerifiableAsymmetricLoginCredential:[2,1,1,""],VersionList:[2,1,1,""],VersionedDeploymentSpec:[2,1,1,""],VidmInfo:[2,1,1,""],VidmInfoListResult:[2,1,1,""],View:[2,1,1,""],VifAttachmentContext:[2,1,1,""],VirtualMachine:[2,1,1,""],VirtualMachineListResult:[2,1,1,""],VirtualMachineTagsUpdate:[2,1,1,""],VirtualNetworkInterface:[2,1,1,""],VirtualNetworkInterfaceListResult:[2,1,1,""],VlanMirrorSource:[2,1,1,""],VlanTrunkSpec:[2,1,1,""],VmNicInfo:[2,1,1,""],VmkToLogicalSwitchMapping:[2,1,1,""],VniPool:[2,1,1,""],VniPoolListResult:[2,1,1,""],VniRange:[2,1,1,""],VsphereClusterNodeVMDeploymentConfig:[2,1,1,""],VsphereDeploymentConfig:[2,1,1,""],VtepCsvListResult:[2,1,1,""],VtepLabelPool:[2,1,1,""],VtepLabelPoolListResult:[2,1,1,""],VtepLabelPoolUsage:[2,1,1,""],VtepLabelRange:[2,1,1,""],VtepListResult:[2,1,1,""],VtepTableCsvRecord:[2,1,1,""],VtepTableEntry:[2,1,1,""],WeeklyBackupSchedule:[2,1,1,""],WeeklyTelemetrySchedule:[2,1,1,""],WidgetConfiguration:[2,1,1,""],WidgetItem:[2,1,1,""],X509Certificate:[2,1,1,""],X509Crl:[2,1,1,""],X509CrlEntry:[2,1,1,""]},"com.vmware.nsx_policy.model_client.ALGTypeNSService":{ALG_FTP:[2,3,1,""],ALG_MS_RPC_TCP:[2,3,1,""],ALG_MS_RPC_UDP:[2,3,1,""],ALG_NBDG_BROADCAST:[2,3,1,""],ALG_NBNS_BROADCAST:[2,3,1,""],ALG_ORACLE_TNS:[2,3,1,""],ALG_SUN_RPC_TCP:[2,3,1,""],ALG_SUN_RPC_UDP:[2,3,1,""],ALG_TFTP:[2,3,1,""]},"com.vmware.nsx_policy.model_client.ALGTypeServiceEntry":{ALG_FTP:[2,3,1,""],ALG_MS_RPC_TCP:[2,3,1,""],ALG_MS_RPC_UDP:[2,3,1,""],ALG_NBDG_BROADCAST:[2,3,1,""],ALG_NBNS_BROADCAST:[2,3,1,""],ALG_ORACLE_TNS:[2,3,1,""],ALG_SUN_RPC_TCP:[2,3,1,""],ALG_SUN_RPC_UDP:[2,3,1,""],ALG_TFTP:[2,3,1,""]},"com.vmware.nsx_policy.model_client.AbstractSpace":{CONNECTIVITY_STRATEGY_BLACKLIST:[2,3,1,""],CONNECTIVITY_STRATEGY_NONE:[2,3,1,""],CONNECTIVITY_STRATEGY_WHITELIST:[2,3,1,""]},"com.vmware.nsx_policy.model_client.AcceptableComponentVersion":{COMPONENT_TYPE_CCP:[2,3,1,""],COMPONENT_TYPE_EDGE:[2,3,1,""],COMPONENT_TYPE_HOST:[2,3,1,""],COMPONENT_TYPE_MP:[2,3,1,""]},"com.vmware.nsx_policy.model_client.AddControllerNodeSpec":{TYPE_ADDCONTROLLERNODESPEC:[2,3,1,""]},"com.vmware.nsx_policy.model_client.AddManagementNodeSpec":{TYPE_ADDMANAGEMENTNODESPEC:[2,3,1,""]},"com.vmware.nsx_policy.model_client.AdvertiseRule":{ACTION_ALLOW:[2,3,1,""],ACTION_DENY:[2,3,1,""]},"com.vmware.nsx_policy.model_client.AdvertisementRuleFilter":{MATCH_ROUTE_TYPES_ANY:[2,3,1,""],MATCH_ROUTE_TYPES_NSX_CONNECTED:[2,3,1,""],MATCH_ROUTE_TYPES_STATIC:[2,3,1,""],MATCH_ROUTE_TYPES_T1_LB_SNAT:[2,3,1,""],MATCH_ROUTE_TYPES_T1_LB_VIP:[2,3,1,""],MATCH_ROUTE_TYPES_T1_NAT:[2,3,1,""],PREFIX_OPERATOR_EQ:[2,3,1,""],PREFIX_OPERATOR_GE:[2,3,1,""]},"com.vmware.nsx_policy.model_client.AttachmentContext":{ALLOCATE_ADDRESSES_BOTH:[2,3,1,""],ALLOCATE_ADDRESSES_IPPOOL:[2,3,1,""],ALLOCATE_ADDRESSES_MACPOOL:[2,3,1,""],ALLOCATE_ADDRESSES_NONE:[2,3,1,""]},"com.vmware.nsx_policy.model_client.Attribute":{ATTRIBUTE_TYPE_IP_ADDRESS:[2,3,1,""],ATTRIBUTE_TYPE_LONG:[2,3,1,""],ATTRIBUTE_TYPE_PASSWORD:[2,3,1,""],ATTRIBUTE_TYPE_PORT:[2,3,1,""],ATTRIBUTE_TYPE_STRING:[2,3,1,""]},"com.vmware.nsx_policy.model_client.AttributeVal":{DATA_TYPE_BOOLEAN:[2,3,1,""],DATA_TYPE_DATE:[2,3,1,""],DATA_TYPE_INTEGER:[2,3,1,""],DATA_TYPE_STRING:[2,3,1,""]},"com.vmware.nsx_policy.model_client.BFDProperties":{REMOTE_STATE_ADMIN_DOWN:[2,3,1,""],REMOTE_STATE_DOWN:[2,3,1,""],REMOTE_STATE_INIT:[2,3,1,""],REMOTE_STATE_UNKNOWN_STATE:[2,3,1,""],REMOTE_STATE_UP:[2,3,1,""],STATE_ADMIN_DOWN:[2,3,1,""],STATE_DOWN:[2,3,1,""],STATE_INIT:[2,3,1,""],STATE_UNKNOWN_STATE:[2,3,1,""],STATE_UP:[2,3,1,""]},"com.vmware.nsx_policy.model_client.BGPCommunityList":{COMMUNITY_TYPE_NORMALBGPCOMMUNITY:[2,3,1,""]},"com.vmware.nsx_policy.model_client.BackupOperationStatus":{ERROR_CODE_AUTHENTICATION_FAILURE:[2,3,1,""],ERROR_CODE_BAD_FINGERPRINT:[2,3,1,""],ERROR_CODE_GENERIC_ERROR:[2,3,1,""],ERROR_CODE_NOT_RUN_ON_MASTER:[2,3,1,""],ERROR_CODE_PERMISSION_ERROR:[2,3,1,""],ERROR_CODE_SERVER_UNREACHABLE:[2,3,1,""],ERROR_CODE_TIMEOUT:[2,3,1,""]},"com.vmware.nsx_policy.model_client.BackupSchedule":{RESOURCE_TYPE_INTERVALBACKUPSCHEDULE:[2,3,1,""],RESOURCE_TYPE_WEEKLYBACKUPSCHEDULE:[2,3,1,""]},"com.vmware.nsx_policy.model_client.BaseHostSwitchProfile":{RESOURCE_TYPE_EXTRACONFIGHOSTSWITCHPROFILE:[2,3,1,""],RESOURCE_TYPE_LLDPHOSTSWITCHPROFILE:[2,3,1,""],RESOURCE_TYPE_NIOCPROFILE:[2,3,1,""],RESOURCE_TYPE_UPLINKHOSTSWITCHPROFILE:[2,3,1,""]},"com.vmware.nsx_policy.model_client.BasePolicyServiceInstance":{DEPLOYMENT_MODE_ACTIVE_STANDBY:[2,3,1,""],DEPLOYMENT_MODE_STAND_ALONE:[2,3,1,""],TRANSPORT_TYPE_L2_BRIDGE:[2,3,1,""],TRANSPORT_TYPE_L3_ROUTED:[2,3,1,""]},"com.vmware.nsx_policy.model_client.BaseServiceInstance":{DEPLOYMENT_MODE_ACTIVE_STANDBY:[2,3,1,""],DEPLOYMENT_MODE_STAND_ALONE:[2,3,1,""],ON_FAILURE_POLICY_ALLOW:[2,3,1,""],ON_FAILURE_POLICY_BLOCK:[2,3,1,""],RESOURCE_TYPE_BYODSERVICEINSTANCE:[2,3,1,""],RESOURCE_TYPE_SERVICEINSTANCE:[2,3,1,""],TRANSPORT_TYPE_L2_BRIDGE:[2,3,1,""],TRANSPORT_TYPE_L3_ROUTED:[2,3,1,""]},"com.vmware.nsx_policy.model_client.BatchRequestItem":{METHOD_DELETE:[2,3,1,""],METHOD_GET:[2,3,1,""],METHOD_PATCH:[2,3,1,""],METHOD_POST:[2,3,1,""],METHOD_PUT:[2,3,1,""]},"com.vmware.nsx_policy.model_client.BgpNeighborAddressFamily":{TYPE_IPV4_UNICAST:[2,3,1,""],TYPE_VPNV4_UNICAST:[2,3,1,""]},"com.vmware.nsx_policy.model_client.BgpNeighborStatus":{CONNECTION_STATE_ACTIVE:[2,3,1,""],CONNECTION_STATE_CONNECT:[2,3,1,""],CONNECTION_STATE_ESTABLISHED:[2,3,1,""],CONNECTION_STATE_IDLE:[2,3,1,""],CONNECTION_STATE_INVALID:[2,3,1,""],CONNECTION_STATE_OPEN_CONFIRM:[2,3,1,""],CONNECTION_STATE_OPEN_SENT:[2,3,1,""]},"com.vmware.nsx_policy.model_client.BridgeEndpointProfile":{FAILOVER_MODE_NON_PREEMPTIVE:[2,3,1,""],FAILOVER_MODE_PREEMPTIVE:[2,3,1,""],HIGH_AVAILABILITY_MODE_STANDBY:[2,3,1,""]},"com.vmware.nsx_policy.model_client.ByodPolicyServiceInstance":{DEPLOYMENT_MODE_ACTIVE_STANDBY:[2,3,1,""],DEPLOYMENT_MODE_STAND_ALONE:[2,3,1,""],TRANSPORT_TYPE_L2_BRIDGE:[2,3,1,""],TRANSPORT_TYPE_L3_ROUTED:[2,3,1,""]},"com.vmware.nsx_policy.model_client.ClientSslProfileBinding":{CLIENT_AUTH_IGNORE:[2,3,1,""],CLIENT_AUTH_REQUIRED:[2,3,1,""]},"com.vmware.nsx_policy.model_client.ClientTypeCollectionConfiguration":{CLIENT_TYPE_CONTROL_PLANE:[2,3,1,""],CLIENT_TYPE_CONTROL_PLANE_PLATFORM:[2,3,1,""],CLIENT_TYPE_EDGE:[2,3,1,""],CLIENT_TYPE_HYPERVISOR:[2,3,1,""],CLIENT_TYPE_MANAGEMENT_PLANE:[2,3,1,""],CLIENT_TYPE_MANAGEMENT_PLANE_PLATFORM:[2,3,1,""]},"com.vmware.nsx_policy.model_client.ClusterGroupMemberStatus":{MEMBER_STATUS_DOWN:[2,3,1,""],MEMBER_STATUS_UNKNOWN:[2,3,1,""],MEMBER_STATUS_UP:[2,3,1,""]},"com.vmware.nsx_policy.model_client.ClusterGroupStatus":{GROUP_STATUS_DEGRADED:[2,3,1,""],GROUP_STATUS_STABLE:[2,3,1,""],GROUP_STATUS_UNAVAILABLE:[2,3,1,""],GROUP_STATUS_UNSTABLE:[2,3,1,""],GROUP_TYPE_CONTROLLER:[2,3,1,""],GROUP_TYPE_HTTP:[2,3,1,""],GROUP_TYPE_MANAGER:[2,3,1,""],GROUP_TYPE_POLICY:[2,3,1,""]},"com.vmware.nsx_policy.model_client.ClusterNodeVMDeploymentConfig":{PLACEMENT_TYPE_VSPHERECLUSTERNODEVMDEPLOYMENTCONFIG:[2,3,1,""]},"com.vmware.nsx_policy.model_client.ClusterNodeVMDeploymentRequest":{FORM_FACTOR_LARGE:[2,3,1,""],FORM_FACTOR_MEDIUM:[2,3,1,""],FORM_FACTOR_SMALL:[2,3,1,""],ROLES_CONTROLLER:[2,3,1,""]},"com.vmware.nsx_policy.model_client.ClusterProfile":{RESOURCE_TYPE_BRIDGEHIGHAVAILABILITYCLUSTERPROFILE:[2,3,1,""],RESOURCE_TYPE_EDGEHIGHAVAILABILITYPROFILE:[2,3,1,""]},"com.vmware.nsx_policy.model_client.ClusterProfileTypeIdEntry":{RESOURCE_TYPE_BRIDGEHIGHAVAILABILITYCLUSTERPROFILE:[2,3,1,""],RESOURCE_TYPE_EDGEHIGHAVAILABILITYPROFILE:[2,3,1,""]},"com.vmware.nsx_policy.model_client.ClusterRoleConfig":{TYPE_CONTROLLERCLUSTERROLECONFIG:[2,3,1,""],TYPE_MANAGEMENTCLUSTERROLECONFIG:[2,3,1,""]},"com.vmware.nsx_policy.model_client.ColumnItem":{TYPE_DATE:[2,3,1,""],TYPE_NUMBER:[2,3,1,""],TYPE_STRING:[2,3,1,""]},"com.vmware.nsx_policy.model_client.CommunicationEntry":{ACTION_ALLOW:[2,3,1,""],ACTION_DROP:[2,3,1,""],ACTION_REJECT:[2,3,1,""]},"com.vmware.nsx_policy.model_client.CommunicationInsertParameters":{OPERATION_AFTER:[2,3,1,""],OPERATION_BEFORE:[2,3,1,""],OPERATION_BOTTOM:[2,3,1,""],OPERATION_TOP:[2,3,1,""]},"com.vmware.nsx_policy.model_client.CommunityMatchExpression":{OPERATOR_AND:[2,3,1,""]},"com.vmware.nsx_policy.model_client.CommunityMatchOperation":{MATCH_OPERATOR_ALL:[2,3,1,""],MATCH_OPERATOR_ANY:[2,3,1,""],MATCH_OPERATOR_EXACT:[2,3,1,""],MATCH_OPERATOR_NONE:[2,3,1,""],MATCH_OPERATOR_REGEX:[2,3,1,""]},"com.vmware.nsx_policy.model_client.Condition":{KEY_NAME:[2,3,1,""],KEY_TAG:[2,3,1,""],MEMBER_TYPE_LOGICALPORT:[2,3,1,""],MEMBER_TYPE_VIRTUALMACHINE:[2,3,1,""],OPERATOR_CONTAINS:[2,3,1,""],OPERATOR_EQUALS:[2,3,1,""],OPERATOR_STARTSWITH:[2,3,1,""]},"com.vmware.nsx_policy.model_client.ConditionalValueConstraintExpression":{OPERATOR_EQUALS:[2,3,1,""],OPERATOR_EXCLUDES:[2,3,1,""],OPERATOR_INCLUDES:[2,3,1,""]},"com.vmware.nsx_policy.model_client.ConfigurationState":{STATE_FAILED:[2,3,1,""],STATE_IN_PROGRESS:[2,3,1,""],STATE_ORPHANED:[2,3,1,""],STATE_PARTIAL_SUCCESS:[2,3,1,""],STATE_PENDING:[2,3,1,""],STATE_SUCCESS:[2,3,1,""],STATE_UNKNOWN:[2,3,1,""]},"com.vmware.nsx_policy.model_client.ConfigurationStateElement":{STATE_FAILED:[2,3,1,""],STATE_IN_PROGRESS:[2,3,1,""],STATE_PARTIAL_SUCCESS:[2,3,1,""],STATE_SUCCESS:[2,3,1,""]},"com.vmware.nsx_policy.model_client.ConjunctionOperator":{CONJUNCTION_OPERATOR_AND:[2,3,1,""],CONJUNCTION_OPERATOR_OR:[2,3,1,""]},"com.vmware.nsx_policy.model_client.ConstraintExpression":{RESOURCE_TYPE_ENTITYINSTANCECOUNTCONSTRAINTEXPRESSION:[2,3,1,""],RESOURCE_TYPE_RELATEDATTRIBUTECONDITIONALEXPRESSION:[2,3,1,""],RESOURCE_TYPE_VALUECONSTRAINTEXPRESSION:[2,3,1,""]},"com.vmware.nsx_policy.model_client.ControlClusterNodeStatus":{CONTROL_CLUSTER_STATUS_CONNECTED:[2,3,1,""],CONTROL_CLUSTER_STATUS_DISCONNECTED:[2,3,1,""],CONTROL_CLUSTER_STATUS_UNKNOWN:[2,3,1,""]},"com.vmware.nsx_policy.model_client.ControlConnStatus":{FAILURE_STATUS_CONNECTION_REFUSED:[2,3,1,""],FAILURE_STATUS_CONTROLLER_REJECTED_HOST_CERT:[2,3,1,""],FAILURE_STATUS_HOST_REJECTED_CONTROLLER_CERT:[2,3,1,""],FAILURE_STATUS_INCOMPLETE_CONTROLLER_CERT:[2,3,1,""],FAILURE_STATUS_INCOMPLETE_HOST_CERT:[2,3,1,""],FAILURE_STATUS_KEEP_ALIVE_TIMEOUT:[2,3,1,""],FAILURE_STATUS_OTHER_ERROR:[2,3,1,""],FAILURE_STATUS_OTHER_SSL_ERROR:[2,3,1,""],STATUS_DOWN:[2,3,1,""],STATUS_UP:[2,3,1,""]},"com.vmware.nsx_policy.model_client.ControllerClusterRoleConfig":{TYPE_CONTROLLERCLUSTERROLECONFIG:[2,3,1,""],TYPE_MANAGEMENTCLUSTERROLECONFIG:[2,3,1,""]},"com.vmware.nsx_policy.model_client.ControllerClusterStatus":{STATUS_STABLE:[2,3,1,""],STATUS_UNKNOWN:[2,3,1,""],STATUS_UNSTABLE:[2,3,1,""]},"com.vmware.nsx_policy.model_client.Csr":{ALGORITHM_DSA:[2,3,1,""],ALGORITHM_RSA:[2,3,1,""]},"com.vmware.nsx_policy.model_client.CurrentBackupOperationStatus":{CURRENT_STEP_CLUSTER_BACKUP:[2,3,1,""],CURRENT_STEP_NODE_BACKUP:[2,3,1,""],OPERATION_TYPE_BACKUP:[2,3,1,""],OPERATION_TYPE_NONE:[2,3,1,""]},"com.vmware.nsx_policy.model_client.CustomPolicyLbPersistenceProfile":{PERSISTENCE_COOKIE:[2,3,1,""],PERSISTENCE_SOURCE_IP:[2,3,1,""]},"com.vmware.nsx_policy.model_client.CustomPolicyLbVirtualServer":{APP_PROTOCOL_HTTP:[2,3,1,""],APP_PROTOCOL_HTTPS:[2,3,1,""],APP_PROTOCOL_TCP:[2,3,1,""],APP_PROTOCOL_UDP:[2,3,1,""],CLIENT_SSL_SETTINGS_BASE_SECURE_111317:[2,3,1,""],CLIENT_SSL_SETTINGS_HIGH_SECURE_111317:[2,3,1,""],CLIENT_SSL_SETTINGS_MODERATE_SECURE_111317:[2,3,1,""],SERVER_SSL_SETTINGS_BASE_SECURE_111317:[2,3,1,""],SERVER_SSL_SETTINGS_DISABLED:[2,3,1,""],SERVER_SSL_SETTINGS_HIGH_SECURE_111317:[2,3,1,""],SERVER_SSL_SETTINGS_MODERATE_SECURE_111317:[2,3,1,""]},"com.vmware.nsx_policy.model_client.DSRule":{ACTION_ALLOW:[2,3,1,""],ACTION_DO_NOT_REDIRECT:[2,3,1,""],ACTION_DROP:[2,3,1,""],ACTION_REDIRECT:[2,3,1,""],ACTION_REJECT:[2,3,1,""],DIRECTION_IN:[2,3,1,""],DIRECTION_IN_OUT:[2,3,1,""],DIRECTION_OUT:[2,3,1,""],IP_PROTOCOL_IPV4:[2,3,1,""],IP_PROTOCOL_IPV4_IPV6:[2,3,1,""],IP_PROTOCOL_IPV6:[2,3,1,""]},"com.vmware.nsx_policy.model_client.DSRuleState":{STATE_FAILED:[2,3,1,""],STATE_IN_PROGRESS:[2,3,1,""],STATE_ORPHANED:[2,3,1,""],STATE_PARTIAL_SUCCESS:[2,3,1,""],STATE_PENDING:[2,3,1,""],STATE_SUCCESS:[2,3,1,""],STATE_UNKNOWN:[2,3,1,""]},"com.vmware.nsx_policy.model_client.DSSection":{SECTION_TYPE_L3REDIRECT:[2,3,1,""],SECTION_TYPE_LAYER2:[2,3,1,""],SECTION_TYPE_LAYER3:[2,3,1,""]},"com.vmware.nsx_policy.model_client.DSSectionState":{STATE_FAILED:[2,3,1,""],STATE_IN_PROGRESS:[2,3,1,""],STATE_ORPHANED:[2,3,1,""],STATE_PARTIAL_SUCCESS:[2,3,1,""],STATE_PENDING:[2,3,1,""],STATE_SUCCESS:[2,3,1,""],STATE_UNKNOWN:[2,3,1,""]},"com.vmware.nsx_policy.model_client.DataTypeCollectionConfiguration":{DATA_TYPE_STATISTICS:[2,3,1,""],DATA_TYPE_STATUS:[2,3,1,""]},"com.vmware.nsx_policy.model_client.DeploymentConfig":{PLACEMENT_TYPE_VSPHEREDEPLOYMENTCONFIG:[2,3,1,""]},"com.vmware.nsx_policy.model_client.DirectoryDomainSyncStats":{CURRENT_STATE_DELTA_SYNC:[2,3,1,""],CURRENT_STATE_FULL_SYNC:[2,3,1,""],CURRENT_STATE_IDLE:[2,3,1,""],PREV_SYNC_STATUS_FAILURE:[2,3,1,""],PREV_SYNC_STATUS_SUCCESS:[2,3,1,""],PREV_SYNC_STATUS_UNKNOWN:[2,3,1,""],PREV_SYNC_TYPE_DELTA_SYNC:[2,3,1,""],PREV_SYNC_TYPE_FULL_SYNC:[2,3,1,""],PREV_SYNC_TYPE_IDLE:[2,3,1,""]},"com.vmware.nsx_policy.model_client.DirectoryLdapServer":{PROTOCOL_LDAP:[2,3,1,""],PROTOCOL_LDAPS:[2,3,1,""]},"com.vmware.nsx_policy.model_client.DnsForwarder":{LOG_LEVEL_DEBUG:[2,3,1,""],LOG_LEVEL_ERROR:[2,3,1,""],LOG_LEVEL_FATAL:[2,3,1,""],LOG_LEVEL_INFO:[2,3,1,""],LOG_LEVEL_WARNING:[2,3,1,""]},"com.vmware.nsx_policy.model_client.Dscp":{MODE_TRUSTED:[2,3,1,""],MODE_UNTRUSTED:[2,3,1,""]},"com.vmware.nsx_policy.model_client.EdgeCluster":{DEPLOYMENT_TYPE_PHYSICAL_MACHINE:[2,3,1,""],DEPLOYMENT_TYPE_UNKNOWN:[2,3,1,""],DEPLOYMENT_TYPE_VIRTUAL_MACHINE:[2,3,1,""],MEMBER_NODE_TYPE_EDGE_NODE:[2,3,1,""],MEMBER_NODE_TYPE_PUBLIC_CLOUD_GATEWAY_NODE:[2,3,1,""],MEMBER_NODE_TYPE_UNKNOWN:[2,3,1,""]},"com.vmware.nsx_policy.model_client.EdgeNode":{DEPLOYMENT_TYPE_PHYSICAL_MACHINE:[2,3,1,""],DEPLOYMENT_TYPE_UNKNOWN:[2,3,1,""],DEPLOYMENT_TYPE_VIRTUAL_MACHINE:[2,3,1,""]},"com.vmware.nsx_policy.model_client.EdgeNodeDeploymentConfig":{FORM_FACTOR_LARGE:[2,3,1,""],FORM_FACTOR_MEDIUM:[2,3,1,""],FORM_FACTOR_SMALL:[2,3,1,""]},"com.vmware.nsx_policy.model_client.EgressRateShaper":{RESOURCE_TYPE_EGRESSRATESHAPER:[2,3,1,""],RESOURCE_TYPE_INGRESSBROADCASTRATESHAPER:[2,3,1,""],RESOURCE_TYPE_INGRESSRATESHAPER:[2,3,1,""]},"com.vmware.nsx_policy.model_client.Element":{RESOURCE_TYPE_GROUPELEMENT:[2,3,1,""],RESOURCE_TYPE_LOGICALSWITCHELEMENT:[2,3,1,""],RESOURCE_TYPE_LOGICALT0ROUTERELEMENT:[2,3,1,""],RESOURCE_TYPE_LOGICALT1ROUTERELEMENT:[2,3,1,""],RESOURCE_TYPE_PROCESSELEMENT:[2,3,1,""],RESOURCE_TYPE_VMELEMENT:[2,3,1,""]},"com.vmware.nsx_policy.model_client.EnforcementPointConnectionInfo":{RESOURCE_TYPE_NSXTCONNECTIONINFO:[2,3,1,""],RESOURCE_TYPE_NSXVCONNECTIONINFO:[2,3,1,""]},"com.vmware.nsx_policy.model_client.ErrorResolverUserInputData":{DATA_TYPE_NUMBER:[2,3,1,""],DATA_TYPE_PASSWORD:[2,3,1,""],DATA_TYPE_TEXT:[2,3,1,""]},"com.vmware.nsx_policy.model_client.Expression":{RESOURCE_TYPE_CONDITION:[2,3,1,""],RESOURCE_TYPE_CONJUNCTIONOPERATOR:[2,3,1,""],RESOURCE_TYPE_IPADDRESSEXPRESSION:[2,3,1,""],RESOURCE_TYPE_NESTEDEXPRESSION:[2,3,1,""]},"com.vmware.nsx_policy.model_client.FabricModule":{SOURCE_AUTHENTICATION_MODE_BASIC_AUTHENTICATION:[2,3,1,""],SOURCE_AUTHENTICATION_MODE_MARKET_PLACE:[2,3,1,""],SOURCE_AUTHENTICATION_MODE_NO_AUTHENTICATION:[2,3,1,""]},"com.vmware.nsx_policy.model_client.FeaturePermission":{PERMISSION_CRUD:[2,3,1,""],PERMISSION_EXECUTE:[2,3,1,""],PERMISSION_NONE:[2,3,1,""],PERMISSION_READ:[2,3,1,""]},"com.vmware.nsx_policy.model_client.FileTransferAuthenticationScheme":{SCHEME_NAME_PASSWORD:[2,3,1,""]},"com.vmware.nsx_policy.model_client.FileTransferProtocol":{PROTOCOL_NAME_SFTP:[2,3,1,""]},"com.vmware.nsx_policy.model_client.FirewallRule":{ACTION_ALLOW:[2,3,1,""],ACTION_DO_NOT_REDIRECT:[2,3,1,""],ACTION_DROP:[2,3,1,""],ACTION_REDIRECT:[2,3,1,""],ACTION_REJECT:[2,3,1,""],DIRECTION_IN:[2,3,1,""],DIRECTION_IN_OUT:[2,3,1,""],DIRECTION_OUT:[2,3,1,""],IP_PROTOCOL_IPV4:[2,3,1,""],IP_PROTOCOL_IPV4_IPV6:[2,3,1,""],IP_PROTOCOL_IPV6:[2,3,1,""]},"com.vmware.nsx_policy.model_client.FirewallSection":{SECTION_TYPE_L3REDIRECT:[2,3,1,""],SECTION_TYPE_LAYER2:[2,3,1,""],SECTION_TYPE_LAYER3:[2,3,1,""]},"com.vmware.nsx_policy.model_client.FirewallSectionRuleList":{SECTION_TYPE_L3REDIRECT:[2,3,1,""],SECTION_TYPE_LAYER2:[2,3,1,""],SECTION_TYPE_LAYER3:[2,3,1,""]},"com.vmware.nsx_policy.model_client.FirewallSectionState":{STATE_FAILED:[2,3,1,""],STATE_IN_PROGRESS:[2,3,1,""],STATE_ORPHANED:[2,3,1,""],STATE_PARTIAL_SUCCESS:[2,3,1,""],STATE_PENDING:[2,3,1,""],STATE_SUCCESS:[2,3,1,""],STATE_UNKNOWN:[2,3,1,""]},"com.vmware.nsx_policy.model_client.FirewallSectionsSummary":{SECTION_TYPE_L2DFW:[2,3,1,""],SECTION_TYPE_L3DFW:[2,3,1,""]},"com.vmware.nsx_policy.model_client.FirewallStatus":{CONTEXT_LOGICAL_ROUTERS:[2,3,1,""],CONTEXT_TRANSPORT_NODES:[2,3,1,""],GLOBAL_STATUS_DISABLED:[2,3,1,""],GLOBAL_STATUS_ENABLED:[2,3,1,""]},"com.vmware.nsx_policy.model_client.GenericPolicyRealizedResource":{ENTITY_TYPE_DUMMY:[2,3,1,""],STATE_ERROR:[2,3,1,""],STATE_REALIZED:[2,3,1,""],STATE_UNAVAILABLE:[2,3,1,""],STATE_UNREALIZED:[2,3,1,""]},"com.vmware.nsx_policy.model_client.GlobalRestoreStatus":{VALUE_ABORTED:[2,3,1,""],VALUE_ERROR:[2,3,1,""],VALUE_NOT_AVAILABLE:[2,3,1,""],VALUE_NOT_STARTED:[2,3,1,""],VALUE_RUNNING:[2,3,1,""],VALUE_SUCCESS:[2,3,1,""],VALUE_SUSPENDED:[2,3,1,""],VALUE_SUSPENDING:[2,3,1,""]},"com.vmware.nsx_policy.model_client.Group":{STATE_FAILURE:[2,3,1,""],STATE_IN_PROGRESS:[2,3,1,""],STATE_SUCCESS:[2,3,1,""]},"com.vmware.nsx_policy.model_client.GroupElement":{RESOURCE_TYPE_GROUPELEMENT:[2,3,1,""],RESOURCE_TYPE_LOGICALSWITCHELEMENT:[2,3,1,""],RESOURCE_TYPE_LOGICALT0ROUTERELEMENT:[2,3,1,""],RESOURCE_TYPE_LOGICALT1ROUTERELEMENT:[2,3,1,""],RESOURCE_TYPE_PROCESSELEMENT:[2,3,1,""],RESOURCE_TYPE_VMELEMENT:[2,3,1,""]},"com.vmware.nsx_policy.model_client.HostInfraTrafficType":{TRAFFIC_NAME_FAULT_TOLERANCE:[2,3,1,""],TRAFFIC_NAME_HBR:[2,3,1,""],TRAFFIC_NAME_ISCSI:[2,3,1,""],TRAFFIC_NAME_MANAGEMENT:[2,3,1,""],TRAFFIC_NAME_NFS:[2,3,1,""],TRAFFIC_NAME_VDP:[2,3,1,""],TRAFFIC_NAME_VIRTUAL_MACHINE:[2,3,1,""],TRAFFIC_NAME_VMOTION:[2,3,1,""],TRAFFIC_NAME_VSAN:[2,3,1,""]},"com.vmware.nsx_policy.model_client.HostNode":{OS_TYPE_ESXI:[2,3,1,""],OS_TYPE_HYPERV:[2,3,1,""],OS_TYPE_RHELKVM:[2,3,1,""],OS_TYPE_UBUNTUKVM:[2,3,1,""]},"com.vmware.nsx_policy.model_client.HostSwitchProfileTypeIdEntry":{KEY_EXTRACONFIGHOSTSWITCHPROFILE:[2,3,1,""],KEY_LLDPHOSTSWITCHPROFILE:[2,3,1,""],KEY_NIOCPROFILE:[2,3,1,""],KEY_UPLINKHOSTSWITCHPROFILE:[2,3,1,""]},"com.vmware.nsx_policy.model_client.HostSwitchSpec":{RESOURCE_TYPE_PRECONFIGUREDHOSTSWITCHSPEC:[2,3,1,""],RESOURCE_TYPE_STANDARDHOSTSWITCHSPEC:[2,3,1,""]},"com.vmware.nsx_policy.model_client.HttpsPolicyLbVirtualServer":{CLIENT_SSL_SETTINGS_BASE_SECURE_111317:[2,3,1,""],CLIENT_SSL_SETTINGS_HIGH_SECURE_111317:[2,3,1,""],CLIENT_SSL_SETTINGS_MODERATE_SECURE_111317:[2,3,1,""]},"com.vmware.nsx_policy.model_client.ICMPTypeNSService":{PROTOCOL_ICMPV4:[2,3,1,""],PROTOCOL_ICMPV6:[2,3,1,""]},"com.vmware.nsx_policy.model_client.ICMPTypeServiceEntry":{PROTOCOL_ICMPV4:[2,3,1,""],PROTOCOL_ICMPV6:[2,3,1,""]},"com.vmware.nsx_policy.model_client.IPMirrorDestination":{ENCAPSULATION_TYPE_ERSPAN_THREE:[2,3,1,""],ENCAPSULATION_TYPE_ERSPAN_TWO:[2,3,1,""],ENCAPSULATION_TYPE_GRE:[2,3,1,""]},"com.vmware.nsx_policy.model_client.IPSecVPNIKEProfile":{DH_GROUPS_GROUP14:[2,3,1,""],DH_GROUPS_GROUP15:[2,3,1,""],DH_GROUPS_GROUP16:[2,3,1,""],DIGEST_ALGORITHMS_SHA1:[2,3,1,""],DIGEST_ALGORITHMS_SHA2_256:[2,3,1,""],ENCRYPTION_ALGORITHMS_128:[2,3,1,""],ENCRYPTION_ALGORITHMS_256:[2,3,1,""],ENCRYPTION_ALGORITHMS_GCM_128:[2,3,1,""],ENCRYPTION_ALGORITHMS_GCM_192:[2,3,1,""],ENCRYPTION_ALGORITHMS_GCM_256:[2,3,1,""],IKE_VERSION_FLEX:[2,3,1,""],IKE_VERSION_V1:[2,3,1,""],IKE_VERSION_V2:[2,3,1,""]},"com.vmware.nsx_policy.model_client.IPSecVPNPeerEndpoint":{AUTHENTICATION_MODE_PSK:[2,3,1,""],CONNECTION_INITIATION_MODE_INITIATOR:[2,3,1,""],CONNECTION_INITIATION_MODE_ON_DEMAND:[2,3,1,""],CONNECTION_INITIATION_MODE_RESPOND_ONLY:[2,3,1,""]},"com.vmware.nsx_policy.model_client.IPSecVPNPolicyRule":{ACTION_BYPASS:[2,3,1,""],ACTION_PROTECT:[2,3,1,""]},"com.vmware.nsx_policy.model_client.IPSecVPNService":{IKE_LOG_LEVEL_DEBUG:[2,3,1,""],IKE_LOG_LEVEL_EMERGENCY:[2,3,1,""],IKE_LOG_LEVEL_ERROR:[2,3,1,""],IKE_LOG_LEVEL_INFO:[2,3,1,""],IKE_LOG_LEVEL_WARN:[2,3,1,""]},"com.vmware.nsx_policy.model_client.IPSecVPNSession":{RESOURCE_TYPE_POLICYBASEDIPSECVPNSESSION:[2,3,1,""],RESOURCE_TYPE_ROUTEBASEDIPSECVPNSESSION:[2,3,1,""]},"com.vmware.nsx_policy.model_client.IPSecVPNTunnelProfile":{DF_POLICY_CLEAR:[2,3,1,""],DF_POLICY_COPY:[2,3,1,""],DH_GROUPS_GROUP14:[2,3,1,""],DH_GROUPS_GROUP15:[2,3,1,""],DH_GROUPS_GROUP16:[2,3,1,""],DIGEST_ALGORITHMS_SHA1:[2,3,1,""],DIGEST_ALGORITHMS_SHA2_256:[2,3,1,""],ENCAPSULATION_MODE_MODE:[2,3,1,""],ENCRYPTION_ALGORITHMS_128:[2,3,1,""],ENCRYPTION_ALGORITHMS_256:[2,3,1,""],ENCRYPTION_ALGORITHMS_GCM_128:[2,3,1,""],ENCRYPTION_ALGORITHMS_GCM_192:[2,3,1,""],ENCRYPTION_ALGORITHMS_GCM_256:[2,3,1,""],TRANSFORM_PROTOCOL_ESP:[2,3,1,""]},"com.vmware.nsx_policy.model_client.IPSecVpnIkeSessionStatus":{IKE_SESSION_STATE_DOWN:[2,3,1,""],IKE_SESSION_STATE_NEGOTIATING:[2,3,1,""],IKE_SESSION_STATE_UP:[2,3,1,""]},"com.vmware.nsx_policy.model_client.IPSecVpnTunnelTrafficStatistics":{TUNNEL_STATUS_DOWN:[2,3,1,""],TUNNEL_STATUS_UP:[2,3,1,""]},"com.vmware.nsx_policy.model_client.Icon":{PLACEMENT_POST:[2,3,1,""],PLACEMENT_PRE:[2,3,1,""],TYPE_DETAIL:[2,3,1,""],TYPE_ERROR:[2,3,1,""],TYPE_INFO:[2,3,1,""],TYPE_INPROGRESS:[2,3,1,""],TYPE_NOT_AVAILABLE:[2,3,1,""],TYPE_SUCCESS:[2,3,1,""],TYPE_WARNING:[2,3,1,""]},"com.vmware.nsx_policy.model_client.Infra":{CONNECTIVITY_STRATEGY_BLACKLIST:[2,3,1,""],CONNECTIVITY_STRATEGY_NONE:[2,3,1,""],CONNECTIVITY_STRATEGY_WHITELIST:[2,3,1,""]},"com.vmware.nsx_policy.model_client.IngressBroadcastRateShaper":{RESOURCE_TYPE_EGRESSRATESHAPER:[2,3,1,""],RESOURCE_TYPE_INGRESSBROADCASTRATESHAPER:[2,3,1,""],RESOURCE_TYPE_INGRESSRATESHAPER:[2,3,1,""]},"com.vmware.nsx_policy.model_client.IngressRateShaper":{RESOURCE_TYPE_EGRESSRATESHAPER:[2,3,1,""],RESOURCE_TYPE_INGRESSBROADCASTRATESHAPER:[2,3,1,""],RESOURCE_TYPE_INGRESSRATESHAPER:[2,3,1,""]},"com.vmware.nsx_policy.model_client.InstanceEndpoint":{ENDPOINT_TYPE_LOGICAL:[2,3,1,""],ENDPOINT_TYPE_VIRTUAL:[2,3,1,""]},"com.vmware.nsx_policy.model_client.InstanceRuntime":{DEPLOYMENT_STATUS_DEPLOYMENT_FAILED:[2,3,1,""],DEPLOYMENT_STATUS_DEPLOYMENT_IN_PROGRESS:[2,3,1,""],DEPLOYMENT_STATUS_DEPLOYMENT_SUCCESSFUL:[2,3,1,""],DEPLOYMENT_STATUS_UNDEPLOYMENT_FAILED:[2,3,1,""],DEPLOYMENT_STATUS_UNDEPLOYMENT_IN_PROGRESS:[2,3,1,""],DEPLOYMENT_STATUS_UNDEPLOYMENT_SUCCESSFUL:[2,3,1,""],DEPLOYMENT_STATUS_UNKNOWN:[2,3,1,""],DEPLOYMENT_STATUS_UPGRADE_FAILED:[2,3,1,""],DEPLOYMENT_STATUS_UPGRADE_IN_PROGRESS:[2,3,1,""],RUNTIME_STATUS_IN_SERVICE:[2,3,1,""],RUNTIME_STATUS_NEEDS_ATTENTION:[2,3,1,""],RUNTIME_STATUS_OUT_OF_SERVICE:[2,3,1,""]},"com.vmware.nsx_policy.model_client.IpAddressInfo":{SOURCE_TOOLS:[2,3,1,""]},"com.vmware.nsx_policy.model_client.IpAssignmentSpec":{RESOURCE_TYPE_ASSIGNEDBYDHCP:[2,3,1,""],RESOURCE_TYPE_STATICIPLISTSPEC:[2,3,1,""],RESOURCE_TYPE_STATICIPMACLISTSPEC:[2,3,1,""],RESOURCE_TYPE_STATICIPPOOLSPEC:[2,3,1,""]},"com.vmware.nsx_policy.model_client.IpfixCollectorUpmProfile":{RESOURCE_TYPE_IPFIXCOLLECTORUPMPROFILE:[2,3,1,""]},"com.vmware.nsx_policy.model_client.IpfixConfig":{RESOURCE_TYPE_IPFIXDFWCONFIG:[2,3,1,""],RESOURCE_TYPE_IPFIXSWITCHCONFIG:[2,3,1,""]},"com.vmware.nsx_policy.model_client.IpfixUpmProfile":{RESOURCE_TYPE_IPFIXSWITCHUPMPROFILE:[2,3,1,""]},"com.vmware.nsx_policy.model_client.L2VpnPeerConfigPerEnforcementPoint":{RESOURCE_TYPE_L2VPNPEERCODES:[2,3,1,""]},"com.vmware.nsx_policy.model_client.L2VpnStatisticsPerEnforcementPoint":{RESOURCE_TYPE_L2VPNSESSIONSTATISTICS:[2,3,1,""]},"com.vmware.nsx_policy.model_client.L2VpnTunnelEncapsulation":{PROTOCOL_GRE:[2,3,1,""]},"com.vmware.nsx_policy.model_client.L3Vpn":{DH_GROUPS_GROUP14:[2,3,1,""],DH_GROUPS_GROUP15:[2,3,1,""],DH_GROUPS_GROUP16:[2,3,1,""],IKE_DIGEST_ALGORITHMS_SHA1:[2,3,1,""],IKE_DIGEST_ALGORITHMS_SHA2_256:[2,3,1,""],IKE_ENCRYPTION_ALGORITHMS_128:[2,3,1,""],IKE_ENCRYPTION_ALGORITHMS_256:[2,3,1,""],IKE_ENCRYPTION_ALGORITHMS_GCM_128:[2,3,1,""],IKE_ENCRYPTION_ALGORITHMS_GCM_192:[2,3,1,""],IKE_ENCRYPTION_ALGORITHMS_GCM_256:[2,3,1,""],IKE_VERSION_FLEX:[2,3,1,""],IKE_VERSION_V1:[2,3,1,""],IKE_VERSION_V2:[2,3,1,""],TUNNEL_DIGEST_ALGORITHMS_SHA1:[2,3,1,""],TUNNEL_DIGEST_ALGORITHMS_SHA2_256:[2,3,1,""],TUNNEL_ENCRYPTION_ALGORITHMS_128:[2,3,1,""],TUNNEL_ENCRYPTION_ALGORITHMS_256:[2,3,1,""],TUNNEL_ENCRYPTION_ALGORITHMS_GCM_128:[2,3,1,""],TUNNEL_ENCRYPTION_ALGORITHMS_GCM_192:[2,3,1,""],TUNNEL_ENCRYPTION_ALGORITHMS_GCM_256:[2,3,1,""]},"com.vmware.nsx_policy.model_client.L3VpnContext":{IKE_LOG_LEVEL_DEBUG:[2,3,1,""],IKE_LOG_LEVEL_EMERGENCY:[2,3,1,""],IKE_LOG_LEVEL_ERROR:[2,3,1,""],IKE_LOG_LEVEL_INFO:[2,3,1,""],IKE_LOG_LEVEL_WARN:[2,3,1,""]},"com.vmware.nsx_policy.model_client.L3VpnRule":{ACTION_BYPASS:[2,3,1,""],ACTION_PROTECT:[2,3,1,""]},"com.vmware.nsx_policy.model_client.L3VpnSession":{RESOURCE_TYPE_POLICYBASEDL3VPNSESSION:[2,3,1,""],RESOURCE_TYPE_ROUTEBASEDL3VPNSESSION:[2,3,1,""]},"com.vmware.nsx_policy.model_client.L3VpnStatisticsPerEnforcementPoint":{RESOURCE_TYPE_IPSECVPNSESSIONSTATISTICS:[2,3,1,""]},"com.vmware.nsx_policy.model_client.L4PolicyLbPersistenceProfile":{PERSISTENCE_IP:[2,3,1,""]},"com.vmware.nsx_policy.model_client.L4PortSetNSService":{L4PROTOCOL_TCP:[2,3,1,""],L4PROTOCOL_UDP:[2,3,1,""]},"com.vmware.nsx_policy.model_client.L4PortSetServiceEntry":{L4PROTOCOL_TCP:[2,3,1,""],L4PROTOCOL_UDP:[2,3,1,""]},"com.vmware.nsx_policy.model_client.L7PolicyLbPersistenceProfile":{PERSISTENCE_COOKIE:[2,3,1,""]},"com.vmware.nsx_policy.model_client.Lag":{LOAD_BALANCE_ALGORITHM_DESTMAC:[2,3,1,""],LOAD_BALANCE_ALGORITHM_SRCDESTIPVLAN:[2,3,1,""],LOAD_BALANCE_ALGORITHM_SRCDESTMAC:[2,3,1,""],LOAD_BALANCE_ALGORITHM_SRCDESTMACIPPORT:[2,3,1,""],LOAD_BALANCE_ALGORITHM_SRCMAC:[2,3,1,""],MODE_ACTIVE:[2,3,1,""],MODE_PASSIVE:[2,3,1,""],TIMEOUT_TYPE_FAST:[2,3,1,""],TIMEOUT_TYPE_SLOW:[2,3,1,""]},"com.vmware.nsx_policy.model_client.LbAppProfile":{RESOURCE_TYPE_LBFASTTCPPROFILE:[2,3,1,""],RESOURCE_TYPE_LBFASTUDPPROFILE:[2,3,1,""],RESOURCE_TYPE_LBHTTPPROFILE:[2,3,1,""]},"com.vmware.nsx_policy.model_client.LbClientSslProfile":{CIPHERS_ECDHE_ECDSA_WITH_AES_128_CBC_SHA256:[2,3,1,""],CIPHERS_ECDHE_ECDSA_WITH_AES_128_CBC_SHA:[2,3,1,""],CIPHERS_ECDHE_ECDSA_WITH_AES_128_GCM_SHA256:[2,3,1,""],CIPHERS_ECDHE_ECDSA_WITH_AES_256_CBC_SHA384:[2,3,1,""],CIPHERS_ECDHE_ECDSA_WITH_AES_256_CBC_SHA:[2,3,1,""],CIPHERS_ECDHE_ECDSA_WITH_AES_256_GCM_SHA384:[2,3,1,""],CIPHERS_ECDHE_RSA_WITH_AES_128_CBC_SHA256:[2,3,1,""],CIPHERS_ECDHE_RSA_WITH_AES_128_CBC_SHA:[2,3,1,""],CIPHERS_ECDHE_RSA_WITH_AES_128_GCM_SHA256:[2,3,1,""],CIPHERS_ECDHE_RSA_WITH_AES_256_CBC_SHA384:[2,3,1,""],CIPHERS_ECDHE_RSA_WITH_AES_256_CBC_SHA:[2,3,1,""],CIPHERS_ECDHE_RSA_WITH_AES_256_GCM_SHA384:[2,3,1,""],CIPHERS_ECDH_ECDSA_WITH_AES_128_CBC_SHA256:[2,3,1,""],CIPHERS_ECDH_ECDSA_WITH_AES_128_CBC_SHA:[2,3,1,""],CIPHERS_ECDH_ECDSA_WITH_AES_128_GCM_SHA256:[2,3,1,""],CIPHERS_ECDH_ECDSA_WITH_AES_256_CBC_SHA384:[2,3,1,""],CIPHERS_ECDH_ECDSA_WITH_AES_256_CBC_SHA:[2,3,1,""],CIPHERS_ECDH_ECDSA_WITH_AES_256_GCM_SHA384:[2,3,1,""],CIPHERS_ECDH_RSA_WITH_AES_128_CBC_SHA256:[2,3,1,""],CIPHERS_ECDH_RSA_WITH_AES_128_CBC_SHA:[2,3,1,""],CIPHERS_ECDH_RSA_WITH_AES_128_GCM_SHA256:[2,3,1,""],CIPHERS_ECDH_RSA_WITH_AES_256_CBC_SHA384:[2,3,1,""],CIPHERS_ECDH_RSA_WITH_AES_256_CBC_SHA:[2,3,1,""],CIPHERS_ECDH_RSA_WITH_AES_256_GCM_SHA384:[2,3,1,""],CIPHERS_RSA_WITH_3DES_EDE_CBC_SHA:[2,3,1,""],CIPHERS_RSA_WITH_AES_128_CBC_SHA256:[2,3,1,""],CIPHERS_RSA_WITH_AES_128_CBC_SHA:[2,3,1,""],CIPHERS_RSA_WITH_AES_128_GCM_SHA256:[2,3,1,""],CIPHERS_RSA_WITH_AES_256_CBC_SHA256:[2,3,1,""],CIPHERS_RSA_WITH_AES_256_CBC_SHA:[2,3,1,""],CIPHERS_RSA_WITH_AES_256_GCM_SHA384:[2,3,1,""],PROTOCOLS_SSL_V2:[2,3,1,""],PROTOCOLS_SSL_V3:[2,3,1,""],PROTOCOLS_TLS_V1:[2,3,1,""],PROTOCOLS_TLS_V1_1:[2,3,1,""],PROTOCOLS_TLS_V1_2:[2,3,1,""]},"com.vmware.nsx_policy.model_client.LbCookiePersistenceProfile":{COOKIE_MODE_INSERT:[2,3,1,""],COOKIE_MODE_PREFIX:[2,3,1,""],COOKIE_MODE_REWRITE:[2,3,1,""]},"com.vmware.nsx_policy.model_client.LbCookieTime":{TYPE_LBPERSISTENCECOOKIETIME:[2,3,1,""],TYPE_LBSESSIONCOOKIETIME:[2,3,1,""]},"com.vmware.nsx_policy.model_client.LbHttpMonitor":{REQUEST_METHOD_GET:[2,3,1,""],REQUEST_METHOD_HEAD:[2,3,1,""],REQUEST_METHOD_OPTIONS:[2,3,1,""],REQUEST_METHOD_POST:[2,3,1,""],REQUEST_METHOD_PUT:[2,3,1,""],REQUEST_VERSION_1_0:[2,3,1,""],REQUEST_VERSION_1_1:[2,3,1,""],REQUEST_VERSION_2_0:[2,3,1,""]},"com.vmware.nsx_policy.model_client.LbHttpProfile":{XFORWARDED_FOR_INSERT:[2,3,1,""],XFORWARDED_FOR_REPLACE:[2,3,1,""]},"com.vmware.nsx_policy.model_client.LbHttpRequestBodyCondition":{MATCH_TYPE_CONTAINS:[2,3,1,""],MATCH_TYPE_ENDS_WITH:[2,3,1,""],MATCH_TYPE_EQUALS:[2,3,1,""],MATCH_TYPE_REGEX:[2,3,1,""],MATCH_TYPE_STARTS_WITH:[2,3,1,""]},"com.vmware.nsx_policy.model_client.LbHttpRequestCookieCondition":{MATCH_TYPE_CONTAINS:[2,3,1,""],MATCH_TYPE_ENDS_WITH:[2,3,1,""],MATCH_TYPE_EQUALS:[2,3,1,""],MATCH_TYPE_REGEX:[2,3,1,""],MATCH_TYPE_STARTS_WITH:[2,3,1,""]},"com.vmware.nsx_policy.model_client.LbHttpRequestHeaderCondition":{MATCH_TYPE_CONTAINS:[2,3,1,""],MATCH_TYPE_ENDS_WITH:[2,3,1,""],MATCH_TYPE_EQUALS:[2,3,1,""],MATCH_TYPE_REGEX:[2,3,1,""],MATCH_TYPE_STARTS_WITH:[2,3,1,""]},"com.vmware.nsx_policy.model_client.LbHttpRequestMethodCondition":{METHOD_GET:[2,3,1,""],METHOD_HEAD:[2,3,1,""],METHOD_OPTIONS:[2,3,1,""],METHOD_POST:[2,3,1,""],METHOD_PUT:[2,3,1,""]},"com.vmware.nsx_policy.model_client.LbHttpRequestUriArgumentsCondition":{MATCH_TYPE_CONTAINS:[2,3,1,""],MATCH_TYPE_ENDS_WITH:[2,3,1,""],MATCH_TYPE_EQUALS:[2,3,1,""],MATCH_TYPE_REGEX:[2,3,1,""],MATCH_TYPE_STARTS_WITH:[2,3,1,""]},"com.vmware.nsx_policy.model_client.LbHttpRequestUriCondition":{MATCH_TYPE_CONTAINS:[2,3,1,""],MATCH_TYPE_ENDS_WITH:[2,3,1,""],MATCH_TYPE_EQUALS:[2,3,1,""],MATCH_TYPE_REGEX:[2,3,1,""],MATCH_TYPE_STARTS_WITH:[2,3,1,""]},"com.vmware.nsx_policy.model_client.LbHttpRequestVersionCondition":{VERSION_1_0:[2,3,1,""],VERSION_1_1:[2,3,1,""],VERSION_2_0:[2,3,1,""]},"com.vmware.nsx_policy.model_client.LbHttpResponseHeaderCondition":{MATCH_TYPE_CONTAINS:[2,3,1,""],MATCH_TYPE_ENDS_WITH:[2,3,1,""],MATCH_TYPE_EQUALS:[2,3,1,""],MATCH_TYPE_REGEX:[2,3,1,""],MATCH_TYPE_STARTS_WITH:[2,3,1,""]},"com.vmware.nsx_policy.model_client.LbHttpsMonitor":{CIPHERS_ECDHE_ECDSA_WITH_AES_128_CBC_SHA256:[2,3,1,""],CIPHERS_ECDHE_ECDSA_WITH_AES_128_CBC_SHA:[2,3,1,""],CIPHERS_ECDHE_ECDSA_WITH_AES_128_GCM_SHA256:[2,3,1,""],CIPHERS_ECDHE_ECDSA_WITH_AES_256_CBC_SHA384:[2,3,1,""],CIPHERS_ECDHE_ECDSA_WITH_AES_256_CBC_SHA:[2,3,1,""],CIPHERS_ECDHE_ECDSA_WITH_AES_256_GCM_SHA384:[2,3,1,""],CIPHERS_ECDHE_RSA_WITH_AES_128_CBC_SHA256:[2,3,1,""],CIPHERS_ECDHE_RSA_WITH_AES_128_CBC_SHA:[2,3,1,""],CIPHERS_ECDHE_RSA_WITH_AES_128_GCM_SHA256:[2,3,1,""],CIPHERS_ECDHE_RSA_WITH_AES_256_CBC_SHA384:[2,3,1,""],CIPHERS_ECDHE_RSA_WITH_AES_256_CBC_SHA:[2,3,1,""],CIPHERS_ECDHE_RSA_WITH_AES_256_GCM_SHA384:[2,3,1,""],CIPHERS_ECDH_ECDSA_WITH_AES_128_CBC_SHA256:[2,3,1,""],CIPHERS_ECDH_ECDSA_WITH_AES_128_CBC_SHA:[2,3,1,""],CIPHERS_ECDH_ECDSA_WITH_AES_128_GCM_SHA256:[2,3,1,""],CIPHERS_ECDH_ECDSA_WITH_AES_256_CBC_SHA384:[2,3,1,""],CIPHERS_ECDH_ECDSA_WITH_AES_256_CBC_SHA:[2,3,1,""],CIPHERS_ECDH_ECDSA_WITH_AES_256_GCM_SHA384:[2,3,1,""],CIPHERS_ECDH_RSA_WITH_AES_128_CBC_SHA256:[2,3,1,""],CIPHERS_ECDH_RSA_WITH_AES_128_CBC_SHA:[2,3,1,""],CIPHERS_ECDH_RSA_WITH_AES_128_GCM_SHA256:[2,3,1,""],CIPHERS_ECDH_RSA_WITH_AES_256_CBC_SHA384:[2,3,1,""],CIPHERS_ECDH_RSA_WITH_AES_256_CBC_SHA:[2,3,1,""],CIPHERS_ECDH_RSA_WITH_AES_256_GCM_SHA384:[2,3,1,""],CIPHERS_RSA_WITH_3DES_EDE_CBC_SHA:[2,3,1,""],CIPHERS_RSA_WITH_AES_128_CBC_SHA256:[2,3,1,""],CIPHERS_RSA_WITH_AES_128_CBC_SHA:[2,3,1,""],CIPHERS_RSA_WITH_AES_128_GCM_SHA256:[2,3,1,""],CIPHERS_RSA_WITH_AES_256_CBC_SHA256:[2,3,1,""],CIPHERS_RSA_WITH_AES_256_CBC_SHA:[2,3,1,""],CIPHERS_RSA_WITH_AES_256_GCM_SHA384:[2,3,1,""],PROTOCOLS_SSL_V2:[2,3,1,""],PROTOCOLS_SSL_V3:[2,3,1,""],PROTOCOLS_TLS_V1:[2,3,1,""],PROTOCOLS_TLS_V1_1:[2,3,1,""],PROTOCOLS_TLS_V1_2:[2,3,1,""],REQUEST_METHOD_GET:[2,3,1,""],REQUEST_METHOD_HEAD:[2,3,1,""],REQUEST_METHOD_OPTIONS:[2,3,1,""],REQUEST_METHOD_POST:[2,3,1,""],REQUEST_METHOD_PUT:[2,3,1,""],REQUEST_VERSION_1_0:[2,3,1,""],REQUEST_VERSION_1_1:[2,3,1,""],REQUEST_VERSION_2_0:[2,3,1,""],SERVER_AUTH_IGNORE:[2,3,1,""],SERVER_AUTH_REQUIRED:[2,3,1,""]},"com.vmware.nsx_policy.model_client.LbMonitor":{RESOURCE_TYPE_LBHTTPMONITOR:[2,3,1,""],RESOURCE_TYPE_LBHTTPSMONITOR:[2,3,1,""],RESOURCE_TYPE_LBICMPMONITOR:[2,3,1,""],RESOURCE_TYPE_LBPASSIVEMONITOR:[2,3,1,""],RESOURCE_TYPE_LBTCPMONITOR:[2,3,1,""],RESOURCE_TYPE_LBUDPMONITOR:[2,3,1,""]},"com.vmware.nsx_policy.model_client.LbPersistenceProfile":{RESOURCE_TYPE_LBCOOKIEPERSISTENCEPROFILE:[2,3,1,""],RESOURCE_TYPE_LBSOURCEIPPERSISTENCEPROFILE:[2,3,1,""]},"com.vmware.nsx_policy.model_client.LbPool":{ALGORITHM_IP_HASH:[2,3,1,""],ALGORITHM_LEAST_CONNECTION:[2,3,1,""],ALGORITHM_ROUND_ROBIN:[2,3,1,""],ALGORITHM_WEIGHTED_LEAST_CONNECTION:[2,3,1,""],ALGORITHM_WEIGHTED_ROUND_ROBIN:[2,3,1,""]},"com.vmware.nsx_policy.model_client.LbPoolMemberStatus":{STATUS_DISABLED:[2,3,1,""],STATUS_DOWN:[2,3,1,""],STATUS_GRACEFUL_DISABLED:[2,3,1,""],STATUS_UP:[2,3,1,""]},"com.vmware.nsx_policy.model_client.LbPoolStatus":{STATUS_DETACHED:[2,3,1,""],STATUS_DOWN:[2,3,1,""],STATUS_PARTIALLY_UP:[2,3,1,""],STATUS_PRIMARY_DOWN:[2,3,1,""],STATUS_UP:[2,3,1,""]},"com.vmware.nsx_policy.model_client.LbRule":{MATCH_STRATEGY_ALL:[2,3,1,""],MATCH_STRATEGY_ANY:[2,3,1,""],PHASE_FORWARDING:[2,3,1,""],PHASE_REQUEST_REWRITE:[2,3,1,""],PHASE_RESPONSE_REWRITE:[2,3,1,""]},"com.vmware.nsx_policy.model_client.LbRuleAction":{TYPE_LBHTTPREDIRECTACTION:[2,3,1,""],TYPE_LBHTTPREJECTACTION:[2,3,1,""],TYPE_LBHTTPREQUESTHEADERREWRITEACTION:[2,3,1,""],TYPE_LBHTTPREQUESTURIREWRITEACTION:[2,3,1,""],TYPE_LBHTTPRESPONSEHEADERREWRITEACTION:[2,3,1,""],TYPE_LBSELECTPOOLACTION:[2,3,1,""],TYPE_LBSELECTSERVERACTION:[2,3,1,""]},"com.vmware.nsx_policy.model_client.LbRuleCondition":{TYPE_LBHTTPREQUESTBODYCONDITION:[2,3,1,""],TYPE_LBHTTPREQUESTCOOKIECONDITION:[2,3,1,""],TYPE_LBHTTPREQUESTHEADERCONDITION:[2,3,1,""],TYPE_LBHTTPREQUESTMETHODCONDITION:[2,3,1,""],TYPE_LBHTTPREQUESTURIARGUMENTSCONDITION:[2,3,1,""],TYPE_LBHTTPREQUESTURICONDITION:[2,3,1,""],TYPE_LBHTTPREQUESTVERSIONCONDITION:[2,3,1,""],TYPE_LBHTTPRESPONSEHEADERCONDITION:[2,3,1,""],TYPE_LBIPHEADERCONDITION:[2,3,1,""],TYPE_LBTCPHEADERCONDITION:[2,3,1,""]},"com.vmware.nsx_policy.model_client.LbServerSslProfile":{CIPHERS_ECDHE_ECDSA_WITH_AES_128_CBC_SHA256:[2,3,1,""],CIPHERS_ECDHE_ECDSA_WITH_AES_128_CBC_SHA:[2,3,1,""],CIPHERS_ECDHE_ECDSA_WITH_AES_128_GCM_SHA256:[2,3,1,""],CIPHERS_ECDHE_ECDSA_WITH_AES_256_CBC_SHA384:[2,3,1,""],CIPHERS_ECDHE_ECDSA_WITH_AES_256_CBC_SHA:[2,3,1,""],CIPHERS_ECDHE_ECDSA_WITH_AES_256_GCM_SHA384:[2,3,1,""],CIPHERS_ECDHE_RSA_WITH_AES_128_CBC_SHA256:[2,3,1,""],CIPHERS_ECDHE_RSA_WITH_AES_128_CBC_SHA:[2,3,1,""],CIPHERS_ECDHE_RSA_WITH_AES_128_GCM_SHA256:[2,3,1,""],CIPHERS_ECDHE_RSA_WITH_AES_256_CBC_SHA384:[2,3,1,""],CIPHERS_ECDHE_RSA_WITH_AES_256_CBC_SHA:[2,3,1,""],CIPHERS_ECDHE_RSA_WITH_AES_256_GCM_SHA384:[2,3,1,""],CIPHERS_ECDH_ECDSA_WITH_AES_128_CBC_SHA256:[2,3,1,""],CIPHERS_ECDH_ECDSA_WITH_AES_128_CBC_SHA:[2,3,1,""],CIPHERS_ECDH_ECDSA_WITH_AES_128_GCM_SHA256:[2,3,1,""],CIPHERS_ECDH_ECDSA_WITH_AES_256_CBC_SHA384:[2,3,1,""],CIPHERS_ECDH_ECDSA_WITH_AES_256_CBC_SHA:[2,3,1,""],CIPHERS_ECDH_ECDSA_WITH_AES_256_GCM_SHA384:[2,3,1,""],CIPHERS_ECDH_RSA_WITH_AES_128_CBC_SHA256:[2,3,1,""],CIPHERS_ECDH_RSA_WITH_AES_128_CBC_SHA:[2,3,1,""],CIPHERS_ECDH_RSA_WITH_AES_128_GCM_SHA256:[2,3,1,""],CIPHERS_ECDH_RSA_WITH_AES_256_CBC_SHA384:[2,3,1,""],CIPHERS_ECDH_RSA_WITH_AES_256_CBC_SHA:[2,3,1,""],CIPHERS_ECDH_RSA_WITH_AES_256_GCM_SHA384:[2,3,1,""],CIPHERS_RSA_WITH_3DES_EDE_CBC_SHA:[2,3,1,""],CIPHERS_RSA_WITH_AES_128_CBC_SHA256:[2,3,1,""],CIPHERS_RSA_WITH_AES_128_CBC_SHA:[2,3,1,""],CIPHERS_RSA_WITH_AES_128_GCM_SHA256:[2,3,1,""],CIPHERS_RSA_WITH_AES_256_CBC_SHA256:[2,3,1,""],CIPHERS_RSA_WITH_AES_256_CBC_SHA:[2,3,1,""],CIPHERS_RSA_WITH_AES_256_GCM_SHA384:[2,3,1,""],PROTOCOLS_SSL_V2:[2,3,1,""],PROTOCOLS_SSL_V3:[2,3,1,""],PROTOCOLS_TLS_V1:[2,3,1,""],PROTOCOLS_TLS_V1_1:[2,3,1,""],PROTOCOLS_TLS_V1_2:[2,3,1,""]},"com.vmware.nsx_policy.model_client.LbService":{ERROR_LOG_LEVEL_ALERT:[2,3,1,""],ERROR_LOG_LEVEL_CRITICAL:[2,3,1,""],ERROR_LOG_LEVEL_DEBUG:[2,3,1,""],ERROR_LOG_LEVEL_EMERGENCY:[2,3,1,""],ERROR_LOG_LEVEL_ERROR:[2,3,1,""],ERROR_LOG_LEVEL_INFO:[2,3,1,""],ERROR_LOG_LEVEL_WARNING:[2,3,1,""],SIZE_LARGE:[2,3,1,""],SIZE_MEDIUM:[2,3,1,""],SIZE_SMALL:[2,3,1,""]},"com.vmware.nsx_policy.model_client.LbSnatTranslation":{TYPE_LBSNATAUTOMAP:[2,3,1,""],TYPE_LBSNATIPPOOL:[2,3,1,""]},"com.vmware.nsx_policy.model_client.LbSourceIpPersistenceProfile":{PURGE_FULL:[2,3,1,""],PURGE_NO_PURGE:[2,3,1,""]},"com.vmware.nsx_policy.model_client.LbSslCipherInfo":{CIPHER_ECDHE_ECDSA_WITH_AES_128_CBC_SHA256:[2,3,1,""],CIPHER_ECDHE_ECDSA_WITH_AES_128_CBC_SHA:[2,3,1,""],CIPHER_ECDHE_ECDSA_WITH_AES_128_GCM_SHA256:[2,3,1,""],CIPHER_ECDHE_ECDSA_WITH_AES_256_CBC_SHA384:[2,3,1,""],CIPHER_ECDHE_ECDSA_WITH_AES_256_CBC_SHA:[2,3,1,""],CIPHER_ECDHE_ECDSA_WITH_AES_256_GCM_SHA384:[2,3,1,""],CIPHER_ECDHE_RSA_WITH_AES_128_CBC_SHA256:[2,3,1,""],CIPHER_ECDHE_RSA_WITH_AES_128_CBC_SHA:[2,3,1,""],CIPHER_ECDHE_RSA_WITH_AES_128_GCM_SHA256:[2,3,1,""],CIPHER_ECDHE_RSA_WITH_AES_256_CBC_SHA384:[2,3,1,""],CIPHER_ECDHE_RSA_WITH_AES_256_CBC_SHA:[2,3,1,""],CIPHER_ECDHE_RSA_WITH_AES_256_GCM_SHA384:[2,3,1,""],CIPHER_ECDH_ECDSA_WITH_AES_128_CBC_SHA256:[2,3,1,""],CIPHER_ECDH_ECDSA_WITH_AES_128_CBC_SHA:[2,3,1,""],CIPHER_ECDH_ECDSA_WITH_AES_128_GCM_SHA256:[2,3,1,""],CIPHER_ECDH_ECDSA_WITH_AES_256_CBC_SHA384:[2,3,1,""],CIPHER_ECDH_ECDSA_WITH_AES_256_CBC_SHA:[2,3,1,""],CIPHER_ECDH_ECDSA_WITH_AES_256_GCM_SHA384:[2,3,1,""],CIPHER_ECDH_RSA_WITH_AES_128_CBC_SHA256:[2,3,1,""],CIPHER_ECDH_RSA_WITH_AES_128_CBC_SHA:[2,3,1,""],CIPHER_ECDH_RSA_WITH_AES_128_GCM_SHA256:[2,3,1,""],CIPHER_ECDH_RSA_WITH_AES_256_CBC_SHA384:[2,3,1,""],CIPHER_ECDH_RSA_WITH_AES_256_CBC_SHA:[2,3,1,""],CIPHER_ECDH_RSA_WITH_AES_256_GCM_SHA384:[2,3,1,""],CIPHER_RSA_WITH_3DES_EDE_CBC_SHA:[2,3,1,""],CIPHER_RSA_WITH_AES_128_CBC_SHA256:[2,3,1,""],CIPHER_RSA_WITH_AES_128_CBC_SHA:[2,3,1,""],CIPHER_RSA_WITH_AES_128_GCM_SHA256:[2,3,1,""],CIPHER_RSA_WITH_AES_256_CBC_SHA256:[2,3,1,""],CIPHER_RSA_WITH_AES_256_CBC_SHA:[2,3,1,""],CIPHER_RSA_WITH_AES_256_GCM_SHA384:[2,3,1,""]},"com.vmware.nsx_policy.model_client.LbSslProtocolInfo":{PROTOCOL_SSL_V2:[2,3,1,""],PROTOCOL_SSL_V3:[2,3,1,""],PROTOCOL_TLS_V1:[2,3,1,""],PROTOCOL_TLS_V1_1:[2,3,1,""],PROTOCOL_TLS_V1_2:[2,3,1,""]},"com.vmware.nsx_policy.model_client.LbVirtualServer":{IP_PROTOCOL_TCP:[2,3,1,""],IP_PROTOCOL_UDP:[2,3,1,""]},"com.vmware.nsx_policy.model_client.LbVirtualServerStatus":{STATUS_DETACHED:[2,3,1,""],STATUS_DISABLED:[2,3,1,""],STATUS_DOWN:[2,3,1,""],STATUS_PARTIALLY_UP:[2,3,1,""],STATUS_PRIMARY_DOWN:[2,3,1,""],STATUS_UP:[2,3,1,""]},"com.vmware.nsx_policy.model_client.License":{CAPACITY_TYPE_CPU:[2,3,1,""],CAPACITY_TYPE_USER:[2,3,1,""],CAPACITY_TYPE_VM:[2,3,1,""]},"com.vmware.nsx_policy.model_client.LogicalPort":{ADMIN_STATE_DOWN:[2,3,1,""],ADMIN_STATE_UP:[2,3,1,""],INIT_STATE_VLAN:[2,3,1,""]},"com.vmware.nsx_policy.model_client.LogicalPortAttachment":{ATTACHMENT_TYPE_BRIDGEENDPOINT:[2,3,1,""],ATTACHMENT_TYPE_DHCP_SERVICE:[2,3,1,""],ATTACHMENT_TYPE_L2VPN_SESSION:[2,3,1,""],ATTACHMENT_TYPE_LOGICALROUTER:[2,3,1,""],ATTACHMENT_TYPE_METADATA_PROXY:[2,3,1,""],ATTACHMENT_TYPE_VIF:[2,3,1,""]},"com.vmware.nsx_policy.model_client.LogicalPortMacTableCsvEntry":{MAC_TYPE_LEARNED:[2,3,1,""],MAC_TYPE_STATIC:[2,3,1,""]},"com.vmware.nsx_policy.model_client.LogicalPortMacTableEntry":{MAC_TYPE_LEARNED:[2,3,1,""],MAC_TYPE_STATIC:[2,3,1,""]},"com.vmware.nsx_policy.model_client.LogicalRouter":{FAILOVER_MODE_NON_PREEMPTIVE:[2,3,1,""],FAILOVER_MODE_PREEMPTIVE:[2,3,1,""],HIGH_AVAILABILITY_MODE_ACTIVE:[2,3,1,""],HIGH_AVAILABILITY_MODE_STANDBY:[2,3,1,""],ROUTER_TYPE_TIER0:[2,3,1,""],ROUTER_TYPE_TIER1:[2,3,1,""]},"com.vmware.nsx_policy.model_client.LogicalRouterCentralizedServicePort":{URPF_MODE_NONE:[2,3,1,""],URPF_MODE_STRICT:[2,3,1,""]},"com.vmware.nsx_policy.model_client.LogicalRouterDownLinkPort":{URPF_MODE_NONE:[2,3,1,""],URPF_MODE_STRICT:[2,3,1,""]},"com.vmware.nsx_policy.model_client.LogicalRouterIPTunnelPort":{ADMIN_STATE_DOWN:[2,3,1,""],ADMIN_STATE_UP:[2,3,1,""]},"com.vmware.nsx_policy.model_client.LogicalRouterPort":{RESOURCE_TYPE_LOGICALROUTERCENTRALIZEDSERVICEPORT:[2,3,1,""],RESOURCE_TYPE_LOGICALROUTERDOWNLINKPORT:[2,3,1,""],RESOURCE_TYPE_LOGICALROUTERIPTUNNELPORT:[2,3,1,""],RESOURCE_TYPE_LOGICALROUTERLINKPORTONTIER0:[2,3,1,""],RESOURCE_TYPE_LOGICALROUTERLINKPORTONTIER1:[2,3,1,""],RESOURCE_TYPE_LOGICALROUTERLOOPBACKPORT:[2,3,1,""],RESOURCE_TYPE_LOGICALROUTERUPLINKPORT:[2,3,1,""]},"com.vmware.nsx_policy.model_client.LogicalRouterUpLinkPort":{URPF_MODE_NONE:[2,3,1,""],URPF_MODE_STRICT:[2,3,1,""]},"com.vmware.nsx_policy.model_client.LogicalService":{RESOURCE_TYPE_DHCPRELAYSERVICE:[2,3,1,""]},"com.vmware.nsx_policy.model_client.LogicalSwitch":{ADMIN_STATE_DOWN:[2,3,1,""],ADMIN_STATE_UP:[2,3,1,""],REPLICATION_MODE_MTEP:[2,3,1,""],REPLICATION_MODE_SOURCE:[2,3,1,""]},"com.vmware.nsx_policy.model_client.LogicalSwitchElement":{RESOURCE_TYPE_GROUPELEMENT:[2,3,1,""],RESOURCE_TYPE_LOGICALSWITCHELEMENT:[2,3,1,""],RESOURCE_TYPE_LOGICALT0ROUTERELEMENT:[2,3,1,""],RESOURCE_TYPE_LOGICALT1ROUTERELEMENT:[2,3,1,""],RESOURCE_TYPE_PROCESSELEMENT:[2,3,1,""],RESOURCE_TYPE_VMELEMENT:[2,3,1,""]},"com.vmware.nsx_policy.model_client.LogicalSwitchState":{STATE_FAILED:[2,3,1,""],STATE_IN_PROGRESS:[2,3,1,""],STATE_ORPHANED:[2,3,1,""],STATE_PARTIAL_SUCCESS:[2,3,1,""],STATE_PENDING:[2,3,1,""],STATE_SUCCESS:[2,3,1,""],STATE_UNKNOWN:[2,3,1,""]},"com.vmware.nsx_policy.model_client.LogicalT0RouterElement":{RESOURCE_TYPE_GROUPELEMENT:[2,3,1,""],RESOURCE_TYPE_LOGICALSWITCHELEMENT:[2,3,1,""],RESOURCE_TYPE_LOGICALT0ROUTERELEMENT:[2,3,1,""],RESOURCE_TYPE_LOGICALT1ROUTERELEMENT:[2,3,1,""],RESOURCE_TYPE_PROCESSELEMENT:[2,3,1,""],RESOURCE_TYPE_VMELEMENT:[2,3,1,""]},"com.vmware.nsx_policy.model_client.LogicalT1RouterElement":{RESOURCE_TYPE_GROUPELEMENT:[2,3,1,""],RESOURCE_TYPE_LOGICALSWITCHELEMENT:[2,3,1,""],RESOURCE_TYPE_LOGICALT0ROUTERELEMENT:[2,3,1,""],RESOURCE_TYPE_LOGICALT1ROUTERELEMENT:[2,3,1,""],RESOURCE_TYPE_PROCESSELEMENT:[2,3,1,""],RESOURCE_TYPE_VMELEMENT:[2,3,1,""]},"com.vmware.nsx_policy.model_client.MacLearningSpec":{LIMIT_POLICY_ALLOW:[2,3,1,""],LIMIT_POLICY_DROP:[2,3,1,""]},"com.vmware.nsx_policy.model_client.ManagementClusterNodeStatus":{MGMT_CLUSTER_STATUS_CONNECTED:[2,3,1,""],MGMT_CLUSTER_STATUS_DISCONNECTED:[2,3,1,""],MGMT_CLUSTER_STATUS_UNKNOWN:[2,3,1,""]},"com.vmware.nsx_policy.model_client.ManagementClusterRoleConfig":{TYPE_CONTROLLERCLUSTERROLECONFIG:[2,3,1,""],TYPE_MANAGEMENTCLUSTERROLECONFIG:[2,3,1,""]},"com.vmware.nsx_policy.model_client.ManagementClusterStatus":{STATUS_INITIALIZING:[2,3,1,""],STATUS_STABLE:[2,3,1,""],STATUS_UNKNOWN:[2,3,1,""],STATUS_UNSTABLE:[2,3,1,""]},"com.vmware.nsx_policy.model_client.MgmtConnStatus":{CONNECTIVITY_STATUS_CONNECTED:[2,3,1,""],CONNECTIVITY_STATUS_DISCONNECTED:[2,3,1,""],CONNECTIVITY_STATUS_UNKNOWN:[2,3,1,""]},"com.vmware.nsx_policy.model_client.MirrorDestination":{RESOURCE_TYPE_IPMIRRORDESTINATION:[2,3,1,""],RESOURCE_TYPE_LOGICALPORTMIRRORDESTINATION:[2,3,1,""],RESOURCE_TYPE_PNICMIRRORDESTINATION:[2,3,1,""]},"com.vmware.nsx_policy.model_client.MirrorSource":{RESOURCE_TYPE_LOGICALPORTMIRRORSOURCE:[2,3,1,""],RESOURCE_TYPE_LOGICALSWITCHMIRRORSOURCE:[2,3,1,""],RESOURCE_TYPE_PNICMIRRORSOURCE:[2,3,1,""],RESOURCE_TYPE_VLANMIRRORSOURCE:[2,3,1,""]},"com.vmware.nsx_policy.model_client.NSGroupExpression":{RESOURCE_TYPE_NSGROUPCOMPLEXEXPRESSION:[2,3,1,""],RESOURCE_TYPE_NSGROUPSIMPLEEXPRESSION:[2,3,1,""],RESOURCE_TYPE_NSGROUPTAGEXPRESSION:[2,3,1,""]},"com.vmware.nsx_policy.model_client.NSGroupSimpleExpression":{OP_CONTAINS:[2,3,1,""],OP_EQUALS:[2,3,1,""],OP_STARTSWITH:[2,3,1,""],TARGET_TYPE_IPSET:[2,3,1,""],TARGET_TYPE_LOGICALPORT:[2,3,1,""],TARGET_TYPE_LOGICALSWITCH:[2,3,1,""],TARGET_TYPE_MACSET:[2,3,1,""],TARGET_TYPE_NSGROUP:[2,3,1,""],TARGET_TYPE_VIRTUALMACHINE:[2,3,1,""]},"com.vmware.nsx_policy.model_client.NSGroupTagExpression":{SCOPE_OP_EQUALS:[2,3,1,""],TAG_OP_EQUALS:[2,3,1,""],TARGET_TYPE_LOGICALPORT:[2,3,1,""],TARGET_TYPE_LOGICALSWITCH:[2,3,1,""],TARGET_TYPE_VIRTUALMACHINE:[2,3,1,""]},"com.vmware.nsx_policy.model_client.NSServiceElement":{RESOURCE_TYPE_ALGTYPENSSERVICE:[2,3,1,""],RESOURCE_TYPE_ETHERTYPENSSERVICE:[2,3,1,""],RESOURCE_TYPE_ICMPTYPENSSERVICE:[2,3,1,""],RESOURCE_TYPE_IGMPTYPENSSERVICE:[2,3,1,""],RESOURCE_TYPE_IPPROTOCOLNSSERVICE:[2,3,1,""],RESOURCE_TYPE_L4PORTSETNSSERVICE:[2,3,1,""]},"com.vmware.nsx_policy.model_client.NSServiceGroup":{SERVICE_TYPE_ETHER:[2,3,1,""],SERVICE_TYPE_NON_ETHER:[2,3,1,""]},"com.vmware.nsx_policy.model_client.NamedTeamingPolicy":{POLICY_FAILOVER_ORDER:[2,3,1,""],POLICY_LOADBALANCE_SRCID:[2,3,1,""]},"com.vmware.nsx_policy.model_client.NatRule":{ACTION_DNAT:[2,3,1,""],ACTION_NO_DNAT:[2,3,1,""],ACTION_NO_NAT:[2,3,1,""],ACTION_NO_SNAT:[2,3,1,""],ACTION_REFLEXIVE:[2,3,1,""],ACTION_SNAT:[2,3,1,""]},"com.vmware.nsx_policy.model_client.Network":{HA_MODE_ACTIVE:[2,3,1,""],HA_MODE_STANDBY:[2,3,1,""]},"com.vmware.nsx_policy.model_client.NetworkMigrationSpec":{RESOURCE_TYPE_HOSTPROFILENETWORKMIGRATIONSPEC:[2,3,1,""]},"com.vmware.nsx_policy.model_client.NetworkMigrationSpecTypeIdEntry":{KEY_HOSTPROFILENETWORKMIGRATIONSPEC:[2,3,1,""]},"com.vmware.nsx_policy.model_client.NicMetadata":{INTERFACE_TYPE_DATA1:[2,3,1,""],INTERFACE_TYPE_DATA2:[2,3,1,""],INTERFACE_TYPE_HA1:[2,3,1,""],INTERFACE_TYPE_HA2:[2,3,1,""],INTERFACE_TYPE_MANAGEMENT:[2,3,1,""]},"com.vmware.nsx_policy.model_client.NodeIdServicesMap":{SERVICE_TYPES_API:[2,3,1,""],SERVICE_TYPES_MGMT_CLUSTER:[2,3,1,""],SERVICE_TYPES_MGMT_PLANE:[2,3,1,""]},"com.vmware.nsx_policy.model_client.NodeInterfaceAlias":{IP_CONFIGURATION_DHCP:[2,3,1,""],IP_CONFIGURATION_NOT_CONFIGURED:[2,3,1,""],IP_CONFIGURATION_STATIC:[2,3,1,""]},"com.vmware.nsx_policy.model_client.NodeInterfaceProperties":{ADMIN_STATUS_DOWN:[2,3,1,""],ADMIN_STATUS_UP:[2,3,1,""],INTERFACE_TYPE_PHYSICAL:[2,3,1,""],INTERFACE_TYPE_VIRTUAL:[2,3,1,""],LINK_STATUS_DOWN:[2,3,1,""],LINK_STATUS_UP:[2,3,1,""],SOURCE_CACHED:[2,3,1,""],SOURCE_REALTIME:[2,3,1,""]},"com.vmware.nsx_policy.model_client.NodeInterfaceStatisticsProperties":{SOURCE_CACHED:[2,3,1,""],SOURCE_REALTIME:[2,3,1,""]},"com.vmware.nsx_policy.model_client.NodeStatus":{HOST_NODE_DEPLOYMENT_STATUS_EDGE_CONFIG_ERROR:[2,3,1,""],HOST_NODE_DEPLOYMENT_STATUS_INSTALL_FAILED:[2,3,1,""],HOST_NODE_DEPLOYMENT_STATUS_INSTALL_IN_PROGRESS:[2,3,1,""],HOST_NODE_DEPLOYMENT_STATUS_INSTALL_SUCCESSFUL:[2,3,1,""],HOST_NODE_DEPLOYMENT_STATUS_NODE_NOT_READY:[2,3,1,""],HOST_NODE_DEPLOYMENT_STATUS_NODE_READY:[2,3,1,""],HOST_NODE_DEPLOYMENT_STATUS_NOT_AVAILABLE:[2,3,1,""],HOST_NODE_DEPLOYMENT_STATUS_NOT_PREPARED:[2,3,1,""],HOST_NODE_DEPLOYMENT_STATUS_PENDING_UPGRADE:[2,3,1,""],HOST_NODE_DEPLOYMENT_STATUS_REGISTRATION_FAILED:[2,3,1,""],HOST_NODE_DEPLOYMENT_STATUS_REGISTRATION_PENDING:[2,3,1,""],HOST_NODE_DEPLOYMENT_STATUS_UNINSTALL_FAILED:[2,3,1,""],HOST_NODE_DEPLOYMENT_STATUS_UNINSTALL_IN_PROGRESS:[2,3,1,""],HOST_NODE_DEPLOYMENT_STATUS_UNINSTALL_SUCCESSFUL:[2,3,1,""],HOST_NODE_DEPLOYMENT_STATUS_UPGRADE_FAILED:[2,3,1,""],HOST_NODE_DEPLOYMENT_STATUS_UPGRADE_IN_PROGRESS:[2,3,1,""],HOST_NODE_DEPLOYMENT_STATUS_VM_DEPLOYMENT_FAILED:[2,3,1,""],HOST_NODE_DEPLOYMENT_STATUS_VM_DEPLOYMENT_IN_PROGRESS:[2,3,1,""],HOST_NODE_DEPLOYMENT_STATUS_VM_DEPLOYMENT_QUEUED:[2,3,1,""],HOST_NODE_DEPLOYMENT_STATUS_VM_DEPLOYMENT_RESTARTED:[2,3,1,""],HOST_NODE_DEPLOYMENT_STATUS_VM_POWER_OFF_FAILED:[2,3,1,""],HOST_NODE_DEPLOYMENT_STATUS_VM_POWER_OFF_IN_PROGRESS:[2,3,1,""],HOST_NODE_DEPLOYMENT_STATUS_VM_POWER_ON_FAILED:[2,3,1,""],HOST_NODE_DEPLOYMENT_STATUS_VM_POWER_ON_IN_PROGRESS:[2,3,1,""],HOST_NODE_DEPLOYMENT_STATUS_VM_UNDEPLOY_FAILED:[2,3,1,""],HOST_NODE_DEPLOYMENT_STATUS_VM_UNDEPLOY_IN_PROGRESS:[2,3,1,""],HOST_NODE_DEPLOYMENT_STATUS_VM_UNDEPLOY_SUCCESSFUL:[2,3,1,""],LCP_CONNECTIVITY_STATUS_DEGRADED:[2,3,1,""],LCP_CONNECTIVITY_STATUS_DOWN:[2,3,1,""],LCP_CONNECTIVITY_STATUS_UNKNOWN:[2,3,1,""],LCP_CONNECTIVITY_STATUS_UP:[2,3,1,""],MAINTENANCE_MODE_ENTERING:[2,3,1,""],MAINTENANCE_MODE_EXITING:[2,3,1,""],MAINTENANCE_MODE_OFF:[2,3,1,""],MAINTENANCE_MODE_ON:[2,3,1,""],MPA_CONNECTIVITY_STATUS_DOWN:[2,3,1,""],MPA_CONNECTIVITY_STATUS_UNKNOWN:[2,3,1,""],MPA_CONNECTIVITY_STATUS_UP:[2,3,1,""]},"com.vmware.nsx_policy.model_client.NodeStatusProperties":{SOURCE_CACHED:[2,3,1,""],SOURCE_REALTIME:[2,3,1,""]},"com.vmware.nsx_policy.model_client.NsxRole":{PERMISSIONS_CRUD:[2,3,1,""],PERMISSIONS_EXECUTE:[2,3,1,""],PERMISSIONS_NONE:[2,3,1,""],PERMISSIONS_READ:[2,3,1,""],PERMISSIONS_READ_API:[2,3,1,""],PERMISSIONS_READ_WRITE_API:[2,3,1,""],ROLE_AUDITOR:[2,3,1,""],ROLE_CLOUD_ADMIN:[2,3,1,""],ROLE_CLOUD_AUDITOR:[2,3,1,""],ROLE_CLOUD_SERVICE_ADMIN:[2,3,1,""],ROLE_CLOUD_SERVICE_AUDITOR:[2,3,1,""],ROLE_ENTERPRISE_ADMIN:[2,3,1,""],ROLE_LB_ADMIN:[2,3,1,""],ROLE_LB_AUDITOR:[2,3,1,""],ROLE_NETWORK_ENGINEER:[2,3,1,""],ROLE_NETWORK_OP:[2,3,1,""],ROLE_READ_ONLY_API_USERS:[2,3,1,""],ROLE_READ_WRITE_API_USERS:[2,3,1,""],ROLE_SECURITY_ENGINEER:[2,3,1,""],ROLE_SECURITY_OP:[2,3,1,""],ROLE_SITE_RELIABILITY_AUDITOR:[2,3,1,""],ROLE_SITE_RELIABILITY_ENGINEER:[2,3,1,""]},"com.vmware.nsx_policy.model_client.ObjectRolePermissionGroup":{OPERATION_CRUD:[2,3,1,""],OPERATION_EXECUTE:[2,3,1,""],OPERATION_NONE:[2,3,1,""],OPERATION_READ:[2,3,1,""]},"com.vmware.nsx_policy.model_client.PBRRule":{ACTION_OVERLAY:[2,3,1,""],ACTION_OVERLAY_NAT:[2,3,1,""],ACTION_UNDERLAY:[2,3,1,""],ACTION_UNDERLAY_NAT:[2,3,1,""]},"com.vmware.nsx_policy.model_client.PacketCaptureOption":{NAME_DSTIP:[2,3,1,""],NAME_DSTMAC:[2,3,1,""],NAME_DSTPORT:[2,3,1,""],NAME_ETHTYPE:[2,3,1,""],NAME_IP:[2,3,1,""],NAME_IPPROTO:[2,3,1,""],NAME_MAC:[2,3,1,""],NAME_PORT:[2,3,1,""],NAME_SRCIP:[2,3,1,""],NAME_SRCMAC:[2,3,1,""],NAME_SRCPORT:[2,3,1,""],NAME_VLAN:[2,3,1,""],NAME_VNI:[2,3,1,""]},"com.vmware.nsx_policy.model_client.PacketCaptureRequest":{CAPMODE_STANDALONE:[2,3,1,""],CAPMODE_STREAM:[2,3,1,""],CAPPOINT_DVFILTER:[2,3,1,""],CAPPOINT_LOGICALPORT:[2,3,1,""],CAPPOINT_OTHERS:[2,3,1,""],CAPPOINT_VDRPORT:[2,3,1,""],CAPPOINT_VMKNIC:[2,3,1,""],CAPPOINT_VMNIC:[2,3,1,""],CAPPOINT_VNIC:[2,3,1,""],CAPSOURCE_CLI:[2,3,1,""],CAPSOURCE_UI:[2,3,1,""],DIRECTION_DUAL:[2,3,1,""],DIRECTION_INPUT:[2,3,1,""],DIRECTION_OUTPUT:[2,3,1,""],FILTERTYPE_POST:[2,3,1,""],FILTERTYPE_PRE:[2,3,1,""]},"com.vmware.nsx_policy.model_client.PacketCaptureSession":{SESSIONSTATUS_CREATED:[2,3,1,""],SESSIONSTATUS_ERROR:[2,3,1,""],SESSIONSTATUS_FINISHED:[2,3,1,""],SESSIONSTATUS_STARTED:[2,3,1,""],SESSIONSTATUS_STOPPED:[2,3,1,""]},"com.vmware.nsx_policy.model_client.PerStepRestoreStatus":{VALUE_FAILED:[2,3,1,""],VALUE_INITIAL:[2,3,1,""],VALUE_RUNNING:[2,3,1,""],VALUE_SUCCESS:[2,3,1,""],VALUE_SUSPENDED_BY_USER:[2,3,1,""],VALUE_SUSPENDED_FOR_USER_ACTION:[2,3,1,""]},"com.vmware.nsx_policy.model_client.PnicBondStatus":{STATUS_DEGRADED:[2,3,1,""],STATUS_DOWN:[2,3,1,""],STATUS_UNKNOWN:[2,3,1,""],STATUS_UP:[2,3,1,""],TYPE_BOND:[2,3,1,""],TYPE_PNIC:[2,3,1,""],TYPE_UNKNOWN_TYPE:[2,3,1,""]},"com.vmware.nsx_policy.model_client.PolicyDnsForwarder":{LOG_LEVEL_DEBUG:[2,3,1,""],LOG_LEVEL_DISABLED:[2,3,1,""],LOG_LEVEL_ERROR:[2,3,1,""],LOG_LEVEL_FATAL:[2,3,1,""],LOG_LEVEL_INFO:[2,3,1,""],LOG_LEVEL_TRACE:[2,3,1,""],LOG_LEVEL_WARNING:[2,3,1,""]},"com.vmware.nsx_policy.model_client.PolicyLbMonitorProfile":{RESOURCE_TYPE_HTTPPOLICYLBMONITORPROFILE:[2,3,1,""],RESOURCE_TYPE_HTTPSPOLICYLBMONITORPROFILE:[2,3,1,""],RESOURCE_TYPE_ICMPPOLICYLBMONITORPROFILE:[2,3,1,""],RESOURCE_TYPE_TCPPOLICYLBMONITORPROFILE:[2,3,1,""],RESOURCE_TYPE_UDPPOLICYLBMONITORPROFILE:[2,3,1,""]},"com.vmware.nsx_policy.model_client.PolicyLbPersistenceProfile":{RESOURCE_TYPE_CUSTOMPOLICYLBPERSISTENCEPROFILE:[2,3,1,""],RESOURCE_TYPE_L4POLICYLBPERSISTENCEPROFILE:[2,3,1,""],RESOURCE_TYPE_L7POLICYLBPERSISTENCEPROFILE:[2,3,1,""]},"com.vmware.nsx_policy.model_client.PolicyLbPoolAccess":{ALGORITHM_LEAST_CONNECTION:[2,3,1,""],ALGORITHM_ROUND_ROBIN:[2,3,1,""]},"com.vmware.nsx_policy.model_client.PolicyLbRule":{MATCH_STRATEGY_ALL:[2,3,1,""],MATCH_STRATEGY_ANY:[2,3,1,""]},"com.vmware.nsx_policy.model_client.PolicyLbVirtualServer":{RESOURCE_TYPE_CUSTOMPOLICYLBVIRTUALSERVER:[2,3,1,""],RESOURCE_TYPE_HTTPPOLICYLBVIRTUALSERVER:[2,3,1,""],RESOURCE_TYPE_HTTPSPOLICYLBVIRTUALSERVER:[2,3,1,""],RESOURCE_TYPE_TCPPOLICYLBVIRTUALSERVER:[2,3,1,""],RESOURCE_TYPE_UDPPOLICYLBVIRTUALSERVER:[2,3,1,""],TRAFFIC_SOURCE_EXTERNAL_PUBLIC:[2,3,1,""],TRAFFIC_SOURCE_EXTERNAL_VPN:[2,3,1,""],TRAFFIC_SOURCE_INTERNAL:[2,3,1,""]},"com.vmware.nsx_policy.model_client.PolicyNat":{NAT_TYPE_DEFAULT:[2,3,1,""],NAT_TYPE_INTERNAL:[2,3,1,""],NAT_TYPE_USER:[2,3,1,""]},"com.vmware.nsx_policy.model_client.PolicyNatRule":{ACTION_DNAT:[2,3,1,""],ACTION_NO_DNAT:[2,3,1,""],ACTION_NO_SNAT:[2,3,1,""],ACTION_REFLEXIVE:[2,3,1,""],ACTION_SNAT:[2,3,1,""]},"com.vmware.nsx_policy.model_client.PolicyRealizedResource":{STATE_ERROR:[2,3,1,""],STATE_REALIZED:[2,3,1,""],STATE_UNAVAILABLE:[2,3,1,""],STATE_UNREALIZED:[2,3,1,""]},"com.vmware.nsx_policy.model_client.PolicyServiceInstance":{DEPLOYMENT_MODE_ACTIVE_STANDBY:[2,3,1,""],DEPLOYMENT_MODE_STAND_ALONE:[2,3,1,""],FAILURE_POLICY_ALLOW:[2,3,1,""],FAILURE_POLICY_BLOCK:[2,3,1,""],TRANSPORT_TYPE_L2_BRIDGE:[2,3,1,""],TRANSPORT_TYPE_L3_ROUTED:[2,3,1,""]},"com.vmware.nsx_policy.model_client.PoolMember":{ADMIN_STATE_DISABLED:[2,3,1,""],ADMIN_STATE_ENABLED:[2,3,1,""],ADMIN_STATE_GRACEFUL_DISABLED:[2,3,1,""]},"com.vmware.nsx_policy.model_client.PoolMemberGroup":{IP_REVISION_FILTER_IPV4:[2,3,1,""],IP_REVISION_FILTER_IPV4_IPV6:[2,3,1,""],IP_REVISION_FILTER_IPV6:[2,3,1,""]},"com.vmware.nsx_policy.model_client.PoolMemberSetting":{ADMIN_STATE_DISABLED:[2,3,1,""],ADMIN_STATE_ENABLED:[2,3,1,""],ADMIN_STATE_GRACEFUL_DISABLED:[2,3,1,""]},"com.vmware.nsx_policy.model_client.PortMirroringInstance":{DIRECTION_BIDIRECTIONAL:[2,3,1,""],DIRECTION_EGRESS:[2,3,1,""],DIRECTION_INGRESS:[2,3,1,""]},"com.vmware.nsx_policy.model_client.PortMirroringSession":{DIRECTION_BIDIRECTIONAL:[2,3,1,""],DIRECTION_EGRESS:[2,3,1,""],DIRECTION_INGRESS:[2,3,1,""],SESSION_TYPE_L3PORTMIRRORSESSION:[2,3,1,""],SESSION_TYPE_LOCALPORTMIRRORSESSION:[2,3,1,""],SESSION_TYPE_LOGICALLOCALPORTMIRRORSESSION:[2,3,1,""],SESSION_TYPE_LOGICALPORTMIRRORSESSION:[2,3,1,""],SESSION_TYPE_RSPANDSTMIRRORSESSION:[2,3,1,""],SESSION_TYPE_RSPANSRCMIRRORSESSION:[2,3,1,""],SESSION_TYPE_UPLINKPORTMIRRORSESSION:[2,3,1,""]},"com.vmware.nsx_policy.model_client.PortMirroringSwitchingProfile":{DIRECTION_BIDIRECTIONAL:[2,3,1,""],DIRECTION_EGRESS:[2,3,1,""],DIRECTION_INGRESS:[2,3,1,""]},"com.vmware.nsx_policy.model_client.PrefixConfig":{ACTION_DENY:[2,3,1,""],ACTION_PERMIT:[2,3,1,""]},"com.vmware.nsx_policy.model_client.PrincipalIdentity":{PERMISSION_GROUP_READ_ONLY_API_USERS:[2,3,1,""],PERMISSION_GROUP_READ_WRITE_API_USERS:[2,3,1,""],PERMISSION_GROUP_SUPERUSERS:[2,3,1,""],PERMISSION_GROUP_UNDEFINED:[2,3,1,""]},"com.vmware.nsx_policy.model_client.ProcessConnection":{PROTOCOL_INVALID:[2,3,1,""],PROTOCOL_TCP:[2,3,1,""],PROTOCOL_UDP:[2,3,1,""]},"com.vmware.nsx_policy.model_client.ProcessElement":{RESOURCE_TYPE_GROUPELEMENT:[2,3,1,""],RESOURCE_TYPE_LOGICALSWITCHELEMENT:[2,3,1,""],RESOURCE_TYPE_LOGICALT0ROUTERELEMENT:[2,3,1,""],RESOURCE_TYPE_LOGICALT1ROUTERELEMENT:[2,3,1,""],RESOURCE_TYPE_PROCESSELEMENT:[2,3,1,""],RESOURCE_TYPE_VMELEMENT:[2,3,1,""]},"com.vmware.nsx_policy.model_client.PropertyItem":{TYPE_DATE:[2,3,1,""],TYPE_NUMBER:[2,3,1,""],TYPE_STRING:[2,3,1,""],TYPE_URL:[2,3,1,""]},"com.vmware.nsx_policy.model_client.Provider":{HA_MODE_ACTIVE:[2,3,1,""],HA_MODE_STANDBY:[2,3,1,""]},"com.vmware.nsx_policy.model_client.QosBaseRateShaper":{RESOURCE_TYPE_EGRESSRATESHAPER:[2,3,1,""],RESOURCE_TYPE_INGRESSBROADCASTRATESHAPER:[2,3,1,""],RESOURCE_TYPE_INGRESSRATESHAPER:[2,3,1,""]},"com.vmware.nsx_policy.model_client.RealizedDiscoverySession":{STATE_ERROR:[2,3,1,""],STATE_REALIZED:[2,3,1,""],STATE_UNAVAILABLE:[2,3,1,""],STATE_UNREALIZED:[2,3,1,""],STATUS_COMPLETED:[2,3,1,""],STATUS_FAILED:[2,3,1,""],STATUS_INVALID:[2,3,1,""],STATUS_IN_PROGRESS:[2,3,1,""],STATUS_STARTED:[2,3,1,""]},"com.vmware.nsx_policy.model_client.RealizedEnforcementPoint":{STATE_ERROR:[2,3,1,""],STATE_REALIZED:[2,3,1,""],STATE_UNAVAILABLE:[2,3,1,""],STATE_UNREALIZED:[2,3,1,""]},"com.vmware.nsx_policy.model_client.RealizedFirewall":{RESOURCE_TYPE_REALIZEDFIREWALLSECTION:[2,3,1,""],STATE_ERROR:[2,3,1,""],STATE_REALIZED:[2,3,1,""],STATE_UNAVAILABLE:[2,3,1,""],STATE_UNREALIZED:[2,3,1,""]},"com.vmware.nsx_policy.model_client.RealizedFirewallRule":{ACTION_ALLOW:[2,3,1,""],ACTION_DROP:[2,3,1,""],ACTION_REJECT:[2,3,1,""],DIRECTION_IN:[2,3,1,""],DIRECTION_IN_OUT:[2,3,1,""],DIRECTION_OUT:[2,3,1,""],STATE_ERROR:[2,3,1,""],STATE_REALIZED:[2,3,1,""],STATE_UNAVAILABLE:[2,3,1,""],STATE_UNREALIZED:[2,3,1,""]},"com.vmware.nsx_policy.model_client.RealizedFirewallSection":{SECTION_TYPE_LAYER2:[2,3,1,""],SECTION_TYPE_LAYER3:[2,3,1,""]},"com.vmware.nsx_policy.model_client.RealizedFirewalls":{STATE_ERROR:[2,3,1,""],STATE_REALIZED:[2,3,1,""],STATE_UNAVAILABLE:[2,3,1,""],STATE_UNREALIZED:[2,3,1,""]},"com.vmware.nsx_policy.model_client.RealizedGroup":{RESOURCE_TYPE_REALIZEDNSGROUP:[2,3,1,""],RESOURCE_TYPE_REALIZEDSECURITYGROUP:[2,3,1,""],STATE_ERROR:[2,3,1,""],STATE_REALIZED:[2,3,1,""],STATE_UNAVAILABLE:[2,3,1,""],STATE_UNREALIZED:[2,3,1,""]},"com.vmware.nsx_policy.model_client.RealizedGroups":{STATE_ERROR:[2,3,1,""],STATE_REALIZED:[2,3,1,""],STATE_UNAVAILABLE:[2,3,1,""],STATE_UNREALIZED:[2,3,1,""]},"com.vmware.nsx_policy.model_client.RealizedIPSet":{STATE_ERROR:[2,3,1,""],STATE_REALIZED:[2,3,1,""],STATE_UNAVAILABLE:[2,3,1,""],STATE_UNREALIZED:[2,3,1,""]},"com.vmware.nsx_policy.model_client.RealizedLogicalPort":{STATE_ERROR:[2,3,1,""],STATE_REALIZED:[2,3,1,""],STATE_UNAVAILABLE:[2,3,1,""],STATE_UNREALIZED:[2,3,1,""],STATUS_DOWN:[2,3,1,""],STATUS_UNKNOWN:[2,3,1,""],STATUS_UP:[2,3,1,""]},"com.vmware.nsx_policy.model_client.RealizedLogicalSwitch":{STATE_ERROR:[2,3,1,""],STATE_REALIZED:[2,3,1,""],STATE_UNAVAILABLE:[2,3,1,""],STATE_UNREALIZED:[2,3,1,""]},"com.vmware.nsx_policy.model_client.RealizedMACSet":{STATE_ERROR:[2,3,1,""],STATE_REALIZED:[2,3,1,""],STATE_UNAVAILABLE:[2,3,1,""],STATE_UNREALIZED:[2,3,1,""]},"com.vmware.nsx_policy.model_client.RealizedNSGroupMemberEvaluation":{STATE_ERROR:[2,3,1,""],STATE_REALIZED:[2,3,1,""],STATE_UNAVAILABLE:[2,3,1,""],STATE_UNREALIZED:[2,3,1,""]},"com.vmware.nsx_policy.model_client.RealizedNSService":{SERVICE_TYPE_SERVICE:[2,3,1,""],SERVICE_TYPE_SERVICE_GROUP:[2,3,1,""]},"com.vmware.nsx_policy.model_client.RealizedSecurityGroupMemberEvaluation":{STATE_ERROR:[2,3,1,""],STATE_REALIZED:[2,3,1,""],STATE_UNAVAILABLE:[2,3,1,""],STATE_UNREALIZED:[2,3,1,""]},"com.vmware.nsx_policy.model_client.RealizedService":{RESOURCE_TYPE_REALIZEDNSSERVICE:[2,3,1,""],STATE_ERROR:[2,3,1,""],STATE_REALIZED:[2,3,1,""],STATE_UNAVAILABLE:[2,3,1,""],STATE_UNREALIZED:[2,3,1,""]},"com.vmware.nsx_policy.model_client.RealizedServices":{STATE_ERROR:[2,3,1,""],STATE_REALIZED:[2,3,1,""],STATE_UNAVAILABLE:[2,3,1,""],STATE_UNREALIZED:[2,3,1,""]},"com.vmware.nsx_policy.model_client.RealizedState":{STATE_ERROR:[2,3,1,""],STATE_REALIZED:[2,3,1,""],STATE_UNAVAILABLE:[2,3,1,""],STATE_UNREALIZED:[2,3,1,""]},"com.vmware.nsx_policy.model_client.RealizedVirtualMachine":{POWER_STATE_UNKNOWN:[2,3,1,""],POWER_STATE_VM_RUNNING:[2,3,1,""],POWER_STATE_VM_STOPPED:[2,3,1,""],POWER_STATE_VM_SUSPENDED:[2,3,1,""],STATE_ERROR:[2,3,1,""],STATE_REALIZED:[2,3,1,""],STATE_UNAVAILABLE:[2,3,1,""],STATE_UNREALIZED:[2,3,1,""]},"com.vmware.nsx_policy.model_client.RedirectionCommunicationEntry":{ACTION_DO_NOT_REDIRECT:[2,3,1,""],ACTION_REDIRECT:[2,3,1,""]},"com.vmware.nsx_policy.model_client.RedistributionRule":{DESTINATION_BGP:[2,3,1,""],DESTINATION_NSX_CONNECTED:[2,3,1,""],DESTINATION_NSX_STATIC:[2,3,1,""],DESTINATION_STATIC:[2,3,1,""],DESTINATION_TIER0_NAT:[2,3,1,""],DESTINATION_TIER1_LB_SNAT:[2,3,1,""],DESTINATION_TIER1_LB_VIP:[2,3,1,""],DESTINATION_TIER1_NAT:[2,3,1,""],SOURCES_BGP:[2,3,1,""],SOURCES_NSX_CONNECTED:[2,3,1,""],SOURCES_NSX_STATIC:[2,3,1,""],SOURCES_STATIC:[2,3,1,""],SOURCES_TIER0_NAT:[2,3,1,""],SOURCES_TIER1_LB_SNAT:[2,3,1,""],SOURCES_TIER1_LB_VIP:[2,3,1,""],SOURCES_TIER1_NAT:[2,3,1,""]},"com.vmware.nsx_policy.model_client.RenderConfiguration":{COLOR_BLUE:[2,3,1,""],COLOR_GREEN:[2,3,1,""],COLOR_GREY:[2,3,1,""],COLOR_RED:[2,3,1,""],COLOR_SKY_BLUE:[2,3,1,""],COLOR_YELLOW:[2,3,1,""]},"com.vmware.nsx_policy.model_client.RoleBinding":{TYPE_LOCAL_USER:[2,3,1,""],TYPE_PRINCIPAL_IDENTITY:[2,3,1,""],TYPE_REMOTE_GROUP:[2,3,1,""],TYPE_REMOTE_USER:[2,3,1,""]},"com.vmware.nsx_policy.model_client.RouteMapSequence":{ACTION_DENY:[2,3,1,""],ACTION_PERMIT:[2,3,1,""]},"com.vmware.nsx_policy.model_client.RuleState":{STATE_FAILED:[2,3,1,""],STATE_IN_PROGRESS:[2,3,1,""],STATE_ORPHANED:[2,3,1,""],STATE_PARTIAL_SUCCESS:[2,3,1,""],STATE_PENDING:[2,3,1,""],STATE_SUCCESS:[2,3,1,""],STATE_UNKNOWN:[2,3,1,""]},"com.vmware.nsx_policy.model_client.SVMDeploymentSpec":{HOST_TYPE_ESXI:[2,3,1,""],HOST_TYPE_RHELKVM:[2,3,1,""],HOST_TYPE_UBUNTUKVM:[2,3,1,""],SERVICE_FORM_FACTOR_LARGE:[2,3,1,""],SERVICE_FORM_FACTOR_MEDIUM:[2,3,1,""],SERVICE_FORM_FACTOR_SMALL:[2,3,1,""]},"com.vmware.nsx_policy.model_client.ServerSslProfileBinding":{SERVER_AUTH_IGNORE:[2,3,1,""],SERVER_AUTH_REQUIRED:[2,3,1,""]},"com.vmware.nsx_policy.model_client.ServiceAssociationListResult":{SERVICE_TYPE_FIREWALLSERVICEASSOCIATIONLISTRESULT:[2,3,1,""],SERVICE_TYPE_IPFIXSERVICEASSOCIATIONLISTRESULT:[2,3,1,""]},"com.vmware.nsx_policy.model_client.ServiceAttachment":{ATTACHMENT_STATUS_DOWN:[2,3,1,""],ATTACHMENT_STATUS_UP:[2,3,1,""]},"com.vmware.nsx_policy.model_client.ServiceDefinition":{ATTACHMENT_POINT_TIER0_LR:[2,3,1,""],ATTACHMENT_POINT_TIER1_LR:[2,3,1,""],FUNCTIONALITIES_HCX:[2,3,1,""],FUNCTIONALITIES_IDS_IPS:[2,3,1,""],FUNCTIONALITIES_NG_FW:[2,3,1,""],IMPLEMENTATIONS_EAST_WEST:[2,3,1,""],IMPLEMENTATIONS_NORTH_SOUTH:[2,3,1,""],ON_FAILURE_POLICY_ALLOW:[2,3,1,""],ON_FAILURE_POLICY_BLOCK:[2,3,1,""],TRANSPORTS_L2_BRIDGE:[2,3,1,""],TRANSPORTS_L3_ROUTED:[2,3,1,""]},"com.vmware.nsx_policy.model_client.ServiceEntry":{RESOURCE_TYPE_ALGTYPESERVICEENTRY:[2,3,1,""],RESOURCE_TYPE_ICMPTYPESERVICEENTRY:[2,3,1,""],RESOURCE_TYPE_IGMPTYPESERVICEENTRY:[2,3,1,""],RESOURCE_TYPE_IPPROTOCOLSERVICEENTRY:[2,3,1,""],RESOURCE_TYPE_L4PORTSETSERVICEENTRY:[2,3,1,""]},"com.vmware.nsx_policy.model_client.ServiceInsertionRule":{ACTION_ALLOW:[2,3,1,""],ACTION_DO_NOT_REDIRECT:[2,3,1,""],ACTION_DROP:[2,3,1,""],ACTION_REDIRECT:[2,3,1,""],ACTION_REJECT:[2,3,1,""],DIRECTION_IN:[2,3,1,""],DIRECTION_IN_OUT:[2,3,1,""],DIRECTION_OUT:[2,3,1,""],IP_PROTOCOL_IPV4:[2,3,1,""],IP_PROTOCOL_IPV4_IPV6:[2,3,1,""],IP_PROTOCOL_IPV6:[2,3,1,""]},"com.vmware.nsx_policy.model_client.ServiceInsertionSection":{SECTION_TYPE_L3REDIRECT:[2,3,1,""],SECTION_TYPE_LAYER2:[2,3,1,""],SECTION_TYPE_LAYER3:[2,3,1,""]},"com.vmware.nsx_policy.model_client.ServiceInsertionSectionRuleList":{SECTION_TYPE_L3REDIRECT:[2,3,1,""],SECTION_TYPE_LAYER2:[2,3,1,""],SECTION_TYPE_LAYER3:[2,3,1,""]},"com.vmware.nsx_policy.model_client.ServiceInstance":{ATTACHMENT_POINT_TIER0_LR:[2,3,1,""],ATTACHMENT_POINT_TIER1_LR:[2,3,1,""],IMPLEMENTATION_TYPE_EAST_WEST:[2,3,1,""],IMPLEMENTATION_TYPE_NORTH_SOUTH:[2,3,1,""]},"com.vmware.nsx_policy.model_client.ServiceInstanceEndpoint":{ENDPOINT_TYPE_LOGICAL:[2,3,1,""],ENDPOINT_TYPE_VIRTUAL:[2,3,1,""]},"com.vmware.nsx_policy.model_client.ServiceProfile":{RESOURCE_TYPE_DHCPRELAYPROFILE:[2,3,1,""]},"com.vmware.nsx_policy.model_client.SpoofGuardSwitchingProfile":{WHITE_LIST_PROVIDERS_LPORT_BINDINGS:[2,3,1,""],WHITE_LIST_PROVIDERS_LSWITCH_BINDINGS:[2,3,1,""]},"com.vmware.nsx_policy.model_client.StaticRouteNextHop":{BLACKHOLE_ACTION_DISCARD:[2,3,1,""]},"com.vmware.nsx_policy.model_client.StatusCount":{STATUS_DEGRADED:[2,3,1,""],STATUS_DOWN:[2,3,1,""],STATUS_UNKNOWN:[2,3,1,""],STATUS_UP:[2,3,1,""]},"com.vmware.nsx_policy.model_client.SwitchingProfileTypeIdEntry":{KEY_IPDISCOVERYSWITCHINGPROFILE:[2,3,1,""],KEY_MACMANAGEMENTSWITCHINGPROFILE:[2,3,1,""],KEY_PORTMIRRORINGSWITCHINGPROFILE:[2,3,1,""],KEY_QOSSWITCHINGPROFILE:[2,3,1,""],KEY_SPOOFGUARDSWITCHINGPROFILE:[2,3,1,""],KEY_SWITCHSECURITYSWITCHINGPROFILE:[2,3,1,""]},"com.vmware.nsx_policy.model_client.TargetResourceStatus":{TARGET_STATUS_DISABLED:[2,3,1,""],TARGET_STATUS_ENABLED:[2,3,1,""]},"com.vmware.nsx_policy.model_client.TaskProperties":{STATUS_CANCELED:[2,3,1,""],STATUS_CANCELING:[2,3,1,""],STATUS_ERROR:[2,3,1,""],STATUS_KILLED:[2,3,1,""],STATUS_RUNNING:[2,3,1,""],STATUS_SUCCESS:[2,3,1,""]},"com.vmware.nsx_policy.model_client.TeamingPolicy":{POLICY_FAILOVER_ORDER:[2,3,1,""],POLICY_LOADBALANCE_SRCID:[2,3,1,""]},"com.vmware.nsx_policy.model_client.TelemetryProxy":{SCHEME_HTTP:[2,3,1,""],SCHEME_HTTPS:[2,3,1,""]},"com.vmware.nsx_policy.model_client.Traceflow":{OPERATION_STATE_FAILED:[2,3,1,""],OPERATION_STATE_FINISHED:[2,3,1,""],OPERATION_STATE_IN_PROGRESS:[2,3,1,""]},"com.vmware.nsx_policy.model_client.TraceflowObservation":{COMPONENT_SUB_TYPE_LR_TIER0:[2,3,1,""],COMPONENT_SUB_TYPE_LR_TIER1:[2,3,1,""],COMPONENT_SUB_TYPE_LR_VRF_TIER0:[2,3,1,""],COMPONENT_SUB_TYPE_LS_TRANSIT:[2,3,1,""],COMPONENT_SUB_TYPE_UNKNOWN:[2,3,1,""],COMPONENT_TYPE_BRIDGE:[2,3,1,""],COMPONENT_TYPE_DFW:[2,3,1,""],COMPONENT_TYPE_EDGE_HOSTSWITCH:[2,3,1,""],COMPONENT_TYPE_EDGE_TUNNEL:[2,3,1,""],COMPONENT_TYPE_LR:[2,3,1,""],COMPONENT_TYPE_LS:[2,3,1,""],COMPONENT_TYPE_PHYSICAL:[2,3,1,""],COMPONENT_TYPE_UNKNOWN:[2,3,1,""],RESOURCE_TYPE_TRACEFLOWOBSERVATIONDELIVERED:[2,3,1,""],RESOURCE_TYPE_TRACEFLOWOBSERVATIONDROPPED:[2,3,1,""],RESOURCE_TYPE_TRACEFLOWOBSERVATIONDROPPEDLOGICAL:[2,3,1,""],RESOURCE_TYPE_TRACEFLOWOBSERVATIONFORWARDED:[2,3,1,""],RESOURCE_TYPE_TRACEFLOWOBSERVATIONFORWARDEDLOGICAL:[2,3,1,""],RESOURCE_TYPE_TRACEFLOWOBSERVATIONRECEIVED:[2,3,1,""],RESOURCE_TYPE_TRACEFLOWOBSERVATIONRECEIVEDLOGICAL:[2,3,1,""],TRANSPORT_NODE_TYPE_EDGE:[2,3,1,""],TRANSPORT_NODE_TYPE_ESX:[2,3,1,""],TRANSPORT_NODE_TYPE_HYPERV:[2,3,1,""],TRANSPORT_NODE_TYPE_OTHERS:[2,3,1,""],TRANSPORT_NODE_TYPE_PUBLIC_CLOUD_GATEWAY_NODE:[2,3,1,""],TRANSPORT_NODE_TYPE_RHELKVM:[2,3,1,""],TRANSPORT_NODE_TYPE_UBUNTUKVM:[2,3,1,""]},"com.vmware.nsx_policy.model_client.TraceflowObservationDelivered":{COMPONENT_SUB_TYPE_LR_TIER0:[2,3,1,""],COMPONENT_SUB_TYPE_LR_TIER1:[2,3,1,""],COMPONENT_SUB_TYPE_LR_VRF_TIER0:[2,3,1,""],COMPONENT_SUB_TYPE_LS_TRANSIT:[2,3,1,""],COMPONENT_SUB_TYPE_UNKNOWN:[2,3,1,""],COMPONENT_TYPE_BRIDGE:[2,3,1,""],COMPONENT_TYPE_DFW:[2,3,1,""],COMPONENT_TYPE_EDGE_HOSTSWITCH:[2,3,1,""],COMPONENT_TYPE_EDGE_TUNNEL:[2,3,1,""],COMPONENT_TYPE_LR:[2,3,1,""],COMPONENT_TYPE_LS:[2,3,1,""],COMPONENT_TYPE_PHYSICAL:[2,3,1,""],COMPONENT_TYPE_UNKNOWN:[2,3,1,""],RESOURCE_TYPE_TRACEFLOWOBSERVATIONDELIVERED:[2,3,1,""],RESOURCE_TYPE_TRACEFLOWOBSERVATIONDROPPED:[2,3,1,""],RESOURCE_TYPE_TRACEFLOWOBSERVATIONDROPPEDLOGICAL:[2,3,1,""],RESOURCE_TYPE_TRACEFLOWOBSERVATIONFORWARDED:[2,3,1,""],RESOURCE_TYPE_TRACEFLOWOBSERVATIONFORWARDEDLOGICAL:[2,3,1,""],RESOURCE_TYPE_TRACEFLOWOBSERVATIONRECEIVED:[2,3,1,""],RESOURCE_TYPE_TRACEFLOWOBSERVATIONRECEIVEDLOGICAL:[2,3,1,""],TRANSPORT_NODE_TYPE_EDGE:[2,3,1,""],TRANSPORT_NODE_TYPE_ESX:[2,3,1,""],TRANSPORT_NODE_TYPE_HYPERV:[2,3,1,""],TRANSPORT_NODE_TYPE_OTHERS:[2,3,1,""],TRANSPORT_NODE_TYPE_PUBLIC_CLOUD_GATEWAY_NODE:[2,3,1,""],TRANSPORT_NODE_TYPE_RHELKVM:[2,3,1,""],TRANSPORT_NODE_TYPE_UBUNTUKVM:[2,3,1,""]},"com.vmware.nsx_policy.model_client.TraceflowObservationDropped":{COMPONENT_SUB_TYPE_LR_TIER0:[2,3,1,""],COMPONENT_SUB_TYPE_LR_TIER1:[2,3,1,""],COMPONENT_SUB_TYPE_LR_VRF_TIER0:[2,3,1,""],COMPONENT_SUB_TYPE_LS_TRANSIT:[2,3,1,""],COMPONENT_SUB_TYPE_UNKNOWN:[2,3,1,""],COMPONENT_TYPE_BRIDGE:[2,3,1,""],COMPONENT_TYPE_DFW:[2,3,1,""],COMPONENT_TYPE_EDGE_HOSTSWITCH:[2,3,1,""],COMPONENT_TYPE_EDGE_TUNNEL:[2,3,1,""],COMPONENT_TYPE_LR:[2,3,1,""],COMPONENT_TYPE_LS:[2,3,1,""],COMPONENT_TYPE_PHYSICAL:[2,3,1,""],COMPONENT_TYPE_UNKNOWN:[2,3,1,""],REASON_ARP_FAIL:[2,3,1,""],REASON_FW_RULE:[2,3,1,""],REASON_NO_ROUTE:[2,3,1,""],REASON_TTL_ZERO:[2,3,1,""],REASON_UNKNOWN:[2,3,1,""],RESOURCE_TYPE_TRACEFLOWOBSERVATIONDELIVERED:[2,3,1,""],RESOURCE_TYPE_TRACEFLOWOBSERVATIONDROPPED:[2,3,1,""],RESOURCE_TYPE_TRACEFLOWOBSERVATIONDROPPEDLOGICAL:[2,3,1,""],RESOURCE_TYPE_TRACEFLOWOBSERVATIONFORWARDED:[2,3,1,""],RESOURCE_TYPE_TRACEFLOWOBSERVATIONFORWARDEDLOGICAL:[2,3,1,""],RESOURCE_TYPE_TRACEFLOWOBSERVATIONRECEIVED:[2,3,1,""],RESOURCE_TYPE_TRACEFLOWOBSERVATIONRECEIVEDLOGICAL:[2,3,1,""],TRANSPORT_NODE_TYPE_EDGE:[2,3,1,""],TRANSPORT_NODE_TYPE_ESX:[2,3,1,""],TRANSPORT_NODE_TYPE_HYPERV:[2,3,1,""],TRANSPORT_NODE_TYPE_OTHERS:[2,3,1,""],TRANSPORT_NODE_TYPE_PUBLIC_CLOUD_GATEWAY_NODE:[2,3,1,""],TRANSPORT_NODE_TYPE_RHELKVM:[2,3,1,""],TRANSPORT_NODE_TYPE_UBUNTUKVM:[2,3,1,""]},"com.vmware.nsx_policy.model_client.TraceflowObservationDroppedLogical":{COMPONENT_SUB_TYPE_LR_TIER0:[2,3,1,""],COMPONENT_SUB_TYPE_LR_TIER1:[2,3,1,""],COMPONENT_SUB_TYPE_LR_VRF_TIER0:[2,3,1,""],COMPONENT_SUB_TYPE_LS_TRANSIT:[2,3,1,""],COMPONENT_SUB_TYPE_UNKNOWN:[2,3,1,""],COMPONENT_TYPE_BRIDGE:[2,3,1,""],COMPONENT_TYPE_DFW:[2,3,1,""],COMPONENT_TYPE_EDGE_HOSTSWITCH:[2,3,1,""],COMPONENT_TYPE_EDGE_TUNNEL:[2,3,1,""],COMPONENT_TYPE_LR:[2,3,1,""],COMPONENT_TYPE_LS:[2,3,1,""],COMPONENT_TYPE_PHYSICAL:[2,3,1,""],COMPONENT_TYPE_UNKNOWN:[2,3,1,""],REASON_ARP_FAIL:[2,3,1,""],REASON_FW_RULE:[2,3,1,""],REASON_NO_ROUTE:[2,3,1,""],REASON_TTL_ZERO:[2,3,1,""],REASON_UNKNOWN:[2,3,1,""],RESOURCE_TYPE_TRACEFLOWOBSERVATIONDELIVERED:[2,3,1,""],RESOURCE_TYPE_TRACEFLOWOBSERVATIONDROPPED:[2,3,1,""],RESOURCE_TYPE_TRACEFLOWOBSERVATIONDROPPEDLOGICAL:[2,3,1,""],RESOURCE_TYPE_TRACEFLOWOBSERVATIONFORWARDED:[2,3,1,""],RESOURCE_TYPE_TRACEFLOWOBSERVATIONFORWARDEDLOGICAL:[2,3,1,""],RESOURCE_TYPE_TRACEFLOWOBSERVATIONRECEIVED:[2,3,1,""],RESOURCE_TYPE_TRACEFLOWOBSERVATIONRECEIVEDLOGICAL:[2,3,1,""],TRANSPORT_NODE_TYPE_EDGE:[2,3,1,""],TRANSPORT_NODE_TYPE_ESX:[2,3,1,""],TRANSPORT_NODE_TYPE_HYPERV:[2,3,1,""],TRANSPORT_NODE_TYPE_OTHERS:[2,3,1,""],TRANSPORT_NODE_TYPE_PUBLIC_CLOUD_GATEWAY_NODE:[2,3,1,""],TRANSPORT_NODE_TYPE_RHELKVM:[2,3,1,""],TRANSPORT_NODE_TYPE_UBUNTUKVM:[2,3,1,""]},"com.vmware.nsx_policy.model_client.TraceflowObservationForwarded":{COMPONENT_SUB_TYPE_LR_TIER0:[2,3,1,""],COMPONENT_SUB_TYPE_LR_TIER1:[2,3,1,""],COMPONENT_SUB_TYPE_LR_VRF_TIER0:[2,3,1,""],COMPONENT_SUB_TYPE_LS_TRANSIT:[2,3,1,""],COMPONENT_SUB_TYPE_UNKNOWN:[2,3,1,""],COMPONENT_TYPE_BRIDGE:[2,3,1,""],COMPONENT_TYPE_DFW:[2,3,1,""],COMPONENT_TYPE_EDGE_HOSTSWITCH:[2,3,1,""],COMPONENT_TYPE_EDGE_TUNNEL:[2,3,1,""],COMPONENT_TYPE_LR:[2,3,1,""],COMPONENT_TYPE_LS:[2,3,1,""],COMPONENT_TYPE_PHYSICAL:[2,3,1,""],COMPONENT_TYPE_UNKNOWN:[2,3,1,""],RESOURCE_TYPE_TRACEFLOWOBSERVATIONDELIVERED:[2,3,1,""],RESOURCE_TYPE_TRACEFLOWOBSERVATIONDROPPED:[2,3,1,""],RESOURCE_TYPE_TRACEFLOWOBSERVATIONDROPPEDLOGICAL:[2,3,1,""],RESOURCE_TYPE_TRACEFLOWOBSERVATIONFORWARDED:[2,3,1,""],RESOURCE_TYPE_TRACEFLOWOBSERVATIONFORWARDEDLOGICAL:[2,3,1,""],RESOURCE_TYPE_TRACEFLOWOBSERVATIONRECEIVED:[2,3,1,""],RESOURCE_TYPE_TRACEFLOWOBSERVATIONRECEIVEDLOGICAL:[2,3,1,""],TRANSPORT_NODE_TYPE_EDGE:[2,3,1,""],TRANSPORT_NODE_TYPE_ESX:[2,3,1,""],TRANSPORT_NODE_TYPE_HYPERV:[2,3,1,""],TRANSPORT_NODE_TYPE_OTHERS:[2,3,1,""],TRANSPORT_NODE_TYPE_PUBLIC_CLOUD_GATEWAY_NODE:[2,3,1,""],TRANSPORT_NODE_TYPE_RHELKVM:[2,3,1,""],TRANSPORT_NODE_TYPE_UBUNTUKVM:[2,3,1,""]},"com.vmware.nsx_policy.model_client.TraceflowObservationForwardedLogical":{COMPONENT_SUB_TYPE_LR_TIER0:[2,3,1,""],COMPONENT_SUB_TYPE_LR_TIER1:[2,3,1,""],COMPONENT_SUB_TYPE_LR_VRF_TIER0:[2,3,1,""],COMPONENT_SUB_TYPE_LS_TRANSIT:[2,3,1,""],COMPONENT_SUB_TYPE_UNKNOWN:[2,3,1,""],COMPONENT_TYPE_BRIDGE:[2,3,1,""],COMPONENT_TYPE_DFW:[2,3,1,""],COMPONENT_TYPE_EDGE_HOSTSWITCH:[2,3,1,""],COMPONENT_TYPE_EDGE_TUNNEL:[2,3,1,""],COMPONENT_TYPE_LR:[2,3,1,""],COMPONENT_TYPE_LS:[2,3,1,""],COMPONENT_TYPE_PHYSICAL:[2,3,1,""],COMPONENT_TYPE_UNKNOWN:[2,3,1,""],DST_COMPONENT_TYPE_BRIDGE:[2,3,1,""],DST_COMPONENT_TYPE_DFW:[2,3,1,""],DST_COMPONENT_TYPE_EDGE_HOSTSWITCH:[2,3,1,""],DST_COMPONENT_TYPE_EDGE_TUNNEL:[2,3,1,""],DST_COMPONENT_TYPE_LR:[2,3,1,""],DST_COMPONENT_TYPE_LS:[2,3,1,""],DST_COMPONENT_TYPE_PHYSICAL:[2,3,1,""],DST_COMPONENT_TYPE_UNKNOWN:[2,3,1,""],RESOURCE_TYPE_TRACEFLOWOBSERVATIONDELIVERED:[2,3,1,""],RESOURCE_TYPE_TRACEFLOWOBSERVATIONDROPPED:[2,3,1,""],RESOURCE_TYPE_TRACEFLOWOBSERVATIONDROPPEDLOGICAL:[2,3,1,""],RESOURCE_TYPE_TRACEFLOWOBSERVATIONFORWARDED:[2,3,1,""],RESOURCE_TYPE_TRACEFLOWOBSERVATIONFORWARDEDLOGICAL:[2,3,1,""],RESOURCE_TYPE_TRACEFLOWOBSERVATIONRECEIVED:[2,3,1,""],RESOURCE_TYPE_TRACEFLOWOBSERVATIONRECEIVEDLOGICAL:[2,3,1,""],TRANSPORT_NODE_TYPE_EDGE:[2,3,1,""],TRANSPORT_NODE_TYPE_ESX:[2,3,1,""],TRANSPORT_NODE_TYPE_HYPERV:[2,3,1,""],TRANSPORT_NODE_TYPE_OTHERS:[2,3,1,""],TRANSPORT_NODE_TYPE_PUBLIC_CLOUD_GATEWAY_NODE:[2,3,1,""],TRANSPORT_NODE_TYPE_RHELKVM:[2,3,1,""],TRANSPORT_NODE_TYPE_UBUNTUKVM:[2,3,1,""]},"com.vmware.nsx_policy.model_client.TraceflowObservationReceived":{COMPONENT_SUB_TYPE_LR_TIER0:[2,3,1,""],COMPONENT_SUB_TYPE_LR_TIER1:[2,3,1,""],COMPONENT_SUB_TYPE_LR_VRF_TIER0:[2,3,1,""],COMPONENT_SUB_TYPE_LS_TRANSIT:[2,3,1,""],COMPONENT_SUB_TYPE_UNKNOWN:[2,3,1,""],COMPONENT_TYPE_BRIDGE:[2,3,1,""],COMPONENT_TYPE_DFW:[2,3,1,""],COMPONENT_TYPE_EDGE_HOSTSWITCH:[2,3,1,""],COMPONENT_TYPE_EDGE_TUNNEL:[2,3,1,""],COMPONENT_TYPE_LR:[2,3,1,""],COMPONENT_TYPE_LS:[2,3,1,""],COMPONENT_TYPE_PHYSICAL:[2,3,1,""],COMPONENT_TYPE_UNKNOWN:[2,3,1,""],RESOURCE_TYPE_TRACEFLOWOBSERVATIONDELIVERED:[2,3,1,""],RESOURCE_TYPE_TRACEFLOWOBSERVATIONDROPPED:[2,3,1,""],RESOURCE_TYPE_TRACEFLOWOBSERVATIONDROPPEDLOGICAL:[2,3,1,""],RESOURCE_TYPE_TRACEFLOWOBSERVATIONFORWARDED:[2,3,1,""],RESOURCE_TYPE_TRACEFLOWOBSERVATIONFORWARDEDLOGICAL:[2,3,1,""],RESOURCE_TYPE_TRACEFLOWOBSERVATIONRECEIVED:[2,3,1,""],RESOURCE_TYPE_TRACEFLOWOBSERVATIONRECEIVEDLOGICAL:[2,3,1,""],TRANSPORT_NODE_TYPE_EDGE:[2,3,1,""],TRANSPORT_NODE_TYPE_ESX:[2,3,1,""],TRANSPORT_NODE_TYPE_HYPERV:[2,3,1,""],TRANSPORT_NODE_TYPE_OTHERS:[2,3,1,""],TRANSPORT_NODE_TYPE_PUBLIC_CLOUD_GATEWAY_NODE:[2,3,1,""],TRANSPORT_NODE_TYPE_RHELKVM:[2,3,1,""],TRANSPORT_NODE_TYPE_UBUNTUKVM:[2,3,1,""]},"com.vmware.nsx_policy.model_client.TraceflowObservationReceivedLogical":{COMPONENT_SUB_TYPE_LR_TIER0:[2,3,1,""],COMPONENT_SUB_TYPE_LR_TIER1:[2,3,1,""],COMPONENT_SUB_TYPE_LR_VRF_TIER0:[2,3,1,""],COMPONENT_SUB_TYPE_LS_TRANSIT:[2,3,1,""],COMPONENT_SUB_TYPE_UNKNOWN:[2,3,1,""],COMPONENT_TYPE_BRIDGE:[2,3,1,""],COMPONENT_TYPE_DFW:[2,3,1,""],COMPONENT_TYPE_EDGE_HOSTSWITCH:[2,3,1,""],COMPONENT_TYPE_EDGE_TUNNEL:[2,3,1,""],COMPONENT_TYPE_LR:[2,3,1,""],COMPONENT_TYPE_LS:[2,3,1,""],COMPONENT_TYPE_PHYSICAL:[2,3,1,""],COMPONENT_TYPE_UNKNOWN:[2,3,1,""],RESOURCE_TYPE_TRACEFLOWOBSERVATIONDELIVERED:[2,3,1,""],RESOURCE_TYPE_TRACEFLOWOBSERVATIONDROPPED:[2,3,1,""],RESOURCE_TYPE_TRACEFLOWOBSERVATIONDROPPEDLOGICAL:[2,3,1,""],RESOURCE_TYPE_TRACEFLOWOBSERVATIONFORWARDED:[2,3,1,""],RESOURCE_TYPE_TRACEFLOWOBSERVATIONFORWARDEDLOGICAL:[2,3,1,""],RESOURCE_TYPE_TRACEFLOWOBSERVATIONRECEIVED:[2,3,1,""],RESOURCE_TYPE_TRACEFLOWOBSERVATIONRECEIVEDLOGICAL:[2,3,1,""],SRC_COMPONENT_TYPE_BRIDGE:[2,3,1,""],SRC_COMPONENT_TYPE_DFW:[2,3,1,""],SRC_COMPONENT_TYPE_EDGE_HOSTSWITCH:[2,3,1,""],SRC_COMPONENT_TYPE_EDGE_TUNNEL:[2,3,1,""],SRC_COMPONENT_TYPE_LR:[2,3,1,""],SRC_COMPONENT_TYPE_LS:[2,3,1,""],SRC_COMPONENT_TYPE_PHYSICAL:[2,3,1,""],SRC_COMPONENT_TYPE_UNKNOWN:[2,3,1,""],TRANSPORT_NODE_TYPE_EDGE:[2,3,1,""],TRANSPORT_NODE_TYPE_ESX:[2,3,1,""],TRANSPORT_NODE_TYPE_HYPERV:[2,3,1,""],TRANSPORT_NODE_TYPE_OTHERS:[2,3,1,""],TRANSPORT_NODE_TYPE_PUBLIC_CLOUD_GATEWAY_NODE:[2,3,1,""],TRANSPORT_NODE_TYPE_RHELKVM:[2,3,1,""],TRANSPORT_NODE_TYPE_UBUNTUKVM:[2,3,1,""]},"com.vmware.nsx_policy.model_client.TransportNode":{MAINTENANCE_MODE_DISABLED:[2,3,1,""],MAINTENANCE_MODE_ENABLED:[2,3,1,""],MAINTENANCE_MODE_FORCE_ENABLED:[2,3,1,""]},"com.vmware.nsx_policy.model_client.TransportNodeState":{MAINTENANCE_MODE_STATE_DISABLED:[2,3,1,""],MAINTENANCE_MODE_STATE_ENABLED:[2,3,1,""],MAINTENANCE_MODE_STATE_ENTERING:[2,3,1,""],MAINTENANCE_MODE_STATE_EXITING:[2,3,1,""],STATE_FAILED:[2,3,1,""],STATE_IN_PROGRESS:[2,3,1,""],STATE_ORPHANED:[2,3,1,""],STATE_PARTIAL_SUCCESS:[2,3,1,""],STATE_PENDING:[2,3,1,""],STATE_SUCCESS:[2,3,1,""],STATE_UNKNOWN:[2,3,1,""]},"com.vmware.nsx_policy.model_client.TransportNodeStatus":{MGMT_CONNECTION_STATUS_DOWN:[2,3,1,""],MGMT_CONNECTION_STATUS_UP:[2,3,1,""],STATUS_DEGRADED:[2,3,1,""],STATUS_DOWN:[2,3,1,""],STATUS_UNKNOWN:[2,3,1,""],STATUS_UP:[2,3,1,""]},"com.vmware.nsx_policy.model_client.TransportNodeTemplateState":{STATE_FAILED_TO_CREATE:[2,3,1,""],STATE_FAILED_TO_REALIZE:[2,3,1,""],STATE_IN_PROGRESS:[2,3,1,""],STATE_SUCCESS:[2,3,1,""]},"com.vmware.nsx_policy.model_client.TransportZone":{HOST_SWITCH_MODE_ENS:[2,3,1,""],HOST_SWITCH_MODE_STANDARD:[2,3,1,""],TRANSPORT_TYPE_OVERLAY:[2,3,1,""],TRANSPORT_TYPE_VLAN:[2,3,1,""]},"com.vmware.nsx_policy.model_client.TransportZoneProfile":{RESOURCE_TYPE_BFDHEALTHMONITORINGPROFILE:[2,3,1,""]},"com.vmware.nsx_policy.model_client.TransportZoneProfileTypeIdEntry":{RESOURCE_TYPE_BFDHEALTHMONITORINGPROFILE:[2,3,1,""]},"com.vmware.nsx_policy.model_client.TunnelProperties":{ENCAP_GENEVE:[2,3,1,""],ENCAP_STT:[2,3,1,""],ENCAP_UNKNOWN_ENCAP:[2,3,1,""],ENCAP_VXLAN:[2,3,1,""],STATUS_DOWN:[2,3,1,""],STATUS_UNKNOWN:[2,3,1,""],STATUS_UP:[2,3,1,""]},"com.vmware.nsx_policy.model_client.TunnelStatusCount":{STATUS_DEGRADED:[2,3,1,""],STATUS_DOWN:[2,3,1,""],STATUS_UNKNOWN:[2,3,1,""],STATUS_UP:[2,3,1,""]},"com.vmware.nsx_policy.model_client.UpgradeHistory":{UPGRADE_STATUS_FAILED:[2,3,1,""],UPGRADE_STATUS_STARTED:[2,3,1,""],UPGRADE_STATUS_SUCCESS:[2,3,1,""]},"com.vmware.nsx_policy.model_client.Uplink":{UPLINK_TYPE_LAG:[2,3,1,""],UPLINK_TYPE_PNIC:[2,3,1,""]},"com.vmware.nsx_policy.model_client.VMElement":{RESOURCE_TYPE_GROUPELEMENT:[2,3,1,""],RESOURCE_TYPE_LOGICALSWITCHELEMENT:[2,3,1,""],RESOURCE_TYPE_LOGICALT0ROUTERELEMENT:[2,3,1,""],RESOURCE_TYPE_LOGICALT1ROUTERELEMENT:[2,3,1,""],RESOURCE_TYPE_PROCESSELEMENT:[2,3,1,""],RESOURCE_TYPE_VMELEMENT:[2,3,1,""]},"com.vmware.nsx_policy.model_client.ValueConstraintExpression":{OPERATOR_EQUALS:[2,3,1,""],OPERATOR_EXCLUDES:[2,3,1,""],OPERATOR_INCLUDES:[2,3,1,""]},"com.vmware.nsx_policy.model_client.VersionedDeploymentSpec":{HOST_TYPE_ESXI:[2,3,1,""],HOST_TYPE_RHELKVM:[2,3,1,""],HOST_TYPE_UBUNTUKVM:[2,3,1,""]},"com.vmware.nsx_policy.model_client.VidmInfo":{TYPE_GROUP:[2,3,1,""],TYPE_USER:[2,3,1,""]},"com.vmware.nsx_policy.model_client.VifAttachmentContext":{VIF_TYPE_CHILD:[2,3,1,""],VIF_TYPE_INDEPENDENT:[2,3,1,""],VIF_TYPE_PARENT:[2,3,1,""]},"com.vmware.nsx_policy.model_client.VirtualMachine":{POWER_STATE_UNKNOWN:[2,3,1,""],POWER_STATE_VM_RUNNING:[2,3,1,""],POWER_STATE_VM_STOPPED:[2,3,1,""],POWER_STATE_VM_SUSPENDED:[2,3,1,""],TYPE_EDGE:[2,3,1,""],TYPE_REGULAR:[2,3,1,""],TYPE_SERVICE:[2,3,1,""]},"com.vmware.nsx_policy.model_client.WeeklyTelemetrySchedule":{DAY_OF_WEEK_FRIDAY:[2,3,1,""],DAY_OF_WEEK_MONDAY:[2,3,1,""],DAY_OF_WEEK_SATURDAY:[2,3,1,""],DAY_OF_WEEK_SUNDAY:[2,3,1,""],DAY_OF_WEEK_THURSDAY:[2,3,1,""],DAY_OF_WEEK_TUESDAY:[2,3,1,""],DAY_OF_WEEK_WEDNESDAY:[2,3,1,""]},"com.vmware.nsx_policy.model_client.WidgetConfiguration":{RESOURCE_TYPE_CONTAINERCONFIGURATION:[2,3,1,""],RESOURCE_TYPE_DONUTCONFIGURATION:[2,3,1,""],RESOURCE_TYPE_GRIDCONFIGURATION:[2,3,1,""],RESOURCE_TYPE_LABELVALUECONFIGURATION:[2,3,1,""],RESOURCE_TYPE_MULTIWIDGETCONFIGURATION:[2,3,1,""],RESOURCE_TYPE_STATSCONFIGURATION:[2,3,1,""]},"com.vmware.nsx_policy.model_client.X509Certificate":{PUBLIC_KEY_ALGO_DSA:[2,3,1,""],PUBLIC_KEY_ALGO_RSA:[2,3,1,""]},"com.vmware.nsx_policy.tasks_client":{Response:[2,1,1,""],StubFactory:[2,1,1,""]},"com.vmware.nsx_policy.tasks_client.Response":{get:[2,2,1,""]},"com.vmware.nsx_policy.trust_management_client":{Certificates:[2,1,1,""],Crls:[2,1,1,""],Csrs:[2,1,1,""],PrincipalIdentities:[2,1,1,""],StubFactory:[2,1,1,""]},"com.vmware.nsx_policy.trust_management_client.Certificates":{"delete":[2,2,1,""],LIST_TYPE_CERTIFICATE:[2,3,1,""],get:[2,2,1,""],importcertificate:[2,2,1,""],list:[2,2,1,""]},"com.vmware.nsx_policy.trust_management_client.Crls":{"delete":[2,2,1,""],LIST_TYPE_CERTIFICATE:[2,3,1,""],get:[2,2,1,""],importcrl:[2,2,1,""],list:[2,2,1,""],update:[2,2,1,""]},"com.vmware.nsx_policy.trust_management_client.Csrs":{"delete":[2,2,1,""],create:[2,2,1,""],get:[2,2,1,""],importcsr:[2,2,1,""],list:[2,2,1,""],selfsign:[2,2,1,""]},"com.vmware.nsx_policy.trust_management_client.PrincipalIdentities":{"delete":[2,2,1,""],create:[2,2,1,""],get:[2,2,1,""],list:[2,2,1,""],updatecertificate:[2,2,1,""]},"com.vmware.nsx_policy.upgrade_client":{StubFactory:[2,1,1,""],VersionWhitelist:[2,1,1,""]},"com.vmware.nsx_policy.upgrade_client.VersionWhitelist":{get:[2,2,1,""],list:[2,2,1,""],update:[2,2,1,""]},"com.vmware.nsx_policy_client":{Batch:[1,1,1,""],Cluster:[1,1,1,""],ErrorResolver:[1,1,1,""],Infra:[1,1,1,""],Licenses:[1,1,1,""],StubFactory:[1,1,1,""],Tasks:[1,1,1,""],Templates:[1,1,1,""],TrustManagement:[1,1,1,""]},"com.vmware.nsx_policy_client.Batch":{create:[1,2,1,""]},"com.vmware.nsx_policy_client.Cluster":{backuptoremote:[1,2,1,""],get:[1,2,1,""],summarizeinventorytoremote:[1,2,1,""],update:[1,2,1,""]},"com.vmware.nsx_policy_client.ErrorResolver":{get:[1,2,1,""],list:[1,2,1,""],resolveerror:[1,2,1,""]},"com.vmware.nsx_policy_client.Infra":{get:[1,2,1,""],patch:[1,2,1,""],update:[1,2,1,""]},"com.vmware.nsx_policy_client.Licenses":{"delete":[1,2,1,""],create:[1,2,1,""],delete_0:[1,2,1,""],get:[1,2,1,""],getlicensebykey:[1,2,1,""],list:[1,2,1,""],update:[1,2,1,""]},"com.vmware.nsx_policy_client.Tasks":{get:[1,2,1,""],list:[1,2,1,""]},"com.vmware.nsx_policy_client.Templates":{"delete":[1,2,1,""],deploy:[1,2,1,""],get:[1,2,1,""],list:[1,2,1,""],patch:[1,2,1,""]},"com.vmware.nsx_policy_client.TrustManagement":{get:[1,2,1,""]},com:{vmware:[1,0,0,"-"]}},objnames:{"0":["py","module","Python module"],"1":["py","class","Python class"],"2":["py","method","Python method"],"3":["py","attribute","Python attribute"]},objtypes:{"0":"py:module","1":"py:class","2":"py:method","3":"py:attribute"},terms:{"3xx":2,"abstract":2,"boolean":2,"break":2,"case":[2,3],"class":[1,2,3,4,5,6,7,8,9,10,11,12,13,14],"default":[1,2,3,4,5,6,7,8,9,11,12],"enum":14,"export":2,"final":2,"function":[1,2],"import":[2,14],"long":[1,2,3,4,5,6,7,8,9,11,12],"new":[1,2,5,6,8,9,14],"public":2,"return":[1,2,3,4,5,6,7,8,9,10,11,12,13],"short":2,"static":[2,5,8],"switch":[2,5],"true":2,"while":2,AND:2,And:2,CAs:2,DNS:[2,5],Dns:2,ENS:2,For:[2,4,11],IDs:[7,8],IKE:2,IPs:2,Ike:2,NFS:2,Not:[1,2,3,4,5,6,7,8,9,10,11,12,13],One:2,The:[1,2,3,5,6,11,13,14],Then:2,There:2,These:[1,2],Use:[1,2],Used:2,VMs:[2,7],With:2,________:2,___________________________________________:2,_arg:2,_host:2,_is_arg:2,_request_uri:2,_scheme:2,_server_port:2,_uri:2,aaa:[0,1,2,15],aaa_client:[0,1,15],abort:2,about:[1,2],abov:2,abstractspac:[1,2],accept:[2,4,5],acceptable_vers:2,acceptablecomponentvers:2,acceptablecomponentversionlist:2,access:2,access_log_en:2,accord:2,account_nam:2,acl_rule_id:2,across:2,act:2,action:[1,2,4],action_allow:2,action_bypass:2,action_deni:2,action_dnat:2,action_do_not_redirect:2,action_drop:2,action_no_dnat:2,action_no_nat:2,action_no_snat:2,action_overlai:2,action_overlay_nat:2,action_permit:2,action_protect:2,action_redirect:2,action_reflex:2,action_reject:2,action_snat:2,action_underlai:2,action_underlay_nat:2,actionableresourc:2,actionableresourcelistresult:[2,4],activ:[2,4,6],active_act:2,active_flow_export_timeout:2,active_list:2,active_monitor_id:2,active_standbi:2,active_timeout:2,active_vip_address:2,adapt:2,add:[1,2,5],add_cluster_nod:2,add_cluster_node_spec:2,addclusternodespec:2,addcontrollernodespec:2,added:2,adding:1,addit:2,addmanagementnodespec:2,address:2,address_bind:2,address_famili:2,address_valu:2,adjoin:2,admin:[2,11],admin_dist:2,admin_down:2,admin_st:2,admin_state_dis:2,admin_state_down:2,admin_state_en:2,admin_state_graceful_dis:2,admin_state_up:2,admin_statu:2,admin_status_down:2,admin_status_up:2,administr:2,administrative_dist:2,administratively_down_count:2,advanc:[1,2],advance_cluster_restore_request:2,advanceclusterrestoreinput:2,advanceclusterrestorerequest:2,advanced_config:2,advertis:2,advertise_lb_snat_ip:2,advertise_lb_vip:2,advertise_nat_rout:2,advertise_nsx_connected_rout:2,advertise_static_rout:2,advertised_route_typ:2,advertisednetwork:2,advertisednetworkslistresult:2,advertisementconfig:2,advertisementrulefilt:2,advertiserul:2,advertiserulelist:2,aes_128:2,aes_256:2,aes_gcm_128:2,aes_gcm_192:2,aes_gcm_256:2,affect:2,after:[1,2],again:11,against:2,agent:2,aggreg:2,aggregate_traffic_count:2,aggregated_data_collection_frequ:2,aggregatedatarespons:2,aggregatel2vpnpeerconfig:[2,10],aggregatel2vpnstatist:[2,10],aggregatel3vpnstatist:[2,9],aggregaterequest:2,aggregaterespons:2,aging_tim:2,agreement:2,aka:2,alarm:2,alert:2,alg:2,alg_ftp:2,alg_ms_rpc_tcp:2,alg_ms_rpc_udp:2,alg_nbdg_broadcast:2,alg_nbns_broadcast:2,alg_oracle_tn:2,alg_sun_rpc_tcp:2,alg_sun_rpc_udp:2,alg_tftp:2,algorithm:[1,2],algorithm_dsa:2,algorithm_ip_hash:2,algorithm_least_connect:2,algorithm_round_robin:2,algorithm_rsa:2,algorithm_weighted_least_connect:2,algorithm_weighted_round_robin:2,algtypensservic:2,algtypeserviceentri:2,alia:2,all:[1,2,3,4,5,6,9,12],allclustergroupstatu:2,alloc:2,allocate_address:2,allocate_addresses_both:2,allocate_addresses_ippool:2,allocate_addresses_macpool:2,allocate_addresses_non:2,allocated_id:2,allocation_id:2,allocation_list:2,allocation_rang:2,allocationipaddress:2,allocationipaddresslistresult:2,allow:[2,6,11,14],allow_ssh_root_login:2,along:[2,5],alreadi:[1,2,5,6,8,9],also:[2,5,7],alwai:2,among:2,analysi:2,anchor_path:[2,5,6],ani:2,announced_cap:2,anoth:2,api:[1,2,3,5,6,7,11,14],api_listen_addr:2,apierror:2,app_id:2,app_protocol:2,app_protocol_http:2,app_protocol_tcp:2,app_protocol_udp:2,appli:[2,11],applianc:2,appliance_mgmt_listen_addr:2,applic:[2,11,13],application_profile_id:2,applied_to:2,appliedto:2,appropri:2,arbitrari:2,area:2,argument:2,arp:[2,8],arp_bindings_limit:2,arp_fail:2,arp_snooping_en:2,arrai:[1,2],articl:2,as_num:2,as_numb:2,as_path_prepend:2,assign:2,assignedbydhcp:2,associ:[1,2,5],associationlistresult:2,asymmetric_credenti:2,async_response_avail:2,atom:1,attach:[1,2],attached_logical_port_id:2,attachment_point:2,attachment_point_tier0_lr:2,attachment_point_tier1_lr:2,attachment_statu:2,attachment_status_down:2,attachment_status_up:2,attachment_typ:2,attachment_type_bridgeendpoint:2,attachment_type_dhcp_servic:2,attachment_type_l2vpn_sess:2,attachment_type_logicalrout:2,attachment_type_metadata_proxi:2,attachment_type_vif:2,attachmentcontext:2,attempt:1,attribut:[2,5,14],attribute_typ:2,attribute_type_ip_address:2,attribute_type_long:2,attribute_type_password:2,attribute_type_port:2,attribute_type_str:2,attributev:2,attrit:14,audit_password:2,audit_usernam:2,auditor:2,authent:2,authentication_mod:2,authentication_mode_psk:2,authentication_schem:2,author:2,auto_install_nsx:2,autom:[2,4],automat:[1,2],avail:[2,4,5],available_local_address:2,average_bandwidth_kbp:2,average_bandwidth_mbp:2,avg_delta_sync_tim:2,avg_full_sync_tim:2,back:[2,4,14],backend:2,backup:[1,2,4],backup_authentication_failur:2,backup_bad_fingerprint:2,backup_configur:4,backup_creating_cluster_backup:2,backup_creating_node_backup:2,backup_en:2,backup_generic_error:2,backup_id:2,backup_memb:2,backup_not_run_on_mast:2,backup_permission_error:2,backup_schedul:2,backup_server_unreach:2,backup_timeout:2,backup_timestamp:2,backupconfigur:[2,4],backupoperationhistori:[2,4],backupoperationstatu:2,backups_cli:[0,1,2,15],backupschedul:2,backuptimestamp:4,backuptoremot:1,bad:[1,2,3,4,5,6,7,8,9,10,11,12,13],balanc:2,bar:2,barrier:2,base:[1,2,3,4,5,6,7,8,9,10,11,12,13,14],base_distinguished_nam:2,base_secure_111317:2,basehostswitchprofil:2,basenodeaggregateinfo:2,basepolicyserviceinst:2,basepolicyserviceinstancelistresult:2,baseproviderinterfac:2,baseproviderinterfacelistresult:2,baseserviceinst:2,baseswitchingprofil:2,basic:2,basic_authent:2,batch:[1,2],batch_request:1,batchrequest:[1,2],batchrequestitem:2,batchrespons:[1,2],batchresponseitem:2,becaus:2,been:[2,11],befor:[2,5],behavior:2,being:[2,5],belong:2,between:2,bfd:2,bfd_admin_down_count:2,bfd_allowed_hop:2,bfd_config:2,bfd_declare_dead_multipl:2,bfd_diagnost:2,bfd_down_count:2,bfd_enabl:2,bfd_init_count:2,bfd_probe_interv:2,bfd_statu:2,bfd_up_count:2,bfdconfig:2,bfdconfigparamet:2,bfddiagnosticcount:2,bfdhealthmonitoringprofil:2,bfdproperti:2,bfdstatuscount:2,bgp:[2,5,9],bgp_client:[0,1,2,5,15],bgp_enabl:2,bgp_neighbor_config:9,bgp_routing_config:[2,5],bgpcommunitylist:2,bgpcommunitylistlistresult:2,bgpconfig:2,bgpneighbor:2,bgpneighboraddressfamili:2,bgpneighborconfig:[2,9],bgpneighborconfiglistresult:[2,9],bgpneighborlistresult:2,bgpneighborsstatuslistresult:2,bgpneighborstatu:2,bgprouteaggreg:2,bgproutingconfig:[2,5],bidirect:2,bind:[1,2,3,4,5,6,7,8,9,10,11,12,13,14],binding_id:2,blackhole_act:2,blackhole_action_discard:2,blacklist:2,block:2,block_id:2,block_non_ip_traff:2,blue:2,bodi:[1,2],body_valu:2,bond:2,bool:[1,2,3,4,5,6,7,8,9,11,12],both:[2,14],bound:2,bpdu:2,bpdu_filt:2,bpdufilt:2,bridg:2,bridge_cluster_id:2,bridge_endpoint_profile_id:2,bridge_nod:2,bridgeclust:2,bridgeclusterlistresult:2,bridgeclusternod:2,bridgeendpoint:2,bridgeendpointlistresult:2,bridgeendpointprofil:2,bridgeendpointprofilelistresult:2,bridgehighavailabilityclusterprofil:2,bring:2,broadcast:2,broadcast_address:2,browser:2,buffer:2,built:2,bulletin_id:2,bum_bytes_in:2,bum_bytes_out:2,bum_packets_in:2,bum_packets_out:2,burst_size_byt:2,byod:[2,5],byod_policy_service_inst:5,byodpolicyserviceinst:[2,5],byodpolicyserviceinstancelistresult:[2,5],byodserviceinst:[2,5],bypass:2,bypass_rul:2,byte_count:2,bytes_in:2,bytes_in_r:2,bytes_out:2,bytes_out_r:2,cach:[2,4],cache_s:2,call:[2,4],caller:2,can:[2,14],cancel:2,cannot:2,capabl:2,capac:2,capacity_typ:2,capacity_type_cpu:2,capacity_type_us:2,capacity_type_vm:2,capacity_usag:2,capacityusag:2,capamount:2,capdur:2,capfiles:2,capmod:2,capmode_standalon:2,capmode_stream:2,cappoint:2,cappoint_dvfilt:2,cappoint_logicalport:2,cappoint_oth:2,cappoint_vdrport:2,cappoint_vmkn:2,cappoint_vmn:2,cappoint_vn:2,caprat:2,capsourc:2,capsource_cli:2,capsource_ui:2,captur:2,capvalu:2,case_sensit:2,categori:2,ccp:2,ceip_accept:2,cert_id:2,cert_thumbprint:2,certain:2,certif:2,certificate_ca:2,certificate_chain_depth:2,certificate_id:2,certificate_self_sign:2,certificate_sha256_thumbprint:2,certificate_sign:2,certificatelist:2,cgw:2,chain:2,chang:2,charact:2,characterist:2,chart:2,check:[2,3],child:2,childbgpneighborconfig:2,childbgproutingconfig:2,childbyodpolicyserviceinst:2,childcommunicationentri:2,childcommunicationmap:2,childconstraint:2,childdeploymentzon:2,childdomain:2,childdomaindeploymentmap:2,childedgecommunicationmap:2,childenforcementpoint:2,childgroup:2,childl2vpn:2,childl2vpncontext:2,childl3vpn:2,childl3vpncontext:2,childnetwork:2,childpolicyconfigresourc:2,childpolicydnsforward:2,childpolicydnsforwarderzon:2,childpolicylabel:2,childpolicylbmonitorprofil:2,childpolicylbpersistenceprofil:2,childpolicylbpoolaccess:2,childpolicylbrul:2,childpolicylbvirtualserv:2,childpolicynat:2,childpolicynatrul:2,childpolicyserviceinst:2,childprovid:2,childproviderdeploymentmap:2,childproviderinterfac:2,childredirectioncommunicationentri:2,childredirectioncommunicationmap:2,children:2,childseg:2,childservic:2,childserviceentri:2,childserviceinstanceendpoint:2,childserviceinterfac:2,childssltrustobjectdata:2,childstaticarpconfig:2,childstaticrout:2,cidr:2,cipher:2,cipher_ecdh_ecdsa_with_aes_128_cbc_sha256:2,cipher_ecdh_ecdsa_with_aes_128_cbc_sha:2,cipher_ecdh_ecdsa_with_aes_128_gcm_sha256:2,cipher_ecdh_ecdsa_with_aes_256_cbc_sha384:2,cipher_ecdh_ecdsa_with_aes_256_cbc_sha:2,cipher_ecdh_ecdsa_with_aes_256_gcm_sha384:2,cipher_ecdh_rsa_with_aes_128_cbc_sha256:2,cipher_ecdh_rsa_with_aes_128_cbc_sha:2,cipher_ecdh_rsa_with_aes_128_gcm_sha256:2,cipher_ecdh_rsa_with_aes_256_cbc_sha384:2,cipher_ecdh_rsa_with_aes_256_cbc_sha:2,cipher_ecdh_rsa_with_aes_256_gcm_sha384:2,cipher_ecdhe_ecdsa_with_aes_128_cbc_sha256:2,cipher_ecdhe_ecdsa_with_aes_128_cbc_sha:2,cipher_ecdhe_ecdsa_with_aes_128_gcm_sha256:2,cipher_ecdhe_ecdsa_with_aes_256_cbc_sha384:2,cipher_ecdhe_ecdsa_with_aes_256_cbc_sha:2,cipher_ecdhe_ecdsa_with_aes_256_gcm_sha384:2,cipher_ecdhe_rsa_with_aes_128_cbc_sha256:2,cipher_ecdhe_rsa_with_aes_128_cbc_sha:2,cipher_ecdhe_rsa_with_aes_128_gcm_sha256:2,cipher_ecdhe_rsa_with_aes_256_cbc_sha384:2,cipher_ecdhe_rsa_with_aes_256_cbc_sha:2,cipher_ecdhe_rsa_with_aes_256_gcm_sha384:2,cipher_rsa_with_3des_ede_cbc_sha:2,cipher_rsa_with_aes_128_cbc_sha256:2,cipher_rsa_with_aes_128_cbc_sha:2,cipher_rsa_with_aes_128_gcm_sha256:2,cipher_rsa_with_aes_256_cbc_sha256:2,cipher_rsa_with_aes_256_cbc_sha:2,cipher_rsa_with_aes_256_gcm_sha384:2,ciphers_ecdh_ecdsa_with_aes_128_cbc_sha256:2,ciphers_ecdh_ecdsa_with_aes_128_cbc_sha:2,ciphers_ecdh_ecdsa_with_aes_128_gcm_sha256:2,ciphers_ecdh_ecdsa_with_aes_256_cbc_sha384:2,ciphers_ecdh_ecdsa_with_aes_256_cbc_sha:2,ciphers_ecdh_ecdsa_with_aes_256_gcm_sha384:2,ciphers_ecdh_rsa_with_aes_128_cbc_sha256:2,ciphers_ecdh_rsa_with_aes_128_cbc_sha:2,ciphers_ecdh_rsa_with_aes_128_gcm_sha256:2,ciphers_ecdh_rsa_with_aes_256_cbc_sha384:2,ciphers_ecdh_rsa_with_aes_256_cbc_sha:2,ciphers_ecdh_rsa_with_aes_256_gcm_sha384:2,ciphers_ecdhe_ecdsa_with_aes_128_cbc_sha256:2,ciphers_ecdhe_ecdsa_with_aes_128_cbc_sha:2,ciphers_ecdhe_ecdsa_with_aes_128_gcm_sha256:2,ciphers_ecdhe_ecdsa_with_aes_256_cbc_sha384:2,ciphers_ecdhe_ecdsa_with_aes_256_cbc_sha:2,ciphers_ecdhe_ecdsa_with_aes_256_gcm_sha384:2,ciphers_ecdhe_rsa_with_aes_128_cbc_sha256:2,ciphers_ecdhe_rsa_with_aes_128_cbc_sha:2,ciphers_ecdhe_rsa_with_aes_128_gcm_sha256:2,ciphers_ecdhe_rsa_with_aes_256_cbc_sha384:2,ciphers_ecdhe_rsa_with_aes_256_cbc_sha:2,ciphers_ecdhe_rsa_with_aes_256_gcm_sha384:2,ciphers_rsa_with_3des_ede_cbc_sha:2,ciphers_rsa_with_aes_128_cbc_sha256:2,ciphers_rsa_with_aes_128_cbc_sha:2,ciphers_rsa_with_aes_128_gcm_sha256:2,ciphers_rsa_with_aes_256_cbc_sha256:2,ciphers_rsa_with_aes_256_cbc_sha:2,ciphers_rsa_with_aes_256_gcm_sha384:2,class_of_servic:2,classifi:2,classlessstaticrout:2,clear:2,cli:2,cli_password:2,cli_usernam:2,clickabl:2,client:2,client_auth:2,client_auth_ca_id:2,client_auth_crl_id:2,client_auth_ignor:2,client_auth_requir:2,client_block_en:2,client_certificate_id:2,client_ssl_certificate_id:2,client_ssl_profile_bind:2,client_ssl_set:2,client_ssl_settings_base_secure_111317:2,client_ssl_settings_high_secure_111317:2,client_ssl_settings_moderate_secure_111317:2,client_tcp_profile_id:2,client_typ:2,client_type_collection_configur:2,client_type_control_plan:2,client_type_control_plane_platform:2,client_type_edg:2,client_type_hypervisor:2,client_type_management_plan:2,client_type_management_plane_platform:2,clientsslprofilebind:2,clienttypecollectionconfigur:2,close_timeout:2,cloud:2,cloud_admin:2,cloud_auditor:2,cloud_service_admin:2,cloud_service_auditor:2,cluster:[0,1,2,15],cluster_api_certif:2,cluster_backup_status:2,cluster_cli:[0,1,15],cluster_config:1,cluster_id:2,cluster_profile_bind:2,cluster_statu:2,clusterbackupinfo:2,clusterbackupinfolistresult:[2,4],clusterconfig:[1,2],clustergroupmemberstatu:2,clustergroupservicelead:2,clustergroupstatu:2,clustering_param:2,clusteringinfo:2,clusterinitializationnodeinfo:2,clusternodeconfig:2,clusternodeconfiglistresult:2,clusternodestatu:[2,4],clusternodevmdeploymentconfig:2,clusternodevmdeploymentrequest:2,clusternodevmdeploymentrequestlist:2,clusterprofil:2,clusterprofilelistresult:2,clusterprofiletypeidentri:2,clusterrestorestatu:2,clusterroleconfig:2,clustersaggregateinfo:[2,4],clusterstatu:2,cm_local_id:2,code:[1,2,10],collecor:2,collect:[2,5],collection_frequ:2,collector:[2,5],collector_ip_address:2,collector_port:2,collector_profil:2,color:2,color_blu:2,color_green:2,color_grei:2,color_r:2,color_sky_blu:2,color_yellow:2,column:2,column_identifi:2,columnitem:2,com:[14,15],combin:2,comma:[1,2,3,4,5,6,7,8,9,11,12],command:2,common:2,commonli:1,commun:[2,5,6,14],communc:2,communication_entri:[2,6],communication_entry_id:6,communication_map:[2,5],communication_map_id:[5,6],communication_maps_cli:[0,1,2,5,15],communicationentri:[2,5,6],communicationentrylistresult:[2,6],communicationinsertparamet:2,communicationmap:[2,5],communicationmaplistresult:[2,5],communict:6,community_list_id:2,community_typ:2,community_type_normalbgpcommun:2,communitymatchexpress:2,communitymatchoper:2,compar:2,complet:[2,5,12],complex:2,compon:2,component_id:2,component_nam:2,component_sub_typ:2,component_sub_type_lr_tier0:2,component_sub_type_lr_tier1:2,component_sub_type_lr_vrf_tier0:2,component_sub_type_ls_transit:2,component_sub_type_unknown:2,component_typ:2,component_type_bridg:2,component_type_ccp:2,component_type_dfw:2,component_type_edg:2,component_type_edge_hostswitch:2,component_type_edge_tunnel:2,component_type_host:2,component_type_l:2,component_type_lr:2,component_type_mp:2,component_type_phys:2,component_type_unknown:2,compos:2,comput:2,compute_collection_id:2,compute_id:2,computecollect:2,computecollectionfabrictempl:2,computecollectionfabrictemplatelistresult:2,computecollectionlistresult:2,computecollectiontransportnodetempl:2,computecollectiontransportnodetemplatest:2,computecollectiontransportnodetemplatestatelist:2,computemanag:2,computemanagerlistresult:2,concatenated_path_down_count:2,concurrentchang:2,condit:[2,5],conditional_forward:2,conditional_forwarder_zone_path:2,conditionalforwarderzon:2,conditionalvalueconstraintexpress:2,config:[1,2,3,4,5,6,7,8,9,10,11,12,13],config_pair:2,configs_cli:[0,1,15],configur:[1,2,4,5,9,10],configurationst:2,configurationstateel:2,conflict:2,conjunct:2,conjunction_oper:2,conjunction_operator_and:2,conjunction_operator_or:2,conjunctionoper:2,connect:2,connected_switch:2,connection_drop_count:2,connection_info:2,connection_initiation_mod:2,connection_initiation_mode_initi:2,connection_initiation_mode_on_demand:2,connection_initiation_mode_respond_onli:2,connection_refus:2,connection_st:2,connection_state_act:2,connection_state_connect:2,connection_state_establish:2,connection_state_idl:2,connection_state_invalid:2,connection_state_open_confirm:2,connection_state_open_s:2,connectivity_statu:2,connectivity_status_connect:2,connectivity_status_disconnect:2,connectivity_status_unknown:2,connectivity_strategi:2,connectivity_strategy_blacklist:2,connectivity_strategy_non:2,connectivity_strategy_whitelist:2,consecut:2,consid:2,consist:2,consolid:[2,5],consolidated_statu:2,consolidated_status_per_enforcement_point:2,consolidatedrealizedstatu:[2,5],consolidatedstatu:2,consolidatedstatusperenforcementpoint:2,constrain:2,constraint:[2,11],constraint_express:2,constraint_id:2,constraintexpress:2,constraintlistresult:2,constrainttarget:2,consum:2,consumpt:2,contain:[2,4,5,13,14],containerconfigur:2,content:[2,15],context:[2,5],context_id:2,context_logical_rout:2,context_transport_nod:2,contidion:2,contigu:2,continue_on_error:2,control:[1,2],control_cluster_changes_allow:2,control_cluster_listen_addr:2,control_cluster_statu:2,control_cluster_status_connect:2,control_cluster_status_disconnect:2,control_cluster_status_unknown:2,control_connection_statu:2,control_detection_time_expired_count:2,control_node_ip:2,control_plan:2,control_plane_listen_addr:2,control_plane_platform:2,control_plane_server_certif:2,controlclusternodestatu:2,controlconnstatu:2,controller_clust:2,controller_rejected_host_cert:2,controller_rol:2,controller_role_config:2,controllerclusterroleconfig:2,controllerclusterstatu:2,controllernodeaggregateinfo:2,convei:4,cooki:2,cookie_domain:2,cookie_fallback:2,cookie_garbl:2,cookie_max_idl:2,cookie_max_lif:2,cookie_mod:2,cookie_mode_insert:2,cookie_mode_prefix:2,cookie_mode_rewrit:2,cookie_nam:2,cookie_path:2,cookie_tim:2,cookie_valu:2,coordin:2,copi:2,core:2,correct:2,correspond:[1,2],could:[2,11],count:2,counter:2,countri:2,cover:2,cpu:2,cpu_config:2,cpu_cor:2,cpu_usage_count:2,cpucoreconfigforenhancednetworkingstackswitch:2,creat:[1,2,3,5,6,8,9,14],create_action_nod:2,create_tim:2,create_us:2,createspec:14,createwidgetconfigur:2,creation:[2,6],credenti:2,credential_kei:2,credential_typ:2,credential_verifi:2,criteria:2,criterion:2,critic:2,crl:2,crl_entri:2,crl_id:2,crl_object_data:2,crllist:2,crlobjectdata:2,crud:2,cryptoalgorithm:2,csr:2,csr_id:2,csrlist:2,csv:2,csvlistresult:2,csvrecord:2,current:[1,2,3,4,5,6,7,8,9,11,12,14],current_sess:2,current_session_r:2,current_st:2,current_state_begin_tim:2,current_state_delta_sync:2,current_state_full_sync:2,current_state_idl:2,current_step:2,current_step_cluster_backup:2,current_step_messag:2,current_step_node_backup:2,current_vers:2,currentbackupoperationstatu:[2,4],cursor:[1,2,3,4,5,6,7,8,9,11,12],custom:[2,5],customer_id:2,customized_memb:2,custompolicylbpersistenceprofil:2,custompolicylbvirtualserv:2,dai:2,dailytelemetryschedul:2,dashboard:2,data1:2,data2:2,data:[1,2,4,5],data_length:2,data_network_id:2,data_typ:2,data_type_boolean:2,data_type_configur:2,data_type_d:2,data_type_integ:2,data_type_numb:2,data_type_password:2,data_type_statist:2,data_type_statu:2,data_type_str:2,data_type_text:2,datasourc:2,datatypecollectionconfigur:2,date:2,day_of_month:2,day_of_week:2,day_of_week_fridai:2,day_of_week_mondai:2,day_of_week_saturdai:2,day_of_week_sundai:2,day_of_week_thursdai:2,day_of_week_tuesdai:2,day_of_week_wednesdai:2,days_of_week:2,days_valid:2,dead:2,debug:2,declare_dead_multipl:2,decommiss:2,decryption_failur:2,default_certificate_id:2,default_client_ssl_certificate_id:2,default_forward:2,default_forwarder_zone_path:2,default_gatewai:2,default_gateway_address:2,default_pool_member_port:2,default_servic:2,defin:[2,5,14],definit:2,degrad:2,degraded_count:2,delet:[1,2,5,6,8,9],delete_0:1,deleterequestparamet:2,delivered_count:2,delta_sync:2,delta_sync_interv:2,deni:2,denot:8,depend:2,deploi:[1,2],deploy:[2,5],deployed_to:2,deployment_config:2,deployment_fail:2,deployment_in_progress:2,deployment_mod:2,deployment_mode_active_standbi:2,deployment_mode_stand_alon:2,deployment_spec:2,deployment_spec_nam:2,deployment_statu:2,deployment_status_deployment_fail:2,deployment_status_deployment_in_progress:2,deployment_status_deployment_success:2,deployment_status_undeployment_fail:2,deployment_status_undeployment_in_progress:2,deployment_status_undeployment_success:2,deployment_status_unknown:2,deployment_status_upgrade_fail:2,deployment_status_upgrade_in_progress:2,deployment_success:2,deployment_templ:2,deployment_template_nam:2,deployment_typ:2,deployment_type_physical_machin:2,deployment_type_unknown:2,deployment_type_virtual_machin:2,deployment_zon:2,deployment_zone_id:[2,5],deployment_zones_cli:[0,1,2,15],deploymentconfig:2,deploymentspec:2,deploymenttempl:2,deploymentzon:2,deploymentzonelistresult:2,deprec:[1,2],describ:2,descript:[2,14],desir:2,dest_element_id:2,dest_network_id:2,dest_pnic:2,dest_port:2,destin:[2,6],destination_address:2,destination_bgp:2,destination_group:2,destination_ip:2,destination_network:2,destination_nsx_connect:2,destination_nsx_stat:2,destination_port:2,destination_stat:2,destination_tier0_nat:2,destination_tier1_lb_snat:2,destination_tier1_lb_vip:2,destination_tier1_nat:2,destination_transport_port:2,destinationfilteringconfigur:2,destinationgroup:2,destinations_exclud:2,destmac:2,detach:2,detail:[2,5,6,7],detect:2,determin:2,devic:2,device_kei:2,device_nam:2,df_polici:2,df_policy_clear:2,df_policy_copi:2,dfw:2,dh_group:2,dh_groups_group14:2,dh_groups_group15:2,dh_groups_group16:2,dhcp:2,dhcp_filter:2,dhcp_profile_id:2,dhcp_rang:2,dhcp_relay_profile_id:2,dhcp_server_ip:2,dhcp_servic:2,dhcp_snooping_en:2,dhcpfilter:2,dhcpippool:2,dhcpippoollistresult:2,dhcpoption121:2,dhcpoption:2,dhcpprofil:2,dhcpprofilelistresult:2,dhcprelayprofil:2,dhcprelayprofilelistresult:2,dhcprelayservic:2,dhcprelayservicelistresult:2,dhcpstaticbind:2,dhcpstaticbindinglistresult:2,diagnost:2,diagram:2,differ:2,digest_algorithm:2,digest_algorithms_sha1:2,digest_algorithms_sha2_256:2,digit:2,direct:2,direction_bidirect:2,direction_du:2,direction_egress:2,direction_in:2,direction_in_out:2,direction_ingress:2,direction_input:2,direction_out:2,direction_output:2,directli:11,directori:2,directory_path:2,directoryaddomain:2,directoryadgroup:2,directorydomain:2,directorydomainlistresult:2,directorydomainsyncnod:2,directorydomainsyncnodelistresult:2,directorydomainsyncremotenod:2,directorydomainsyncset:2,directorydomainsyncstat:2,directorygroup:2,directorygrouplistresult:2,directorygroupmemb:2,directorygroupmemberlistresult:2,directoryldapserv:2,directoryldapserverlistresult:2,disabl:2,discard:2,disconnect:2,discov:[2,13],discovered_ip_address:2,discovered_node_id:2,discoverednod:2,discoverednodelistresult:2,discoveredresourc:2,discoveri:[2,5,13],discovery_sess:5,discovery_session_id:[5,13],discoverysess:[2,5,13],discoverysessionlistresult:[2,5],disk_store_id:2,displai:[2,3],display_count:2,display_nam:2,display_valu:2,distinguished_nam:2,distribut:2,dnat:2,dns_domain_nam:2,dns_forwarder_zone_id:2,dns_nameserv:2,dns_server:2,dns_suffix:2,dnsforward:[2,5],dnsforwarderlistresult:2,dnsforwarderzon:2,do_not_redirect:2,dock_to_container_foot:2,doe:[1,2,5,6,9,11,14],doesn:8,domain:[0,1,2,5,11,13,15],domain_deployment_map:[2,5],domain_deployment_map_id:5,domain_id:[2,5,6,7,13],domain_nam:2,domain_sync_node_id:2,domaindeploymentmap:[2,5],domaindeploymentmaplistresult:[2,5],domainlistresult:2,domains_cli:[0,1,2,11,12,15],done:2,donut:2,donutconfigur:2,donutpart:2,donutsect:2,down:[2,11],down_count:2,downlink:2,dpd:2,dpd_probe_interv:2,dpd_profile_id:2,drilldown_id:2,drop:2,dropped_count:2,dropped_packets_in:2,dropped_packets_out:2,dsa:2,dsa_public_keyg:2,dsa_public_keyi:2,dsa_public_keyp:2,dsa_public_keyq:2,dscp:2,dscpmode:2,dsl:11,dsrule:2,dsrulest:2,dssection:2,dssectionlistresult:2,dssectionst:2,dsservic:2,dst_component_id:2,dst_component_nam:2,dst_component_typ:2,dst_component_type_bridg:2,dst_component_type_dfw:2,dst_component_type_edge_hostswitch:2,dst_component_type_edge_tunnel:2,dst_component_type_l:2,dst_component_type_lr:2,dst_component_type_phys:2,dst_component_type_unknown:2,dst_transport_node_id:2,dst_transport_node_nam:2,dstip:2,dstmac:2,dstport:2,dual:2,due:11,dummi:2,dure:2,dvfilter:2,dynam:2,dynamic_res_pool_nam:2,dynamicstructur:2,each:[1,2,9,10],east_west:2,ecdsa:2,echo_function_failed_count:2,ecmp:2,edg:[2,5,6],edge_cluster_id:2,edge_cluster_member_index:2,edge_communication_map:5,edge_communication_map_id:[5,6],edge_communication_maps_cli:[0,1,2,5,15],edge_config_error:2,edge_hostswitch:2,edge_nod:2,edge_tunnel:2,edgeclust:2,edgeclusterlistresult:2,edgeclustermemb:2,edgeclustermemberlistresult:2,edgecommunicationmap:[2,5],edgecommunicationmaplistresult:2,edgehighavailabilityprofil:2,edgenod:2,edgenodedeploymentconfig:2,edit:1,effect:7,effectiveipaddressmemberlistresult:2,effectivememberresourcelistresult:2,egress:2,egress_interfac:2,egressrateshap:2,either:2,elect:2,element:2,element_id:2,els:14,embed:[1,2],embeddedresourc:2,emerg:2,empti:2,enabl:[1,2],enable_bfd:2,enable_full_mesh:2,enable_full_sync:2,enable_hub:2,enable_netx:2,enable_perfect_forward_secreci:2,enable_ssh:2,enabled_cap:2,encap:2,encap_genev:2,encap_stt:2,encap_unknown_encap:2,encap_vxlan:2,encapsul:2,encapsulation_mod:2,encapsulation_mode_mod:2,encapsulation_typ:2,encapsulation_type_erspan_thre:2,encapsulation_type_erspan_two:2,encapsulation_type_gr:2,encapsulation_vlan_id:2,encod:1,encrypt:2,encryption_algorithm:2,encryption_algorithms_128:2,encryption_algorithms_256:2,encryption_algorithms_gcm_128:2,encryption_algorithms_gcm_192:2,encryption_algorithms_gcm_256:2,encryption_failur:2,end:2,end_tim:2,endpoint:[2,9],endpoint_typ:2,endpoint_type_log:2,endpoint_type_virtu:2,ends_with:2,endtim:2,enfoc:2,enforc:[2,5,7,9,10,11,12,13],enforcement_point:[0,1,2,5,11],enforcement_point_address:2,enforcement_point_id:[2,13],enforcement_point_nam:[5,11,12],enforcement_point_path:[2,5,7,9,10],enforcement_points_cli:[0,1,5,15],enforcementpoint:[2,5],enforcementpoint_id:5,enforcementpointconnectioninfo:2,enforcementpointlistresult:[2,5],enhanc:2,ens_cap:2,ens_en:2,ensur:2,enter:2,enterpris:1,enterprise_admin:2,entir:2,entiti:[1,2,5,14],entity_id:2,entity_metadata:14,entity_typ:2,entity_type_dummi:2,entityinstancecountconstraintexpress:2,entri:[2,5,6],equal:2,error:[1,2,3,4,5,6,7,8,9,10,11,12,13],error_cod:2,error_code_authentication_failur:2,error_code_bad_fingerprint:2,error_code_generic_error:2,error_code_not_run_on_mast:2,error_code_permission_error:2,error_code_server_unreach:2,error_code_timeout:2,error_data:2,error_id:[1,2],error_log_level:2,error_log_level_alert:2,error_log_level_crit:2,error_log_level_debug:2,error_log_level_emerg:2,error_log_level_error:2,error_log_level_info:2,error_log_level_warn:2,error_messag:2,error_resolver_metadata_list:1,error_threshold:2,errormsg:2,errorresolv:1,errorresolverinfo:[1,2],errorresolverinfolist:[1,2],errorresolvermetadata:2,errorresolvermetadatalist:[1,2],errorresolversystemmetadata:2,errorresolveruserinputdata:2,errorresolverusermetadata:2,errors_cli:[1,2,3,4,5,6,7,8,9,10,11,12,13],erspan_id:2,erspan_thre:2,erspan_two:2,esp:2,establish:2,established_connection_count:2,esx:2,esxi:2,etc:[2,4,11],ether:2,ether_typ:2,ethertyp:2,ethertypensservic:2,ethertypeserviceentri:2,ethtyp:2,eula:[2,5],eula_cli:[0,1,15],eula_link:2,eulaaccept:2,eulacont:2,evalu:[2,9,10],evalut:2,even:5,event:2,ever:2,everi:2,exampl:2,example_request:2,exapl:2,excahng:2,exce:2,exceed:11,exclud:2,exclude_rol:2,excludelist:2,exclus:2,execut:2,exhaust:2,exist:[1,2,5,6,8,9,11],exit:2,expand:2,expiri:2,explain:14,explicitli:2,express:2,exress:2,extend:2,extended_attribut:2,extens:2,extent:2,extern:2,external_id:2,external_publ:2,external_transit_network:2,external_vpn:2,extra:2,extra_config:2,extraconfig:2,extraconfighostswitchprofil:2,fabric:2,fabric_module_nam:2,fabric_module_vers:2,fabricmodul:2,fabricmodulelistresult:2,facad:2,face:2,factor:2,fail:[1,2,3,4,5,6,7,8,9,10,11,12,13],fail_count:2,fail_reason:2,failed_to_cr:2,failed_to_r:2,failov:2,failover_mod:2,failover_mode_non_preempt:2,failover_mode_preempt:2,failover_ord:2,failur:[2,11],failure_caus:2,failure_cod:2,failure_messag:2,failure_polici:2,failure_policy_allow:2,failure_policy_block:2,failure_statu:2,failure_status_connection_refus:2,failure_status_controller_rejected_host_cert:2,failure_status_host_rejected_controller_cert:2,failure_status_incomplete_controller_cert:2,failure_status_incomplete_host_cert:2,failure_status_keep_alive_timeout:2,failure_status_other_error:2,failure_status_other_ssl_error:2,fall_count:2,fals:[1,2,5],famili:3,familynam:3,fast:2,fatal:2,fault_toler:2,featur:2,feature_stack_nam:2,feature_usage_info:2,featurepermiss:2,featurepermissionlistresult:2,featurestackcollectionconfigur:2,featurestackcollectionconfigurationlist:2,featureusag:2,featureusagecsvrecord:2,featureusagelist:2,featureusagelistincsvformat:2,fetch:2,few:2,fewer:[1,2,3,4,5,6,7,8,9,11,12],field:[1,2,3,4,5,6,7,8,9,11,12],field_nam:2,file:[2,4,14],file_nam:2,file_system:2,fileloc:2,filepath:14,files:2,filetransferauthenticationschem:2,filetransferprotocol:2,filter:[1,2,11],filter_in_ipprefixlist_id:2,filter_in_routemap_id:2,filter_out_ipprefixlist_id:2,filter_out_routemap_id:2,filterrequest:2,filtertyp:2,filtertype_post:2,filtertype_pr:2,fin_wait2_timeout:2,fingerprint:2,finish:2,firewal:[2,12],firewall_ev:2,firewall_sect:2,firewall_section_id:12,firewallrul:2,firewallrulelistresult:2,firewalls_cli:[0,1,2,5,11],firewallsect:[2,12],firewallsectionlistresult:2,firewallsectionrulelist:2,firewallsectionssummari:2,firewallsectionst:2,firewallservic:2,firewallserviceassociationlistresult:2,firewallstat:2,firewallstatu:2,firewallstatuslistresult:2,first:[2,14],fix:2,flexibl:2,flow:[2,5],flow_direct:2,flow_end:2,flow_mirroring_en:2,flow_start:2,folder:14,follow:[2,14],foo:2,footer:2,footeract:2,forbidden:[1,2,3,4,5,6,7,8,9,10,11,12,13],forc:[2,5],force_en:2,force_whitelist:2,form:2,form_factor:2,form_factor_larg:2,form_factor_medium:2,form_factor_smal:2,format:2,forward:[2,5],forwarded_count:2,forwarderzon:2,forwarding_plane_reset_count:2,forwarding_up_tim:2,found:[1,2,3,4,5,6,7,8,9,10,11,12,13],fqdn:2,fragment:2,framework:11,free_id:2,frequenc:2,frequency_typ:2,fridai:2,from:[1,2,3,6,11,14],ftp:2,full:[2,5,9],full_sync:2,full_sync_cron_expr:2,functionalities_hcx:2,functionalities_ids_ip:2,functionalities_ng_fw:2,further:2,futur:14,fw_rule:2,gateway_address:2,gateway_ip:2,gener:[2,14],genericdhcpopt:2,genericpolicyrealizedresourc:[2,5,12],genericpolicyrealizedresourcelistresult:[2,5,12],genev:2,get:[1,2,3,4,5,6,7,8,9,10,11,12,13,14],get_source_cach:[2,4],get_source_realtim:[2,4],get_view_group_connect:13,get_view_network_connect:13,get_view_process_connect:13,get_view_vm_connect:13,getal:4,getlicensebykei:1,give:[2,7],given:[1,2,3,5,6,9,10],givennam:3,global:2,global_statu:2,global_status_dis:2,global_status_en:2,globalcollectionconfigur:2,globalrestorestatu:2,graceful_dis:2,graceful_restart:2,graphic:2,gre:2,gre_kei:2,green:2,grei:2,grid:2,gridconfigur:2,group14:2,group15:2,group16:2,group:[0,1,2,3,5,6,12],group_by_field_valu:2,group_connect:[2,13],group_distinguished_nam:2,group_id:[2,5,6,7],group_statu:2,group_status_degrad:2,group_status_st:2,group_status_unavail:2,group_status_unst:2,group_typ:2,group_type_control:2,group_type_http:2,group_type_manag:2,group_type_polici:2,groupconnect:2,groupel:2,grouping_object:2,grouplistresult:[2,5],groups_client:[0,1,2,5,11,15],guid:2,ha1:2,ha2:2,ha_en:2,ha_flow_mirroring_en:2,ha_mac:2,ha_mod:2,ha_mode_act:2,ha_mode_standbi:2,ha_persistence_mirroring_en:2,ha_vip_config:2,ha_vip_subnet:2,had:2,handl:2,hardware_id:2,has:[1,2,5,14],has_error:2,have:[2,11,14],havipconfig:2,hbr:2,hcheck:2,hcx:2,head:2,header:[1,2],header_nam:2,header_valu:2,healt:2,health:2,healthcheck:2,held:2,help:2,here:2,hidden:2,hierarch:2,high:2,high_availability_mod:2,high_availability_mode_act:2,high_availability_mode_standbi:2,high_secure_111317:2,histori:[2,4],hit:2,hold:2,hold_down_tim:2,hold_tim:2,homogen:2,hop:2,host:2,host_address:2,host_credenti:2,host_id:2,host_infra_traffic_r:2,host_match:2,host_msg_client_info:2,host_nam:2,host_node_deployment_statu:2,host_node_deployment_status_edge_config_error:2,host_node_deployment_status_install_fail:2,host_node_deployment_status_install_in_progress:2,host_node_deployment_status_install_success:2,host_node_deployment_status_node_not_readi:2,host_node_deployment_status_node_readi:2,host_node_deployment_status_not_avail:2,host_node_deployment_status_not_prepar:2,host_node_deployment_status_pending_upgrad:2,host_node_deployment_status_registration_fail:2,host_node_deployment_status_registration_pend:2,host_node_deployment_status_uninstall_fail:2,host_node_deployment_status_uninstall_in_progress:2,host_node_deployment_status_uninstall_success:2,host_node_deployment_status_upgrade_fail:2,host_node_deployment_status_upgrade_in_progress:2,host_node_deployment_status_vm_deployment_fail:2,host_node_deployment_status_vm_deployment_in_progress:2,host_node_deployment_status_vm_deployment_queu:2,host_node_deployment_status_vm_deployment_restart:2,host_node_deployment_status_vm_power_off_fail:2,host_node_deployment_status_vm_power_off_in_progress:2,host_node_deployment_status_vm_power_on_fail:2,host_node_deployment_status_vm_power_on_in_progress:2,host_node_deployment_status_vm_undeploy_fail:2,host_node_deployment_status_vm_undeploy_in_progress:2,host_node_deployment_status_vm_undeploy_success:2,host_rejected_controller_cert:2,host_switch:2,host_switch_id:2,host_switch_mod:2,host_switch_mode_en:2,host_switch_mode_standard:2,host_switch_nam:2,host_switch_profile_id:2,host_switch_spec:2,host_switch_st:2,host_typ:2,host_type_esxi:2,host_type_rhelkvm:2,host_type_ubuntukvm:2,host_vers:2,hostaggregateinfo:2,hostaggregateinfolistresult:2,hostinfratraffictyp:2,hostnam:2,hostnod:2,hostnodelogincredenti:2,hostprofilenetworkmigrationspec:2,hostswitch:2,hostswitchprofileslistresult:2,hostswitchprofiletypeidentri:2,hostswitchspec:2,hostswitchst:2,hour_of_dai:2,hover:2,how:[2,14],hpm:2,href:2,html:2,httop:2,http:[1,2],http_forward:2,http_redirect_to:2,http_redirect_to_http:2,http_request:2,http_request_r:2,http_request_rewrit:2,http_requst_rewrit:2,http_response_rewrit:2,http_version_1_0:2,http_version_1_1:2,http_version_2_0:2,httppolicylbmonitorprofil:2,httppolicylbvirtualserv:2,httpspolicylbmonitorprofil:2,httpspolicylbvirtualserv:2,hub:2,hybric:2,hyperv:2,hypervisor:2,hyphen:2,i_pfix_collector_profil:2,i_pfix_switch_collection_inst:5,icmp:2,icmp_cod:2,icmp_typ:2,icmppolicylbmonitorprofil:2,icmptypensservic:2,icmptypeserviceentri:2,icmpv4:2,icmpv6:2,icon:2,ident:2,identifi:[1,2,5],idl:2,idle_timeout:2,ids_ip:2,ifindex:2,igmp:2,igmptypensservic:2,igmptypeserviceentri:2,ignor:2,ike_digest_algorithm:2,ike_digest_algorithms_sha1:2,ike_digest_algorithms_sha2_256:2,ike_encryption_algorithm:2,ike_encryption_algorithms_128:2,ike_encryption_algorithms_256:2,ike_encryption_algorithms_gcm_128:2,ike_encryption_algorithms_gcm_192:2,ike_encryption_algorithms_gcm_256:2,ike_flex:2,ike_log_level:2,ike_log_level_debug:2,ike_log_level_emerg:2,ike_log_level_error:2,ike_log_level_info:2,ike_log_level_warn:2,ike_profile_id:2,ike_session_st:2,ike_session_state_down:2,ike_session_state_negoti:2,ike_session_state_up:2,ike_statu:2,ike_traffic_statist:2,ike_v1:2,ike_v2:2,ike_vers:2,ike_version_flex:2,ike_version_v1:2,ike_version_v2:2,imag:2,implement:2,implementation_typ:2,implementation_type_east_west:2,implementation_type_north_south:2,implementations_east_west:2,implementations_north_south:2,importcertif:2,importcrl:2,importcsr:2,in_filter_ipprefixlist_id:2,in_filter_routemap_id:2,in_out:2,in_progress:2,in_servic:2,includ:[1,2,3,4,5,6,7,8,9,11,12,14],include_rol:2,included_field:[1,2,3,4,5,6,7,8,9,11,12],includedfieldsparamet:2,incom:2,incomplete_controller_cert:2,incomplete_host_cert:2,increment:2,independ:2,index:15,indic:2,individu:2,info:2,inform:[1,2,4,13],infra:[0,1,2,15],infra_cli:[0,1,15],infrastructur:2,ingress:2,ingressbroadcastrateshap:2,ingressrateshap:2,inherit:2,init:2,init_st:2,init_state_vlan:2,initi:2,initial_vers:2,initiate_cluster_restore_request:2,initiateclusterrestorerequest:2,inner:1,inprogress:2,input:[1,2,4],insensit:3,insert:2,insert_aft:[2,5,6],insert_befor:[2,5,6],insert_bottom:[2,5,6],insert_client_ip_head:2,insert_top:[2,5,6],insid:[1,2],instal:[1,2],install_fail:2,install_in_progress:2,install_success:2,instanc:[2,5,6,9,14],instance_deployment_config:2,instance_deployment_templ:2,instancedeploymentconfig:2,instanceendpoint:2,instanceendpointlistresult:2,instanceruntim:2,instanceruntimelistresult:2,instanti:[2,14],instead:[1,2],instruct:[2,4],instruction_id:4,instructioninfo:2,instructionresourc:4,integ:2,integrity_failur:2,intend:2,intent:[2,5,11],intent_communication_map:2,intent_group:2,intent_path:[2,5],intent_refer:2,interfac:[2,5],interface_alia:2,interface_id:[2,5],interface_index:2,interface_label:2,interface_nam:2,interface_typ:2,interface_type_data1:2,interface_type_data2:2,interface_type_ha1:2,interface_type_ha2:2,interface_type_manag:2,interface_type_phys:2,interface_type_virtu:2,interfaceneighborproperti:2,interfaceneighborpropertylistresult:2,interfacestatist:2,interfacesubnet:2,intern:[1,2,3,4,5,6,7,8,9,10,11,12,13],internal_transit_network:2,internalservererror:[1,2,3,4,5,6,7,8,9,10,11,12,13],internet:2,interv:2,intervalbackupschedul:2,invalid:2,invalidrequest:[1,2,3,4,5,6,7,8,9,10,11,12,13],inventori:1,inventory_backup_status:2,inventory_summary_interv:2,inventory_sync_paus:2,inventory_sync_reenable_tim:2,invers:2,invert:2,invok:1,ip_address:2,ip_address_info:2,ip_assignment_spec:2,ip_configur:2,ip_configuration_dhcp:2,ip_configuration_not_configur:2,ip_configuration_stat:2,ip_hash:2,ip_list:2,ip_mac_list:2,ip_pool_id:2,ip_port_list:2,ip_prefix_list:2,ip_protocol:2,ip_protocol_ipv4:2,ip_protocol_ipv4_ipv6:2,ip_protocol_ipv6:2,ip_protocol_tcp:2,ip_protocol_udp:2,ip_revision_filt:2,ip_revision_filter_ipv4:2,ip_revision_filter_ipv4_ipv6:2,ip_revision_filter_ipv6:2,ip_set_nam:12,ip_sets_cli:[0,1,2,5,11],ip_subnet:2,ipaddress:2,ipaddressexpress:2,ipaddressinfo:2,ipaddressportpair:2,ipallocationbas:2,ipassignmentspec:2,ipblock:2,ipblock_vmwar:2,ipblocklistresult:2,ipblocksubnet:2,ipblocksubnet_eng1:2,ipblocksubnet_eng2:2,ipblocksubnet_fin:2,ipblocksubnetlistresult:2,ipdiscoveryswitchingprofil:2,ipfix:[2,5],ipfix_collector:2,ipfix_collector_profile_id:2,ipfix_collector_profile_path:2,ipfix_switch_collection_instance_id:5,ipfixcollector:2,ipfixcollectorconfig:2,ipfixcollectorconfiglistresult:2,ipfixcollectorprofil:2,ipfixcollectorprofilelistresult:2,ipfixcollectorprofileuiresourc:2,ipfixcollectorprofileuiresourcelist:2,ipfixcollectorupmprofil:2,ipfixcollectorupmprofilelistresult:2,ipfixconfig:2,ipfixconfiglistresult:2,ipfixdfwconfig:2,ipfixdfwtemplateparamet:2,ipfixobspointconfig:2,ipfixobspointslistresult:2,ipfixserviceassociationlistresult:2,ipfixswitchcollectioninst:[2,5],ipfixswitchcollectioninstancelistresult:[2,5],ipfixswitchconfig:2,ipfixswitchupmprofil:2,ipfixupmprofil:2,ipfixupmprofilelistresult:2,ipinfo:2,ipmacpair:2,ipmirrordestin:2,ippool:2,ippool_eng:2,ippooldeleterequestparamet:2,ippoollistresult:2,ippoolrang:2,ippoolsubnet:2,ipprefixlist:2,ipprefixlistlistresult:2,ipproto:2,ipprotocolnsservic:2,ipprotocolserviceentri:2,ipsec:2,ipsec_tunnel_profile_id:2,ipsec_vpn_service_id:2,ipsecvpndpdprofil:2,ipsecvpndpdprofilelistresult:2,ipsecvpnikeprofil:2,ipsecvpnikeprofilelistresult:2,ipsecvpnikesessionstatu:2,ipsecvpniketrafficstatist:2,ipsecvpnlocalendpoint:2,ipsecvpnlocalendpointlistresult:2,ipsecvpnpeerendpoint:2,ipsecvpnpeerendpointlistresult:2,ipsecvpnpolicyrul:2,ipsecvpnpolicysubnet:2,ipsecvpnpolicytrafficstatist:2,ipsecvpnservic:2,ipsecvpnservicelistresult:2,ipsecvpnsess:2,ipsecvpnsessionlistresult:2,ipsecvpnsessionstatist:2,ipsecvpntrafficcount:2,ipsecvpntunnelprofil:2,ipsecvpntunnelprofilelistresult:2,ipsecvpntunneltrafficstatist:2,ipset:[2,12],ipsetdeleterequestparamet:2,ipsetlistresult:2,ipsetsnsxt:12,ipsubnet:2,ipv4:2,ipv4_dhcp_serv:2,ipv4_ipv6:2,ipv4_unicast:2,ipv4address:2,ipv4dhcpserv:2,ipv6:2,is_advertis:2,is_arp_proxy_en:2,is_ca:2,is_data_collection_en:2,is_default:2,is_drilldown:2,is_ev:2,is_expir:2,is_loopback_en:2,is_mh:2,is_protect:2,is_secur:2,is_valid:2,iscsi:2,issu:2,issuer:2,issuer_cn:2,item:2,its:[1,2],itself:2,java:1,join_condit:2,join_to_existing_clust:2,json:[1,14],keep_alive_interv:2,keep_alive_tim:2,keep_alive_timeout:2,kei:[1,2,3],key_algo:2,key_extraconfighostswitchprofil:2,key_hostprofilenetworkmigrationspec:2,key_ipdiscoveryswitchingprofil:2,key_lldphostswitchprofil:2,key_macmanagementswitchingprofil:2,key_nam:2,key_niocprofil:2,key_portmirroringswitchingprofil:2,key_qosswitchingprofil:2,key_siz:2,key_spoofguardswitchingprofil:2,key_switchsecurityswitchingprofil:2,key_tag:2,key_uplinkhostswitchprofil:2,keyvalu:2,keyvaluepair:2,kill:2,kind:2,kvm:2,l2_bridg:2,l2_extens:2,l2_vpn:[2,9],l2_vpn_context:2,l2dfw:2,l2extens:2,l2vpn:[2,5,9,10],l2vpn_context:[0,1,2,5,9],l2vpn_context_cli:[0,1,2,5,15],l2vpn_id:[9,10],l2vpn_path:2,l2vpn_peer_config_per_enforcement_point:2,l2vpn_service_id:2,l2vpn_session:2,l2vpn_statistics_per_enforcement_point:2,l2vpnattachmentcontext:2,l2vpncontext:[2,5],l2vpnlistresult:[2,9],l2vpnpeercod:2,l2vpnpeerconfigperenforcementpoint:2,l2vpnpersegmenttrafficstatist:2,l2vpns_client:[0,1,2,5,9],l2vpnservic:2,l2vpnservicelistresult:2,l2vpnsession:2,l2vpnsessionlistresult:2,l2vpnsessionstatist:2,l2vpnstatisticsperenforcementpoint:2,l2vpntaptrafficstatist:2,l2vpntransporttunnelpeercod:2,l2vpntunnelencapsul:2,l3_rout:2,l3_vpn:[2,5],l3_vpn_context:[2,5],l3dfw:2,l3portmirrorsess:2,l3redirect:2,l3vpn:[2,5,9],l3vpn_id:[5,9],l3vpn_session:[2,5],l3vpn_statistics_per_enforcement_point:2,l3vpncontext:[2,5],l3vpnlistresult:[2,5],l3vpnpeerconfigrequestparamet:2,l3vpnrule:[2,5],l3vpns_client:[0,1,2,5,15],l3vpnsession:[2,5],l3vpnstatisticsperenforcementpoint:2,l3vpnsubnet:2,l4_protocol:2,l4policylbpersistenceprofil:2,l4portset:2,l4portsetnsservic:2,l4portsetserviceentri:2,l4protocol_tcp:2,l4protocol_udp:2,l7_protocol:2,l7policylbpersistenceprofil:2,l7serviceentri:2,label:2,label_id:2,labelvalueconfigur:2,lacp:2,lag:2,lan:2,languag:11,larg:2,last:[1,2],last_check_tim:2,last_heartbeat_timestamp:2,last_modified_tim:2,last_modified_us:2,last_state_change_tim:2,last_sync_tim:2,last_update_timestamp:2,last_updated_tim:2,latenc:2,later:2,layer2:2,layer3:2,layer:2,lb_admin:2,lb_auditor:2,lb_monitor_profil:2,lb_persistence_profil:2,lb_virtual_serv:2,lbactivemonitor:2,lbappprofil:2,lbappprofilelistresult:2,lbclientsslprofil:2,lbclientsslprofilelistresult:2,lbcookiepersistenceprofil:2,lbcookietim:2,lbfasttcpprofil:2,lbfastudpprofil:2,lbhttpmonitor:2,lbhttpprofil:2,lbhttpredirectact:2,lbhttprejectact:2,lbhttprequestbodycondit:2,lbhttprequestcookiecondit:2,lbhttprequesthead:2,lbhttprequestheadercondit:2,lbhttprequestheaderrewriteact:2,lbhttprequestmethodcondit:2,lbhttprequesturiargumentscondit:2,lbhttprequesturicondit:2,lbhttprequesturirewriteact:2,lbhttprequestversioncondit:2,lbhttpresponseheadercondit:2,lbhttpresponseheaderrewriteact:2,lbhttpsmonitor:2,lbicmpmonitor:2,lbipheadercondit:2,lbmonitor:2,lbmonitorlistresult:2,lbpassivemonitor:2,lbpersistencecookietim:2,lbpersistenceprofil:2,lbpersistenceprofilelistresult:2,lbpool:2,lbpoolaccess:2,lbpoollistresult:2,lbpoolmemberstatist:2,lbpoolmemberstatu:2,lbpoolstatist:2,lbpoolstatisticslistresult:2,lbpoolstatu:2,lbpoolstatuslistresult:2,lbrule:2,lbruleact:2,lbrulecondit:2,lbrulelistresult:2,lbselectpoolact:2,lbselectserveract:2,lbserversslprofil:2,lbserversslprofilelistresult:2,lbservic:2,lbservicelistresult:2,lbsessioncookietim:2,lbsnatautomap:2,lbsnatipel:2,lbsnatippool:2,lbsnattransl:2,lbsourceippersistenceprofil:2,lbsslcipherandprotocollistresult:2,lbsslcipherinfo:2,lbsslprofil:2,lbsslprofilelistresult:2,lbsslprotocolinfo:2,lbstatisticscount:2,lbtcpheadercondit:2,lbtcpmonitor:2,lbtcpprofil:2,lbtcpprofilelistresult:2,lbudpmonitor:2,lbvirtualserv:2,lbvirtualserverlistresult:2,lbvirtualserverstatist:2,lbvirtualserverstatisticslistresult:2,lbvirtualserverstatu:2,lbvirtualserverstatuslistresult:2,lcore:2,lcp_connectivity_statu:2,lcp_connectivity_status_degrad:2,lcp_connectivity_status_detail:2,lcp_connectivity_status_down:2,lcp_connectivity_status_unknown:2,lcp_connectivity_status_up:2,ldap:2,leader:2,leader_uuid:2,leadership:2,leaf:2,learn:2,leas:2,lease_tim:2,lease_vers:2,least_connect:2,leav:2,let:2,level:2,licens:[1,2],license_kei:[1,2],licenses_cli:[0,1,15],licenseslistresult:[1,2],licensesusag:2,lifecycl:2,like:[2,11],limit:[2,11],limit_polici:2,limit_policy_allow:2,limit_policy_drop:2,line:2,link:[2,5],link_aggregation_cap:2,link_aggregation_port_id:2,link_aggregation_statu:2,link_statu:2,link_status_down:2,link_status_up:2,linked_logical_router_port_id:2,linked_logical_switch_port_id:2,list:[1,2,3,4,5,6,7,8,9,11,12],list_l3vpn_session_policybasedl3vpnsess:5,list_l3vpn_session_routebasedl3vpnsess:5,list_type_certif:2,list_type_local_us:2,list_type_principal_ident:2,list_type_remote_group:2,list_type_remote_us:2,listener_ip:2,listresult:2,lldp:2,lldphostswitchprofil:2,load:2,load_averag:2,load_balance_algorithm:2,load_balance_algorithm_destmac:2,load_balance_algorithm_srcdestipvlan:2,load_balance_algorithm_srcdestmac:2,load_balance_algorithm_srcdestmacipport:2,load_balance_algorithm_srcmac:2,loadbalance_srcid:2,local:2,local_address:2,local_as_num:2,local_endpoint_id:2,local_endpoint_ip:2,local_id:2,local_id_on_host:2,local_ip:2,local_ip_address:2,local_port:2,local_subnet:2,local_us:2,localportmirrorsess:2,log:2,log_level:2,log_level_debug:2,log_level_dis:2,log_level_error:2,log_level_fat:2,log_level_info:2,log_level_trac:2,log_level_warn:2,logic:[1,2,5],logical_count:2,logical_port:2,logical_port_id:2,logical_rout:2,logical_router_id:2,logical_router_nam:2,logical_router_port_id:2,logical_switch:2,logical_switch_id:2,logical_tap_ip_pool:2,logicaldhcpserv:2,logicaldhcpserverlistresult:2,logicallocalportmirrorsess:2,logicalport:2,logicalportattach:2,logicalportlistresult:2,logicalportmacaddresscsvlistresult:2,logicalportmacaddresslistresult:2,logicalportmactablecsventri:2,logicalportmactableentri:2,logicalportmirrordestin:2,logicalportmirrorsess:2,logicalportmirrorsourc:2,logicalrout:2,logicalroutercentralizedserviceport:2,logicalrouterconfig:2,logicalrouterdeleterequestparamet:2,logicalrouterdownlinkport:2,logicalrouteriptunnelport:2,logicalrouterlinkportontier0:2,logicalrouterlinkportontier1:2,logicalrouterlistresult:2,logicalrouterloopbackport:2,logicalrouterport:2,logicalrouterportarpcsvrecord:2,logicalrouterportarpentri:2,logicalrouterportarpt:2,logicalrouterportarptableincsvformat:2,logicalrouterportdeleterequestparamet:2,logicalrouterportlistresult:2,logicalrouterroutecsvrecord:2,logicalrouterrouteentri:2,logicalrouterroutet:2,logicalrouterroutetableincsvformat:2,logicalrouteruplinkport:2,logicalservic:2,logicalservicelistresult:2,logicalswitch:2,logicalswitchel:2,logicalswitchlistresult:2,logicalswitchmirrorsourc:2,logicalswitchst:2,logicalswitchstatelistresult:2,logicalswitchstatu:2,logicalswitchstatuslistresult:2,logicalt0rout:2,logicalt0routerel:2,logicalt1rout:2,logicalt1routerel:2,login:2,logincredenti:2,loginsight:2,look:2,lport_attachment_id:2,lport_bind:2,lport_id:2,lport_nam:2,lr_component_id:2,lr_component_typ:2,lr_tier0:2,lr_tier1:2,lr_vrf_tier0:2,ls_id:2,ls_transit:2,lswitch_bind:2,mac:2,mac_address:2,mac_change_allow:2,mac_learn:2,mac_pool_id:2,mac_set_nam:12,mac_sets_cli:[0,1,2,5,11],mac_typ:2,mac_type_learn:2,mac_type_stat:2,macaddresscsvlistresult:2,macaddressel:2,macaddresselementlistresult:2,macaddresslistresult:2,machin:[2,11],maclearningspec:2,macmanagementswitchingprofil:2,macpool:2,macpoollistresult:2,macrang:2,macset:[2,12],macsetdeleterequestparamet:2,macsetlistresult:2,macsetsnsxt:12,mactablecsvrecord:2,mactableentri:2,made:2,mai:[1,2,3,4,5,6,7,8,9,11,12,14],maintain:2,maintenance_mod:2,maintenance_mode_dis:2,maintenance_mode_en:2,maintenance_mode_ent:2,maintenance_mode_exit:2,maintenance_mode_force_en:2,maintenance_mode_off:2,maintenance_mode_on:2,maintenance_mode_st:2,maintenance_mode_state_dis:2,maintenance_mode_state_en:2,maintenance_mode_state_ent:2,maintenance_mode_state_exit:2,make:1,manag:[1,2,11],managed_by_serv:2,managedresourc:2,management_clust:2,management_config:2,management_network_id:2,management_plan:2,management_plane_platform:2,management_port_subnet:2,managementclusternodestatu:2,managementclusterroleconfig:2,managementclusterstatu:2,managementconfig:2,managementnodeaggregateinfo:2,managementplanebasenodeinfo:2,manager_rol:2,manipul:2,manual:2,map:[2,5,6],mark:2,marked_for_delet:2,market_plac:2,mask:2,match:[2,3],match_al:2,match_ani:2,match_community_express:2,match_condit:2,match_criteria:2,match_destination_network:2,match_exact:2,match_non:2,match_oper:2,match_operator_al:2,match_operator_ani:2,match_operator_exact:2,match_operator_non:2,match_operator_regex:2,match_regex:2,match_route_typ:2,match_route_types_ani:2,match_route_types_nsx_connect:2,match_route_types_stat:2,match_route_types_t1_lb_snat:2,match_route_types_t1_lb_vip:2,match_route_types_t1_nat:2,match_servic:2,match_source_network:2,match_strategi:2,match_strategy_al:2,match_strategy_ani:2,match_typ:2,match_type_contain:2,match_type_ends_with:2,match_type_equ:2,match_type_regex:2,match_type_starts_with:2,max:11,max_concurrent_connect:2,max_fail:2,max_flow:2,max_ip_list_s:2,max_new_connection_r:2,max_sess:2,max_syn_retransmiss:2,maximum:[1,2,3,4,5,6,7,8,9,11,12],maximum_hop_limit:2,mean:2,mechan:2,medium:2,meet:2,mem_cach:2,mem_tot:2,mem_us:2,member:2,member_count:2,member_group:2,member_group_distinguished_nam:2,member_group_id:2,member_index:2,member_nam:2,member_node_typ:2,member_node_type_edge_nod:2,member_node_type_public_cloud_gateway_nod:2,member_node_type_unknown:2,member_statu:2,member_status_down:2,member_status_unknown:2,member_status_up:2,member_typ:2,member_type_logicalport:2,member_type_virtualmachin:2,member_uuid:2,membership:[2,7],membership_criteria:2,memori:2,merg:[5,9],messag:2,messages_receiv:2,messages_s:2,meta:2,metadata:[1,2,14],metadata_cli:14,metadata_proxi:2,metadata_server_ca_id:2,metadata_server_url:2,metadataproxi:2,metadataproxylistresult:2,metatdata:2,method:[1,2,4,5,6,13,14],method_delet:2,method_get:2,method_head:2,method_opt:2,method_patch:2,method_post:2,method_put:2,metric:2,mgmt_addr:2,mgmt_cluster:2,mgmt_cluster_changes_allow:2,mgmt_cluster_listen_addr:2,mgmt_cluster_listen_ip_address:2,mgmt_cluster_statu:2,mgmt_cluster_status_connect:2,mgmt_cluster_status_disconnect:2,mgmt_cluster_status_unknown:2,mgmt_connection_statu:2,mgmt_connection_status_down:2,mgmt_connection_status_up:2,mgmt_plane:2,mgmt_plane_listen_addr:2,mgmtconnstatu:2,mgr:1,mgr_role_config:2,mgw:2,might:2,migrat:2,min_active_memb:2,minut:2,minute_of_dai:2,mirror:[2,6],mirror_destin:2,mirror_sourc:2,mirrordestin:2,mirrorsourc:2,mismatch:2,miss:2,mode:2,mode_act:2,mode_pass:2,mode_trust:2,mode_untrust:2,model:[1,2,3,4,5,6,7,8,9,10,11,12,13],model_cli:[0,1,3,4,5,6,7,8,9,10,11,12,13,15],moderate_secure_111317:2,modifi:[1,2],modified_feature_stack_collection_configur:2,modul:[0,14,15],module_nam:2,moid:2,mondai:2,monitor:2,monitor_port:2,month:2,monthlytelemetryschedul:2,more:2,most:2,mount:2,mpa_connectivity_statu:2,mpa_connectivity_status_detail:2,mpa_connectivity_status_down:2,mpa_connectivity_status_unknown:2,mpa_connectivity_status_up:2,mpa_msg_client_info:2,ms_rpc_tcp:2,ms_rpc_udp:2,msgclientinfo:2,mtep:2,mtu:2,multi:2,multi_exit_discrimin:2,multicast:2,multipl:[1,2,11],multivalu:2,multiwidgetconfigur:2,must:[2,5],mutual:2,nagle_algorithm_en:2,name:[1,2,3,5,7,12,14],name_dstip:2,name_dstmac:2,name_dstport:2,name_ethtyp:2,name_ip:2,name_ipproto:2,name_mac:2,name_port:2,name_srcip:2,name_srcmac:2,name_srcport:2,name_vlan:2,name_vni:2,named_team:2,namedteamingpolici:2,nat:[2,8],nat_client:[0,1,2,5,15],nat_id:8,nat_pass:2,nat_rule_id:8,nat_typ:2,nat_type_default:2,nat_type_intern:2,nat_type_us:2,natrul:[2,8],natrulelistresult:2,navig:2,nbdg_broadcast:2,nbns_broadcast:2,necessari:2,need:2,needs_attent:2,negoti:2,negotiated_cap:2,neighbor:[2,9],neighbor_address:2,neighbor_id:9,neighbor_router_id:2,neighbor_signaled_session_down_count:2,neighborproperti:2,nest:[1,2],nested_nsx:2,nestedexpress:2,netmask:2,network:[0,1,2,5,15],network_connect:[2,13],network_engin:2,network_id:[2,5,8],network_map:2,network_migration_spec_id:2,network_nam:8,network_op:2,networkconnect:2,networkig:2,networklistresult:2,networkmigrationspec:2,networkmigrationspeclistresult:2,networkmigrationspectypeidentri:2,networks_cli:[0,1,2,15],newer:14,next:[1,2,3,4,5,6,7,8,9,11,12],next_hop:2,next_upd:2,ng_fw:2,nic:2,nic_info:2,nic_metadata:2,nic_metadata_list:2,nicinfo:2,nicmetadata:2,nioc:2,niocprofil:2,no_authent:2,no_diagnostic_count:2,no_dnat:2,no_nat:2,no_purg:2,no_rout:2,no_snat:2,node:[1,2,4],node_backup_status:2,node_display_nam:2,node_id:[2,4],node_interface_properti:2,node_interface_statist:2,node_not_readi:2,node_readi:2,node_statu:2,node_status_properti:2,node_typ:2,node_user_set:2,node_uuid:2,nodeaggregateinfo:2,nodeaggregateinfolistresult:2,nodefilesystemproperti:2,nodeidservicesmap:2,nodeinterfacealia:2,nodeinterfaceproperti:2,nodeinterfacepropertieslistresult:2,nodeinterfacestatisticsproperti:2,nodelistresult:2,nodes_cli:[0,1,2,15],nodestatu:2,nodestatusproperti:2,nodeuserset:2,nomatching_policy_error:2,non:[2,3],non_eth:2,non_preempt:2,none:[1,2,3,4,5,6,7,8,9,10,11,12,13],normal:2,normalbgpcommun:2,normalizedresourcelistresult:2,north_south:2,not_aft:2,not_avail:2,not_befor:2,not_prepar:2,not_start:2,notat:2,note:2,notfound:[1,2,3,4,5,6,7,8,9,10,11,12,13],nsgroup:[2,12],nsgroup_nam:12,nsgroupcomplexexpress:2,nsgroupdeleterequestparamet:2,nsgroupexpress:2,nsgrouplistresult:2,nsgroupsimpleexpress:2,nsgrouptagexpress:2,nsservic:[2,12],nsservice_el:2,nsservice_nam:12,nsservicedeleterequestparamet:2,nsserviceel:2,nsservicegroup:2,nsservicegroupdeleterequestparamet:2,nsservicegrouplistresult:2,nsservicelistresult:2,nsx:[1,2,11],nsx_connect:2,nsx_polici:[0,1,15],nsx_policy_cli:[0,15],nsx_static:2,nsxrole:2,nsxt:2,nsxtconnectioninfo:2,nsxv:2,nsxvconnectioninfo:2,ntlm:2,ntp_server:2,num_delta_sync:2,num_full_sync:2,num_lcor:2,num_logical_port:2,num_logical_switch:2,num_transport_nod:2,numa:2,numa_node_index:2,number:[1,2,3,4,5,6,7,8,9,11,12],number_of_ev:2,number_of_uplink:2,object:[1,2,5,9,11,12],object_guid:2,objectrolepermissiongroup:2,objectrolepermissiongrouplistresult:2,observ:2,observation_domain_id:2,occur:11,octet_delta_count:2,off:2,offici:2,offline_nod:2,often:2,ofv:2,oid:2,older:14,omit:[2,4],on_demand:2,on_failure_polici:2,on_failure_policy_allow:2,on_failure_policy_block:2,onc:2,one:[1,2,5,14],ones:11,onli:[1,2,9,10,14],online_nod:2,op_contain:2,op_equ:2,op_startswith:2,opaqu:[1,2,3,4,5,6,7,8,9,11,12],open:2,open_confirm:2,open_s:2,oper:[2,4,5,6,11],operation_aft:2,operation_befor:2,operation_bottom:2,operation_crud:2,operation_execut:2,operation_non:2,operation_read:2,operation_st:2,operation_state_fail:2,operation_state_finish:2,operation_state_in_progress:2,operation_top:2,operation_typ:2,operation_type_backup:2,operation_type_non:2,operator_and:2,operator_contain:2,operator_equ:2,operator_exclud:2,operator_includ:2,operator_startswith:2,ops:[0,1,2,5,11,12],option121:2,option:[1,2,3,4,5,6,7,8,9,10,11,12,13],oracle_tn:2,order:[2,6],organ:2,origin:2,origin_id:2,origin_properti:2,origin_typ:2,orphan:2,os_typ:2,os_type_esxi:2,os_type_hyperv:2,os_type_rhelkvm:2,os_type_ubuntukvm:2,os_vers:2,other:[1,2,5],other_error:2,other_ssl_error:2,otherwis:[1,2,6],out:2,out_filter_ipprefixlist_id:2,out_filter_routemap_id:2,out_of_servic:2,outgo:2,output:2,over:2,overal:2,overlai:2,overrid:2,ovf:2,ovf_url:2,own:2,owner:2,owner_id:2,owner_vm_id:2,ownerresourcelink:2,packag:15,package_stor:2,package_url:2,packagestor:2,packet:[2,6],packet_count:2,packet_delta_count:2,packet_sample_prob:2,packetaddressclassifi:2,packetcaptureopt:2,packetcaptureoptionlist:2,packetcapturerequest:2,packetcapturesess:2,packetcapturesessionlist:2,packets_in:2,packets_in_r:2,packets_out:2,packets_out_r:2,packets_receive_error:2,packets_received_other_error:2,packets_rx:2,packets_sent_error:2,packets_sent_other_error:2,packets_tx:2,page:[1,2,3,4,5,6,7,8,9,11,12,14,15],page_s:[1,2,3,4,5,6,7,8,9,11,12],pagin:[2,3,5,9,12],pair:2,paramet:[1,2,3,4,5,6,7,8,9,10,11,12,13,14],parameter:2,parameter_id:2,parameter_valu:2,parent:2,parent_compute_collect:2,parent_path:2,parent_vif_id:2,part:[2,5],partial:2,partial_success:2,partially_up:2,particip:2,particular:2,partner:[2,5],partner_service_nam:2,partner_services_cli:[0,1,2,15],partnerservic:2,partnerserviceeulastatu:[2,5],pass:[2,5,11,14],passiv:2,passive_monitor_id:2,passphras:[2,4],password:[2,4],past:2,patch:[1,2,5,6,8,9],path:[2,5,6,7,9,10],path_down_count:2,path_match:2,path_prefix:2,payload:1,pbrrule:2,pbrrulelistresult:2,pbrsection:2,pbrsectionlistresult:2,pbrsectionrulelist:2,pbrservic:2,peak_bandwidth_kbp:2,peak_bandwidth_mbp:2,peer:[2,10],peer_address:2,peer_cod:2,peer_endpoint_id:2,peer_endpoint_ip:2,peer_id:2,peer_ip_address:2,peerconfig:10,pem:2,pem_encod:2,pend:2,pending_upgrad:2,per:2,percentag:2,perform:[2,4,11],period:2,permiss:2,permission_crud:2,permission_execut:2,permission_group:2,permission_group_read_only_api_us:2,permission_group_read_write_api_us:2,permission_group_superus:2,permission_group_undefin:2,permission_non:2,permission_read:2,permissions_crud:2,permissions_execut:2,permissions_non:2,permissions_read:2,permissions_read_api:2,permissions_read_write_api:2,permit:2,persist:2,persistence_cooki:2,persistence_ip:2,persistence_profile_id:2,persistence_shar:2,persistence_source_ip:2,persteprestorestatu:2,phase:2,phase_forward:2,phase_request_rewrit:2,phase_response_rewrit:2,physic:2,physical_address:2,physical_machin:2,placehold:[1,2],placeholdd:2,placeholder_id:2,placeholder_messag:2,placement:2,placement_post:2,placement_pr:2,placement_typ:2,placement_type_vsphereclusternodevmdeploymentconfig:2,placement_type_vspheredeploymentconfig:2,plane:[1,2],pleas:2,plot:2,pnic:2,pnic_statu:2,pnicbondstatu:2,pnicbondstatuslistresult:2,pnicmirrordestin:2,pnicmirrorsourc:2,point:[2,5,7,9,10,11,12,13],polici:[1,2,5,9,11],policy_dns_forward:[2,5],policy_dns_forwarder_zon:2,policy_failover_ord:2,policy_label:2,policy_lb_monitor_profil:2,policy_lb_persistence_profil:2,policy_lb_pool_access:2,policy_lb_rul:2,policy_lb_virtual_serv:2,policy_loadbalance_srcid:2,policy_nat:2,policy_nat_rul:[2,8],policy_rul:2,policy_service_inst:[2,5],policy_statist:2,policy_templ:1,policy_template_paramet:1,policyalarmresourc:2,policyassociationslistresult:2,policybasedipsecvpnsess:2,policybasedl3vpnsess:[2,5],policyconfigresourc:2,policydnsforward:[2,5],policydnsforwarderlistresult:2,policydnsforwarderzon:2,policydnsforwarderzonelistresult:2,policyipaddressinfo:2,policylabel:2,policylabellistresult:2,policylbmonitorprofil:2,policylbmonitorprofilelistresult:2,policylbpersistenceprofil:2,policylbpersistenceprofilelistresult:2,policylbpoolaccess:2,policylbpoolaccesslistresult:2,policylbrul:2,policylbrulelistresult:2,policylbvirtualserv:2,policylbvirtualserverlistresult:2,policynat:2,policynatrul:[2,8],policynatrulelistresult:[2,8],policyrealizedresourc:2,policyresourc:2,policyresourcerefer:2,policyresourcereferencelistresult:2,policyroot:2,policyserviceinst:[2,5],policyserviceinstancelistresult:[2,5],policytempl:[1,2],policytemplatelistresult:[1,2],policytemplateparamet:[1,2],policytemplateplacehold:2,pool:2,pool_id:2,pool_port:2,pool_usag:2,poolmemb:2,poolmembergroup:2,poolmemberset:2,poolusag:2,popul:[1,2,5,12,13],port:[2,6],port_desc:2,port_id:2,port_mirroring_inst:6,port_mirroring_instance_id:6,port_overload:2,portion:[1,2],portmirroringinst:[2,6],portmirroringinstancelistresult:[2,6],portmirroringsess:2,portmirroringsessionlistresult:2,portmirroringswitchingprofil:2,portset:2,posit:2,possibl:[2,4,5,6,13],post:[1,2],power:2,power_st:2,power_state_unknown:2,power_state_vm_run:2,power_state_vm_stop:2,power_state_vm_suspend:2,pre:2,preced:[2,5],precondit:[1,2,3,4,5,6,7,8,9,10,11,12,13],preconfigur:2,preconfiguredendpoint:2,preconfiguredhostswitch:2,preconfiguredhostswitchspec:2,preemptiv:2,prefer_server_ciph:2,preferred_edge_cluster_member_index:2,prefix:2,prefix_len:2,prefix_length:2,prefix_oper:2,prefix_operator_eq:2,prefix_operator_g:2,prefixconfig:2,present:[1,2,5,6,8,9],preserve_original_vlan:2,prev_sync_end_tim:2,prev_sync_statu:2,prev_sync_status_failur:2,prev_sync_status_success:2,prev_sync_status_unknown:2,prev_sync_typ:2,prev_sync_type_delta_sync:2,prev_sync_type_full_sync:2,prev_sync_type_idl:2,previou:4,previous:[2,4],primari:2,primary_down:2,primary_interface_mgmt_ip:2,primary_interface_network:2,princip:2,principal_ident:2,principal_identity_id:2,principalident:2,principalidentitylist:2,print:14,prioriti:2,privat:2,private_kei:2,privileg:2,probe_interv:2,process:2,process_command_lin:2,process_connect:[2,13],processconnect:2,processel:2,product:2,product_nam:2,product_vers:2,profil:2,profile_id:2,program:14,progress:[2,13],properli:2,properti:[1,2],property_nam:2,property_valu:2,propertyitem:2,propeti:2,protect:2,protocol:2,protocol_gr:2,protocol_icmpv4:2,protocol_icmpv6:2,protocol_identifi:2,protocol_invalid:2,protocol_ldap:2,protocol_nam:2,protocol_name_sftp:2,protocol_numb:2,protocol_ssl_v2:2,protocol_ssl_v3:2,protocol_tcp:2,protocol_tls_v1:2,protocol_tls_v1_1:2,protocol_tls_v1_2:2,protocol_udp:2,protocols_ssl_v2:2,protocols_ssl_v3:2,protocols_tls_v1:2,protocols_tls_v1_1:2,protocols_tls_v1_2:2,provid:[0,1,2,4,5,8,14,15],provider_deployment_map:[2,5],provider_deployment_map_id:5,provider_id:[2,5,9,10],provider_interfac:[2,5],provider_url:2,providerdeploymentmap:[2,5],providerdeploymentmaplistresult:[2,5],providerinterfac:[2,5],providerinterfacelistresult:[2,5],providerlistresult:2,providers_cli:[0,1,2,15],proxy_en:2,psk:2,public_cloud_gateway_nod:2,public_key_algo:2,public_key_algo_dsa:2,public_key_algo_rsa:2,public_key_length:2,publiccloudgatewaynod:2,publish:2,publish_fqdn:2,pure:2,purg:2,purge_ful:2,purge_no_purg:2,purpos:[1,2],put:[1,2],qosbaserateshap:2,qosswitchingprofil:2,qualifi:2,quantiti:2,queri:[1,2,3,4,5,6,7,8,9,11,12,13],question:2,quicksearchrespons:2,rais:[1,2,3,4,5,6,7,8,9,10,11,12,13],rang:2,rate:2,rate_limit:2,ratelimit:2,rbac:2,read:[1,2,4,5,6,8,9,12,13],read_only_api_us:2,read_write_api_us:2,realiz:[2,5,12],realization_specific_identifi:2,realizationstatebarrierconfig:2,realized_firewal:2,realized_firewall_sect:2,realized_group:2,realized_path:5,realized_servic:2,realized_st:[0,1,2,5,15],realized_state_cli:[0,1,2,15],realizeddiscoverysess:[2,13],realizedenforcementpoint:[2,5],realizedenforcementpointlistresult:[2,5],realizedent:5,realizedfirewal:2,realizedfirewallrul:2,realizedfirewallsect:[2,12],realizedfirewallsectionlistresult:[2,12],realizedfirewalluiresourc:2,realizedfirewalluiresourcelistresult:2,realizedgroup:2,realizedgroupuiresourc:2,realizedgroupuiresourcelistresult:2,realizedipset:2,realizedipsetlistresult:2,realizedlogicalport:2,realizedlogicalswitch:2,realizedmacset:2,realizedmacsetlistresult:2,realizednsgroup:2,realizednsgrouplistresult:2,realizednsgroupmemberevalu:2,realizednsservic:2,realizednsservicelistresult:2,realizedsecuritygroup:[2,12],realizedsecuritygrouplistresult:[2,12],realizedsecuritygroupmemberevalu:2,realizedservic:2,realizedst:2,realizedvirtualmachin:2,realizedvirtualmachinelistresult:[2,7],realt:2,realtim:[2,4],reason:[2,11],reason_arp_fail:2,reason_fw_rul:2,reason_no_rout:2,reason_ttl_zero:2,reason_unknown:2,receiv:[2,14],receive_interv:2,receive_window_s:2,received_count:2,recommend:2,record:[1,2,3,4,5,6,7,8,9,11,12],recoveri:2,recurs:2,red:2,redirect:[2,5,6],redirect_statu:2,redirect_to:2,redirect_url:2,redirection_communication_entri:[2,6],redirection_communication_map:[2,5],redirection_communication_maps_cli:[0,1,2,5,15],redirection_map_id:[5,6],redirectioncommunicationentri:[2,6],redirectioncommunicationentrylistresult:[2,6],redirectioncommunicationmap:[2,5],redirectioncommunicationmaplistresult:2,redistributionconfig:2,redistributionrul:2,redistributionrulelist:2,redund:2,redundant_uplink_port_id:2,ref:2,refer:[1,2],referenc:2,reflex:2,refresh:5,regex:[1,2],regist:[1,2],registr:2,registration_fail:2,registration_pend:2,registrationtoken:2,regular:2,regular_express:2,reject:[2,4],rel:2,relat:[1,2],related_attribut:2,related_error:2,relatedattribut:2,relatedattributeconditionalexpress:2,relateddata:2,relateddatarequest:2,relative_path:2,relative_url:1,releas:2,relev:2,remot:[2,10,14],remote_a:2,remote_address:2,remote_as_num:2,remote_as_numb:2,remote_diagnost:2,remote_file_serv:2,remote_group:2,remote_ip:2,remote_ip_address:2,remote_node_display_nam:2,remote_node_id:2,remote_port:2,remote_private_address:2,remote_public_address:2,remote_server_fingerprint_request:2,remote_st:2,remote_state_admin_down:2,remote_state_down:2,remote_state_init:2,remote_state_unknown_st:2,remote_state_up:2,remote_subnet:2,remote_us:2,remotefileserv:2,remoteserverfingerprint:2,remoteserverfingerprintrequest:2,remov:2,render:2,render_configur:2,renderconfigur:2,renew:2,replac:[2,5,6,9,11],replay_error:2,replic:2,replication_mod:2,replication_mode_mtep:2,replication_mode_sourc:2,reply_messag:2,reply_statu:2,repons:2,report:[2,11],repositori:2,repres:[1,2,14],represent:2,reput:2,request:[1,2,3,4,5,6,7,8,9,10,11,12,13],request_bodi:2,request_body_s:2,request_head:2,request_header_s:2,request_method:2,request_method_get:2,request_method_head:2,request_method_opt:2,request_method_post:2,request_method_put:2,request_uri:[1,2],request_url:2,request_vers:2,request_version_1_0:2,request_version_1_1:2,request_version_2_0:2,requir:[1,2,3,4,5,6,7,8,9,10,11,12,13],required_cap:2,required_members_for_initi:2,reserv:2,resolv:[1,2],resolveerror:1,resolver_pres:2,resourc:[2,5],resource_nam:2,resource_typ:2,resource_type_algtypensservic:2,resource_type_algtypeserviceentri:2,resource_type_assignedbydhcp:2,resource_type_bfdhealthmonitoringprofil:2,resource_type_bridgehighavailabilityclusterprofil:2,resource_type_byodserviceinst:2,resource_type_condit:2,resource_type_conjunctionoper:2,resource_type_containerconfigur:2,resource_type_custompolicylbpersistenceprofil:2,resource_type_custompolicylbvirtualserv:2,resource_type_dhcprelayprofil:2,resource_type_dhcprelayservic:2,resource_type_donutconfigur:2,resource_type_edgehighavailabilityprofil:2,resource_type_egressrateshap:2,resource_type_entityinstancecountconstraintexpress:2,resource_type_ethertypensservic:2,resource_type_extraconfighostswitchprofil:2,resource_type_gridconfigur:2,resource_type_groupel:2,resource_type_hostprofilenetworkmigrationspec:2,resource_type_httppolicylbmonitorprofil:2,resource_type_httppolicylbvirtualserv:2,resource_type_httpspolicylbmonitorprofil:2,resource_type_httpspolicylbvirtualserv:2,resource_type_icmppolicylbmonitorprofil:2,resource_type_icmptypensservic:2,resource_type_icmptypeserviceentri:2,resource_type_igmptypensservic:2,resource_type_igmptypeserviceentri:2,resource_type_ingressbroadcastrateshap:2,resource_type_ingressrateshap:2,resource_type_intervalbackupschedul:2,resource_type_ipaddressexpress:2,resource_type_ipfixcollectorupmprofil:2,resource_type_ipfixdfwconfig:2,resource_type_ipfixswitchconfig:2,resource_type_ipfixswitchupmprofil:2,resource_type_ipmirrordestin:2,resource_type_ipprotocolnsservic:2,resource_type_ipprotocolserviceentri:2,resource_type_ipsecvpnsessionstatist:2,resource_type_l2vpnpeercod:2,resource_type_l2vpnsessionstatist:2,resource_type_l4policylbpersistenceprofil:2,resource_type_l4portsetnsservic:2,resource_type_l4portsetserviceentri:2,resource_type_l7policylbpersistenceprofil:2,resource_type_labelvalueconfigur:2,resource_type_lbcookiepersistenceprofil:2,resource_type_lbfasttcpprofil:2,resource_type_lbfastudpprofil:2,resource_type_lbhttpmonitor:2,resource_type_lbhttpprofil:2,resource_type_lbhttpsmonitor:2,resource_type_lbicmpmonitor:2,resource_type_lbpassivemonitor:2,resource_type_lbsourceippersistenceprofil:2,resource_type_lbtcpmonitor:2,resource_type_lbudpmonitor:2,resource_type_lldphostswitchprofil:2,resource_type_logicalportmirrordestin:2,resource_type_logicalportmirrorsourc:2,resource_type_logicalroutercentralizedserviceport:2,resource_type_logicalrouterdownlinkport:2,resource_type_logicalrouteriptunnelport:2,resource_type_logicalrouterlinkportontier0:2,resource_type_logicalrouterlinkportontier1:2,resource_type_logicalrouterloopbackport:2,resource_type_logicalrouteruplinkport:2,resource_type_logicalswitchel:2,resource_type_logicalswitchmirrorsourc:2,resource_type_logicalt0routerel:2,resource_type_logicalt1routerel:2,resource_type_multiwidgetconfigur:2,resource_type_nestedexpress:2,resource_type_niocprofil:2,resource_type_nsgroupcomplexexpress:2,resource_type_nsgroupsimpleexpress:2,resource_type_nsgrouptagexpress:2,resource_type_nsxtconnectioninfo:2,resource_type_nsxvconnectioninfo:2,resource_type_pnicmirrordestin:2,resource_type_pnicmirrorsourc:2,resource_type_policybasedipsecvpnsess:2,resource_type_policybasedl3vpnsess:2,resource_type_preconfiguredhostswitchspec:2,resource_type_processel:2,resource_type_realizedfirewallsect:2,resource_type_realizednsgroup:2,resource_type_realizednsservic:2,resource_type_realizedsecuritygroup:2,resource_type_relatedattributeconditionalexpress:2,resource_type_routebasedipsecvpnsess:2,resource_type_routebasedl3vpnsess:2,resource_type_serviceinst:2,resource_type_standardhostswitchspec:2,resource_type_staticiplistspec:2,resource_type_staticipmaclistspec:2,resource_type_staticippoolspec:2,resource_type_statsconfigur:2,resource_type_tcppolicylbmonitorprofil:2,resource_type_tcppolicylbvirtualserv:2,resource_type_traceflowobservationdeliv:2,resource_type_traceflowobservationdrop:2,resource_type_traceflowobservationdroppedlog:2,resource_type_traceflowobservationforward:2,resource_type_traceflowobservationforwardedlog:2,resource_type_traceflowobservationreceiv:2,resource_type_traceflowobservationreceivedlog:2,resource_type_udppolicylbmonitorprofil:2,resource_type_udppolicylbvirtualserv:2,resource_type_uplinkhostswitchprofil:2,resource_type_valueconstraintexpress:2,resource_type_vlanmirrorsourc:2,resource_type_vmel:2,resource_type_weeklybackupschedul:2,resourcealloc:2,resourcelink:2,resourcerefer:2,respect:2,respond_onli:2,respons:[1,2,5,13,14],response_bodi:2,response_status_cod:2,response_timeout:2,respos:2,restor:[2,4],restore_cli:[0,1,2,15],restore_configur:4,restore_end_tim:2,restore_start_tim:2,restoreconfigur:[2,4],restorestep:2,restrict:2,result:[1,2,3,4,5,6,7,8,9,11,12],result_count:2,result_overflow:2,resum:2,retri:[2,11],retrievesshfingerprint:2,retur:2,reusabl:2,reverse_concatenated_path_down_count:2,revis:[2,5,6],revise_operation_aft:[5,6],revise_operation_befor:[5,6],revise_operation_bottom:[5,6],revise_operation_top:[5,6],revision_desir:2,revisionedresourc:2,revoc:2,revocation_d:2,revok:2,revoke_node_request:2,revokemissingnod:2,revokenoderequest:2,rewrit:2,rewritten:2,rhelkvm:2,rhs_valu:2,rise_count:2,role:[1,2],role_auditor:2,role_bind:2,role_cloud_admin:2,role_cloud_auditor:2,role_cloud_service_admin:2,role_cloud_service_auditor:2,role_config:2,role_enterprise_admin:2,role_lb_admin:2,role_lb_auditor:2,role_nam:2,role_network_engin:2,role_network_op:2,role_read_only_api_us:2,role_read_write_api_us:2,role_security_engin:2,role_security_op:2,role_site_reliability_auditor:2,role_site_reliability_engin:2,rolebind:2,rolebindinglistresult:2,rolelistresult:2,roles_control:2,rolewithfeatur:2,roll:2,rolled_back:2,root:2,root_password:2,round_robin:2,rout:[2,5],route_aggreg:2,route_id:5,route_map_id:2,route_to_overlai:2,route_to_overlay_nat:2,route_to_underlai:2,route_to_underlay_nat:2,route_typ:2,routebasedipsecvpnsess:2,routebasedl3vpnsess:[2,5],routemap:2,routemaplistresult:2,routemapsequ:2,routemapsequencematch:2,routemapsequenceset:2,router:2,router_path:2,router_typ:2,router_type_tier0:2,router_type_tier1:2,routernexthop:2,routing_config_path:2,routingconfig:2,row:2,row_list_field:2,rowlistfield:2,rsa:2,rsa_public_key_expon:2,rsa_public_key_modulu:2,rspandstmirrorsess:2,rspansrcmirrorsess:2,rule:[2,8],rule_count:2,rule_dis:2,rule_filt:2,rule_id:2,rule_path:2,rule_prior:2,rule_tag:2,rulest:2,run:2,runtim:2,runtime_statu:2,runtime_status_in_servic:2,runtime_status_needs_attent:2,runtime_status_out_of_servic:2,rx_broadcast:2,rx_byte:2,rx_drop:2,rx_error:2,rx_frame:2,rx_multicast:2,rx_packet:2,sa_life_tim:2,sa_mismatch_errors_in:2,sa_mismatch_errors_out:2,sai:2,same:[1,2],sampl:2,saturdai:2,schedul:2,schedule_en:2,schema:2,scheme:2,scheme_http:2,scheme_nam:2,scheme_name_password:2,scope:2,scope_op:2,scope_op_equ:2,sdk:14,search:[3,11,15],search_domain:2,search_str:3,searchrespons:[2,11],secondary_interface_mgmt_ip:2,secondary_interface_network:2,seconds_between_backup:2,secret:[2,4],section:[2,12],section_count:2,section_id:2,section_typ:2,section_type_l2dfw:2,section_type_l3dfw:2,section_type_l3redirect:2,section_type_layer2:2,section_type_layer3:2,secur:[2,12],secure_id:2,security_engin:2,security_op:2,securitygroup:12,securitygroup_nam:12,see:[2,14],segment:[2,5,8],segment_id:[2,5,8],segment_path:2,segmentlistresult:[2,5],segments_cli:[0,1,2,5,15],segmentsubnet:2,select:[2,5,13],selectableresourcerefer:2,self:2,self_:2,self_sign:2,selfresourcelink:2,selfsign:2,send:[2,14],send_en:2,sensit:5,sent:2,separ:[1,2,3,4,5,6,7,8,9,11,12],seq_number_overflow_error:2,sequenc:2,sequence_no:2,sequence_numb:2,serial:2,serial_numb:2,server:[1,2,3,4,5,6,7,8,9,10,11,12,13,14],server_address:2,server_auth:2,server_auth_ca_certificate_id:2,server_auth_ca_id:2,server_auth_crl_id:2,server_auth_ignor:2,server_auth_requir:2,server_block_en:2,server_ssl_profile_bind:2,server_ssl_set:2,server_ssl_settings_base_secure_111317:2,server_ssl_settings_dis:2,server_ssl_settings_high_secure_111317:2,server_ssl_settings_moderate_secure_111317:2,server_tcp_profile_id:2,serversslprofilebind:2,servic:[1,2,3,4,5,6,7,8,9,10,11,12,13,14],service_attachment_id:2,service_bind:2,service_definit:2,service_definition_id:2,service_deployment_spec:2,service_entri:[2,5],service_entry_id:5,service_form_factor:2,service_form_factor_larg:2,service_form_factor_medium:2,service_form_factor_smal:2,service_group:2,service_id:[2,5],service_instance_endpoint:9,service_instance_endpoint_id:9,service_instance_id:[2,5,9],service_instances_cli:[0,1,2,5,15],service_interfac:5,service_interface_path:2,service_nam:[2,5],service_port:2,service_typ:2,service_type_eth:2,service_type_firewallserviceassociationlistresult:2,service_type_ipfixserviceassociationlistresult:2,service_type_non_eth:2,service_type_servic:2,service_type_service_group:2,service_types_api:2,service_types_mgmt_clust:2,service_types_mgmt_plan:2,service_vm_id:2,service_vm_ovf_url:2,serviceassociationlistresult:2,serviceattach:2,serviceattachmentlistresult:2,servicebind:2,servicedefinit:2,servicedeploy:2,servicedeploymentspec:2,serviceendpoint:2,serviceentri:[2,5],serviceentrylistresult:[2,5],serviceinsert:2,serviceinsertionrul:2,serviceinsertionrulelistresult:2,serviceinsertionsect:2,serviceinsertionsectionlistresult:2,serviceinsertionsectionrulelist:2,serviceinsertionservic:2,serviceinsertionservicelistresult:2,serviceinst:[2,5],serviceinstanceendpoint:[2,9],serviceinstancelistresult:2,serviceinterfac:[2,5],serviceinterfacelistresult:[2,5],serviceip:2,serviceipslistresult:2,servicelistresult:2,serviceprofil:2,serviceprofilelistresult:2,services_cli:[0,1,2,11,15],serviceunavail:[1,2,3,4,5,6,7,8,9,10,11,12,13],session:[2,5,13],session_cache_en:2,session_cache_timeout:2,session_count:2,session_typ:2,session_type_l3portmirrorsess:2,session_type_localportmirrorsess:2,session_type_logicallocalportmirrorsess:2,session_type_logicalportmirrorsess:2,session_type_rspandstmirrorsess:2,session_type_rspansrcmirrorsess:2,session_type_uplinkportmirrorsess:2,sessionid:2,sessionnam:2,sessionstatu:2,sessionstatus_cr:2,sessionstatus_error:2,sessionstatus_finish:2,sessionstatus_start:2,sessionstatus_stop:2,set:[2,4,5],set_criteria:2,sftp:[2,4],sha1:2,sha256:2,sha2_256:2,shaper:2,shaper_configur:2,share:[1,2],shared_secret:2,should:[1,2,3,4,5,6,7,8,9,11,12],show:2,shown:2,showsensitivedata:5,shut:2,side:[2,10,11],sign:2,signatur:2,signature_algorithm:2,similar:2,similarli:2,simpl:2,simplifi:2,sinc:14,singl:[1,2],site:2,site_reliability_auditor:2,site_reliability_engin:2,size:[1,2],size_larg:2,size_medium:2,size_smal:2,sky_blu:2,slow:2,small:2,snap_length:2,snat:2,snat_transl:2,sni_certificate_id:2,software_vers:2,some:[1,2,7],somewher:5,soon:2,sorry_pool_id:2,sort:[1,2,3,4,5,6,7,8,9,11,12],sort_ascend:[1,2,3,4,5,6,7,8,9,11,12],sort_bi:[1,2,3,4,5,6,7,8,9,11,12],sort_kei:2,sourc:[2,4,6,14],source_address:2,source_authentication_mod:2,source_authentication_mode_basic_authent:2,source_authentication_mode_market_plac:2,source_authentication_mode_no_authent:2,source_cach:2,source_group:2,source_icmp_typ:2,source_info:14,source_ip:2,source_ip_persistence_entry_s:2,source_logical_segment_path:2,source_network:2,source_pn:2,source_port:2,source_realtim:2,source_svc:14,source_tool:2,source_transport_port:2,sourcegroup:2,sources_bgp:2,sources_exclud:2,sources_nsx_connect:2,sources_nsx_stat:2,sources_stat:2,sources_tier0_nat:2,sources_tier1_lb_snat:2,sources_tier1_lb_vip:2,sources_tier1_nat:2,sourcetyp:14,space:2,span:2,spec:[2,14],special:14,specif:[2,11,13],specifi:[1,2,5,9,10,11,13,14],spoke:2,spoofguard:2,spoofguardswitchingprofil:2,src_component_id:2,src_component_nam:2,src_component_typ:2,src_component_type_bridg:2,src_component_type_dfw:2,src_component_type_edge_hostswitch:2,src_component_type_edge_tunnel:2,src_component_type_l:2,src_component_type_lr:2,src_component_type_phys:2,src_component_type_unknown:2,src_element_id:2,src_interface_id:2,srcdestipvlan:2,srcdestmac:2,srcdestmacipport:2,srcip:2,srcmac:2,srcport:2,srm:2,ssh_fingerprint:2,ssl:2,ssl_profile_id:2,ssl_trust_object_data:2,ssl_v2:2,ssl_v3:2,sslcertif:2,sslcertificatelist:2,ssltrustobjectdata:2,stabl:2,stack:2,stamp:2,stand:2,stand_alon:2,standalon:2,standard:[1,2],standardhostswitch:2,standardhostswitchspec:2,standby_list:2,start:[2,5,13],start_tim:2,starts_with:2,startswith:2,starttim:2,stat:[2,9,10],state:[2,7,13],state_admin_down:2,state_down:2,state_error:2,state_fail:2,state_failed_to_cr:2,state_failed_to_r:2,state_failur:2,state_in_progress:2,state_init:2,state_orphan:2,state_partial_success:2,state_pend:2,state_r:2,state_success:2,state_unavail:2,state_unknown:2,state_unknown_st:2,state_unr:2,state_up:2,stateless:2,static_arp_config:[2,8],static_ip_pool_id:2,static_rout:[2,5],staticarp:8,staticarpconfig:[2,8],statichopbfdp:2,statichopbfdpeerdeleterequestparamet:2,statichopbfdpeerlistresult:2,staticiplistspec:2,staticipmaclistspec:2,staticippoolspec:2,staticrout:[2,5],staticroutelistresult:2,staticroutenexthop:2,staticrouteslistresult:[2,5],statist:[2,5,9,10],statistics_cli:[0,1,2,5,6],statitem:2,statsconfigur:2,statu:[1,2,4,5,13],status:2,status_cancel:2,status_complet:2,status_degrad:2,status_detach:2,status_dis:2,status_down:2,status_error:2,status_fail:2,status_graceful_dis:2,status_in_progress:2,status_initi:2,status_invalid:2,status_kil:2,status_partially_up:2,status_primary_down:2,status_run:2,status_st:2,status_start:2,status_success:2,status_unknown:2,status_unst:2,status_up:2,statuscount:2,std:[1,2,3,4,5,6,7,8,9,10,11,12,13],step:2,step_numb:2,stop:[2,5,6],storag:2,storage_id:2,store:[2,4,11],str:[1,2,3,4,5,6,7,8,9,10,11,12,13,14],strategi:2,stream:2,streamaddress:2,streamport:2,strict:2,string:[1,2,3,5,7,9,10,14],stringlistresult:2,struct:[2,5],structur:2,stt:2,stub:[1,2,3,4,5,6,7,8,9,10,11,12,13],stub_config:[1,2,3,4,5,6,7,8,9,10,11,12,13],stubfactori:[1,2,3,4,5,6,7,8,9,10,11,12,13],stubfactorybas:[1,2,3,4,5,6,7,8,9,10,11,12,13],sub_system_address:2,sub_system_id:2,sub_system_typ:2,subdivid:2,subject:2,subject_cn:2,submodul:[0,15],subnet:2,subnet_mask:2,subpackag:15,subsequ:2,substr:[2,3],success:2,successfulli:2,summari:1,summarizeinventorytoremot:1,summary_onli:2,sun_rpc_tcp:2,sun_rpc_udp:2,sundai:2,superus:2,suppli:[1,2,3,4,5,6,7,8,9,11,12],support:[1,2,14],supported_algorithm:2,suspend:2,suspended_by_us:2,suspended_for_user_act:2,svmdeploymentspec:2,swap_tot:2,swap_us:2,switch_id:2,switching_profile_id:2,switchingprofileslistresult:2,switchingprofiletypeidentri:2,switchsecurityswitchingprofil:2,sync:2,sync_entire_domain:2,synchron:[2,5],syntax:2,syslog:2,system:[1,2,14],system_desc:2,system_metadata:2,system_nam:2,system_own:2,system_port_numb:2,system_statu:2,system_tim:2,t1_lb_snat:2,t1_lb_vip:2,t1_nat:2,tabl:2,tag:[2,11],tag_op:2,tag_op_equ:2,take:[1,2],taken:2,tansport:2,tap:2,tap_traffic_count:2,target:2,target_display_nam:2,target_id:2,target_ip:2,target_properti:2,target_resourc:2,target_resource_typ:2,target_statu:2,target_status:2,target_status_dis:2,target_status_en:2,target_typ:2,target_type_ipset:2,target_type_logicalport:2,target_type_logicalswitch:2,target_type_macset:2,target_type_nsgroup:2,target_type_virtualmachin:2,target_vers:2,targetresourcestatu:2,task:[1,2],task_id:[1,2],tasklistresult:[1,2],taskproperti:[1,2],tasks_client:[0,1,15],tcp:2,tcp_multiplexing_en:2,tcp_multiplexing_numb:2,tcppolicylbmonitorprofil:2,tcppolicylbvirtualserv:2,team:2,teamingpolici:2,telemetri:2,telemetry_agreement_displai:2,telemetry_proxi:2,telemetry_schedul:2,telemetryagr:2,telemetryconfig:2,telemetryproxi:2,telemetryschedul:2,templat:[1,2],template_bodi:2,template_id:1,template_paramet:2,template_placehold:2,template_st:2,tenant:2,term:5,termin:2,text:2,tftp:2,than:2,thei:2,them:[2,5],therefor:2,thi:[1,2,3,4,5,6,7,8,9,11,12,14],those:2,three:2,through:2,thumbprint:2,thursdai:2,tier0:2,tier0_lr:2,tier0_nat:2,tier1:2,tier1_lb_snat:2,tier1_lb_vip:2,tier1_lr:2,tier1_nat:2,time:[1,2],time_since_establish:2,timeout:2,timeout_typ:2,timeout_type_fast:2,timeout_type_slow:2,timer:4,timestamp:[2,4],timestamp_micro:2,tls_ecdh_ecdsa_with_aes_128_cbc_sha256:2,tls_ecdh_ecdsa_with_aes_128_cbc_sha:2,tls_ecdh_ecdsa_with_aes_128_gcm_sha256:2,tls_ecdh_ecdsa_with_aes_256_cbc_sha384:2,tls_ecdh_ecdsa_with_aes_256_cbc_sha:2,tls_ecdh_ecdsa_with_aes_256_gcm_sha384:2,tls_ecdh_rsa_with_aes_128_cbc_sha256:2,tls_ecdh_rsa_with_aes_128_cbc_sha:2,tls_ecdh_rsa_with_aes_128_gcm_sha256:2,tls_ecdh_rsa_with_aes_256_cbc_sha384:2,tls_ecdh_rsa_with_aes_256_cbc_sha:2,tls_ecdh_rsa_with_aes_256_gcm_sha384:2,tls_ecdhe_ecdsa_with_aes_128_cbc_sha256:2,tls_ecdhe_ecdsa_with_aes_128_cbc_sha:2,tls_ecdhe_ecdsa_with_aes_128_gcm_sha256:2,tls_ecdhe_ecdsa_with_aes_256_cbc_sha384:2,tls_ecdhe_ecdsa_with_aes_256_cbc_sha:2,tls_ecdhe_ecdsa_with_aes_256_gcm_sha384:2,tls_ecdhe_rsa_with_aes_128_cbc_sha256:2,tls_ecdhe_rsa_with_aes_128_cbc_sha:2,tls_ecdhe_rsa_with_aes_128_gcm_sha256:2,tls_ecdhe_rsa_with_aes_256_cbc_sha384:2,tls_ecdhe_rsa_with_aes_256_cbc_sha:2,tls_ecdhe_rsa_with_aes_256_gcm_sha384:2,tls_rsa_with_3des_ede_cbc_sha:2,tls_rsa_with_aes_128_cbc_sha256:2,tls_rsa_with_aes_128_cbc_sha:2,tls_rsa_with_aes_128_gcm_sha256:2,tls_rsa_with_aes_256_cbc_sha256:2,tls_rsa_with_aes_256_cbc_sha:2,tls_rsa_with_aes_256_gcm_sha384:2,tls_v1:2,tls_v1_1:2,tls_v1_2:2,token:2,tooltip:2,topolog:[2,13],total:2,total_id:2,total_in_prefix_count:2,total_out_prefix_count:2,total_sess:2,total_session_count:2,total_step:2,tpc:2,trace:2,traceflow:2,traceflowlistresult:2,traceflowobserv:2,traceflowobservationcount:2,traceflowobservationdeliv:2,traceflowobservationdrop:2,traceflowobservationdroppedlog:2,traceflowobservationforward:2,traceflowobservationforwardedlog:2,traceflowobservationlistresult:2,traceflowobservationreceiv:2,traceflowobservationreceivedlog:2,track:2,traffic:2,traffic_nam:2,traffic_name_fault_toler:2,traffic_name_hbr:2,traffic_name_iscsi:2,traffic_name_manag:2,traffic_name_nf:2,traffic_name_vdp:2,traffic_name_virtual_machin:2,traffic_name_vmot:2,traffic_name_vsan:2,traffic_sourc:2,traffic_source_external_publ:2,traffic_source_external_vpn:2,traffic_source_intern:2,traffic_statistics_per_seg:2,traffic_tag:2,traffic_typ:2,traget:2,transact:[1,2],transfer:2,transform_protocol:2,transform_protocol_esp:2,transit:2,transit_subnet:2,translated_network:2,translated_port:2,transmit_interv:2,transmit_window_s:2,transport:2,transport_nod:2,transport_node_id:2,transport_node_nam:2,transport_node_typ:2,transport_node_type_edg:2,transport_node_type_esx:2,transport_node_type_hyperv:2,transport_node_type_oth:2,transport_node_type_public_cloud_gateway_nod:2,transport_node_type_rhelkvm:2,transport_node_type_ubuntukvm:2,transport_nodes_connect:2,transport_tunnel:2,transport_tunnel_path:2,transport_typ:2,transport_type_l2_bridg:2,transport_type_l3_rout:2,transport_type_overlai:2,transport_type_vlan:2,transport_vlan:2,transport_zone_endpoint:2,transport_zone_id:2,transport_zone_profile_id:2,transportnod:2,transportnodelistresult:2,transportnodest:2,transportnodestatelistresult:2,transportnodestatu:2,transportnodestatuslistresult:2,transportnodetemplatelistresult:2,transportnodetemplatest:2,transports_l2_bridg:2,transports_l3_rout:2,transportzon:2,transportzoneendpoint:2,transportzonelistresult:2,transportzoneprofil:2,transportzoneprofilelistresult:2,transportzoneprofiletypeidentri:2,transportzonestatu:2,transportzonestatuslistresult:2,tree:[2,5,12],tri:1,trunk:2,trunkvlanrang:2,trust:2,trust_ca_id:2,trust_crl_id:2,trust_management_cli:[0,1,15],trust_object_data:2,trustmanag:1,trustmanagementdata:[1,2],trustobjectdata:2,ttl_zero:2,tuesdai:2,tunnel:[2,10],tunnel_digest_algorithm:2,tunnel_digest_algorithms_sha1:2,tunnel_digest_algorithms_sha2_256:2,tunnel_down_reason:2,tunnel_encapsul:2,tunnel_encryption_algorithm:2,tunnel_encryption_algorithms_128:2,tunnel_encryption_algorithms_256:2,tunnel_encryption_algorithms_gcm_128:2,tunnel_encryption_algorithms_gcm_192:2,tunnel_encryption_algorithms_gcm_256:2,tunnel_id:2,tunnel_mod:2,tunnel_port:2,tunnel_port_id:2,tunnel_statist:2,tunnel_statu:2,tunnel_status_down:2,tunnel_status_up:2,tunnel_subnet:2,tunnellist:2,tunnelportconfig:2,tunnelproperti:2,tunnelstatuscount:2,tunnelsubnet:2,two:[1,2,14],tx_broadcast:2,tx_byte:2,tx_carrier:2,tx_coll:2,tx_drop:2,tx_error:2,tx_multicast:2,tx_packet:2,type:[1,2,3,4,5,6,7,8,9,10,11,12,13],type_addcontrollernodespec:2,type_addmanagementnodespec:2,type_bond:2,type_controllerclusterroleconfig:2,type_d:2,type_detail:2,type_edg:2,type_error:2,type_group:2,type_info:2,type_inprogress:2,type_ipv4_unicast:2,type_lbhttpredirectact:2,type_lbhttprejectact:2,type_lbhttprequestbodycondit:2,type_lbhttprequestcookiecondit:2,type_lbhttprequestheadercondit:2,type_lbhttprequestheaderrewriteact:2,type_lbhttprequestmethodcondit:2,type_lbhttprequesturiargumentscondit:2,type_lbhttprequesturicondit:2,type_lbhttprequesturirewriteact:2,type_lbhttprequestversioncondit:2,type_lbhttpresponseheadercondit:2,type_lbhttpresponseheaderrewriteact:2,type_lbipheadercondit:2,type_lbpersistencecookietim:2,type_lbselectpoolact:2,type_lbselectserveract:2,type_lbsessioncookietim:2,type_lbsnatautomap:2,type_lbsnatippool:2,type_lbtcpheadercondit:2,type_local_us:2,type_managementclusterroleconfig:2,type_not_avail:2,type_numb:2,type_pn:2,type_principal_ident:2,type_regular:2,type_remote_group:2,type_remote_us:2,type_servic:2,type_str:2,type_success:2,type_unknown_typ:2,type_url:2,type_us:2,type_vpnv4_unicast:2,type_warn:2,typegroup:2,typic:2,ubuntukvm:2,udp:2,udppolicylbmonitorprofil:2,udppolicylbvirtualserv:2,unassociatedvmlistresult:2,unauthent:5,unauthor:[1,2,3,4,5,6,7,8,9,10,11,12,13],unavail:[1,2,3,4,5,6,7,8,9,10,11,12,13],unblocked_vlan:2,undefin:2,undeployment_fail:2,undeployment_in_progress:2,undeployment_success:2,under:[2,5],underneath:[5,12],underscor:2,unicast_flooding_allow:2,uniform:2,uninstall_fail:2,uninstall_in_progress:2,uninstall_success:2,uniqu:[2,5],unknown:[2,13,14],unknown_encap:2,unknown_st:2,unknown_typ:2,unlik:2,unmanag:2,unreach:2,unreal:2,unset:2,unstabl:2,unsuccess:2,until:2,untrust:2,up_count:2,updat:[1,2,4,5,6,8,9],update_principal_identity_certificate_request:2,updatecertif:2,updateprincipalidentitycertificaterequest:2,updatetag:11,upgrade_cli:[0,1,15],upgrade_fail:2,upgrade_in_progress:2,upgrade_statu:2,upgrade_status_fail:2,upgrade_status_start:2,upgrade_status_success:2,upgradehistori:2,upgradehistorylist:2,uplink:2,uplink_nam:2,uplink_teaming_policy_nam:2,uplink_typ:2,uplink_type_lag:2,uplink_type_pn:2,uplinkhostswitchprofil:2,uplinkportmirrorsess:2,upload:[1,2],upmprofilelistresult:2,upstream_serv:2,uptim:2,uri:[1,2],uri_argu:2,url:[1,2],urlalia:2,urpf_mod:2,urpf_mode_non:2,urpf_mode_strict:2,usag:2,usage_count:2,use:[2,4,14],used:[1,2,3,4,5,6,7,8,9,11,12],used_bi:2,useful:2,user:[1,2,3,4],user_input_list:2,user_metadata:2,user_nam:2,user_set:2,userinfo:2,usernam:[2,3],usernamepasswordlogincredenti:2,uses:2,using:[1,2,6],usual:2,uuid:2,valiat:5,valid:2,valu:[1,2,4,5,6,13,14],value_abort:2,value_constraint:2,value_error:2,value_fail:2,value_initi:2,value_not_avail:2,value_not_start:2,value_run:2,value_success:2,value_suspend:2,value_suspended_by_us:2,value_suspended_for_user_act:2,valueconstraintexpress:2,vapi:[1,2,3,4,5,6,7,8,9,10,11,12,13,14],vapiinterfac:[1,2,3,4,5,6,7,8,9,10,11,12,13],vapistruct:[2,5],variabl:[2,14],variou:2,vc_id:2,vcenet:2,vcenter:2,vdp:2,vdrport:2,vendor:2,vendor_id:2,verif:2,verifi:2,verifiableasymmetriclogincredenti:2,version:[2,14],version_1_0:2,version_1_1:2,version_2_0:2,version_list:2,versioned_deployment_spec:2,versioneddeploymentspec:2,versionlist:2,versionwhitelist:2,vertici:2,via:2,vib:2,vidm:[2,3],vidm_client:[0,1,2,15],vidminfo:2,vidminfolistresult:[2,3],view:[2,13],viewabl:2,viewtypequeryparamet:2,vif:2,vif_typ:2,vif_type_child:2,vif_type_independ:2,vif_type_par:2,vif_uuid:2,vifattachmentcontext:2,vipsubnet:2,virtual:[2,11],virtual_machin:2,virtual_machine_id:2,virtual_machine_tags_upd:11,virtual_server_id:2,virtualmachin:[2,7,11],virtualmachinelistresult:2,virtualmachinetagsupd:[2,11],virtualnetworkinterfac:2,virtualnetworkinterfacelistresult:2,viz:2,vlan:2,vlan_id:2,vlan_rang:2,vlan_transport_zone_id:2,vlan_trunk_spec:2,vlanmirrorsourc:2,vlantrunkspec:2,vm_bios_uuid:2,vm_connect:[2,13],vm_deployment_config:2,vm_deployment_fail:2,vm_deployment_in_progress:2,vm_deployment_queu:2,vm_deployment_restart:2,vm_external_id:2,vm_host_id:2,vm_host_nam:2,vm_id:2,vm_instance_uuid:2,vm_ip:2,vm_local_id_on_host:2,vm_nic_info:2,vm_path:2,vm_power_off_fail:2,vm_power_off_in_progress:2,vm_power_on_fail:2,vm_power_on_in_progress:2,vm_run:2,vm_stop:2,vm_suspend:2,vm_tool:2,vm_tools_en:2,vm_undeploy_fail:2,vm_undeploy_in_progress:2,vm_undeploy_success:2,vm_usage_count:2,vmc:2,vmconnect:2,vmelement:2,vmk:2,vmkernal:2,vmknic:2,vmktologicalswitchmap:2,vmnic:2,vmnicinfo:2,vmotion:2,vmware:[0,14,15],vni:2,vnic:2,vnipool:2,vnipoollistresult:2,vnirang:2,vpn:2,vpn_session_id:2,vpnv4_unicast:2,vsan:2,vsphere:2,vsphereclusternodevmdeploymentconfig:2,vspheredeploymentconfig:2,vtep_ip:2,vtep_label:2,vtep_mac_address:2,vtepcsvlistresult:2,vteplabelpool:2,vteplabelpoollistresult:2,vteplabelpoolusag:2,vteplabelrang:2,vteplistresult:2,vteptablecsvrecord:2,vteptableentri:2,vxlan:2,wait:2,wan:2,want:14,warn:2,warning_threshold:2,weak:2,web:2,wednesdai:2,week:2,weekli:2,weeklybackupschedul:2,weeklytelemetryschedul:2,weight:2,weighted_least_connect:2,weighted_round_robin:2,well:2,when:[2,14],where:[2,3,4,13],whether:[1,2],which:[1,2,3,4,5,6,7,8,9,11,12,14],white_list:2,white_list_provid:2,white_list_providers_lport_bind:2,white_list_providers_lswitch_bind:2,whitelist:2,who:2,whole:2,whose:[2,3,4],widget:2,widget_id:2,widgetconfigur:2,widgetitem:2,wire:2,within:[2,6],without:2,word:1,work:2,workload:2,would:[2,14],wrapper:2,write:2,www:2,x509certif:2,x509crl:2,x509crlentri:2,x_forwarded_for:2,xforwarded_for_insert:2,xforwarded_for_replac:2,xyz:2,year:2,yellow:2,you:[1,2,14],your:[2,14],zone:[2,5]},titles:["com package","com.vmware package","com.vmware.nsx_policy package","com.vmware.nsx_policy.aaa package","com.vmware.nsx_policy.cluster package","com.vmware.nsx_policy.infra package","com.vmware.nsx_policy.infra.domains package","com.vmware.nsx_policy.infra.domains.groups package","com.vmware.nsx_policy.infra.networks package","com.vmware.nsx_policy.infra.providers package","com.vmware.nsx_policy.infra.providers.l2vpn_context package","com.vmware.nsx_policy.infra.realized_state package","com.vmware.nsx_policy.infra.realized_state.enforcement_points package","com.vmware.nsx_policy.infra.realized_state.enforcement_points.ops package","Interface definition language to python mapping for enumerated types","Welcome to NSX-T Policy SDK\u2019s documentation!"],titleterms:{aaa:3,aaa_client:2,backups_cli:4,bgp_client:9,cluster:4,cluster_cli:2,code:14,com:[0,1,2,3,4,5,6,7,8,9,10,11,12,13],communication_maps_cli:6,configs_cli:2,definit:14,deployment_zones_cli:5,document:[14,15],domain:[6,7],domains_cli:[5,13],edge_communication_maps_cli:6,enforcement_point:[12,13],enforcement_points_cli:[2,11],enumer:14,eula_cli:2,exampl:14,firewalls_cli:12,group:7,groups_client:[6,12],indic:15,infra:[5,6,7,8,9,10,11,12,13],infra_cli:2,interfac:14,ip_sets_cli:12,l2vpn_context:10,l2vpn_context_cli:9,l2vpns_client:10,l3vpns_client:9,languag:14,licenses_cli:2,mac_sets_cli:12,map:14,model_cli:2,modul:[1,2,3,4,5,6,7,8,9,10,11,12,13],nat_client:8,network:8,networks_cli:5,nodes_cli:4,nsx:15,nsx_polici:[2,3,4,5,6,7,8,9,10,11,12,13],nsx_policy_cli:1,ops:13,packag:[0,1,2,3,4,5,6,7,8,9,10,11,12,13],partner_services_cli:5,polici:15,provid:[9,10],providers_cli:5,python:14,realized_st:[11,12,13],realized_state_cli:5,redirection_communication_maps_cli:6,restore_cli:4,sdk:15,segments_cli:8,service_instances_cli:9,services_cli:[5,12],statistics_cli:7,submodul:[1,2,3,4,5,6,7,8,9,10,11,12,13],subpackag:[0,1,2,5,6,9,11,12],tabl:15,tasks_client:2,trust_management_cli:2,type:14,upgrade_cli:2,vidm_client:3,vmware:[1,2,3,4,5,6,7,8,9,10,11,12,13],welcom:15}}) \ No newline at end of file diff --git a/nsx/vmc_app/.buildinfo b/nsx/vmc_app/.buildinfo new file mode 100644 index 00000000..cb8881de --- /dev/null +++ b/nsx/vmc_app/.buildinfo @@ -0,0 +1,4 @@ +# Sphinx build info version 1 +# This file hashes the configuration used when building these files. When it is not found, a full rebuild will be done. +config: d118d18c2744cfeda73360c7342d3ffb +tags: 645f666f9bcd5a90fca523b33c5a78b7 diff --git a/nsx/vmc_app/.doctrees/com.doctree b/nsx/vmc_app/.doctrees/com.doctree new file mode 100644 index 00000000..96af72ea Binary files /dev/null and b/nsx/vmc_app/.doctrees/com.doctree differ diff --git a/nsx/vmc_app/.doctrees/com.vmware.doctree b/nsx/vmc_app/.doctrees/com.vmware.doctree new file mode 100644 index 00000000..7a53eddf Binary files /dev/null and b/nsx/vmc_app/.doctrees/com.vmware.doctree differ diff --git a/nsx/vmc_app/.doctrees/com.vmware.nsx_vmc_app.doctree b/nsx/vmc_app/.doctrees/com.vmware.nsx_vmc_app.doctree new file mode 100644 index 00000000..e195982b Binary files /dev/null and b/nsx/vmc_app/.doctrees/com.vmware.nsx_vmc_app.doctree differ diff --git a/nsx/vmc_app/.doctrees/enumeration.doctree b/nsx/vmc_app/.doctrees/enumeration.doctree new file mode 100644 index 00000000..5de2dfb4 Binary files /dev/null and b/nsx/vmc_app/.doctrees/enumeration.doctree differ diff --git a/nsx/vmc_app/.doctrees/environment.pickle b/nsx/vmc_app/.doctrees/environment.pickle new file mode 100644 index 00000000..760e3328 Binary files /dev/null and b/nsx/vmc_app/.doctrees/environment.pickle differ diff --git a/nsx/vmc_app/.doctrees/index.doctree b/nsx/vmc_app/.doctrees/index.doctree new file mode 100644 index 00000000..6c552a8e Binary files /dev/null and b/nsx/vmc_app/.doctrees/index.doctree differ diff --git a/nsx/vmc_app/_sources/com.rst.txt b/nsx/vmc_app/_sources/com.rst.txt new file mode 100644 index 00000000..257ee95b --- /dev/null +++ b/nsx/vmc_app/_sources/com.rst.txt @@ -0,0 +1,15 @@ +com package +=========== + +.. automodule:: com + :members: + :undoc-members: + :show-inheritance: + +Subpackages +----------- + +.. toctree:: + + com.vmware + diff --git a/nsx/vmc_app/_sources/com.vmware.nsx_vmc_app.rst.txt b/nsx/vmc_app/_sources/com.vmware.nsx_vmc_app.rst.txt new file mode 100644 index 00000000..69d9fc11 --- /dev/null +++ b/nsx/vmc_app/_sources/com.vmware.nsx_vmc_app.rst.txt @@ -0,0 +1,28 @@ +com.vmware.nsx\_vmc\_app package +================================ + +.. automodule:: com.vmware.nsx_vmc_app + :members: + :undoc-members: + :show-inheritance: + +Submodules +---------- + +com.vmware.nsx\_vmc\_app.linked\_vpcs\_client module +---------------------------------------------------- + +.. automodule:: com.vmware.nsx_vmc_app.linked_vpcs_client + :members: + :undoc-members: + :show-inheritance: + +com.vmware.nsx\_vmc\_app.model\_client module +--------------------------------------------- + +.. automodule:: com.vmware.nsx_vmc_app.model_client + :members: + :undoc-members: + :show-inheritance: + + diff --git a/nsx/vmc_app/_sources/com.vmware.rst.txt b/nsx/vmc_app/_sources/com.vmware.rst.txt new file mode 100644 index 00000000..adf514c4 --- /dev/null +++ b/nsx/vmc_app/_sources/com.vmware.rst.txt @@ -0,0 +1,27 @@ +com.vmware package +================== + +.. automodule:: com.vmware + :members: + :undoc-members: + :show-inheritance: + +Subpackages +----------- + +.. toctree:: + + com.vmware.nsx_vmc_app + +Submodules +---------- + +com.vmware.nsx\_vmc\_app\_client module +--------------------------------------- + +.. automodule:: com.vmware.nsx_vmc_app_client + :members: + :undoc-members: + :show-inheritance: + + diff --git a/nsx/vmc_app/_sources/enumeration.rst.txt b/nsx/vmc_app/_sources/enumeration.rst.txt new file mode 100644 index 00000000..afe09e47 --- /dev/null +++ b/nsx/vmc_app/_sources/enumeration.rst.txt @@ -0,0 +1,82 @@ +.. _enumeration_description: + +Interface definition language to python mapping for enumerated types +-------------------------------------------------------------------- + +The interface language definition type system includes enumerated types. Python +SDK supports both 2.x and 3.x versions of Python. Since Python 2.x does +not have first class support for enumerations, special classes are +generated to represent enumerated types from the interface definition +language. The special class contains class attributes which represent +the values of the enumerated type. + +This documentation explains the following: + +* How the class variables are defined in the module. This specifies the names that you can use in your program. +* How you instantiate a class to use it for communication with future versions of the service. + +Example of an enumerated type documentation +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +*class* com.vmware.vapi.metadata_client. **SourceType** (string) + Bases: vmware.vapi.bindings.enum.Enum + + Metadata source type + + .. note:: + This class represents an enumerated type in the interface language definition type system. The class contains class attributes which represent the values in the current version of the enumerated type. Newer versions of the enumerated type may contain new values. To use new values of the enumerated type in communication with a server that supports a newer version of the API, you instantiate this class. See :ref:`enumerated type description page `. + + **Parameters** : **string** (``str``) – String value for the SourceType instance. + + **FILE** = *SourceType(string='FILE')* + If the source is backed by a file. + + **REMOTE** = *SourceType(string='REMOTE')* + If the source is backed by a remote service. + +Code Examples +^^^^^^^^^^^^^ + +The enumerated type classes are defined in python modules that your code +imports. You can use these in your code. + +1. If you want to pass an enumerated type value in a method to a server, specify the class variable of the enumerated type class. + +.. code-block:: python + + # SourceType is an enumerated type + from com.vmware.vapi.metadata_client import SourceType + + # SourceType has two class attrites, SourceType.FILE and SourceType.REMOTE + spec = Source.CreateSpec(type=SourceType.FILE, filepath='entity_metadata.json', description='Entity service') + source_svc.create(id='entity', spec=spec) + +2. When you receive an enumerated type value in the response from a server, allow for unknown enumerated type values. + +.. code-block:: python + + # SourceType is an enumerated type + from com.vmware.vapi.metadata_client import SourceType + + source_info = source_svc.get(id='entity') + if (source_info.type == SourceType.FILE) { + print 'Source is a file' + } else if (source_info.type == SourceType.REMOTE) { + print 'Source is a remote provider' + } else { + print 'Unknown source type: %s' % str(source_info.type) + } + +3. Sending a new enumerated type value to a server that has a newer version of the enumerated type. + +To use new values of the enumerated type in communication with a server that supports a newer version of the API, you instantiate the +enumerated type class. + +.. code-block:: python + + # If a newer version of SourceType has a new value FOLDER, FOLDER would be one + # of the class attributes for SourceType. In the older version, SourceType has + # only two class attributes, FILE and REMOTE + from com.vmware.vapi.metadata_client import SourceType + spec = Source.CreateSpec(type=SourceType('FOLDER'), filepath='entity_metadata', description='Entity service') + source_svc.create(id='entity', spec=spec) diff --git a/nsx/vmc_app/_sources/index.rst.txt b/nsx/vmc_app/_sources/index.rst.txt new file mode 100644 index 00000000..01ef9875 --- /dev/null +++ b/nsx/vmc_app/_sources/index.rst.txt @@ -0,0 +1,21 @@ +.. NSX-T Policy SDK documentation master file, created by + sphinx-quickstart on Mon Apr 30 16:01:33 2018. + You can adapt this file completely to your liking, but it should at least + contain the root `toctree` directive. + +Welcome to NSX-T Policy SDK's documentation! +============================================ + +.. toctree:: + :maxdepth: 10 + :caption: Contents: + + com + + +Indices and tables +================== + +* :ref:`genindex` +* :ref:`modindex` +* :ref:`search` diff --git a/nsx/vmc_app/_static/ajax-loader.gif b/nsx/vmc_app/_static/ajax-loader.gif new file mode 100644 index 00000000..61faf8ca Binary files /dev/null and b/nsx/vmc_app/_static/ajax-loader.gif differ diff --git a/nsx/vmc_app/_static/basic.css b/nsx/vmc_app/_static/basic.css new file mode 100644 index 00000000..19ced105 --- /dev/null +++ b/nsx/vmc_app/_static/basic.css @@ -0,0 +1,665 @@ +/* + * basic.css + * ~~~~~~~~~ + * + * Sphinx stylesheet -- basic theme. + * + * :copyright: Copyright 2007-2018 by the Sphinx team, see AUTHORS. + * :license: BSD, see LICENSE for details. + * + */ + +/* -- main layout ----------------------------------------------------------- */ + +div.clearer { + clear: both; +} + +/* -- relbar ---------------------------------------------------------------- */ + +div.related { + width: 100%; + font-size: 90%; +} + +div.related h3 { + display: none; +} + +div.related ul { + margin: 0; + padding: 0 0 0 10px; + list-style: none; +} + +div.related li { + display: inline; +} + +div.related li.right { + float: right; + margin-right: 5px; +} + +/* -- sidebar --------------------------------------------------------------- */ + +div.sphinxsidebarwrapper { + padding: 10px 5px 0 10px; +} + +div.sphinxsidebar { + float: left; + width: 230px; + margin-left: -100%; + font-size: 90%; + word-wrap: break-word; + overflow-wrap : break-word; +} + +div.sphinxsidebar ul { + list-style: none; +} + +div.sphinxsidebar ul ul, +div.sphinxsidebar ul.want-points { + margin-left: 20px; + list-style: square; +} + +div.sphinxsidebar ul ul { + margin-top: 0; + margin-bottom: 0; +} + +div.sphinxsidebar form { + margin-top: 10px; +} + +div.sphinxsidebar input { + border: 1px solid #98dbcc; + font-family: sans-serif; + font-size: 1em; +} + +div.sphinxsidebar #searchbox input[type="text"] { + float: left; + width: 80%; + padding: 0.25em; + box-sizing: border-box; +} + +div.sphinxsidebar #searchbox input[type="submit"] { + float: left; + width: 20%; + border-left: none; + padding: 0.25em; + box-sizing: border-box; +} + + +img { + border: 0; + max-width: 100%; +} + +/* -- search page ----------------------------------------------------------- */ + +ul.search { + margin: 10px 0 0 20px; + padding: 0; +} + +ul.search li { + padding: 5px 0 5px 20px; + background-image: url(file.png); + background-repeat: no-repeat; + background-position: 0 7px; +} + +ul.search li a { + font-weight: bold; +} + +ul.search li div.context { + color: #888; + margin: 2px 0 0 30px; + text-align: left; +} + +ul.keywordmatches li.goodmatch a { + font-weight: bold; +} + +/* -- index page ------------------------------------------------------------ */ + +table.contentstable { + width: 90%; + margin-left: auto; + margin-right: auto; +} + +table.contentstable p.biglink { + line-height: 150%; +} + +a.biglink { + font-size: 1.3em; +} + +span.linkdescr { + font-style: italic; + padding-top: 5px; + font-size: 90%; +} + +/* -- general index --------------------------------------------------------- */ + +table.indextable { + width: 100%; +} + +table.indextable td { + text-align: left; + vertical-align: top; +} + +table.indextable ul { + margin-top: 0; + margin-bottom: 0; + list-style-type: none; +} + +table.indextable > tbody > tr > td > ul { + padding-left: 0em; +} + +table.indextable tr.pcap { + height: 10px; +} + +table.indextable tr.cap { + margin-top: 10px; + background-color: #f2f2f2; +} + +img.toggler { + margin-right: 3px; + margin-top: 3px; + cursor: pointer; +} + +div.modindex-jumpbox { + border-top: 1px solid #ddd; + border-bottom: 1px solid #ddd; + margin: 1em 0 1em 0; + padding: 0.4em; +} + +div.genindex-jumpbox { + border-top: 1px solid #ddd; + border-bottom: 1px solid #ddd; + margin: 1em 0 1em 0; + padding: 0.4em; +} + +/* -- domain module index --------------------------------------------------- */ + +table.modindextable td { + padding: 2px; + border-collapse: collapse; +} + +/* -- general body styles --------------------------------------------------- */ + +div.body { + min-width: 450px; + max-width: 800px; +} + +div.body p, div.body dd, div.body li, div.body blockquote { + -moz-hyphens: auto; + -ms-hyphens: auto; + -webkit-hyphens: auto; + hyphens: auto; +} + +a.headerlink { + visibility: hidden; +} + +h1:hover > a.headerlink, +h2:hover > a.headerlink, +h3:hover > a.headerlink, +h4:hover > a.headerlink, +h5:hover > a.headerlink, +h6:hover > a.headerlink, +dt:hover > a.headerlink, +caption:hover > a.headerlink, +p.caption:hover > a.headerlink, +div.code-block-caption:hover > a.headerlink { + visibility: visible; +} + +div.body p.caption { + text-align: inherit; +} + +div.body td { + text-align: left; +} + +.first { + margin-top: 0 !important; +} + +p.rubric { + margin-top: 30px; + font-weight: bold; +} + +img.align-left, .figure.align-left, object.align-left { + clear: left; + float: left; + margin-right: 1em; +} + +img.align-right, .figure.align-right, object.align-right { + clear: right; + float: right; + margin-left: 1em; +} + +img.align-center, .figure.align-center, object.align-center { + display: block; + margin-left: auto; + margin-right: auto; +} + +.align-left { + text-align: left; +} + +.align-center { + text-align: center; +} + +.align-right { + text-align: right; +} + +/* -- sidebars -------------------------------------------------------------- */ + +div.sidebar { + margin: 0 0 0.5em 1em; + border: 1px solid #ddb; + padding: 7px 7px 0 7px; + background-color: #ffe; + width: 40%; + float: right; +} + +p.sidebar-title { + font-weight: bold; +} + +/* -- topics ---------------------------------------------------------------- */ + +div.topic { + border: 1px solid #ccc; + padding: 7px 7px 0 7px; + margin: 10px 0 10px 0; +} + +p.topic-title { + font-size: 1.1em; + font-weight: bold; + margin-top: 10px; +} + +/* -- admonitions ----------------------------------------------------------- */ + +div.admonition { + margin-top: 10px; + margin-bottom: 10px; + padding: 7px; +} + +div.admonition dt { + font-weight: bold; +} + +div.admonition dl { + margin-bottom: 0; +} + +p.admonition-title { + margin: 0px 10px 5px 0px; + font-weight: bold; +} + +div.body p.centered { + text-align: center; + margin-top: 25px; +} + +/* -- tables ---------------------------------------------------------------- */ + +table.docutils { + border: 0; + border-collapse: collapse; +} + +table.align-center { + margin-left: auto; + margin-right: auto; +} + +table caption span.caption-number { + font-style: italic; +} + +table caption span.caption-text { +} + +table.docutils td, table.docutils th { + padding: 1px 8px 1px 5px; + border-top: 0; + border-left: 0; + border-right: 0; + border-bottom: 1px solid #aaa; +} + +table.footnote td, table.footnote th { + border: 0 !important; +} + +th { + text-align: left; + padding-right: 5px; +} + +table.citation { + border-left: solid 1px gray; + margin-left: 1px; +} + +table.citation td { + border-bottom: none; +} + +/* -- figures --------------------------------------------------------------- */ + +div.figure { + margin: 0.5em; + padding: 0.5em; +} + +div.figure p.caption { + padding: 0.3em; +} + +div.figure p.caption span.caption-number { + font-style: italic; +} + +div.figure p.caption span.caption-text { +} + +/* -- field list styles ----------------------------------------------------- */ + +table.field-list td, table.field-list th { + border: 0 !important; +} + +.field-list ul { + margin: 0; + padding-left: 1em; +} + +.field-list p { + margin: 0; +} + +.field-name { + -moz-hyphens: manual; + -ms-hyphens: manual; + -webkit-hyphens: manual; + hyphens: manual; +} + +/* -- other body styles ----------------------------------------------------- */ + +ol.arabic { + list-style: decimal; +} + +ol.loweralpha { + list-style: lower-alpha; +} + +ol.upperalpha { + list-style: upper-alpha; +} + +ol.lowerroman { + list-style: lower-roman; +} + +ol.upperroman { + list-style: upper-roman; +} + +dl { + margin-bottom: 15px; +} + +dd p { + margin-top: 0px; +} + +dd ul, dd table { + margin-bottom: 10px; +} + +dd { + margin-top: 3px; + margin-bottom: 10px; + margin-left: 30px; +} + +dt:target, span.highlighted { + background-color: #fbe54e; +} + +rect.highlighted { + fill: #fbe54e; +} + +dl.glossary dt { + font-weight: bold; + font-size: 1.1em; +} + +.optional { + font-size: 1.3em; +} + +.sig-paren { + font-size: larger; +} + +.versionmodified { + font-style: italic; +} + +.system-message { + background-color: #fda; + padding: 5px; + border: 3px solid red; +} + +.footnote:target { + background-color: #ffa; +} + +.line-block { + display: block; + margin-top: 1em; + margin-bottom: 1em; +} + +.line-block .line-block { + margin-top: 0; + margin-bottom: 0; + margin-left: 1.5em; +} + +.guilabel, .menuselection { + font-family: sans-serif; +} + +.accelerator { + text-decoration: underline; +} + +.classifier { + font-style: oblique; +} + +abbr, acronym { + border-bottom: dotted 1px; + cursor: help; +} + +/* -- code displays --------------------------------------------------------- */ + +pre { + overflow: auto; + overflow-y: hidden; /* fixes display issues on Chrome browsers */ +} + +span.pre { + -moz-hyphens: none; + -ms-hyphens: none; + -webkit-hyphens: none; + hyphens: none; +} + +td.linenos pre { + padding: 5px 0px; + border: 0; + background-color: transparent; + color: #aaa; +} + +table.highlighttable { + margin-left: 0.5em; +} + +table.highlighttable td { + padding: 0 0.5em 0 0.5em; +} + +div.code-block-caption { + padding: 2px 5px; + font-size: small; +} + +div.code-block-caption code { + background-color: transparent; +} + +div.code-block-caption + div > div.highlight > pre { + margin-top: 0; +} + +div.code-block-caption span.caption-number { + padding: 0.1em 0.3em; + font-style: italic; +} + +div.code-block-caption span.caption-text { +} + +div.literal-block-wrapper { + padding: 1em 1em 0; +} + +div.literal-block-wrapper div.highlight { + margin: 0; +} + +code.descname { + background-color: transparent; + font-weight: bold; + font-size: 1.2em; +} + +code.descclassname { + background-color: transparent; +} + +code.xref, a code { + background-color: transparent; + font-weight: bold; +} + +h1 code, h2 code, h3 code, h4 code, h5 code, h6 code { + background-color: transparent; +} + +.viewcode-link { + float: right; +} + +.viewcode-back { + float: right; + font-family: sans-serif; +} + +div.viewcode-block:target { + margin: -1px -10px; + padding: 0 10px; +} + +/* -- math display ---------------------------------------------------------- */ + +img.math { + vertical-align: middle; +} + +div.body div.math p { + text-align: center; +} + +span.eqno { + float: right; +} + +span.eqno a.headerlink { + position: relative; + left: 0px; + z-index: 1; +} + +div.math:hover a.headerlink { + visibility: visible; +} + +/* -- printout stylesheet --------------------------------------------------- */ + +@media print { + div.document, + div.documentwrapper, + div.bodywrapper { + margin: 0 !important; + width: 100%; + } + + div.sphinxsidebar, + div.related, + div.footer, + #top-link { + display: none; + } +} \ No newline at end of file diff --git a/nsx/vmc_app/_static/comment-bright.png b/nsx/vmc_app/_static/comment-bright.png new file mode 100644 index 00000000..15e27edb Binary files /dev/null and b/nsx/vmc_app/_static/comment-bright.png differ diff --git a/nsx/vmc_app/_static/comment-close.png b/nsx/vmc_app/_static/comment-close.png new file mode 100644 index 00000000..4d91bcf5 Binary files /dev/null and b/nsx/vmc_app/_static/comment-close.png differ diff --git a/nsx/vmc_app/_static/comment.png b/nsx/vmc_app/_static/comment.png new file mode 100644 index 00000000..dfbc0cbd Binary files /dev/null and b/nsx/vmc_app/_static/comment.png differ diff --git a/nsx/vmc_app/_static/css/badge_only.css b/nsx/vmc_app/_static/css/badge_only.css new file mode 100644 index 00000000..012e63fe --- /dev/null +++ b/nsx/vmc_app/_static/css/badge_only.css @@ -0,0 +1 @@ +.fa:before{-webkit-font-smoothing:antialiased}.clearfix{*zoom:1}.clearfix:before,.clearfix:after{display:table;content:""}.clearfix:after{clear:both}@font-face{font-family:FontAwesome;font-weight:normal;font-style:normal;src:url("../fonts/fontawesome-webfont.eot");src:url("../fonts/fontawesome-webfont.eot?#iefix") format("embedded-opentype"),url("../fonts/fontawesome-webfont.woff") format("woff"),url("../fonts/fontawesome-webfont.ttf") format("truetype"),url("../fonts/fontawesome-webfont.svg#FontAwesome") format("svg")}.fa:before{display:inline-block;font-family:FontAwesome;font-style:normal;font-weight:normal;line-height:1;text-decoration:inherit}a .fa{display:inline-block;text-decoration:inherit}li .fa{display:inline-block}li .fa-large:before,li .fa-large:before{width:1.875em}ul.fas{list-style-type:none;margin-left:2em;text-indent:-0.8em}ul.fas li .fa{width:.8em}ul.fas li .fa-large:before,ul.fas li .fa-large:before{vertical-align:baseline}.fa-book:before{content:""}.icon-book:before{content:""}.fa-caret-down:before{content:""}.icon-caret-down:before{content:""}.fa-caret-up:before{content:""}.icon-caret-up:before{content:""}.fa-caret-left:before{content:""}.icon-caret-left:before{content:""}.fa-caret-right:before{content:""}.icon-caret-right:before{content:""}.rst-versions{position:fixed;bottom:0;left:0;overflow-y:scroll;width:300px;color:#fcfcfc;background:#1f1d1d;font-family:"Lato","proxima-nova","Helvetica Neue",Arial,sans-serif;z-index:400}.rst-versions a{color:#2980B9;text-decoration:none}.rst-versions .rst-badge-small{display:none}.rst-versions .rst-current-version{padding:12px;background-color:#272525;display:block;text-align:right;font-size:90%;cursor:pointer;color:#27AE60;*zoom:1}.rst-versions .rst-current-version:before,.rst-versions .rst-current-version:after{display:table;content:""}.rst-versions .rst-current-version:after{clear:both}.rst-versions .rst-current-version .fa{color:#fcfcfc}.rst-versions .rst-current-version .fa-book{float:left}.rst-versions .rst-current-version .icon-book{float:left}.rst-versions .rst-current-version.rst-out-of-date{background-color:#E74C3C;color:#fff}.rst-versions .rst-current-version.rst-active-old-version{background-color:#F1C40F;color:#000}.rst-versions.shift-up{max-height:100%}.rst-versions.shift-up .rst-other-versions{display:block}.rst-versions .rst-other-versions{font-size:90%;padding:12px;color:gray;display:none}.rst-versions .rst-other-versions hr{display:block;height:1px;border:0;margin:20px 0;padding:0;border-top:solid 1px #413d3d}.rst-versions .rst-other-versions dd{display:inline-block;margin:0}.rst-versions .rst-other-versions dd a{display:inline-block;padding:6px;color:#fcfcfc}.rst-versions.rst-badge{width:auto;bottom:20px;right:20px;left:auto;border:none;max-width:300px}.rst-versions.rst-badge .icon-book{float:none}.rst-versions.rst-badge .fa-book{float:none}.rst-versions.rst-badge.shift-up .rst-current-version{text-align:right}.rst-versions.rst-badge.shift-up .rst-current-version .fa-book{float:left}.rst-versions.rst-badge.shift-up .rst-current-version .icon-book{float:left}.rst-versions.rst-badge .rst-current-version{width:auto;height:30px;line-height:30px;padding:0 6px;display:block;text-align:center}@media screen and (max-width: 768px){.rst-versions{width:85%;display:none}.rst-versions.shift{display:block}} diff --git a/nsx/vmc_app/_static/css/theme.css b/nsx/vmc_app/_static/css/theme.css new file mode 100644 index 00000000..d85a101f --- /dev/null +++ b/nsx/vmc_app/_static/css/theme.css @@ -0,0 +1,4 @@ +*{-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}article,aside,details,figcaption,figure,footer,header,hgroup,nav,section{display:block}audio,canvas,video{display:inline-block;*display:inline;*zoom:1}audio:not([controls]){display:none}[hidden]{display:none}*{-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}html{font-size:100%;-webkit-text-size-adjust:100%;-ms-text-size-adjust:100%}body{margin:0}a:hover,a:active{outline:0}abbr[title]{border-bottom:1px dotted}b,strong{font-weight:bold}blockquote{margin:0}dfn{font-style:italic}ins{background:#ff9;color:#000;text-decoration:none}mark{background:#ff0;color:#000;font-style:italic;font-weight:bold}pre,code,.rst-content tt,.rst-content code,kbd,samp{font-family:monospace,serif;_font-family:"courier new",monospace;font-size:1em}pre{white-space:pre}q{quotes:none}q:before,q:after{content:"";content:none}small{font-size:85%}sub,sup{font-size:75%;line-height:0;position:relative;vertical-align:baseline}sup{top:-0.5em}sub{bottom:-0.25em}ul,ol,dl{margin:0;padding:0;list-style:none;list-style-image:none}li{list-style:none}dd{margin:0}img{border:0;-ms-interpolation-mode:bicubic;vertical-align:middle;max-width:100%}svg:not(:root){overflow:hidden}figure{margin:0}form{margin:0}fieldset{border:0;margin:0;padding:0}label{cursor:pointer}legend{border:0;*margin-left:-7px;padding:0;white-space:normal}button,input,select,textarea{font-size:100%;margin:0;vertical-align:baseline;*vertical-align:middle}button,input{line-height:normal}button,input[type="button"],input[type="reset"],input[type="submit"]{cursor:pointer;-webkit-appearance:button;*overflow:visible}button[disabled],input[disabled]{cursor:default}input[type="checkbox"],input[type="radio"]{box-sizing:border-box;padding:0;*width:13px;*height:13px}input[type="search"]{-webkit-appearance:textfield;-moz-box-sizing:content-box;-webkit-box-sizing:content-box;box-sizing:content-box}input[type="search"]::-webkit-search-decoration,input[type="search"]::-webkit-search-cancel-button{-webkit-appearance:none}button::-moz-focus-inner,input::-moz-focus-inner{border:0;padding:0}textarea{overflow:auto;vertical-align:top;resize:vertical}table{border-collapse:collapse;border-spacing:0}td{vertical-align:top}.chromeframe{margin:.2em 0;background:#ccc;color:#000;padding:.2em 0}.ir{display:block;border:0;text-indent:-999em;overflow:hidden;background-color:transparent;background-repeat:no-repeat;text-align:left;direction:ltr;*line-height:0}.ir br{display:none}.hidden{display:none !important;visibility:hidden}.visuallyhidden{border:0;clip:rect(0 0 0 0);height:1px;margin:-1px;overflow:hidden;padding:0;position:absolute;width:1px}.visuallyhidden.focusable:active,.visuallyhidden.focusable:focus{clip:auto;height:auto;margin:0;overflow:visible;position:static;width:auto}.invisible{visibility:hidden}.relative{position:relative}big,small{font-size:100%}@media print{html,body,section{background:none !important}*{box-shadow:none !important;text-shadow:none !important;filter:none !important;-ms-filter:none !important}a,a:visited{text-decoration:underline}.ir a:after,a[href^="javascript:"]:after,a[href^="#"]:after{content:""}pre,blockquote{page-break-inside:avoid}thead{display:table-header-group}tr,img{page-break-inside:avoid}img{max-width:100% !important}@page{margin:.5cm}p,h2,.rst-content .toctree-wrapper p.caption,h3{orphans:3;widows:3}h2,.rst-content .toctree-wrapper p.caption,h3{page-break-after:avoid}}.fa:before,.wy-menu-vertical li span.toctree-expand:before,.wy-menu-vertical li.on a span.toctree-expand:before,.wy-menu-vertical li.current>a span.toctree-expand:before,.rst-content .admonition-title:before,.rst-content h1 .headerlink:before,.rst-content h2 .headerlink:before,.rst-content h3 .headerlink:before,.rst-content h4 .headerlink:before,.rst-content h5 .headerlink:before,.rst-content h6 .headerlink:before,.rst-content dl dt .headerlink:before,.rst-content p.caption .headerlink:before,.rst-content table>caption .headerlink:before,.rst-content tt.download span:first-child:before,.rst-content code.download span:first-child:before,.icon:before,.wy-dropdown .caret:before,.wy-inline-validate.wy-inline-validate-success .wy-input-context:before,.wy-inline-validate.wy-inline-validate-danger .wy-input-context:before,.wy-inline-validate.wy-inline-validate-warning .wy-input-context:before,.wy-inline-validate.wy-inline-validate-info .wy-input-context:before,.wy-alert,.rst-content .note,.rst-content .attention,.rst-content .caution,.rst-content .danger,.rst-content .error,.rst-content .hint,.rst-content .important,.rst-content .tip,.rst-content .warning,.rst-content .seealso,.rst-content .admonition-todo,.rst-content .admonition,.btn,input[type="text"],input[type="password"],input[type="email"],input[type="url"],input[type="date"],input[type="month"],input[type="time"],input[type="datetime"],input[type="datetime-local"],input[type="week"],input[type="number"],input[type="search"],input[type="tel"],input[type="color"],select,textarea,.wy-menu-vertical li.on a,.wy-menu-vertical li.current>a,.wy-side-nav-search>a,.wy-side-nav-search .wy-dropdown>a,.wy-nav-top a{-webkit-font-smoothing:antialiased}.clearfix{*zoom:1}.clearfix:before,.clearfix:after{display:table;content:""}.clearfix:after{clear:both}/*! + * Font Awesome 4.7.0 by @davegandy - http://fontawesome.io - @fontawesome + * License - http://fontawesome.io/license (Font: SIL OFL 1.1, CSS: MIT License) + */@font-face{font-family:'FontAwesome';src:url("../fonts/fontawesome-webfont.eot?v=4.7.0");src:url("../fonts/fontawesome-webfont.eot?#iefix&v=4.7.0") format("embedded-opentype"),url("../fonts/fontawesome-webfont.woff2?v=4.7.0") format("woff2"),url("../fonts/fontawesome-webfont.woff?v=4.7.0") format("woff"),url("../fonts/fontawesome-webfont.ttf?v=4.7.0") format("truetype"),url("../fonts/fontawesome-webfont.svg?v=4.7.0#fontawesomeregular") format("svg");font-weight:normal;font-style:normal}.fa,.wy-menu-vertical li span.toctree-expand,.wy-menu-vertical li.on a span.toctree-expand,.wy-menu-vertical li.current>a span.toctree-expand,.rst-content .admonition-title,.rst-content h1 .headerlink,.rst-content h2 .headerlink,.rst-content h3 .headerlink,.rst-content h4 .headerlink,.rst-content h5 .headerlink,.rst-content h6 .headerlink,.rst-content dl dt .headerlink,.rst-content p.caption .headerlink,.rst-content table>caption .headerlink,.rst-content tt.download span:first-child,.rst-content code.download span:first-child,.icon{display:inline-block;font:normal normal normal 14px/1 FontAwesome;font-size:inherit;text-rendering:auto;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}.fa-lg{font-size:1.3333333333em;line-height:.75em;vertical-align:-15%}.fa-2x{font-size:2em}.fa-3x{font-size:3em}.fa-4x{font-size:4em}.fa-5x{font-size:5em}.fa-fw{width:1.2857142857em;text-align:center}.fa-ul{padding-left:0;margin-left:2.1428571429em;list-style-type:none}.fa-ul>li{position:relative}.fa-li{position:absolute;left:-2.1428571429em;width:2.1428571429em;top:.1428571429em;text-align:center}.fa-li.fa-lg{left:-1.8571428571em}.fa-border{padding:.2em .25em .15em;border:solid 0.08em #eee;border-radius:.1em}.fa-pull-left{float:left}.fa-pull-right{float:right}.fa.fa-pull-left,.wy-menu-vertical li span.fa-pull-left.toctree-expand,.wy-menu-vertical li.on a span.fa-pull-left.toctree-expand,.wy-menu-vertical li.current>a span.fa-pull-left.toctree-expand,.rst-content .fa-pull-left.admonition-title,.rst-content h1 .fa-pull-left.headerlink,.rst-content h2 .fa-pull-left.headerlink,.rst-content h3 .fa-pull-left.headerlink,.rst-content h4 .fa-pull-left.headerlink,.rst-content h5 .fa-pull-left.headerlink,.rst-content h6 .fa-pull-left.headerlink,.rst-content dl dt .fa-pull-left.headerlink,.rst-content p.caption .fa-pull-left.headerlink,.rst-content table>caption .fa-pull-left.headerlink,.rst-content tt.download span.fa-pull-left:first-child,.rst-content code.download span.fa-pull-left:first-child,.fa-pull-left.icon{margin-right:.3em}.fa.fa-pull-right,.wy-menu-vertical li span.fa-pull-right.toctree-expand,.wy-menu-vertical li.on a span.fa-pull-right.toctree-expand,.wy-menu-vertical li.current>a span.fa-pull-right.toctree-expand,.rst-content .fa-pull-right.admonition-title,.rst-content h1 .fa-pull-right.headerlink,.rst-content h2 .fa-pull-right.headerlink,.rst-content h3 .fa-pull-right.headerlink,.rst-content h4 .fa-pull-right.headerlink,.rst-content h5 .fa-pull-right.headerlink,.rst-content h6 .fa-pull-right.headerlink,.rst-content dl dt .fa-pull-right.headerlink,.rst-content p.caption .fa-pull-right.headerlink,.rst-content table>caption .fa-pull-right.headerlink,.rst-content tt.download span.fa-pull-right:first-child,.rst-content code.download span.fa-pull-right:first-child,.fa-pull-right.icon{margin-left:.3em}.pull-right{float:right}.pull-left{float:left}.fa.pull-left,.wy-menu-vertical li span.pull-left.toctree-expand,.wy-menu-vertical li.on a span.pull-left.toctree-expand,.wy-menu-vertical li.current>a span.pull-left.toctree-expand,.rst-content .pull-left.admonition-title,.rst-content h1 .pull-left.headerlink,.rst-content h2 .pull-left.headerlink,.rst-content h3 .pull-left.headerlink,.rst-content h4 .pull-left.headerlink,.rst-content h5 .pull-left.headerlink,.rst-content h6 .pull-left.headerlink,.rst-content dl dt .pull-left.headerlink,.rst-content p.caption .pull-left.headerlink,.rst-content table>caption .pull-left.headerlink,.rst-content tt.download span.pull-left:first-child,.rst-content code.download span.pull-left:first-child,.pull-left.icon{margin-right:.3em}.fa.pull-right,.wy-menu-vertical li span.pull-right.toctree-expand,.wy-menu-vertical li.on a span.pull-right.toctree-expand,.wy-menu-vertical li.current>a span.pull-right.toctree-expand,.rst-content .pull-right.admonition-title,.rst-content h1 .pull-right.headerlink,.rst-content h2 .pull-right.headerlink,.rst-content h3 .pull-right.headerlink,.rst-content h4 .pull-right.headerlink,.rst-content h5 .pull-right.headerlink,.rst-content h6 .pull-right.headerlink,.rst-content dl dt .pull-right.headerlink,.rst-content p.caption .pull-right.headerlink,.rst-content table>caption .pull-right.headerlink,.rst-content tt.download span.pull-right:first-child,.rst-content code.download span.pull-right:first-child,.pull-right.icon{margin-left:.3em}.fa-spin{-webkit-animation:fa-spin 2s infinite linear;animation:fa-spin 2s infinite linear}.fa-pulse{-webkit-animation:fa-spin 1s infinite steps(8);animation:fa-spin 1s infinite steps(8)}@-webkit-keyframes fa-spin{0%{-webkit-transform:rotate(0deg);transform:rotate(0deg)}100%{-webkit-transform:rotate(359deg);transform:rotate(359deg)}}@keyframes fa-spin{0%{-webkit-transform:rotate(0deg);transform:rotate(0deg)}100%{-webkit-transform:rotate(359deg);transform:rotate(359deg)}}.fa-rotate-90{-ms-filter:"progid:DXImageTransform.Microsoft.BasicImage(rotation=1)";-webkit-transform:rotate(90deg);-ms-transform:rotate(90deg);transform:rotate(90deg)}.fa-rotate-180{-ms-filter:"progid:DXImageTransform.Microsoft.BasicImage(rotation=2)";-webkit-transform:rotate(180deg);-ms-transform:rotate(180deg);transform:rotate(180deg)}.fa-rotate-270{-ms-filter:"progid:DXImageTransform.Microsoft.BasicImage(rotation=3)";-webkit-transform:rotate(270deg);-ms-transform:rotate(270deg);transform:rotate(270deg)}.fa-flip-horizontal{-ms-filter:"progid:DXImageTransform.Microsoft.BasicImage(rotation=0, mirror=1)";-webkit-transform:scale(-1, 1);-ms-transform:scale(-1, 1);transform:scale(-1, 1)}.fa-flip-vertical{-ms-filter:"progid:DXImageTransform.Microsoft.BasicImage(rotation=2, mirror=1)";-webkit-transform:scale(1, -1);-ms-transform:scale(1, -1);transform:scale(1, -1)}:root .fa-rotate-90,:root .fa-rotate-180,:root .fa-rotate-270,:root .fa-flip-horizontal,:root .fa-flip-vertical{filter:none}.fa-stack{position:relative;display:inline-block;width:2em;height:2em;line-height:2em;vertical-align:middle}.fa-stack-1x,.fa-stack-2x{position:absolute;left:0;width:100%;text-align:center}.fa-stack-1x{line-height:inherit}.fa-stack-2x{font-size:2em}.fa-inverse{color:#fff}.fa-glass:before{content:""}.fa-music:before{content:""}.fa-search:before,.icon-search:before{content:""}.fa-envelope-o:before{content:""}.fa-heart:before{content:""}.fa-star:before{content:""}.fa-star-o:before{content:""}.fa-user:before{content:""}.fa-film:before{content:""}.fa-th-large:before{content:""}.fa-th:before{content:""}.fa-th-list:before{content:""}.fa-check:before{content:""}.fa-remove:before,.fa-close:before,.fa-times:before{content:""}.fa-search-plus:before{content:""}.fa-search-minus:before{content:""}.fa-power-off:before{content:""}.fa-signal:before{content:""}.fa-gear:before,.fa-cog:before{content:""}.fa-trash-o:before{content:""}.fa-home:before,.icon-home:before{content:""}.fa-file-o:before{content:""}.fa-clock-o:before{content:""}.fa-road:before{content:""}.fa-download:before,.rst-content tt.download span:first-child:before,.rst-content code.download span:first-child:before{content:""}.fa-arrow-circle-o-down:before{content:""}.fa-arrow-circle-o-up:before{content:""}.fa-inbox:before{content:""}.fa-play-circle-o:before{content:""}.fa-rotate-right:before,.fa-repeat:before{content:""}.fa-refresh:before{content:""}.fa-list-alt:before{content:""}.fa-lock:before{content:""}.fa-flag:before{content:""}.fa-headphones:before{content:""}.fa-volume-off:before{content:""}.fa-volume-down:before{content:""}.fa-volume-up:before{content:""}.fa-qrcode:before{content:""}.fa-barcode:before{content:""}.fa-tag:before{content:""}.fa-tags:before{content:""}.fa-book:before,.icon-book:before{content:""}.fa-bookmark:before{content:""}.fa-print:before{content:""}.fa-camera:before{content:""}.fa-font:before{content:""}.fa-bold:before{content:""}.fa-italic:before{content:""}.fa-text-height:before{content:""}.fa-text-width:before{content:""}.fa-align-left:before{content:""}.fa-align-center:before{content:""}.fa-align-right:before{content:""}.fa-align-justify:before{content:""}.fa-list:before{content:""}.fa-dedent:before,.fa-outdent:before{content:""}.fa-indent:before{content:""}.fa-video-camera:before{content:""}.fa-photo:before,.fa-image:before,.fa-picture-o:before{content:""}.fa-pencil:before{content:""}.fa-map-marker:before{content:""}.fa-adjust:before{content:""}.fa-tint:before{content:""}.fa-edit:before,.fa-pencil-square-o:before{content:""}.fa-share-square-o:before{content:""}.fa-check-square-o:before{content:""}.fa-arrows:before{content:""}.fa-step-backward:before{content:""}.fa-fast-backward:before{content:""}.fa-backward:before{content:""}.fa-play:before{content:""}.fa-pause:before{content:""}.fa-stop:before{content:""}.fa-forward:before{content:""}.fa-fast-forward:before{content:""}.fa-step-forward:before{content:""}.fa-eject:before{content:""}.fa-chevron-left:before{content:""}.fa-chevron-right:before{content:""}.fa-plus-circle:before{content:""}.fa-minus-circle:before{content:""}.fa-times-circle:before,.wy-inline-validate.wy-inline-validate-danger .wy-input-context:before{content:""}.fa-check-circle:before,.wy-inline-validate.wy-inline-validate-success .wy-input-context:before{content:""}.fa-question-circle:before{content:""}.fa-info-circle:before{content:""}.fa-crosshairs:before{content:""}.fa-times-circle-o:before{content:""}.fa-check-circle-o:before{content:""}.fa-ban:before{content:""}.fa-arrow-left:before{content:""}.fa-arrow-right:before{content:""}.fa-arrow-up:before{content:""}.fa-arrow-down:before{content:""}.fa-mail-forward:before,.fa-share:before{content:""}.fa-expand:before{content:""}.fa-compress:before{content:""}.fa-plus:before{content:""}.fa-minus:before{content:""}.fa-asterisk:before{content:""}.fa-exclamation-circle:before,.wy-inline-validate.wy-inline-validate-warning .wy-input-context:before,.wy-inline-validate.wy-inline-validate-info .wy-input-context:before,.rst-content .admonition-title:before{content:""}.fa-gift:before{content:""}.fa-leaf:before{content:""}.fa-fire:before,.icon-fire:before{content:""}.fa-eye:before{content:""}.fa-eye-slash:before{content:""}.fa-warning:before,.fa-exclamation-triangle:before{content:""}.fa-plane:before{content:""}.fa-calendar:before{content:""}.fa-random:before{content:""}.fa-comment:before{content:""}.fa-magnet:before{content:""}.fa-chevron-up:before{content:""}.fa-chevron-down:before{content:""}.fa-retweet:before{content:""}.fa-shopping-cart:before{content:""}.fa-folder:before{content:""}.fa-folder-open:before{content:""}.fa-arrows-v:before{content:""}.fa-arrows-h:before{content:""}.fa-bar-chart-o:before,.fa-bar-chart:before{content:""}.fa-twitter-square:before{content:""}.fa-facebook-square:before{content:""}.fa-camera-retro:before{content:""}.fa-key:before{content:""}.fa-gears:before,.fa-cogs:before{content:""}.fa-comments:before{content:""}.fa-thumbs-o-up:before{content:""}.fa-thumbs-o-down:before{content:""}.fa-star-half:before{content:""}.fa-heart-o:before{content:""}.fa-sign-out:before{content:""}.fa-linkedin-square:before{content:""}.fa-thumb-tack:before{content:""}.fa-external-link:before{content:""}.fa-sign-in:before{content:""}.fa-trophy:before{content:""}.fa-github-square:before{content:""}.fa-upload:before{content:""}.fa-lemon-o:before{content:""}.fa-phone:before{content:""}.fa-square-o:before{content:""}.fa-bookmark-o:before{content:""}.fa-phone-square:before{content:""}.fa-twitter:before{content:""}.fa-facebook-f:before,.fa-facebook:before{content:""}.fa-github:before,.icon-github:before{content:""}.fa-unlock:before{content:""}.fa-credit-card:before{content:""}.fa-feed:before,.fa-rss:before{content:""}.fa-hdd-o:before{content:""}.fa-bullhorn:before{content:""}.fa-bell:before{content:""}.fa-certificate:before{content:""}.fa-hand-o-right:before{content:""}.fa-hand-o-left:before{content:""}.fa-hand-o-up:before{content:""}.fa-hand-o-down:before{content:""}.fa-arrow-circle-left:before,.icon-circle-arrow-left:before{content:""}.fa-arrow-circle-right:before,.icon-circle-arrow-right:before{content:""}.fa-arrow-circle-up:before{content:""}.fa-arrow-circle-down:before{content:""}.fa-globe:before{content:""}.fa-wrench:before{content:""}.fa-tasks:before{content:""}.fa-filter:before{content:""}.fa-briefcase:before{content:""}.fa-arrows-alt:before{content:""}.fa-group:before,.fa-users:before{content:""}.fa-chain:before,.fa-link:before,.icon-link:before{content:""}.fa-cloud:before{content:""}.fa-flask:before{content:""}.fa-cut:before,.fa-scissors:before{content:""}.fa-copy:before,.fa-files-o:before{content:""}.fa-paperclip:before{content:""}.fa-save:before,.fa-floppy-o:before{content:""}.fa-square:before{content:""}.fa-navicon:before,.fa-reorder:before,.fa-bars:before{content:""}.fa-list-ul:before{content:""}.fa-list-ol:before{content:""}.fa-strikethrough:before{content:""}.fa-underline:before{content:""}.fa-table:before{content:""}.fa-magic:before{content:""}.fa-truck:before{content:""}.fa-pinterest:before{content:""}.fa-pinterest-square:before{content:""}.fa-google-plus-square:before{content:""}.fa-google-plus:before{content:""}.fa-money:before{content:""}.fa-caret-down:before,.wy-dropdown .caret:before,.icon-caret-down:before{content:""}.fa-caret-up:before{content:""}.fa-caret-left:before{content:""}.fa-caret-right:before{content:""}.fa-columns:before{content:""}.fa-unsorted:before,.fa-sort:before{content:""}.fa-sort-down:before,.fa-sort-desc:before{content:""}.fa-sort-up:before,.fa-sort-asc:before{content:""}.fa-envelope:before{content:""}.fa-linkedin:before{content:""}.fa-rotate-left:before,.fa-undo:before{content:""}.fa-legal:before,.fa-gavel:before{content:""}.fa-dashboard:before,.fa-tachometer:before{content:""}.fa-comment-o:before{content:""}.fa-comments-o:before{content:""}.fa-flash:before,.fa-bolt:before{content:""}.fa-sitemap:before{content:""}.fa-umbrella:before{content:""}.fa-paste:before,.fa-clipboard:before{content:""}.fa-lightbulb-o:before{content:""}.fa-exchange:before{content:""}.fa-cloud-download:before{content:""}.fa-cloud-upload:before{content:""}.fa-user-md:before{content:""}.fa-stethoscope:before{content:""}.fa-suitcase:before{content:""}.fa-bell-o:before{content:""}.fa-coffee:before{content:""}.fa-cutlery:before{content:""}.fa-file-text-o:before{content:""}.fa-building-o:before{content:""}.fa-hospital-o:before{content:""}.fa-ambulance:before{content:""}.fa-medkit:before{content:""}.fa-fighter-jet:before{content:""}.fa-beer:before{content:""}.fa-h-square:before{content:""}.fa-plus-square:before{content:""}.fa-angle-double-left:before{content:""}.fa-angle-double-right:before{content:""}.fa-angle-double-up:before{content:""}.fa-angle-double-down:before{content:""}.fa-angle-left:before{content:""}.fa-angle-right:before{content:""}.fa-angle-up:before{content:""}.fa-angle-down:before{content:""}.fa-desktop:before{content:""}.fa-laptop:before{content:""}.fa-tablet:before{content:""}.fa-mobile-phone:before,.fa-mobile:before{content:""}.fa-circle-o:before{content:""}.fa-quote-left:before{content:""}.fa-quote-right:before{content:""}.fa-spinner:before{content:""}.fa-circle:before{content:""}.fa-mail-reply:before,.fa-reply:before{content:""}.fa-github-alt:before{content:""}.fa-folder-o:before{content:""}.fa-folder-open-o:before{content:""}.fa-smile-o:before{content:""}.fa-frown-o:before{content:""}.fa-meh-o:before{content:""}.fa-gamepad:before{content:""}.fa-keyboard-o:before{content:""}.fa-flag-o:before{content:""}.fa-flag-checkered:before{content:""}.fa-terminal:before{content:""}.fa-code:before{content:""}.fa-mail-reply-all:before,.fa-reply-all:before{content:""}.fa-star-half-empty:before,.fa-star-half-full:before,.fa-star-half-o:before{content:""}.fa-location-arrow:before{content:""}.fa-crop:before{content:""}.fa-code-fork:before{content:""}.fa-unlink:before,.fa-chain-broken:before{content:""}.fa-question:before{content:""}.fa-info:before{content:""}.fa-exclamation:before{content:""}.fa-superscript:before{content:""}.fa-subscript:before{content:""}.fa-eraser:before{content:""}.fa-puzzle-piece:before{content:""}.fa-microphone:before{content:""}.fa-microphone-slash:before{content:""}.fa-shield:before{content:""}.fa-calendar-o:before{content:""}.fa-fire-extinguisher:before{content:""}.fa-rocket:before{content:""}.fa-maxcdn:before{content:""}.fa-chevron-circle-left:before{content:""}.fa-chevron-circle-right:before{content:""}.fa-chevron-circle-up:before{content:""}.fa-chevron-circle-down:before{content:""}.fa-html5:before{content:""}.fa-css3:before{content:""}.fa-anchor:before{content:""}.fa-unlock-alt:before{content:""}.fa-bullseye:before{content:""}.fa-ellipsis-h:before{content:""}.fa-ellipsis-v:before{content:""}.fa-rss-square:before{content:""}.fa-play-circle:before{content:""}.fa-ticket:before{content:""}.fa-minus-square:before{content:""}.fa-minus-square-o:before,.wy-menu-vertical li.on a span.toctree-expand:before,.wy-menu-vertical li.current>a span.toctree-expand:before{content:""}.fa-level-up:before{content:""}.fa-level-down:before{content:""}.fa-check-square:before{content:""}.fa-pencil-square:before{content:""}.fa-external-link-square:before{content:""}.fa-share-square:before{content:""}.fa-compass:before{content:""}.fa-toggle-down:before,.fa-caret-square-o-down:before{content:""}.fa-toggle-up:before,.fa-caret-square-o-up:before{content:""}.fa-toggle-right:before,.fa-caret-square-o-right:before{content:""}.fa-euro:before,.fa-eur:before{content:""}.fa-gbp:before{content:""}.fa-dollar:before,.fa-usd:before{content:""}.fa-rupee:before,.fa-inr:before{content:""}.fa-cny:before,.fa-rmb:before,.fa-yen:before,.fa-jpy:before{content:""}.fa-ruble:before,.fa-rouble:before,.fa-rub:before{content:""}.fa-won:before,.fa-krw:before{content:""}.fa-bitcoin:before,.fa-btc:before{content:""}.fa-file:before{content:""}.fa-file-text:before{content:""}.fa-sort-alpha-asc:before{content:""}.fa-sort-alpha-desc:before{content:""}.fa-sort-amount-asc:before{content:""}.fa-sort-amount-desc:before{content:""}.fa-sort-numeric-asc:before{content:""}.fa-sort-numeric-desc:before{content:""}.fa-thumbs-up:before{content:""}.fa-thumbs-down:before{content:""}.fa-youtube-square:before{content:""}.fa-youtube:before{content:""}.fa-xing:before{content:""}.fa-xing-square:before{content:""}.fa-youtube-play:before{content:""}.fa-dropbox:before{content:""}.fa-stack-overflow:before{content:""}.fa-instagram:before{content:""}.fa-flickr:before{content:""}.fa-adn:before{content:""}.fa-bitbucket:before,.icon-bitbucket:before{content:""}.fa-bitbucket-square:before{content:""}.fa-tumblr:before{content:""}.fa-tumblr-square:before{content:""}.fa-long-arrow-down:before{content:""}.fa-long-arrow-up:before{content:""}.fa-long-arrow-left:before{content:""}.fa-long-arrow-right:before{content:""}.fa-apple:before{content:""}.fa-windows:before{content:""}.fa-android:before{content:""}.fa-linux:before{content:""}.fa-dribbble:before{content:""}.fa-skype:before{content:""}.fa-foursquare:before{content:""}.fa-trello:before{content:""}.fa-female:before{content:""}.fa-male:before{content:""}.fa-gittip:before,.fa-gratipay:before{content:""}.fa-sun-o:before{content:""}.fa-moon-o:before{content:""}.fa-archive:before{content:""}.fa-bug:before{content:""}.fa-vk:before{content:""}.fa-weibo:before{content:""}.fa-renren:before{content:""}.fa-pagelines:before{content:""}.fa-stack-exchange:before{content:""}.fa-arrow-circle-o-right:before{content:""}.fa-arrow-circle-o-left:before{content:""}.fa-toggle-left:before,.fa-caret-square-o-left:before{content:""}.fa-dot-circle-o:before{content:""}.fa-wheelchair:before{content:""}.fa-vimeo-square:before{content:""}.fa-turkish-lira:before,.fa-try:before{content:""}.fa-plus-square-o:before,.wy-menu-vertical li span.toctree-expand:before{content:""}.fa-space-shuttle:before{content:""}.fa-slack:before{content:""}.fa-envelope-square:before{content:""}.fa-wordpress:before{content:""}.fa-openid:before{content:""}.fa-institution:before,.fa-bank:before,.fa-university:before{content:""}.fa-mortar-board:before,.fa-graduation-cap:before{content:""}.fa-yahoo:before{content:""}.fa-google:before{content:""}.fa-reddit:before{content:""}.fa-reddit-square:before{content:""}.fa-stumbleupon-circle:before{content:""}.fa-stumbleupon:before{content:""}.fa-delicious:before{content:""}.fa-digg:before{content:""}.fa-pied-piper-pp:before{content:""}.fa-pied-piper-alt:before{content:""}.fa-drupal:before{content:""}.fa-joomla:before{content:""}.fa-language:before{content:""}.fa-fax:before{content:""}.fa-building:before{content:""}.fa-child:before{content:""}.fa-paw:before{content:""}.fa-spoon:before{content:""}.fa-cube:before{content:""}.fa-cubes:before{content:""}.fa-behance:before{content:""}.fa-behance-square:before{content:""}.fa-steam:before{content:""}.fa-steam-square:before{content:""}.fa-recycle:before{content:""}.fa-automobile:before,.fa-car:before{content:""}.fa-cab:before,.fa-taxi:before{content:""}.fa-tree:before{content:""}.fa-spotify:before{content:""}.fa-deviantart:before{content:""}.fa-soundcloud:before{content:""}.fa-database:before{content:""}.fa-file-pdf-o:before{content:""}.fa-file-word-o:before{content:""}.fa-file-excel-o:before{content:""}.fa-file-powerpoint-o:before{content:""}.fa-file-photo-o:before,.fa-file-picture-o:before,.fa-file-image-o:before{content:""}.fa-file-zip-o:before,.fa-file-archive-o:before{content:""}.fa-file-sound-o:before,.fa-file-audio-o:before{content:""}.fa-file-movie-o:before,.fa-file-video-o:before{content:""}.fa-file-code-o:before{content:""}.fa-vine:before{content:""}.fa-codepen:before{content:""}.fa-jsfiddle:before{content:""}.fa-life-bouy:before,.fa-life-buoy:before,.fa-life-saver:before,.fa-support:before,.fa-life-ring:before{content:""}.fa-circle-o-notch:before{content:""}.fa-ra:before,.fa-resistance:before,.fa-rebel:before{content:""}.fa-ge:before,.fa-empire:before{content:""}.fa-git-square:before{content:""}.fa-git:before{content:""}.fa-y-combinator-square:before,.fa-yc-square:before,.fa-hacker-news:before{content:""}.fa-tencent-weibo:before{content:""}.fa-qq:before{content:""}.fa-wechat:before,.fa-weixin:before{content:""}.fa-send:before,.fa-paper-plane:before{content:""}.fa-send-o:before,.fa-paper-plane-o:before{content:""}.fa-history:before{content:""}.fa-circle-thin:before{content:""}.fa-header:before{content:""}.fa-paragraph:before{content:""}.fa-sliders:before{content:""}.fa-share-alt:before{content:""}.fa-share-alt-square:before{content:""}.fa-bomb:before{content:""}.fa-soccer-ball-o:before,.fa-futbol-o:before{content:""}.fa-tty:before{content:""}.fa-binoculars:before{content:""}.fa-plug:before{content:""}.fa-slideshare:before{content:""}.fa-twitch:before{content:""}.fa-yelp:before{content:""}.fa-newspaper-o:before{content:""}.fa-wifi:before{content:""}.fa-calculator:before{content:""}.fa-paypal:before{content:""}.fa-google-wallet:before{content:""}.fa-cc-visa:before{content:""}.fa-cc-mastercard:before{content:""}.fa-cc-discover:before{content:""}.fa-cc-amex:before{content:""}.fa-cc-paypal:before{content:""}.fa-cc-stripe:before{content:""}.fa-bell-slash:before{content:""}.fa-bell-slash-o:before{content:""}.fa-trash:before{content:""}.fa-copyright:before{content:""}.fa-at:before{content:""}.fa-eyedropper:before{content:""}.fa-paint-brush:before{content:""}.fa-birthday-cake:before{content:""}.fa-area-chart:before{content:""}.fa-pie-chart:before{content:""}.fa-line-chart:before{content:""}.fa-lastfm:before{content:""}.fa-lastfm-square:before{content:""}.fa-toggle-off:before{content:""}.fa-toggle-on:before{content:""}.fa-bicycle:before{content:""}.fa-bus:before{content:""}.fa-ioxhost:before{content:""}.fa-angellist:before{content:""}.fa-cc:before{content:""}.fa-shekel:before,.fa-sheqel:before,.fa-ils:before{content:""}.fa-meanpath:before{content:""}.fa-buysellads:before{content:""}.fa-connectdevelop:before{content:""}.fa-dashcube:before{content:""}.fa-forumbee:before{content:""}.fa-leanpub:before{content:""}.fa-sellsy:before{content:""}.fa-shirtsinbulk:before{content:""}.fa-simplybuilt:before{content:""}.fa-skyatlas:before{content:""}.fa-cart-plus:before{content:""}.fa-cart-arrow-down:before{content:""}.fa-diamond:before{content:""}.fa-ship:before{content:""}.fa-user-secret:before{content:""}.fa-motorcycle:before{content:""}.fa-street-view:before{content:""}.fa-heartbeat:before{content:""}.fa-venus:before{content:""}.fa-mars:before{content:""}.fa-mercury:before{content:""}.fa-intersex:before,.fa-transgender:before{content:""}.fa-transgender-alt:before{content:""}.fa-venus-double:before{content:""}.fa-mars-double:before{content:""}.fa-venus-mars:before{content:""}.fa-mars-stroke:before{content:""}.fa-mars-stroke-v:before{content:""}.fa-mars-stroke-h:before{content:""}.fa-neuter:before{content:""}.fa-genderless:before{content:""}.fa-facebook-official:before{content:""}.fa-pinterest-p:before{content:""}.fa-whatsapp:before{content:""}.fa-server:before{content:""}.fa-user-plus:before{content:""}.fa-user-times:before{content:""}.fa-hotel:before,.fa-bed:before{content:""}.fa-viacoin:before{content:""}.fa-train:before{content:""}.fa-subway:before{content:""}.fa-medium:before{content:""}.fa-yc:before,.fa-y-combinator:before{content:""}.fa-optin-monster:before{content:""}.fa-opencart:before{content:""}.fa-expeditedssl:before{content:""}.fa-battery-4:before,.fa-battery:before,.fa-battery-full:before{content:""}.fa-battery-3:before,.fa-battery-three-quarters:before{content:""}.fa-battery-2:before,.fa-battery-half:before{content:""}.fa-battery-1:before,.fa-battery-quarter:before{content:""}.fa-battery-0:before,.fa-battery-empty:before{content:""}.fa-mouse-pointer:before{content:""}.fa-i-cursor:before{content:""}.fa-object-group:before{content:""}.fa-object-ungroup:before{content:""}.fa-sticky-note:before{content:""}.fa-sticky-note-o:before{content:""}.fa-cc-jcb:before{content:""}.fa-cc-diners-club:before{content:""}.fa-clone:before{content:""}.fa-balance-scale:before{content:""}.fa-hourglass-o:before{content:""}.fa-hourglass-1:before,.fa-hourglass-start:before{content:""}.fa-hourglass-2:before,.fa-hourglass-half:before{content:""}.fa-hourglass-3:before,.fa-hourglass-end:before{content:""}.fa-hourglass:before{content:""}.fa-hand-grab-o:before,.fa-hand-rock-o:before{content:""}.fa-hand-stop-o:before,.fa-hand-paper-o:before{content:""}.fa-hand-scissors-o:before{content:""}.fa-hand-lizard-o:before{content:""}.fa-hand-spock-o:before{content:""}.fa-hand-pointer-o:before{content:""}.fa-hand-peace-o:before{content:""}.fa-trademark:before{content:""}.fa-registered:before{content:""}.fa-creative-commons:before{content:""}.fa-gg:before{content:""}.fa-gg-circle:before{content:""}.fa-tripadvisor:before{content:""}.fa-odnoklassniki:before{content:""}.fa-odnoklassniki-square:before{content:""}.fa-get-pocket:before{content:""}.fa-wikipedia-w:before{content:""}.fa-safari:before{content:""}.fa-chrome:before{content:""}.fa-firefox:before{content:""}.fa-opera:before{content:""}.fa-internet-explorer:before{content:""}.fa-tv:before,.fa-television:before{content:""}.fa-contao:before{content:""}.fa-500px:before{content:""}.fa-amazon:before{content:""}.fa-calendar-plus-o:before{content:""}.fa-calendar-minus-o:before{content:""}.fa-calendar-times-o:before{content:""}.fa-calendar-check-o:before{content:""}.fa-industry:before{content:""}.fa-map-pin:before{content:""}.fa-map-signs:before{content:""}.fa-map-o:before{content:""}.fa-map:before{content:""}.fa-commenting:before{content:""}.fa-commenting-o:before{content:""}.fa-houzz:before{content:""}.fa-vimeo:before{content:""}.fa-black-tie:before{content:""}.fa-fonticons:before{content:""}.fa-reddit-alien:before{content:""}.fa-edge:before{content:""}.fa-credit-card-alt:before{content:""}.fa-codiepie:before{content:""}.fa-modx:before{content:""}.fa-fort-awesome:before{content:""}.fa-usb:before{content:""}.fa-product-hunt:before{content:""}.fa-mixcloud:before{content:""}.fa-scribd:before{content:""}.fa-pause-circle:before{content:""}.fa-pause-circle-o:before{content:""}.fa-stop-circle:before{content:""}.fa-stop-circle-o:before{content:""}.fa-shopping-bag:before{content:""}.fa-shopping-basket:before{content:""}.fa-hashtag:before{content:""}.fa-bluetooth:before{content:""}.fa-bluetooth-b:before{content:""}.fa-percent:before{content:""}.fa-gitlab:before,.icon-gitlab:before{content:""}.fa-wpbeginner:before{content:""}.fa-wpforms:before{content:""}.fa-envira:before{content:""}.fa-universal-access:before{content:""}.fa-wheelchair-alt:before{content:""}.fa-question-circle-o:before{content:""}.fa-blind:before{content:""}.fa-audio-description:before{content:""}.fa-volume-control-phone:before{content:""}.fa-braille:before{content:""}.fa-assistive-listening-systems:before{content:""}.fa-asl-interpreting:before,.fa-american-sign-language-interpreting:before{content:""}.fa-deafness:before,.fa-hard-of-hearing:before,.fa-deaf:before{content:""}.fa-glide:before{content:""}.fa-glide-g:before{content:""}.fa-signing:before,.fa-sign-language:before{content:""}.fa-low-vision:before{content:""}.fa-viadeo:before{content:""}.fa-viadeo-square:before{content:""}.fa-snapchat:before{content:""}.fa-snapchat-ghost:before{content:""}.fa-snapchat-square:before{content:""}.fa-pied-piper:before{content:""}.fa-first-order:before{content:""}.fa-yoast:before{content:""}.fa-themeisle:before{content:""}.fa-google-plus-circle:before,.fa-google-plus-official:before{content:""}.fa-fa:before,.fa-font-awesome:before{content:""}.fa-handshake-o:before{content:""}.fa-envelope-open:before{content:""}.fa-envelope-open-o:before{content:""}.fa-linode:before{content:""}.fa-address-book:before{content:""}.fa-address-book-o:before{content:""}.fa-vcard:before,.fa-address-card:before{content:""}.fa-vcard-o:before,.fa-address-card-o:before{content:""}.fa-user-circle:before{content:""}.fa-user-circle-o:before{content:""}.fa-user-o:before{content:""}.fa-id-badge:before{content:""}.fa-drivers-license:before,.fa-id-card:before{content:""}.fa-drivers-license-o:before,.fa-id-card-o:before{content:""}.fa-quora:before{content:""}.fa-free-code-camp:before{content:""}.fa-telegram:before{content:""}.fa-thermometer-4:before,.fa-thermometer:before,.fa-thermometer-full:before{content:""}.fa-thermometer-3:before,.fa-thermometer-three-quarters:before{content:""}.fa-thermometer-2:before,.fa-thermometer-half:before{content:""}.fa-thermometer-1:before,.fa-thermometer-quarter:before{content:""}.fa-thermometer-0:before,.fa-thermometer-empty:before{content:""}.fa-shower:before{content:""}.fa-bathtub:before,.fa-s15:before,.fa-bath:before{content:""}.fa-podcast:before{content:""}.fa-window-maximize:before{content:""}.fa-window-minimize:before{content:""}.fa-window-restore:before{content:""}.fa-times-rectangle:before,.fa-window-close:before{content:""}.fa-times-rectangle-o:before,.fa-window-close-o:before{content:""}.fa-bandcamp:before{content:""}.fa-grav:before{content:""}.fa-etsy:before{content:""}.fa-imdb:before{content:""}.fa-ravelry:before{content:""}.fa-eercast:before{content:""}.fa-microchip:before{content:""}.fa-snowflake-o:before{content:""}.fa-superpowers:before{content:""}.fa-wpexplorer:before{content:""}.fa-meetup:before{content:""}.sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0, 0, 0, 0);border:0}.sr-only-focusable:active,.sr-only-focusable:focus{position:static;width:auto;height:auto;margin:0;overflow:visible;clip:auto}.fa,.wy-menu-vertical li span.toctree-expand,.wy-menu-vertical li.on a span.toctree-expand,.wy-menu-vertical li.current>a span.toctree-expand,.rst-content .admonition-title,.rst-content h1 .headerlink,.rst-content h2 .headerlink,.rst-content h3 .headerlink,.rst-content h4 .headerlink,.rst-content h5 .headerlink,.rst-content h6 .headerlink,.rst-content dl dt .headerlink,.rst-content p.caption .headerlink,.rst-content table>caption .headerlink,.rst-content tt.download span:first-child,.rst-content code.download span:first-child,.icon,.wy-dropdown .caret,.wy-inline-validate.wy-inline-validate-success .wy-input-context,.wy-inline-validate.wy-inline-validate-danger .wy-input-context,.wy-inline-validate.wy-inline-validate-warning .wy-input-context,.wy-inline-validate.wy-inline-validate-info .wy-input-context{font-family:inherit}.fa:before,.wy-menu-vertical li span.toctree-expand:before,.wy-menu-vertical li.on a span.toctree-expand:before,.wy-menu-vertical li.current>a span.toctree-expand:before,.rst-content .admonition-title:before,.rst-content h1 .headerlink:before,.rst-content h2 .headerlink:before,.rst-content h3 .headerlink:before,.rst-content h4 .headerlink:before,.rst-content h5 .headerlink:before,.rst-content h6 .headerlink:before,.rst-content dl dt .headerlink:before,.rst-content p.caption .headerlink:before,.rst-content table>caption .headerlink:before,.rst-content tt.download span:first-child:before,.rst-content code.download span:first-child:before,.icon:before,.wy-dropdown .caret:before,.wy-inline-validate.wy-inline-validate-success .wy-input-context:before,.wy-inline-validate.wy-inline-validate-danger .wy-input-context:before,.wy-inline-validate.wy-inline-validate-warning .wy-input-context:before,.wy-inline-validate.wy-inline-validate-info .wy-input-context:before{font-family:"FontAwesome";display:inline-block;font-style:normal;font-weight:normal;line-height:1;text-decoration:inherit}a .fa,a .wy-menu-vertical li span.toctree-expand,.wy-menu-vertical li a span.toctree-expand,.wy-menu-vertical li.on a span.toctree-expand,.wy-menu-vertical li.current>a span.toctree-expand,a .rst-content .admonition-title,.rst-content a .admonition-title,a .rst-content h1 .headerlink,.rst-content h1 a .headerlink,a .rst-content h2 .headerlink,.rst-content h2 a .headerlink,a .rst-content h3 .headerlink,.rst-content h3 a .headerlink,a .rst-content h4 .headerlink,.rst-content h4 a .headerlink,a .rst-content h5 .headerlink,.rst-content h5 a .headerlink,a .rst-content h6 .headerlink,.rst-content h6 a .headerlink,a .rst-content dl dt .headerlink,.rst-content dl dt a .headerlink,a .rst-content p.caption .headerlink,.rst-content p.caption a .headerlink,a .rst-content table>caption .headerlink,.rst-content table>caption a .headerlink,a .rst-content tt.download span:first-child,.rst-content tt.download a span:first-child,a .rst-content code.download span:first-child,.rst-content code.download a span:first-child,a .icon{display:inline-block;text-decoration:inherit}.btn .fa,.btn .wy-menu-vertical li span.toctree-expand,.wy-menu-vertical li .btn span.toctree-expand,.btn .wy-menu-vertical li.on a span.toctree-expand,.wy-menu-vertical li.on a .btn span.toctree-expand,.btn .wy-menu-vertical li.current>a span.toctree-expand,.wy-menu-vertical li.current>a .btn span.toctree-expand,.btn .rst-content .admonition-title,.rst-content .btn .admonition-title,.btn .rst-content h1 .headerlink,.rst-content h1 .btn .headerlink,.btn .rst-content h2 .headerlink,.rst-content h2 .btn .headerlink,.btn .rst-content h3 .headerlink,.rst-content h3 .btn .headerlink,.btn .rst-content h4 .headerlink,.rst-content h4 .btn .headerlink,.btn .rst-content h5 .headerlink,.rst-content h5 .btn .headerlink,.btn .rst-content h6 .headerlink,.rst-content h6 .btn .headerlink,.btn .rst-content dl dt .headerlink,.rst-content dl dt .btn .headerlink,.btn .rst-content p.caption .headerlink,.rst-content p.caption .btn .headerlink,.btn .rst-content table>caption .headerlink,.rst-content table>caption .btn .headerlink,.btn .rst-content tt.download span:first-child,.rst-content tt.download .btn span:first-child,.btn .rst-content code.download span:first-child,.rst-content code.download .btn span:first-child,.btn .icon,.nav .fa,.nav .wy-menu-vertical li span.toctree-expand,.wy-menu-vertical li .nav span.toctree-expand,.nav .wy-menu-vertical li.on a span.toctree-expand,.wy-menu-vertical li.on a .nav span.toctree-expand,.nav .wy-menu-vertical li.current>a span.toctree-expand,.wy-menu-vertical li.current>a .nav span.toctree-expand,.nav .rst-content .admonition-title,.rst-content .nav .admonition-title,.nav .rst-content h1 .headerlink,.rst-content h1 .nav .headerlink,.nav .rst-content h2 .headerlink,.rst-content h2 .nav .headerlink,.nav .rst-content h3 .headerlink,.rst-content h3 .nav .headerlink,.nav .rst-content h4 .headerlink,.rst-content h4 .nav .headerlink,.nav .rst-content h5 .headerlink,.rst-content h5 .nav .headerlink,.nav .rst-content h6 .headerlink,.rst-content h6 .nav .headerlink,.nav .rst-content dl dt .headerlink,.rst-content dl dt .nav .headerlink,.nav .rst-content p.caption .headerlink,.rst-content p.caption .nav .headerlink,.nav .rst-content table>caption .headerlink,.rst-content table>caption .nav .headerlink,.nav .rst-content tt.download span:first-child,.rst-content tt.download .nav span:first-child,.nav .rst-content code.download span:first-child,.rst-content code.download .nav span:first-child,.nav .icon{display:inline}.btn .fa.fa-large,.btn .wy-menu-vertical li span.fa-large.toctree-expand,.wy-menu-vertical li .btn span.fa-large.toctree-expand,.btn .rst-content .fa-large.admonition-title,.rst-content .btn .fa-large.admonition-title,.btn .rst-content h1 .fa-large.headerlink,.rst-content h1 .btn .fa-large.headerlink,.btn .rst-content h2 .fa-large.headerlink,.rst-content h2 .btn .fa-large.headerlink,.btn .rst-content h3 .fa-large.headerlink,.rst-content h3 .btn .fa-large.headerlink,.btn .rst-content h4 .fa-large.headerlink,.rst-content h4 .btn .fa-large.headerlink,.btn .rst-content h5 .fa-large.headerlink,.rst-content h5 .btn .fa-large.headerlink,.btn .rst-content h6 .fa-large.headerlink,.rst-content h6 .btn .fa-large.headerlink,.btn .rst-content dl dt .fa-large.headerlink,.rst-content dl dt .btn .fa-large.headerlink,.btn .rst-content p.caption .fa-large.headerlink,.rst-content p.caption .btn .fa-large.headerlink,.btn .rst-content table>caption .fa-large.headerlink,.rst-content table>caption .btn .fa-large.headerlink,.btn .rst-content tt.download span.fa-large:first-child,.rst-content tt.download .btn span.fa-large:first-child,.btn .rst-content code.download span.fa-large:first-child,.rst-content code.download .btn span.fa-large:first-child,.btn .fa-large.icon,.nav .fa.fa-large,.nav .wy-menu-vertical li span.fa-large.toctree-expand,.wy-menu-vertical li .nav span.fa-large.toctree-expand,.nav .rst-content .fa-large.admonition-title,.rst-content .nav .fa-large.admonition-title,.nav .rst-content h1 .fa-large.headerlink,.rst-content h1 .nav .fa-large.headerlink,.nav .rst-content h2 .fa-large.headerlink,.rst-content h2 .nav .fa-large.headerlink,.nav .rst-content h3 .fa-large.headerlink,.rst-content h3 .nav .fa-large.headerlink,.nav .rst-content h4 .fa-large.headerlink,.rst-content h4 .nav .fa-large.headerlink,.nav .rst-content h5 .fa-large.headerlink,.rst-content h5 .nav .fa-large.headerlink,.nav .rst-content h6 .fa-large.headerlink,.rst-content h6 .nav .fa-large.headerlink,.nav .rst-content dl dt .fa-large.headerlink,.rst-content dl dt .nav .fa-large.headerlink,.nav .rst-content p.caption .fa-large.headerlink,.rst-content p.caption .nav .fa-large.headerlink,.nav .rst-content table>caption .fa-large.headerlink,.rst-content table>caption .nav .fa-large.headerlink,.nav .rst-content tt.download span.fa-large:first-child,.rst-content tt.download .nav span.fa-large:first-child,.nav .rst-content code.download span.fa-large:first-child,.rst-content code.download .nav span.fa-large:first-child,.nav .fa-large.icon{line-height:.9em}.btn .fa.fa-spin,.btn .wy-menu-vertical li span.fa-spin.toctree-expand,.wy-menu-vertical li .btn span.fa-spin.toctree-expand,.btn .rst-content .fa-spin.admonition-title,.rst-content .btn .fa-spin.admonition-title,.btn .rst-content h1 .fa-spin.headerlink,.rst-content h1 .btn .fa-spin.headerlink,.btn .rst-content h2 .fa-spin.headerlink,.rst-content h2 .btn .fa-spin.headerlink,.btn .rst-content h3 .fa-spin.headerlink,.rst-content h3 .btn .fa-spin.headerlink,.btn .rst-content h4 .fa-spin.headerlink,.rst-content h4 .btn .fa-spin.headerlink,.btn .rst-content h5 .fa-spin.headerlink,.rst-content h5 .btn .fa-spin.headerlink,.btn .rst-content h6 .fa-spin.headerlink,.rst-content h6 .btn .fa-spin.headerlink,.btn .rst-content dl dt .fa-spin.headerlink,.rst-content dl dt .btn .fa-spin.headerlink,.btn .rst-content p.caption .fa-spin.headerlink,.rst-content p.caption .btn .fa-spin.headerlink,.btn .rst-content table>caption .fa-spin.headerlink,.rst-content table>caption .btn .fa-spin.headerlink,.btn .rst-content tt.download span.fa-spin:first-child,.rst-content tt.download .btn span.fa-spin:first-child,.btn .rst-content code.download span.fa-spin:first-child,.rst-content code.download .btn span.fa-spin:first-child,.btn .fa-spin.icon,.nav .fa.fa-spin,.nav .wy-menu-vertical li span.fa-spin.toctree-expand,.wy-menu-vertical li .nav span.fa-spin.toctree-expand,.nav .rst-content .fa-spin.admonition-title,.rst-content .nav .fa-spin.admonition-title,.nav .rst-content h1 .fa-spin.headerlink,.rst-content h1 .nav .fa-spin.headerlink,.nav .rst-content h2 .fa-spin.headerlink,.rst-content h2 .nav .fa-spin.headerlink,.nav .rst-content h3 .fa-spin.headerlink,.rst-content h3 .nav .fa-spin.headerlink,.nav .rst-content h4 .fa-spin.headerlink,.rst-content h4 .nav .fa-spin.headerlink,.nav .rst-content h5 .fa-spin.headerlink,.rst-content h5 .nav .fa-spin.headerlink,.nav .rst-content h6 .fa-spin.headerlink,.rst-content h6 .nav .fa-spin.headerlink,.nav .rst-content dl dt .fa-spin.headerlink,.rst-content dl dt .nav .fa-spin.headerlink,.nav .rst-content p.caption .fa-spin.headerlink,.rst-content p.caption .nav .fa-spin.headerlink,.nav .rst-content table>caption .fa-spin.headerlink,.rst-content table>caption .nav .fa-spin.headerlink,.nav .rst-content tt.download span.fa-spin:first-child,.rst-content tt.download .nav span.fa-spin:first-child,.nav .rst-content code.download span.fa-spin:first-child,.rst-content code.download .nav span.fa-spin:first-child,.nav .fa-spin.icon{display:inline-block}.btn.fa:before,.wy-menu-vertical li span.btn.toctree-expand:before,.rst-content .btn.admonition-title:before,.rst-content h1 .btn.headerlink:before,.rst-content h2 .btn.headerlink:before,.rst-content h3 .btn.headerlink:before,.rst-content h4 .btn.headerlink:before,.rst-content h5 .btn.headerlink:before,.rst-content h6 .btn.headerlink:before,.rst-content dl dt .btn.headerlink:before,.rst-content p.caption .btn.headerlink:before,.rst-content table>caption .btn.headerlink:before,.rst-content tt.download span.btn:first-child:before,.rst-content code.download span.btn:first-child:before,.btn.icon:before{opacity:.5;-webkit-transition:opacity .05s ease-in;-moz-transition:opacity .05s ease-in;transition:opacity .05s ease-in}.btn.fa:hover:before,.wy-menu-vertical li span.btn.toctree-expand:hover:before,.rst-content .btn.admonition-title:hover:before,.rst-content h1 .btn.headerlink:hover:before,.rst-content h2 .btn.headerlink:hover:before,.rst-content h3 .btn.headerlink:hover:before,.rst-content h4 .btn.headerlink:hover:before,.rst-content h5 .btn.headerlink:hover:before,.rst-content h6 .btn.headerlink:hover:before,.rst-content dl dt .btn.headerlink:hover:before,.rst-content p.caption .btn.headerlink:hover:before,.rst-content table>caption .btn.headerlink:hover:before,.rst-content tt.download span.btn:first-child:hover:before,.rst-content code.download span.btn:first-child:hover:before,.btn.icon:hover:before{opacity:1}.btn-mini .fa:before,.btn-mini .wy-menu-vertical li span.toctree-expand:before,.wy-menu-vertical li .btn-mini span.toctree-expand:before,.btn-mini .rst-content .admonition-title:before,.rst-content .btn-mini .admonition-title:before,.btn-mini .rst-content h1 .headerlink:before,.rst-content h1 .btn-mini .headerlink:before,.btn-mini .rst-content h2 .headerlink:before,.rst-content h2 .btn-mini .headerlink:before,.btn-mini .rst-content h3 .headerlink:before,.rst-content h3 .btn-mini .headerlink:before,.btn-mini .rst-content h4 .headerlink:before,.rst-content h4 .btn-mini .headerlink:before,.btn-mini .rst-content h5 .headerlink:before,.rst-content h5 .btn-mini .headerlink:before,.btn-mini .rst-content h6 .headerlink:before,.rst-content h6 .btn-mini .headerlink:before,.btn-mini .rst-content dl dt .headerlink:before,.rst-content dl dt .btn-mini .headerlink:before,.btn-mini .rst-content p.caption .headerlink:before,.rst-content p.caption .btn-mini .headerlink:before,.btn-mini .rst-content table>caption .headerlink:before,.rst-content table>caption .btn-mini .headerlink:before,.btn-mini .rst-content tt.download span:first-child:before,.rst-content tt.download .btn-mini span:first-child:before,.btn-mini .rst-content code.download span:first-child:before,.rst-content code.download .btn-mini span:first-child:before,.btn-mini .icon:before{font-size:14px;vertical-align:-15%}.wy-alert,.rst-content .note,.rst-content .attention,.rst-content .caution,.rst-content .danger,.rst-content .error,.rst-content .hint,.rst-content .important,.rst-content .tip,.rst-content .warning,.rst-content .seealso,.rst-content .admonition-todo,.rst-content .admonition{padding:12px;line-height:24px;margin-bottom:24px;background:#e7f2fa}.wy-alert-title,.rst-content .admonition-title{color:#fff;font-weight:bold;display:block;color:#fff;background:#6ab0de;margin:-12px;padding:6px 12px;margin-bottom:12px}.wy-alert.wy-alert-danger,.rst-content .wy-alert-danger.note,.rst-content .wy-alert-danger.attention,.rst-content .wy-alert-danger.caution,.rst-content .danger,.rst-content .error,.rst-content .wy-alert-danger.hint,.rst-content .wy-alert-danger.important,.rst-content .wy-alert-danger.tip,.rst-content .wy-alert-danger.warning,.rst-content .wy-alert-danger.seealso,.rst-content .wy-alert-danger.admonition-todo,.rst-content .wy-alert-danger.admonition{background:#fdf3f2}.wy-alert.wy-alert-danger .wy-alert-title,.rst-content .wy-alert-danger.note .wy-alert-title,.rst-content .wy-alert-danger.attention .wy-alert-title,.rst-content .wy-alert-danger.caution .wy-alert-title,.rst-content .danger .wy-alert-title,.rst-content .error .wy-alert-title,.rst-content .wy-alert-danger.hint .wy-alert-title,.rst-content .wy-alert-danger.important .wy-alert-title,.rst-content .wy-alert-danger.tip .wy-alert-title,.rst-content .wy-alert-danger.warning .wy-alert-title,.rst-content .wy-alert-danger.seealso .wy-alert-title,.rst-content .wy-alert-danger.admonition-todo .wy-alert-title,.rst-content .wy-alert-danger.admonition .wy-alert-title,.wy-alert.wy-alert-danger .rst-content .admonition-title,.rst-content .wy-alert.wy-alert-danger .admonition-title,.rst-content .wy-alert-danger.note .admonition-title,.rst-content .wy-alert-danger.attention .admonition-title,.rst-content .wy-alert-danger.caution .admonition-title,.rst-content .danger .admonition-title,.rst-content .error .admonition-title,.rst-content .wy-alert-danger.hint .admonition-title,.rst-content .wy-alert-danger.important .admonition-title,.rst-content .wy-alert-danger.tip .admonition-title,.rst-content .wy-alert-danger.warning .admonition-title,.rst-content .wy-alert-danger.seealso .admonition-title,.rst-content .wy-alert-danger.admonition-todo .admonition-title,.rst-content .wy-alert-danger.admonition .admonition-title{background:#f29f97}.wy-alert.wy-alert-warning,.rst-content .wy-alert-warning.note,.rst-content .attention,.rst-content .caution,.rst-content .wy-alert-warning.danger,.rst-content .wy-alert-warning.error,.rst-content .wy-alert-warning.hint,.rst-content .wy-alert-warning.important,.rst-content .wy-alert-warning.tip,.rst-content .warning,.rst-content .wy-alert-warning.seealso,.rst-content .admonition-todo,.rst-content .wy-alert-warning.admonition{background:#ffedcc}.wy-alert.wy-alert-warning .wy-alert-title,.rst-content .wy-alert-warning.note .wy-alert-title,.rst-content .attention .wy-alert-title,.rst-content .caution .wy-alert-title,.rst-content .wy-alert-warning.danger .wy-alert-title,.rst-content .wy-alert-warning.error .wy-alert-title,.rst-content .wy-alert-warning.hint .wy-alert-title,.rst-content .wy-alert-warning.important .wy-alert-title,.rst-content .wy-alert-warning.tip .wy-alert-title,.rst-content .warning .wy-alert-title,.rst-content .wy-alert-warning.seealso .wy-alert-title,.rst-content .admonition-todo .wy-alert-title,.rst-content .wy-alert-warning.admonition .wy-alert-title,.wy-alert.wy-alert-warning .rst-content .admonition-title,.rst-content .wy-alert.wy-alert-warning .admonition-title,.rst-content .wy-alert-warning.note .admonition-title,.rst-content .attention .admonition-title,.rst-content .caution .admonition-title,.rst-content .wy-alert-warning.danger .admonition-title,.rst-content .wy-alert-warning.error .admonition-title,.rst-content .wy-alert-warning.hint .admonition-title,.rst-content .wy-alert-warning.important .admonition-title,.rst-content .wy-alert-warning.tip .admonition-title,.rst-content .warning .admonition-title,.rst-content .wy-alert-warning.seealso .admonition-title,.rst-content .admonition-todo .admonition-title,.rst-content .wy-alert-warning.admonition .admonition-title{background:#f0b37e}.wy-alert.wy-alert-info,.rst-content .note,.rst-content .wy-alert-info.attention,.rst-content .wy-alert-info.caution,.rst-content .wy-alert-info.danger,.rst-content .wy-alert-info.error,.rst-content .wy-alert-info.hint,.rst-content .wy-alert-info.important,.rst-content .wy-alert-info.tip,.rst-content .wy-alert-info.warning,.rst-content .seealso,.rst-content .wy-alert-info.admonition-todo,.rst-content .wy-alert-info.admonition{background:#e7f2fa}.wy-alert.wy-alert-info .wy-alert-title,.rst-content .note .wy-alert-title,.rst-content .wy-alert-info.attention .wy-alert-title,.rst-content .wy-alert-info.caution .wy-alert-title,.rst-content .wy-alert-info.danger .wy-alert-title,.rst-content .wy-alert-info.error .wy-alert-title,.rst-content .wy-alert-info.hint .wy-alert-title,.rst-content .wy-alert-info.important .wy-alert-title,.rst-content .wy-alert-info.tip .wy-alert-title,.rst-content .wy-alert-info.warning .wy-alert-title,.rst-content .seealso .wy-alert-title,.rst-content .wy-alert-info.admonition-todo .wy-alert-title,.rst-content .wy-alert-info.admonition .wy-alert-title,.wy-alert.wy-alert-info .rst-content .admonition-title,.rst-content .wy-alert.wy-alert-info .admonition-title,.rst-content .note .admonition-title,.rst-content .wy-alert-info.attention .admonition-title,.rst-content .wy-alert-info.caution .admonition-title,.rst-content .wy-alert-info.danger .admonition-title,.rst-content .wy-alert-info.error .admonition-title,.rst-content .wy-alert-info.hint .admonition-title,.rst-content .wy-alert-info.important .admonition-title,.rst-content .wy-alert-info.tip .admonition-title,.rst-content .wy-alert-info.warning .admonition-title,.rst-content .seealso .admonition-title,.rst-content .wy-alert-info.admonition-todo .admonition-title,.rst-content .wy-alert-info.admonition .admonition-title{background:#6ab0de}.wy-alert.wy-alert-success,.rst-content .wy-alert-success.note,.rst-content .wy-alert-success.attention,.rst-content .wy-alert-success.caution,.rst-content .wy-alert-success.danger,.rst-content .wy-alert-success.error,.rst-content .hint,.rst-content .important,.rst-content .tip,.rst-content .wy-alert-success.warning,.rst-content .wy-alert-success.seealso,.rst-content .wy-alert-success.admonition-todo,.rst-content .wy-alert-success.admonition{background:#dbfaf4}.wy-alert.wy-alert-success .wy-alert-title,.rst-content .wy-alert-success.note .wy-alert-title,.rst-content .wy-alert-success.attention .wy-alert-title,.rst-content .wy-alert-success.caution .wy-alert-title,.rst-content .wy-alert-success.danger .wy-alert-title,.rst-content .wy-alert-success.error .wy-alert-title,.rst-content .hint .wy-alert-title,.rst-content .important .wy-alert-title,.rst-content .tip .wy-alert-title,.rst-content .wy-alert-success.warning .wy-alert-title,.rst-content .wy-alert-success.seealso .wy-alert-title,.rst-content .wy-alert-success.admonition-todo .wy-alert-title,.rst-content .wy-alert-success.admonition .wy-alert-title,.wy-alert.wy-alert-success .rst-content .admonition-title,.rst-content .wy-alert.wy-alert-success .admonition-title,.rst-content .wy-alert-success.note .admonition-title,.rst-content .wy-alert-success.attention .admonition-title,.rst-content .wy-alert-success.caution .admonition-title,.rst-content .wy-alert-success.danger .admonition-title,.rst-content .wy-alert-success.error .admonition-title,.rst-content .hint .admonition-title,.rst-content .important .admonition-title,.rst-content .tip .admonition-title,.rst-content .wy-alert-success.warning .admonition-title,.rst-content .wy-alert-success.seealso .admonition-title,.rst-content .wy-alert-success.admonition-todo .admonition-title,.rst-content .wy-alert-success.admonition .admonition-title{background:#1abc9c}.wy-alert.wy-alert-neutral,.rst-content .wy-alert-neutral.note,.rst-content .wy-alert-neutral.attention,.rst-content .wy-alert-neutral.caution,.rst-content .wy-alert-neutral.danger,.rst-content .wy-alert-neutral.error,.rst-content .wy-alert-neutral.hint,.rst-content .wy-alert-neutral.important,.rst-content .wy-alert-neutral.tip,.rst-content .wy-alert-neutral.warning,.rst-content .wy-alert-neutral.seealso,.rst-content .wy-alert-neutral.admonition-todo,.rst-content .wy-alert-neutral.admonition{background:#f3f6f6}.wy-alert.wy-alert-neutral .wy-alert-title,.rst-content .wy-alert-neutral.note .wy-alert-title,.rst-content .wy-alert-neutral.attention .wy-alert-title,.rst-content .wy-alert-neutral.caution .wy-alert-title,.rst-content .wy-alert-neutral.danger .wy-alert-title,.rst-content .wy-alert-neutral.error .wy-alert-title,.rst-content .wy-alert-neutral.hint .wy-alert-title,.rst-content .wy-alert-neutral.important .wy-alert-title,.rst-content .wy-alert-neutral.tip .wy-alert-title,.rst-content .wy-alert-neutral.warning .wy-alert-title,.rst-content .wy-alert-neutral.seealso .wy-alert-title,.rst-content .wy-alert-neutral.admonition-todo .wy-alert-title,.rst-content .wy-alert-neutral.admonition .wy-alert-title,.wy-alert.wy-alert-neutral .rst-content .admonition-title,.rst-content .wy-alert.wy-alert-neutral .admonition-title,.rst-content .wy-alert-neutral.note .admonition-title,.rst-content .wy-alert-neutral.attention .admonition-title,.rst-content .wy-alert-neutral.caution .admonition-title,.rst-content .wy-alert-neutral.danger .admonition-title,.rst-content .wy-alert-neutral.error .admonition-title,.rst-content .wy-alert-neutral.hint .admonition-title,.rst-content .wy-alert-neutral.important .admonition-title,.rst-content .wy-alert-neutral.tip .admonition-title,.rst-content .wy-alert-neutral.warning .admonition-title,.rst-content .wy-alert-neutral.seealso .admonition-title,.rst-content .wy-alert-neutral.admonition-todo .admonition-title,.rst-content .wy-alert-neutral.admonition .admonition-title{color:#404040;background:#e1e4e5}.wy-alert.wy-alert-neutral a,.rst-content .wy-alert-neutral.note a,.rst-content .wy-alert-neutral.attention a,.rst-content .wy-alert-neutral.caution a,.rst-content .wy-alert-neutral.danger a,.rst-content .wy-alert-neutral.error a,.rst-content .wy-alert-neutral.hint a,.rst-content .wy-alert-neutral.important a,.rst-content .wy-alert-neutral.tip a,.rst-content .wy-alert-neutral.warning a,.rst-content .wy-alert-neutral.seealso a,.rst-content .wy-alert-neutral.admonition-todo a,.rst-content .wy-alert-neutral.admonition a{color:#2980B9}.wy-alert p:last-child,.rst-content .note p:last-child,.rst-content .attention p:last-child,.rst-content .caution p:last-child,.rst-content .danger p:last-child,.rst-content .error p:last-child,.rst-content .hint p:last-child,.rst-content .important p:last-child,.rst-content .tip p:last-child,.rst-content .warning p:last-child,.rst-content .seealso p:last-child,.rst-content .admonition-todo p:last-child,.rst-content .admonition p:last-child{margin-bottom:0}.wy-tray-container{position:fixed;bottom:0px;left:0;z-index:600}.wy-tray-container li{display:block;width:300px;background:transparent;color:#fff;text-align:center;box-shadow:0 5px 5px 0 rgba(0,0,0,0.1);padding:0 24px;min-width:20%;opacity:0;height:0;line-height:56px;overflow:hidden;-webkit-transition:all .3s ease-in;-moz-transition:all .3s ease-in;transition:all .3s ease-in}.wy-tray-container li.wy-tray-item-success{background:#27AE60}.wy-tray-container li.wy-tray-item-info{background:#2980B9}.wy-tray-container li.wy-tray-item-warning{background:#E67E22}.wy-tray-container li.wy-tray-item-danger{background:#E74C3C}.wy-tray-container li.on{opacity:1;height:56px}@media screen and (max-width: 768px){.wy-tray-container{bottom:auto;top:0;width:100%}.wy-tray-container li{width:100%}}button{font-size:100%;margin:0;vertical-align:baseline;*vertical-align:middle;cursor:pointer;line-height:normal;-webkit-appearance:button;*overflow:visible}button::-moz-focus-inner,input::-moz-focus-inner{border:0;padding:0}button[disabled]{cursor:default}.btn{display:inline-block;border-radius:2px;line-height:normal;white-space:nowrap;text-align:center;cursor:pointer;font-size:100%;padding:6px 12px 8px 12px;color:#fff;border:1px solid rgba(0,0,0,0.1);background-color:#27AE60;text-decoration:none;font-weight:normal;font-family:"Lato","proxima-nova","Helvetica Neue",Arial,sans-serif;box-shadow:0px 1px 2px -1px rgba(255,255,255,0.5) inset,0px -2px 0px 0px rgba(0,0,0,0.1) inset;outline-none:false;vertical-align:middle;*display:inline;zoom:1;-webkit-user-drag:none;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;-webkit-transition:all .1s linear;-moz-transition:all .1s linear;transition:all .1s linear}.btn-hover{background:#2e8ece;color:#fff}.btn:hover{background:#2cc36b;color:#fff}.btn:focus{background:#2cc36b;outline:0}.btn:active{box-shadow:0px -1px 0px 0px rgba(0,0,0,0.05) inset,0px 2px 0px 0px rgba(0,0,0,0.1) inset;padding:8px 12px 6px 12px}.btn:visited{color:#fff}.btn:disabled{background-image:none;filter:progid:DXImageTransform.Microsoft.gradient(enabled = false);filter:alpha(opacity=40);opacity:.4;cursor:not-allowed;box-shadow:none}.btn-disabled{background-image:none;filter:progid:DXImageTransform.Microsoft.gradient(enabled = false);filter:alpha(opacity=40);opacity:.4;cursor:not-allowed;box-shadow:none}.btn-disabled:hover,.btn-disabled:focus,.btn-disabled:active{background-image:none;filter:progid:DXImageTransform.Microsoft.gradient(enabled = false);filter:alpha(opacity=40);opacity:.4;cursor:not-allowed;box-shadow:none}.btn::-moz-focus-inner{padding:0;border:0}.btn-small{font-size:80%}.btn-info{background-color:#2980B9 !important}.btn-info:hover{background-color:#2e8ece !important}.btn-neutral{background-color:#f3f6f6 !important;color:#404040 !important}.btn-neutral:hover{background-color:#e5ebeb !important;color:#404040}.btn-neutral:visited{color:#404040 !important}.btn-success{background-color:#27AE60 !important}.btn-success:hover{background-color:#295 !important}.btn-danger{background-color:#E74C3C !important}.btn-danger:hover{background-color:#ea6153 !important}.btn-warning{background-color:#E67E22 !important}.btn-warning:hover{background-color:#e98b39 !important}.btn-invert{background-color:#222}.btn-invert:hover{background-color:#2f2f2f !important}.btn-link{background-color:transparent !important;color:#2980B9;box-shadow:none;border-color:transparent !important}.btn-link:hover{background-color:transparent !important;color:#409ad5 !important;box-shadow:none}.btn-link:active{background-color:transparent !important;color:#409ad5 !important;box-shadow:none}.btn-link:visited{color:#9B59B6}.wy-btn-group .btn,.wy-control .btn{vertical-align:middle}.wy-btn-group{margin-bottom:24px;*zoom:1}.wy-btn-group:before,.wy-btn-group:after{display:table;content:""}.wy-btn-group:after{clear:both}.wy-dropdown{position:relative;display:inline-block}.wy-dropdown-active .wy-dropdown-menu{display:block}.wy-dropdown-menu{position:absolute;left:0;display:none;float:left;top:100%;min-width:100%;background:#fcfcfc;z-index:100;border:solid 1px #cfd7dd;box-shadow:0 2px 2px 0 rgba(0,0,0,0.1);padding:12px}.wy-dropdown-menu>dd>a{display:block;clear:both;color:#404040;white-space:nowrap;font-size:90%;padding:0 12px;cursor:pointer}.wy-dropdown-menu>dd>a:hover{background:#2980B9;color:#fff}.wy-dropdown-menu>dd.divider{border-top:solid 1px #cfd7dd;margin:6px 0}.wy-dropdown-menu>dd.search{padding-bottom:12px}.wy-dropdown-menu>dd.search input[type="search"]{width:100%}.wy-dropdown-menu>dd.call-to-action{background:#e3e3e3;text-transform:uppercase;font-weight:500;font-size:80%}.wy-dropdown-menu>dd.call-to-action:hover{background:#e3e3e3}.wy-dropdown-menu>dd.call-to-action .btn{color:#fff}.wy-dropdown.wy-dropdown-up .wy-dropdown-menu{bottom:100%;top:auto;left:auto;right:0}.wy-dropdown.wy-dropdown-bubble .wy-dropdown-menu{background:#fcfcfc;margin-top:2px}.wy-dropdown.wy-dropdown-bubble .wy-dropdown-menu a{padding:6px 12px}.wy-dropdown.wy-dropdown-bubble .wy-dropdown-menu a:hover{background:#2980B9;color:#fff}.wy-dropdown.wy-dropdown-left .wy-dropdown-menu{right:0;left:auto;text-align:right}.wy-dropdown-arrow:before{content:" ";border-bottom:5px solid #f5f5f5;border-left:5px solid transparent;border-right:5px solid transparent;position:absolute;display:block;top:-4px;left:50%;margin-left:-3px}.wy-dropdown-arrow.wy-dropdown-arrow-left:before{left:11px}.wy-form-stacked select{display:block}.wy-form-aligned input,.wy-form-aligned textarea,.wy-form-aligned select,.wy-form-aligned .wy-help-inline,.wy-form-aligned label{display:inline-block;*display:inline;*zoom:1;vertical-align:middle}.wy-form-aligned .wy-control-group>label{display:inline-block;vertical-align:middle;width:10em;margin:6px 12px 0 0;float:left}.wy-form-aligned .wy-control{float:left}.wy-form-aligned .wy-control label{display:block}.wy-form-aligned .wy-control select{margin-top:6px}fieldset{border:0;margin:0;padding:0}legend{display:block;width:100%;border:0;padding:0;white-space:normal;margin-bottom:24px;font-size:150%;*margin-left:-7px}label{display:block;margin:0 0 .3125em 0;color:#333;font-size:90%}input,select,textarea{font-size:100%;margin:0;vertical-align:baseline;*vertical-align:middle}.wy-control-group{margin-bottom:24px;*zoom:1;max-width:68em;margin-left:auto;margin-right:auto;*zoom:1}.wy-control-group:before,.wy-control-group:after{display:table;content:""}.wy-control-group:after{clear:both}.wy-control-group:before,.wy-control-group:after{display:table;content:""}.wy-control-group:after{clear:both}.wy-control-group.wy-control-group-required>label:after{content:" *";color:#E74C3C}.wy-control-group .wy-form-full,.wy-control-group .wy-form-halves,.wy-control-group .wy-form-thirds{padding-bottom:12px}.wy-control-group .wy-form-full select,.wy-control-group .wy-form-halves select,.wy-control-group .wy-form-thirds select{width:100%}.wy-control-group .wy-form-full input[type="text"],.wy-control-group .wy-form-full input[type="password"],.wy-control-group .wy-form-full input[type="email"],.wy-control-group .wy-form-full input[type="url"],.wy-control-group .wy-form-full input[type="date"],.wy-control-group .wy-form-full input[type="month"],.wy-control-group .wy-form-full input[type="time"],.wy-control-group .wy-form-full input[type="datetime"],.wy-control-group .wy-form-full input[type="datetime-local"],.wy-control-group .wy-form-full input[type="week"],.wy-control-group .wy-form-full input[type="number"],.wy-control-group .wy-form-full input[type="search"],.wy-control-group .wy-form-full input[type="tel"],.wy-control-group .wy-form-full input[type="color"],.wy-control-group .wy-form-halves input[type="text"],.wy-control-group .wy-form-halves input[type="password"],.wy-control-group .wy-form-halves input[type="email"],.wy-control-group .wy-form-halves input[type="url"],.wy-control-group .wy-form-halves input[type="date"],.wy-control-group .wy-form-halves input[type="month"],.wy-control-group .wy-form-halves input[type="time"],.wy-control-group .wy-form-halves input[type="datetime"],.wy-control-group .wy-form-halves input[type="datetime-local"],.wy-control-group .wy-form-halves input[type="week"],.wy-control-group .wy-form-halves input[type="number"],.wy-control-group .wy-form-halves input[type="search"],.wy-control-group .wy-form-halves input[type="tel"],.wy-control-group .wy-form-halves input[type="color"],.wy-control-group .wy-form-thirds input[type="text"],.wy-control-group .wy-form-thirds input[type="password"],.wy-control-group .wy-form-thirds input[type="email"],.wy-control-group .wy-form-thirds input[type="url"],.wy-control-group .wy-form-thirds input[type="date"],.wy-control-group .wy-form-thirds input[type="month"],.wy-control-group .wy-form-thirds input[type="time"],.wy-control-group .wy-form-thirds input[type="datetime"],.wy-control-group .wy-form-thirds input[type="datetime-local"],.wy-control-group .wy-form-thirds input[type="week"],.wy-control-group .wy-form-thirds input[type="number"],.wy-control-group .wy-form-thirds input[type="search"],.wy-control-group .wy-form-thirds input[type="tel"],.wy-control-group .wy-form-thirds input[type="color"]{width:100%}.wy-control-group .wy-form-full{float:left;display:block;margin-right:2.3576515979%;width:100%;margin-right:0}.wy-control-group .wy-form-full:last-child{margin-right:0}.wy-control-group .wy-form-halves{float:left;display:block;margin-right:2.3576515979%;width:48.821174201%}.wy-control-group .wy-form-halves:last-child{margin-right:0}.wy-control-group .wy-form-halves:nth-of-type(2n){margin-right:0}.wy-control-group .wy-form-halves:nth-of-type(2n+1){clear:left}.wy-control-group .wy-form-thirds{float:left;display:block;margin-right:2.3576515979%;width:31.7615656014%}.wy-control-group .wy-form-thirds:last-child{margin-right:0}.wy-control-group .wy-form-thirds:nth-of-type(3n){margin-right:0}.wy-control-group .wy-form-thirds:nth-of-type(3n+1){clear:left}.wy-control-group.wy-control-group-no-input .wy-control{margin:6px 0 0 0;font-size:90%}.wy-control-no-input{display:inline-block;margin:6px 0 0 0;font-size:90%}.wy-control-group.fluid-input input[type="text"],.wy-control-group.fluid-input input[type="password"],.wy-control-group.fluid-input input[type="email"],.wy-control-group.fluid-input input[type="url"],.wy-control-group.fluid-input input[type="date"],.wy-control-group.fluid-input input[type="month"],.wy-control-group.fluid-input input[type="time"],.wy-control-group.fluid-input input[type="datetime"],.wy-control-group.fluid-input input[type="datetime-local"],.wy-control-group.fluid-input input[type="week"],.wy-control-group.fluid-input input[type="number"],.wy-control-group.fluid-input input[type="search"],.wy-control-group.fluid-input input[type="tel"],.wy-control-group.fluid-input input[type="color"]{width:100%}.wy-form-message-inline{display:inline-block;padding-left:.3em;color:#666;vertical-align:middle;font-size:90%}.wy-form-message{display:block;color:#999;font-size:70%;margin-top:.3125em;font-style:italic}.wy-form-message p{font-size:inherit;font-style:italic;margin-bottom:6px}.wy-form-message p:last-child{margin-bottom:0}input{line-height:normal}input[type="button"],input[type="reset"],input[type="submit"]{-webkit-appearance:button;cursor:pointer;font-family:"Lato","proxima-nova","Helvetica Neue",Arial,sans-serif;*overflow:visible}input[type="text"],input[type="password"],input[type="email"],input[type="url"],input[type="date"],input[type="month"],input[type="time"],input[type="datetime"],input[type="datetime-local"],input[type="week"],input[type="number"],input[type="search"],input[type="tel"],input[type="color"]{-webkit-appearance:none;padding:6px;display:inline-block;border:1px solid #ccc;font-size:80%;font-family:"Lato","proxima-nova","Helvetica Neue",Arial,sans-serif;box-shadow:inset 0 1px 3px #ddd;border-radius:0;-webkit-transition:border .3s linear;-moz-transition:border .3s linear;transition:border .3s linear}input[type="datetime-local"]{padding:.34375em .625em}input[disabled]{cursor:default}input[type="checkbox"],input[type="radio"]{-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box;padding:0;margin-right:.3125em;*height:13px;*width:13px}input[type="search"]{-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}input[type="search"]::-webkit-search-cancel-button,input[type="search"]::-webkit-search-decoration{-webkit-appearance:none}input[type="text"]:focus,input[type="password"]:focus,input[type="email"]:focus,input[type="url"]:focus,input[type="date"]:focus,input[type="month"]:focus,input[type="time"]:focus,input[type="datetime"]:focus,input[type="datetime-local"]:focus,input[type="week"]:focus,input[type="number"]:focus,input[type="search"]:focus,input[type="tel"]:focus,input[type="color"]:focus{outline:0;outline:thin dotted \9;border-color:#333}input.no-focus:focus{border-color:#ccc !important}input[type="file"]:focus,input[type="radio"]:focus,input[type="checkbox"]:focus{outline:thin dotted #333;outline:1px auto #129FEA}input[type="text"][disabled],input[type="password"][disabled],input[type="email"][disabled],input[type="url"][disabled],input[type="date"][disabled],input[type="month"][disabled],input[type="time"][disabled],input[type="datetime"][disabled],input[type="datetime-local"][disabled],input[type="week"][disabled],input[type="number"][disabled],input[type="search"][disabled],input[type="tel"][disabled],input[type="color"][disabled]{cursor:not-allowed;background-color:#fafafa}input:focus:invalid,textarea:focus:invalid,select:focus:invalid{color:#E74C3C;border:1px solid #E74C3C}input:focus:invalid:focus,textarea:focus:invalid:focus,select:focus:invalid:focus{border-color:#E74C3C}input[type="file"]:focus:invalid:focus,input[type="radio"]:focus:invalid:focus,input[type="checkbox"]:focus:invalid:focus{outline-color:#E74C3C}input.wy-input-large{padding:12px;font-size:100%}textarea{overflow:auto;vertical-align:top;width:100%;font-family:"Lato","proxima-nova","Helvetica Neue",Arial,sans-serif}select,textarea{padding:.5em .625em;display:inline-block;border:1px solid #ccc;font-size:80%;box-shadow:inset 0 1px 3px #ddd;-webkit-transition:border .3s linear;-moz-transition:border .3s linear;transition:border .3s linear}select{border:1px solid #ccc;background-color:#fff}select[multiple]{height:auto}select:focus,textarea:focus{outline:0}select[disabled],textarea[disabled],input[readonly],select[readonly],textarea[readonly]{cursor:not-allowed;background-color:#fafafa}input[type="radio"][disabled],input[type="checkbox"][disabled]{cursor:not-allowed}.wy-checkbox,.wy-radio{margin:6px 0;color:#404040;display:block}.wy-checkbox input,.wy-radio input{vertical-align:baseline}.wy-form-message-inline{display:inline-block;*display:inline;*zoom:1;vertical-align:middle}.wy-input-prefix,.wy-input-suffix{white-space:nowrap;padding:6px}.wy-input-prefix .wy-input-context,.wy-input-suffix .wy-input-context{line-height:27px;padding:0 8px;display:inline-block;font-size:80%;background-color:#f3f6f6;border:solid 1px #ccc;color:#999}.wy-input-suffix .wy-input-context{border-left:0}.wy-input-prefix .wy-input-context{border-right:0}.wy-switch{position:relative;display:block;height:24px;margin-top:12px;cursor:pointer}.wy-switch:before{position:absolute;content:"";display:block;left:0;top:0;width:36px;height:12px;border-radius:4px;background:#ccc;-webkit-transition:all .2s ease-in-out;-moz-transition:all .2s ease-in-out;transition:all .2s ease-in-out}.wy-switch:after{position:absolute;content:"";display:block;width:18px;height:18px;border-radius:4px;background:#999;left:-3px;top:-3px;-webkit-transition:all .2s ease-in-out;-moz-transition:all .2s ease-in-out;transition:all .2s ease-in-out}.wy-switch span{position:absolute;left:48px;display:block;font-size:12px;color:#ccc;line-height:1}.wy-switch.active:before{background:#1e8449}.wy-switch.active:after{left:24px;background:#27AE60}.wy-switch.disabled{cursor:not-allowed;opacity:.8}.wy-control-group.wy-control-group-error .wy-form-message,.wy-control-group.wy-control-group-error>label{color:#E74C3C}.wy-control-group.wy-control-group-error input[type="text"],.wy-control-group.wy-control-group-error input[type="password"],.wy-control-group.wy-control-group-error input[type="email"],.wy-control-group.wy-control-group-error input[type="url"],.wy-control-group.wy-control-group-error input[type="date"],.wy-control-group.wy-control-group-error input[type="month"],.wy-control-group.wy-control-group-error input[type="time"],.wy-control-group.wy-control-group-error input[type="datetime"],.wy-control-group.wy-control-group-error input[type="datetime-local"],.wy-control-group.wy-control-group-error input[type="week"],.wy-control-group.wy-control-group-error input[type="number"],.wy-control-group.wy-control-group-error input[type="search"],.wy-control-group.wy-control-group-error input[type="tel"],.wy-control-group.wy-control-group-error input[type="color"]{border:solid 1px #E74C3C}.wy-control-group.wy-control-group-error textarea{border:solid 1px #E74C3C}.wy-inline-validate{white-space:nowrap}.wy-inline-validate .wy-input-context{padding:.5em .625em;display:inline-block;font-size:80%}.wy-inline-validate.wy-inline-validate-success .wy-input-context{color:#27AE60}.wy-inline-validate.wy-inline-validate-danger .wy-input-context{color:#E74C3C}.wy-inline-validate.wy-inline-validate-warning .wy-input-context{color:#E67E22}.wy-inline-validate.wy-inline-validate-info .wy-input-context{color:#2980B9}.rotate-90{-webkit-transform:rotate(90deg);-moz-transform:rotate(90deg);-ms-transform:rotate(90deg);-o-transform:rotate(90deg);transform:rotate(90deg)}.rotate-180{-webkit-transform:rotate(180deg);-moz-transform:rotate(180deg);-ms-transform:rotate(180deg);-o-transform:rotate(180deg);transform:rotate(180deg)}.rotate-270{-webkit-transform:rotate(270deg);-moz-transform:rotate(270deg);-ms-transform:rotate(270deg);-o-transform:rotate(270deg);transform:rotate(270deg)}.mirror{-webkit-transform:scaleX(-1);-moz-transform:scaleX(-1);-ms-transform:scaleX(-1);-o-transform:scaleX(-1);transform:scaleX(-1)}.mirror.rotate-90{-webkit-transform:scaleX(-1) rotate(90deg);-moz-transform:scaleX(-1) rotate(90deg);-ms-transform:scaleX(-1) rotate(90deg);-o-transform:scaleX(-1) rotate(90deg);transform:scaleX(-1) rotate(90deg)}.mirror.rotate-180{-webkit-transform:scaleX(-1) rotate(180deg);-moz-transform:scaleX(-1) rotate(180deg);-ms-transform:scaleX(-1) rotate(180deg);-o-transform:scaleX(-1) rotate(180deg);transform:scaleX(-1) rotate(180deg)}.mirror.rotate-270{-webkit-transform:scaleX(-1) rotate(270deg);-moz-transform:scaleX(-1) rotate(270deg);-ms-transform:scaleX(-1) rotate(270deg);-o-transform:scaleX(-1) rotate(270deg);transform:scaleX(-1) rotate(270deg)}@media only screen and (max-width: 480px){.wy-form button[type="submit"]{margin:.7em 0 0}.wy-form input[type="text"],.wy-form input[type="password"],.wy-form input[type="email"],.wy-form input[type="url"],.wy-form input[type="date"],.wy-form input[type="month"],.wy-form input[type="time"],.wy-form input[type="datetime"],.wy-form input[type="datetime-local"],.wy-form input[type="week"],.wy-form input[type="number"],.wy-form input[type="search"],.wy-form input[type="tel"],.wy-form input[type="color"]{margin-bottom:.3em;display:block}.wy-form label{margin-bottom:.3em;display:block}.wy-form input[type="password"],.wy-form input[type="email"],.wy-form input[type="url"],.wy-form input[type="date"],.wy-form input[type="month"],.wy-form input[type="time"],.wy-form input[type="datetime"],.wy-form input[type="datetime-local"],.wy-form input[type="week"],.wy-form input[type="number"],.wy-form input[type="search"],.wy-form input[type="tel"],.wy-form input[type="color"]{margin-bottom:0}.wy-form-aligned .wy-control-group label{margin-bottom:.3em;text-align:left;display:block;width:100%}.wy-form-aligned .wy-control{margin:1.5em 0 0 0}.wy-form .wy-help-inline,.wy-form-message-inline,.wy-form-message{display:block;font-size:80%;padding:6px 0}}@media screen and (max-width: 768px){.tablet-hide{display:none}}@media screen and (max-width: 480px){.mobile-hide{display:none}}.float-left{float:left}.float-right{float:right}.full-width{width:100%}.wy-table,.rst-content table.docutils,.rst-content table.field-list{border-collapse:collapse;border-spacing:0;empty-cells:show;margin-bottom:24px}.wy-table caption,.rst-content table.docutils caption,.rst-content table.field-list caption{color:#000;font:italic 85%/1 arial,sans-serif;padding:1em 0;text-align:center}.wy-table td,.rst-content table.docutils td,.rst-content table.field-list td,.wy-table th,.rst-content table.docutils th,.rst-content table.field-list th{font-size:90%;margin:0;overflow:visible;padding:8px 16px}.wy-table td:first-child,.rst-content table.docutils td:first-child,.rst-content table.field-list td:first-child,.wy-table th:first-child,.rst-content table.docutils th:first-child,.rst-content table.field-list th:first-child{border-left-width:0}.wy-table thead,.rst-content table.docutils thead,.rst-content table.field-list thead{color:#000;text-align:left;vertical-align:bottom;white-space:nowrap}.wy-table thead th,.rst-content table.docutils thead th,.rst-content table.field-list thead th{font-weight:bold;border-bottom:solid 2px #e1e4e5}.wy-table td,.rst-content table.docutils td,.rst-content table.field-list td{background-color:transparent;vertical-align:middle}.wy-table td p,.rst-content table.docutils td p,.rst-content table.field-list td p{line-height:18px}.wy-table td p:last-child,.rst-content table.docutils td p:last-child,.rst-content table.field-list td p:last-child{margin-bottom:0}.wy-table .wy-table-cell-min,.rst-content table.docutils .wy-table-cell-min,.rst-content table.field-list .wy-table-cell-min{width:1%;padding-right:0}.wy-table .wy-table-cell-min input[type=checkbox],.rst-content table.docutils .wy-table-cell-min input[type=checkbox],.rst-content table.field-list .wy-table-cell-min input[type=checkbox],.wy-table .wy-table-cell-min input[type=checkbox],.rst-content table.docutils .wy-table-cell-min input[type=checkbox],.rst-content table.field-list .wy-table-cell-min input[type=checkbox]{margin:0}.wy-table-secondary{color:gray;font-size:90%}.wy-table-tertiary{color:gray;font-size:80%}.wy-table-odd td,.wy-table-striped tr:nth-child(2n-1) td,.rst-content table.docutils:not(.field-list) tr:nth-child(2n-1) td{background-color:#f3f6f6}.wy-table-backed{background-color:#f3f6f6}.wy-table-bordered-all,.rst-content table.docutils{border:1px solid #e1e4e5}.wy-table-bordered-all td,.rst-content table.docutils td{border-bottom:1px solid #e1e4e5;border-left:1px solid #e1e4e5}.wy-table-bordered-all tbody>tr:last-child td,.rst-content table.docutils tbody>tr:last-child td{border-bottom-width:0}.wy-table-bordered{border:1px solid #e1e4e5}.wy-table-bordered-rows td{border-bottom:1px solid #e1e4e5}.wy-table-bordered-rows tbody>tr:last-child td{border-bottom-width:0}.wy-table-horizontal tbody>tr:last-child td{border-bottom-width:0}.wy-table-horizontal td,.wy-table-horizontal th{border-width:0 0 1px 0;border-bottom:1px solid #e1e4e5}.wy-table-horizontal tbody>tr:last-child td{border-bottom-width:0}.wy-table-responsive{margin-bottom:24px;max-width:100%;overflow:auto}.wy-table-responsive table{margin-bottom:0 !important}.wy-table-responsive table td,.wy-table-responsive table th{white-space:nowrap}a{color:#2980B9;text-decoration:none;cursor:pointer}a:hover{color:#3091d1}a:visited{color:#9B59B6}html{height:100%;overflow-x:hidden}body{font-family:"Lato","proxima-nova","Helvetica Neue",Arial,sans-serif;font-weight:normal;color:#404040;min-height:100%;overflow-x:hidden;background:#edf0f2}.wy-text-left{text-align:left}.wy-text-center{text-align:center}.wy-text-right{text-align:right}.wy-text-large{font-size:120%}.wy-text-normal{font-size:100%}.wy-text-small,small{font-size:80%}.wy-text-strike{text-decoration:line-through}.wy-text-warning{color:#E67E22 !important}a.wy-text-warning:hover{color:#eb9950 !important}.wy-text-info{color:#2980B9 !important}a.wy-text-info:hover{color:#409ad5 !important}.wy-text-success{color:#27AE60 !important}a.wy-text-success:hover{color:#36d278 !important}.wy-text-danger{color:#E74C3C !important}a.wy-text-danger:hover{color:#ed7669 !important}.wy-text-neutral{color:#404040 !important}a.wy-text-neutral:hover{color:#595959 !important}h1,h2,.rst-content .toctree-wrapper p.caption,h3,h4,h5,h6,legend{margin-top:0;font-weight:700;font-family:"Roboto Slab","ff-tisa-web-pro","Georgia",Arial,sans-serif}p{line-height:24px;margin:0;font-size:16px;margin-bottom:24px}h1{font-size:175%}h2,.rst-content .toctree-wrapper p.caption{font-size:150%}h3{font-size:125%}h4{font-size:115%}h5{font-size:110%}h6{font-size:100%}hr{display:block;height:1px;border:0;border-top:1px solid #e1e4e5;margin:24px 0;padding:0}code,.rst-content tt,.rst-content code{white-space:nowrap;max-width:100%;background:#fff;border:solid 1px #e1e4e5;font-size:75%;padding:0 5px;font-family:Consolas,"Andale Mono WT","Andale Mono","Lucida Console","Lucida Sans Typewriter","DejaVu Sans Mono","Bitstream Vera Sans Mono","Liberation Mono","Nimbus Mono L",Monaco,"Courier New",Courier,monospace;color:#E74C3C;overflow-x:auto}code.code-large,.rst-content tt.code-large{font-size:90%}.wy-plain-list-disc,.rst-content .section ul,.rst-content .toctree-wrapper ul,article ul{list-style:disc;line-height:24px;margin-bottom:24px}.wy-plain-list-disc li,.rst-content .section ul li,.rst-content .toctree-wrapper ul li,article ul li{list-style:disc;margin-left:24px}.wy-plain-list-disc li p:last-child,.rst-content .section ul li p:last-child,.rst-content .toctree-wrapper ul li p:last-child,article ul li p:last-child{margin-bottom:0}.wy-plain-list-disc li ul,.rst-content .section ul li ul,.rst-content .toctree-wrapper ul li ul,article ul li ul{margin-bottom:0}.wy-plain-list-disc li li,.rst-content .section ul li li,.rst-content .toctree-wrapper ul li li,article ul li li{list-style:circle}.wy-plain-list-disc li li li,.rst-content .section ul li li li,.rst-content .toctree-wrapper ul li li li,article ul li li li{list-style:square}.wy-plain-list-disc li ol li,.rst-content .section ul li ol li,.rst-content .toctree-wrapper ul li ol li,article ul li ol li{list-style:decimal}.wy-plain-list-decimal,.rst-content .section ol,.rst-content ol.arabic,article ol{list-style:decimal;line-height:24px;margin-bottom:24px}.wy-plain-list-decimal li,.rst-content .section ol li,.rst-content ol.arabic li,article ol li{list-style:decimal;margin-left:24px}.wy-plain-list-decimal li p:last-child,.rst-content .section ol li p:last-child,.rst-content ol.arabic li p:last-child,article ol li p:last-child{margin-bottom:0}.wy-plain-list-decimal li ul,.rst-content .section ol li ul,.rst-content ol.arabic li ul,article ol li ul{margin-bottom:0}.wy-plain-list-decimal li ul li,.rst-content .section ol li ul li,.rst-content ol.arabic li ul li,article ol li ul li{list-style:disc}.wy-breadcrumbs{*zoom:1}.wy-breadcrumbs:before,.wy-breadcrumbs:after{display:table;content:""}.wy-breadcrumbs:after{clear:both}.wy-breadcrumbs li{display:inline-block}.wy-breadcrumbs li.wy-breadcrumbs-aside{float:right}.wy-breadcrumbs li a{display:inline-block;padding:5px}.wy-breadcrumbs li a:first-child{padding-left:0}.wy-breadcrumbs li code,.wy-breadcrumbs li .rst-content tt,.rst-content .wy-breadcrumbs li tt{padding:5px;border:none;background:none}.wy-breadcrumbs li code.literal,.wy-breadcrumbs li .rst-content tt.literal,.rst-content .wy-breadcrumbs li tt.literal{color:#404040}.wy-breadcrumbs-extra{margin-bottom:0;color:#b3b3b3;font-size:80%;display:inline-block}@media screen and (max-width: 480px){.wy-breadcrumbs-extra{display:none}.wy-breadcrumbs li.wy-breadcrumbs-aside{display:none}}@media print{.wy-breadcrumbs li.wy-breadcrumbs-aside{display:none}}.wy-affix{position:fixed;top:1.618em}.wy-menu a:hover{text-decoration:none}.wy-menu-horiz{*zoom:1}.wy-menu-horiz:before,.wy-menu-horiz:after{display:table;content:""}.wy-menu-horiz:after{clear:both}.wy-menu-horiz ul,.wy-menu-horiz li{display:inline-block}.wy-menu-horiz li:hover{background:rgba(255,255,255,0.1)}.wy-menu-horiz li.divide-left{border-left:solid 1px #404040}.wy-menu-horiz li.divide-right{border-right:solid 1px #404040}.wy-menu-horiz a{height:32px;display:inline-block;line-height:32px;padding:0 16px}.wy-menu-vertical{width:300px}.wy-menu-vertical header,.wy-menu-vertical p.caption{height:32px;display:inline-block;line-height:32px;padding:0 1.618em;margin-bottom:0;display:block;font-weight:bold;text-transform:uppercase;font-size:80%;color:#6f6f6f;white-space:nowrap}.wy-menu-vertical ul{margin-bottom:0}.wy-menu-vertical li.divide-top{border-top:solid 1px #404040}.wy-menu-vertical li.divide-bottom{border-bottom:solid 1px #404040}.wy-menu-vertical li.current{background:#e3e3e3}.wy-menu-vertical li.current a{color:gray;border-right:solid 1px #c9c9c9;padding:.4045em 2.427em}.wy-menu-vertical li.current a:hover{background:#d6d6d6}.wy-menu-vertical li code,.wy-menu-vertical li .rst-content tt,.rst-content .wy-menu-vertical li tt{border:none;background:inherit;color:inherit;padding-left:0;padding-right:0}.wy-menu-vertical li span.toctree-expand{display:block;float:left;margin-left:-1.2em;font-size:.8em;line-height:1.6em;color:#4d4d4d}.wy-menu-vertical li.on a,.wy-menu-vertical li.current>a{color:#404040;padding:.4045em 1.618em;font-weight:bold;position:relative;background:#fcfcfc;border:none;padding-left:1.618em -4px}.wy-menu-vertical li.on a:hover,.wy-menu-vertical li.current>a:hover{background:#fcfcfc}.wy-menu-vertical li.on a:hover span.toctree-expand,.wy-menu-vertical li.current>a:hover span.toctree-expand{color:gray}.wy-menu-vertical li.on a span.toctree-expand,.wy-menu-vertical li.current>a span.toctree-expand{display:block;font-size:.8em;line-height:1.6em;color:#333}.wy-menu-vertical li.toctree-l1.current>a{border-bottom:solid 1px #c9c9c9;border-top:solid 1px #c9c9c9}.wy-menu-vertical li.toctree-l1.current li.toctree-l2>ul,.wy-menu-vertical li.toctree-l2.current li.toctree-l3>ul{display:none}.wy-menu-vertical li.toctree-l1.current li.toctree-l2.current>ul,.wy-menu-vertical li.toctree-l2.current li.toctree-l3.current>ul{display:block}.wy-menu-vertical li.toctree-l2.current>a{background:#c9c9c9;padding:.4045em 2.427em}.wy-menu-vertical li.toctree-l2.current li.toctree-l3>a{display:block;background:#c9c9c9;padding:.4045em 4.045em}.wy-menu-vertical li.toctree-l2 a:hover span.toctree-expand{color:gray}.wy-menu-vertical li.toctree-l2 span.toctree-expand{color:#a3a3a3}.wy-menu-vertical li.toctree-l3{font-size:.9em}.wy-menu-vertical li.toctree-l3.current>a{background:#bdbdbd;padding:.4045em 4.045em}.wy-menu-vertical li.toctree-l3.current li.toctree-l4>a{display:block;background:#bdbdbd;padding:.4045em 5.663em}.wy-menu-vertical li.toctree-l3 a:hover span.toctree-expand{color:gray}.wy-menu-vertical li.toctree-l3 span.toctree-expand{color:#969696}.wy-menu-vertical li.toctree-l4{font-size:.9em}.wy-menu-vertical li.current ul{display:block}.wy-menu-vertical li ul{margin-bottom:0;display:none}.wy-menu-vertical li ul li a{margin-bottom:0;color:#b3b3b3;font-weight:normal}.wy-menu-vertical a{display:inline-block;line-height:18px;padding:.4045em 1.618em;display:block;position:relative;font-size:90%;color:#b3b3b3}.wy-menu-vertical a:hover{background-color:#4e4a4a;cursor:pointer}.wy-menu-vertical a:hover span.toctree-expand{color:#b3b3b3}.wy-menu-vertical a:active{background-color:#2980B9;cursor:pointer;color:#fff}.wy-menu-vertical a:active span.toctree-expand{color:#fff}.wy-side-nav-search{display:block;width:300px;padding:.809em;margin-bottom:.809em;z-index:200;background-color:#2980B9;text-align:center;padding:.809em;display:block;color:#fcfcfc;margin-bottom:.809em}.wy-side-nav-search input[type=text]{width:100%;border-radius:50px;padding:6px 12px;border-color:#2472a4}.wy-side-nav-search img{display:block;margin:auto auto .809em auto;height:45px;width:45px;background-color:#2980B9;padding:5px;border-radius:100%}.wy-side-nav-search>a,.wy-side-nav-search .wy-dropdown>a{color:#fcfcfc;font-size:100%;font-weight:bold;display:inline-block;padding:4px 6px;margin-bottom:.809em}.wy-side-nav-search>a:hover,.wy-side-nav-search .wy-dropdown>a:hover{background:rgba(255,255,255,0.1)}.wy-side-nav-search>a img.logo,.wy-side-nav-search .wy-dropdown>a img.logo{display:block;margin:0 auto;height:auto;width:auto;border-radius:0;max-width:100%;background:transparent}.wy-side-nav-search>a.icon img.logo,.wy-side-nav-search .wy-dropdown>a.icon img.logo{margin-top:.85em}.wy-side-nav-search>div.version{margin-top:-.4045em;margin-bottom:.809em;font-weight:normal;color:rgba(255,255,255,0.3)}.wy-nav .wy-menu-vertical header{color:#2980B9}.wy-nav .wy-menu-vertical a{color:#b3b3b3}.wy-nav .wy-menu-vertical a:hover{background-color:#2980B9;color:#fff}[data-menu-wrap]{-webkit-transition:all .2s ease-in;-moz-transition:all .2s ease-in;transition:all .2s ease-in;position:absolute;opacity:1;width:100%;opacity:0}[data-menu-wrap].move-center{left:0;right:auto;opacity:1}[data-menu-wrap].move-left{right:auto;left:-100%;opacity:0}[data-menu-wrap].move-right{right:-100%;left:auto;opacity:0}.wy-body-for-nav{background:#fcfcfc}.wy-grid-for-nav{position:absolute;width:100%;height:100%}.wy-nav-side{position:fixed;top:0;bottom:0;left:0;padding-bottom:2em;width:300px;overflow-x:hidden;overflow-y:hidden;min-height:100%;background:#343131;z-index:200}.wy-side-scroll{width:320px;position:relative;overflow-x:hidden;overflow-y:scroll;height:100%}.wy-nav-top{display:none;background:#2980B9;color:#fff;padding:.4045em .809em;position:relative;line-height:50px;text-align:center;font-size:100%;*zoom:1}.wy-nav-top:before,.wy-nav-top:after{display:table;content:""}.wy-nav-top:after{clear:both}.wy-nav-top a{color:#fff;font-weight:bold}.wy-nav-top img{margin-right:12px;height:45px;width:45px;background-color:#2980B9;padding:5px;border-radius:100%}.wy-nav-top i{font-size:30px;float:left;cursor:pointer;padding-top:inherit}.wy-nav-content-wrap{margin-left:300px;background:#fcfcfc;min-height:100%}.wy-nav-content{padding:1.618em 3.236em;height:100%;max-width:800px;margin:auto}.wy-body-mask{position:fixed;width:100%;height:100%;background:rgba(0,0,0,0.2);display:none;z-index:499}.wy-body-mask.on{display:block}footer{color:gray}footer p{margin-bottom:12px}footer span.commit code,footer span.commit .rst-content tt,.rst-content footer span.commit tt{padding:0px;font-family:Consolas,"Andale Mono WT","Andale Mono","Lucida Console","Lucida Sans Typewriter","DejaVu Sans Mono","Bitstream Vera Sans Mono","Liberation Mono","Nimbus Mono L",Monaco,"Courier New",Courier,monospace;font-size:1em;background:none;border:none;color:gray}.rst-footer-buttons{*zoom:1}.rst-footer-buttons:before,.rst-footer-buttons:after{width:100%}.rst-footer-buttons:before,.rst-footer-buttons:after{display:table;content:""}.rst-footer-buttons:after{clear:both}.rst-breadcrumbs-buttons{margin-top:12px;*zoom:1}.rst-breadcrumbs-buttons:before,.rst-breadcrumbs-buttons:after{display:table;content:""}.rst-breadcrumbs-buttons:after{clear:both}#search-results .search li{margin-bottom:24px;border-bottom:solid 1px #e1e4e5;padding-bottom:24px}#search-results .search li:first-child{border-top:solid 1px #e1e4e5;padding-top:24px}#search-results .search li a{font-size:120%;margin-bottom:12px;display:inline-block}#search-results .context{color:gray;font-size:90%}@media screen and (max-width: 768px){.wy-body-for-nav{background:#fcfcfc}.wy-nav-top{display:block}.wy-nav-side{left:-300px}.wy-nav-side.shift{width:85%;left:0}.wy-side-scroll{width:auto}.wy-side-nav-search{width:auto}.wy-menu.wy-menu-vertical{width:auto}.wy-nav-content-wrap{margin-left:0}.wy-nav-content-wrap .wy-nav-content{padding:1.618em}.wy-nav-content-wrap.shift{position:fixed;min-width:100%;left:85%;top:0;height:100%;overflow:hidden}}@media screen and (min-width: 1100px){.wy-nav-content-wrap{background:rgba(0,0,0,0.05)}.wy-nav-content{margin:0;background:#fcfcfc}}@media print{.rst-versions,footer,.wy-nav-side{display:none}.wy-nav-content-wrap{margin-left:0}}.rst-versions{position:fixed;bottom:0;left:0;overflow-y:scroll;width:300px;color:#fcfcfc;background:#1f1d1d;font-family:"Lato","proxima-nova","Helvetica Neue",Arial,sans-serif;z-index:400}.rst-versions a{color:#2980B9;text-decoration:none}.rst-versions .rst-badge-small{display:none}.rst-versions .rst-current-version{padding:12px;background-color:#272525;display:block;text-align:right;font-size:90%;cursor:pointer;color:#27AE60;*zoom:1}.rst-versions .rst-current-version:before,.rst-versions .rst-current-version:after{display:table;content:""}.rst-versions .rst-current-version:after{clear:both}.rst-versions .rst-current-version .fa,.rst-versions .rst-current-version .wy-menu-vertical li span.toctree-expand,.wy-menu-vertical li .rst-versions .rst-current-version span.toctree-expand,.rst-versions .rst-current-version .rst-content .admonition-title,.rst-content .rst-versions .rst-current-version .admonition-title,.rst-versions .rst-current-version .rst-content h1 .headerlink,.rst-content h1 .rst-versions .rst-current-version .headerlink,.rst-versions .rst-current-version .rst-content h2 .headerlink,.rst-content h2 .rst-versions .rst-current-version .headerlink,.rst-versions .rst-current-version .rst-content h3 .headerlink,.rst-content h3 .rst-versions .rst-current-version .headerlink,.rst-versions .rst-current-version .rst-content h4 .headerlink,.rst-content h4 .rst-versions .rst-current-version .headerlink,.rst-versions .rst-current-version .rst-content h5 .headerlink,.rst-content h5 .rst-versions .rst-current-version .headerlink,.rst-versions .rst-current-version .rst-content h6 .headerlink,.rst-content h6 .rst-versions .rst-current-version .headerlink,.rst-versions .rst-current-version .rst-content dl dt .headerlink,.rst-content dl dt .rst-versions .rst-current-version .headerlink,.rst-versions .rst-current-version .rst-content p.caption .headerlink,.rst-content p.caption .rst-versions .rst-current-version .headerlink,.rst-versions .rst-current-version .rst-content table>caption .headerlink,.rst-content table>caption .rst-versions .rst-current-version .headerlink,.rst-versions .rst-current-version .rst-content tt.download span:first-child,.rst-content tt.download .rst-versions .rst-current-version span:first-child,.rst-versions .rst-current-version .rst-content code.download span:first-child,.rst-content code.download .rst-versions .rst-current-version span:first-child,.rst-versions .rst-current-version .icon{color:#fcfcfc}.rst-versions .rst-current-version .fa-book,.rst-versions .rst-current-version .icon-book{float:left}.rst-versions .rst-current-version .icon-book{float:left}.rst-versions .rst-current-version.rst-out-of-date{background-color:#E74C3C;color:#fff}.rst-versions .rst-current-version.rst-active-old-version{background-color:#F1C40F;color:#000}.rst-versions.shift-up{max-height:100%}.rst-versions.shift-up .rst-other-versions{display:block}.rst-versions .rst-other-versions{font-size:90%;padding:12px;color:gray;display:none}.rst-versions .rst-other-versions hr{display:block;height:1px;border:0;margin:20px 0;padding:0;border-top:solid 1px #413d3d}.rst-versions .rst-other-versions dd{display:inline-block;margin:0}.rst-versions .rst-other-versions dd a{display:inline-block;padding:6px;color:#fcfcfc}.rst-versions.rst-badge{width:auto;bottom:20px;right:20px;left:auto;border:none;max-width:300px}.rst-versions.rst-badge .icon-book{float:none}.rst-versions.rst-badge .fa-book,.rst-versions.rst-badge .icon-book{float:none}.rst-versions.rst-badge.shift-up .rst-current-version{text-align:right}.rst-versions.rst-badge.shift-up .rst-current-version .fa-book,.rst-versions.rst-badge.shift-up .rst-current-version .icon-book{float:left}.rst-versions.rst-badge.shift-up .rst-current-version .icon-book{float:left}.rst-versions.rst-badge .rst-current-version{width:auto;height:30px;line-height:30px;padding:0 6px;display:block;text-align:center}@media screen and (max-width: 768px){.rst-versions{width:85%;display:none}.rst-versions.shift{display:block}}.rst-content img{max-width:100%;height:auto}.rst-content div.figure{margin-bottom:24px}.rst-content div.figure p.caption{font-style:italic}.rst-content div.figure p:last-child.caption{margin-bottom:0px}.rst-content div.figure.align-center{text-align:center}.rst-content .section>img,.rst-content .section>a>img{margin-bottom:24px}.rst-content abbr[title]{text-decoration:none}.rst-content.style-external-links a.reference.external:after{font-family:FontAwesome;content:"";color:#b3b3b3;vertical-align:super;font-size:60%;margin:0 .2em}.rst-content blockquote{margin-left:24px;line-height:24px;margin-bottom:24px}.rst-content pre.literal-block,.rst-content div[class^='highlight']{border:1px solid #e1e4e5;padding:0px;overflow-x:auto;margin:1px 0 24px 0}.rst-content pre.literal-block div[class^='highlight'],.rst-content div[class^='highlight'] div[class^='highlight']{border:none;margin:0}.rst-content div[class^='highlight'] td.code{width:100%}.rst-content .linenodiv pre{border-right:solid 1px #e6e9ea;margin:0;padding:12px 12px;font-family:Consolas,"Andale Mono WT","Andale Mono","Lucida Console","Lucida Sans Typewriter","DejaVu Sans Mono","Bitstream Vera Sans Mono","Liberation Mono","Nimbus Mono L",Monaco,"Courier New",Courier,monospace;user-select:none;pointer-events:none}.rst-content div[class^='highlight'] pre{white-space:pre;margin:0;padding:12px 12px;font-family:Consolas,"Andale Mono WT","Andale Mono","Lucida Console","Lucida Sans Typewriter","DejaVu Sans Mono","Bitstream Vera Sans Mono","Liberation Mono","Nimbus Mono L",Monaco,"Courier New",Courier,monospace;display:block;overflow:auto}.rst-content pre.literal-block,.rst-content div[class^='highlight'] pre,.rst-content .linenodiv pre{font-size:12px;line-height:normal}@media print{.rst-content .codeblock,.rst-content div[class^='highlight'],.rst-content div[class^='highlight'] pre{white-space:pre-wrap}}.rst-content .note .last,.rst-content .attention .last,.rst-content .caution .last,.rst-content .danger .last,.rst-content .error .last,.rst-content .hint .last,.rst-content .important .last,.rst-content .tip .last,.rst-content .warning .last,.rst-content .seealso .last,.rst-content .admonition-todo .last,.rst-content .admonition .last{margin-bottom:0}.rst-content .admonition-title:before{margin-right:4px}.rst-content .admonition table{border-color:rgba(0,0,0,0.1)}.rst-content .admonition table td,.rst-content .admonition table th{background:transparent !important;border-color:rgba(0,0,0,0.1) !important}.rst-content .section ol.loweralpha,.rst-content .section ol.loweralpha li{list-style:lower-alpha}.rst-content .section ol.upperalpha,.rst-content .section ol.upperalpha li{list-style:upper-alpha}.rst-content .section ol p,.rst-content .section ul p{margin-bottom:12px}.rst-content .line-block{margin-left:0px;margin-bottom:24px}.rst-content .line-block .line-block{margin-left:24px;margin-bottom:0px}.rst-content .topic-title{font-weight:bold;margin-bottom:12px}.rst-content .toc-backref{color:#404040}.rst-content .align-right{float:right;margin:0px 0px 24px 24px}.rst-content .align-left{float:left;margin:0px 24px 24px 0px}.rst-content .align-center{margin:auto;display:block}.rst-content h1 .headerlink,.rst-content h2 .headerlink,.rst-content .toctree-wrapper p.caption .headerlink,.rst-content h3 .headerlink,.rst-content h4 .headerlink,.rst-content h5 .headerlink,.rst-content h6 .headerlink,.rst-content dl dt .headerlink,.rst-content p.caption .headerlink,.rst-content table>caption .headerlink{visibility:hidden;font-size:14px}.rst-content h1 .headerlink:after,.rst-content h2 .headerlink:after,.rst-content .toctree-wrapper p.caption .headerlink:after,.rst-content h3 .headerlink:after,.rst-content h4 .headerlink:after,.rst-content h5 .headerlink:after,.rst-content h6 .headerlink:after,.rst-content dl dt .headerlink:after,.rst-content p.caption .headerlink:after,.rst-content table>caption .headerlink:after{content:"";font-family:FontAwesome}.rst-content h1:hover .headerlink:after,.rst-content h2:hover .headerlink:after,.rst-content .toctree-wrapper p.caption:hover .headerlink:after,.rst-content h3:hover .headerlink:after,.rst-content h4:hover .headerlink:after,.rst-content h5:hover .headerlink:after,.rst-content h6:hover .headerlink:after,.rst-content dl dt:hover .headerlink:after,.rst-content p.caption:hover .headerlink:after,.rst-content table>caption:hover .headerlink:after{visibility:visible}.rst-content table>caption .headerlink:after{font-size:12px}.rst-content .centered{text-align:center}.rst-content .sidebar{float:right;width:40%;display:block;margin:0 0 24px 24px;padding:24px;background:#f3f6f6;border:solid 1px #e1e4e5}.rst-content .sidebar p,.rst-content .sidebar ul,.rst-content .sidebar dl{font-size:90%}.rst-content .sidebar .last{margin-bottom:0}.rst-content .sidebar .sidebar-title{display:block;font-family:"Roboto Slab","ff-tisa-web-pro","Georgia",Arial,sans-serif;font-weight:bold;background:#e1e4e5;padding:6px 12px;margin:-24px;margin-bottom:24px;font-size:100%}.rst-content .highlighted{background:#F1C40F;display:inline-block;font-weight:bold;padding:0 6px}.rst-content .footnote-reference,.rst-content .citation-reference{vertical-align:baseline;position:relative;top:-0.4em;line-height:0;font-size:90%}.rst-content table.docutils.citation,.rst-content table.docutils.footnote{background:none;border:none;color:gray}.rst-content table.docutils.citation td,.rst-content table.docutils.citation tr,.rst-content table.docutils.footnote td,.rst-content table.docutils.footnote tr{border:none;background-color:transparent !important;white-space:normal}.rst-content table.docutils.citation td.label,.rst-content table.docutils.footnote td.label{padding-left:0;padding-right:0;vertical-align:top}.rst-content table.docutils.citation tt,.rst-content table.docutils.citation code,.rst-content table.docutils.footnote tt,.rst-content table.docutils.footnote code{color:#555}.rst-content .wy-table-responsive.citation,.rst-content .wy-table-responsive.footnote{margin-bottom:0}.rst-content .wy-table-responsive.citation+:not(.citation),.rst-content .wy-table-responsive.footnote+:not(.footnote){margin-top:24px}.rst-content .wy-table-responsive.citation:last-child,.rst-content .wy-table-responsive.footnote:last-child{margin-bottom:24px}.rst-content table.docutils th{border-color:#e1e4e5}.rst-content table.field-list{border:none}.rst-content table.field-list td{border:none}.rst-content table.field-list td>strong{display:inline-block}.rst-content table.field-list .field-name{padding-right:10px;text-align:left;white-space:nowrap}.rst-content table.field-list .field-body{text-align:left}.rst-content tt,.rst-content tt,.rst-content code{color:#000;padding:2px 5px}.rst-content tt big,.rst-content tt em,.rst-content tt big,.rst-content code big,.rst-content tt em,.rst-content code em{font-size:100% !important;line-height:normal}.rst-content tt.literal,.rst-content tt.literal,.rst-content code.literal{color:#E74C3C}.rst-content tt.xref,a .rst-content tt,.rst-content tt.xref,.rst-content code.xref,a .rst-content tt,a .rst-content code{font-weight:bold;color:#404040}.rst-content a tt,.rst-content a tt,.rst-content a code{color:#2980B9}.rst-content dl{margin-bottom:24px}.rst-content dl dt{font-weight:bold}.rst-content dl p,.rst-content dl table,.rst-content dl ul,.rst-content dl ol{margin-bottom:12px !important}.rst-content dl dd{margin:0 0 12px 24px}.rst-content dl:not(.docutils){margin-bottom:24px}.rst-content dl:not(.docutils) dt{display:table;margin:6px 0;font-size:90%;line-height:normal;background:#e7f2fa;color:#2980B9;border-top:solid 3px #6ab0de;padding:6px;position:relative}.rst-content dl:not(.docutils) dt:before{color:#6ab0de}.rst-content dl:not(.docutils) dt .headerlink{color:#404040;font-size:100% !important}.rst-content dl:not(.docutils) dl dt{margin-bottom:6px;border:none;border-left:solid 3px #ccc;background:#f0f0f0;color:#555}.rst-content dl:not(.docutils) dl dt .headerlink{color:#404040;font-size:100% !important}.rst-content dl:not(.docutils) dt:first-child{margin-top:0}.rst-content dl:not(.docutils) tt,.rst-content dl:not(.docutils) tt,.rst-content dl:not(.docutils) code{font-weight:bold}.rst-content dl:not(.docutils) tt.descname,.rst-content dl:not(.docutils) tt.descclassname,.rst-content dl:not(.docutils) tt.descname,.rst-content dl:not(.docutils) code.descname,.rst-content dl:not(.docutils) tt.descclassname,.rst-content dl:not(.docutils) code.descclassname{background-color:transparent;border:none;padding:0;font-size:100% !important}.rst-content dl:not(.docutils) tt.descname,.rst-content dl:not(.docutils) tt.descname,.rst-content dl:not(.docutils) code.descname{font-weight:bold}.rst-content dl:not(.docutils) .optional{display:inline-block;padding:0 4px;color:#000;font-weight:bold}.rst-content dl:not(.docutils) .property{display:inline-block;padding-right:8px}.rst-content .viewcode-link,.rst-content .viewcode-back{display:inline-block;color:#27AE60;font-size:80%;padding-left:24px}.rst-content .viewcode-back{display:block;float:right}.rst-content p.rubric{margin-bottom:12px;font-weight:bold}.rst-content tt.download,.rst-content code.download{background:inherit;padding:inherit;font-weight:normal;font-family:inherit;font-size:inherit;color:inherit;border:inherit;white-space:inherit}.rst-content tt.download span:first-child,.rst-content code.download span:first-child{-webkit-font-smoothing:subpixel-antialiased}.rst-content tt.download span:first-child:before,.rst-content code.download span:first-child:before{margin-right:4px}.rst-content .guilabel{border:1px solid #7fbbe3;background:#e7f2fa;font-size:80%;font-weight:700;border-radius:4px;padding:2.4px 6px;margin:auto 2px}.rst-content .versionmodified{font-style:italic}@media screen and (max-width: 480px){.rst-content .sidebar{width:100%}}span[id*='MathJax-Span']{color:#404040}.math{text-align:center}@font-face{font-family:"Inconsolata";font-style:normal;font-weight:400;src:local("Inconsolata"),local("Inconsolata-Regular"),url(../fonts/Inconsolata-Regular.ttf) format("truetype")}@font-face{font-family:"Inconsolata";font-style:normal;font-weight:700;src:local("Inconsolata Bold"),local("Inconsolata-Bold"),url(../fonts/Inconsolata-Bold.ttf) format("truetype")}@font-face{font-family:"Lato";font-style:normal;font-weight:400;src:local("Lato Regular"),local("Lato-Regular"),url(../fonts/Lato-Regular.ttf) format("truetype")}@font-face{font-family:"Lato";font-style:normal;font-weight:700;src:local("Lato Bold"),local("Lato-Bold"),url(../fonts/Lato-Bold.ttf) format("truetype")}@font-face{font-family:"Lato";font-style:italic;font-weight:400;src:local("Lato Italic"),local("Lato-Italic"),url(../fonts/Lato-Italic.ttf) format("truetype")}@font-face{font-family:"Lato";font-style:italic;font-weight:700;src:local("Lato Bold Italic"),local("Lato-BoldItalic"),url(../fonts/Lato-BoldItalic.ttf) format("truetype")}@font-face{font-family:"Roboto Slab";font-style:normal;font-weight:400;src:local("Roboto Slab Regular"),local("RobotoSlab-Regular"),url(../fonts/RobotoSlab-Regular.ttf) format("truetype")}@font-face{font-family:"Roboto Slab";font-style:normal;font-weight:700;src:local("Roboto Slab Bold"),local("RobotoSlab-Bold"),url(../fonts/RobotoSlab-Bold.ttf) format("truetype")} diff --git a/nsx/vmc_app/_static/doctools.js b/nsx/vmc_app/_static/doctools.js new file mode 100644 index 00000000..d8928926 --- /dev/null +++ b/nsx/vmc_app/_static/doctools.js @@ -0,0 +1,313 @@ +/* + * doctools.js + * ~~~~~~~~~~~ + * + * Sphinx JavaScript utilities for all documentation. + * + * :copyright: Copyright 2007-2018 by the Sphinx team, see AUTHORS. + * :license: BSD, see LICENSE for details. + * + */ + +/** + * select a different prefix for underscore + */ +$u = _.noConflict(); + +/** + * make the code below compatible with browsers without + * an installed firebug like debugger +if (!window.console || !console.firebug) { + var names = ["log", "debug", "info", "warn", "error", "assert", "dir", + "dirxml", "group", "groupEnd", "time", "timeEnd", "count", "trace", + "profile", "profileEnd"]; + window.console = {}; + for (var i = 0; i < names.length; ++i) + window.console[names[i]] = function() {}; +} + */ + +/** + * small helper function to urldecode strings + */ +jQuery.urldecode = function(x) { + return decodeURIComponent(x).replace(/\+/g, ' '); +}; + +/** + * small helper function to urlencode strings + */ +jQuery.urlencode = encodeURIComponent; + +/** + * This function returns the parsed url parameters of the + * current request. Multiple values per key are supported, + * it will always return arrays of strings for the value parts. + */ +jQuery.getQueryParameters = function(s) { + if (typeof s === 'undefined') + s = document.location.search; + var parts = s.substr(s.indexOf('?') + 1).split('&'); + var result = {}; + for (var i = 0; i < parts.length; i++) { + var tmp = parts[i].split('=', 2); + var key = jQuery.urldecode(tmp[0]); + var value = jQuery.urldecode(tmp[1]); + if (key in result) + result[key].push(value); + else + result[key] = [value]; + } + return result; +}; + +/** + * highlight a given string on a jquery object by wrapping it in + * span elements with the given class name. + */ +jQuery.fn.highlightText = function(text, className) { + function highlight(node, addItems) { + if (node.nodeType === 3) { + var val = node.nodeValue; + var pos = val.toLowerCase().indexOf(text); + if (pos >= 0 && + !jQuery(node.parentNode).hasClass(className) && + !jQuery(node.parentNode).hasClass("nohighlight")) { + var span; + var isInSVG = jQuery(node).closest("body, svg, foreignObject").is("svg"); + if (isInSVG) { + span = document.createElementNS("http://www.w3.org/2000/svg", "tspan"); + } else { + span = document.createElement("span"); + span.className = className; + } + span.appendChild(document.createTextNode(val.substr(pos, text.length))); + node.parentNode.insertBefore(span, node.parentNode.insertBefore( + document.createTextNode(val.substr(pos + text.length)), + node.nextSibling)); + node.nodeValue = val.substr(0, pos); + if (isInSVG) { + var bbox = span.getBBox(); + var rect = document.createElementNS("http://www.w3.org/2000/svg", "rect"); + rect.x.baseVal.value = bbox.x; + rect.y.baseVal.value = bbox.y; + rect.width.baseVal.value = bbox.width; + rect.height.baseVal.value = bbox.height; + rect.setAttribute('class', className); + var parentOfText = node.parentNode.parentNode; + addItems.push({ + "parent": node.parentNode, + "target": rect}); + } + } + } + else if (!jQuery(node).is("button, select, textarea")) { + jQuery.each(node.childNodes, function() { + highlight(this, addItems); + }); + } + } + var addItems = []; + var result = this.each(function() { + highlight(this, addItems); + }); + for (var i = 0; i < addItems.length; ++i) { + jQuery(addItems[i].parent).before(addItems[i].target); + } + return result; +}; + +/* + * backward compatibility for jQuery.browser + * This will be supported until firefox bug is fixed. + */ +if (!jQuery.browser) { + jQuery.uaMatch = function(ua) { + ua = ua.toLowerCase(); + + var match = /(chrome)[ \/]([\w.]+)/.exec(ua) || + /(webkit)[ \/]([\w.]+)/.exec(ua) || + /(opera)(?:.*version|)[ \/]([\w.]+)/.exec(ua) || + /(msie) ([\w.]+)/.exec(ua) || + ua.indexOf("compatible") < 0 && /(mozilla)(?:.*? rv:([\w.]+)|)/.exec(ua) || + []; + + return { + browser: match[ 1 ] || "", + version: match[ 2 ] || "0" + }; + }; + jQuery.browser = {}; + jQuery.browser[jQuery.uaMatch(navigator.userAgent).browser] = true; +} + +/** + * Small JavaScript module for the documentation. + */ +var Documentation = { + + init : function() { + this.fixFirefoxAnchorBug(); + this.highlightSearchWords(); + this.initIndexTable(); + + }, + + /** + * i18n support + */ + TRANSLATIONS : {}, + PLURAL_EXPR : function(n) { return n === 1 ? 0 : 1; }, + LOCALE : 'unknown', + + // gettext and ngettext don't access this so that the functions + // can safely bound to a different name (_ = Documentation.gettext) + gettext : function(string) { + var translated = Documentation.TRANSLATIONS[string]; + if (typeof translated === 'undefined') + return string; + return (typeof translated === 'string') ? translated : translated[0]; + }, + + ngettext : function(singular, plural, n) { + var translated = Documentation.TRANSLATIONS[singular]; + if (typeof translated === 'undefined') + return (n == 1) ? singular : plural; + return translated[Documentation.PLURALEXPR(n)]; + }, + + addTranslations : function(catalog) { + for (var key in catalog.messages) + this.TRANSLATIONS[key] = catalog.messages[key]; + this.PLURAL_EXPR = new Function('n', 'return +(' + catalog.plural_expr + ')'); + this.LOCALE = catalog.locale; + }, + + /** + * add context elements like header anchor links + */ + addContextElements : function() { + $('div[id] > :header:first').each(function() { + $('\u00B6'). + attr('href', '#' + this.id). + attr('title', _('Permalink to this headline')). + appendTo(this); + }); + $('dt[id]').each(function() { + $('\u00B6'). + attr('href', '#' + this.id). + attr('title', _('Permalink to this definition')). + appendTo(this); + }); + }, + + /** + * workaround a firefox stupidity + * see: https://bugzilla.mozilla.org/show_bug.cgi?id=645075 + */ + fixFirefoxAnchorBug : function() { + if (document.location.hash && $.browser.mozilla) + window.setTimeout(function() { + document.location.href += ''; + }, 10); + }, + + /** + * highlight the search words provided in the url in the text + */ + highlightSearchWords : function() { + var params = $.getQueryParameters(); + var terms = (params.highlight) ? params.highlight[0].split(/\s+/) : []; + if (terms.length) { + var body = $('div.body'); + if (!body.length) { + body = $('body'); + } + window.setTimeout(function() { + $.each(terms, function() { + body.highlightText(this.toLowerCase(), 'highlighted'); + }); + }, 10); + $('') + .appendTo($('#searchbox')); + } + }, + + /** + * init the domain index toggle buttons + */ + initIndexTable : function() { + var togglers = $('img.toggler').click(function() { + var src = $(this).attr('src'); + var idnum = $(this).attr('id').substr(7); + $('tr.cg-' + idnum).toggle(); + if (src.substr(-9) === 'minus.png') + $(this).attr('src', src.substr(0, src.length-9) + 'plus.png'); + else + $(this).attr('src', src.substr(0, src.length-8) + 'minus.png'); + }).css('display', ''); + if (DOCUMENTATION_OPTIONS.COLLAPSE_INDEX) { + togglers.click(); + } + }, + + /** + * helper function to hide the search marks again + */ + hideSearchWords : function() { + $('#searchbox .highlight-link').fadeOut(300); + $('span.highlighted').removeClass('highlighted'); + }, + + /** + * make the url absolute + */ + makeURL : function(relativeURL) { + return DOCUMENTATION_OPTIONS.URL_ROOT + '/' + relativeURL; + }, + + /** + * get the current relative url + */ + getCurrentURL : function() { + var path = document.location.pathname; + var parts = path.split(/\//); + $.each(DOCUMENTATION_OPTIONS.URL_ROOT.split(/\//), function() { + if (this === '..') + parts.pop(); + }); + var url = parts.join('/'); + return path.substring(url.lastIndexOf('/') + 1, path.length - 1); + }, + + initOnKeyListeners: function() { + $(document).keyup(function(event) { + var activeElementType = document.activeElement.tagName; + // don't navigate when in search box or textarea + if (activeElementType !== 'TEXTAREA' && activeElementType !== 'INPUT' && activeElementType !== 'SELECT') { + switch (event.keyCode) { + case 37: // left + var prevHref = $('link[rel="prev"]').prop('href'); + if (prevHref) { + window.location.href = prevHref; + return false; + } + case 39: // right + var nextHref = $('link[rel="next"]').prop('href'); + if (nextHref) { + window.location.href = nextHref; + return false; + } + } + } + }); + } +}; + +// quick alias for translations +_ = Documentation.gettext; + +$(document).ready(function() { + Documentation.init(); +}); \ No newline at end of file diff --git a/nsx/vmc_app/_static/documentation_options.js b/nsx/vmc_app/_static/documentation_options.js new file mode 100644 index 00000000..8ba230f5 --- /dev/null +++ b/nsx/vmc_app/_static/documentation_options.js @@ -0,0 +1,9 @@ +var DOCUMENTATION_OPTIONS = { + URL_ROOT: '', + VERSION: '2.2.0.0.0', + LANGUAGE: 'en', + COLLAPSE_INDEX: false, + FILE_SUFFIX: '.html', + HAS_SOURCE: true, + SOURCELINK_SUFFIX: '.txt' +}; \ No newline at end of file diff --git a/nsx/vmc_app/_static/down-pressed.png b/nsx/vmc_app/_static/down-pressed.png new file mode 100644 index 00000000..5756c8ca Binary files /dev/null and b/nsx/vmc_app/_static/down-pressed.png differ diff --git a/nsx/vmc_app/_static/down.png b/nsx/vmc_app/_static/down.png new file mode 100644 index 00000000..1b3bdad2 Binary files /dev/null and b/nsx/vmc_app/_static/down.png differ diff --git a/nsx/vmc_app/_static/file.png b/nsx/vmc_app/_static/file.png new file mode 100644 index 00000000..a858a410 Binary files /dev/null and b/nsx/vmc_app/_static/file.png differ diff --git a/nsx/vmc_app/_static/fonts/Inconsolata-Bold.ttf b/nsx/vmc_app/_static/fonts/Inconsolata-Bold.ttf new file mode 100644 index 00000000..9addc892 Binary files /dev/null and b/nsx/vmc_app/_static/fonts/Inconsolata-Bold.ttf differ diff --git a/nsx/vmc_app/_static/fonts/Inconsolata-Regular.ttf b/nsx/vmc_app/_static/fonts/Inconsolata-Regular.ttf new file mode 100644 index 00000000..592ccd20 Binary files /dev/null and b/nsx/vmc_app/_static/fonts/Inconsolata-Regular.ttf differ diff --git a/nsx/vmc_app/_static/fonts/Lato-Bold.ttf b/nsx/vmc_app/_static/fonts/Lato-Bold.ttf new file mode 100644 index 00000000..1d23c706 Binary files /dev/null and b/nsx/vmc_app/_static/fonts/Lato-Bold.ttf differ diff --git a/nsx/vmc_app/_static/fonts/Lato-BoldItalic.ttf b/nsx/vmc_app/_static/fonts/Lato-BoldItalic.ttf new file mode 100644 index 00000000..a3b8e332 Binary files /dev/null and b/nsx/vmc_app/_static/fonts/Lato-BoldItalic.ttf differ diff --git a/nsx/vmc_app/_static/fonts/Lato-Italic.ttf b/nsx/vmc_app/_static/fonts/Lato-Italic.ttf new file mode 100644 index 00000000..70a870f4 Binary files /dev/null and b/nsx/vmc_app/_static/fonts/Lato-Italic.ttf differ diff --git a/nsx/vmc_app/_static/fonts/Lato-Regular.ttf b/nsx/vmc_app/_static/fonts/Lato-Regular.ttf new file mode 100644 index 00000000..0f3d0f83 Binary files /dev/null and b/nsx/vmc_app/_static/fonts/Lato-Regular.ttf differ diff --git a/nsx/vmc_app/_static/fonts/RobotoSlab-Bold.ttf b/nsx/vmc_app/_static/fonts/RobotoSlab-Bold.ttf new file mode 100644 index 00000000..df5d1df2 Binary files /dev/null and b/nsx/vmc_app/_static/fonts/RobotoSlab-Bold.ttf differ diff --git a/nsx/vmc_app/_static/fonts/RobotoSlab-Regular.ttf b/nsx/vmc_app/_static/fonts/RobotoSlab-Regular.ttf new file mode 100644 index 00000000..eb52a790 Binary files /dev/null and b/nsx/vmc_app/_static/fonts/RobotoSlab-Regular.ttf differ diff --git a/nsx/vmc_app/_static/fonts/fontawesome-webfont.eot b/nsx/vmc_app/_static/fonts/fontawesome-webfont.eot new file mode 100644 index 00000000..e9f60ca9 Binary files /dev/null and b/nsx/vmc_app/_static/fonts/fontawesome-webfont.eot differ diff --git a/nsx/vmc_app/_static/fonts/fontawesome-webfont.svg b/nsx/vmc_app/_static/fonts/fontawesome-webfont.svg new file mode 100644 index 00000000..855c845e --- /dev/null +++ b/nsx/vmc_app/_static/fonts/fontawesome-webfont.svg @@ -0,0 +1,2671 @@ + + + + +Created by FontForge 20120731 at Mon Oct 24 17:37:40 2016 + By ,,, +Copyright Dave Gandy 2016. All rights reserved. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/nsx/vmc_app/_static/fonts/fontawesome-webfont.ttf b/nsx/vmc_app/_static/fonts/fontawesome-webfont.ttf new file mode 100644 index 00000000..35acda2f Binary files /dev/null and b/nsx/vmc_app/_static/fonts/fontawesome-webfont.ttf differ diff --git a/nsx/vmc_app/_static/fonts/fontawesome-webfont.woff b/nsx/vmc_app/_static/fonts/fontawesome-webfont.woff new file mode 100644 index 00000000..400014a4 Binary files /dev/null and b/nsx/vmc_app/_static/fonts/fontawesome-webfont.woff differ diff --git a/nsx/vmc_app/_static/fonts/fontawesome-webfont.woff2 b/nsx/vmc_app/_static/fonts/fontawesome-webfont.woff2 new file mode 100644 index 00000000..4d13fc60 Binary files /dev/null and b/nsx/vmc_app/_static/fonts/fontawesome-webfont.woff2 differ diff --git a/nsx/vmc_app/_static/jquery-3.2.1.js b/nsx/vmc_app/_static/jquery-3.2.1.js new file mode 100644 index 00000000..d2d8ca47 --- /dev/null +++ b/nsx/vmc_app/_static/jquery-3.2.1.js @@ -0,0 +1,10253 @@ +/*! + * jQuery JavaScript Library v3.2.1 + * https://jquery.com/ + * + * Includes Sizzle.js + * https://sizzlejs.com/ + * + * Copyright JS Foundation and other contributors + * Released under the MIT license + * https://jquery.org/license + * + * Date: 2017-03-20T18:59Z + */ +( function( global, factory ) { + + "use strict"; + + if ( typeof module === "object" && typeof module.exports === "object" ) { + + // For CommonJS and CommonJS-like environments where a proper `window` + // is present, execute the factory and get jQuery. + // For environments that do not have a `window` with a `document` + // (such as Node.js), expose a factory as module.exports. + // This accentuates the need for the creation of a real `window`. + // e.g. var jQuery = require("jquery")(window); + // See ticket #14549 for more info. + module.exports = global.document ? + factory( global, true ) : + function( w ) { + if ( !w.document ) { + throw new Error( "jQuery requires a window with a document" ); + } + return factory( w ); + }; + } else { + factory( global ); + } + +// Pass this if window is not defined yet +} )( typeof window !== "undefined" ? window : this, function( window, noGlobal ) { + +// Edge <= 12 - 13+, Firefox <=18 - 45+, IE 10 - 11, Safari 5.1 - 9+, iOS 6 - 9.1 +// throw exceptions when non-strict code (e.g., ASP.NET 4.5) accesses strict mode +// arguments.callee.caller (trac-13335). But as of jQuery 3.0 (2016), strict mode should be common +// enough that all such attempts are guarded in a try block. +"use strict"; + +var arr = []; + +var document = window.document; + +var getProto = Object.getPrototypeOf; + +var slice = arr.slice; + +var concat = arr.concat; + +var push = arr.push; + +var indexOf = arr.indexOf; + +var class2type = {}; + +var toString = class2type.toString; + +var hasOwn = class2type.hasOwnProperty; + +var fnToString = hasOwn.toString; + +var ObjectFunctionString = fnToString.call( Object ); + +var support = {}; + + + + function DOMEval( code, doc ) { + doc = doc || document; + + var script = doc.createElement( "script" ); + + script.text = code; + doc.head.appendChild( script ).parentNode.removeChild( script ); + } +/* global Symbol */ +// Defining this global in .eslintrc.json would create a danger of using the global +// unguarded in another place, it seems safer to define global only for this module + + + +var + version = "3.2.1", + + // Define a local copy of jQuery + jQuery = function( selector, context ) { + + // The jQuery object is actually just the init constructor 'enhanced' + // Need init if jQuery is called (just allow error to be thrown if not included) + return new jQuery.fn.init( selector, context ); + }, + + // Support: Android <=4.0 only + // Make sure we trim BOM and NBSP + rtrim = /^[\s\uFEFF\xA0]+|[\s\uFEFF\xA0]+$/g, + + // Matches dashed string for camelizing + rmsPrefix = /^-ms-/, + rdashAlpha = /-([a-z])/g, + + // Used by jQuery.camelCase as callback to replace() + fcamelCase = function( all, letter ) { + return letter.toUpperCase(); + }; + +jQuery.fn = jQuery.prototype = { + + // The current version of jQuery being used + jquery: version, + + constructor: jQuery, + + // The default length of a jQuery object is 0 + length: 0, + + toArray: function() { + return slice.call( this ); + }, + + // Get the Nth element in the matched element set OR + // Get the whole matched element set as a clean array + get: function( num ) { + + // Return all the elements in a clean array + if ( num == null ) { + return slice.call( this ); + } + + // Return just the one element from the set + return num < 0 ? this[ num + this.length ] : this[ num ]; + }, + + // Take an array of elements and push it onto the stack + // (returning the new matched element set) + pushStack: function( elems ) { + + // Build a new jQuery matched element set + var ret = jQuery.merge( this.constructor(), elems ); + + // Add the old object onto the stack (as a reference) + ret.prevObject = this; + + // Return the newly-formed element set + return ret; + }, + + // Execute a callback for every element in the matched set. + each: function( callback ) { + return jQuery.each( this, callback ); + }, + + map: function( callback ) { + return this.pushStack( jQuery.map( this, function( elem, i ) { + return callback.call( elem, i, elem ); + } ) ); + }, + + slice: function() { + return this.pushStack( slice.apply( this, arguments ) ); + }, + + first: function() { + return this.eq( 0 ); + }, + + last: function() { + return this.eq( -1 ); + }, + + eq: function( i ) { + var len = this.length, + j = +i + ( i < 0 ? len : 0 ); + return this.pushStack( j >= 0 && j < len ? [ this[ j ] ] : [] ); + }, + + end: function() { + return this.prevObject || this.constructor(); + }, + + // For internal use only. + // Behaves like an Array's method, not like a jQuery method. + push: push, + sort: arr.sort, + splice: arr.splice +}; + +jQuery.extend = jQuery.fn.extend = function() { + var options, name, src, copy, copyIsArray, clone, + target = arguments[ 0 ] || {}, + i = 1, + length = arguments.length, + deep = false; + + // Handle a deep copy situation + if ( typeof target === "boolean" ) { + deep = target; + + // Skip the boolean and the target + target = arguments[ i ] || {}; + i++; + } + + // Handle case when target is a string or something (possible in deep copy) + if ( typeof target !== "object" && !jQuery.isFunction( target ) ) { + target = {}; + } + + // Extend jQuery itself if only one argument is passed + if ( i === length ) { + target = this; + i--; + } + + for ( ; i < length; i++ ) { + + // Only deal with non-null/undefined values + if ( ( options = arguments[ i ] ) != null ) { + + // Extend the base object + for ( name in options ) { + src = target[ name ]; + copy = options[ name ]; + + // Prevent never-ending loop + if ( target === copy ) { + continue; + } + + // Recurse if we're merging plain objects or arrays + if ( deep && copy && ( jQuery.isPlainObject( copy ) || + ( copyIsArray = Array.isArray( copy ) ) ) ) { + + if ( copyIsArray ) { + copyIsArray = false; + clone = src && Array.isArray( src ) ? src : []; + + } else { + clone = src && jQuery.isPlainObject( src ) ? src : {}; + } + + // Never move original objects, clone them + target[ name ] = jQuery.extend( deep, clone, copy ); + + // Don't bring in undefined values + } else if ( copy !== undefined ) { + target[ name ] = copy; + } + } + } + } + + // Return the modified object + return target; +}; + +jQuery.extend( { + + // Unique for each copy of jQuery on the page + expando: "jQuery" + ( version + Math.random() ).replace( /\D/g, "" ), + + // Assume jQuery is ready without the ready module + isReady: true, + + error: function( msg ) { + throw new Error( msg ); + }, + + noop: function() {}, + + isFunction: function( obj ) { + return jQuery.type( obj ) === "function"; + }, + + isWindow: function( obj ) { + return obj != null && obj === obj.window; + }, + + isNumeric: function( obj ) { + + // As of jQuery 3.0, isNumeric is limited to + // strings and numbers (primitives or objects) + // that can be coerced to finite numbers (gh-2662) + var type = jQuery.type( obj ); + return ( type === "number" || type === "string" ) && + + // parseFloat NaNs numeric-cast false positives ("") + // ...but misinterprets leading-number strings, particularly hex literals ("0x...") + // subtraction forces infinities to NaN + !isNaN( obj - parseFloat( obj ) ); + }, + + isPlainObject: function( obj ) { + var proto, Ctor; + + // Detect obvious negatives + // Use toString instead of jQuery.type to catch host objects + if ( !obj || toString.call( obj ) !== "[object Object]" ) { + return false; + } + + proto = getProto( obj ); + + // Objects with no prototype (e.g., `Object.create( null )`) are plain + if ( !proto ) { + return true; + } + + // Objects with prototype are plain iff they were constructed by a global Object function + Ctor = hasOwn.call( proto, "constructor" ) && proto.constructor; + return typeof Ctor === "function" && fnToString.call( Ctor ) === ObjectFunctionString; + }, + + isEmptyObject: function( obj ) { + + /* eslint-disable no-unused-vars */ + // See https://github.com/eslint/eslint/issues/6125 + var name; + + for ( name in obj ) { + return false; + } + return true; + }, + + type: function( obj ) { + if ( obj == null ) { + return obj + ""; + } + + // Support: Android <=2.3 only (functionish RegExp) + return typeof obj === "object" || typeof obj === "function" ? + class2type[ toString.call( obj ) ] || "object" : + typeof obj; + }, + + // Evaluates a script in a global context + globalEval: function( code ) { + DOMEval( code ); + }, + + // Convert dashed to camelCase; used by the css and data modules + // Support: IE <=9 - 11, Edge 12 - 13 + // Microsoft forgot to hump their vendor prefix (#9572) + camelCase: function( string ) { + return string.replace( rmsPrefix, "ms-" ).replace( rdashAlpha, fcamelCase ); + }, + + each: function( obj, callback ) { + var length, i = 0; + + if ( isArrayLike( obj ) ) { + length = obj.length; + for ( ; i < length; i++ ) { + if ( callback.call( obj[ i ], i, obj[ i ] ) === false ) { + break; + } + } + } else { + for ( i in obj ) { + if ( callback.call( obj[ i ], i, obj[ i ] ) === false ) { + break; + } + } + } + + return obj; + }, + + // Support: Android <=4.0 only + trim: function( text ) { + return text == null ? + "" : + ( text + "" ).replace( rtrim, "" ); + }, + + // results is for internal usage only + makeArray: function( arr, results ) { + var ret = results || []; + + if ( arr != null ) { + if ( isArrayLike( Object( arr ) ) ) { + jQuery.merge( ret, + typeof arr === "string" ? + [ arr ] : arr + ); + } else { + push.call( ret, arr ); + } + } + + return ret; + }, + + inArray: function( elem, arr, i ) { + return arr == null ? -1 : indexOf.call( arr, elem, i ); + }, + + // Support: Android <=4.0 only, PhantomJS 1 only + // push.apply(_, arraylike) throws on ancient WebKit + merge: function( first, second ) { + var len = +second.length, + j = 0, + i = first.length; + + for ( ; j < len; j++ ) { + first[ i++ ] = second[ j ]; + } + + first.length = i; + + return first; + }, + + grep: function( elems, callback, invert ) { + var callbackInverse, + matches = [], + i = 0, + length = elems.length, + callbackExpect = !invert; + + // Go through the array, only saving the items + // that pass the validator function + for ( ; i < length; i++ ) { + callbackInverse = !callback( elems[ i ], i ); + if ( callbackInverse !== callbackExpect ) { + matches.push( elems[ i ] ); + } + } + + return matches; + }, + + // arg is for internal usage only + map: function( elems, callback, arg ) { + var length, value, + i = 0, + ret = []; + + // Go through the array, translating each of the items to their new values + if ( isArrayLike( elems ) ) { + length = elems.length; + for ( ; i < length; i++ ) { + value = callback( elems[ i ], i, arg ); + + if ( value != null ) { + ret.push( value ); + } + } + + // Go through every key on the object, + } else { + for ( i in elems ) { + value = callback( elems[ i ], i, arg ); + + if ( value != null ) { + ret.push( value ); + } + } + } + + // Flatten any nested arrays + return concat.apply( [], ret ); + }, + + // A global GUID counter for objects + guid: 1, + + // Bind a function to a context, optionally partially applying any + // arguments. + proxy: function( fn, context ) { + var tmp, args, proxy; + + if ( typeof context === "string" ) { + tmp = fn[ context ]; + context = fn; + fn = tmp; + } + + // Quick check to determine if target is callable, in the spec + // this throws a TypeError, but we will just return undefined. + if ( !jQuery.isFunction( fn ) ) { + return undefined; + } + + // Simulated bind + args = slice.call( arguments, 2 ); + proxy = function() { + return fn.apply( context || this, args.concat( slice.call( arguments ) ) ); + }; + + // Set the guid of unique handler to the same of original handler, so it can be removed + proxy.guid = fn.guid = fn.guid || jQuery.guid++; + + return proxy; + }, + + now: Date.now, + + // jQuery.support is not used in Core but other projects attach their + // properties to it so it needs to exist. + support: support +} ); + +if ( typeof Symbol === "function" ) { + jQuery.fn[ Symbol.iterator ] = arr[ Symbol.iterator ]; +} + +// Populate the class2type map +jQuery.each( "Boolean Number String Function Array Date RegExp Object Error Symbol".split( " " ), +function( i, name ) { + class2type[ "[object " + name + "]" ] = name.toLowerCase(); +} ); + +function isArrayLike( obj ) { + + // Support: real iOS 8.2 only (not reproducible in simulator) + // `in` check used to prevent JIT error (gh-2145) + // hasOwn isn't used here due to false negatives + // regarding Nodelist length in IE + var length = !!obj && "length" in obj && obj.length, + type = jQuery.type( obj ); + + if ( type === "function" || jQuery.isWindow( obj ) ) { + return false; + } + + return type === "array" || length === 0 || + typeof length === "number" && length > 0 && ( length - 1 ) in obj; +} +var Sizzle = +/*! + * Sizzle CSS Selector Engine v2.3.3 + * https://sizzlejs.com/ + * + * Copyright jQuery Foundation and other contributors + * Released under the MIT license + * http://jquery.org/license + * + * Date: 2016-08-08 + */ +(function( window ) { + +var i, + support, + Expr, + getText, + isXML, + tokenize, + compile, + select, + outermostContext, + sortInput, + hasDuplicate, + + // Local document vars + setDocument, + document, + docElem, + documentIsHTML, + rbuggyQSA, + rbuggyMatches, + matches, + contains, + + // Instance-specific data + expando = "sizzle" + 1 * new Date(), + preferredDoc = window.document, + dirruns = 0, + done = 0, + classCache = createCache(), + tokenCache = createCache(), + compilerCache = createCache(), + sortOrder = function( a, b ) { + if ( a === b ) { + hasDuplicate = true; + } + return 0; + }, + + // Instance methods + hasOwn = ({}).hasOwnProperty, + arr = [], + pop = arr.pop, + push_native = arr.push, + push = arr.push, + slice = arr.slice, + // Use a stripped-down indexOf as it's faster than native + // https://jsperf.com/thor-indexof-vs-for/5 + indexOf = function( list, elem ) { + var i = 0, + len = list.length; + for ( ; i < len; i++ ) { + if ( list[i] === elem ) { + return i; + } + } + return -1; + }, + + booleans = "checked|selected|async|autofocus|autoplay|controls|defer|disabled|hidden|ismap|loop|multiple|open|readonly|required|scoped", + + // Regular expressions + + // http://www.w3.org/TR/css3-selectors/#whitespace + whitespace = "[\\x20\\t\\r\\n\\f]", + + // http://www.w3.org/TR/CSS21/syndata.html#value-def-identifier + identifier = "(?:\\\\.|[\\w-]|[^\0-\\xa0])+", + + // Attribute selectors: http://www.w3.org/TR/selectors/#attribute-selectors + attributes = "\\[" + whitespace + "*(" + identifier + ")(?:" + whitespace + + // Operator (capture 2) + "*([*^$|!~]?=)" + whitespace + + // "Attribute values must be CSS identifiers [capture 5] or strings [capture 3 or capture 4]" + "*(?:'((?:\\\\.|[^\\\\'])*)'|\"((?:\\\\.|[^\\\\\"])*)\"|(" + identifier + "))|)" + whitespace + + "*\\]", + + pseudos = ":(" + identifier + ")(?:\\((" + + // To reduce the number of selectors needing tokenize in the preFilter, prefer arguments: + // 1. quoted (capture 3; capture 4 or capture 5) + "('((?:\\\\.|[^\\\\'])*)'|\"((?:\\\\.|[^\\\\\"])*)\")|" + + // 2. simple (capture 6) + "((?:\\\\.|[^\\\\()[\\]]|" + attributes + ")*)|" + + // 3. anything else (capture 2) + ".*" + + ")\\)|)", + + // Leading and non-escaped trailing whitespace, capturing some non-whitespace characters preceding the latter + rwhitespace = new RegExp( whitespace + "+", "g" ), + rtrim = new RegExp( "^" + whitespace + "+|((?:^|[^\\\\])(?:\\\\.)*)" + whitespace + "+$", "g" ), + + rcomma = new RegExp( "^" + whitespace + "*," + whitespace + "*" ), + rcombinators = new RegExp( "^" + whitespace + "*([>+~]|" + whitespace + ")" + whitespace + "*" ), + + rattributeQuotes = new RegExp( "=" + whitespace + "*([^\\]'\"]*?)" + whitespace + "*\\]", "g" ), + + rpseudo = new RegExp( pseudos ), + ridentifier = new RegExp( "^" + identifier + "$" ), + + matchExpr = { + "ID": new RegExp( "^#(" + identifier + ")" ), + "CLASS": new RegExp( "^\\.(" + identifier + ")" ), + "TAG": new RegExp( "^(" + identifier + "|[*])" ), + "ATTR": new RegExp( "^" + attributes ), + "PSEUDO": new RegExp( "^" + pseudos ), + "CHILD": new RegExp( "^:(only|first|last|nth|nth-last)-(child|of-type)(?:\\(" + whitespace + + "*(even|odd|(([+-]|)(\\d*)n|)" + whitespace + "*(?:([+-]|)" + whitespace + + "*(\\d+)|))" + whitespace + "*\\)|)", "i" ), + "bool": new RegExp( "^(?:" + booleans + ")$", "i" ), + // For use in libraries implementing .is() + // We use this for POS matching in `select` + "needsContext": new RegExp( "^" + whitespace + "*[>+~]|:(even|odd|eq|gt|lt|nth|first|last)(?:\\(" + + whitespace + "*((?:-\\d)?\\d*)" + whitespace + "*\\)|)(?=[^-]|$)", "i" ) + }, + + rinputs = /^(?:input|select|textarea|button)$/i, + rheader = /^h\d$/i, + + rnative = /^[^{]+\{\s*\[native \w/, + + // Easily-parseable/retrievable ID or TAG or CLASS selectors + rquickExpr = /^(?:#([\w-]+)|(\w+)|\.([\w-]+))$/, + + rsibling = /[+~]/, + + // CSS escapes + // http://www.w3.org/TR/CSS21/syndata.html#escaped-characters + runescape = new RegExp( "\\\\([\\da-f]{1,6}" + whitespace + "?|(" + whitespace + ")|.)", "ig" ), + funescape = function( _, escaped, escapedWhitespace ) { + var high = "0x" + escaped - 0x10000; + // NaN means non-codepoint + // Support: Firefox<24 + // Workaround erroneous numeric interpretation of +"0x" + return high !== high || escapedWhitespace ? + escaped : + high < 0 ? + // BMP codepoint + String.fromCharCode( high + 0x10000 ) : + // Supplemental Plane codepoint (surrogate pair) + String.fromCharCode( high >> 10 | 0xD800, high & 0x3FF | 0xDC00 ); + }, + + // CSS string/identifier serialization + // https://drafts.csswg.org/cssom/#common-serializing-idioms + rcssescape = /([\0-\x1f\x7f]|^-?\d)|^-$|[^\0-\x1f\x7f-\uFFFF\w-]/g, + fcssescape = function( ch, asCodePoint ) { + if ( asCodePoint ) { + + // U+0000 NULL becomes U+FFFD REPLACEMENT CHARACTER + if ( ch === "\0" ) { + return "\uFFFD"; + } + + // Control characters and (dependent upon position) numbers get escaped as code points + return ch.slice( 0, -1 ) + "\\" + ch.charCodeAt( ch.length - 1 ).toString( 16 ) + " "; + } + + // Other potentially-special ASCII characters get backslash-escaped + return "\\" + ch; + }, + + // Used for iframes + // See setDocument() + // Removing the function wrapper causes a "Permission Denied" + // error in IE + unloadHandler = function() { + setDocument(); + }, + + disabledAncestor = addCombinator( + function( elem ) { + return elem.disabled === true && ("form" in elem || "label" in elem); + }, + { dir: "parentNode", next: "legend" } + ); + +// Optimize for push.apply( _, NodeList ) +try { + push.apply( + (arr = slice.call( preferredDoc.childNodes )), + preferredDoc.childNodes + ); + // Support: Android<4.0 + // Detect silently failing push.apply + arr[ preferredDoc.childNodes.length ].nodeType; +} catch ( e ) { + push = { apply: arr.length ? + + // Leverage slice if possible + function( target, els ) { + push_native.apply( target, slice.call(els) ); + } : + + // Support: IE<9 + // Otherwise append directly + function( target, els ) { + var j = target.length, + i = 0; + // Can't trust NodeList.length + while ( (target[j++] = els[i++]) ) {} + target.length = j - 1; + } + }; +} + +function Sizzle( selector, context, results, seed ) { + var m, i, elem, nid, match, groups, newSelector, + newContext = context && context.ownerDocument, + + // nodeType defaults to 9, since context defaults to document + nodeType = context ? context.nodeType : 9; + + results = results || []; + + // Return early from calls with invalid selector or context + if ( typeof selector !== "string" || !selector || + nodeType !== 1 && nodeType !== 9 && nodeType !== 11 ) { + + return results; + } + + // Try to shortcut find operations (as opposed to filters) in HTML documents + if ( !seed ) { + + if ( ( context ? context.ownerDocument || context : preferredDoc ) !== document ) { + setDocument( context ); + } + context = context || document; + + if ( documentIsHTML ) { + + // If the selector is sufficiently simple, try using a "get*By*" DOM method + // (excepting DocumentFragment context, where the methods don't exist) + if ( nodeType !== 11 && (match = rquickExpr.exec( selector )) ) { + + // ID selector + if ( (m = match[1]) ) { + + // Document context + if ( nodeType === 9 ) { + if ( (elem = context.getElementById( m )) ) { + + // Support: IE, Opera, Webkit + // TODO: identify versions + // getElementById can match elements by name instead of ID + if ( elem.id === m ) { + results.push( elem ); + return results; + } + } else { + return results; + } + + // Element context + } else { + + // Support: IE, Opera, Webkit + // TODO: identify versions + // getElementById can match elements by name instead of ID + if ( newContext && (elem = newContext.getElementById( m )) && + contains( context, elem ) && + elem.id === m ) { + + results.push( elem ); + return results; + } + } + + // Type selector + } else if ( match[2] ) { + push.apply( results, context.getElementsByTagName( selector ) ); + return results; + + // Class selector + } else if ( (m = match[3]) && support.getElementsByClassName && + context.getElementsByClassName ) { + + push.apply( results, context.getElementsByClassName( m ) ); + return results; + } + } + + // Take advantage of querySelectorAll + if ( support.qsa && + !compilerCache[ selector + " " ] && + (!rbuggyQSA || !rbuggyQSA.test( selector )) ) { + + if ( nodeType !== 1 ) { + newContext = context; + newSelector = selector; + + // qSA looks outside Element context, which is not what we want + // Thanks to Andrew Dupont for this workaround technique + // Support: IE <=8 + // Exclude object elements + } else if ( context.nodeName.toLowerCase() !== "object" ) { + + // Capture the context ID, setting it first if necessary + if ( (nid = context.getAttribute( "id" )) ) { + nid = nid.replace( rcssescape, fcssescape ); + } else { + context.setAttribute( "id", (nid = expando) ); + } + + // Prefix every selector in the list + groups = tokenize( selector ); + i = groups.length; + while ( i-- ) { + groups[i] = "#" + nid + " " + toSelector( groups[i] ); + } + newSelector = groups.join( "," ); + + // Expand context for sibling selectors + newContext = rsibling.test( selector ) && testContext( context.parentNode ) || + context; + } + + if ( newSelector ) { + try { + push.apply( results, + newContext.querySelectorAll( newSelector ) + ); + return results; + } catch ( qsaError ) { + } finally { + if ( nid === expando ) { + context.removeAttribute( "id" ); + } + } + } + } + } + } + + // All others + return select( selector.replace( rtrim, "$1" ), context, results, seed ); +} + +/** + * Create key-value caches of limited size + * @returns {function(string, object)} Returns the Object data after storing it on itself with + * property name the (space-suffixed) string and (if the cache is larger than Expr.cacheLength) + * deleting the oldest entry + */ +function createCache() { + var keys = []; + + function cache( key, value ) { + // Use (key + " ") to avoid collision with native prototype properties (see Issue #157) + if ( keys.push( key + " " ) > Expr.cacheLength ) { + // Only keep the most recent entries + delete cache[ keys.shift() ]; + } + return (cache[ key + " " ] = value); + } + return cache; +} + +/** + * Mark a function for special use by Sizzle + * @param {Function} fn The function to mark + */ +function markFunction( fn ) { + fn[ expando ] = true; + return fn; +} + +/** + * Support testing using an element + * @param {Function} fn Passed the created element and returns a boolean result + */ +function assert( fn ) { + var el = document.createElement("fieldset"); + + try { + return !!fn( el ); + } catch (e) { + return false; + } finally { + // Remove from its parent by default + if ( el.parentNode ) { + el.parentNode.removeChild( el ); + } + // release memory in IE + el = null; + } +} + +/** + * Adds the same handler for all of the specified attrs + * @param {String} attrs Pipe-separated list of attributes + * @param {Function} handler The method that will be applied + */ +function addHandle( attrs, handler ) { + var arr = attrs.split("|"), + i = arr.length; + + while ( i-- ) { + Expr.attrHandle[ arr[i] ] = handler; + } +} + +/** + * Checks document order of two siblings + * @param {Element} a + * @param {Element} b + * @returns {Number} Returns less than 0 if a precedes b, greater than 0 if a follows b + */ +function siblingCheck( a, b ) { + var cur = b && a, + diff = cur && a.nodeType === 1 && b.nodeType === 1 && + a.sourceIndex - b.sourceIndex; + + // Use IE sourceIndex if available on both nodes + if ( diff ) { + return diff; + } + + // Check if b follows a + if ( cur ) { + while ( (cur = cur.nextSibling) ) { + if ( cur === b ) { + return -1; + } + } + } + + return a ? 1 : -1; +} + +/** + * Returns a function to use in pseudos for input types + * @param {String} type + */ +function createInputPseudo( type ) { + return function( elem ) { + var name = elem.nodeName.toLowerCase(); + return name === "input" && elem.type === type; + }; +} + +/** + * Returns a function to use in pseudos for buttons + * @param {String} type + */ +function createButtonPseudo( type ) { + return function( elem ) { + var name = elem.nodeName.toLowerCase(); + return (name === "input" || name === "button") && elem.type === type; + }; +} + +/** + * Returns a function to use in pseudos for :enabled/:disabled + * @param {Boolean} disabled true for :disabled; false for :enabled + */ +function createDisabledPseudo( disabled ) { + + // Known :disabled false positives: fieldset[disabled] > legend:nth-of-type(n+2) :can-disable + return function( elem ) { + + // Only certain elements can match :enabled or :disabled + // https://html.spec.whatwg.org/multipage/scripting.html#selector-enabled + // https://html.spec.whatwg.org/multipage/scripting.html#selector-disabled + if ( "form" in elem ) { + + // Check for inherited disabledness on relevant non-disabled elements: + // * listed form-associated elements in a disabled fieldset + // https://html.spec.whatwg.org/multipage/forms.html#category-listed + // https://html.spec.whatwg.org/multipage/forms.html#concept-fe-disabled + // * option elements in a disabled optgroup + // https://html.spec.whatwg.org/multipage/forms.html#concept-option-disabled + // All such elements have a "form" property. + if ( elem.parentNode && elem.disabled === false ) { + + // Option elements defer to a parent optgroup if present + if ( "label" in elem ) { + if ( "label" in elem.parentNode ) { + return elem.parentNode.disabled === disabled; + } else { + return elem.disabled === disabled; + } + } + + // Support: IE 6 - 11 + // Use the isDisabled shortcut property to check for disabled fieldset ancestors + return elem.isDisabled === disabled || + + // Where there is no isDisabled, check manually + /* jshint -W018 */ + elem.isDisabled !== !disabled && + disabledAncestor( elem ) === disabled; + } + + return elem.disabled === disabled; + + // Try to winnow out elements that can't be disabled before trusting the disabled property. + // Some victims get caught in our net (label, legend, menu, track), but it shouldn't + // even exist on them, let alone have a boolean value. + } else if ( "label" in elem ) { + return elem.disabled === disabled; + } + + // Remaining elements are neither :enabled nor :disabled + return false; + }; +} + +/** + * Returns a function to use in pseudos for positionals + * @param {Function} fn + */ +function createPositionalPseudo( fn ) { + return markFunction(function( argument ) { + argument = +argument; + return markFunction(function( seed, matches ) { + var j, + matchIndexes = fn( [], seed.length, argument ), + i = matchIndexes.length; + + // Match elements found at the specified indexes + while ( i-- ) { + if ( seed[ (j = matchIndexes[i]) ] ) { + seed[j] = !(matches[j] = seed[j]); + } + } + }); + }); +} + +/** + * Checks a node for validity as a Sizzle context + * @param {Element|Object=} context + * @returns {Element|Object|Boolean} The input node if acceptable, otherwise a falsy value + */ +function testContext( context ) { + return context && typeof context.getElementsByTagName !== "undefined" && context; +} + +// Expose support vars for convenience +support = Sizzle.support = {}; + +/** + * Detects XML nodes + * @param {Element|Object} elem An element or a document + * @returns {Boolean} True iff elem is a non-HTML XML node + */ +isXML = Sizzle.isXML = function( elem ) { + // documentElement is verified for cases where it doesn't yet exist + // (such as loading iframes in IE - #4833) + var documentElement = elem && (elem.ownerDocument || elem).documentElement; + return documentElement ? documentElement.nodeName !== "HTML" : false; +}; + +/** + * Sets document-related variables once based on the current document + * @param {Element|Object} [doc] An element or document object to use to set the document + * @returns {Object} Returns the current document + */ +setDocument = Sizzle.setDocument = function( node ) { + var hasCompare, subWindow, + doc = node ? node.ownerDocument || node : preferredDoc; + + // Return early if doc is invalid or already selected + if ( doc === document || doc.nodeType !== 9 || !doc.documentElement ) { + return document; + } + + // Update global variables + document = doc; + docElem = document.documentElement; + documentIsHTML = !isXML( document ); + + // Support: IE 9-11, Edge + // Accessing iframe documents after unload throws "permission denied" errors (jQuery #13936) + if ( preferredDoc !== document && + (subWindow = document.defaultView) && subWindow.top !== subWindow ) { + + // Support: IE 11, Edge + if ( subWindow.addEventListener ) { + subWindow.addEventListener( "unload", unloadHandler, false ); + + // Support: IE 9 - 10 only + } else if ( subWindow.attachEvent ) { + subWindow.attachEvent( "onunload", unloadHandler ); + } + } + + /* Attributes + ---------------------------------------------------------------------- */ + + // Support: IE<8 + // Verify that getAttribute really returns attributes and not properties + // (excepting IE8 booleans) + support.attributes = assert(function( el ) { + el.className = "i"; + return !el.getAttribute("className"); + }); + + /* getElement(s)By* + ---------------------------------------------------------------------- */ + + // Check if getElementsByTagName("*") returns only elements + support.getElementsByTagName = assert(function( el ) { + el.appendChild( document.createComment("") ); + return !el.getElementsByTagName("*").length; + }); + + // Support: IE<9 + support.getElementsByClassName = rnative.test( document.getElementsByClassName ); + + // Support: IE<10 + // Check if getElementById returns elements by name + // The broken getElementById methods don't pick up programmatically-set names, + // so use a roundabout getElementsByName test + support.getById = assert(function( el ) { + docElem.appendChild( el ).id = expando; + return !document.getElementsByName || !document.getElementsByName( expando ).length; + }); + + // ID filter and find + if ( support.getById ) { + Expr.filter["ID"] = function( id ) { + var attrId = id.replace( runescape, funescape ); + return function( elem ) { + return elem.getAttribute("id") === attrId; + }; + }; + Expr.find["ID"] = function( id, context ) { + if ( typeof context.getElementById !== "undefined" && documentIsHTML ) { + var elem = context.getElementById( id ); + return elem ? [ elem ] : []; + } + }; + } else { + Expr.filter["ID"] = function( id ) { + var attrId = id.replace( runescape, funescape ); + return function( elem ) { + var node = typeof elem.getAttributeNode !== "undefined" && + elem.getAttributeNode("id"); + return node && node.value === attrId; + }; + }; + + // Support: IE 6 - 7 only + // getElementById is not reliable as a find shortcut + Expr.find["ID"] = function( id, context ) { + if ( typeof context.getElementById !== "undefined" && documentIsHTML ) { + var node, i, elems, + elem = context.getElementById( id ); + + if ( elem ) { + + // Verify the id attribute + node = elem.getAttributeNode("id"); + if ( node && node.value === id ) { + return [ elem ]; + } + + // Fall back on getElementsByName + elems = context.getElementsByName( id ); + i = 0; + while ( (elem = elems[i++]) ) { + node = elem.getAttributeNode("id"); + if ( node && node.value === id ) { + return [ elem ]; + } + } + } + + return []; + } + }; + } + + // Tag + Expr.find["TAG"] = support.getElementsByTagName ? + function( tag, context ) { + if ( typeof context.getElementsByTagName !== "undefined" ) { + return context.getElementsByTagName( tag ); + + // DocumentFragment nodes don't have gEBTN + } else if ( support.qsa ) { + return context.querySelectorAll( tag ); + } + } : + + function( tag, context ) { + var elem, + tmp = [], + i = 0, + // By happy coincidence, a (broken) gEBTN appears on DocumentFragment nodes too + results = context.getElementsByTagName( tag ); + + // Filter out possible comments + if ( tag === "*" ) { + while ( (elem = results[i++]) ) { + if ( elem.nodeType === 1 ) { + tmp.push( elem ); + } + } + + return tmp; + } + return results; + }; + + // Class + Expr.find["CLASS"] = support.getElementsByClassName && function( className, context ) { + if ( typeof context.getElementsByClassName !== "undefined" && documentIsHTML ) { + return context.getElementsByClassName( className ); + } + }; + + /* QSA/matchesSelector + ---------------------------------------------------------------------- */ + + // QSA and matchesSelector support + + // matchesSelector(:active) reports false when true (IE9/Opera 11.5) + rbuggyMatches = []; + + // qSa(:focus) reports false when true (Chrome 21) + // We allow this because of a bug in IE8/9 that throws an error + // whenever `document.activeElement` is accessed on an iframe + // So, we allow :focus to pass through QSA all the time to avoid the IE error + // See https://bugs.jquery.com/ticket/13378 + rbuggyQSA = []; + + if ( (support.qsa = rnative.test( document.querySelectorAll )) ) { + // Build QSA regex + // Regex strategy adopted from Diego Perini + assert(function( el ) { + // Select is set to empty string on purpose + // This is to test IE's treatment of not explicitly + // setting a boolean content attribute, + // since its presence should be enough + // https://bugs.jquery.com/ticket/12359 + docElem.appendChild( el ).innerHTML = "" + + ""; + + // Support: IE8, Opera 11-12.16 + // Nothing should be selected when empty strings follow ^= or $= or *= + // The test attribute must be unknown in Opera but "safe" for WinRT + // https://msdn.microsoft.com/en-us/library/ie/hh465388.aspx#attribute_section + if ( el.querySelectorAll("[msallowcapture^='']").length ) { + rbuggyQSA.push( "[*^$]=" + whitespace + "*(?:''|\"\")" ); + } + + // Support: IE8 + // Boolean attributes and "value" are not treated correctly + if ( !el.querySelectorAll("[selected]").length ) { + rbuggyQSA.push( "\\[" + whitespace + "*(?:value|" + booleans + ")" ); + } + + // Support: Chrome<29, Android<4.4, Safari<7.0+, iOS<7.0+, PhantomJS<1.9.8+ + if ( !el.querySelectorAll( "[id~=" + expando + "-]" ).length ) { + rbuggyQSA.push("~="); + } + + // Webkit/Opera - :checked should return selected option elements + // http://www.w3.org/TR/2011/REC-css3-selectors-20110929/#checked + // IE8 throws error here and will not see later tests + if ( !el.querySelectorAll(":checked").length ) { + rbuggyQSA.push(":checked"); + } + + // Support: Safari 8+, iOS 8+ + // https://bugs.webkit.org/show_bug.cgi?id=136851 + // In-page `selector#id sibling-combinator selector` fails + if ( !el.querySelectorAll( "a#" + expando + "+*" ).length ) { + rbuggyQSA.push(".#.+[+~]"); + } + }); + + assert(function( el ) { + el.innerHTML = "" + + ""; + + // Support: Windows 8 Native Apps + // The type and name attributes are restricted during .innerHTML assignment + var input = document.createElement("input"); + input.setAttribute( "type", "hidden" ); + el.appendChild( input ).setAttribute( "name", "D" ); + + // Support: IE8 + // Enforce case-sensitivity of name attribute + if ( el.querySelectorAll("[name=d]").length ) { + rbuggyQSA.push( "name" + whitespace + "*[*^$|!~]?=" ); + } + + // FF 3.5 - :enabled/:disabled and hidden elements (hidden elements are still enabled) + // IE8 throws error here and will not see later tests + if ( el.querySelectorAll(":enabled").length !== 2 ) { + rbuggyQSA.push( ":enabled", ":disabled" ); + } + + // Support: IE9-11+ + // IE's :disabled selector does not pick up the children of disabled fieldsets + docElem.appendChild( el ).disabled = true; + if ( el.querySelectorAll(":disabled").length !== 2 ) { + rbuggyQSA.push( ":enabled", ":disabled" ); + } + + // Opera 10-11 does not throw on post-comma invalid pseudos + el.querySelectorAll("*,:x"); + rbuggyQSA.push(",.*:"); + }); + } + + if ( (support.matchesSelector = rnative.test( (matches = docElem.matches || + docElem.webkitMatchesSelector || + docElem.mozMatchesSelector || + docElem.oMatchesSelector || + docElem.msMatchesSelector) )) ) { + + assert(function( el ) { + // Check to see if it's possible to do matchesSelector + // on a disconnected node (IE 9) + support.disconnectedMatch = matches.call( el, "*" ); + + // This should fail with an exception + // Gecko does not error, returns false instead + matches.call( el, "[s!='']:x" ); + rbuggyMatches.push( "!=", pseudos ); + }); + } + + rbuggyQSA = rbuggyQSA.length && new RegExp( rbuggyQSA.join("|") ); + rbuggyMatches = rbuggyMatches.length && new RegExp( rbuggyMatches.join("|") ); + + /* Contains + ---------------------------------------------------------------------- */ + hasCompare = rnative.test( docElem.compareDocumentPosition ); + + // Element contains another + // Purposefully self-exclusive + // As in, an element does not contain itself + contains = hasCompare || rnative.test( docElem.contains ) ? + function( a, b ) { + var adown = a.nodeType === 9 ? a.documentElement : a, + bup = b && b.parentNode; + return a === bup || !!( bup && bup.nodeType === 1 && ( + adown.contains ? + adown.contains( bup ) : + a.compareDocumentPosition && a.compareDocumentPosition( bup ) & 16 + )); + } : + function( a, b ) { + if ( b ) { + while ( (b = b.parentNode) ) { + if ( b === a ) { + return true; + } + } + } + return false; + }; + + /* Sorting + ---------------------------------------------------------------------- */ + + // Document order sorting + sortOrder = hasCompare ? + function( a, b ) { + + // Flag for duplicate removal + if ( a === b ) { + hasDuplicate = true; + return 0; + } + + // Sort on method existence if only one input has compareDocumentPosition + var compare = !a.compareDocumentPosition - !b.compareDocumentPosition; + if ( compare ) { + return compare; + } + + // Calculate position if both inputs belong to the same document + compare = ( a.ownerDocument || a ) === ( b.ownerDocument || b ) ? + a.compareDocumentPosition( b ) : + + // Otherwise we know they are disconnected + 1; + + // Disconnected nodes + if ( compare & 1 || + (!support.sortDetached && b.compareDocumentPosition( a ) === compare) ) { + + // Choose the first element that is related to our preferred document + if ( a === document || a.ownerDocument === preferredDoc && contains(preferredDoc, a) ) { + return -1; + } + if ( b === document || b.ownerDocument === preferredDoc && contains(preferredDoc, b) ) { + return 1; + } + + // Maintain original order + return sortInput ? + ( indexOf( sortInput, a ) - indexOf( sortInput, b ) ) : + 0; + } + + return compare & 4 ? -1 : 1; + } : + function( a, b ) { + // Exit early if the nodes are identical + if ( a === b ) { + hasDuplicate = true; + return 0; + } + + var cur, + i = 0, + aup = a.parentNode, + bup = b.parentNode, + ap = [ a ], + bp = [ b ]; + + // Parentless nodes are either documents or disconnected + if ( !aup || !bup ) { + return a === document ? -1 : + b === document ? 1 : + aup ? -1 : + bup ? 1 : + sortInput ? + ( indexOf( sortInput, a ) - indexOf( sortInput, b ) ) : + 0; + + // If the nodes are siblings, we can do a quick check + } else if ( aup === bup ) { + return siblingCheck( a, b ); + } + + // Otherwise we need full lists of their ancestors for comparison + cur = a; + while ( (cur = cur.parentNode) ) { + ap.unshift( cur ); + } + cur = b; + while ( (cur = cur.parentNode) ) { + bp.unshift( cur ); + } + + // Walk down the tree looking for a discrepancy + while ( ap[i] === bp[i] ) { + i++; + } + + return i ? + // Do a sibling check if the nodes have a common ancestor + siblingCheck( ap[i], bp[i] ) : + + // Otherwise nodes in our document sort first + ap[i] === preferredDoc ? -1 : + bp[i] === preferredDoc ? 1 : + 0; + }; + + return document; +}; + +Sizzle.matches = function( expr, elements ) { + return Sizzle( expr, null, null, elements ); +}; + +Sizzle.matchesSelector = function( elem, expr ) { + // Set document vars if needed + if ( ( elem.ownerDocument || elem ) !== document ) { + setDocument( elem ); + } + + // Make sure that attribute selectors are quoted + expr = expr.replace( rattributeQuotes, "='$1']" ); + + if ( support.matchesSelector && documentIsHTML && + !compilerCache[ expr + " " ] && + ( !rbuggyMatches || !rbuggyMatches.test( expr ) ) && + ( !rbuggyQSA || !rbuggyQSA.test( expr ) ) ) { + + try { + var ret = matches.call( elem, expr ); + + // IE 9's matchesSelector returns false on disconnected nodes + if ( ret || support.disconnectedMatch || + // As well, disconnected nodes are said to be in a document + // fragment in IE 9 + elem.document && elem.document.nodeType !== 11 ) { + return ret; + } + } catch (e) {} + } + + return Sizzle( expr, document, null, [ elem ] ).length > 0; +}; + +Sizzle.contains = function( context, elem ) { + // Set document vars if needed + if ( ( context.ownerDocument || context ) !== document ) { + setDocument( context ); + } + return contains( context, elem ); +}; + +Sizzle.attr = function( elem, name ) { + // Set document vars if needed + if ( ( elem.ownerDocument || elem ) !== document ) { + setDocument( elem ); + } + + var fn = Expr.attrHandle[ name.toLowerCase() ], + // Don't get fooled by Object.prototype properties (jQuery #13807) + val = fn && hasOwn.call( Expr.attrHandle, name.toLowerCase() ) ? + fn( elem, name, !documentIsHTML ) : + undefined; + + return val !== undefined ? + val : + support.attributes || !documentIsHTML ? + elem.getAttribute( name ) : + (val = elem.getAttributeNode(name)) && val.specified ? + val.value : + null; +}; + +Sizzle.escape = function( sel ) { + return (sel + "").replace( rcssescape, fcssescape ); +}; + +Sizzle.error = function( msg ) { + throw new Error( "Syntax error, unrecognized expression: " + msg ); +}; + +/** + * Document sorting and removing duplicates + * @param {ArrayLike} results + */ +Sizzle.uniqueSort = function( results ) { + var elem, + duplicates = [], + j = 0, + i = 0; + + // Unless we *know* we can detect duplicates, assume their presence + hasDuplicate = !support.detectDuplicates; + sortInput = !support.sortStable && results.slice( 0 ); + results.sort( sortOrder ); + + if ( hasDuplicate ) { + while ( (elem = results[i++]) ) { + if ( elem === results[ i ] ) { + j = duplicates.push( i ); + } + } + while ( j-- ) { + results.splice( duplicates[ j ], 1 ); + } + } + + // Clear input after sorting to release objects + // See https://github.com/jquery/sizzle/pull/225 + sortInput = null; + + return results; +}; + +/** + * Utility function for retrieving the text value of an array of DOM nodes + * @param {Array|Element} elem + */ +getText = Sizzle.getText = function( elem ) { + var node, + ret = "", + i = 0, + nodeType = elem.nodeType; + + if ( !nodeType ) { + // If no nodeType, this is expected to be an array + while ( (node = elem[i++]) ) { + // Do not traverse comment nodes + ret += getText( node ); + } + } else if ( nodeType === 1 || nodeType === 9 || nodeType === 11 ) { + // Use textContent for elements + // innerText usage removed for consistency of new lines (jQuery #11153) + if ( typeof elem.textContent === "string" ) { + return elem.textContent; + } else { + // Traverse its children + for ( elem = elem.firstChild; elem; elem = elem.nextSibling ) { + ret += getText( elem ); + } + } + } else if ( nodeType === 3 || nodeType === 4 ) { + return elem.nodeValue; + } + // Do not include comment or processing instruction nodes + + return ret; +}; + +Expr = Sizzle.selectors = { + + // Can be adjusted by the user + cacheLength: 50, + + createPseudo: markFunction, + + match: matchExpr, + + attrHandle: {}, + + find: {}, + + relative: { + ">": { dir: "parentNode", first: true }, + " ": { dir: "parentNode" }, + "+": { dir: "previousSibling", first: true }, + "~": { dir: "previousSibling" } + }, + + preFilter: { + "ATTR": function( match ) { + match[1] = match[1].replace( runescape, funescape ); + + // Move the given value to match[3] whether quoted or unquoted + match[3] = ( match[3] || match[4] || match[5] || "" ).replace( runescape, funescape ); + + if ( match[2] === "~=" ) { + match[3] = " " + match[3] + " "; + } + + return match.slice( 0, 4 ); + }, + + "CHILD": function( match ) { + /* matches from matchExpr["CHILD"] + 1 type (only|nth|...) + 2 what (child|of-type) + 3 argument (even|odd|\d*|\d*n([+-]\d+)?|...) + 4 xn-component of xn+y argument ([+-]?\d*n|) + 5 sign of xn-component + 6 x of xn-component + 7 sign of y-component + 8 y of y-component + */ + match[1] = match[1].toLowerCase(); + + if ( match[1].slice( 0, 3 ) === "nth" ) { + // nth-* requires argument + if ( !match[3] ) { + Sizzle.error( match[0] ); + } + + // numeric x and y parameters for Expr.filter.CHILD + // remember that false/true cast respectively to 0/1 + match[4] = +( match[4] ? match[5] + (match[6] || 1) : 2 * ( match[3] === "even" || match[3] === "odd" ) ); + match[5] = +( ( match[7] + match[8] ) || match[3] === "odd" ); + + // other types prohibit arguments + } else if ( match[3] ) { + Sizzle.error( match[0] ); + } + + return match; + }, + + "PSEUDO": function( match ) { + var excess, + unquoted = !match[6] && match[2]; + + if ( matchExpr["CHILD"].test( match[0] ) ) { + return null; + } + + // Accept quoted arguments as-is + if ( match[3] ) { + match[2] = match[4] || match[5] || ""; + + // Strip excess characters from unquoted arguments + } else if ( unquoted && rpseudo.test( unquoted ) && + // Get excess from tokenize (recursively) + (excess = tokenize( unquoted, true )) && + // advance to the next closing parenthesis + (excess = unquoted.indexOf( ")", unquoted.length - excess ) - unquoted.length) ) { + + // excess is a negative index + match[0] = match[0].slice( 0, excess ); + match[2] = unquoted.slice( 0, excess ); + } + + // Return only captures needed by the pseudo filter method (type and argument) + return match.slice( 0, 3 ); + } + }, + + filter: { + + "TAG": function( nodeNameSelector ) { + var nodeName = nodeNameSelector.replace( runescape, funescape ).toLowerCase(); + return nodeNameSelector === "*" ? + function() { return true; } : + function( elem ) { + return elem.nodeName && elem.nodeName.toLowerCase() === nodeName; + }; + }, + + "CLASS": function( className ) { + var pattern = classCache[ className + " " ]; + + return pattern || + (pattern = new RegExp( "(^|" + whitespace + ")" + className + "(" + whitespace + "|$)" )) && + classCache( className, function( elem ) { + return pattern.test( typeof elem.className === "string" && elem.className || typeof elem.getAttribute !== "undefined" && elem.getAttribute("class") || "" ); + }); + }, + + "ATTR": function( name, operator, check ) { + return function( elem ) { + var result = Sizzle.attr( elem, name ); + + if ( result == null ) { + return operator === "!="; + } + if ( !operator ) { + return true; + } + + result += ""; + + return operator === "=" ? result === check : + operator === "!=" ? result !== check : + operator === "^=" ? check && result.indexOf( check ) === 0 : + operator === "*=" ? check && result.indexOf( check ) > -1 : + operator === "$=" ? check && result.slice( -check.length ) === check : + operator === "~=" ? ( " " + result.replace( rwhitespace, " " ) + " " ).indexOf( check ) > -1 : + operator === "|=" ? result === check || result.slice( 0, check.length + 1 ) === check + "-" : + false; + }; + }, + + "CHILD": function( type, what, argument, first, last ) { + var simple = type.slice( 0, 3 ) !== "nth", + forward = type.slice( -4 ) !== "last", + ofType = what === "of-type"; + + return first === 1 && last === 0 ? + + // Shortcut for :nth-*(n) + function( elem ) { + return !!elem.parentNode; + } : + + function( elem, context, xml ) { + var cache, uniqueCache, outerCache, node, nodeIndex, start, + dir = simple !== forward ? "nextSibling" : "previousSibling", + parent = elem.parentNode, + name = ofType && elem.nodeName.toLowerCase(), + useCache = !xml && !ofType, + diff = false; + + if ( parent ) { + + // :(first|last|only)-(child|of-type) + if ( simple ) { + while ( dir ) { + node = elem; + while ( (node = node[ dir ]) ) { + if ( ofType ? + node.nodeName.toLowerCase() === name : + node.nodeType === 1 ) { + + return false; + } + } + // Reverse direction for :only-* (if we haven't yet done so) + start = dir = type === "only" && !start && "nextSibling"; + } + return true; + } + + start = [ forward ? parent.firstChild : parent.lastChild ]; + + // non-xml :nth-child(...) stores cache data on `parent` + if ( forward && useCache ) { + + // Seek `elem` from a previously-cached index + + // ...in a gzip-friendly way + node = parent; + outerCache = node[ expando ] || (node[ expando ] = {}); + + // Support: IE <9 only + // Defend against cloned attroperties (jQuery gh-1709) + uniqueCache = outerCache[ node.uniqueID ] || + (outerCache[ node.uniqueID ] = {}); + + cache = uniqueCache[ type ] || []; + nodeIndex = cache[ 0 ] === dirruns && cache[ 1 ]; + diff = nodeIndex && cache[ 2 ]; + node = nodeIndex && parent.childNodes[ nodeIndex ]; + + while ( (node = ++nodeIndex && node && node[ dir ] || + + // Fallback to seeking `elem` from the start + (diff = nodeIndex = 0) || start.pop()) ) { + + // When found, cache indexes on `parent` and break + if ( node.nodeType === 1 && ++diff && node === elem ) { + uniqueCache[ type ] = [ dirruns, nodeIndex, diff ]; + break; + } + } + + } else { + // Use previously-cached element index if available + if ( useCache ) { + // ...in a gzip-friendly way + node = elem; + outerCache = node[ expando ] || (node[ expando ] = {}); + + // Support: IE <9 only + // Defend against cloned attroperties (jQuery gh-1709) + uniqueCache = outerCache[ node.uniqueID ] || + (outerCache[ node.uniqueID ] = {}); + + cache = uniqueCache[ type ] || []; + nodeIndex = cache[ 0 ] === dirruns && cache[ 1 ]; + diff = nodeIndex; + } + + // xml :nth-child(...) + // or :nth-last-child(...) or :nth(-last)?-of-type(...) + if ( diff === false ) { + // Use the same loop as above to seek `elem` from the start + while ( (node = ++nodeIndex && node && node[ dir ] || + (diff = nodeIndex = 0) || start.pop()) ) { + + if ( ( ofType ? + node.nodeName.toLowerCase() === name : + node.nodeType === 1 ) && + ++diff ) { + + // Cache the index of each encountered element + if ( useCache ) { + outerCache = node[ expando ] || (node[ expando ] = {}); + + // Support: IE <9 only + // Defend against cloned attroperties (jQuery gh-1709) + uniqueCache = outerCache[ node.uniqueID ] || + (outerCache[ node.uniqueID ] = {}); + + uniqueCache[ type ] = [ dirruns, diff ]; + } + + if ( node === elem ) { + break; + } + } + } + } + } + + // Incorporate the offset, then check against cycle size + diff -= last; + return diff === first || ( diff % first === 0 && diff / first >= 0 ); + } + }; + }, + + "PSEUDO": function( pseudo, argument ) { + // pseudo-class names are case-insensitive + // http://www.w3.org/TR/selectors/#pseudo-classes + // Prioritize by case sensitivity in case custom pseudos are added with uppercase letters + // Remember that setFilters inherits from pseudos + var args, + fn = Expr.pseudos[ pseudo ] || Expr.setFilters[ pseudo.toLowerCase() ] || + Sizzle.error( "unsupported pseudo: " + pseudo ); + + // The user may use createPseudo to indicate that + // arguments are needed to create the filter function + // just as Sizzle does + if ( fn[ expando ] ) { + return fn( argument ); + } + + // But maintain support for old signatures + if ( fn.length > 1 ) { + args = [ pseudo, pseudo, "", argument ]; + return Expr.setFilters.hasOwnProperty( pseudo.toLowerCase() ) ? + markFunction(function( seed, matches ) { + var idx, + matched = fn( seed, argument ), + i = matched.length; + while ( i-- ) { + idx = indexOf( seed, matched[i] ); + seed[ idx ] = !( matches[ idx ] = matched[i] ); + } + }) : + function( elem ) { + return fn( elem, 0, args ); + }; + } + + return fn; + } + }, + + pseudos: { + // Potentially complex pseudos + "not": markFunction(function( selector ) { + // Trim the selector passed to compile + // to avoid treating leading and trailing + // spaces as combinators + var input = [], + results = [], + matcher = compile( selector.replace( rtrim, "$1" ) ); + + return matcher[ expando ] ? + markFunction(function( seed, matches, context, xml ) { + var elem, + unmatched = matcher( seed, null, xml, [] ), + i = seed.length; + + // Match elements unmatched by `matcher` + while ( i-- ) { + if ( (elem = unmatched[i]) ) { + seed[i] = !(matches[i] = elem); + } + } + }) : + function( elem, context, xml ) { + input[0] = elem; + matcher( input, null, xml, results ); + // Don't keep the element (issue #299) + input[0] = null; + return !results.pop(); + }; + }), + + "has": markFunction(function( selector ) { + return function( elem ) { + return Sizzle( selector, elem ).length > 0; + }; + }), + + "contains": markFunction(function( text ) { + text = text.replace( runescape, funescape ); + return function( elem ) { + return ( elem.textContent || elem.innerText || getText( elem ) ).indexOf( text ) > -1; + }; + }), + + // "Whether an element is represented by a :lang() selector + // is based solely on the element's language value + // being equal to the identifier C, + // or beginning with the identifier C immediately followed by "-". + // The matching of C against the element's language value is performed case-insensitively. + // The identifier C does not have to be a valid language name." + // http://www.w3.org/TR/selectors/#lang-pseudo + "lang": markFunction( function( lang ) { + // lang value must be a valid identifier + if ( !ridentifier.test(lang || "") ) { + Sizzle.error( "unsupported lang: " + lang ); + } + lang = lang.replace( runescape, funescape ).toLowerCase(); + return function( elem ) { + var elemLang; + do { + if ( (elemLang = documentIsHTML ? + elem.lang : + elem.getAttribute("xml:lang") || elem.getAttribute("lang")) ) { + + elemLang = elemLang.toLowerCase(); + return elemLang === lang || elemLang.indexOf( lang + "-" ) === 0; + } + } while ( (elem = elem.parentNode) && elem.nodeType === 1 ); + return false; + }; + }), + + // Miscellaneous + "target": function( elem ) { + var hash = window.location && window.location.hash; + return hash && hash.slice( 1 ) === elem.id; + }, + + "root": function( elem ) { + return elem === docElem; + }, + + "focus": function( elem ) { + return elem === document.activeElement && (!document.hasFocus || document.hasFocus()) && !!(elem.type || elem.href || ~elem.tabIndex); + }, + + // Boolean properties + "enabled": createDisabledPseudo( false ), + "disabled": createDisabledPseudo( true ), + + "checked": function( elem ) { + // In CSS3, :checked should return both checked and selected elements + // http://www.w3.org/TR/2011/REC-css3-selectors-20110929/#checked + var nodeName = elem.nodeName.toLowerCase(); + return (nodeName === "input" && !!elem.checked) || (nodeName === "option" && !!elem.selected); + }, + + "selected": function( elem ) { + // Accessing this property makes selected-by-default + // options in Safari work properly + if ( elem.parentNode ) { + elem.parentNode.selectedIndex; + } + + return elem.selected === true; + }, + + // Contents + "empty": function( elem ) { + // http://www.w3.org/TR/selectors/#empty-pseudo + // :empty is negated by element (1) or content nodes (text: 3; cdata: 4; entity ref: 5), + // but not by others (comment: 8; processing instruction: 7; etc.) + // nodeType < 6 works because attributes (2) do not appear as children + for ( elem = elem.firstChild; elem; elem = elem.nextSibling ) { + if ( elem.nodeType < 6 ) { + return false; + } + } + return true; + }, + + "parent": function( elem ) { + return !Expr.pseudos["empty"]( elem ); + }, + + // Element/input types + "header": function( elem ) { + return rheader.test( elem.nodeName ); + }, + + "input": function( elem ) { + return rinputs.test( elem.nodeName ); + }, + + "button": function( elem ) { + var name = elem.nodeName.toLowerCase(); + return name === "input" && elem.type === "button" || name === "button"; + }, + + "text": function( elem ) { + var attr; + return elem.nodeName.toLowerCase() === "input" && + elem.type === "text" && + + // Support: IE<8 + // New HTML5 attribute values (e.g., "search") appear with elem.type === "text" + ( (attr = elem.getAttribute("type")) == null || attr.toLowerCase() === "text" ); + }, + + // Position-in-collection + "first": createPositionalPseudo(function() { + return [ 0 ]; + }), + + "last": createPositionalPseudo(function( matchIndexes, length ) { + return [ length - 1 ]; + }), + + "eq": createPositionalPseudo(function( matchIndexes, length, argument ) { + return [ argument < 0 ? argument + length : argument ]; + }), + + "even": createPositionalPseudo(function( matchIndexes, length ) { + var i = 0; + for ( ; i < length; i += 2 ) { + matchIndexes.push( i ); + } + return matchIndexes; + }), + + "odd": createPositionalPseudo(function( matchIndexes, length ) { + var i = 1; + for ( ; i < length; i += 2 ) { + matchIndexes.push( i ); + } + return matchIndexes; + }), + + "lt": createPositionalPseudo(function( matchIndexes, length, argument ) { + var i = argument < 0 ? argument + length : argument; + for ( ; --i >= 0; ) { + matchIndexes.push( i ); + } + return matchIndexes; + }), + + "gt": createPositionalPseudo(function( matchIndexes, length, argument ) { + var i = argument < 0 ? argument + length : argument; + for ( ; ++i < length; ) { + matchIndexes.push( i ); + } + return matchIndexes; + }) + } +}; + +Expr.pseudos["nth"] = Expr.pseudos["eq"]; + +// Add button/input type pseudos +for ( i in { radio: true, checkbox: true, file: true, password: true, image: true } ) { + Expr.pseudos[ i ] = createInputPseudo( i ); +} +for ( i in { submit: true, reset: true } ) { + Expr.pseudos[ i ] = createButtonPseudo( i ); +} + +// Easy API for creating new setFilters +function setFilters() {} +setFilters.prototype = Expr.filters = Expr.pseudos; +Expr.setFilters = new setFilters(); + +tokenize = Sizzle.tokenize = function( selector, parseOnly ) { + var matched, match, tokens, type, + soFar, groups, preFilters, + cached = tokenCache[ selector + " " ]; + + if ( cached ) { + return parseOnly ? 0 : cached.slice( 0 ); + } + + soFar = selector; + groups = []; + preFilters = Expr.preFilter; + + while ( soFar ) { + + // Comma and first run + if ( !matched || (match = rcomma.exec( soFar )) ) { + if ( match ) { + // Don't consume trailing commas as valid + soFar = soFar.slice( match[0].length ) || soFar; + } + groups.push( (tokens = []) ); + } + + matched = false; + + // Combinators + if ( (match = rcombinators.exec( soFar )) ) { + matched = match.shift(); + tokens.push({ + value: matched, + // Cast descendant combinators to space + type: match[0].replace( rtrim, " " ) + }); + soFar = soFar.slice( matched.length ); + } + + // Filters + for ( type in Expr.filter ) { + if ( (match = matchExpr[ type ].exec( soFar )) && (!preFilters[ type ] || + (match = preFilters[ type ]( match ))) ) { + matched = match.shift(); + tokens.push({ + value: matched, + type: type, + matches: match + }); + soFar = soFar.slice( matched.length ); + } + } + + if ( !matched ) { + break; + } + } + + // Return the length of the invalid excess + // if we're just parsing + // Otherwise, throw an error or return tokens + return parseOnly ? + soFar.length : + soFar ? + Sizzle.error( selector ) : + // Cache the tokens + tokenCache( selector, groups ).slice( 0 ); +}; + +function toSelector( tokens ) { + var i = 0, + len = tokens.length, + selector = ""; + for ( ; i < len; i++ ) { + selector += tokens[i].value; + } + return selector; +} + +function addCombinator( matcher, combinator, base ) { + var dir = combinator.dir, + skip = combinator.next, + key = skip || dir, + checkNonElements = base && key === "parentNode", + doneName = done++; + + return combinator.first ? + // Check against closest ancestor/preceding element + function( elem, context, xml ) { + while ( (elem = elem[ dir ]) ) { + if ( elem.nodeType === 1 || checkNonElements ) { + return matcher( elem, context, xml ); + } + } + return false; + } : + + // Check against all ancestor/preceding elements + function( elem, context, xml ) { + var oldCache, uniqueCache, outerCache, + newCache = [ dirruns, doneName ]; + + // We can't set arbitrary data on XML nodes, so they don't benefit from combinator caching + if ( xml ) { + while ( (elem = elem[ dir ]) ) { + if ( elem.nodeType === 1 || checkNonElements ) { + if ( matcher( elem, context, xml ) ) { + return true; + } + } + } + } else { + while ( (elem = elem[ dir ]) ) { + if ( elem.nodeType === 1 || checkNonElements ) { + outerCache = elem[ expando ] || (elem[ expando ] = {}); + + // Support: IE <9 only + // Defend against cloned attroperties (jQuery gh-1709) + uniqueCache = outerCache[ elem.uniqueID ] || (outerCache[ elem.uniqueID ] = {}); + + if ( skip && skip === elem.nodeName.toLowerCase() ) { + elem = elem[ dir ] || elem; + } else if ( (oldCache = uniqueCache[ key ]) && + oldCache[ 0 ] === dirruns && oldCache[ 1 ] === doneName ) { + + // Assign to newCache so results back-propagate to previous elements + return (newCache[ 2 ] = oldCache[ 2 ]); + } else { + // Reuse newcache so results back-propagate to previous elements + uniqueCache[ key ] = newCache; + + // A match means we're done; a fail means we have to keep checking + if ( (newCache[ 2 ] = matcher( elem, context, xml )) ) { + return true; + } + } + } + } + } + return false; + }; +} + +function elementMatcher( matchers ) { + return matchers.length > 1 ? + function( elem, context, xml ) { + var i = matchers.length; + while ( i-- ) { + if ( !matchers[i]( elem, context, xml ) ) { + return false; + } + } + return true; + } : + matchers[0]; +} + +function multipleContexts( selector, contexts, results ) { + var i = 0, + len = contexts.length; + for ( ; i < len; i++ ) { + Sizzle( selector, contexts[i], results ); + } + return results; +} + +function condense( unmatched, map, filter, context, xml ) { + var elem, + newUnmatched = [], + i = 0, + len = unmatched.length, + mapped = map != null; + + for ( ; i < len; i++ ) { + if ( (elem = unmatched[i]) ) { + if ( !filter || filter( elem, context, xml ) ) { + newUnmatched.push( elem ); + if ( mapped ) { + map.push( i ); + } + } + } + } + + return newUnmatched; +} + +function setMatcher( preFilter, selector, matcher, postFilter, postFinder, postSelector ) { + if ( postFilter && !postFilter[ expando ] ) { + postFilter = setMatcher( postFilter ); + } + if ( postFinder && !postFinder[ expando ] ) { + postFinder = setMatcher( postFinder, postSelector ); + } + return markFunction(function( seed, results, context, xml ) { + var temp, i, elem, + preMap = [], + postMap = [], + preexisting = results.length, + + // Get initial elements from seed or context + elems = seed || multipleContexts( selector || "*", context.nodeType ? [ context ] : context, [] ), + + // Prefilter to get matcher input, preserving a map for seed-results synchronization + matcherIn = preFilter && ( seed || !selector ) ? + condense( elems, preMap, preFilter, context, xml ) : + elems, + + matcherOut = matcher ? + // If we have a postFinder, or filtered seed, or non-seed postFilter or preexisting results, + postFinder || ( seed ? preFilter : preexisting || postFilter ) ? + + // ...intermediate processing is necessary + [] : + + // ...otherwise use results directly + results : + matcherIn; + + // Find primary matches + if ( matcher ) { + matcher( matcherIn, matcherOut, context, xml ); + } + + // Apply postFilter + if ( postFilter ) { + temp = condense( matcherOut, postMap ); + postFilter( temp, [], context, xml ); + + // Un-match failing elements by moving them back to matcherIn + i = temp.length; + while ( i-- ) { + if ( (elem = temp[i]) ) { + matcherOut[ postMap[i] ] = !(matcherIn[ postMap[i] ] = elem); + } + } + } + + if ( seed ) { + if ( postFinder || preFilter ) { + if ( postFinder ) { + // Get the final matcherOut by condensing this intermediate into postFinder contexts + temp = []; + i = matcherOut.length; + while ( i-- ) { + if ( (elem = matcherOut[i]) ) { + // Restore matcherIn since elem is not yet a final match + temp.push( (matcherIn[i] = elem) ); + } + } + postFinder( null, (matcherOut = []), temp, xml ); + } + + // Move matched elements from seed to results to keep them synchronized + i = matcherOut.length; + while ( i-- ) { + if ( (elem = matcherOut[i]) && + (temp = postFinder ? indexOf( seed, elem ) : preMap[i]) > -1 ) { + + seed[temp] = !(results[temp] = elem); + } + } + } + + // Add elements to results, through postFinder if defined + } else { + matcherOut = condense( + matcherOut === results ? + matcherOut.splice( preexisting, matcherOut.length ) : + matcherOut + ); + if ( postFinder ) { + postFinder( null, results, matcherOut, xml ); + } else { + push.apply( results, matcherOut ); + } + } + }); +} + +function matcherFromTokens( tokens ) { + var checkContext, matcher, j, + len = tokens.length, + leadingRelative = Expr.relative[ tokens[0].type ], + implicitRelative = leadingRelative || Expr.relative[" "], + i = leadingRelative ? 1 : 0, + + // The foundational matcher ensures that elements are reachable from top-level context(s) + matchContext = addCombinator( function( elem ) { + return elem === checkContext; + }, implicitRelative, true ), + matchAnyContext = addCombinator( function( elem ) { + return indexOf( checkContext, elem ) > -1; + }, implicitRelative, true ), + matchers = [ function( elem, context, xml ) { + var ret = ( !leadingRelative && ( xml || context !== outermostContext ) ) || ( + (checkContext = context).nodeType ? + matchContext( elem, context, xml ) : + matchAnyContext( elem, context, xml ) ); + // Avoid hanging onto element (issue #299) + checkContext = null; + return ret; + } ]; + + for ( ; i < len; i++ ) { + if ( (matcher = Expr.relative[ tokens[i].type ]) ) { + matchers = [ addCombinator(elementMatcher( matchers ), matcher) ]; + } else { + matcher = Expr.filter[ tokens[i].type ].apply( null, tokens[i].matches ); + + // Return special upon seeing a positional matcher + if ( matcher[ expando ] ) { + // Find the next relative operator (if any) for proper handling + j = ++i; + for ( ; j < len; j++ ) { + if ( Expr.relative[ tokens[j].type ] ) { + break; + } + } + return setMatcher( + i > 1 && elementMatcher( matchers ), + i > 1 && toSelector( + // If the preceding token was a descendant combinator, insert an implicit any-element `*` + tokens.slice( 0, i - 1 ).concat({ value: tokens[ i - 2 ].type === " " ? "*" : "" }) + ).replace( rtrim, "$1" ), + matcher, + i < j && matcherFromTokens( tokens.slice( i, j ) ), + j < len && matcherFromTokens( (tokens = tokens.slice( j )) ), + j < len && toSelector( tokens ) + ); + } + matchers.push( matcher ); + } + } + + return elementMatcher( matchers ); +} + +function matcherFromGroupMatchers( elementMatchers, setMatchers ) { + var bySet = setMatchers.length > 0, + byElement = elementMatchers.length > 0, + superMatcher = function( seed, context, xml, results, outermost ) { + var elem, j, matcher, + matchedCount = 0, + i = "0", + unmatched = seed && [], + setMatched = [], + contextBackup = outermostContext, + // We must always have either seed elements or outermost context + elems = seed || byElement && Expr.find["TAG"]( "*", outermost ), + // Use integer dirruns iff this is the outermost matcher + dirrunsUnique = (dirruns += contextBackup == null ? 1 : Math.random() || 0.1), + len = elems.length; + + if ( outermost ) { + outermostContext = context === document || context || outermost; + } + + // Add elements passing elementMatchers directly to results + // Support: IE<9, Safari + // Tolerate NodeList properties (IE: "length"; Safari: ) matching elements by id + for ( ; i !== len && (elem = elems[i]) != null; i++ ) { + if ( byElement && elem ) { + j = 0; + if ( !context && elem.ownerDocument !== document ) { + setDocument( elem ); + xml = !documentIsHTML; + } + while ( (matcher = elementMatchers[j++]) ) { + if ( matcher( elem, context || document, xml) ) { + results.push( elem ); + break; + } + } + if ( outermost ) { + dirruns = dirrunsUnique; + } + } + + // Track unmatched elements for set filters + if ( bySet ) { + // They will have gone through all possible matchers + if ( (elem = !matcher && elem) ) { + matchedCount--; + } + + // Lengthen the array for every element, matched or not + if ( seed ) { + unmatched.push( elem ); + } + } + } + + // `i` is now the count of elements visited above, and adding it to `matchedCount` + // makes the latter nonnegative. + matchedCount += i; + + // Apply set filters to unmatched elements + // NOTE: This can be skipped if there are no unmatched elements (i.e., `matchedCount` + // equals `i`), unless we didn't visit _any_ elements in the above loop because we have + // no element matchers and no seed. + // Incrementing an initially-string "0" `i` allows `i` to remain a string only in that + // case, which will result in a "00" `matchedCount` that differs from `i` but is also + // numerically zero. + if ( bySet && i !== matchedCount ) { + j = 0; + while ( (matcher = setMatchers[j++]) ) { + matcher( unmatched, setMatched, context, xml ); + } + + if ( seed ) { + // Reintegrate element matches to eliminate the need for sorting + if ( matchedCount > 0 ) { + while ( i-- ) { + if ( !(unmatched[i] || setMatched[i]) ) { + setMatched[i] = pop.call( results ); + } + } + } + + // Discard index placeholder values to get only actual matches + setMatched = condense( setMatched ); + } + + // Add matches to results + push.apply( results, setMatched ); + + // Seedless set matches succeeding multiple successful matchers stipulate sorting + if ( outermost && !seed && setMatched.length > 0 && + ( matchedCount + setMatchers.length ) > 1 ) { + + Sizzle.uniqueSort( results ); + } + } + + // Override manipulation of globals by nested matchers + if ( outermost ) { + dirruns = dirrunsUnique; + outermostContext = contextBackup; + } + + return unmatched; + }; + + return bySet ? + markFunction( superMatcher ) : + superMatcher; +} + +compile = Sizzle.compile = function( selector, match /* Internal Use Only */ ) { + var i, + setMatchers = [], + elementMatchers = [], + cached = compilerCache[ selector + " " ]; + + if ( !cached ) { + // Generate a function of recursive functions that can be used to check each element + if ( !match ) { + match = tokenize( selector ); + } + i = match.length; + while ( i-- ) { + cached = matcherFromTokens( match[i] ); + if ( cached[ expando ] ) { + setMatchers.push( cached ); + } else { + elementMatchers.push( cached ); + } + } + + // Cache the compiled function + cached = compilerCache( selector, matcherFromGroupMatchers( elementMatchers, setMatchers ) ); + + // Save selector and tokenization + cached.selector = selector; + } + return cached; +}; + +/** + * A low-level selection function that works with Sizzle's compiled + * selector functions + * @param {String|Function} selector A selector or a pre-compiled + * selector function built with Sizzle.compile + * @param {Element} context + * @param {Array} [results] + * @param {Array} [seed] A set of elements to match against + */ +select = Sizzle.select = function( selector, context, results, seed ) { + var i, tokens, token, type, find, + compiled = typeof selector === "function" && selector, + match = !seed && tokenize( (selector = compiled.selector || selector) ); + + results = results || []; + + // Try to minimize operations if there is only one selector in the list and no seed + // (the latter of which guarantees us context) + if ( match.length === 1 ) { + + // Reduce context if the leading compound selector is an ID + tokens = match[0] = match[0].slice( 0 ); + if ( tokens.length > 2 && (token = tokens[0]).type === "ID" && + context.nodeType === 9 && documentIsHTML && Expr.relative[ tokens[1].type ] ) { + + context = ( Expr.find["ID"]( token.matches[0].replace(runescape, funescape), context ) || [] )[0]; + if ( !context ) { + return results; + + // Precompiled matchers will still verify ancestry, so step up a level + } else if ( compiled ) { + context = context.parentNode; + } + + selector = selector.slice( tokens.shift().value.length ); + } + + // Fetch a seed set for right-to-left matching + i = matchExpr["needsContext"].test( selector ) ? 0 : tokens.length; + while ( i-- ) { + token = tokens[i]; + + // Abort if we hit a combinator + if ( Expr.relative[ (type = token.type) ] ) { + break; + } + if ( (find = Expr.find[ type ]) ) { + // Search, expanding context for leading sibling combinators + if ( (seed = find( + token.matches[0].replace( runescape, funescape ), + rsibling.test( tokens[0].type ) && testContext( context.parentNode ) || context + )) ) { + + // If seed is empty or no tokens remain, we can return early + tokens.splice( i, 1 ); + selector = seed.length && toSelector( tokens ); + if ( !selector ) { + push.apply( results, seed ); + return results; + } + + break; + } + } + } + } + + // Compile and execute a filtering function if one is not provided + // Provide `match` to avoid retokenization if we modified the selector above + ( compiled || compile( selector, match ) )( + seed, + context, + !documentIsHTML, + results, + !context || rsibling.test( selector ) && testContext( context.parentNode ) || context + ); + return results; +}; + +// One-time assignments + +// Sort stability +support.sortStable = expando.split("").sort( sortOrder ).join("") === expando; + +// Support: Chrome 14-35+ +// Always assume duplicates if they aren't passed to the comparison function +support.detectDuplicates = !!hasDuplicate; + +// Initialize against the default document +setDocument(); + +// Support: Webkit<537.32 - Safari 6.0.3/Chrome 25 (fixed in Chrome 27) +// Detached nodes confoundingly follow *each other* +support.sortDetached = assert(function( el ) { + // Should return 1, but returns 4 (following) + return el.compareDocumentPosition( document.createElement("fieldset") ) & 1; +}); + +// Support: IE<8 +// Prevent attribute/property "interpolation" +// https://msdn.microsoft.com/en-us/library/ms536429%28VS.85%29.aspx +if ( !assert(function( el ) { + el.innerHTML = ""; + return el.firstChild.getAttribute("href") === "#" ; +}) ) { + addHandle( "type|href|height|width", function( elem, name, isXML ) { + if ( !isXML ) { + return elem.getAttribute( name, name.toLowerCase() === "type" ? 1 : 2 ); + } + }); +} + +// Support: IE<9 +// Use defaultValue in place of getAttribute("value") +if ( !support.attributes || !assert(function( el ) { + el.innerHTML = ""; + el.firstChild.setAttribute( "value", "" ); + return el.firstChild.getAttribute( "value" ) === ""; +}) ) { + addHandle( "value", function( elem, name, isXML ) { + if ( !isXML && elem.nodeName.toLowerCase() === "input" ) { + return elem.defaultValue; + } + }); +} + +// Support: IE<9 +// Use getAttributeNode to fetch booleans when getAttribute lies +if ( !assert(function( el ) { + return el.getAttribute("disabled") == null; +}) ) { + addHandle( booleans, function( elem, name, isXML ) { + var val; + if ( !isXML ) { + return elem[ name ] === true ? name.toLowerCase() : + (val = elem.getAttributeNode( name )) && val.specified ? + val.value : + null; + } + }); +} + +return Sizzle; + +})( window ); + + + +jQuery.find = Sizzle; +jQuery.expr = Sizzle.selectors; + +// Deprecated +jQuery.expr[ ":" ] = jQuery.expr.pseudos; +jQuery.uniqueSort = jQuery.unique = Sizzle.uniqueSort; +jQuery.text = Sizzle.getText; +jQuery.isXMLDoc = Sizzle.isXML; +jQuery.contains = Sizzle.contains; +jQuery.escapeSelector = Sizzle.escape; + + + + +var dir = function( elem, dir, until ) { + var matched = [], + truncate = until !== undefined; + + while ( ( elem = elem[ dir ] ) && elem.nodeType !== 9 ) { + if ( elem.nodeType === 1 ) { + if ( truncate && jQuery( elem ).is( until ) ) { + break; + } + matched.push( elem ); + } + } + return matched; +}; + + +var siblings = function( n, elem ) { + var matched = []; + + for ( ; n; n = n.nextSibling ) { + if ( n.nodeType === 1 && n !== elem ) { + matched.push( n ); + } + } + + return matched; +}; + + +var rneedsContext = jQuery.expr.match.needsContext; + + + +function nodeName( elem, name ) { + + return elem.nodeName && elem.nodeName.toLowerCase() === name.toLowerCase(); + +}; +var rsingleTag = ( /^<([a-z][^\/\0>:\x20\t\r\n\f]*)[\x20\t\r\n\f]*\/?>(?:<\/\1>|)$/i ); + + + +var risSimple = /^.[^:#\[\.,]*$/; + +// Implement the identical functionality for filter and not +function winnow( elements, qualifier, not ) { + if ( jQuery.isFunction( qualifier ) ) { + return jQuery.grep( elements, function( elem, i ) { + return !!qualifier.call( elem, i, elem ) !== not; + } ); + } + + // Single element + if ( qualifier.nodeType ) { + return jQuery.grep( elements, function( elem ) { + return ( elem === qualifier ) !== not; + } ); + } + + // Arraylike of elements (jQuery, arguments, Array) + if ( typeof qualifier !== "string" ) { + return jQuery.grep( elements, function( elem ) { + return ( indexOf.call( qualifier, elem ) > -1 ) !== not; + } ); + } + + // Simple selector that can be filtered directly, removing non-Elements + if ( risSimple.test( qualifier ) ) { + return jQuery.filter( qualifier, elements, not ); + } + + // Complex selector, compare the two sets, removing non-Elements + qualifier = jQuery.filter( qualifier, elements ); + return jQuery.grep( elements, function( elem ) { + return ( indexOf.call( qualifier, elem ) > -1 ) !== not && elem.nodeType === 1; + } ); +} + +jQuery.filter = function( expr, elems, not ) { + var elem = elems[ 0 ]; + + if ( not ) { + expr = ":not(" + expr + ")"; + } + + if ( elems.length === 1 && elem.nodeType === 1 ) { + return jQuery.find.matchesSelector( elem, expr ) ? [ elem ] : []; + } + + return jQuery.find.matches( expr, jQuery.grep( elems, function( elem ) { + return elem.nodeType === 1; + } ) ); +}; + +jQuery.fn.extend( { + find: function( selector ) { + var i, ret, + len = this.length, + self = this; + + if ( typeof selector !== "string" ) { + return this.pushStack( jQuery( selector ).filter( function() { + for ( i = 0; i < len; i++ ) { + if ( jQuery.contains( self[ i ], this ) ) { + return true; + } + } + } ) ); + } + + ret = this.pushStack( [] ); + + for ( i = 0; i < len; i++ ) { + jQuery.find( selector, self[ i ], ret ); + } + + return len > 1 ? jQuery.uniqueSort( ret ) : ret; + }, + filter: function( selector ) { + return this.pushStack( winnow( this, selector || [], false ) ); + }, + not: function( selector ) { + return this.pushStack( winnow( this, selector || [], true ) ); + }, + is: function( selector ) { + return !!winnow( + this, + + // If this is a positional/relative selector, check membership in the returned set + // so $("p:first").is("p:last") won't return true for a doc with two "p". + typeof selector === "string" && rneedsContext.test( selector ) ? + jQuery( selector ) : + selector || [], + false + ).length; + } +} ); + + +// Initialize a jQuery object + + +// A central reference to the root jQuery(document) +var rootjQuery, + + // A simple way to check for HTML strings + // Prioritize #id over to avoid XSS via location.hash (#9521) + // Strict HTML recognition (#11290: must start with <) + // Shortcut simple #id case for speed + rquickExpr = /^(?:\s*(<[\w\W]+>)[^>]*|#([\w-]+))$/, + + init = jQuery.fn.init = function( selector, context, root ) { + var match, elem; + + // HANDLE: $(""), $(null), $(undefined), $(false) + if ( !selector ) { + return this; + } + + // Method init() accepts an alternate rootjQuery + // so migrate can support jQuery.sub (gh-2101) + root = root || rootjQuery; + + // Handle HTML strings + if ( typeof selector === "string" ) { + if ( selector[ 0 ] === "<" && + selector[ selector.length - 1 ] === ">" && + selector.length >= 3 ) { + + // Assume that strings that start and end with <> are HTML and skip the regex check + match = [ null, selector, null ]; + + } else { + match = rquickExpr.exec( selector ); + } + + // Match html or make sure no context is specified for #id + if ( match && ( match[ 1 ] || !context ) ) { + + // HANDLE: $(html) -> $(array) + if ( match[ 1 ] ) { + context = context instanceof jQuery ? context[ 0 ] : context; + + // Option to run scripts is true for back-compat + // Intentionally let the error be thrown if parseHTML is not present + jQuery.merge( this, jQuery.parseHTML( + match[ 1 ], + context && context.nodeType ? context.ownerDocument || context : document, + true + ) ); + + // HANDLE: $(html, props) + if ( rsingleTag.test( match[ 1 ] ) && jQuery.isPlainObject( context ) ) { + for ( match in context ) { + + // Properties of context are called as methods if possible + if ( jQuery.isFunction( this[ match ] ) ) { + this[ match ]( context[ match ] ); + + // ...and otherwise set as attributes + } else { + this.attr( match, context[ match ] ); + } + } + } + + return this; + + // HANDLE: $(#id) + } else { + elem = document.getElementById( match[ 2 ] ); + + if ( elem ) { + + // Inject the element directly into the jQuery object + this[ 0 ] = elem; + this.length = 1; + } + return this; + } + + // HANDLE: $(expr, $(...)) + } else if ( !context || context.jquery ) { + return ( context || root ).find( selector ); + + // HANDLE: $(expr, context) + // (which is just equivalent to: $(context).find(expr) + } else { + return this.constructor( context ).find( selector ); + } + + // HANDLE: $(DOMElement) + } else if ( selector.nodeType ) { + this[ 0 ] = selector; + this.length = 1; + return this; + + // HANDLE: $(function) + // Shortcut for document ready + } else if ( jQuery.isFunction( selector ) ) { + return root.ready !== undefined ? + root.ready( selector ) : + + // Execute immediately if ready is not present + selector( jQuery ); + } + + return jQuery.makeArray( selector, this ); + }; + +// Give the init function the jQuery prototype for later instantiation +init.prototype = jQuery.fn; + +// Initialize central reference +rootjQuery = jQuery( document ); + + +var rparentsprev = /^(?:parents|prev(?:Until|All))/, + + // Methods guaranteed to produce a unique set when starting from a unique set + guaranteedUnique = { + children: true, + contents: true, + next: true, + prev: true + }; + +jQuery.fn.extend( { + has: function( target ) { + var targets = jQuery( target, this ), + l = targets.length; + + return this.filter( function() { + var i = 0; + for ( ; i < l; i++ ) { + if ( jQuery.contains( this, targets[ i ] ) ) { + return true; + } + } + } ); + }, + + closest: function( selectors, context ) { + var cur, + i = 0, + l = this.length, + matched = [], + targets = typeof selectors !== "string" && jQuery( selectors ); + + // Positional selectors never match, since there's no _selection_ context + if ( !rneedsContext.test( selectors ) ) { + for ( ; i < l; i++ ) { + for ( cur = this[ i ]; cur && cur !== context; cur = cur.parentNode ) { + + // Always skip document fragments + if ( cur.nodeType < 11 && ( targets ? + targets.index( cur ) > -1 : + + // Don't pass non-elements to Sizzle + cur.nodeType === 1 && + jQuery.find.matchesSelector( cur, selectors ) ) ) { + + matched.push( cur ); + break; + } + } + } + } + + return this.pushStack( matched.length > 1 ? jQuery.uniqueSort( matched ) : matched ); + }, + + // Determine the position of an element within the set + index: function( elem ) { + + // No argument, return index in parent + if ( !elem ) { + return ( this[ 0 ] && this[ 0 ].parentNode ) ? this.first().prevAll().length : -1; + } + + // Index in selector + if ( typeof elem === "string" ) { + return indexOf.call( jQuery( elem ), this[ 0 ] ); + } + + // Locate the position of the desired element + return indexOf.call( this, + + // If it receives a jQuery object, the first element is used + elem.jquery ? elem[ 0 ] : elem + ); + }, + + add: function( selector, context ) { + return this.pushStack( + jQuery.uniqueSort( + jQuery.merge( this.get(), jQuery( selector, context ) ) + ) + ); + }, + + addBack: function( selector ) { + return this.add( selector == null ? + this.prevObject : this.prevObject.filter( selector ) + ); + } +} ); + +function sibling( cur, dir ) { + while ( ( cur = cur[ dir ] ) && cur.nodeType !== 1 ) {} + return cur; +} + +jQuery.each( { + parent: function( elem ) { + var parent = elem.parentNode; + return parent && parent.nodeType !== 11 ? parent : null; + }, + parents: function( elem ) { + return dir( elem, "parentNode" ); + }, + parentsUntil: function( elem, i, until ) { + return dir( elem, "parentNode", until ); + }, + next: function( elem ) { + return sibling( elem, "nextSibling" ); + }, + prev: function( elem ) { + return sibling( elem, "previousSibling" ); + }, + nextAll: function( elem ) { + return dir( elem, "nextSibling" ); + }, + prevAll: function( elem ) { + return dir( elem, "previousSibling" ); + }, + nextUntil: function( elem, i, until ) { + return dir( elem, "nextSibling", until ); + }, + prevUntil: function( elem, i, until ) { + return dir( elem, "previousSibling", until ); + }, + siblings: function( elem ) { + return siblings( ( elem.parentNode || {} ).firstChild, elem ); + }, + children: function( elem ) { + return siblings( elem.firstChild ); + }, + contents: function( elem ) { + if ( nodeName( elem, "iframe" ) ) { + return elem.contentDocument; + } + + // Support: IE 9 - 11 only, iOS 7 only, Android Browser <=4.3 only + // Treat the template element as a regular one in browsers that + // don't support it. + if ( nodeName( elem, "template" ) ) { + elem = elem.content || elem; + } + + return jQuery.merge( [], elem.childNodes ); + } +}, function( name, fn ) { + jQuery.fn[ name ] = function( until, selector ) { + var matched = jQuery.map( this, fn, until ); + + if ( name.slice( -5 ) !== "Until" ) { + selector = until; + } + + if ( selector && typeof selector === "string" ) { + matched = jQuery.filter( selector, matched ); + } + + if ( this.length > 1 ) { + + // Remove duplicates + if ( !guaranteedUnique[ name ] ) { + jQuery.uniqueSort( matched ); + } + + // Reverse order for parents* and prev-derivatives + if ( rparentsprev.test( name ) ) { + matched.reverse(); + } + } + + return this.pushStack( matched ); + }; +} ); +var rnothtmlwhite = ( /[^\x20\t\r\n\f]+/g ); + + + +// Convert String-formatted options into Object-formatted ones +function createOptions( options ) { + var object = {}; + jQuery.each( options.match( rnothtmlwhite ) || [], function( _, flag ) { + object[ flag ] = true; + } ); + return object; +} + +/* + * Create a callback list using the following parameters: + * + * options: an optional list of space-separated options that will change how + * the callback list behaves or a more traditional option object + * + * By default a callback list will act like an event callback list and can be + * "fired" multiple times. + * + * Possible options: + * + * once: will ensure the callback list can only be fired once (like a Deferred) + * + * memory: will keep track of previous values and will call any callback added + * after the list has been fired right away with the latest "memorized" + * values (like a Deferred) + * + * unique: will ensure a callback can only be added once (no duplicate in the list) + * + * stopOnFalse: interrupt callings when a callback returns false + * + */ +jQuery.Callbacks = function( options ) { + + // Convert options from String-formatted to Object-formatted if needed + // (we check in cache first) + options = typeof options === "string" ? + createOptions( options ) : + jQuery.extend( {}, options ); + + var // Flag to know if list is currently firing + firing, + + // Last fire value for non-forgettable lists + memory, + + // Flag to know if list was already fired + fired, + + // Flag to prevent firing + locked, + + // Actual callback list + list = [], + + // Queue of execution data for repeatable lists + queue = [], + + // Index of currently firing callback (modified by add/remove as needed) + firingIndex = -1, + + // Fire callbacks + fire = function() { + + // Enforce single-firing + locked = locked || options.once; + + // Execute callbacks for all pending executions, + // respecting firingIndex overrides and runtime changes + fired = firing = true; + for ( ; queue.length; firingIndex = -1 ) { + memory = queue.shift(); + while ( ++firingIndex < list.length ) { + + // Run callback and check for early termination + if ( list[ firingIndex ].apply( memory[ 0 ], memory[ 1 ] ) === false && + options.stopOnFalse ) { + + // Jump to end and forget the data so .add doesn't re-fire + firingIndex = list.length; + memory = false; + } + } + } + + // Forget the data if we're done with it + if ( !options.memory ) { + memory = false; + } + + firing = false; + + // Clean up if we're done firing for good + if ( locked ) { + + // Keep an empty list if we have data for future add calls + if ( memory ) { + list = []; + + // Otherwise, this object is spent + } else { + list = ""; + } + } + }, + + // Actual Callbacks object + self = { + + // Add a callback or a collection of callbacks to the list + add: function() { + if ( list ) { + + // If we have memory from a past run, we should fire after adding + if ( memory && !firing ) { + firingIndex = list.length - 1; + queue.push( memory ); + } + + ( function add( args ) { + jQuery.each( args, function( _, arg ) { + if ( jQuery.isFunction( arg ) ) { + if ( !options.unique || !self.has( arg ) ) { + list.push( arg ); + } + } else if ( arg && arg.length && jQuery.type( arg ) !== "string" ) { + + // Inspect recursively + add( arg ); + } + } ); + } )( arguments ); + + if ( memory && !firing ) { + fire(); + } + } + return this; + }, + + // Remove a callback from the list + remove: function() { + jQuery.each( arguments, function( _, arg ) { + var index; + while ( ( index = jQuery.inArray( arg, list, index ) ) > -1 ) { + list.splice( index, 1 ); + + // Handle firing indexes + if ( index <= firingIndex ) { + firingIndex--; + } + } + } ); + return this; + }, + + // Check if a given callback is in the list. + // If no argument is given, return whether or not list has callbacks attached. + has: function( fn ) { + return fn ? + jQuery.inArray( fn, list ) > -1 : + list.length > 0; + }, + + // Remove all callbacks from the list + empty: function() { + if ( list ) { + list = []; + } + return this; + }, + + // Disable .fire and .add + // Abort any current/pending executions + // Clear all callbacks and values + disable: function() { + locked = queue = []; + list = memory = ""; + return this; + }, + disabled: function() { + return !list; + }, + + // Disable .fire + // Also disable .add unless we have memory (since it would have no effect) + // Abort any pending executions + lock: function() { + locked = queue = []; + if ( !memory && !firing ) { + list = memory = ""; + } + return this; + }, + locked: function() { + return !!locked; + }, + + // Call all callbacks with the given context and arguments + fireWith: function( context, args ) { + if ( !locked ) { + args = args || []; + args = [ context, args.slice ? args.slice() : args ]; + queue.push( args ); + if ( !firing ) { + fire(); + } + } + return this; + }, + + // Call all the callbacks with the given arguments + fire: function() { + self.fireWith( this, arguments ); + return this; + }, + + // To know if the callbacks have already been called at least once + fired: function() { + return !!fired; + } + }; + + return self; +}; + + +function Identity( v ) { + return v; +} +function Thrower( ex ) { + throw ex; +} + +function adoptValue( value, resolve, reject, noValue ) { + var method; + + try { + + // Check for promise aspect first to privilege synchronous behavior + if ( value && jQuery.isFunction( ( method = value.promise ) ) ) { + method.call( value ).done( resolve ).fail( reject ); + + // Other thenables + } else if ( value && jQuery.isFunction( ( method = value.then ) ) ) { + method.call( value, resolve, reject ); + + // Other non-thenables + } else { + + // Control `resolve` arguments by letting Array#slice cast boolean `noValue` to integer: + // * false: [ value ].slice( 0 ) => resolve( value ) + // * true: [ value ].slice( 1 ) => resolve() + resolve.apply( undefined, [ value ].slice( noValue ) ); + } + + // For Promises/A+, convert exceptions into rejections + // Since jQuery.when doesn't unwrap thenables, we can skip the extra checks appearing in + // Deferred#then to conditionally suppress rejection. + } catch ( value ) { + + // Support: Android 4.0 only + // Strict mode functions invoked without .call/.apply get global-object context + reject.apply( undefined, [ value ] ); + } +} + +jQuery.extend( { + + Deferred: function( func ) { + var tuples = [ + + // action, add listener, callbacks, + // ... .then handlers, argument index, [final state] + [ "notify", "progress", jQuery.Callbacks( "memory" ), + jQuery.Callbacks( "memory" ), 2 ], + [ "resolve", "done", jQuery.Callbacks( "once memory" ), + jQuery.Callbacks( "once memory" ), 0, "resolved" ], + [ "reject", "fail", jQuery.Callbacks( "once memory" ), + jQuery.Callbacks( "once memory" ), 1, "rejected" ] + ], + state = "pending", + promise = { + state: function() { + return state; + }, + always: function() { + deferred.done( arguments ).fail( arguments ); + return this; + }, + "catch": function( fn ) { + return promise.then( null, fn ); + }, + + // Keep pipe for back-compat + pipe: function( /* fnDone, fnFail, fnProgress */ ) { + var fns = arguments; + + return jQuery.Deferred( function( newDefer ) { + jQuery.each( tuples, function( i, tuple ) { + + // Map tuples (progress, done, fail) to arguments (done, fail, progress) + var fn = jQuery.isFunction( fns[ tuple[ 4 ] ] ) && fns[ tuple[ 4 ] ]; + + // deferred.progress(function() { bind to newDefer or newDefer.notify }) + // deferred.done(function() { bind to newDefer or newDefer.resolve }) + // deferred.fail(function() { bind to newDefer or newDefer.reject }) + deferred[ tuple[ 1 ] ]( function() { + var returned = fn && fn.apply( this, arguments ); + if ( returned && jQuery.isFunction( returned.promise ) ) { + returned.promise() + .progress( newDefer.notify ) + .done( newDefer.resolve ) + .fail( newDefer.reject ); + } else { + newDefer[ tuple[ 0 ] + "With" ]( + this, + fn ? [ returned ] : arguments + ); + } + } ); + } ); + fns = null; + } ).promise(); + }, + then: function( onFulfilled, onRejected, onProgress ) { + var maxDepth = 0; + function resolve( depth, deferred, handler, special ) { + return function() { + var that = this, + args = arguments, + mightThrow = function() { + var returned, then; + + // Support: Promises/A+ section 2.3.3.3.3 + // https://promisesaplus.com/#point-59 + // Ignore double-resolution attempts + if ( depth < maxDepth ) { + return; + } + + returned = handler.apply( that, args ); + + // Support: Promises/A+ section 2.3.1 + // https://promisesaplus.com/#point-48 + if ( returned === deferred.promise() ) { + throw new TypeError( "Thenable self-resolution" ); + } + + // Support: Promises/A+ sections 2.3.3.1, 3.5 + // https://promisesaplus.com/#point-54 + // https://promisesaplus.com/#point-75 + // Retrieve `then` only once + then = returned && + + // Support: Promises/A+ section 2.3.4 + // https://promisesaplus.com/#point-64 + // Only check objects and functions for thenability + ( typeof returned === "object" || + typeof returned === "function" ) && + returned.then; + + // Handle a returned thenable + if ( jQuery.isFunction( then ) ) { + + // Special processors (notify) just wait for resolution + if ( special ) { + then.call( + returned, + resolve( maxDepth, deferred, Identity, special ), + resolve( maxDepth, deferred, Thrower, special ) + ); + + // Normal processors (resolve) also hook into progress + } else { + + // ...and disregard older resolution values + maxDepth++; + + then.call( + returned, + resolve( maxDepth, deferred, Identity, special ), + resolve( maxDepth, deferred, Thrower, special ), + resolve( maxDepth, deferred, Identity, + deferred.notifyWith ) + ); + } + + // Handle all other returned values + } else { + + // Only substitute handlers pass on context + // and multiple values (non-spec behavior) + if ( handler !== Identity ) { + that = undefined; + args = [ returned ]; + } + + // Process the value(s) + // Default process is resolve + ( special || deferred.resolveWith )( that, args ); + } + }, + + // Only normal processors (resolve) catch and reject exceptions + process = special ? + mightThrow : + function() { + try { + mightThrow(); + } catch ( e ) { + + if ( jQuery.Deferred.exceptionHook ) { + jQuery.Deferred.exceptionHook( e, + process.stackTrace ); + } + + // Support: Promises/A+ section 2.3.3.3.4.1 + // https://promisesaplus.com/#point-61 + // Ignore post-resolution exceptions + if ( depth + 1 >= maxDepth ) { + + // Only substitute handlers pass on context + // and multiple values (non-spec behavior) + if ( handler !== Thrower ) { + that = undefined; + args = [ e ]; + } + + deferred.rejectWith( that, args ); + } + } + }; + + // Support: Promises/A+ section 2.3.3.3.1 + // https://promisesaplus.com/#point-57 + // Re-resolve promises immediately to dodge false rejection from + // subsequent errors + if ( depth ) { + process(); + } else { + + // Call an optional hook to record the stack, in case of exception + // since it's otherwise lost when execution goes async + if ( jQuery.Deferred.getStackHook ) { + process.stackTrace = jQuery.Deferred.getStackHook(); + } + window.setTimeout( process ); + } + }; + } + + return jQuery.Deferred( function( newDefer ) { + + // progress_handlers.add( ... ) + tuples[ 0 ][ 3 ].add( + resolve( + 0, + newDefer, + jQuery.isFunction( onProgress ) ? + onProgress : + Identity, + newDefer.notifyWith + ) + ); + + // fulfilled_handlers.add( ... ) + tuples[ 1 ][ 3 ].add( + resolve( + 0, + newDefer, + jQuery.isFunction( onFulfilled ) ? + onFulfilled : + Identity + ) + ); + + // rejected_handlers.add( ... ) + tuples[ 2 ][ 3 ].add( + resolve( + 0, + newDefer, + jQuery.isFunction( onRejected ) ? + onRejected : + Thrower + ) + ); + } ).promise(); + }, + + // Get a promise for this deferred + // If obj is provided, the promise aspect is added to the object + promise: function( obj ) { + return obj != null ? jQuery.extend( obj, promise ) : promise; + } + }, + deferred = {}; + + // Add list-specific methods + jQuery.each( tuples, function( i, tuple ) { + var list = tuple[ 2 ], + stateString = tuple[ 5 ]; + + // promise.progress = list.add + // promise.done = list.add + // promise.fail = list.add + promise[ tuple[ 1 ] ] = list.add; + + // Handle state + if ( stateString ) { + list.add( + function() { + + // state = "resolved" (i.e., fulfilled) + // state = "rejected" + state = stateString; + }, + + // rejected_callbacks.disable + // fulfilled_callbacks.disable + tuples[ 3 - i ][ 2 ].disable, + + // progress_callbacks.lock + tuples[ 0 ][ 2 ].lock + ); + } + + // progress_handlers.fire + // fulfilled_handlers.fire + // rejected_handlers.fire + list.add( tuple[ 3 ].fire ); + + // deferred.notify = function() { deferred.notifyWith(...) } + // deferred.resolve = function() { deferred.resolveWith(...) } + // deferred.reject = function() { deferred.rejectWith(...) } + deferred[ tuple[ 0 ] ] = function() { + deferred[ tuple[ 0 ] + "With" ]( this === deferred ? undefined : this, arguments ); + return this; + }; + + // deferred.notifyWith = list.fireWith + // deferred.resolveWith = list.fireWith + // deferred.rejectWith = list.fireWith + deferred[ tuple[ 0 ] + "With" ] = list.fireWith; + } ); + + // Make the deferred a promise + promise.promise( deferred ); + + // Call given func if any + if ( func ) { + func.call( deferred, deferred ); + } + + // All done! + return deferred; + }, + + // Deferred helper + when: function( singleValue ) { + var + + // count of uncompleted subordinates + remaining = arguments.length, + + // count of unprocessed arguments + i = remaining, + + // subordinate fulfillment data + resolveContexts = Array( i ), + resolveValues = slice.call( arguments ), + + // the master Deferred + master = jQuery.Deferred(), + + // subordinate callback factory + updateFunc = function( i ) { + return function( value ) { + resolveContexts[ i ] = this; + resolveValues[ i ] = arguments.length > 1 ? slice.call( arguments ) : value; + if ( !( --remaining ) ) { + master.resolveWith( resolveContexts, resolveValues ); + } + }; + }; + + // Single- and empty arguments are adopted like Promise.resolve + if ( remaining <= 1 ) { + adoptValue( singleValue, master.done( updateFunc( i ) ).resolve, master.reject, + !remaining ); + + // Use .then() to unwrap secondary thenables (cf. gh-3000) + if ( master.state() === "pending" || + jQuery.isFunction( resolveValues[ i ] && resolveValues[ i ].then ) ) { + + return master.then(); + } + } + + // Multiple arguments are aggregated like Promise.all array elements + while ( i-- ) { + adoptValue( resolveValues[ i ], updateFunc( i ), master.reject ); + } + + return master.promise(); + } +} ); + + +// These usually indicate a programmer mistake during development, +// warn about them ASAP rather than swallowing them by default. +var rerrorNames = /^(Eval|Internal|Range|Reference|Syntax|Type|URI)Error$/; + +jQuery.Deferred.exceptionHook = function( error, stack ) { + + // Support: IE 8 - 9 only + // Console exists when dev tools are open, which can happen at any time + if ( window.console && window.console.warn && error && rerrorNames.test( error.name ) ) { + window.console.warn( "jQuery.Deferred exception: " + error.message, error.stack, stack ); + } +}; + + + + +jQuery.readyException = function( error ) { + window.setTimeout( function() { + throw error; + } ); +}; + + + + +// The deferred used on DOM ready +var readyList = jQuery.Deferred(); + +jQuery.fn.ready = function( fn ) { + + readyList + .then( fn ) + + // Wrap jQuery.readyException in a function so that the lookup + // happens at the time of error handling instead of callback + // registration. + .catch( function( error ) { + jQuery.readyException( error ); + } ); + + return this; +}; + +jQuery.extend( { + + // Is the DOM ready to be used? Set to true once it occurs. + isReady: false, + + // A counter to track how many items to wait for before + // the ready event fires. See #6781 + readyWait: 1, + + // Handle when the DOM is ready + ready: function( wait ) { + + // Abort if there are pending holds or we're already ready + if ( wait === true ? --jQuery.readyWait : jQuery.isReady ) { + return; + } + + // Remember that the DOM is ready + jQuery.isReady = true; + + // If a normal DOM Ready event fired, decrement, and wait if need be + if ( wait !== true && --jQuery.readyWait > 0 ) { + return; + } + + // If there are functions bound, to execute + readyList.resolveWith( document, [ jQuery ] ); + } +} ); + +jQuery.ready.then = readyList.then; + +// The ready event handler and self cleanup method +function completed() { + document.removeEventListener( "DOMContentLoaded", completed ); + window.removeEventListener( "load", completed ); + jQuery.ready(); +} + +// Catch cases where $(document).ready() is called +// after the browser event has already occurred. +// Support: IE <=9 - 10 only +// Older IE sometimes signals "interactive" too soon +if ( document.readyState === "complete" || + ( document.readyState !== "loading" && !document.documentElement.doScroll ) ) { + + // Handle it asynchronously to allow scripts the opportunity to delay ready + window.setTimeout( jQuery.ready ); + +} else { + + // Use the handy event callback + document.addEventListener( "DOMContentLoaded", completed ); + + // A fallback to window.onload, that will always work + window.addEventListener( "load", completed ); +} + + + + +// Multifunctional method to get and set values of a collection +// The value/s can optionally be executed if it's a function +var access = function( elems, fn, key, value, chainable, emptyGet, raw ) { + var i = 0, + len = elems.length, + bulk = key == null; + + // Sets many values + if ( jQuery.type( key ) === "object" ) { + chainable = true; + for ( i in key ) { + access( elems, fn, i, key[ i ], true, emptyGet, raw ); + } + + // Sets one value + } else if ( value !== undefined ) { + chainable = true; + + if ( !jQuery.isFunction( value ) ) { + raw = true; + } + + if ( bulk ) { + + // Bulk operations run against the entire set + if ( raw ) { + fn.call( elems, value ); + fn = null; + + // ...except when executing function values + } else { + bulk = fn; + fn = function( elem, key, value ) { + return bulk.call( jQuery( elem ), value ); + }; + } + } + + if ( fn ) { + for ( ; i < len; i++ ) { + fn( + elems[ i ], key, raw ? + value : + value.call( elems[ i ], i, fn( elems[ i ], key ) ) + ); + } + } + } + + if ( chainable ) { + return elems; + } + + // Gets + if ( bulk ) { + return fn.call( elems ); + } + + return len ? fn( elems[ 0 ], key ) : emptyGet; +}; +var acceptData = function( owner ) { + + // Accepts only: + // - Node + // - Node.ELEMENT_NODE + // - Node.DOCUMENT_NODE + // - Object + // - Any + return owner.nodeType === 1 || owner.nodeType === 9 || !( +owner.nodeType ); +}; + + + + +function Data() { + this.expando = jQuery.expando + Data.uid++; +} + +Data.uid = 1; + +Data.prototype = { + + cache: function( owner ) { + + // Check if the owner object already has a cache + var value = owner[ this.expando ]; + + // If not, create one + if ( !value ) { + value = {}; + + // We can accept data for non-element nodes in modern browsers, + // but we should not, see #8335. + // Always return an empty object. + if ( acceptData( owner ) ) { + + // If it is a node unlikely to be stringify-ed or looped over + // use plain assignment + if ( owner.nodeType ) { + owner[ this.expando ] = value; + + // Otherwise secure it in a non-enumerable property + // configurable must be true to allow the property to be + // deleted when data is removed + } else { + Object.defineProperty( owner, this.expando, { + value: value, + configurable: true + } ); + } + } + } + + return value; + }, + set: function( owner, data, value ) { + var prop, + cache = this.cache( owner ); + + // Handle: [ owner, key, value ] args + // Always use camelCase key (gh-2257) + if ( typeof data === "string" ) { + cache[ jQuery.camelCase( data ) ] = value; + + // Handle: [ owner, { properties } ] args + } else { + + // Copy the properties one-by-one to the cache object + for ( prop in data ) { + cache[ jQuery.camelCase( prop ) ] = data[ prop ]; + } + } + return cache; + }, + get: function( owner, key ) { + return key === undefined ? + this.cache( owner ) : + + // Always use camelCase key (gh-2257) + owner[ this.expando ] && owner[ this.expando ][ jQuery.camelCase( key ) ]; + }, + access: function( owner, key, value ) { + + // In cases where either: + // + // 1. No key was specified + // 2. A string key was specified, but no value provided + // + // Take the "read" path and allow the get method to determine + // which value to return, respectively either: + // + // 1. The entire cache object + // 2. The data stored at the key + // + if ( key === undefined || + ( ( key && typeof key === "string" ) && value === undefined ) ) { + + return this.get( owner, key ); + } + + // When the key is not a string, or both a key and value + // are specified, set or extend (existing objects) with either: + // + // 1. An object of properties + // 2. A key and value + // + this.set( owner, key, value ); + + // Since the "set" path can have two possible entry points + // return the expected data based on which path was taken[*] + return value !== undefined ? value : key; + }, + remove: function( owner, key ) { + var i, + cache = owner[ this.expando ]; + + if ( cache === undefined ) { + return; + } + + if ( key !== undefined ) { + + // Support array or space separated string of keys + if ( Array.isArray( key ) ) { + + // If key is an array of keys... + // We always set camelCase keys, so remove that. + key = key.map( jQuery.camelCase ); + } else { + key = jQuery.camelCase( key ); + + // If a key with the spaces exists, use it. + // Otherwise, create an array by matching non-whitespace + key = key in cache ? + [ key ] : + ( key.match( rnothtmlwhite ) || [] ); + } + + i = key.length; + + while ( i-- ) { + delete cache[ key[ i ] ]; + } + } + + // Remove the expando if there's no more data + if ( key === undefined || jQuery.isEmptyObject( cache ) ) { + + // Support: Chrome <=35 - 45 + // Webkit & Blink performance suffers when deleting properties + // from DOM nodes, so set to undefined instead + // https://bugs.chromium.org/p/chromium/issues/detail?id=378607 (bug restricted) + if ( owner.nodeType ) { + owner[ this.expando ] = undefined; + } else { + delete owner[ this.expando ]; + } + } + }, + hasData: function( owner ) { + var cache = owner[ this.expando ]; + return cache !== undefined && !jQuery.isEmptyObject( cache ); + } +}; +var dataPriv = new Data(); + +var dataUser = new Data(); + + + +// Implementation Summary +// +// 1. Enforce API surface and semantic compatibility with 1.9.x branch +// 2. Improve the module's maintainability by reducing the storage +// paths to a single mechanism. +// 3. Use the same single mechanism to support "private" and "user" data. +// 4. _Never_ expose "private" data to user code (TODO: Drop _data, _removeData) +// 5. Avoid exposing implementation details on user objects (eg. expando properties) +// 6. Provide a clear path for implementation upgrade to WeakMap in 2014 + +var rbrace = /^(?:\{[\w\W]*\}|\[[\w\W]*\])$/, + rmultiDash = /[A-Z]/g; + +function getData( data ) { + if ( data === "true" ) { + return true; + } + + if ( data === "false" ) { + return false; + } + + if ( data === "null" ) { + return null; + } + + // Only convert to a number if it doesn't change the string + if ( data === +data + "" ) { + return +data; + } + + if ( rbrace.test( data ) ) { + return JSON.parse( data ); + } + + return data; +} + +function dataAttr( elem, key, data ) { + var name; + + // If nothing was found internally, try to fetch any + // data from the HTML5 data-* attribute + if ( data === undefined && elem.nodeType === 1 ) { + name = "data-" + key.replace( rmultiDash, "-$&" ).toLowerCase(); + data = elem.getAttribute( name ); + + if ( typeof data === "string" ) { + try { + data = getData( data ); + } catch ( e ) {} + + // Make sure we set the data so it isn't changed later + dataUser.set( elem, key, data ); + } else { + data = undefined; + } + } + return data; +} + +jQuery.extend( { + hasData: function( elem ) { + return dataUser.hasData( elem ) || dataPriv.hasData( elem ); + }, + + data: function( elem, name, data ) { + return dataUser.access( elem, name, data ); + }, + + removeData: function( elem, name ) { + dataUser.remove( elem, name ); + }, + + // TODO: Now that all calls to _data and _removeData have been replaced + // with direct calls to dataPriv methods, these can be deprecated. + _data: function( elem, name, data ) { + return dataPriv.access( elem, name, data ); + }, + + _removeData: function( elem, name ) { + dataPriv.remove( elem, name ); + } +} ); + +jQuery.fn.extend( { + data: function( key, value ) { + var i, name, data, + elem = this[ 0 ], + attrs = elem && elem.attributes; + + // Gets all values + if ( key === undefined ) { + if ( this.length ) { + data = dataUser.get( elem ); + + if ( elem.nodeType === 1 && !dataPriv.get( elem, "hasDataAttrs" ) ) { + i = attrs.length; + while ( i-- ) { + + // Support: IE 11 only + // The attrs elements can be null (#14894) + if ( attrs[ i ] ) { + name = attrs[ i ].name; + if ( name.indexOf( "data-" ) === 0 ) { + name = jQuery.camelCase( name.slice( 5 ) ); + dataAttr( elem, name, data[ name ] ); + } + } + } + dataPriv.set( elem, "hasDataAttrs", true ); + } + } + + return data; + } + + // Sets multiple values + if ( typeof key === "object" ) { + return this.each( function() { + dataUser.set( this, key ); + } ); + } + + return access( this, function( value ) { + var data; + + // The calling jQuery object (element matches) is not empty + // (and therefore has an element appears at this[ 0 ]) and the + // `value` parameter was not undefined. An empty jQuery object + // will result in `undefined` for elem = this[ 0 ] which will + // throw an exception if an attempt to read a data cache is made. + if ( elem && value === undefined ) { + + // Attempt to get data from the cache + // The key will always be camelCased in Data + data = dataUser.get( elem, key ); + if ( data !== undefined ) { + return data; + } + + // Attempt to "discover" the data in + // HTML5 custom data-* attrs + data = dataAttr( elem, key ); + if ( data !== undefined ) { + return data; + } + + // We tried really hard, but the data doesn't exist. + return; + } + + // Set the data... + this.each( function() { + + // We always store the camelCased key + dataUser.set( this, key, value ); + } ); + }, null, value, arguments.length > 1, null, true ); + }, + + removeData: function( key ) { + return this.each( function() { + dataUser.remove( this, key ); + } ); + } +} ); + + +jQuery.extend( { + queue: function( elem, type, data ) { + var queue; + + if ( elem ) { + type = ( type || "fx" ) + "queue"; + queue = dataPriv.get( elem, type ); + + // Speed up dequeue by getting out quickly if this is just a lookup + if ( data ) { + if ( !queue || Array.isArray( data ) ) { + queue = dataPriv.access( elem, type, jQuery.makeArray( data ) ); + } else { + queue.push( data ); + } + } + return queue || []; + } + }, + + dequeue: function( elem, type ) { + type = type || "fx"; + + var queue = jQuery.queue( elem, type ), + startLength = queue.length, + fn = queue.shift(), + hooks = jQuery._queueHooks( elem, type ), + next = function() { + jQuery.dequeue( elem, type ); + }; + + // If the fx queue is dequeued, always remove the progress sentinel + if ( fn === "inprogress" ) { + fn = queue.shift(); + startLength--; + } + + if ( fn ) { + + // Add a progress sentinel to prevent the fx queue from being + // automatically dequeued + if ( type === "fx" ) { + queue.unshift( "inprogress" ); + } + + // Clear up the last queue stop function + delete hooks.stop; + fn.call( elem, next, hooks ); + } + + if ( !startLength && hooks ) { + hooks.empty.fire(); + } + }, + + // Not public - generate a queueHooks object, or return the current one + _queueHooks: function( elem, type ) { + var key = type + "queueHooks"; + return dataPriv.get( elem, key ) || dataPriv.access( elem, key, { + empty: jQuery.Callbacks( "once memory" ).add( function() { + dataPriv.remove( elem, [ type + "queue", key ] ); + } ) + } ); + } +} ); + +jQuery.fn.extend( { + queue: function( type, data ) { + var setter = 2; + + if ( typeof type !== "string" ) { + data = type; + type = "fx"; + setter--; + } + + if ( arguments.length < setter ) { + return jQuery.queue( this[ 0 ], type ); + } + + return data === undefined ? + this : + this.each( function() { + var queue = jQuery.queue( this, type, data ); + + // Ensure a hooks for this queue + jQuery._queueHooks( this, type ); + + if ( type === "fx" && queue[ 0 ] !== "inprogress" ) { + jQuery.dequeue( this, type ); + } + } ); + }, + dequeue: function( type ) { + return this.each( function() { + jQuery.dequeue( this, type ); + } ); + }, + clearQueue: function( type ) { + return this.queue( type || "fx", [] ); + }, + + // Get a promise resolved when queues of a certain type + // are emptied (fx is the type by default) + promise: function( type, obj ) { + var tmp, + count = 1, + defer = jQuery.Deferred(), + elements = this, + i = this.length, + resolve = function() { + if ( !( --count ) ) { + defer.resolveWith( elements, [ elements ] ); + } + }; + + if ( typeof type !== "string" ) { + obj = type; + type = undefined; + } + type = type || "fx"; + + while ( i-- ) { + tmp = dataPriv.get( elements[ i ], type + "queueHooks" ); + if ( tmp && tmp.empty ) { + count++; + tmp.empty.add( resolve ); + } + } + resolve(); + return defer.promise( obj ); + } +} ); +var pnum = ( /[+-]?(?:\d*\.|)\d+(?:[eE][+-]?\d+|)/ ).source; + +var rcssNum = new RegExp( "^(?:([+-])=|)(" + pnum + ")([a-z%]*)$", "i" ); + + +var cssExpand = [ "Top", "Right", "Bottom", "Left" ]; + +var isHiddenWithinTree = function( elem, el ) { + + // isHiddenWithinTree might be called from jQuery#filter function; + // in that case, element will be second argument + elem = el || elem; + + // Inline style trumps all + return elem.style.display === "none" || + elem.style.display === "" && + + // Otherwise, check computed style + // Support: Firefox <=43 - 45 + // Disconnected elements can have computed display: none, so first confirm that elem is + // in the document. + jQuery.contains( elem.ownerDocument, elem ) && + + jQuery.css( elem, "display" ) === "none"; + }; + +var swap = function( elem, options, callback, args ) { + var ret, name, + old = {}; + + // Remember the old values, and insert the new ones + for ( name in options ) { + old[ name ] = elem.style[ name ]; + elem.style[ name ] = options[ name ]; + } + + ret = callback.apply( elem, args || [] ); + + // Revert the old values + for ( name in options ) { + elem.style[ name ] = old[ name ]; + } + + return ret; +}; + + + + +function adjustCSS( elem, prop, valueParts, tween ) { + var adjusted, + scale = 1, + maxIterations = 20, + currentValue = tween ? + function() { + return tween.cur(); + } : + function() { + return jQuery.css( elem, prop, "" ); + }, + initial = currentValue(), + unit = valueParts && valueParts[ 3 ] || ( jQuery.cssNumber[ prop ] ? "" : "px" ), + + // Starting value computation is required for potential unit mismatches + initialInUnit = ( jQuery.cssNumber[ prop ] || unit !== "px" && +initial ) && + rcssNum.exec( jQuery.css( elem, prop ) ); + + if ( initialInUnit && initialInUnit[ 3 ] !== unit ) { + + // Trust units reported by jQuery.css + unit = unit || initialInUnit[ 3 ]; + + // Make sure we update the tween properties later on + valueParts = valueParts || []; + + // Iteratively approximate from a nonzero starting point + initialInUnit = +initial || 1; + + do { + + // If previous iteration zeroed out, double until we get *something*. + // Use string for doubling so we don't accidentally see scale as unchanged below + scale = scale || ".5"; + + // Adjust and apply + initialInUnit = initialInUnit / scale; + jQuery.style( elem, prop, initialInUnit + unit ); + + // Update scale, tolerating zero or NaN from tween.cur() + // Break the loop if scale is unchanged or perfect, or if we've just had enough. + } while ( + scale !== ( scale = currentValue() / initial ) && scale !== 1 && --maxIterations + ); + } + + if ( valueParts ) { + initialInUnit = +initialInUnit || +initial || 0; + + // Apply relative offset (+=/-=) if specified + adjusted = valueParts[ 1 ] ? + initialInUnit + ( valueParts[ 1 ] + 1 ) * valueParts[ 2 ] : + +valueParts[ 2 ]; + if ( tween ) { + tween.unit = unit; + tween.start = initialInUnit; + tween.end = adjusted; + } + } + return adjusted; +} + + +var defaultDisplayMap = {}; + +function getDefaultDisplay( elem ) { + var temp, + doc = elem.ownerDocument, + nodeName = elem.nodeName, + display = defaultDisplayMap[ nodeName ]; + + if ( display ) { + return display; + } + + temp = doc.body.appendChild( doc.createElement( nodeName ) ); + display = jQuery.css( temp, "display" ); + + temp.parentNode.removeChild( temp ); + + if ( display === "none" ) { + display = "block"; + } + defaultDisplayMap[ nodeName ] = display; + + return display; +} + +function showHide( elements, show ) { + var display, elem, + values = [], + index = 0, + length = elements.length; + + // Determine new display value for elements that need to change + for ( ; index < length; index++ ) { + elem = elements[ index ]; + if ( !elem.style ) { + continue; + } + + display = elem.style.display; + if ( show ) { + + // Since we force visibility upon cascade-hidden elements, an immediate (and slow) + // check is required in this first loop unless we have a nonempty display value (either + // inline or about-to-be-restored) + if ( display === "none" ) { + values[ index ] = dataPriv.get( elem, "display" ) || null; + if ( !values[ index ] ) { + elem.style.display = ""; + } + } + if ( elem.style.display === "" && isHiddenWithinTree( elem ) ) { + values[ index ] = getDefaultDisplay( elem ); + } + } else { + if ( display !== "none" ) { + values[ index ] = "none"; + + // Remember what we're overwriting + dataPriv.set( elem, "display", display ); + } + } + } + + // Set the display of the elements in a second loop to avoid constant reflow + for ( index = 0; index < length; index++ ) { + if ( values[ index ] != null ) { + elements[ index ].style.display = values[ index ]; + } + } + + return elements; +} + +jQuery.fn.extend( { + show: function() { + return showHide( this, true ); + }, + hide: function() { + return showHide( this ); + }, + toggle: function( state ) { + if ( typeof state === "boolean" ) { + return state ? this.show() : this.hide(); + } + + return this.each( function() { + if ( isHiddenWithinTree( this ) ) { + jQuery( this ).show(); + } else { + jQuery( this ).hide(); + } + } ); + } +} ); +var rcheckableType = ( /^(?:checkbox|radio)$/i ); + +var rtagName = ( /<([a-z][^\/\0>\x20\t\r\n\f]+)/i ); + +var rscriptType = ( /^$|\/(?:java|ecma)script/i ); + + + +// We have to close these tags to support XHTML (#13200) +var wrapMap = { + + // Support: IE <=9 only + option: [ 1, "" ], + + // XHTML parsers do not magically insert elements in the + // same way that tag soup parsers do. So we cannot shorten + // this by omitting or other required elements. + thead: [ 1, "", "
" ], + col: [ 2, "", "
" ], + tr: [ 2, "", "
" ], + td: [ 3, "", "
" ], + + _default: [ 0, "", "" ] +}; + +// Support: IE <=9 only +wrapMap.optgroup = wrapMap.option; + +wrapMap.tbody = wrapMap.tfoot = wrapMap.colgroup = wrapMap.caption = wrapMap.thead; +wrapMap.th = wrapMap.td; + + +function getAll( context, tag ) { + + // Support: IE <=9 - 11 only + // Use typeof to avoid zero-argument method invocation on host objects (#15151) + var ret; + + if ( typeof context.getElementsByTagName !== "undefined" ) { + ret = context.getElementsByTagName( tag || "*" ); + + } else if ( typeof context.querySelectorAll !== "undefined" ) { + ret = context.querySelectorAll( tag || "*" ); + + } else { + ret = []; + } + + if ( tag === undefined || tag && nodeName( context, tag ) ) { + return jQuery.merge( [ context ], ret ); + } + + return ret; +} + + +// Mark scripts as having already been evaluated +function setGlobalEval( elems, refElements ) { + var i = 0, + l = elems.length; + + for ( ; i < l; i++ ) { + dataPriv.set( + elems[ i ], + "globalEval", + !refElements || dataPriv.get( refElements[ i ], "globalEval" ) + ); + } +} + + +var rhtml = /<|&#?\w+;/; + +function buildFragment( elems, context, scripts, selection, ignored ) { + var elem, tmp, tag, wrap, contains, j, + fragment = context.createDocumentFragment(), + nodes = [], + i = 0, + l = elems.length; + + for ( ; i < l; i++ ) { + elem = elems[ i ]; + + if ( elem || elem === 0 ) { + + // Add nodes directly + if ( jQuery.type( elem ) === "object" ) { + + // Support: Android <=4.0 only, PhantomJS 1 only + // push.apply(_, arraylike) throws on ancient WebKit + jQuery.merge( nodes, elem.nodeType ? [ elem ] : elem ); + + // Convert non-html into a text node + } else if ( !rhtml.test( elem ) ) { + nodes.push( context.createTextNode( elem ) ); + + // Convert html into DOM nodes + } else { + tmp = tmp || fragment.appendChild( context.createElement( "div" ) ); + + // Deserialize a standard representation + tag = ( rtagName.exec( elem ) || [ "", "" ] )[ 1 ].toLowerCase(); + wrap = wrapMap[ tag ] || wrapMap._default; + tmp.innerHTML = wrap[ 1 ] + jQuery.htmlPrefilter( elem ) + wrap[ 2 ]; + + // Descend through wrappers to the right content + j = wrap[ 0 ]; + while ( j-- ) { + tmp = tmp.lastChild; + } + + // Support: Android <=4.0 only, PhantomJS 1 only + // push.apply(_, arraylike) throws on ancient WebKit + jQuery.merge( nodes, tmp.childNodes ); + + // Remember the top-level container + tmp = fragment.firstChild; + + // Ensure the created nodes are orphaned (#12392) + tmp.textContent = ""; + } + } + } + + // Remove wrapper from fragment + fragment.textContent = ""; + + i = 0; + while ( ( elem = nodes[ i++ ] ) ) { + + // Skip elements already in the context collection (trac-4087) + if ( selection && jQuery.inArray( elem, selection ) > -1 ) { + if ( ignored ) { + ignored.push( elem ); + } + continue; + } + + contains = jQuery.contains( elem.ownerDocument, elem ); + + // Append to fragment + tmp = getAll( fragment.appendChild( elem ), "script" ); + + // Preserve script evaluation history + if ( contains ) { + setGlobalEval( tmp ); + } + + // Capture executables + if ( scripts ) { + j = 0; + while ( ( elem = tmp[ j++ ] ) ) { + if ( rscriptType.test( elem.type || "" ) ) { + scripts.push( elem ); + } + } + } + } + + return fragment; +} + + +( function() { + var fragment = document.createDocumentFragment(), + div = fragment.appendChild( document.createElement( "div" ) ), + input = document.createElement( "input" ); + + // Support: Android 4.0 - 4.3 only + // Check state lost if the name is set (#11217) + // Support: Windows Web Apps (WWA) + // `name` and `type` must use .setAttribute for WWA (#14901) + input.setAttribute( "type", "radio" ); + input.setAttribute( "checked", "checked" ); + input.setAttribute( "name", "t" ); + + div.appendChild( input ); + + // Support: Android <=4.1 only + // Older WebKit doesn't clone checked state correctly in fragments + support.checkClone = div.cloneNode( true ).cloneNode( true ).lastChild.checked; + + // Support: IE <=11 only + // Make sure textarea (and checkbox) defaultValue is properly cloned + div.innerHTML = ""; + support.noCloneChecked = !!div.cloneNode( true ).lastChild.defaultValue; +} )(); +var documentElement = document.documentElement; + + + +var + rkeyEvent = /^key/, + rmouseEvent = /^(?:mouse|pointer|contextmenu|drag|drop)|click/, + rtypenamespace = /^([^.]*)(?:\.(.+)|)/; + +function returnTrue() { + return true; +} + +function returnFalse() { + return false; +} + +// Support: IE <=9 only +// See #13393 for more info +function safeActiveElement() { + try { + return document.activeElement; + } catch ( err ) { } +} + +function on( elem, types, selector, data, fn, one ) { + var origFn, type; + + // Types can be a map of types/handlers + if ( typeof types === "object" ) { + + // ( types-Object, selector, data ) + if ( typeof selector !== "string" ) { + + // ( types-Object, data ) + data = data || selector; + selector = undefined; + } + for ( type in types ) { + on( elem, type, selector, data, types[ type ], one ); + } + return elem; + } + + if ( data == null && fn == null ) { + + // ( types, fn ) + fn = selector; + data = selector = undefined; + } else if ( fn == null ) { + if ( typeof selector === "string" ) { + + // ( types, selector, fn ) + fn = data; + data = undefined; + } else { + + // ( types, data, fn ) + fn = data; + data = selector; + selector = undefined; + } + } + if ( fn === false ) { + fn = returnFalse; + } else if ( !fn ) { + return elem; + } + + if ( one === 1 ) { + origFn = fn; + fn = function( event ) { + + // Can use an empty set, since event contains the info + jQuery().off( event ); + return origFn.apply( this, arguments ); + }; + + // Use same guid so caller can remove using origFn + fn.guid = origFn.guid || ( origFn.guid = jQuery.guid++ ); + } + return elem.each( function() { + jQuery.event.add( this, types, fn, data, selector ); + } ); +} + +/* + * Helper functions for managing events -- not part of the public interface. + * Props to Dean Edwards' addEvent library for many of the ideas. + */ +jQuery.event = { + + global: {}, + + add: function( elem, types, handler, data, selector ) { + + var handleObjIn, eventHandle, tmp, + events, t, handleObj, + special, handlers, type, namespaces, origType, + elemData = dataPriv.get( elem ); + + // Don't attach events to noData or text/comment nodes (but allow plain objects) + if ( !elemData ) { + return; + } + + // Caller can pass in an object of custom data in lieu of the handler + if ( handler.handler ) { + handleObjIn = handler; + handler = handleObjIn.handler; + selector = handleObjIn.selector; + } + + // Ensure that invalid selectors throw exceptions at attach time + // Evaluate against documentElement in case elem is a non-element node (e.g., document) + if ( selector ) { + jQuery.find.matchesSelector( documentElement, selector ); + } + + // Make sure that the handler has a unique ID, used to find/remove it later + if ( !handler.guid ) { + handler.guid = jQuery.guid++; + } + + // Init the element's event structure and main handler, if this is the first + if ( !( events = elemData.events ) ) { + events = elemData.events = {}; + } + if ( !( eventHandle = elemData.handle ) ) { + eventHandle = elemData.handle = function( e ) { + + // Discard the second event of a jQuery.event.trigger() and + // when an event is called after a page has unloaded + return typeof jQuery !== "undefined" && jQuery.event.triggered !== e.type ? + jQuery.event.dispatch.apply( elem, arguments ) : undefined; + }; + } + + // Handle multiple events separated by a space + types = ( types || "" ).match( rnothtmlwhite ) || [ "" ]; + t = types.length; + while ( t-- ) { + tmp = rtypenamespace.exec( types[ t ] ) || []; + type = origType = tmp[ 1 ]; + namespaces = ( tmp[ 2 ] || "" ).split( "." ).sort(); + + // There *must* be a type, no attaching namespace-only handlers + if ( !type ) { + continue; + } + + // If event changes its type, use the special event handlers for the changed type + special = jQuery.event.special[ type ] || {}; + + // If selector defined, determine special event api type, otherwise given type + type = ( selector ? special.delegateType : special.bindType ) || type; + + // Update special based on newly reset type + special = jQuery.event.special[ type ] || {}; + + // handleObj is passed to all event handlers + handleObj = jQuery.extend( { + type: type, + origType: origType, + data: data, + handler: handler, + guid: handler.guid, + selector: selector, + needsContext: selector && jQuery.expr.match.needsContext.test( selector ), + namespace: namespaces.join( "." ) + }, handleObjIn ); + + // Init the event handler queue if we're the first + if ( !( handlers = events[ type ] ) ) { + handlers = events[ type ] = []; + handlers.delegateCount = 0; + + // Only use addEventListener if the special events handler returns false + if ( !special.setup || + special.setup.call( elem, data, namespaces, eventHandle ) === false ) { + + if ( elem.addEventListener ) { + elem.addEventListener( type, eventHandle ); + } + } + } + + if ( special.add ) { + special.add.call( elem, handleObj ); + + if ( !handleObj.handler.guid ) { + handleObj.handler.guid = handler.guid; + } + } + + // Add to the element's handler list, delegates in front + if ( selector ) { + handlers.splice( handlers.delegateCount++, 0, handleObj ); + } else { + handlers.push( handleObj ); + } + + // Keep track of which events have ever been used, for event optimization + jQuery.event.global[ type ] = true; + } + + }, + + // Detach an event or set of events from an element + remove: function( elem, types, handler, selector, mappedTypes ) { + + var j, origCount, tmp, + events, t, handleObj, + special, handlers, type, namespaces, origType, + elemData = dataPriv.hasData( elem ) && dataPriv.get( elem ); + + if ( !elemData || !( events = elemData.events ) ) { + return; + } + + // Once for each type.namespace in types; type may be omitted + types = ( types || "" ).match( rnothtmlwhite ) || [ "" ]; + t = types.length; + while ( t-- ) { + tmp = rtypenamespace.exec( types[ t ] ) || []; + type = origType = tmp[ 1 ]; + namespaces = ( tmp[ 2 ] || "" ).split( "." ).sort(); + + // Unbind all events (on this namespace, if provided) for the element + if ( !type ) { + for ( type in events ) { + jQuery.event.remove( elem, type + types[ t ], handler, selector, true ); + } + continue; + } + + special = jQuery.event.special[ type ] || {}; + type = ( selector ? special.delegateType : special.bindType ) || type; + handlers = events[ type ] || []; + tmp = tmp[ 2 ] && + new RegExp( "(^|\\.)" + namespaces.join( "\\.(?:.*\\.|)" ) + "(\\.|$)" ); + + // Remove matching events + origCount = j = handlers.length; + while ( j-- ) { + handleObj = handlers[ j ]; + + if ( ( mappedTypes || origType === handleObj.origType ) && + ( !handler || handler.guid === handleObj.guid ) && + ( !tmp || tmp.test( handleObj.namespace ) ) && + ( !selector || selector === handleObj.selector || + selector === "**" && handleObj.selector ) ) { + handlers.splice( j, 1 ); + + if ( handleObj.selector ) { + handlers.delegateCount--; + } + if ( special.remove ) { + special.remove.call( elem, handleObj ); + } + } + } + + // Remove generic event handler if we removed something and no more handlers exist + // (avoids potential for endless recursion during removal of special event handlers) + if ( origCount && !handlers.length ) { + if ( !special.teardown || + special.teardown.call( elem, namespaces, elemData.handle ) === false ) { + + jQuery.removeEvent( elem, type, elemData.handle ); + } + + delete events[ type ]; + } + } + + // Remove data and the expando if it's no longer used + if ( jQuery.isEmptyObject( events ) ) { + dataPriv.remove( elem, "handle events" ); + } + }, + + dispatch: function( nativeEvent ) { + + // Make a writable jQuery.Event from the native event object + var event = jQuery.event.fix( nativeEvent ); + + var i, j, ret, matched, handleObj, handlerQueue, + args = new Array( arguments.length ), + handlers = ( dataPriv.get( this, "events" ) || {} )[ event.type ] || [], + special = jQuery.event.special[ event.type ] || {}; + + // Use the fix-ed jQuery.Event rather than the (read-only) native event + args[ 0 ] = event; + + for ( i = 1; i < arguments.length; i++ ) { + args[ i ] = arguments[ i ]; + } + + event.delegateTarget = this; + + // Call the preDispatch hook for the mapped type, and let it bail if desired + if ( special.preDispatch && special.preDispatch.call( this, event ) === false ) { + return; + } + + // Determine handlers + handlerQueue = jQuery.event.handlers.call( this, event, handlers ); + + // Run delegates first; they may want to stop propagation beneath us + i = 0; + while ( ( matched = handlerQueue[ i++ ] ) && !event.isPropagationStopped() ) { + event.currentTarget = matched.elem; + + j = 0; + while ( ( handleObj = matched.handlers[ j++ ] ) && + !event.isImmediatePropagationStopped() ) { + + // Triggered event must either 1) have no namespace, or 2) have namespace(s) + // a subset or equal to those in the bound event (both can have no namespace). + if ( !event.rnamespace || event.rnamespace.test( handleObj.namespace ) ) { + + event.handleObj = handleObj; + event.data = handleObj.data; + + ret = ( ( jQuery.event.special[ handleObj.origType ] || {} ).handle || + handleObj.handler ).apply( matched.elem, args ); + + if ( ret !== undefined ) { + if ( ( event.result = ret ) === false ) { + event.preventDefault(); + event.stopPropagation(); + } + } + } + } + } + + // Call the postDispatch hook for the mapped type + if ( special.postDispatch ) { + special.postDispatch.call( this, event ); + } + + return event.result; + }, + + handlers: function( event, handlers ) { + var i, handleObj, sel, matchedHandlers, matchedSelectors, + handlerQueue = [], + delegateCount = handlers.delegateCount, + cur = event.target; + + // Find delegate handlers + if ( delegateCount && + + // Support: IE <=9 + // Black-hole SVG instance trees (trac-13180) + cur.nodeType && + + // Support: Firefox <=42 + // Suppress spec-violating clicks indicating a non-primary pointer button (trac-3861) + // https://www.w3.org/TR/DOM-Level-3-Events/#event-type-click + // Support: IE 11 only + // ...but not arrow key "clicks" of radio inputs, which can have `button` -1 (gh-2343) + !( event.type === "click" && event.button >= 1 ) ) { + + for ( ; cur !== this; cur = cur.parentNode || this ) { + + // Don't check non-elements (#13208) + // Don't process clicks on disabled elements (#6911, #8165, #11382, #11764) + if ( cur.nodeType === 1 && !( event.type === "click" && cur.disabled === true ) ) { + matchedHandlers = []; + matchedSelectors = {}; + for ( i = 0; i < delegateCount; i++ ) { + handleObj = handlers[ i ]; + + // Don't conflict with Object.prototype properties (#13203) + sel = handleObj.selector + " "; + + if ( matchedSelectors[ sel ] === undefined ) { + matchedSelectors[ sel ] = handleObj.needsContext ? + jQuery( sel, this ).index( cur ) > -1 : + jQuery.find( sel, this, null, [ cur ] ).length; + } + if ( matchedSelectors[ sel ] ) { + matchedHandlers.push( handleObj ); + } + } + if ( matchedHandlers.length ) { + handlerQueue.push( { elem: cur, handlers: matchedHandlers } ); + } + } + } + } + + // Add the remaining (directly-bound) handlers + cur = this; + if ( delegateCount < handlers.length ) { + handlerQueue.push( { elem: cur, handlers: handlers.slice( delegateCount ) } ); + } + + return handlerQueue; + }, + + addProp: function( name, hook ) { + Object.defineProperty( jQuery.Event.prototype, name, { + enumerable: true, + configurable: true, + + get: jQuery.isFunction( hook ) ? + function() { + if ( this.originalEvent ) { + return hook( this.originalEvent ); + } + } : + function() { + if ( this.originalEvent ) { + return this.originalEvent[ name ]; + } + }, + + set: function( value ) { + Object.defineProperty( this, name, { + enumerable: true, + configurable: true, + writable: true, + value: value + } ); + } + } ); + }, + + fix: function( originalEvent ) { + return originalEvent[ jQuery.expando ] ? + originalEvent : + new jQuery.Event( originalEvent ); + }, + + special: { + load: { + + // Prevent triggered image.load events from bubbling to window.load + noBubble: true + }, + focus: { + + // Fire native event if possible so blur/focus sequence is correct + trigger: function() { + if ( this !== safeActiveElement() && this.focus ) { + this.focus(); + return false; + } + }, + delegateType: "focusin" + }, + blur: { + trigger: function() { + if ( this === safeActiveElement() && this.blur ) { + this.blur(); + return false; + } + }, + delegateType: "focusout" + }, + click: { + + // For checkbox, fire native event so checked state will be right + trigger: function() { + if ( this.type === "checkbox" && this.click && nodeName( this, "input" ) ) { + this.click(); + return false; + } + }, + + // For cross-browser consistency, don't fire native .click() on links + _default: function( event ) { + return nodeName( event.target, "a" ); + } + }, + + beforeunload: { + postDispatch: function( event ) { + + // Support: Firefox 20+ + // Firefox doesn't alert if the returnValue field is not set. + if ( event.result !== undefined && event.originalEvent ) { + event.originalEvent.returnValue = event.result; + } + } + } + } +}; + +jQuery.removeEvent = function( elem, type, handle ) { + + // This "if" is needed for plain objects + if ( elem.removeEventListener ) { + elem.removeEventListener( type, handle ); + } +}; + +jQuery.Event = function( src, props ) { + + // Allow instantiation without the 'new' keyword + if ( !( this instanceof jQuery.Event ) ) { + return new jQuery.Event( src, props ); + } + + // Event object + if ( src && src.type ) { + this.originalEvent = src; + this.type = src.type; + + // Events bubbling up the document may have been marked as prevented + // by a handler lower down the tree; reflect the correct value. + this.isDefaultPrevented = src.defaultPrevented || + src.defaultPrevented === undefined && + + // Support: Android <=2.3 only + src.returnValue === false ? + returnTrue : + returnFalse; + + // Create target properties + // Support: Safari <=6 - 7 only + // Target should not be a text node (#504, #13143) + this.target = ( src.target && src.target.nodeType === 3 ) ? + src.target.parentNode : + src.target; + + this.currentTarget = src.currentTarget; + this.relatedTarget = src.relatedTarget; + + // Event type + } else { + this.type = src; + } + + // Put explicitly provided properties onto the event object + if ( props ) { + jQuery.extend( this, props ); + } + + // Create a timestamp if incoming event doesn't have one + this.timeStamp = src && src.timeStamp || jQuery.now(); + + // Mark it as fixed + this[ jQuery.expando ] = true; +}; + +// jQuery.Event is based on DOM3 Events as specified by the ECMAScript Language Binding +// https://www.w3.org/TR/2003/WD-DOM-Level-3-Events-20030331/ecma-script-binding.html +jQuery.Event.prototype = { + constructor: jQuery.Event, + isDefaultPrevented: returnFalse, + isPropagationStopped: returnFalse, + isImmediatePropagationStopped: returnFalse, + isSimulated: false, + + preventDefault: function() { + var e = this.originalEvent; + + this.isDefaultPrevented = returnTrue; + + if ( e && !this.isSimulated ) { + e.preventDefault(); + } + }, + stopPropagation: function() { + var e = this.originalEvent; + + this.isPropagationStopped = returnTrue; + + if ( e && !this.isSimulated ) { + e.stopPropagation(); + } + }, + stopImmediatePropagation: function() { + var e = this.originalEvent; + + this.isImmediatePropagationStopped = returnTrue; + + if ( e && !this.isSimulated ) { + e.stopImmediatePropagation(); + } + + this.stopPropagation(); + } +}; + +// Includes all common event props including KeyEvent and MouseEvent specific props +jQuery.each( { + altKey: true, + bubbles: true, + cancelable: true, + changedTouches: true, + ctrlKey: true, + detail: true, + eventPhase: true, + metaKey: true, + pageX: true, + pageY: true, + shiftKey: true, + view: true, + "char": true, + charCode: true, + key: true, + keyCode: true, + button: true, + buttons: true, + clientX: true, + clientY: true, + offsetX: true, + offsetY: true, + pointerId: true, + pointerType: true, + screenX: true, + screenY: true, + targetTouches: true, + toElement: true, + touches: true, + + which: function( event ) { + var button = event.button; + + // Add which for key events + if ( event.which == null && rkeyEvent.test( event.type ) ) { + return event.charCode != null ? event.charCode : event.keyCode; + } + + // Add which for click: 1 === left; 2 === middle; 3 === right + if ( !event.which && button !== undefined && rmouseEvent.test( event.type ) ) { + if ( button & 1 ) { + return 1; + } + + if ( button & 2 ) { + return 3; + } + + if ( button & 4 ) { + return 2; + } + + return 0; + } + + return event.which; + } +}, jQuery.event.addProp ); + +// Create mouseenter/leave events using mouseover/out and event-time checks +// so that event delegation works in jQuery. +// Do the same for pointerenter/pointerleave and pointerover/pointerout +// +// Support: Safari 7 only +// Safari sends mouseenter too often; see: +// https://bugs.chromium.org/p/chromium/issues/detail?id=470258 +// for the description of the bug (it existed in older Chrome versions as well). +jQuery.each( { + mouseenter: "mouseover", + mouseleave: "mouseout", + pointerenter: "pointerover", + pointerleave: "pointerout" +}, function( orig, fix ) { + jQuery.event.special[ orig ] = { + delegateType: fix, + bindType: fix, + + handle: function( event ) { + var ret, + target = this, + related = event.relatedTarget, + handleObj = event.handleObj; + + // For mouseenter/leave call the handler if related is outside the target. + // NB: No relatedTarget if the mouse left/entered the browser window + if ( !related || ( related !== target && !jQuery.contains( target, related ) ) ) { + event.type = handleObj.origType; + ret = handleObj.handler.apply( this, arguments ); + event.type = fix; + } + return ret; + } + }; +} ); + +jQuery.fn.extend( { + + on: function( types, selector, data, fn ) { + return on( this, types, selector, data, fn ); + }, + one: function( types, selector, data, fn ) { + return on( this, types, selector, data, fn, 1 ); + }, + off: function( types, selector, fn ) { + var handleObj, type; + if ( types && types.preventDefault && types.handleObj ) { + + // ( event ) dispatched jQuery.Event + handleObj = types.handleObj; + jQuery( types.delegateTarget ).off( + handleObj.namespace ? + handleObj.origType + "." + handleObj.namespace : + handleObj.origType, + handleObj.selector, + handleObj.handler + ); + return this; + } + if ( typeof types === "object" ) { + + // ( types-object [, selector] ) + for ( type in types ) { + this.off( type, selector, types[ type ] ); + } + return this; + } + if ( selector === false || typeof selector === "function" ) { + + // ( types [, fn] ) + fn = selector; + selector = undefined; + } + if ( fn === false ) { + fn = returnFalse; + } + return this.each( function() { + jQuery.event.remove( this, types, fn, selector ); + } ); + } +} ); + + +var + + /* eslint-disable max-len */ + + // See https://github.com/eslint/eslint/issues/3229 + rxhtmlTag = /<(?!area|br|col|embed|hr|img|input|link|meta|param)(([a-z][^\/\0>\x20\t\r\n\f]*)[^>]*)\/>/gi, + + /* eslint-enable */ + + // Support: IE <=10 - 11, Edge 12 - 13 + // In IE/Edge using regex groups here causes severe slowdowns. + // See https://connect.microsoft.com/IE/feedback/details/1736512/ + rnoInnerhtml = /\s*$/g; + +// Prefer a tbody over its parent table for containing new rows +function manipulationTarget( elem, content ) { + if ( nodeName( elem, "table" ) && + nodeName( content.nodeType !== 11 ? content : content.firstChild, "tr" ) ) { + + return jQuery( ">tbody", elem )[ 0 ] || elem; + } + + return elem; +} + +// Replace/restore the type attribute of script elements for safe DOM manipulation +function disableScript( elem ) { + elem.type = ( elem.getAttribute( "type" ) !== null ) + "/" + elem.type; + return elem; +} +function restoreScript( elem ) { + var match = rscriptTypeMasked.exec( elem.type ); + + if ( match ) { + elem.type = match[ 1 ]; + } else { + elem.removeAttribute( "type" ); + } + + return elem; +} + +function cloneCopyEvent( src, dest ) { + var i, l, type, pdataOld, pdataCur, udataOld, udataCur, events; + + if ( dest.nodeType !== 1 ) { + return; + } + + // 1. Copy private data: events, handlers, etc. + if ( dataPriv.hasData( src ) ) { + pdataOld = dataPriv.access( src ); + pdataCur = dataPriv.set( dest, pdataOld ); + events = pdataOld.events; + + if ( events ) { + delete pdataCur.handle; + pdataCur.events = {}; + + for ( type in events ) { + for ( i = 0, l = events[ type ].length; i < l; i++ ) { + jQuery.event.add( dest, type, events[ type ][ i ] ); + } + } + } + } + + // 2. Copy user data + if ( dataUser.hasData( src ) ) { + udataOld = dataUser.access( src ); + udataCur = jQuery.extend( {}, udataOld ); + + dataUser.set( dest, udataCur ); + } +} + +// Fix IE bugs, see support tests +function fixInput( src, dest ) { + var nodeName = dest.nodeName.toLowerCase(); + + // Fails to persist the checked state of a cloned checkbox or radio button. + if ( nodeName === "input" && rcheckableType.test( src.type ) ) { + dest.checked = src.checked; + + // Fails to return the selected option to the default selected state when cloning options + } else if ( nodeName === "input" || nodeName === "textarea" ) { + dest.defaultValue = src.defaultValue; + } +} + +function domManip( collection, args, callback, ignored ) { + + // Flatten any nested arrays + args = concat.apply( [], args ); + + var fragment, first, scripts, hasScripts, node, doc, + i = 0, + l = collection.length, + iNoClone = l - 1, + value = args[ 0 ], + isFunction = jQuery.isFunction( value ); + + // We can't cloneNode fragments that contain checked, in WebKit + if ( isFunction || + ( l > 1 && typeof value === "string" && + !support.checkClone && rchecked.test( value ) ) ) { + return collection.each( function( index ) { + var self = collection.eq( index ); + if ( isFunction ) { + args[ 0 ] = value.call( this, index, self.html() ); + } + domManip( self, args, callback, ignored ); + } ); + } + + if ( l ) { + fragment = buildFragment( args, collection[ 0 ].ownerDocument, false, collection, ignored ); + first = fragment.firstChild; + + if ( fragment.childNodes.length === 1 ) { + fragment = first; + } + + // Require either new content or an interest in ignored elements to invoke the callback + if ( first || ignored ) { + scripts = jQuery.map( getAll( fragment, "script" ), disableScript ); + hasScripts = scripts.length; + + // Use the original fragment for the last item + // instead of the first because it can end up + // being emptied incorrectly in certain situations (#8070). + for ( ; i < l; i++ ) { + node = fragment; + + if ( i !== iNoClone ) { + node = jQuery.clone( node, true, true ); + + // Keep references to cloned scripts for later restoration + if ( hasScripts ) { + + // Support: Android <=4.0 only, PhantomJS 1 only + // push.apply(_, arraylike) throws on ancient WebKit + jQuery.merge( scripts, getAll( node, "script" ) ); + } + } + + callback.call( collection[ i ], node, i ); + } + + if ( hasScripts ) { + doc = scripts[ scripts.length - 1 ].ownerDocument; + + // Reenable scripts + jQuery.map( scripts, restoreScript ); + + // Evaluate executable scripts on first document insertion + for ( i = 0; i < hasScripts; i++ ) { + node = scripts[ i ]; + if ( rscriptType.test( node.type || "" ) && + !dataPriv.access( node, "globalEval" ) && + jQuery.contains( doc, node ) ) { + + if ( node.src ) { + + // Optional AJAX dependency, but won't run scripts if not present + if ( jQuery._evalUrl ) { + jQuery._evalUrl( node.src ); + } + } else { + DOMEval( node.textContent.replace( rcleanScript, "" ), doc ); + } + } + } + } + } + } + + return collection; +} + +function remove( elem, selector, keepData ) { + var node, + nodes = selector ? jQuery.filter( selector, elem ) : elem, + i = 0; + + for ( ; ( node = nodes[ i ] ) != null; i++ ) { + if ( !keepData && node.nodeType === 1 ) { + jQuery.cleanData( getAll( node ) ); + } + + if ( node.parentNode ) { + if ( keepData && jQuery.contains( node.ownerDocument, node ) ) { + setGlobalEval( getAll( node, "script" ) ); + } + node.parentNode.removeChild( node ); + } + } + + return elem; +} + +jQuery.extend( { + htmlPrefilter: function( html ) { + return html.replace( rxhtmlTag, "<$1>" ); + }, + + clone: function( elem, dataAndEvents, deepDataAndEvents ) { + var i, l, srcElements, destElements, + clone = elem.cloneNode( true ), + inPage = jQuery.contains( elem.ownerDocument, elem ); + + // Fix IE cloning issues + if ( !support.noCloneChecked && ( elem.nodeType === 1 || elem.nodeType === 11 ) && + !jQuery.isXMLDoc( elem ) ) { + + // We eschew Sizzle here for performance reasons: https://jsperf.com/getall-vs-sizzle/2 + destElements = getAll( clone ); + srcElements = getAll( elem ); + + for ( i = 0, l = srcElements.length; i < l; i++ ) { + fixInput( srcElements[ i ], destElements[ i ] ); + } + } + + // Copy the events from the original to the clone + if ( dataAndEvents ) { + if ( deepDataAndEvents ) { + srcElements = srcElements || getAll( elem ); + destElements = destElements || getAll( clone ); + + for ( i = 0, l = srcElements.length; i < l; i++ ) { + cloneCopyEvent( srcElements[ i ], destElements[ i ] ); + } + } else { + cloneCopyEvent( elem, clone ); + } + } + + // Preserve script evaluation history + destElements = getAll( clone, "script" ); + if ( destElements.length > 0 ) { + setGlobalEval( destElements, !inPage && getAll( elem, "script" ) ); + } + + // Return the cloned set + return clone; + }, + + cleanData: function( elems ) { + var data, elem, type, + special = jQuery.event.special, + i = 0; + + for ( ; ( elem = elems[ i ] ) !== undefined; i++ ) { + if ( acceptData( elem ) ) { + if ( ( data = elem[ dataPriv.expando ] ) ) { + if ( data.events ) { + for ( type in data.events ) { + if ( special[ type ] ) { + jQuery.event.remove( elem, type ); + + // This is a shortcut to avoid jQuery.event.remove's overhead + } else { + jQuery.removeEvent( elem, type, data.handle ); + } + } + } + + // Support: Chrome <=35 - 45+ + // Assign undefined instead of using delete, see Data#remove + elem[ dataPriv.expando ] = undefined; + } + if ( elem[ dataUser.expando ] ) { + + // Support: Chrome <=35 - 45+ + // Assign undefined instead of using delete, see Data#remove + elem[ dataUser.expando ] = undefined; + } + } + } + } +} ); + +jQuery.fn.extend( { + detach: function( selector ) { + return remove( this, selector, true ); + }, + + remove: function( selector ) { + return remove( this, selector ); + }, + + text: function( value ) { + return access( this, function( value ) { + return value === undefined ? + jQuery.text( this ) : + this.empty().each( function() { + if ( this.nodeType === 1 || this.nodeType === 11 || this.nodeType === 9 ) { + this.textContent = value; + } + } ); + }, null, value, arguments.length ); + }, + + append: function() { + return domManip( this, arguments, function( elem ) { + if ( this.nodeType === 1 || this.nodeType === 11 || this.nodeType === 9 ) { + var target = manipulationTarget( this, elem ); + target.appendChild( elem ); + } + } ); + }, + + prepend: function() { + return domManip( this, arguments, function( elem ) { + if ( this.nodeType === 1 || this.nodeType === 11 || this.nodeType === 9 ) { + var target = manipulationTarget( this, elem ); + target.insertBefore( elem, target.firstChild ); + } + } ); + }, + + before: function() { + return domManip( this, arguments, function( elem ) { + if ( this.parentNode ) { + this.parentNode.insertBefore( elem, this ); + } + } ); + }, + + after: function() { + return domManip( this, arguments, function( elem ) { + if ( this.parentNode ) { + this.parentNode.insertBefore( elem, this.nextSibling ); + } + } ); + }, + + empty: function() { + var elem, + i = 0; + + for ( ; ( elem = this[ i ] ) != null; i++ ) { + if ( elem.nodeType === 1 ) { + + // Prevent memory leaks + jQuery.cleanData( getAll( elem, false ) ); + + // Remove any remaining nodes + elem.textContent = ""; + } + } + + return this; + }, + + clone: function( dataAndEvents, deepDataAndEvents ) { + dataAndEvents = dataAndEvents == null ? false : dataAndEvents; + deepDataAndEvents = deepDataAndEvents == null ? dataAndEvents : deepDataAndEvents; + + return this.map( function() { + return jQuery.clone( this, dataAndEvents, deepDataAndEvents ); + } ); + }, + + html: function( value ) { + return access( this, function( value ) { + var elem = this[ 0 ] || {}, + i = 0, + l = this.length; + + if ( value === undefined && elem.nodeType === 1 ) { + return elem.innerHTML; + } + + // See if we can take a shortcut and just use innerHTML + if ( typeof value === "string" && !rnoInnerhtml.test( value ) && + !wrapMap[ ( rtagName.exec( value ) || [ "", "" ] )[ 1 ].toLowerCase() ] ) { + + value = jQuery.htmlPrefilter( value ); + + try { + for ( ; i < l; i++ ) { + elem = this[ i ] || {}; + + // Remove element nodes and prevent memory leaks + if ( elem.nodeType === 1 ) { + jQuery.cleanData( getAll( elem, false ) ); + elem.innerHTML = value; + } + } + + elem = 0; + + // If using innerHTML throws an exception, use the fallback method + } catch ( e ) {} + } + + if ( elem ) { + this.empty().append( value ); + } + }, null, value, arguments.length ); + }, + + replaceWith: function() { + var ignored = []; + + // Make the changes, replacing each non-ignored context element with the new content + return domManip( this, arguments, function( elem ) { + var parent = this.parentNode; + + if ( jQuery.inArray( this, ignored ) < 0 ) { + jQuery.cleanData( getAll( this ) ); + if ( parent ) { + parent.replaceChild( elem, this ); + } + } + + // Force callback invocation + }, ignored ); + } +} ); + +jQuery.each( { + appendTo: "append", + prependTo: "prepend", + insertBefore: "before", + insertAfter: "after", + replaceAll: "replaceWith" +}, function( name, original ) { + jQuery.fn[ name ] = function( selector ) { + var elems, + ret = [], + insert = jQuery( selector ), + last = insert.length - 1, + i = 0; + + for ( ; i <= last; i++ ) { + elems = i === last ? this : this.clone( true ); + jQuery( insert[ i ] )[ original ]( elems ); + + // Support: Android <=4.0 only, PhantomJS 1 only + // .get() because push.apply(_, arraylike) throws on ancient WebKit + push.apply( ret, elems.get() ); + } + + return this.pushStack( ret ); + }; +} ); +var rmargin = ( /^margin/ ); + +var rnumnonpx = new RegExp( "^(" + pnum + ")(?!px)[a-z%]+$", "i" ); + +var getStyles = function( elem ) { + + // Support: IE <=11 only, Firefox <=30 (#15098, #14150) + // IE throws on elements created in popups + // FF meanwhile throws on frame elements through "defaultView.getComputedStyle" + var view = elem.ownerDocument.defaultView; + + if ( !view || !view.opener ) { + view = window; + } + + return view.getComputedStyle( elem ); + }; + + + +( function() { + + // Executing both pixelPosition & boxSizingReliable tests require only one layout + // so they're executed at the same time to save the second computation. + function computeStyleTests() { + + // This is a singleton, we need to execute it only once + if ( !div ) { + return; + } + + div.style.cssText = + "box-sizing:border-box;" + + "position:relative;display:block;" + + "margin:auto;border:1px;padding:1px;" + + "top:1%;width:50%"; + div.innerHTML = ""; + documentElement.appendChild( container ); + + var divStyle = window.getComputedStyle( div ); + pixelPositionVal = divStyle.top !== "1%"; + + // Support: Android 4.0 - 4.3 only, Firefox <=3 - 44 + reliableMarginLeftVal = divStyle.marginLeft === "2px"; + boxSizingReliableVal = divStyle.width === "4px"; + + // Support: Android 4.0 - 4.3 only + // Some styles come back with percentage values, even though they shouldn't + div.style.marginRight = "50%"; + pixelMarginRightVal = divStyle.marginRight === "4px"; + + documentElement.removeChild( container ); + + // Nullify the div so it wouldn't be stored in the memory and + // it will also be a sign that checks already performed + div = null; + } + + var pixelPositionVal, boxSizingReliableVal, pixelMarginRightVal, reliableMarginLeftVal, + container = document.createElement( "div" ), + div = document.createElement( "div" ); + + // Finish early in limited (non-browser) environments + if ( !div.style ) { + return; + } + + // Support: IE <=9 - 11 only + // Style of cloned element affects source element cloned (#8908) + div.style.backgroundClip = "content-box"; + div.cloneNode( true ).style.backgroundClip = ""; + support.clearCloneStyle = div.style.backgroundClip === "content-box"; + + container.style.cssText = "border:0;width:8px;height:0;top:0;left:-9999px;" + + "padding:0;margin-top:1px;position:absolute"; + container.appendChild( div ); + + jQuery.extend( support, { + pixelPosition: function() { + computeStyleTests(); + return pixelPositionVal; + }, + boxSizingReliable: function() { + computeStyleTests(); + return boxSizingReliableVal; + }, + pixelMarginRight: function() { + computeStyleTests(); + return pixelMarginRightVal; + }, + reliableMarginLeft: function() { + computeStyleTests(); + return reliableMarginLeftVal; + } + } ); +} )(); + + +function curCSS( elem, name, computed ) { + var width, minWidth, maxWidth, ret, + + // Support: Firefox 51+ + // Retrieving style before computed somehow + // fixes an issue with getting wrong values + // on detached elements + style = elem.style; + + computed = computed || getStyles( elem ); + + // getPropertyValue is needed for: + // .css('filter') (IE 9 only, #12537) + // .css('--customProperty) (#3144) + if ( computed ) { + ret = computed.getPropertyValue( name ) || computed[ name ]; + + if ( ret === "" && !jQuery.contains( elem.ownerDocument, elem ) ) { + ret = jQuery.style( elem, name ); + } + + // A tribute to the "awesome hack by Dean Edwards" + // Android Browser returns percentage for some values, + // but width seems to be reliably pixels. + // This is against the CSSOM draft spec: + // https://drafts.csswg.org/cssom/#resolved-values + if ( !support.pixelMarginRight() && rnumnonpx.test( ret ) && rmargin.test( name ) ) { + + // Remember the original values + width = style.width; + minWidth = style.minWidth; + maxWidth = style.maxWidth; + + // Put in the new values to get a computed value out + style.minWidth = style.maxWidth = style.width = ret; + ret = computed.width; + + // Revert the changed values + style.width = width; + style.minWidth = minWidth; + style.maxWidth = maxWidth; + } + } + + return ret !== undefined ? + + // Support: IE <=9 - 11 only + // IE returns zIndex value as an integer. + ret + "" : + ret; +} + + +function addGetHookIf( conditionFn, hookFn ) { + + // Define the hook, we'll check on the first run if it's really needed. + return { + get: function() { + if ( conditionFn() ) { + + // Hook not needed (or it's not possible to use it due + // to missing dependency), remove it. + delete this.get; + return; + } + + // Hook needed; redefine it so that the support test is not executed again. + return ( this.get = hookFn ).apply( this, arguments ); + } + }; +} + + +var + + // Swappable if display is none or starts with table + // except "table", "table-cell", or "table-caption" + // See here for display values: https://developer.mozilla.org/en-US/docs/CSS/display + rdisplayswap = /^(none|table(?!-c[ea]).+)/, + rcustomProp = /^--/, + cssShow = { position: "absolute", visibility: "hidden", display: "block" }, + cssNormalTransform = { + letterSpacing: "0", + fontWeight: "400" + }, + + cssPrefixes = [ "Webkit", "Moz", "ms" ], + emptyStyle = document.createElement( "div" ).style; + +// Return a css property mapped to a potentially vendor prefixed property +function vendorPropName( name ) { + + // Shortcut for names that are not vendor prefixed + if ( name in emptyStyle ) { + return name; + } + + // Check for vendor prefixed names + var capName = name[ 0 ].toUpperCase() + name.slice( 1 ), + i = cssPrefixes.length; + + while ( i-- ) { + name = cssPrefixes[ i ] + capName; + if ( name in emptyStyle ) { + return name; + } + } +} + +// Return a property mapped along what jQuery.cssProps suggests or to +// a vendor prefixed property. +function finalPropName( name ) { + var ret = jQuery.cssProps[ name ]; + if ( !ret ) { + ret = jQuery.cssProps[ name ] = vendorPropName( name ) || name; + } + return ret; +} + +function setPositiveNumber( elem, value, subtract ) { + + // Any relative (+/-) values have already been + // normalized at this point + var matches = rcssNum.exec( value ); + return matches ? + + // Guard against undefined "subtract", e.g., when used as in cssHooks + Math.max( 0, matches[ 2 ] - ( subtract || 0 ) ) + ( matches[ 3 ] || "px" ) : + value; +} + +function augmentWidthOrHeight( elem, name, extra, isBorderBox, styles ) { + var i, + val = 0; + + // If we already have the right measurement, avoid augmentation + if ( extra === ( isBorderBox ? "border" : "content" ) ) { + i = 4; + + // Otherwise initialize for horizontal or vertical properties + } else { + i = name === "width" ? 1 : 0; + } + + for ( ; i < 4; i += 2 ) { + + // Both box models exclude margin, so add it if we want it + if ( extra === "margin" ) { + val += jQuery.css( elem, extra + cssExpand[ i ], true, styles ); + } + + if ( isBorderBox ) { + + // border-box includes padding, so remove it if we want content + if ( extra === "content" ) { + val -= jQuery.css( elem, "padding" + cssExpand[ i ], true, styles ); + } + + // At this point, extra isn't border nor margin, so remove border + if ( extra !== "margin" ) { + val -= jQuery.css( elem, "border" + cssExpand[ i ] + "Width", true, styles ); + } + } else { + + // At this point, extra isn't content, so add padding + val += jQuery.css( elem, "padding" + cssExpand[ i ], true, styles ); + + // At this point, extra isn't content nor padding, so add border + if ( extra !== "padding" ) { + val += jQuery.css( elem, "border" + cssExpand[ i ] + "Width", true, styles ); + } + } + } + + return val; +} + +function getWidthOrHeight( elem, name, extra ) { + + // Start with computed style + var valueIsBorderBox, + styles = getStyles( elem ), + val = curCSS( elem, name, styles ), + isBorderBox = jQuery.css( elem, "boxSizing", false, styles ) === "border-box"; + + // Computed unit is not pixels. Stop here and return. + if ( rnumnonpx.test( val ) ) { + return val; + } + + // Check for style in case a browser which returns unreliable values + // for getComputedStyle silently falls back to the reliable elem.style + valueIsBorderBox = isBorderBox && + ( support.boxSizingReliable() || val === elem.style[ name ] ); + + // Fall back to offsetWidth/Height when value is "auto" + // This happens for inline elements with no explicit setting (gh-3571) + if ( val === "auto" ) { + val = elem[ "offset" + name[ 0 ].toUpperCase() + name.slice( 1 ) ]; + } + + // Normalize "", auto, and prepare for extra + val = parseFloat( val ) || 0; + + // Use the active box-sizing model to add/subtract irrelevant styles + return ( val + + augmentWidthOrHeight( + elem, + name, + extra || ( isBorderBox ? "border" : "content" ), + valueIsBorderBox, + styles + ) + ) + "px"; +} + +jQuery.extend( { + + // Add in style property hooks for overriding the default + // behavior of getting and setting a style property + cssHooks: { + opacity: { + get: function( elem, computed ) { + if ( computed ) { + + // We should always get a number back from opacity + var ret = curCSS( elem, "opacity" ); + return ret === "" ? "1" : ret; + } + } + } + }, + + // Don't automatically add "px" to these possibly-unitless properties + cssNumber: { + "animationIterationCount": true, + "columnCount": true, + "fillOpacity": true, + "flexGrow": true, + "flexShrink": true, + "fontWeight": true, + "lineHeight": true, + "opacity": true, + "order": true, + "orphans": true, + "widows": true, + "zIndex": true, + "zoom": true + }, + + // Add in properties whose names you wish to fix before + // setting or getting the value + cssProps: { + "float": "cssFloat" + }, + + // Get and set the style property on a DOM Node + style: function( elem, name, value, extra ) { + + // Don't set styles on text and comment nodes + if ( !elem || elem.nodeType === 3 || elem.nodeType === 8 || !elem.style ) { + return; + } + + // Make sure that we're working with the right name + var ret, type, hooks, + origName = jQuery.camelCase( name ), + isCustomProp = rcustomProp.test( name ), + style = elem.style; + + // Make sure that we're working with the right name. We don't + // want to query the value if it is a CSS custom property + // since they are user-defined. + if ( !isCustomProp ) { + name = finalPropName( origName ); + } + + // Gets hook for the prefixed version, then unprefixed version + hooks = jQuery.cssHooks[ name ] || jQuery.cssHooks[ origName ]; + + // Check if we're setting a value + if ( value !== undefined ) { + type = typeof value; + + // Convert "+=" or "-=" to relative numbers (#7345) + if ( type === "string" && ( ret = rcssNum.exec( value ) ) && ret[ 1 ] ) { + value = adjustCSS( elem, name, ret ); + + // Fixes bug #9237 + type = "number"; + } + + // Make sure that null and NaN values aren't set (#7116) + if ( value == null || value !== value ) { + return; + } + + // If a number was passed in, add the unit (except for certain CSS properties) + if ( type === "number" ) { + value += ret && ret[ 3 ] || ( jQuery.cssNumber[ origName ] ? "" : "px" ); + } + + // background-* props affect original clone's values + if ( !support.clearCloneStyle && value === "" && name.indexOf( "background" ) === 0 ) { + style[ name ] = "inherit"; + } + + // If a hook was provided, use that value, otherwise just set the specified value + if ( !hooks || !( "set" in hooks ) || + ( value = hooks.set( elem, value, extra ) ) !== undefined ) { + + if ( isCustomProp ) { + style.setProperty( name, value ); + } else { + style[ name ] = value; + } + } + + } else { + + // If a hook was provided get the non-computed value from there + if ( hooks && "get" in hooks && + ( ret = hooks.get( elem, false, extra ) ) !== undefined ) { + + return ret; + } + + // Otherwise just get the value from the style object + return style[ name ]; + } + }, + + css: function( elem, name, extra, styles ) { + var val, num, hooks, + origName = jQuery.camelCase( name ), + isCustomProp = rcustomProp.test( name ); + + // Make sure that we're working with the right name. We don't + // want to modify the value if it is a CSS custom property + // since they are user-defined. + if ( !isCustomProp ) { + name = finalPropName( origName ); + } + + // Try prefixed name followed by the unprefixed name + hooks = jQuery.cssHooks[ name ] || jQuery.cssHooks[ origName ]; + + // If a hook was provided get the computed value from there + if ( hooks && "get" in hooks ) { + val = hooks.get( elem, true, extra ); + } + + // Otherwise, if a way to get the computed value exists, use that + if ( val === undefined ) { + val = curCSS( elem, name, styles ); + } + + // Convert "normal" to computed value + if ( val === "normal" && name in cssNormalTransform ) { + val = cssNormalTransform[ name ]; + } + + // Make numeric if forced or a qualifier was provided and val looks numeric + if ( extra === "" || extra ) { + num = parseFloat( val ); + return extra === true || isFinite( num ) ? num || 0 : val; + } + + return val; + } +} ); + +jQuery.each( [ "height", "width" ], function( i, name ) { + jQuery.cssHooks[ name ] = { + get: function( elem, computed, extra ) { + if ( computed ) { + + // Certain elements can have dimension info if we invisibly show them + // but it must have a current display style that would benefit + return rdisplayswap.test( jQuery.css( elem, "display" ) ) && + + // Support: Safari 8+ + // Table columns in Safari have non-zero offsetWidth & zero + // getBoundingClientRect().width unless display is changed. + // Support: IE <=11 only + // Running getBoundingClientRect on a disconnected node + // in IE throws an error. + ( !elem.getClientRects().length || !elem.getBoundingClientRect().width ) ? + swap( elem, cssShow, function() { + return getWidthOrHeight( elem, name, extra ); + } ) : + getWidthOrHeight( elem, name, extra ); + } + }, + + set: function( elem, value, extra ) { + var matches, + styles = extra && getStyles( elem ), + subtract = extra && augmentWidthOrHeight( + elem, + name, + extra, + jQuery.css( elem, "boxSizing", false, styles ) === "border-box", + styles + ); + + // Convert to pixels if value adjustment is needed + if ( subtract && ( matches = rcssNum.exec( value ) ) && + ( matches[ 3 ] || "px" ) !== "px" ) { + + elem.style[ name ] = value; + value = jQuery.css( elem, name ); + } + + return setPositiveNumber( elem, value, subtract ); + } + }; +} ); + +jQuery.cssHooks.marginLeft = addGetHookIf( support.reliableMarginLeft, + function( elem, computed ) { + if ( computed ) { + return ( parseFloat( curCSS( elem, "marginLeft" ) ) || + elem.getBoundingClientRect().left - + swap( elem, { marginLeft: 0 }, function() { + return elem.getBoundingClientRect().left; + } ) + ) + "px"; + } + } +); + +// These hooks are used by animate to expand properties +jQuery.each( { + margin: "", + padding: "", + border: "Width" +}, function( prefix, suffix ) { + jQuery.cssHooks[ prefix + suffix ] = { + expand: function( value ) { + var i = 0, + expanded = {}, + + // Assumes a single number if not a string + parts = typeof value === "string" ? value.split( " " ) : [ value ]; + + for ( ; i < 4; i++ ) { + expanded[ prefix + cssExpand[ i ] + suffix ] = + parts[ i ] || parts[ i - 2 ] || parts[ 0 ]; + } + + return expanded; + } + }; + + if ( !rmargin.test( prefix ) ) { + jQuery.cssHooks[ prefix + suffix ].set = setPositiveNumber; + } +} ); + +jQuery.fn.extend( { + css: function( name, value ) { + return access( this, function( elem, name, value ) { + var styles, len, + map = {}, + i = 0; + + if ( Array.isArray( name ) ) { + styles = getStyles( elem ); + len = name.length; + + for ( ; i < len; i++ ) { + map[ name[ i ] ] = jQuery.css( elem, name[ i ], false, styles ); + } + + return map; + } + + return value !== undefined ? + jQuery.style( elem, name, value ) : + jQuery.css( elem, name ); + }, name, value, arguments.length > 1 ); + } +} ); + + +function Tween( elem, options, prop, end, easing ) { + return new Tween.prototype.init( elem, options, prop, end, easing ); +} +jQuery.Tween = Tween; + +Tween.prototype = { + constructor: Tween, + init: function( elem, options, prop, end, easing, unit ) { + this.elem = elem; + this.prop = prop; + this.easing = easing || jQuery.easing._default; + this.options = options; + this.start = this.now = this.cur(); + this.end = end; + this.unit = unit || ( jQuery.cssNumber[ prop ] ? "" : "px" ); + }, + cur: function() { + var hooks = Tween.propHooks[ this.prop ]; + + return hooks && hooks.get ? + hooks.get( this ) : + Tween.propHooks._default.get( this ); + }, + run: function( percent ) { + var eased, + hooks = Tween.propHooks[ this.prop ]; + + if ( this.options.duration ) { + this.pos = eased = jQuery.easing[ this.easing ]( + percent, this.options.duration * percent, 0, 1, this.options.duration + ); + } else { + this.pos = eased = percent; + } + this.now = ( this.end - this.start ) * eased + this.start; + + if ( this.options.step ) { + this.options.step.call( this.elem, this.now, this ); + } + + if ( hooks && hooks.set ) { + hooks.set( this ); + } else { + Tween.propHooks._default.set( this ); + } + return this; + } +}; + +Tween.prototype.init.prototype = Tween.prototype; + +Tween.propHooks = { + _default: { + get: function( tween ) { + var result; + + // Use a property on the element directly when it is not a DOM element, + // or when there is no matching style property that exists. + if ( tween.elem.nodeType !== 1 || + tween.elem[ tween.prop ] != null && tween.elem.style[ tween.prop ] == null ) { + return tween.elem[ tween.prop ]; + } + + // Passing an empty string as a 3rd parameter to .css will automatically + // attempt a parseFloat and fallback to a string if the parse fails. + // Simple values such as "10px" are parsed to Float; + // complex values such as "rotate(1rad)" are returned as-is. + result = jQuery.css( tween.elem, tween.prop, "" ); + + // Empty strings, null, undefined and "auto" are converted to 0. + return !result || result === "auto" ? 0 : result; + }, + set: function( tween ) { + + // Use step hook for back compat. + // Use cssHook if its there. + // Use .style if available and use plain properties where available. + if ( jQuery.fx.step[ tween.prop ] ) { + jQuery.fx.step[ tween.prop ]( tween ); + } else if ( tween.elem.nodeType === 1 && + ( tween.elem.style[ jQuery.cssProps[ tween.prop ] ] != null || + jQuery.cssHooks[ tween.prop ] ) ) { + jQuery.style( tween.elem, tween.prop, tween.now + tween.unit ); + } else { + tween.elem[ tween.prop ] = tween.now; + } + } + } +}; + +// Support: IE <=9 only +// Panic based approach to setting things on disconnected nodes +Tween.propHooks.scrollTop = Tween.propHooks.scrollLeft = { + set: function( tween ) { + if ( tween.elem.nodeType && tween.elem.parentNode ) { + tween.elem[ tween.prop ] = tween.now; + } + } +}; + +jQuery.easing = { + linear: function( p ) { + return p; + }, + swing: function( p ) { + return 0.5 - Math.cos( p * Math.PI ) / 2; + }, + _default: "swing" +}; + +jQuery.fx = Tween.prototype.init; + +// Back compat <1.8 extension point +jQuery.fx.step = {}; + + + + +var + fxNow, inProgress, + rfxtypes = /^(?:toggle|show|hide)$/, + rrun = /queueHooks$/; + +function schedule() { + if ( inProgress ) { + if ( document.hidden === false && window.requestAnimationFrame ) { + window.requestAnimationFrame( schedule ); + } else { + window.setTimeout( schedule, jQuery.fx.interval ); + } + + jQuery.fx.tick(); + } +} + +// Animations created synchronously will run synchronously +function createFxNow() { + window.setTimeout( function() { + fxNow = undefined; + } ); + return ( fxNow = jQuery.now() ); +} + +// Generate parameters to create a standard animation +function genFx( type, includeWidth ) { + var which, + i = 0, + attrs = { height: type }; + + // If we include width, step value is 1 to do all cssExpand values, + // otherwise step value is 2 to skip over Left and Right + includeWidth = includeWidth ? 1 : 0; + for ( ; i < 4; i += 2 - includeWidth ) { + which = cssExpand[ i ]; + attrs[ "margin" + which ] = attrs[ "padding" + which ] = type; + } + + if ( includeWidth ) { + attrs.opacity = attrs.width = type; + } + + return attrs; +} + +function createTween( value, prop, animation ) { + var tween, + collection = ( Animation.tweeners[ prop ] || [] ).concat( Animation.tweeners[ "*" ] ), + index = 0, + length = collection.length; + for ( ; index < length; index++ ) { + if ( ( tween = collection[ index ].call( animation, prop, value ) ) ) { + + // We're done with this property + return tween; + } + } +} + +function defaultPrefilter( elem, props, opts ) { + var prop, value, toggle, hooks, oldfire, propTween, restoreDisplay, display, + isBox = "width" in props || "height" in props, + anim = this, + orig = {}, + style = elem.style, + hidden = elem.nodeType && isHiddenWithinTree( elem ), + dataShow = dataPriv.get( elem, "fxshow" ); + + // Queue-skipping animations hijack the fx hooks + if ( !opts.queue ) { + hooks = jQuery._queueHooks( elem, "fx" ); + if ( hooks.unqueued == null ) { + hooks.unqueued = 0; + oldfire = hooks.empty.fire; + hooks.empty.fire = function() { + if ( !hooks.unqueued ) { + oldfire(); + } + }; + } + hooks.unqueued++; + + anim.always( function() { + + // Ensure the complete handler is called before this completes + anim.always( function() { + hooks.unqueued--; + if ( !jQuery.queue( elem, "fx" ).length ) { + hooks.empty.fire(); + } + } ); + } ); + } + + // Detect show/hide animations + for ( prop in props ) { + value = props[ prop ]; + if ( rfxtypes.test( value ) ) { + delete props[ prop ]; + toggle = toggle || value === "toggle"; + if ( value === ( hidden ? "hide" : "show" ) ) { + + // Pretend to be hidden if this is a "show" and + // there is still data from a stopped show/hide + if ( value === "show" && dataShow && dataShow[ prop ] !== undefined ) { + hidden = true; + + // Ignore all other no-op show/hide data + } else { + continue; + } + } + orig[ prop ] = dataShow && dataShow[ prop ] || jQuery.style( elem, prop ); + } + } + + // Bail out if this is a no-op like .hide().hide() + propTween = !jQuery.isEmptyObject( props ); + if ( !propTween && jQuery.isEmptyObject( orig ) ) { + return; + } + + // Restrict "overflow" and "display" styles during box animations + if ( isBox && elem.nodeType === 1 ) { + + // Support: IE <=9 - 11, Edge 12 - 13 + // Record all 3 overflow attributes because IE does not infer the shorthand + // from identically-valued overflowX and overflowY + opts.overflow = [ style.overflow, style.overflowX, style.overflowY ]; + + // Identify a display type, preferring old show/hide data over the CSS cascade + restoreDisplay = dataShow && dataShow.display; + if ( restoreDisplay == null ) { + restoreDisplay = dataPriv.get( elem, "display" ); + } + display = jQuery.css( elem, "display" ); + if ( display === "none" ) { + if ( restoreDisplay ) { + display = restoreDisplay; + } else { + + // Get nonempty value(s) by temporarily forcing visibility + showHide( [ elem ], true ); + restoreDisplay = elem.style.display || restoreDisplay; + display = jQuery.css( elem, "display" ); + showHide( [ elem ] ); + } + } + + // Animate inline elements as inline-block + if ( display === "inline" || display === "inline-block" && restoreDisplay != null ) { + if ( jQuery.css( elem, "float" ) === "none" ) { + + // Restore the original display value at the end of pure show/hide animations + if ( !propTween ) { + anim.done( function() { + style.display = restoreDisplay; + } ); + if ( restoreDisplay == null ) { + display = style.display; + restoreDisplay = display === "none" ? "" : display; + } + } + style.display = "inline-block"; + } + } + } + + if ( opts.overflow ) { + style.overflow = "hidden"; + anim.always( function() { + style.overflow = opts.overflow[ 0 ]; + style.overflowX = opts.overflow[ 1 ]; + style.overflowY = opts.overflow[ 2 ]; + } ); + } + + // Implement show/hide animations + propTween = false; + for ( prop in orig ) { + + // General show/hide setup for this element animation + if ( !propTween ) { + if ( dataShow ) { + if ( "hidden" in dataShow ) { + hidden = dataShow.hidden; + } + } else { + dataShow = dataPriv.access( elem, "fxshow", { display: restoreDisplay } ); + } + + // Store hidden/visible for toggle so `.stop().toggle()` "reverses" + if ( toggle ) { + dataShow.hidden = !hidden; + } + + // Show elements before animating them + if ( hidden ) { + showHide( [ elem ], true ); + } + + /* eslint-disable no-loop-func */ + + anim.done( function() { + + /* eslint-enable no-loop-func */ + + // The final step of a "hide" animation is actually hiding the element + if ( !hidden ) { + showHide( [ elem ] ); + } + dataPriv.remove( elem, "fxshow" ); + for ( prop in orig ) { + jQuery.style( elem, prop, orig[ prop ] ); + } + } ); + } + + // Per-property setup + propTween = createTween( hidden ? dataShow[ prop ] : 0, prop, anim ); + if ( !( prop in dataShow ) ) { + dataShow[ prop ] = propTween.start; + if ( hidden ) { + propTween.end = propTween.start; + propTween.start = 0; + } + } + } +} + +function propFilter( props, specialEasing ) { + var index, name, easing, value, hooks; + + // camelCase, specialEasing and expand cssHook pass + for ( index in props ) { + name = jQuery.camelCase( index ); + easing = specialEasing[ name ]; + value = props[ index ]; + if ( Array.isArray( value ) ) { + easing = value[ 1 ]; + value = props[ index ] = value[ 0 ]; + } + + if ( index !== name ) { + props[ name ] = value; + delete props[ index ]; + } + + hooks = jQuery.cssHooks[ name ]; + if ( hooks && "expand" in hooks ) { + value = hooks.expand( value ); + delete props[ name ]; + + // Not quite $.extend, this won't overwrite existing keys. + // Reusing 'index' because we have the correct "name" + for ( index in value ) { + if ( !( index in props ) ) { + props[ index ] = value[ index ]; + specialEasing[ index ] = easing; + } + } + } else { + specialEasing[ name ] = easing; + } + } +} + +function Animation( elem, properties, options ) { + var result, + stopped, + index = 0, + length = Animation.prefilters.length, + deferred = jQuery.Deferred().always( function() { + + // Don't match elem in the :animated selector + delete tick.elem; + } ), + tick = function() { + if ( stopped ) { + return false; + } + var currentTime = fxNow || createFxNow(), + remaining = Math.max( 0, animation.startTime + animation.duration - currentTime ), + + // Support: Android 2.3 only + // Archaic crash bug won't allow us to use `1 - ( 0.5 || 0 )` (#12497) + temp = remaining / animation.duration || 0, + percent = 1 - temp, + index = 0, + length = animation.tweens.length; + + for ( ; index < length; index++ ) { + animation.tweens[ index ].run( percent ); + } + + deferred.notifyWith( elem, [ animation, percent, remaining ] ); + + // If there's more to do, yield + if ( percent < 1 && length ) { + return remaining; + } + + // If this was an empty animation, synthesize a final progress notification + if ( !length ) { + deferred.notifyWith( elem, [ animation, 1, 0 ] ); + } + + // Resolve the animation and report its conclusion + deferred.resolveWith( elem, [ animation ] ); + return false; + }, + animation = deferred.promise( { + elem: elem, + props: jQuery.extend( {}, properties ), + opts: jQuery.extend( true, { + specialEasing: {}, + easing: jQuery.easing._default + }, options ), + originalProperties: properties, + originalOptions: options, + startTime: fxNow || createFxNow(), + duration: options.duration, + tweens: [], + createTween: function( prop, end ) { + var tween = jQuery.Tween( elem, animation.opts, prop, end, + animation.opts.specialEasing[ prop ] || animation.opts.easing ); + animation.tweens.push( tween ); + return tween; + }, + stop: function( gotoEnd ) { + var index = 0, + + // If we are going to the end, we want to run all the tweens + // otherwise we skip this part + length = gotoEnd ? animation.tweens.length : 0; + if ( stopped ) { + return this; + } + stopped = true; + for ( ; index < length; index++ ) { + animation.tweens[ index ].run( 1 ); + } + + // Resolve when we played the last frame; otherwise, reject + if ( gotoEnd ) { + deferred.notifyWith( elem, [ animation, 1, 0 ] ); + deferred.resolveWith( elem, [ animation, gotoEnd ] ); + } else { + deferred.rejectWith( elem, [ animation, gotoEnd ] ); + } + return this; + } + } ), + props = animation.props; + + propFilter( props, animation.opts.specialEasing ); + + for ( ; index < length; index++ ) { + result = Animation.prefilters[ index ].call( animation, elem, props, animation.opts ); + if ( result ) { + if ( jQuery.isFunction( result.stop ) ) { + jQuery._queueHooks( animation.elem, animation.opts.queue ).stop = + jQuery.proxy( result.stop, result ); + } + return result; + } + } + + jQuery.map( props, createTween, animation ); + + if ( jQuery.isFunction( animation.opts.start ) ) { + animation.opts.start.call( elem, animation ); + } + + // Attach callbacks from options + animation + .progress( animation.opts.progress ) + .done( animation.opts.done, animation.opts.complete ) + .fail( animation.opts.fail ) + .always( animation.opts.always ); + + jQuery.fx.timer( + jQuery.extend( tick, { + elem: elem, + anim: animation, + queue: animation.opts.queue + } ) + ); + + return animation; +} + +jQuery.Animation = jQuery.extend( Animation, { + + tweeners: { + "*": [ function( prop, value ) { + var tween = this.createTween( prop, value ); + adjustCSS( tween.elem, prop, rcssNum.exec( value ), tween ); + return tween; + } ] + }, + + tweener: function( props, callback ) { + if ( jQuery.isFunction( props ) ) { + callback = props; + props = [ "*" ]; + } else { + props = props.match( rnothtmlwhite ); + } + + var prop, + index = 0, + length = props.length; + + for ( ; index < length; index++ ) { + prop = props[ index ]; + Animation.tweeners[ prop ] = Animation.tweeners[ prop ] || []; + Animation.tweeners[ prop ].unshift( callback ); + } + }, + + prefilters: [ defaultPrefilter ], + + prefilter: function( callback, prepend ) { + if ( prepend ) { + Animation.prefilters.unshift( callback ); + } else { + Animation.prefilters.push( callback ); + } + } +} ); + +jQuery.speed = function( speed, easing, fn ) { + var opt = speed && typeof speed === "object" ? jQuery.extend( {}, speed ) : { + complete: fn || !fn && easing || + jQuery.isFunction( speed ) && speed, + duration: speed, + easing: fn && easing || easing && !jQuery.isFunction( easing ) && easing + }; + + // Go to the end state if fx are off + if ( jQuery.fx.off ) { + opt.duration = 0; + + } else { + if ( typeof opt.duration !== "number" ) { + if ( opt.duration in jQuery.fx.speeds ) { + opt.duration = jQuery.fx.speeds[ opt.duration ]; + + } else { + opt.duration = jQuery.fx.speeds._default; + } + } + } + + // Normalize opt.queue - true/undefined/null -> "fx" + if ( opt.queue == null || opt.queue === true ) { + opt.queue = "fx"; + } + + // Queueing + opt.old = opt.complete; + + opt.complete = function() { + if ( jQuery.isFunction( opt.old ) ) { + opt.old.call( this ); + } + + if ( opt.queue ) { + jQuery.dequeue( this, opt.queue ); + } + }; + + return opt; +}; + +jQuery.fn.extend( { + fadeTo: function( speed, to, easing, callback ) { + + // Show any hidden elements after setting opacity to 0 + return this.filter( isHiddenWithinTree ).css( "opacity", 0 ).show() + + // Animate to the value specified + .end().animate( { opacity: to }, speed, easing, callback ); + }, + animate: function( prop, speed, easing, callback ) { + var empty = jQuery.isEmptyObject( prop ), + optall = jQuery.speed( speed, easing, callback ), + doAnimation = function() { + + // Operate on a copy of prop so per-property easing won't be lost + var anim = Animation( this, jQuery.extend( {}, prop ), optall ); + + // Empty animations, or finishing resolves immediately + if ( empty || dataPriv.get( this, "finish" ) ) { + anim.stop( true ); + } + }; + doAnimation.finish = doAnimation; + + return empty || optall.queue === false ? + this.each( doAnimation ) : + this.queue( optall.queue, doAnimation ); + }, + stop: function( type, clearQueue, gotoEnd ) { + var stopQueue = function( hooks ) { + var stop = hooks.stop; + delete hooks.stop; + stop( gotoEnd ); + }; + + if ( typeof type !== "string" ) { + gotoEnd = clearQueue; + clearQueue = type; + type = undefined; + } + if ( clearQueue && type !== false ) { + this.queue( type || "fx", [] ); + } + + return this.each( function() { + var dequeue = true, + index = type != null && type + "queueHooks", + timers = jQuery.timers, + data = dataPriv.get( this ); + + if ( index ) { + if ( data[ index ] && data[ index ].stop ) { + stopQueue( data[ index ] ); + } + } else { + for ( index in data ) { + if ( data[ index ] && data[ index ].stop && rrun.test( index ) ) { + stopQueue( data[ index ] ); + } + } + } + + for ( index = timers.length; index--; ) { + if ( timers[ index ].elem === this && + ( type == null || timers[ index ].queue === type ) ) { + + timers[ index ].anim.stop( gotoEnd ); + dequeue = false; + timers.splice( index, 1 ); + } + } + + // Start the next in the queue if the last step wasn't forced. + // Timers currently will call their complete callbacks, which + // will dequeue but only if they were gotoEnd. + if ( dequeue || !gotoEnd ) { + jQuery.dequeue( this, type ); + } + } ); + }, + finish: function( type ) { + if ( type !== false ) { + type = type || "fx"; + } + return this.each( function() { + var index, + data = dataPriv.get( this ), + queue = data[ type + "queue" ], + hooks = data[ type + "queueHooks" ], + timers = jQuery.timers, + length = queue ? queue.length : 0; + + // Enable finishing flag on private data + data.finish = true; + + // Empty the queue first + jQuery.queue( this, type, [] ); + + if ( hooks && hooks.stop ) { + hooks.stop.call( this, true ); + } + + // Look for any active animations, and finish them + for ( index = timers.length; index--; ) { + if ( timers[ index ].elem === this && timers[ index ].queue === type ) { + timers[ index ].anim.stop( true ); + timers.splice( index, 1 ); + } + } + + // Look for any animations in the old queue and finish them + for ( index = 0; index < length; index++ ) { + if ( queue[ index ] && queue[ index ].finish ) { + queue[ index ].finish.call( this ); + } + } + + // Turn off finishing flag + delete data.finish; + } ); + } +} ); + +jQuery.each( [ "toggle", "show", "hide" ], function( i, name ) { + var cssFn = jQuery.fn[ name ]; + jQuery.fn[ name ] = function( speed, easing, callback ) { + return speed == null || typeof speed === "boolean" ? + cssFn.apply( this, arguments ) : + this.animate( genFx( name, true ), speed, easing, callback ); + }; +} ); + +// Generate shortcuts for custom animations +jQuery.each( { + slideDown: genFx( "show" ), + slideUp: genFx( "hide" ), + slideToggle: genFx( "toggle" ), + fadeIn: { opacity: "show" }, + fadeOut: { opacity: "hide" }, + fadeToggle: { opacity: "toggle" } +}, function( name, props ) { + jQuery.fn[ name ] = function( speed, easing, callback ) { + return this.animate( props, speed, easing, callback ); + }; +} ); + +jQuery.timers = []; +jQuery.fx.tick = function() { + var timer, + i = 0, + timers = jQuery.timers; + + fxNow = jQuery.now(); + + for ( ; i < timers.length; i++ ) { + timer = timers[ i ]; + + // Run the timer and safely remove it when done (allowing for external removal) + if ( !timer() && timers[ i ] === timer ) { + timers.splice( i--, 1 ); + } + } + + if ( !timers.length ) { + jQuery.fx.stop(); + } + fxNow = undefined; +}; + +jQuery.fx.timer = function( timer ) { + jQuery.timers.push( timer ); + jQuery.fx.start(); +}; + +jQuery.fx.interval = 13; +jQuery.fx.start = function() { + if ( inProgress ) { + return; + } + + inProgress = true; + schedule(); +}; + +jQuery.fx.stop = function() { + inProgress = null; +}; + +jQuery.fx.speeds = { + slow: 600, + fast: 200, + + // Default speed + _default: 400 +}; + + +// Based off of the plugin by Clint Helfers, with permission. +// https://web.archive.org/web/20100324014747/http://blindsignals.com/index.php/2009/07/jquery-delay/ +jQuery.fn.delay = function( time, type ) { + time = jQuery.fx ? jQuery.fx.speeds[ time ] || time : time; + type = type || "fx"; + + return this.queue( type, function( next, hooks ) { + var timeout = window.setTimeout( next, time ); + hooks.stop = function() { + window.clearTimeout( timeout ); + }; + } ); +}; + + +( function() { + var input = document.createElement( "input" ), + select = document.createElement( "select" ), + opt = select.appendChild( document.createElement( "option" ) ); + + input.type = "checkbox"; + + // Support: Android <=4.3 only + // Default value for a checkbox should be "on" + support.checkOn = input.value !== ""; + + // Support: IE <=11 only + // Must access selectedIndex to make default options select + support.optSelected = opt.selected; + + // Support: IE <=11 only + // An input loses its value after becoming a radio + input = document.createElement( "input" ); + input.value = "t"; + input.type = "radio"; + support.radioValue = input.value === "t"; +} )(); + + +var boolHook, + attrHandle = jQuery.expr.attrHandle; + +jQuery.fn.extend( { + attr: function( name, value ) { + return access( this, jQuery.attr, name, value, arguments.length > 1 ); + }, + + removeAttr: function( name ) { + return this.each( function() { + jQuery.removeAttr( this, name ); + } ); + } +} ); + +jQuery.extend( { + attr: function( elem, name, value ) { + var ret, hooks, + nType = elem.nodeType; + + // Don't get/set attributes on text, comment and attribute nodes + if ( nType === 3 || nType === 8 || nType === 2 ) { + return; + } + + // Fallback to prop when attributes are not supported + if ( typeof elem.getAttribute === "undefined" ) { + return jQuery.prop( elem, name, value ); + } + + // Attribute hooks are determined by the lowercase version + // Grab necessary hook if one is defined + if ( nType !== 1 || !jQuery.isXMLDoc( elem ) ) { + hooks = jQuery.attrHooks[ name.toLowerCase() ] || + ( jQuery.expr.match.bool.test( name ) ? boolHook : undefined ); + } + + if ( value !== undefined ) { + if ( value === null ) { + jQuery.removeAttr( elem, name ); + return; + } + + if ( hooks && "set" in hooks && + ( ret = hooks.set( elem, value, name ) ) !== undefined ) { + return ret; + } + + elem.setAttribute( name, value + "" ); + return value; + } + + if ( hooks && "get" in hooks && ( ret = hooks.get( elem, name ) ) !== null ) { + return ret; + } + + ret = jQuery.find.attr( elem, name ); + + // Non-existent attributes return null, we normalize to undefined + return ret == null ? undefined : ret; + }, + + attrHooks: { + type: { + set: function( elem, value ) { + if ( !support.radioValue && value === "radio" && + nodeName( elem, "input" ) ) { + var val = elem.value; + elem.setAttribute( "type", value ); + if ( val ) { + elem.value = val; + } + return value; + } + } + } + }, + + removeAttr: function( elem, value ) { + var name, + i = 0, + + // Attribute names can contain non-HTML whitespace characters + // https://html.spec.whatwg.org/multipage/syntax.html#attributes-2 + attrNames = value && value.match( rnothtmlwhite ); + + if ( attrNames && elem.nodeType === 1 ) { + while ( ( name = attrNames[ i++ ] ) ) { + elem.removeAttribute( name ); + } + } + } +} ); + +// Hooks for boolean attributes +boolHook = { + set: function( elem, value, name ) { + if ( value === false ) { + + // Remove boolean attributes when set to false + jQuery.removeAttr( elem, name ); + } else { + elem.setAttribute( name, name ); + } + return name; + } +}; + +jQuery.each( jQuery.expr.match.bool.source.match( /\w+/g ), function( i, name ) { + var getter = attrHandle[ name ] || jQuery.find.attr; + + attrHandle[ name ] = function( elem, name, isXML ) { + var ret, handle, + lowercaseName = name.toLowerCase(); + + if ( !isXML ) { + + // Avoid an infinite loop by temporarily removing this function from the getter + handle = attrHandle[ lowercaseName ]; + attrHandle[ lowercaseName ] = ret; + ret = getter( elem, name, isXML ) != null ? + lowercaseName : + null; + attrHandle[ lowercaseName ] = handle; + } + return ret; + }; +} ); + + + + +var rfocusable = /^(?:input|select|textarea|button)$/i, + rclickable = /^(?:a|area)$/i; + +jQuery.fn.extend( { + prop: function( name, value ) { + return access( this, jQuery.prop, name, value, arguments.length > 1 ); + }, + + removeProp: function( name ) { + return this.each( function() { + delete this[ jQuery.propFix[ name ] || name ]; + } ); + } +} ); + +jQuery.extend( { + prop: function( elem, name, value ) { + var ret, hooks, + nType = elem.nodeType; + + // Don't get/set properties on text, comment and attribute nodes + if ( nType === 3 || nType === 8 || nType === 2 ) { + return; + } + + if ( nType !== 1 || !jQuery.isXMLDoc( elem ) ) { + + // Fix name and attach hooks + name = jQuery.propFix[ name ] || name; + hooks = jQuery.propHooks[ name ]; + } + + if ( value !== undefined ) { + if ( hooks && "set" in hooks && + ( ret = hooks.set( elem, value, name ) ) !== undefined ) { + return ret; + } + + return ( elem[ name ] = value ); + } + + if ( hooks && "get" in hooks && ( ret = hooks.get( elem, name ) ) !== null ) { + return ret; + } + + return elem[ name ]; + }, + + propHooks: { + tabIndex: { + get: function( elem ) { + + // Support: IE <=9 - 11 only + // elem.tabIndex doesn't always return the + // correct value when it hasn't been explicitly set + // https://web.archive.org/web/20141116233347/http://fluidproject.org/blog/2008/01/09/getting-setting-and-removing-tabindex-values-with-javascript/ + // Use proper attribute retrieval(#12072) + var tabindex = jQuery.find.attr( elem, "tabindex" ); + + if ( tabindex ) { + return parseInt( tabindex, 10 ); + } + + if ( + rfocusable.test( elem.nodeName ) || + rclickable.test( elem.nodeName ) && + elem.href + ) { + return 0; + } + + return -1; + } + } + }, + + propFix: { + "for": "htmlFor", + "class": "className" + } +} ); + +// Support: IE <=11 only +// Accessing the selectedIndex property +// forces the browser to respect setting selected +// on the option +// The getter ensures a default option is selected +// when in an optgroup +// eslint rule "no-unused-expressions" is disabled for this code +// since it considers such accessions noop +if ( !support.optSelected ) { + jQuery.propHooks.selected = { + get: function( elem ) { + + /* eslint no-unused-expressions: "off" */ + + var parent = elem.parentNode; + if ( parent && parent.parentNode ) { + parent.parentNode.selectedIndex; + } + return null; + }, + set: function( elem ) { + + /* eslint no-unused-expressions: "off" */ + + var parent = elem.parentNode; + if ( parent ) { + parent.selectedIndex; + + if ( parent.parentNode ) { + parent.parentNode.selectedIndex; + } + } + } + }; +} + +jQuery.each( [ + "tabIndex", + "readOnly", + "maxLength", + "cellSpacing", + "cellPadding", + "rowSpan", + "colSpan", + "useMap", + "frameBorder", + "contentEditable" +], function() { + jQuery.propFix[ this.toLowerCase() ] = this; +} ); + + + + + // Strip and collapse whitespace according to HTML spec + // https://html.spec.whatwg.org/multipage/infrastructure.html#strip-and-collapse-whitespace + function stripAndCollapse( value ) { + var tokens = value.match( rnothtmlwhite ) || []; + return tokens.join( " " ); + } + + +function getClass( elem ) { + return elem.getAttribute && elem.getAttribute( "class" ) || ""; +} + +jQuery.fn.extend( { + addClass: function( value ) { + var classes, elem, cur, curValue, clazz, j, finalValue, + i = 0; + + if ( jQuery.isFunction( value ) ) { + return this.each( function( j ) { + jQuery( this ).addClass( value.call( this, j, getClass( this ) ) ); + } ); + } + + if ( typeof value === "string" && value ) { + classes = value.match( rnothtmlwhite ) || []; + + while ( ( elem = this[ i++ ] ) ) { + curValue = getClass( elem ); + cur = elem.nodeType === 1 && ( " " + stripAndCollapse( curValue ) + " " ); + + if ( cur ) { + j = 0; + while ( ( clazz = classes[ j++ ] ) ) { + if ( cur.indexOf( " " + clazz + " " ) < 0 ) { + cur += clazz + " "; + } + } + + // Only assign if different to avoid unneeded rendering. + finalValue = stripAndCollapse( cur ); + if ( curValue !== finalValue ) { + elem.setAttribute( "class", finalValue ); + } + } + } + } + + return this; + }, + + removeClass: function( value ) { + var classes, elem, cur, curValue, clazz, j, finalValue, + i = 0; + + if ( jQuery.isFunction( value ) ) { + return this.each( function( j ) { + jQuery( this ).removeClass( value.call( this, j, getClass( this ) ) ); + } ); + } + + if ( !arguments.length ) { + return this.attr( "class", "" ); + } + + if ( typeof value === "string" && value ) { + classes = value.match( rnothtmlwhite ) || []; + + while ( ( elem = this[ i++ ] ) ) { + curValue = getClass( elem ); + + // This expression is here for better compressibility (see addClass) + cur = elem.nodeType === 1 && ( " " + stripAndCollapse( curValue ) + " " ); + + if ( cur ) { + j = 0; + while ( ( clazz = classes[ j++ ] ) ) { + + // Remove *all* instances + while ( cur.indexOf( " " + clazz + " " ) > -1 ) { + cur = cur.replace( " " + clazz + " ", " " ); + } + } + + // Only assign if different to avoid unneeded rendering. + finalValue = stripAndCollapse( cur ); + if ( curValue !== finalValue ) { + elem.setAttribute( "class", finalValue ); + } + } + } + } + + return this; + }, + + toggleClass: function( value, stateVal ) { + var type = typeof value; + + if ( typeof stateVal === "boolean" && type === "string" ) { + return stateVal ? this.addClass( value ) : this.removeClass( value ); + } + + if ( jQuery.isFunction( value ) ) { + return this.each( function( i ) { + jQuery( this ).toggleClass( + value.call( this, i, getClass( this ), stateVal ), + stateVal + ); + } ); + } + + return this.each( function() { + var className, i, self, classNames; + + if ( type === "string" ) { + + // Toggle individual class names + i = 0; + self = jQuery( this ); + classNames = value.match( rnothtmlwhite ) || []; + + while ( ( className = classNames[ i++ ] ) ) { + + // Check each className given, space separated list + if ( self.hasClass( className ) ) { + self.removeClass( className ); + } else { + self.addClass( className ); + } + } + + // Toggle whole class name + } else if ( value === undefined || type === "boolean" ) { + className = getClass( this ); + if ( className ) { + + // Store className if set + dataPriv.set( this, "__className__", className ); + } + + // If the element has a class name or if we're passed `false`, + // then remove the whole classname (if there was one, the above saved it). + // Otherwise bring back whatever was previously saved (if anything), + // falling back to the empty string if nothing was stored. + if ( this.setAttribute ) { + this.setAttribute( "class", + className || value === false ? + "" : + dataPriv.get( this, "__className__" ) || "" + ); + } + } + } ); + }, + + hasClass: function( selector ) { + var className, elem, + i = 0; + + className = " " + selector + " "; + while ( ( elem = this[ i++ ] ) ) { + if ( elem.nodeType === 1 && + ( " " + stripAndCollapse( getClass( elem ) ) + " " ).indexOf( className ) > -1 ) { + return true; + } + } + + return false; + } +} ); + + + + +var rreturn = /\r/g; + +jQuery.fn.extend( { + val: function( value ) { + var hooks, ret, isFunction, + elem = this[ 0 ]; + + if ( !arguments.length ) { + if ( elem ) { + hooks = jQuery.valHooks[ elem.type ] || + jQuery.valHooks[ elem.nodeName.toLowerCase() ]; + + if ( hooks && + "get" in hooks && + ( ret = hooks.get( elem, "value" ) ) !== undefined + ) { + return ret; + } + + ret = elem.value; + + // Handle most common string cases + if ( typeof ret === "string" ) { + return ret.replace( rreturn, "" ); + } + + // Handle cases where value is null/undef or number + return ret == null ? "" : ret; + } + + return; + } + + isFunction = jQuery.isFunction( value ); + + return this.each( function( i ) { + var val; + + if ( this.nodeType !== 1 ) { + return; + } + + if ( isFunction ) { + val = value.call( this, i, jQuery( this ).val() ); + } else { + val = value; + } + + // Treat null/undefined as ""; convert numbers to string + if ( val == null ) { + val = ""; + + } else if ( typeof val === "number" ) { + val += ""; + + } else if ( Array.isArray( val ) ) { + val = jQuery.map( val, function( value ) { + return value == null ? "" : value + ""; + } ); + } + + hooks = jQuery.valHooks[ this.type ] || jQuery.valHooks[ this.nodeName.toLowerCase() ]; + + // If set returns undefined, fall back to normal setting + if ( !hooks || !( "set" in hooks ) || hooks.set( this, val, "value" ) === undefined ) { + this.value = val; + } + } ); + } +} ); + +jQuery.extend( { + valHooks: { + option: { + get: function( elem ) { + + var val = jQuery.find.attr( elem, "value" ); + return val != null ? + val : + + // Support: IE <=10 - 11 only + // option.text throws exceptions (#14686, #14858) + // Strip and collapse whitespace + // https://html.spec.whatwg.org/#strip-and-collapse-whitespace + stripAndCollapse( jQuery.text( elem ) ); + } + }, + select: { + get: function( elem ) { + var value, option, i, + options = elem.options, + index = elem.selectedIndex, + one = elem.type === "select-one", + values = one ? null : [], + max = one ? index + 1 : options.length; + + if ( index < 0 ) { + i = max; + + } else { + i = one ? index : 0; + } + + // Loop through all the selected options + for ( ; i < max; i++ ) { + option = options[ i ]; + + // Support: IE <=9 only + // IE8-9 doesn't update selected after form reset (#2551) + if ( ( option.selected || i === index ) && + + // Don't return options that are disabled or in a disabled optgroup + !option.disabled && + ( !option.parentNode.disabled || + !nodeName( option.parentNode, "optgroup" ) ) ) { + + // Get the specific value for the option + value = jQuery( option ).val(); + + // We don't need an array for one selects + if ( one ) { + return value; + } + + // Multi-Selects return an array + values.push( value ); + } + } + + return values; + }, + + set: function( elem, value ) { + var optionSet, option, + options = elem.options, + values = jQuery.makeArray( value ), + i = options.length; + + while ( i-- ) { + option = options[ i ]; + + /* eslint-disable no-cond-assign */ + + if ( option.selected = + jQuery.inArray( jQuery.valHooks.option.get( option ), values ) > -1 + ) { + optionSet = true; + } + + /* eslint-enable no-cond-assign */ + } + + // Force browsers to behave consistently when non-matching value is set + if ( !optionSet ) { + elem.selectedIndex = -1; + } + return values; + } + } + } +} ); + +// Radios and checkboxes getter/setter +jQuery.each( [ "radio", "checkbox" ], function() { + jQuery.valHooks[ this ] = { + set: function( elem, value ) { + if ( Array.isArray( value ) ) { + return ( elem.checked = jQuery.inArray( jQuery( elem ).val(), value ) > -1 ); + } + } + }; + if ( !support.checkOn ) { + jQuery.valHooks[ this ].get = function( elem ) { + return elem.getAttribute( "value" ) === null ? "on" : elem.value; + }; + } +} ); + + + + +// Return jQuery for attributes-only inclusion + + +var rfocusMorph = /^(?:focusinfocus|focusoutblur)$/; + +jQuery.extend( jQuery.event, { + + trigger: function( event, data, elem, onlyHandlers ) { + + var i, cur, tmp, bubbleType, ontype, handle, special, + eventPath = [ elem || document ], + type = hasOwn.call( event, "type" ) ? event.type : event, + namespaces = hasOwn.call( event, "namespace" ) ? event.namespace.split( "." ) : []; + + cur = tmp = elem = elem || document; + + // Don't do events on text and comment nodes + if ( elem.nodeType === 3 || elem.nodeType === 8 ) { + return; + } + + // focus/blur morphs to focusin/out; ensure we're not firing them right now + if ( rfocusMorph.test( type + jQuery.event.triggered ) ) { + return; + } + + if ( type.indexOf( "." ) > -1 ) { + + // Namespaced trigger; create a regexp to match event type in handle() + namespaces = type.split( "." ); + type = namespaces.shift(); + namespaces.sort(); + } + ontype = type.indexOf( ":" ) < 0 && "on" + type; + + // Caller can pass in a jQuery.Event object, Object, or just an event type string + event = event[ jQuery.expando ] ? + event : + new jQuery.Event( type, typeof event === "object" && event ); + + // Trigger bitmask: & 1 for native handlers; & 2 for jQuery (always true) + event.isTrigger = onlyHandlers ? 2 : 3; + event.namespace = namespaces.join( "." ); + event.rnamespace = event.namespace ? + new RegExp( "(^|\\.)" + namespaces.join( "\\.(?:.*\\.|)" ) + "(\\.|$)" ) : + null; + + // Clean up the event in case it is being reused + event.result = undefined; + if ( !event.target ) { + event.target = elem; + } + + // Clone any incoming data and prepend the event, creating the handler arg list + data = data == null ? + [ event ] : + jQuery.makeArray( data, [ event ] ); + + // Allow special events to draw outside the lines + special = jQuery.event.special[ type ] || {}; + if ( !onlyHandlers && special.trigger && special.trigger.apply( elem, data ) === false ) { + return; + } + + // Determine event propagation path in advance, per W3C events spec (#9951) + // Bubble up to document, then to window; watch for a global ownerDocument var (#9724) + if ( !onlyHandlers && !special.noBubble && !jQuery.isWindow( elem ) ) { + + bubbleType = special.delegateType || type; + if ( !rfocusMorph.test( bubbleType + type ) ) { + cur = cur.parentNode; + } + for ( ; cur; cur = cur.parentNode ) { + eventPath.push( cur ); + tmp = cur; + } + + // Only add window if we got to document (e.g., not plain obj or detached DOM) + if ( tmp === ( elem.ownerDocument || document ) ) { + eventPath.push( tmp.defaultView || tmp.parentWindow || window ); + } + } + + // Fire handlers on the event path + i = 0; + while ( ( cur = eventPath[ i++ ] ) && !event.isPropagationStopped() ) { + + event.type = i > 1 ? + bubbleType : + special.bindType || type; + + // jQuery handler + handle = ( dataPriv.get( cur, "events" ) || {} )[ event.type ] && + dataPriv.get( cur, "handle" ); + if ( handle ) { + handle.apply( cur, data ); + } + + // Native handler + handle = ontype && cur[ ontype ]; + if ( handle && handle.apply && acceptData( cur ) ) { + event.result = handle.apply( cur, data ); + if ( event.result === false ) { + event.preventDefault(); + } + } + } + event.type = type; + + // If nobody prevented the default action, do it now + if ( !onlyHandlers && !event.isDefaultPrevented() ) { + + if ( ( !special._default || + special._default.apply( eventPath.pop(), data ) === false ) && + acceptData( elem ) ) { + + // Call a native DOM method on the target with the same name as the event. + // Don't do default actions on window, that's where global variables be (#6170) + if ( ontype && jQuery.isFunction( elem[ type ] ) && !jQuery.isWindow( elem ) ) { + + // Don't re-trigger an onFOO event when we call its FOO() method + tmp = elem[ ontype ]; + + if ( tmp ) { + elem[ ontype ] = null; + } + + // Prevent re-triggering of the same event, since we already bubbled it above + jQuery.event.triggered = type; + elem[ type ](); + jQuery.event.triggered = undefined; + + if ( tmp ) { + elem[ ontype ] = tmp; + } + } + } + } + + return event.result; + }, + + // Piggyback on a donor event to simulate a different one + // Used only for `focus(in | out)` events + simulate: function( type, elem, event ) { + var e = jQuery.extend( + new jQuery.Event(), + event, + { + type: type, + isSimulated: true + } + ); + + jQuery.event.trigger( e, null, elem ); + } + +} ); + +jQuery.fn.extend( { + + trigger: function( type, data ) { + return this.each( function() { + jQuery.event.trigger( type, data, this ); + } ); + }, + triggerHandler: function( type, data ) { + var elem = this[ 0 ]; + if ( elem ) { + return jQuery.event.trigger( type, data, elem, true ); + } + } +} ); + + +jQuery.each( ( "blur focus focusin focusout resize scroll click dblclick " + + "mousedown mouseup mousemove mouseover mouseout mouseenter mouseleave " + + "change select submit keydown keypress keyup contextmenu" ).split( " " ), + function( i, name ) { + + // Handle event binding + jQuery.fn[ name ] = function( data, fn ) { + return arguments.length > 0 ? + this.on( name, null, data, fn ) : + this.trigger( name ); + }; +} ); + +jQuery.fn.extend( { + hover: function( fnOver, fnOut ) { + return this.mouseenter( fnOver ).mouseleave( fnOut || fnOver ); + } +} ); + + + + +support.focusin = "onfocusin" in window; + + +// Support: Firefox <=44 +// Firefox doesn't have focus(in | out) events +// Related ticket - https://bugzilla.mozilla.org/show_bug.cgi?id=687787 +// +// Support: Chrome <=48 - 49, Safari <=9.0 - 9.1 +// focus(in | out) events fire after focus & blur events, +// which is spec violation - http://www.w3.org/TR/DOM-Level-3-Events/#events-focusevent-event-order +// Related ticket - https://bugs.chromium.org/p/chromium/issues/detail?id=449857 +if ( !support.focusin ) { + jQuery.each( { focus: "focusin", blur: "focusout" }, function( orig, fix ) { + + // Attach a single capturing handler on the document while someone wants focusin/focusout + var handler = function( event ) { + jQuery.event.simulate( fix, event.target, jQuery.event.fix( event ) ); + }; + + jQuery.event.special[ fix ] = { + setup: function() { + var doc = this.ownerDocument || this, + attaches = dataPriv.access( doc, fix ); + + if ( !attaches ) { + doc.addEventListener( orig, handler, true ); + } + dataPriv.access( doc, fix, ( attaches || 0 ) + 1 ); + }, + teardown: function() { + var doc = this.ownerDocument || this, + attaches = dataPriv.access( doc, fix ) - 1; + + if ( !attaches ) { + doc.removeEventListener( orig, handler, true ); + dataPriv.remove( doc, fix ); + + } else { + dataPriv.access( doc, fix, attaches ); + } + } + }; + } ); +} +var location = window.location; + +var nonce = jQuery.now(); + +var rquery = ( /\?/ ); + + + +// Cross-browser xml parsing +jQuery.parseXML = function( data ) { + var xml; + if ( !data || typeof data !== "string" ) { + return null; + } + + // Support: IE 9 - 11 only + // IE throws on parseFromString with invalid input. + try { + xml = ( new window.DOMParser() ).parseFromString( data, "text/xml" ); + } catch ( e ) { + xml = undefined; + } + + if ( !xml || xml.getElementsByTagName( "parsererror" ).length ) { + jQuery.error( "Invalid XML: " + data ); + } + return xml; +}; + + +var + rbracket = /\[\]$/, + rCRLF = /\r?\n/g, + rsubmitterTypes = /^(?:submit|button|image|reset|file)$/i, + rsubmittable = /^(?:input|select|textarea|keygen)/i; + +function buildParams( prefix, obj, traditional, add ) { + var name; + + if ( Array.isArray( obj ) ) { + + // Serialize array item. + jQuery.each( obj, function( i, v ) { + if ( traditional || rbracket.test( prefix ) ) { + + // Treat each array item as a scalar. + add( prefix, v ); + + } else { + + // Item is non-scalar (array or object), encode its numeric index. + buildParams( + prefix + "[" + ( typeof v === "object" && v != null ? i : "" ) + "]", + v, + traditional, + add + ); + } + } ); + + } else if ( !traditional && jQuery.type( obj ) === "object" ) { + + // Serialize object item. + for ( name in obj ) { + buildParams( prefix + "[" + name + "]", obj[ name ], traditional, add ); + } + + } else { + + // Serialize scalar item. + add( prefix, obj ); + } +} + +// Serialize an array of form elements or a set of +// key/values into a query string +jQuery.param = function( a, traditional ) { + var prefix, + s = [], + add = function( key, valueOrFunction ) { + + // If value is a function, invoke it and use its return value + var value = jQuery.isFunction( valueOrFunction ) ? + valueOrFunction() : + valueOrFunction; + + s[ s.length ] = encodeURIComponent( key ) + "=" + + encodeURIComponent( value == null ? "" : value ); + }; + + // If an array was passed in, assume that it is an array of form elements. + if ( Array.isArray( a ) || ( a.jquery && !jQuery.isPlainObject( a ) ) ) { + + // Serialize the form elements + jQuery.each( a, function() { + add( this.name, this.value ); + } ); + + } else { + + // If traditional, encode the "old" way (the way 1.3.2 or older + // did it), otherwise encode params recursively. + for ( prefix in a ) { + buildParams( prefix, a[ prefix ], traditional, add ); + } + } + + // Return the resulting serialization + return s.join( "&" ); +}; + +jQuery.fn.extend( { + serialize: function() { + return jQuery.param( this.serializeArray() ); + }, + serializeArray: function() { + return this.map( function() { + + // Can add propHook for "elements" to filter or add form elements + var elements = jQuery.prop( this, "elements" ); + return elements ? jQuery.makeArray( elements ) : this; + } ) + .filter( function() { + var type = this.type; + + // Use .is( ":disabled" ) so that fieldset[disabled] works + return this.name && !jQuery( this ).is( ":disabled" ) && + rsubmittable.test( this.nodeName ) && !rsubmitterTypes.test( type ) && + ( this.checked || !rcheckableType.test( type ) ); + } ) + .map( function( i, elem ) { + var val = jQuery( this ).val(); + + if ( val == null ) { + return null; + } + + if ( Array.isArray( val ) ) { + return jQuery.map( val, function( val ) { + return { name: elem.name, value: val.replace( rCRLF, "\r\n" ) }; + } ); + } + + return { name: elem.name, value: val.replace( rCRLF, "\r\n" ) }; + } ).get(); + } +} ); + + +var + r20 = /%20/g, + rhash = /#.*$/, + rantiCache = /([?&])_=[^&]*/, + rheaders = /^(.*?):[ \t]*([^\r\n]*)$/mg, + + // #7653, #8125, #8152: local protocol detection + rlocalProtocol = /^(?:about|app|app-storage|.+-extension|file|res|widget):$/, + rnoContent = /^(?:GET|HEAD)$/, + rprotocol = /^\/\//, + + /* Prefilters + * 1) They are useful to introduce custom dataTypes (see ajax/jsonp.js for an example) + * 2) These are called: + * - BEFORE asking for a transport + * - AFTER param serialization (s.data is a string if s.processData is true) + * 3) key is the dataType + * 4) the catchall symbol "*" can be used + * 5) execution will start with transport dataType and THEN continue down to "*" if needed + */ + prefilters = {}, + + /* Transports bindings + * 1) key is the dataType + * 2) the catchall symbol "*" can be used + * 3) selection will start with transport dataType and THEN go to "*" if needed + */ + transports = {}, + + // Avoid comment-prolog char sequence (#10098); must appease lint and evade compression + allTypes = "*/".concat( "*" ), + + // Anchor tag for parsing the document origin + originAnchor = document.createElement( "a" ); + originAnchor.href = location.href; + +// Base "constructor" for jQuery.ajaxPrefilter and jQuery.ajaxTransport +function addToPrefiltersOrTransports( structure ) { + + // dataTypeExpression is optional and defaults to "*" + return function( dataTypeExpression, func ) { + + if ( typeof dataTypeExpression !== "string" ) { + func = dataTypeExpression; + dataTypeExpression = "*"; + } + + var dataType, + i = 0, + dataTypes = dataTypeExpression.toLowerCase().match( rnothtmlwhite ) || []; + + if ( jQuery.isFunction( func ) ) { + + // For each dataType in the dataTypeExpression + while ( ( dataType = dataTypes[ i++ ] ) ) { + + // Prepend if requested + if ( dataType[ 0 ] === "+" ) { + dataType = dataType.slice( 1 ) || "*"; + ( structure[ dataType ] = structure[ dataType ] || [] ).unshift( func ); + + // Otherwise append + } else { + ( structure[ dataType ] = structure[ dataType ] || [] ).push( func ); + } + } + } + }; +} + +// Base inspection function for prefilters and transports +function inspectPrefiltersOrTransports( structure, options, originalOptions, jqXHR ) { + + var inspected = {}, + seekingTransport = ( structure === transports ); + + function inspect( dataType ) { + var selected; + inspected[ dataType ] = true; + jQuery.each( structure[ dataType ] || [], function( _, prefilterOrFactory ) { + var dataTypeOrTransport = prefilterOrFactory( options, originalOptions, jqXHR ); + if ( typeof dataTypeOrTransport === "string" && + !seekingTransport && !inspected[ dataTypeOrTransport ] ) { + + options.dataTypes.unshift( dataTypeOrTransport ); + inspect( dataTypeOrTransport ); + return false; + } else if ( seekingTransport ) { + return !( selected = dataTypeOrTransport ); + } + } ); + return selected; + } + + return inspect( options.dataTypes[ 0 ] ) || !inspected[ "*" ] && inspect( "*" ); +} + +// A special extend for ajax options +// that takes "flat" options (not to be deep extended) +// Fixes #9887 +function ajaxExtend( target, src ) { + var key, deep, + flatOptions = jQuery.ajaxSettings.flatOptions || {}; + + for ( key in src ) { + if ( src[ key ] !== undefined ) { + ( flatOptions[ key ] ? target : ( deep || ( deep = {} ) ) )[ key ] = src[ key ]; + } + } + if ( deep ) { + jQuery.extend( true, target, deep ); + } + + return target; +} + +/* Handles responses to an ajax request: + * - finds the right dataType (mediates between content-type and expected dataType) + * - returns the corresponding response + */ +function ajaxHandleResponses( s, jqXHR, responses ) { + + var ct, type, finalDataType, firstDataType, + contents = s.contents, + dataTypes = s.dataTypes; + + // Remove auto dataType and get content-type in the process + while ( dataTypes[ 0 ] === "*" ) { + dataTypes.shift(); + if ( ct === undefined ) { + ct = s.mimeType || jqXHR.getResponseHeader( "Content-Type" ); + } + } + + // Check if we're dealing with a known content-type + if ( ct ) { + for ( type in contents ) { + if ( contents[ type ] && contents[ type ].test( ct ) ) { + dataTypes.unshift( type ); + break; + } + } + } + + // Check to see if we have a response for the expected dataType + if ( dataTypes[ 0 ] in responses ) { + finalDataType = dataTypes[ 0 ]; + } else { + + // Try convertible dataTypes + for ( type in responses ) { + if ( !dataTypes[ 0 ] || s.converters[ type + " " + dataTypes[ 0 ] ] ) { + finalDataType = type; + break; + } + if ( !firstDataType ) { + firstDataType = type; + } + } + + // Or just use first one + finalDataType = finalDataType || firstDataType; + } + + // If we found a dataType + // We add the dataType to the list if needed + // and return the corresponding response + if ( finalDataType ) { + if ( finalDataType !== dataTypes[ 0 ] ) { + dataTypes.unshift( finalDataType ); + } + return responses[ finalDataType ]; + } +} + +/* Chain conversions given the request and the original response + * Also sets the responseXXX fields on the jqXHR instance + */ +function ajaxConvert( s, response, jqXHR, isSuccess ) { + var conv2, current, conv, tmp, prev, + converters = {}, + + // Work with a copy of dataTypes in case we need to modify it for conversion + dataTypes = s.dataTypes.slice(); + + // Create converters map with lowercased keys + if ( dataTypes[ 1 ] ) { + for ( conv in s.converters ) { + converters[ conv.toLowerCase() ] = s.converters[ conv ]; + } + } + + current = dataTypes.shift(); + + // Convert to each sequential dataType + while ( current ) { + + if ( s.responseFields[ current ] ) { + jqXHR[ s.responseFields[ current ] ] = response; + } + + // Apply the dataFilter if provided + if ( !prev && isSuccess && s.dataFilter ) { + response = s.dataFilter( response, s.dataType ); + } + + prev = current; + current = dataTypes.shift(); + + if ( current ) { + + // There's only work to do if current dataType is non-auto + if ( current === "*" ) { + + current = prev; + + // Convert response if prev dataType is non-auto and differs from current + } else if ( prev !== "*" && prev !== current ) { + + // Seek a direct converter + conv = converters[ prev + " " + current ] || converters[ "* " + current ]; + + // If none found, seek a pair + if ( !conv ) { + for ( conv2 in converters ) { + + // If conv2 outputs current + tmp = conv2.split( " " ); + if ( tmp[ 1 ] === current ) { + + // If prev can be converted to accepted input + conv = converters[ prev + " " + tmp[ 0 ] ] || + converters[ "* " + tmp[ 0 ] ]; + if ( conv ) { + + // Condense equivalence converters + if ( conv === true ) { + conv = converters[ conv2 ]; + + // Otherwise, insert the intermediate dataType + } else if ( converters[ conv2 ] !== true ) { + current = tmp[ 0 ]; + dataTypes.unshift( tmp[ 1 ] ); + } + break; + } + } + } + } + + // Apply converter (if not an equivalence) + if ( conv !== true ) { + + // Unless errors are allowed to bubble, catch and return them + if ( conv && s.throws ) { + response = conv( response ); + } else { + try { + response = conv( response ); + } catch ( e ) { + return { + state: "parsererror", + error: conv ? e : "No conversion from " + prev + " to " + current + }; + } + } + } + } + } + } + + return { state: "success", data: response }; +} + +jQuery.extend( { + + // Counter for holding the number of active queries + active: 0, + + // Last-Modified header cache for next request + lastModified: {}, + etag: {}, + + ajaxSettings: { + url: location.href, + type: "GET", + isLocal: rlocalProtocol.test( location.protocol ), + global: true, + processData: true, + async: true, + contentType: "application/x-www-form-urlencoded; charset=UTF-8", + + /* + timeout: 0, + data: null, + dataType: null, + username: null, + password: null, + cache: null, + throws: false, + traditional: false, + headers: {}, + */ + + accepts: { + "*": allTypes, + text: "text/plain", + html: "text/html", + xml: "application/xml, text/xml", + json: "application/json, text/javascript" + }, + + contents: { + xml: /\bxml\b/, + html: /\bhtml/, + json: /\bjson\b/ + }, + + responseFields: { + xml: "responseXML", + text: "responseText", + json: "responseJSON" + }, + + // Data converters + // Keys separate source (or catchall "*") and destination types with a single space + converters: { + + // Convert anything to text + "* text": String, + + // Text to html (true = no transformation) + "text html": true, + + // Evaluate text as a json expression + "text json": JSON.parse, + + // Parse text as xml + "text xml": jQuery.parseXML + }, + + // For options that shouldn't be deep extended: + // you can add your own custom options here if + // and when you create one that shouldn't be + // deep extended (see ajaxExtend) + flatOptions: { + url: true, + context: true + } + }, + + // Creates a full fledged settings object into target + // with both ajaxSettings and settings fields. + // If target is omitted, writes into ajaxSettings. + ajaxSetup: function( target, settings ) { + return settings ? + + // Building a settings object + ajaxExtend( ajaxExtend( target, jQuery.ajaxSettings ), settings ) : + + // Extending ajaxSettings + ajaxExtend( jQuery.ajaxSettings, target ); + }, + + ajaxPrefilter: addToPrefiltersOrTransports( prefilters ), + ajaxTransport: addToPrefiltersOrTransports( transports ), + + // Main method + ajax: function( url, options ) { + + // If url is an object, simulate pre-1.5 signature + if ( typeof url === "object" ) { + options = url; + url = undefined; + } + + // Force options to be an object + options = options || {}; + + var transport, + + // URL without anti-cache param + cacheURL, + + // Response headers + responseHeadersString, + responseHeaders, + + // timeout handle + timeoutTimer, + + // Url cleanup var + urlAnchor, + + // Request state (becomes false upon send and true upon completion) + completed, + + // To know if global events are to be dispatched + fireGlobals, + + // Loop variable + i, + + // uncached part of the url + uncached, + + // Create the final options object + s = jQuery.ajaxSetup( {}, options ), + + // Callbacks context + callbackContext = s.context || s, + + // Context for global events is callbackContext if it is a DOM node or jQuery collection + globalEventContext = s.context && + ( callbackContext.nodeType || callbackContext.jquery ) ? + jQuery( callbackContext ) : + jQuery.event, + + // Deferreds + deferred = jQuery.Deferred(), + completeDeferred = jQuery.Callbacks( "once memory" ), + + // Status-dependent callbacks + statusCode = s.statusCode || {}, + + // Headers (they are sent all at once) + requestHeaders = {}, + requestHeadersNames = {}, + + // Default abort message + strAbort = "canceled", + + // Fake xhr + jqXHR = { + readyState: 0, + + // Builds headers hashtable if needed + getResponseHeader: function( key ) { + var match; + if ( completed ) { + if ( !responseHeaders ) { + responseHeaders = {}; + while ( ( match = rheaders.exec( responseHeadersString ) ) ) { + responseHeaders[ match[ 1 ].toLowerCase() ] = match[ 2 ]; + } + } + match = responseHeaders[ key.toLowerCase() ]; + } + return match == null ? null : match; + }, + + // Raw string + getAllResponseHeaders: function() { + return completed ? responseHeadersString : null; + }, + + // Caches the header + setRequestHeader: function( name, value ) { + if ( completed == null ) { + name = requestHeadersNames[ name.toLowerCase() ] = + requestHeadersNames[ name.toLowerCase() ] || name; + requestHeaders[ name ] = value; + } + return this; + }, + + // Overrides response content-type header + overrideMimeType: function( type ) { + if ( completed == null ) { + s.mimeType = type; + } + return this; + }, + + // Status-dependent callbacks + statusCode: function( map ) { + var code; + if ( map ) { + if ( completed ) { + + // Execute the appropriate callbacks + jqXHR.always( map[ jqXHR.status ] ); + } else { + + // Lazy-add the new callbacks in a way that preserves old ones + for ( code in map ) { + statusCode[ code ] = [ statusCode[ code ], map[ code ] ]; + } + } + } + return this; + }, + + // Cancel the request + abort: function( statusText ) { + var finalText = statusText || strAbort; + if ( transport ) { + transport.abort( finalText ); + } + done( 0, finalText ); + return this; + } + }; + + // Attach deferreds + deferred.promise( jqXHR ); + + // Add protocol if not provided (prefilters might expect it) + // Handle falsy url in the settings object (#10093: consistency with old signature) + // We also use the url parameter if available + s.url = ( ( url || s.url || location.href ) + "" ) + .replace( rprotocol, location.protocol + "//" ); + + // Alias method option to type as per ticket #12004 + s.type = options.method || options.type || s.method || s.type; + + // Extract dataTypes list + s.dataTypes = ( s.dataType || "*" ).toLowerCase().match( rnothtmlwhite ) || [ "" ]; + + // A cross-domain request is in order when the origin doesn't match the current origin. + if ( s.crossDomain == null ) { + urlAnchor = document.createElement( "a" ); + + // Support: IE <=8 - 11, Edge 12 - 13 + // IE throws exception on accessing the href property if url is malformed, + // e.g. http://example.com:80x/ + try { + urlAnchor.href = s.url; + + // Support: IE <=8 - 11 only + // Anchor's host property isn't correctly set when s.url is relative + urlAnchor.href = urlAnchor.href; + s.crossDomain = originAnchor.protocol + "//" + originAnchor.host !== + urlAnchor.protocol + "//" + urlAnchor.host; + } catch ( e ) { + + // If there is an error parsing the URL, assume it is crossDomain, + // it can be rejected by the transport if it is invalid + s.crossDomain = true; + } + } + + // Convert data if not already a string + if ( s.data && s.processData && typeof s.data !== "string" ) { + s.data = jQuery.param( s.data, s.traditional ); + } + + // Apply prefilters + inspectPrefiltersOrTransports( prefilters, s, options, jqXHR ); + + // If request was aborted inside a prefilter, stop there + if ( completed ) { + return jqXHR; + } + + // We can fire global events as of now if asked to + // Don't fire events if jQuery.event is undefined in an AMD-usage scenario (#15118) + fireGlobals = jQuery.event && s.global; + + // Watch for a new set of requests + if ( fireGlobals && jQuery.active++ === 0 ) { + jQuery.event.trigger( "ajaxStart" ); + } + + // Uppercase the type + s.type = s.type.toUpperCase(); + + // Determine if request has content + s.hasContent = !rnoContent.test( s.type ); + + // Save the URL in case we're toying with the If-Modified-Since + // and/or If-None-Match header later on + // Remove hash to simplify url manipulation + cacheURL = s.url.replace( rhash, "" ); + + // More options handling for requests with no content + if ( !s.hasContent ) { + + // Remember the hash so we can put it back + uncached = s.url.slice( cacheURL.length ); + + // If data is available, append data to url + if ( s.data ) { + cacheURL += ( rquery.test( cacheURL ) ? "&" : "?" ) + s.data; + + // #9682: remove data so that it's not used in an eventual retry + delete s.data; + } + + // Add or update anti-cache param if needed + if ( s.cache === false ) { + cacheURL = cacheURL.replace( rantiCache, "$1" ); + uncached = ( rquery.test( cacheURL ) ? "&" : "?" ) + "_=" + ( nonce++ ) + uncached; + } + + // Put hash and anti-cache on the URL that will be requested (gh-1732) + s.url = cacheURL + uncached; + + // Change '%20' to '+' if this is encoded form body content (gh-2658) + } else if ( s.data && s.processData && + ( s.contentType || "" ).indexOf( "application/x-www-form-urlencoded" ) === 0 ) { + s.data = s.data.replace( r20, "+" ); + } + + // Set the If-Modified-Since and/or If-None-Match header, if in ifModified mode. + if ( s.ifModified ) { + if ( jQuery.lastModified[ cacheURL ] ) { + jqXHR.setRequestHeader( "If-Modified-Since", jQuery.lastModified[ cacheURL ] ); + } + if ( jQuery.etag[ cacheURL ] ) { + jqXHR.setRequestHeader( "If-None-Match", jQuery.etag[ cacheURL ] ); + } + } + + // Set the correct header, if data is being sent + if ( s.data && s.hasContent && s.contentType !== false || options.contentType ) { + jqXHR.setRequestHeader( "Content-Type", s.contentType ); + } + + // Set the Accepts header for the server, depending on the dataType + jqXHR.setRequestHeader( + "Accept", + s.dataTypes[ 0 ] && s.accepts[ s.dataTypes[ 0 ] ] ? + s.accepts[ s.dataTypes[ 0 ] ] + + ( s.dataTypes[ 0 ] !== "*" ? ", " + allTypes + "; q=0.01" : "" ) : + s.accepts[ "*" ] + ); + + // Check for headers option + for ( i in s.headers ) { + jqXHR.setRequestHeader( i, s.headers[ i ] ); + } + + // Allow custom headers/mimetypes and early abort + if ( s.beforeSend && + ( s.beforeSend.call( callbackContext, jqXHR, s ) === false || completed ) ) { + + // Abort if not done already and return + return jqXHR.abort(); + } + + // Aborting is no longer a cancellation + strAbort = "abort"; + + // Install callbacks on deferreds + completeDeferred.add( s.complete ); + jqXHR.done( s.success ); + jqXHR.fail( s.error ); + + // Get transport + transport = inspectPrefiltersOrTransports( transports, s, options, jqXHR ); + + // If no transport, we auto-abort + if ( !transport ) { + done( -1, "No Transport" ); + } else { + jqXHR.readyState = 1; + + // Send global event + if ( fireGlobals ) { + globalEventContext.trigger( "ajaxSend", [ jqXHR, s ] ); + } + + // If request was aborted inside ajaxSend, stop there + if ( completed ) { + return jqXHR; + } + + // Timeout + if ( s.async && s.timeout > 0 ) { + timeoutTimer = window.setTimeout( function() { + jqXHR.abort( "timeout" ); + }, s.timeout ); + } + + try { + completed = false; + transport.send( requestHeaders, done ); + } catch ( e ) { + + // Rethrow post-completion exceptions + if ( completed ) { + throw e; + } + + // Propagate others as results + done( -1, e ); + } + } + + // Callback for when everything is done + function done( status, nativeStatusText, responses, headers ) { + var isSuccess, success, error, response, modified, + statusText = nativeStatusText; + + // Ignore repeat invocations + if ( completed ) { + return; + } + + completed = true; + + // Clear timeout if it exists + if ( timeoutTimer ) { + window.clearTimeout( timeoutTimer ); + } + + // Dereference transport for early garbage collection + // (no matter how long the jqXHR object will be used) + transport = undefined; + + // Cache response headers + responseHeadersString = headers || ""; + + // Set readyState + jqXHR.readyState = status > 0 ? 4 : 0; + + // Determine if successful + isSuccess = status >= 200 && status < 300 || status === 304; + + // Get response data + if ( responses ) { + response = ajaxHandleResponses( s, jqXHR, responses ); + } + + // Convert no matter what (that way responseXXX fields are always set) + response = ajaxConvert( s, response, jqXHR, isSuccess ); + + // If successful, handle type chaining + if ( isSuccess ) { + + // Set the If-Modified-Since and/or If-None-Match header, if in ifModified mode. + if ( s.ifModified ) { + modified = jqXHR.getResponseHeader( "Last-Modified" ); + if ( modified ) { + jQuery.lastModified[ cacheURL ] = modified; + } + modified = jqXHR.getResponseHeader( "etag" ); + if ( modified ) { + jQuery.etag[ cacheURL ] = modified; + } + } + + // if no content + if ( status === 204 || s.type === "HEAD" ) { + statusText = "nocontent"; + + // if not modified + } else if ( status === 304 ) { + statusText = "notmodified"; + + // If we have data, let's convert it + } else { + statusText = response.state; + success = response.data; + error = response.error; + isSuccess = !error; + } + } else { + + // Extract error from statusText and normalize for non-aborts + error = statusText; + if ( status || !statusText ) { + statusText = "error"; + if ( status < 0 ) { + status = 0; + } + } + } + + // Set data for the fake xhr object + jqXHR.status = status; + jqXHR.statusText = ( nativeStatusText || statusText ) + ""; + + // Success/Error + if ( isSuccess ) { + deferred.resolveWith( callbackContext, [ success, statusText, jqXHR ] ); + } else { + deferred.rejectWith( callbackContext, [ jqXHR, statusText, error ] ); + } + + // Status-dependent callbacks + jqXHR.statusCode( statusCode ); + statusCode = undefined; + + if ( fireGlobals ) { + globalEventContext.trigger( isSuccess ? "ajaxSuccess" : "ajaxError", + [ jqXHR, s, isSuccess ? success : error ] ); + } + + // Complete + completeDeferred.fireWith( callbackContext, [ jqXHR, statusText ] ); + + if ( fireGlobals ) { + globalEventContext.trigger( "ajaxComplete", [ jqXHR, s ] ); + + // Handle the global AJAX counter + if ( !( --jQuery.active ) ) { + jQuery.event.trigger( "ajaxStop" ); + } + } + } + + return jqXHR; + }, + + getJSON: function( url, data, callback ) { + return jQuery.get( url, data, callback, "json" ); + }, + + getScript: function( url, callback ) { + return jQuery.get( url, undefined, callback, "script" ); + } +} ); + +jQuery.each( [ "get", "post" ], function( i, method ) { + jQuery[ method ] = function( url, data, callback, type ) { + + // Shift arguments if data argument was omitted + if ( jQuery.isFunction( data ) ) { + type = type || callback; + callback = data; + data = undefined; + } + + // The url can be an options object (which then must have .url) + return jQuery.ajax( jQuery.extend( { + url: url, + type: method, + dataType: type, + data: data, + success: callback + }, jQuery.isPlainObject( url ) && url ) ); + }; +} ); + + +jQuery._evalUrl = function( url ) { + return jQuery.ajax( { + url: url, + + // Make this explicit, since user can override this through ajaxSetup (#11264) + type: "GET", + dataType: "script", + cache: true, + async: false, + global: false, + "throws": true + } ); +}; + + +jQuery.fn.extend( { + wrapAll: function( html ) { + var wrap; + + if ( this[ 0 ] ) { + if ( jQuery.isFunction( html ) ) { + html = html.call( this[ 0 ] ); + } + + // The elements to wrap the target around + wrap = jQuery( html, this[ 0 ].ownerDocument ).eq( 0 ).clone( true ); + + if ( this[ 0 ].parentNode ) { + wrap.insertBefore( this[ 0 ] ); + } + + wrap.map( function() { + var elem = this; + + while ( elem.firstElementChild ) { + elem = elem.firstElementChild; + } + + return elem; + } ).append( this ); + } + + return this; + }, + + wrapInner: function( html ) { + if ( jQuery.isFunction( html ) ) { + return this.each( function( i ) { + jQuery( this ).wrapInner( html.call( this, i ) ); + } ); + } + + return this.each( function() { + var self = jQuery( this ), + contents = self.contents(); + + if ( contents.length ) { + contents.wrapAll( html ); + + } else { + self.append( html ); + } + } ); + }, + + wrap: function( html ) { + var isFunction = jQuery.isFunction( html ); + + return this.each( function( i ) { + jQuery( this ).wrapAll( isFunction ? html.call( this, i ) : html ); + } ); + }, + + unwrap: function( selector ) { + this.parent( selector ).not( "body" ).each( function() { + jQuery( this ).replaceWith( this.childNodes ); + } ); + return this; + } +} ); + + +jQuery.expr.pseudos.hidden = function( elem ) { + return !jQuery.expr.pseudos.visible( elem ); +}; +jQuery.expr.pseudos.visible = function( elem ) { + return !!( elem.offsetWidth || elem.offsetHeight || elem.getClientRects().length ); +}; + + + + +jQuery.ajaxSettings.xhr = function() { + try { + return new window.XMLHttpRequest(); + } catch ( e ) {} +}; + +var xhrSuccessStatus = { + + // File protocol always yields status code 0, assume 200 + 0: 200, + + // Support: IE <=9 only + // #1450: sometimes IE returns 1223 when it should be 204 + 1223: 204 + }, + xhrSupported = jQuery.ajaxSettings.xhr(); + +support.cors = !!xhrSupported && ( "withCredentials" in xhrSupported ); +support.ajax = xhrSupported = !!xhrSupported; + +jQuery.ajaxTransport( function( options ) { + var callback, errorCallback; + + // Cross domain only allowed if supported through XMLHttpRequest + if ( support.cors || xhrSupported && !options.crossDomain ) { + return { + send: function( headers, complete ) { + var i, + xhr = options.xhr(); + + xhr.open( + options.type, + options.url, + options.async, + options.username, + options.password + ); + + // Apply custom fields if provided + if ( options.xhrFields ) { + for ( i in options.xhrFields ) { + xhr[ i ] = options.xhrFields[ i ]; + } + } + + // Override mime type if needed + if ( options.mimeType && xhr.overrideMimeType ) { + xhr.overrideMimeType( options.mimeType ); + } + + // X-Requested-With header + // For cross-domain requests, seeing as conditions for a preflight are + // akin to a jigsaw puzzle, we simply never set it to be sure. + // (it can always be set on a per-request basis or even using ajaxSetup) + // For same-domain requests, won't change header if already provided. + if ( !options.crossDomain && !headers[ "X-Requested-With" ] ) { + headers[ "X-Requested-With" ] = "XMLHttpRequest"; + } + + // Set headers + for ( i in headers ) { + xhr.setRequestHeader( i, headers[ i ] ); + } + + // Callback + callback = function( type ) { + return function() { + if ( callback ) { + callback = errorCallback = xhr.onload = + xhr.onerror = xhr.onabort = xhr.onreadystatechange = null; + + if ( type === "abort" ) { + xhr.abort(); + } else if ( type === "error" ) { + + // Support: IE <=9 only + // On a manual native abort, IE9 throws + // errors on any property access that is not readyState + if ( typeof xhr.status !== "number" ) { + complete( 0, "error" ); + } else { + complete( + + // File: protocol always yields status 0; see #8605, #14207 + xhr.status, + xhr.statusText + ); + } + } else { + complete( + xhrSuccessStatus[ xhr.status ] || xhr.status, + xhr.statusText, + + // Support: IE <=9 only + // IE9 has no XHR2 but throws on binary (trac-11426) + // For XHR2 non-text, let the caller handle it (gh-2498) + ( xhr.responseType || "text" ) !== "text" || + typeof xhr.responseText !== "string" ? + { binary: xhr.response } : + { text: xhr.responseText }, + xhr.getAllResponseHeaders() + ); + } + } + }; + }; + + // Listen to events + xhr.onload = callback(); + errorCallback = xhr.onerror = callback( "error" ); + + // Support: IE 9 only + // Use onreadystatechange to replace onabort + // to handle uncaught aborts + if ( xhr.onabort !== undefined ) { + xhr.onabort = errorCallback; + } else { + xhr.onreadystatechange = function() { + + // Check readyState before timeout as it changes + if ( xhr.readyState === 4 ) { + + // Allow onerror to be called first, + // but that will not handle a native abort + // Also, save errorCallback to a variable + // as xhr.onerror cannot be accessed + window.setTimeout( function() { + if ( callback ) { + errorCallback(); + } + } ); + } + }; + } + + // Create the abort callback + callback = callback( "abort" ); + + try { + + // Do send the request (this may raise an exception) + xhr.send( options.hasContent && options.data || null ); + } catch ( e ) { + + // #14683: Only rethrow if this hasn't been notified as an error yet + if ( callback ) { + throw e; + } + } + }, + + abort: function() { + if ( callback ) { + callback(); + } + } + }; + } +} ); + + + + +// Prevent auto-execution of scripts when no explicit dataType was provided (See gh-2432) +jQuery.ajaxPrefilter( function( s ) { + if ( s.crossDomain ) { + s.contents.script = false; + } +} ); + +// Install script dataType +jQuery.ajaxSetup( { + accepts: { + script: "text/javascript, application/javascript, " + + "application/ecmascript, application/x-ecmascript" + }, + contents: { + script: /\b(?:java|ecma)script\b/ + }, + converters: { + "text script": function( text ) { + jQuery.globalEval( text ); + return text; + } + } +} ); + +// Handle cache's special case and crossDomain +jQuery.ajaxPrefilter( "script", function( s ) { + if ( s.cache === undefined ) { + s.cache = false; + } + if ( s.crossDomain ) { + s.type = "GET"; + } +} ); + +// Bind script tag hack transport +jQuery.ajaxTransport( "script", function( s ) { + + // This transport only deals with cross domain requests + if ( s.crossDomain ) { + var script, callback; + return { + send: function( _, complete ) { + script = jQuery( " + + + + + + +
+ + + + +
+ + + + + +
+ +
+ + + + + + + + + + + + + + + + + +
+ + + + +
+
+ + + +
+
+ +
+ +
+ + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/nsx/vmc_app/com.vmware.html b/nsx/vmc_app/com.vmware.html new file mode 100644 index 00000000..08f38448 --- /dev/null +++ b/nsx/vmc_app/com.vmware.html @@ -0,0 +1,792 @@ + + + + + + + + + + + com.vmware package — NSX-T Policy SDK 2.2.0.0.0 documentation + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + + + +
+ + + + + +
+ +
+ + + + + + + + + + + + + + + + + +
+ + + + +
+
+
+
+ +
+

com.vmware package

+ +
+

Submodules

+
+
+

com.vmware.nsx_vmc_app_client module

+
+
+class com.vmware.nsx_vmc_app_client.Accounts(config)
+

Bases: vmware.vapi.bindings.stub.VapiInterface

+
+
+get()
+

Retrieve the shadow account and linked VPC account information from VMC +provider. This API is a live query to VMC provider.

+ +++ + + + + + + + + + + + + + + + +
Return type:com.vmware.nsx_vmc_app.model_client.VMCAccounts
Returns:com.vmware.nsx_vmc_app.model.VMCAccounts
Raise:com.vmware.vapi.std.errors_client.ServiceUnavailable +Service Unavailable
Raise:com.vmware.vapi.std.errors_client.InvalidRequest +Bad Request, Precondition Failed
Raise:com.vmware.vapi.std.errors_client.InternalServerError +Internal Server Error
Raise:com.vmware.vapi.std.errors_client.Unauthorized +Forbidden
Raise:com.vmware.vapi.std.errors_client.NotFound +Not Found
+
+ +
+ +
+
+class com.vmware.nsx_vmc_app_client.LinkedVpcs(config)
+

Bases: vmware.vapi.bindings.stub.VapiInterface

+
+
+get(linked_vpc_id)
+

Get linked VPC information.

+ +++ + + + + + + + + + + + + + + + + + +
Parameters:linked_vpc_id (str) – (required)
Return type:com.vmware.nsx_vmc_app.model_client.LinkedVpcInfo
Returns:com.vmware.nsx_vmc_app.model.LinkedVpcInfo
Raise:com.vmware.vapi.std.errors_client.ServiceUnavailable +Service Unavailable
Raise:com.vmware.vapi.std.errors_client.InvalidRequest +Bad Request, Precondition Failed
Raise:com.vmware.vapi.std.errors_client.InternalServerError +Internal Server Error
Raise:com.vmware.vapi.std.errors_client.Unauthorized +Forbidden
Raise:com.vmware.vapi.std.errors_client.NotFound +Not Found
+
+ +
+
+list()
+

List linked VPC information.

+ +++ + + + + + + + + + + + + + + + +
Return type:com.vmware.nsx_vmc_app.model_client.LinkedVpcsListResult
Returns:com.vmware.nsx_vmc_app.model.LinkedVpcsListResult
Raise:com.vmware.vapi.std.errors_client.ServiceUnavailable +Service Unavailable
Raise:com.vmware.vapi.std.errors_client.InvalidRequest +Bad Request, Precondition Failed
Raise:com.vmware.vapi.std.errors_client.InternalServerError +Internal Server Error
Raise:com.vmware.vapi.std.errors_client.Unauthorized +Forbidden
Raise:com.vmware.vapi.std.errors_client.NotFound +Not Found
+
+ +
+ +
+
+class com.vmware.nsx_vmc_app_client.MgmtVms(config)
+

Bases: vmware.vapi.bindings.stub.VapiInterface

+
+
+get(vm_id)
+

Get management VM access information.

+ +++ + + + + + + + + + + + + + + + + + + + +
Parameters:vm_id (str) – (required)
Return type:com.vmware.nsx_vmc_app.model_client.MgmtVmInfo
Returns:com.vmware.nsx_vmc_app.model.MgmtVmInfo
Raise:com.vmware.vapi.std.errors_client.ServiceUnavailable +Service Unavailable
Raise:com.vmware.vapi.std.errors_client.InvalidRequest +Bad Request, Precondition Failed
Raise:com.vmware.vapi.std.errors_client.InternalServerError +Internal Server Error
Raise:com.vmware.vapi.std.errors_client.Unauthorized +Forbidden
Raise:com.vmware.vapi.std.errors_client.NotFound +Not Found
Raise:com.vmware.vapi.std.errors_client.Error +Error description not available, Error description not available, +Error description not available
+
+ +
+
+list()
+

List Management VM information.

+ +++ + + + + + + + + + + + + + + + +
Return type:com.vmware.nsx_vmc_app.model_client.MgmtVmsListResult
Returns:com.vmware.nsx_vmc_app.model.MgmtVmsListResult
Raise:com.vmware.vapi.std.errors_client.ServiceUnavailable +Service Unavailable
Raise:com.vmware.vapi.std.errors_client.InvalidRequest +Bad Request, Precondition Failed
Raise:com.vmware.vapi.std.errors_client.InternalServerError +Internal Server Error
Raise:com.vmware.vapi.std.errors_client.Unauthorized +Forbidden
Raise:com.vmware.vapi.std.errors_client.NotFound +Not Found
+
+ +
+ +
+
+class com.vmware.nsx_vmc_app_client.PublicIps(config)
+

Bases: vmware.vapi.bindings.stub.VapiInterface

+
+
+delete(public_ip_id, force=None)
+

Delete a public IP. The IP will be released in VMC provider.

+ +++ + + + + + + + + + + + + + +
Parameters:
    +
  • public_ip_id (str) – (required)
  • +
  • force (bool or None) – Force delete the resource even if it is being used somewhere +(optional, default to false)
  • +
+
Raise:

com.vmware.vapi.std.errors_client.ServiceUnavailable +Service Unavailable

+
Raise:

com.vmware.vapi.std.errors_client.InvalidRequest +Bad Request, Precondition Failed

+
Raise:

com.vmware.vapi.std.errors_client.InternalServerError +Internal Server Error

+
Raise:

com.vmware.vapi.std.errors_client.Unauthorized +Forbidden

+
Raise:

com.vmware.vapi.std.errors_client.NotFound +Not Found

+
+
+ +
+
+get(public_ip_id)
+

Get the public IP information.

+ +++ + + + + + + + + + + + + + + + + + +
Parameters:public_ip_id (str) – (required)
Return type:com.vmware.nsx_vmc_app.model_client.PublicIp
Returns:com.vmware.nsx_vmc_app.model.PublicIp
Raise:com.vmware.vapi.std.errors_client.ServiceUnavailable +Service Unavailable
Raise:com.vmware.vapi.std.errors_client.InvalidRequest +Bad Request, Precondition Failed
Raise:com.vmware.vapi.std.errors_client.InternalServerError +Internal Server Error
Raise:com.vmware.vapi.std.errors_client.Unauthorized +Forbidden
Raise:com.vmware.vapi.std.errors_client.NotFound +Not Found
+
+ +
+
+list()
+

List all public IPs obtained in the SDDC.

+ +++ + + + + + + + + + + + + + + + +
Return type:com.vmware.nsx_vmc_app.model_client.PublicIpsListResult
Returns:com.vmware.nsx_vmc_app.model.PublicIpsListResult
Raise:com.vmware.vapi.std.errors_client.ServiceUnavailable +Service Unavailable
Raise:com.vmware.vapi.std.errors_client.InvalidRequest +Bad Request, Precondition Failed
Raise:com.vmware.vapi.std.errors_client.InternalServerError +Internal Server Error
Raise:com.vmware.vapi.std.errors_client.Unauthorized +Forbidden
Raise:com.vmware.vapi.std.errors_client.NotFound +Not Found
+
+ +
+
+update(public_ip_id, public_ip)
+

This API is used to create or update a public IP. In creating, the API +allocates a new public IP from VMC provider. In updating, only the +display name can be modified, the IP is read-only.

+ +++ + + + + + + + + + + + + + + + + + +
Parameters: +
Return type:

com.vmware.nsx_vmc_app.model_client.PublicIp

+
Returns:

com.vmware.nsx_vmc_app.model.PublicIp

+
Raise:

com.vmware.vapi.std.errors_client.ServiceUnavailable +Service Unavailable

+
Raise:

com.vmware.vapi.std.errors_client.InvalidRequest +Bad Request, Precondition Failed

+
Raise:

com.vmware.vapi.std.errors_client.InternalServerError +Internal Server Error

+
Raise:

com.vmware.vapi.std.errors_client.Unauthorized +Forbidden

+
Raise:

com.vmware.vapi.std.errors_client.NotFound +Not Found

+
+
+ +
+ +
+
+class com.vmware.nsx_vmc_app_client.Routes(config)
+

Bases: vmware.vapi.bindings.stub.VapiInterface

+
+
+get()
+

Retrieve BGP routes that are populated by Direct Connect from VMC +provider. This API is a live query to VMC provider.

+ +++ + + + + + + + + + + + + + + + +
Return type:com.vmware.nsx_vmc_app.model_client.BGPRoutes
Returns:com.vmware.nsx_vmc_app.model.BGPRoutes
Raise:com.vmware.vapi.std.errors_client.ServiceUnavailable +Service Unavailable
Raise:com.vmware.vapi.std.errors_client.InvalidRequest +Bad Request, Precondition Failed
Raise:com.vmware.vapi.std.errors_client.InternalServerError +Internal Server Error
Raise:com.vmware.vapi.std.errors_client.Unauthorized +Forbidden
Raise:com.vmware.vapi.std.errors_client.NotFound +Not Found
+
+ +
+ +
+
+class com.vmware.nsx_vmc_app_client.SddcUserConfig(config)
+

Bases: vmware.vapi.bindings.stub.VapiInterface

+
+
+get()
+

Get the user-level SDDC configuration parameters

+ +++ + + + + + + + + + + + + + + + +
Return type:com.vmware.nsx_vmc_app.model_client.SddcUserConfiguration
Returns:com.vmware.nsx_vmc_app.model.SddcUserConfiguration
Raise:com.vmware.vapi.std.errors_client.ServiceUnavailable +Service Unavailable
Raise:com.vmware.vapi.std.errors_client.InvalidRequest +Bad Request, Precondition Failed
Raise:com.vmware.vapi.std.errors_client.InternalServerError +Internal Server Error
Raise:com.vmware.vapi.std.errors_client.Unauthorized +Forbidden
Raise:com.vmware.vapi.std.errors_client.NotFound +Not Found
+
+ +
+ +
+
+class com.vmware.nsx_vmc_app_client.StubFactory(stub_config)
+

Bases: vmware.vapi.bindings.stub.StubFactoryBase

+
+ +
+
+class com.vmware.nsx_vmc_app_client.Vifs(config)
+

Bases: vmware.vapi.bindings.stub.VapiInterface

+
+
+CREATE_ACTION_ATTACH = 'ATTACH'
+

Possible value for action of method Vifs.create().

+
+ +
+
+create(vif_id, action)
+

Perform the attach operation in VMC provider to attach the specified +VIF (Virtual Interface) to the SDDC.

+ +++ + + + + + + + + + + + + + +
Parameters:
    +
  • vif_id (str) – (required)
  • +
  • action (str) – Direct Connect VIF (Virtual Interface) action (required)
  • +
+
Raise:

com.vmware.vapi.std.errors_client.ServiceUnavailable +Service Unavailable

+
Raise:

com.vmware.vapi.std.errors_client.InvalidRequest +Bad Request, Precondition Failed

+
Raise:

com.vmware.vapi.std.errors_client.InternalServerError +Internal Server Error

+
Raise:

com.vmware.vapi.std.errors_client.Unauthorized +Forbidden

+
Raise:

com.vmware.vapi.std.errors_client.NotFound +Not Found

+
+
+ +
+
+delete(vif_id)
+

Detach and delete a Direct Connect VIF (Virtual Interface) from the +SDDC. Detach and delete are one operation in VMC provider, a Direct +Connect VIF will be deleted after detached.

+ +++ + + + + + + + + + + + + + +
Parameters:vif_id (str) – (required)
Raise:com.vmware.vapi.std.errors_client.ServiceUnavailable +Service Unavailable
Raise:com.vmware.vapi.std.errors_client.InvalidRequest +Bad Request, Precondition Failed
Raise:com.vmware.vapi.std.errors_client.InternalServerError +Internal Server Error
Raise:com.vmware.vapi.std.errors_client.Unauthorized +Forbidden
Raise:com.vmware.vapi.std.errors_client.NotFound +Not Found
+
+ +
+
+list()
+

Return all non-connected VIFs (with states "avalible", +"down", "pending" and "confirming") and +connected VIFs that are available to the SDDC.

+ +++ + + + + + + + + + + + + + + + +
Return type:com.vmware.nsx_vmc_app.model_client.VifsListResult
Returns:com.vmware.nsx_vmc_app.model.VifsListResult
Raise:com.vmware.vapi.std.errors_client.ServiceUnavailable +Service Unavailable
Raise:com.vmware.vapi.std.errors_client.InvalidRequest +Bad Request, Precondition Failed
Raise:com.vmware.vapi.std.errors_client.InternalServerError +Internal Server Error
Raise:com.vmware.vapi.std.errors_client.Unauthorized +Forbidden
Raise:com.vmware.vapi.std.errors_client.NotFound +Not Found
+
+ +
+ +
+
+ + +
+ +
+ + +
+
+ +
+ +
+ + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/nsx/vmc_app/com.vmware.nsx_vmc_app.html b/nsx/vmc_app/com.vmware.nsx_vmc_app.html new file mode 100644 index 00000000..35ea763e --- /dev/null +++ b/nsx/vmc_app/com.vmware.nsx_vmc_app.html @@ -0,0 +1,820 @@ + + + + + + + + + + + com.vmware.nsx_vmc_app package — NSX-T Policy SDK 2.2.0.0.0 documentation + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + + + +
+ + + + + +
+ +
+ + + + + + + + + + + + + + + + + +
+ + + + +
+
+
+
+ +
+

com.vmware.nsx_vmc_app package

+
+

Submodules

+
+
+

com.vmware.nsx_vmc_app.linked_vpcs_client module

+
+
+class com.vmware.nsx_vmc_app.linked_vpcs_client.ConnectedServices(config)
+

Bases: vmware.vapi.bindings.stub.VapiInterface

+
+
+list(linked_vpc_id)
+

List services connected to this linked vpc, for example, S3. The +response consist of all available services along with their status.

+ +++ + + + + + + + + + + + + + + + + + +
Parameters:linked_vpc_id (str) – linked vpc id (required)
Return type:com.vmware.nsx_vmc_app.model_client.ConnectedServiceListResult
Returns:com.vmware.nsx_vmc_app.model.ConnectedServiceListResult
Raise:com.vmware.vapi.std.errors_client.ServiceUnavailable +Service Unavailable
Raise:com.vmware.vapi.std.errors_client.InvalidRequest +Bad Request, Precondition Failed
Raise:com.vmware.vapi.std.errors_client.InternalServerError +Internal Server Error
Raise:com.vmware.vapi.std.errors_client.Unauthorized +Forbidden
Raise:com.vmware.vapi.std.errors_client.NotFound +Not Found
+
+ +
+
+update(linked_vpc_id, service_name, connected_service_status)
+

Connect/Disconnect the service to the given linked vpc. For example, +connect S3. The user will know what services are available through the +GET call. If the user is trying to connect/disconnect an unknown +service, the POST call will throw a 400 Bad Request error.

+ +++ + + + + + + + + + + + + + + + + + +
Parameters: +
Return type:

com.vmware.nsx_vmc_app.model_client.ConnectedServiceStatus

+
Returns:

com.vmware.nsx_vmc_app.model.ConnectedServiceStatus

+
Raise:

com.vmware.vapi.std.errors_client.ServiceUnavailable +Service Unavailable

+
Raise:

com.vmware.vapi.std.errors_client.InvalidRequest +Bad Request, Precondition Failed

+
Raise:

com.vmware.vapi.std.errors_client.InternalServerError +Internal Server Error

+
Raise:

com.vmware.vapi.std.errors_client.Unauthorized +Forbidden

+
Raise:

com.vmware.vapi.std.errors_client.NotFound +Not Found

+
+
+ +
+ +
+
+class com.vmware.nsx_vmc_app.linked_vpcs_client.StubFactory(stub_config)
+

Bases: vmware.vapi.bindings.stub.StubFactoryBase

+
+ +
+
+

com.vmware.nsx_vmc_app.model_client module

+
+
+class com.vmware.nsx_vmc_app.model_client.ApiError(details=None, error_code=None, error_data=None, error_message=None, module_name=None, related_errors=None)
+

Bases: vmware.vapi.bindings.struct.VapiStruct

+

Detailed information about an API error

+
+

Tip

+

The arguments are used to initialize data attributes with the same +names.

+
+
+ +
+
+class com.vmware.nsx_vmc_app.model_client.BGPRoutes(bgp_routes=None)
+

Bases: vmware.vapi.bindings.struct.VapiStruct

+

BGP routes

+
+

Tip

+

The arguments are used to initialize data attributes with the same +names.

+
+
+ +
+
+class com.vmware.nsx_vmc_app.model_client.ConnectedServiceListResult(links=None, schema=None, self_=None, cursor=None, result_count=None, sort_ascending=None, sort_by=None, results=None)
+

Bases: vmware.vapi.bindings.struct.VapiStruct

+

A list of status of ‘Enabled/Disabled’ for a service connected to a linked +vpc

+
+

Tip

+

The arguments are used to initialize data attributes with the same +names.

+
+
+ +
+
+class com.vmware.nsx_vmc_app.model_client.ConnectedServiceStatus(enabled=None, name=None)
+

Bases: vmware.vapi.bindings.struct.VapiStruct

+

Status of ‘Enabled/Disabled’ for a service connected to a linked vpc

+
+

Tip

+

The arguments are used to initialize data attributes with the same +names.

+
+
+ +
+
+class com.vmware.nsx_vmc_app.model_client.DiscoveredResource(links=None, schema=None, self_=None, last_sync_time=None, description=None, display_name=None, resource_type=None, tags=None)
+

Bases: vmware.vapi.bindings.struct.VapiStruct

+

Base class for resources that are discovered and automatically updated

+
+

Tip

+

The arguments are used to initialize data attributes with the same +names.

+
+
+ +
+
+class com.vmware.nsx_vmc_app.model_client.EmbeddedResource(links=None, schema=None, self_=None, revision=None, owner=None, description=None, display_name=None, id=None, resource_type=None)
+

Bases: vmware.vapi.bindings.struct.VapiStruct

+

Base class for resources that are embedded in other resources

+
+

Tip

+

The arguments are used to initialize data attributes with the same +names.

+
+
+ +
+
+class com.vmware.nsx_vmc_app.model_client.InterfaceStatistics(links=None, schema=None, self_=None, rx_bytes=None, rx_errors=None, rx_packets=None, tx_bytes=None, tx_errors=None, tx_packets=None)
+

Bases: vmware.vapi.bindings.struct.VapiStruct

+

Statistics for a network interface

+
+

Tip

+

The arguments are used to initialize data attributes with the same +names.

+
+
+ +
+
+class com.vmware.nsx_vmc_app.model_client.IpAttachmentPair(attachment_id=None, ip=None)
+

Bases: vmware.vapi.bindings.struct.VapiStruct

+
+

Tip

+

The arguments are used to initialize data attributes with the same +names.

+
+
+ +
+
+class com.vmware.nsx_vmc_app.model_client.LinkedVpcInfo(arn_role=None, external_id=None, linked_account=None, linked_vpc_addresses=None, linked_vpc_id=None, linked_vpc_nat_ips=None, linked_vpc_subnet_addresses=None, route_table_ids=None, service_arn_role=None)
+

Bases: vmware.vapi.bindings.struct.VapiStruct

+

Linked VPC info

+
+

Tip

+

The arguments are used to initialize data attributes with the same +names.

+
+
+ +
+
+class com.vmware.nsx_vmc_app.model_client.LinkedVpcsListResult(links=None, schema=None, self_=None, cursor=None, result_count=None, sort_ascending=None, sort_by=None, results=None)
+

Bases: vmware.vapi.bindings.struct.VapiStruct

+

Linked VPC list query result

+
+

Tip

+

The arguments are used to initialize data attributes with the same +names.

+
+
+ +
+
+class com.vmware.nsx_vmc_app.model_client.ListResult(links=None, schema=None, self_=None, cursor=None, result_count=None, sort_ascending=None, sort_by=None)
+

Bases: vmware.vapi.bindings.struct.VapiStruct

+

Base class for list results from collections

+
+

Tip

+

The arguments are used to initialize data attributes with the same +names.

+
+
+ +
+
+class com.vmware.nsx_vmc_app.model_client.ManagedResource(links=None, schema=None, self_=None, revision=None, create_time=None, create_user=None, last_modified_time=None, last_modified_user=None, protection=None, system_owned=None, description=None, display_name=None, id=None, resource_type=None, tags=None)
+

Bases: vmware.vapi.bindings.struct.VapiStruct

+

Base type for resources that are managed by API clients

+
+

Tip

+

The arguments are used to initialize data attributes with the same +names.

+
+
+ +
+
+class com.vmware.nsx_vmc_app.model_client.MgmtServiceEntry(display_name=None, name=None, path=None, ports=None, resource_type=None)
+

Bases: vmware.vapi.bindings.struct.VapiStruct

+

Service entry describes the detail of a network service. Either a existing +service path or TCP/UDP/ICMP protocol/ports details could be specified.

+
+

Tip

+

The arguments are used to initialize data attributes with the same +names.

+
+
+
+RESOURCE_TYPE_ICMPENTRY = 'ICMPEntry'
+
+ +
+
+RESOURCE_TYPE_TCPENTRY = 'TCPEntry'
+
+ +
+
+RESOURCE_TYPE_UDPENTRY = 'UDPEntry'
+
+ +
+ +
+
+class com.vmware.nsx_vmc_app.model_client.MgmtVmInfo(display_name=None, group_path=None, id=None, ip_attachment_pairs=None, ips=None, services=None)
+

Bases: vmware.vapi.bindings.struct.VapiStruct

+

Management VM access information

+
+

Tip

+

The arguments are used to initialize data attributes with the same +names.

+
+
+ +
+
+class com.vmware.nsx_vmc_app.model_client.MgmtVmsListResult(links=None, schema=None, self_=None, cursor=None, result_count=None, sort_ascending=None, sort_by=None, results=None)
+

Bases: vmware.vapi.bindings.struct.VapiStruct

+

Management VM list query result

+
+

Tip

+

The arguments are used to initialize data attributes with the same +names.

+
+
+ +
+ +

Bases: vmware.vapi.bindings.struct.VapiStruct

+

The server will populate this field when returing the resource. Ignored on +PUT and POST.

+
+

Tip

+

The arguments are used to initialize data attributes with the same +names.

+
+
+ +
+
+class com.vmware.nsx_vmc_app.model_client.PrefixInfo(display_name=None, prefixes=None)
+

Bases: vmware.vapi.bindings.struct.VapiStruct

+

Service IP prefixes information

+
+

Tip

+

The arguments are used to initialize data attributes with the same +names.

+
+
+ +
+
+class com.vmware.nsx_vmc_app.model_client.PrefixesListResult(links=None, schema=None, self_=None, cursor=None, result_count=None, sort_ascending=None, sort_by=None, results=None)
+

Bases: vmware.vapi.bindings.struct.VapiStruct

+

Service Prefix list query result

+
+

Tip

+

The arguments are used to initialize data attributes with the same +names.

+
+
+ +
+
+class com.vmware.nsx_vmc_app.model_client.PublicIp(display_name=None, id=None, ip=None)
+

Bases: vmware.vapi.bindings.struct.VapiStruct

+
+

Tip

+

The arguments are used to initialize data attributes with the same +names.

+
+
+ +
+
+class com.vmware.nsx_vmc_app.model_client.PublicIpsListResult(links=None, schema=None, self_=None, cursor=None, result_count=None, sort_ascending=None, sort_by=None, results=None)
+

Bases: vmware.vapi.bindings.struct.VapiStruct

+

Public IP list

+
+

Tip

+

The arguments are used to initialize data attributes with the same +names.

+
+
+ +
+
+class com.vmware.nsx_vmc_app.model_client.Resource(links=None, schema=None, self_=None)
+

Bases: vmware.vapi.bindings.struct.VapiStruct

+

Base class for resources

+
+

Tip

+

The arguments are used to initialize data attributes with the same +names.

+
+
+ +
+ +

Bases: vmware.vapi.bindings.struct.VapiStruct

+

A link to a related resource

+
+

Tip

+

The arguments are used to initialize data attributes with the same +names.

+
+
+ +
+
+class com.vmware.nsx_vmc_app.model_client.RevisionedResource(links=None, schema=None, self_=None, revision=None)
+

Bases: vmware.vapi.bindings.struct.VapiStruct

+

A base class for types that track revisions

+
+

Tip

+

The arguments are used to initialize data attributes with the same +names.

+
+
+ +
+
+class com.vmware.nsx_vmc_app.model_client.SddcUserConfiguration(compute_gateway=None, dx_interface_label=None, linked_vpc_interface_label=None, management_gateway=None, mgmt_addresses=None, provider_name=None, public_interface_label=None, sddc_infra_addresses=None, vpn_dx_ips=None, vpn_internet_ips=None)
+

Bases: vmware.vapi.bindings.struct.VapiStruct

+

SDDC configuration parameters for users. User-level addresses/CIDRs are +provided.

+
+

Tip

+

The arguments are used to initialize data attributes with the same +names.

+
+
+ +
+ +

Bases: vmware.vapi.bindings.struct.VapiStruct

+

The server will populate this field when returing the resource. Ignored on +PUT and POST.

+
+

Tip

+

The arguments are used to initialize data attributes with the same +names.

+
+
+ +
+
+class com.vmware.nsx_vmc_app.model_client.StubFactory(stub_config)
+

Bases: vmware.vapi.bindings.stub.StubFactoryBase

+
+ +
+
+class com.vmware.nsx_vmc_app.model_client.Tag(scope=None, tag=None)
+

Bases: vmware.vapi.bindings.struct.VapiStruct

+

Arbitrary key-value pairs that may be attached to an entity

+
+

Tip

+

The arguments are used to initialize data attributes with the same +names.

+
+
+ +
+
+class com.vmware.nsx_vmc_app.model_client.TaskProperties(links=None, schema=None, self_=None, async_response_available=None, cancelable=None, description=None, end_time=None, id=None, message=None, progress=None, request_method=None, request_uri=None, start_time=None, status=None, user=None)
+

Bases: vmware.vapi.bindings.struct.VapiStruct

+

Task properties

+
+

Tip

+

The arguments are used to initialize data attributes with the same +names.

+
+
+
+STATUS_CANCELED = 'canceled'
+
+ +
+
+STATUS_CANCELING = 'canceling'
+
+ +
+
+STATUS_ERROR = 'error'
+
+ +
+
+STATUS_KILLED = 'killed'
+
+ +
+
+STATUS_RUNNING = 'running'
+
+ +
+
+STATUS_SUCCESS = 'success'
+
+ +
+ +
+
+class com.vmware.nsx_vmc_app.model_client.VMCAccounts(linked_vpc_account=None, shadow_account=None)
+

Bases: vmware.vapi.bindings.struct.VapiStruct

+

Shadow account and linked VPC account

+
+

Tip

+

The arguments are used to initialize data attributes with the same +names.

+
+
+ +
+
+class com.vmware.nsx_vmc_app.model_client.VifsListResult(links=None, schema=None, self_=None, cursor=None, result_count=None, sort_ascending=None, sort_by=None, results=None)
+

Bases: vmware.vapi.bindings.struct.VapiStruct

+

Direct Connect VIFs (Virtual Interface) list query result

+
+

Tip

+

The arguments are used to initialize data attributes with the same +names.

+
+
+ +
+
+class com.vmware.nsx_vmc_app.model_client.VirtualInterface(bgp_status=None, direct_connect_id=None, id=None, name=None, state=None)
+

Bases: vmware.vapi.bindings.struct.VapiStruct

+
+

Tip

+

The arguments are used to initialize data attributes with the same +names.

+
+
+
+BGP_STATUS_DOWN = 'DOWN'
+
+ +
+
+BGP_STATUS_UP = 'UP'
+
+ +
+
+STATE_ATTACHED = 'ATTACHED'
+
+ +
+
+STATE_ATTACHING = 'ATTACHING'
+
+ +
+
+STATE_AVAILABLE = 'AVAILABLE'
+
+ +
+
+STATE_CONFIRMING = 'CONFIRMING'
+
+ +
+
+STATE_DELETED = 'DELETED'
+
+ +
+
+STATE_DELETING = 'DELETING'
+
+ +
+
+STATE_DOWN = 'DOWN'
+
+ +
+
+STATE_ERROR = 'ERROR'
+
+ +
+
+STATE_PENDING = 'PENDING'
+
+ +
+
+STATE_REJECTED = 'REJECTED'
+
+ +
+
+STATE_VERIFYING = 'VERIFYING'
+
+ +
+ +
+
+ + +
+ +
+ + +
+
+ +
+ +
+ + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/nsx/vmc_app/enumeration.html b/nsx/vmc_app/enumeration.html new file mode 100644 index 00000000..25237a3a --- /dev/null +++ b/nsx/vmc_app/enumeration.html @@ -0,0 +1,292 @@ + + + + + + + + + + + Interface definition language to python mapping for enumerated types — NSX-T Policy SDK 2.2.0.0.0 documentation + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + + + +
+ + + + + +
+ +
+ + + + + + + + + + + + + + + + + +
+ +
    + +
  • Docs »
  • + +
  • Interface definition language to python mapping for enumerated types
  • + + +
  • + + + View page source + + +
  • + +
+ + +
+
+
+
+ +
+

Interface definition language to python mapping for enumerated types

+

The interface language definition type system includes enumerated types. Python +SDK supports both 2.x and 3.x versions of Python. Since Python 2.x does +not have first class support for enumerations, special classes are +generated to represent enumerated types from the interface definition +language. The special class contains class attributes which represent +the values of the enumerated type.

+

This documentation explains the following:

+
    +
  • How the class variables are defined in the module. This specifies the names that you can use in your program.
  • +
  • How you instantiate a class to use it for communication with future versions of the service.
  • +
+
+

Example of an enumerated type documentation

+
+
class com.vmware.vapi.metadata_client. SourceType (string)
+

Bases: vmware.vapi.bindings.enum.Enum

+

Metadata source type

+
+

Note

+

This class represents an enumerated type in the interface language definition type system. The class contains class attributes which represent the values in the current version of the enumerated type. Newer versions of the enumerated type may contain new values. To use new values of the enumerated type in communication with a server that supports a newer version of the API, you instantiate this class. See enumerated type description page.

+
+

Parameters : string (str) – String value for the SourceType instance.

+
+
FILE = SourceType(string=’FILE’)
+
If the source is backed by a file.
+
REMOTE = SourceType(string=’REMOTE’)
+
If the source is backed by a remote service.
+
+
+
+
+
+

Code Examples

+

The enumerated type classes are defined in python modules that your code +imports. You can use these in your code.

+
    +
  1. If you want to pass an enumerated type value in a method to a server, specify the class variable of the enumerated type class.
  2. +
+
# SourceType is an enumerated type
+from com.vmware.vapi.metadata_client import SourceType
+
+# SourceType has two class attrites, SourceType.FILE and SourceType.REMOTE
+spec = Source.CreateSpec(type=SourceType.FILE, filepath='entity_metadata.json', description='Entity service')
+source_svc.create(id='entity', spec=spec)
+
+
+
    +
  1. When you receive an enumerated type value in the response from a server, allow for unknown enumerated type values.
  2. +
+
# SourceType is an enumerated type
+from com.vmware.vapi.metadata_client import SourceType
+
+source_info = source_svc.get(id='entity')
+if (source_info.type == SourceType.FILE) {
+    print 'Source is a file'
+} else if (source_info.type == SourceType.REMOTE) {
+    print 'Source is a remote provider'
+} else {
+    print 'Unknown source type: %s' % str(source_info.type)
+}
+
+
+
    +
  1. Sending a new enumerated type value to a server that has a newer version of the enumerated type.
  2. +
+

To use new values of the enumerated type in communication with a server that supports a newer version of the API, you instantiate the +enumerated type class.

+
# If a newer version of SourceType has a new value FOLDER, FOLDER would be one
+# of the class attributes for SourceType. In the older version, SourceType has
+# only two class attributes, FILE and REMOTE
+from com.vmware.vapi.metadata_client import SourceType
+spec = Source.CreateSpec(type=SourceType('FOLDER'), filepath='entity_metadata', description='Entity service')
+source_svc.create(id='entity', spec=spec)
+
+
+
+
+ + +
+ +
+ + +
+
+ +
+ +
+ + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/nsx/vmc_app/genindex.html b/nsx/vmc_app/genindex.html new file mode 100644 index 00000000..d874c741 --- /dev/null +++ b/nsx/vmc_app/genindex.html @@ -0,0 +1,536 @@ + + + + + + + + + + + + Index — NSX-T Policy SDK 2.2.0.0.0 documentation + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + + + +
+ + + + + +
+ +
+ + + + + + + + + + + + + + + + + +
+ +
    + +
  • Docs »
  • + +
  • Index
  • + + +
  • + + + +
  • + +
+ + +
+
+
+
+ + +

Index

+ +
+ A + | B + | C + | D + | E + | G + | I + | L + | M + | O + | P + | R + | S + | T + | U + | V + +
+

A

+ + + +
+ +

B

+ + + +
+ +

C

+ + + +
+ +

D

+ + + +
+ +

E

+ + +
+ +

G

+ + +
+ +

I

+ + + +
+ +

L

+ + + +
+ +

M

+ + + +
+ +

O

+ + +
+ +

P

+ + + +
+ +

R

+ + + +
+ +

S

+ + + +
+ +

T

+ + + +
+ +

U

+ + +
+ +

V

+ + + +
+ + + +
+ +
+ + +
+
+ +
+ +
+ + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/nsx/vmc_app/index.html b/nsx/vmc_app/index.html new file mode 100644 index 00000000..dcee576a --- /dev/null +++ b/nsx/vmc_app/index.html @@ -0,0 +1,257 @@ + + + + + + + + + + + Welcome to NSX-T Policy SDK’s documentation! — NSX-T Policy SDK 2.2.0.0.0 documentation + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + + + +
+ + + + + +
+ +
+ + + + + + + + + + + + + + + + + +
+ + + + +
+
+ + + +
+
+ +
+ +
+ + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/nsx/vmc_app/objects.inv b/nsx/vmc_app/objects.inv new file mode 100644 index 00000000..a383f0ea Binary files /dev/null and b/nsx/vmc_app/objects.inv differ diff --git a/nsx/vmc_app/py-modindex.html b/nsx/vmc_app/py-modindex.html new file mode 100644 index 00000000..a24593f5 --- /dev/null +++ b/nsx/vmc_app/py-modindex.html @@ -0,0 +1,255 @@ + + + + + + + + + + + Python Module Index — NSX-T Policy SDK 2.2.0.0.0 documentation + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + + + +
+ + + + + +
+ +
+ + + + + + + + + + + + + + + + + +
+ +
    + +
  • Docs »
  • + +
  • Python Module Index
  • + + +
  • + +
  • + +
+ + +
+
+
+
+ + +

Python Module Index

+ +
+ c +
+ + + + + + + + + + + + + + + + + + + + + + +
 
+ c
+ com +
    + com.vmware +
    + com.vmware.nsx_vmc_app +
    + com.vmware.nsx_vmc_app.linked_vpcs_client +
    + com.vmware.nsx_vmc_app.model_client +
    + com.vmware.nsx_vmc_app_client +
+ + +
+ +
+ + +
+
+ +
+ +
+ + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/nsx/vmc_app/search.html b/nsx/vmc_app/search.html new file mode 100644 index 00000000..5b48ab39 --- /dev/null +++ b/nsx/vmc_app/search.html @@ -0,0 +1,231 @@ + + + + + + + + + + + Search — NSX-T Policy SDK 2.2.0.0.0 documentation + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + + + +
+ + + + + +
+ +
+ + + + + + + + + + + + + + + + + +
+ +
    + +
  • Docs »
  • + +
  • Search
  • + + +
  • + + + +
  • + +
+ + +
+
+
+
+ + + + +
+ +
+ +
+ +
+ + +
+
+ +
+ +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/nsx/vmc_app/searchindex.js b/nsx/vmc_app/searchindex.js new file mode 100644 index 00000000..1d4d947d --- /dev/null +++ b/nsx/vmc_app/searchindex.js @@ -0,0 +1 @@ +Search.setIndex({docnames:["com","com.vmware","com.vmware.nsx_vmc_app","enumeration","index"],envversion:53,filenames:["com.rst","com.vmware.rst","com.vmware.nsx_vmc_app.rst","enumeration.rst","index.rst"],objects:{"":{com:[0,0,0,"-"]},"com.vmware":{nsx_vmc_app:[2,0,0,"-"],nsx_vmc_app_client:[1,0,0,"-"]},"com.vmware.nsx_vmc_app":{linked_vpcs_client:[2,0,0,"-"],model_client:[2,0,0,"-"]},"com.vmware.nsx_vmc_app.linked_vpcs_client":{ConnectedServices:[2,1,1,""],StubFactory:[2,1,1,""]},"com.vmware.nsx_vmc_app.linked_vpcs_client.ConnectedServices":{list:[2,2,1,""],update:[2,2,1,""]},"com.vmware.nsx_vmc_app.model_client":{ApiError:[2,1,1,""],BGPRoutes:[2,1,1,""],ConnectedServiceListResult:[2,1,1,""],ConnectedServiceStatus:[2,1,1,""],DiscoveredResource:[2,1,1,""],EmbeddedResource:[2,1,1,""],InterfaceStatistics:[2,1,1,""],IpAttachmentPair:[2,1,1,""],LinkedVpcInfo:[2,1,1,""],LinkedVpcsListResult:[2,1,1,""],ListResult:[2,1,1,""],ManagedResource:[2,1,1,""],MgmtServiceEntry:[2,1,1,""],MgmtVmInfo:[2,1,1,""],MgmtVmsListResult:[2,1,1,""],OwnerResourceLink:[2,1,1,""],PrefixInfo:[2,1,1,""],PrefixesListResult:[2,1,1,""],PublicIp:[2,1,1,""],PublicIpsListResult:[2,1,1,""],Resource:[2,1,1,""],ResourceLink:[2,1,1,""],RevisionedResource:[2,1,1,""],SddcUserConfiguration:[2,1,1,""],SelfResourceLink:[2,1,1,""],StubFactory:[2,1,1,""],Tag:[2,1,1,""],TaskProperties:[2,1,1,""],VMCAccounts:[2,1,1,""],VifsListResult:[2,1,1,""],VirtualInterface:[2,1,1,""]},"com.vmware.nsx_vmc_app.model_client.MgmtServiceEntry":{RESOURCE_TYPE_ICMPENTRY:[2,3,1,""],RESOURCE_TYPE_TCPENTRY:[2,3,1,""],RESOURCE_TYPE_UDPENTRY:[2,3,1,""]},"com.vmware.nsx_vmc_app.model_client.TaskProperties":{STATUS_CANCELED:[2,3,1,""],STATUS_CANCELING:[2,3,1,""],STATUS_ERROR:[2,3,1,""],STATUS_KILLED:[2,3,1,""],STATUS_RUNNING:[2,3,1,""],STATUS_SUCCESS:[2,3,1,""]},"com.vmware.nsx_vmc_app.model_client.VirtualInterface":{BGP_STATUS_DOWN:[2,3,1,""],BGP_STATUS_UP:[2,3,1,""],STATE_ATTACHED:[2,3,1,""],STATE_ATTACHING:[2,3,1,""],STATE_AVAILABLE:[2,3,1,""],STATE_CONFIRMING:[2,3,1,""],STATE_DELETED:[2,3,1,""],STATE_DELETING:[2,3,1,""],STATE_DOWN:[2,3,1,""],STATE_ERROR:[2,3,1,""],STATE_PENDING:[2,3,1,""],STATE_REJECTED:[2,3,1,""],STATE_VERIFYING:[2,3,1,""]},"com.vmware.nsx_vmc_app_client":{Accounts:[1,1,1,""],LinkedVpcs:[1,1,1,""],MgmtVms:[1,1,1,""],PublicIps:[1,1,1,""],Routes:[1,1,1,""],SddcUserConfig:[1,1,1,""],StubFactory:[1,1,1,""],Vifs:[1,1,1,""]},"com.vmware.nsx_vmc_app_client.Accounts":{get:[1,2,1,""]},"com.vmware.nsx_vmc_app_client.LinkedVpcs":{get:[1,2,1,""],list:[1,2,1,""]},"com.vmware.nsx_vmc_app_client.MgmtVms":{get:[1,2,1,""],list:[1,2,1,""]},"com.vmware.nsx_vmc_app_client.PublicIps":{"delete":[1,2,1,""],get:[1,2,1,""],list:[1,2,1,""],update:[1,2,1,""]},"com.vmware.nsx_vmc_app_client.Routes":{get:[1,2,1,""]},"com.vmware.nsx_vmc_app_client.SddcUserConfig":{get:[1,2,1,""]},"com.vmware.nsx_vmc_app_client.Vifs":{"delete":[1,2,1,""],CREATE_ACTION_ATTACH:[1,3,1,""],create:[1,2,1,""],list:[1,2,1,""]},com:{vmware:[1,0,0,"-"]}},objnames:{"0":["py","module","Python module"],"1":["py","class","Python class"],"2":["py","method","Python method"],"3":["py","attribute","Python attribute"]},objtypes:{"0":"py:module","1":"py:class","2":"py:method","3":"py:attribute"},terms:{"class":[1,2,3],"default":1,"enum":3,"import":3,"new":[1,3],"public":[1,2],"return":[1,2],"throw":2,"try":2,For:2,IPs:1,Not:[1,2],The:[1,2,3],about:2,access:[1,2],account:[1,2],action:[1,2],address:2,after:1,all:[1,2],alloc:1,allow:3,along:2,api:[1,2,3],apierror:2,arbitrari:2,argument:2,arn_rol:2,async_response_avail:2,attach:[1,2],attachment_id:2,attribut:[2,3],attrit:3,automat:2,avail:[1,2],aval:1,back:3,bad:[1,2],base:[1,2,3],being:1,bgp:[1,2],bgp_rout:2,bgp_statu:2,bgp_status_down:2,bgp_status_up:2,bgprout:[1,2],bind:[1,2,3],bool:1,both:3,call:2,can:[1,3],cancel:2,cidr:2,client:2,collect:2,com:[3,4],commun:3,compute_gatewai:2,config:[1,2],configur:[1,2],confirm:[1,2],connect:[1,2],connected_service_statu:2,connectedservic:2,connectedservicelistresult:2,connectedservicestatu:2,consist:2,contain:3,content:4,could:2,creat:[1,3],create_action_attach:1,create_tim:2,create_us:2,createspec:3,current:3,cursor:2,data:2,defin:3,delet:[1,2],describ:2,descript:[1,2,3],detach:1,detail:2,direct:[1,2],direct_connect_id:2,disabl:2,disconnect:2,discov:2,discoveredresourc:2,displai:1,display_nam:2,doe:3,down:[1,2],dx_interface_label:2,either:2,els:3,embed:2,embeddedresourc:2,enabl:2,end_tim:2,entiti:[2,3],entity_metadata:3,entri:2,error:[1,2],error_cod:2,error_data:2,error_messag:2,errors_cli:[1,2],even:1,exampl:2,exist:2,explain:3,external_id:2,fail:[1,2],fals:1,field:2,file:3,filepath:3,first:3,folder:3,follow:3,forbidden:[1,2],forc:1,found:[1,2],from:[1,2,3],futur:3,gener:3,get:[1,2,3],given:2,group_path:2,has:3,have:3,how:3,href:2,icmp:2,icmpentri:2,ignor:2,includ:3,index:4,info:2,inform:[1,2],initi:2,instanc:3,instanti:3,interfac:[1,2],interfacestatist:2,intern:[1,2],internalservererror:[1,2],invalidrequest:[1,2],ip_attachment_pair:2,ipattachmentpair:2,ips:2,json:3,kei:2,kill:2,know:2,last_modified_tim:2,last_modified_us:2,last_sync_tim:2,level:[1,2],link:[1,2],linked_account:2,linked_vpc_account:2,linked_vpc_address:2,linked_vpc_id:[1,2],linked_vpc_interface_label:2,linked_vpc_nat_ip:2,linked_vpc_subnet_address:2,linked_vpcs_cli:[0,1,4],linkedvpc:1,linkedvpcinfo:[1,2],linkedvpcslistresult:[1,2],list:[1,2],listresult:2,live:1,mai:[2,3],manag:[1,2],managedresourc:2,management_gatewai:2,messag:2,metadata:3,metadata_cli:3,method:[1,3],mgmt_address:2,mgmtserviceentri:2,mgmtvm:1,mgmtvminfo:[1,2],mgmtvmslistresult:[1,2],model:[1,2],model_cli:[0,1,4],modifi:1,modul:[0,3,4],module_nam:2,name:[1,2,3],network:2,newer:3,non:1,none:[1,2],notfound:[1,2],nsx_vmc_app:[0,1,4],nsx_vmc_app_client:[0,4],obtain:1,older:3,one:[1,3],onli:[1,3],oper:1,option:1,other:2,owner:2,ownerresourcelink:2,packag:4,page:[3,4],pair:2,paramet:[1,2,3],pass:3,path:2,pend:[1,2],perform:1,popul:[1,2],port:2,possibl:1,post:2,precondit:[1,2],prefix:2,prefixeslistresult:2,prefixinfo:2,print:3,program:3,progress:2,properti:2,protect:2,protocol:2,provid:[1,2,3],provider_nam:2,public_interface_label:2,public_ip:1,public_ip_id:1,publicip:[1,2],publicipslistresult:[1,2],put:2,queri:[1,2],rais:[1,2],read:1,receiv:3,reject:2,rel:2,relat:2,related_error:2,releas:1,remot:3,repres:3,request:[1,2],request_method:2,request_uri:2,requir:[1,2],resourc:[1,2],resource_typ:2,resource_type_icmpentri:2,resource_type_tcpentri:2,resource_type_udpentri:2,resourcelink:2,respons:[2,3],result:2,result_count:2,retriev:1,retur:2,revis:2,revisionedresourc:2,rout:[1,2],route_table_id:2,run:2,rx_byte:2,rx_error:2,rx_packet:2,same:2,schema:2,scope:2,sddc:[1,2],sddc_infra_address:2,sddcuserconfig:1,sddcuserconfigur:[1,2],sdk:3,search:4,see:3,self_:2,selfresourcelink:2,send:3,server:[1,2,3],servic:[1,2,3],service_arn_rol:2,service_nam:2,serviceunavail:[1,2],shadow:[1,2],shadow_account:2,sinc:3,somewher:1,sort_ascend:2,sort_bi:2,sourc:3,source_info:3,source_svc:3,sourcetyp:3,spec:3,special:3,specifi:[1,2,3],start_tim:2,state:[1,2],state_attach:2,state_avail:2,state_confirm:2,state_delet:2,state_down:2,state_error:2,state_pend:2,state_reject:2,state_verifi:2,statist:2,statu:2,status_cancel:2,status_error:2,status_kil:2,status_run:2,status_success:2,std:[1,2],str:[1,2,3],string:3,struct:2,stub:[1,2],stub_config:[1,2],stubfactori:[1,2],stubfactorybas:[1,2],submodul:[0,4],subpackag:4,success:2,support:3,system:3,system_own:2,tag:2,task:2,taskproperti:2,tcp:2,tcpentri:2,thi:[1,2,3],through:2,track:2,two:3,tx_byte:2,tx_error:2,tx_packet:2,type:[1,2],udp:2,udpentri:2,unauthor:[1,2],unavail:[1,2],unknown:[2,3],updat:[1,2],use:3,used:[1,2],user:[1,2],valu:[1,2,3],vapi:[1,2,3],vapiinterfac:[1,2],vapistruct:2,variabl:3,verifi:2,version:3,vif:[1,2],vif_id:1,vifslistresult:[1,2],virtual:[1,2],virtualinterfac:2,vm_id:1,vmc:1,vmcaccount:[1,2],vmware:[0,3,4],vpc:[1,2],vpn_dx_ip:2,vpn_internet_ip:2,want:3,what:2,when:[2,3],which:3,would:3,you:3,your:3},titles:["com package","com.vmware package","com.vmware.nsx_vmc_app package","Interface definition language to python mapping for enumerated types","Welcome to NSX-T Policy SDK\u2019s documentation!"],titleterms:{code:3,com:[0,1,2],definit:3,document:[3,4],enumer:3,exampl:3,indic:4,interfac:3,languag:3,linked_vpcs_cli:2,map:3,model_cli:2,modul:[1,2],nsx:4,nsx_vmc_app:2,nsx_vmc_app_client:1,packag:[0,1,2],polici:4,python:3,sdk:4,submodul:[1,2],subpackag:[0,1],tabl:4,type:3,vmware:[1,2],welcom:4}}) \ No newline at end of file diff --git a/vmc/_sources/com.rst.txt b/vmc/_sources/com.rst.txt new file mode 100644 index 00000000..257ee95b --- /dev/null +++ b/vmc/_sources/com.rst.txt @@ -0,0 +1,15 @@ +com package +=========== + +.. automodule:: com + :members: + :undoc-members: + :show-inheritance: + +Subpackages +----------- + +.. toctree:: + + com.vmware + diff --git a/vmc/_sources/com.vmware.rst.txt b/vmc/_sources/com.vmware.rst.txt new file mode 100644 index 00000000..ed3cd6f3 --- /dev/null +++ b/vmc/_sources/com.vmware.rst.txt @@ -0,0 +1,27 @@ +com.vmware package +================== + +.. automodule:: com.vmware + :members: + :undoc-members: + :show-inheritance: + +Subpackages +----------- + +.. toctree:: + + com.vmware.vmc + +Submodules +---------- + +com.vmware.vmc\_client module +----------------------------- + +.. automodule:: com.vmware.vmc_client + :members: + :undoc-members: + :show-inheritance: + + diff --git a/vmc/_sources/com.vmware.vmc.orgs.rst.txt b/vmc/_sources/com.vmware.vmc.orgs.rst.txt new file mode 100644 index 00000000..183bce1b --- /dev/null +++ b/vmc/_sources/com.vmware.vmc.orgs.rst.txt @@ -0,0 +1,35 @@ +com.vmware.vmc.orgs package +=========================== + +.. automodule:: com.vmware.vmc.orgs + :members: + :undoc-members: + :show-inheritance: + +Subpackages +----------- + +.. toctree:: + + com.vmware.vmc.orgs.sddcs + +Submodules +---------- + +com.vmware.vmc.orgs.account\_link\_client module +------------------------------------------------ + +.. automodule:: com.vmware.vmc.orgs.account_link_client + :members: + :undoc-members: + :show-inheritance: + +com.vmware.vmc.orgs.sddcs\_client module +---------------------------------------- + +.. automodule:: com.vmware.vmc.orgs.sddcs_client + :members: + :undoc-members: + :show-inheritance: + + diff --git a/vmc/_sources/com.vmware.vmc.orgs.sddcs.networks.cgws.rst.txt b/vmc/_sources/com.vmware.vmc.orgs.sddcs.networks.cgws.rst.txt new file mode 100644 index 00000000..ed637e90 --- /dev/null +++ b/vmc/_sources/com.vmware.vmc.orgs.sddcs.networks.cgws.rst.txt @@ -0,0 +1,20 @@ +com.vmware.vmc.orgs.sddcs.networks.cgws package +=============================================== + +.. automodule:: com.vmware.vmc.orgs.sddcs.networks.cgws + :members: + :undoc-members: + :show-inheritance: + +Submodules +---------- + +com.vmware.vmc.orgs.sddcs.networks.cgws.l2vpn\_client module +------------------------------------------------------------ + +.. automodule:: com.vmware.vmc.orgs.sddcs.networks.cgws.l2vpn_client + :members: + :undoc-members: + :show-inheritance: + + diff --git a/vmc/_sources/com.vmware.vmc.orgs.sddcs.networks.edges.firewall.rst.txt b/vmc/_sources/com.vmware.vmc.orgs.sddcs.networks.edges.firewall.rst.txt new file mode 100644 index 00000000..fbc2301f --- /dev/null +++ b/vmc/_sources/com.vmware.vmc.orgs.sddcs.networks.edges.firewall.rst.txt @@ -0,0 +1,20 @@ +com.vmware.vmc.orgs.sddcs.networks.edges.firewall package +========================================================= + +.. automodule:: com.vmware.vmc.orgs.sddcs.networks.edges.firewall + :members: + :undoc-members: + :show-inheritance: + +Submodules +---------- + +com.vmware.vmc.orgs.sddcs.networks.edges.firewall.config\_client module +----------------------------------------------------------------------- + +.. automodule:: com.vmware.vmc.orgs.sddcs.networks.edges.firewall.config_client + :members: + :undoc-members: + :show-inheritance: + + diff --git a/vmc/_sources/com.vmware.vmc.orgs.sddcs.networks.edges.l2vpn.rst.txt b/vmc/_sources/com.vmware.vmc.orgs.sddcs.networks.edges.l2vpn.rst.txt new file mode 100644 index 00000000..760f23fb --- /dev/null +++ b/vmc/_sources/com.vmware.vmc.orgs.sddcs.networks.edges.l2vpn.rst.txt @@ -0,0 +1,20 @@ +com.vmware.vmc.orgs.sddcs.networks.edges.l2vpn package +====================================================== + +.. automodule:: com.vmware.vmc.orgs.sddcs.networks.edges.l2vpn + :members: + :undoc-members: + :show-inheritance: + +Submodules +---------- + +com.vmware.vmc.orgs.sddcs.networks.edges.l2vpn.config\_client module +-------------------------------------------------------------------- + +.. automodule:: com.vmware.vmc.orgs.sddcs.networks.edges.l2vpn.config_client + :members: + :undoc-members: + :show-inheritance: + + diff --git a/vmc/_sources/com.vmware.vmc.orgs.sddcs.networks.edges.nat.rst.txt b/vmc/_sources/com.vmware.vmc.orgs.sddcs.networks.edges.nat.rst.txt new file mode 100644 index 00000000..9ae55240 --- /dev/null +++ b/vmc/_sources/com.vmware.vmc.orgs.sddcs.networks.edges.nat.rst.txt @@ -0,0 +1,20 @@ +com.vmware.vmc.orgs.sddcs.networks.edges.nat package +==================================================== + +.. automodule:: com.vmware.vmc.orgs.sddcs.networks.edges.nat + :members: + :undoc-members: + :show-inheritance: + +Submodules +---------- + +com.vmware.vmc.orgs.sddcs.networks.edges.nat.config\_client module +------------------------------------------------------------------ + +.. automodule:: com.vmware.vmc.orgs.sddcs.networks.edges.nat.config_client + :members: + :undoc-members: + :show-inheritance: + + diff --git a/vmc/_sources/com.vmware.vmc.orgs.sddcs.networks.edges.rst.txt b/vmc/_sources/com.vmware.vmc.orgs.sddcs.networks.edges.rst.txt new file mode 100644 index 00000000..19735bc7 --- /dev/null +++ b/vmc/_sources/com.vmware.vmc.orgs.sddcs.networks.edges.rst.txt @@ -0,0 +1,70 @@ +com.vmware.vmc.orgs.sddcs.networks.edges package +================================================ + +.. automodule:: com.vmware.vmc.orgs.sddcs.networks.edges + :members: + :undoc-members: + :show-inheritance: + +Subpackages +----------- + +.. toctree:: + + com.vmware.vmc.orgs.sddcs.networks.edges.firewall + com.vmware.vmc.orgs.sddcs.networks.edges.l2vpn + com.vmware.vmc.orgs.sddcs.networks.edges.nat + com.vmware.vmc.orgs.sddcs.networks.edges.statistics + +Submodules +---------- + +com.vmware.vmc.orgs.sddcs.networks.edges.dhcp\_client module +------------------------------------------------------------ + +.. automodule:: com.vmware.vmc.orgs.sddcs.networks.edges.dhcp_client + :members: + :undoc-members: + :show-inheritance: + +com.vmware.vmc.orgs.sddcs.networks.edges.dns\_client module +----------------------------------------------------------- + +.. automodule:: com.vmware.vmc.orgs.sddcs.networks.edges.dns_client + :members: + :undoc-members: + :show-inheritance: + +com.vmware.vmc.orgs.sddcs.networks.edges.firewall\_client module +---------------------------------------------------------------- + +.. automodule:: com.vmware.vmc.orgs.sddcs.networks.edges.firewall_client + :members: + :undoc-members: + :show-inheritance: + +com.vmware.vmc.orgs.sddcs.networks.edges.ipsec\_client module +------------------------------------------------------------- + +.. automodule:: com.vmware.vmc.orgs.sddcs.networks.edges.ipsec_client + :members: + :undoc-members: + :show-inheritance: + +com.vmware.vmc.orgs.sddcs.networks.edges.nat\_client module +----------------------------------------------------------- + +.. automodule:: com.vmware.vmc.orgs.sddcs.networks.edges.nat_client + :members: + :undoc-members: + :show-inheritance: + +com.vmware.vmc.orgs.sddcs.networks.edges.statistics\_client module +------------------------------------------------------------------ + +.. automodule:: com.vmware.vmc.orgs.sddcs.networks.edges.statistics_client + :members: + :undoc-members: + :show-inheritance: + + diff --git a/vmc/_sources/com.vmware.vmc.orgs.sddcs.networks.edges.statistics.rst.txt b/vmc/_sources/com.vmware.vmc.orgs.sddcs.networks.edges.statistics.rst.txt new file mode 100644 index 00000000..22f3909b --- /dev/null +++ b/vmc/_sources/com.vmware.vmc.orgs.sddcs.networks.edges.statistics.rst.txt @@ -0,0 +1,28 @@ +com.vmware.vmc.orgs.sddcs.networks.edges.statistics package +=========================================================== + +.. automodule:: com.vmware.vmc.orgs.sddcs.networks.edges.statistics + :members: + :undoc-members: + :show-inheritance: + +Submodules +---------- + +com.vmware.vmc.orgs.sddcs.networks.edges.statistics.dashboard\_client module +---------------------------------------------------------------------------- + +.. automodule:: com.vmware.vmc.orgs.sddcs.networks.edges.statistics.dashboard_client + :members: + :undoc-members: + :show-inheritance: + +com.vmware.vmc.orgs.sddcs.networks.edges.statistics.interfaces\_client module +----------------------------------------------------------------------------- + +.. automodule:: com.vmware.vmc.orgs.sddcs.networks.edges.statistics.interfaces_client + :members: + :undoc-members: + :show-inheritance: + + diff --git a/vmc/_sources/com.vmware.vmc.orgs.sddcs.networks.rst.txt b/vmc/_sources/com.vmware.vmc.orgs.sddcs.networks.rst.txt new file mode 100644 index 00000000..1c377d8a --- /dev/null +++ b/vmc/_sources/com.vmware.vmc.orgs.sddcs.networks.rst.txt @@ -0,0 +1,28 @@ +com.vmware.vmc.orgs.sddcs.networks package +========================================== + +.. automodule:: com.vmware.vmc.orgs.sddcs.networks + :members: + :undoc-members: + :show-inheritance: + +Subpackages +----------- + +.. toctree:: + + com.vmware.vmc.orgs.sddcs.networks.cgws + com.vmware.vmc.orgs.sddcs.networks.edges + +Submodules +---------- + +com.vmware.vmc.orgs.sddcs.networks.edges\_client module +------------------------------------------------------- + +.. automodule:: com.vmware.vmc.orgs.sddcs.networks.edges_client + :members: + :undoc-members: + :show-inheritance: + + diff --git a/vmc/_sources/com.vmware.vmc.orgs.sddcs.rst.txt b/vmc/_sources/com.vmware.vmc.orgs.sddcs.rst.txt new file mode 100644 index 00000000..fd97481a --- /dev/null +++ b/vmc/_sources/com.vmware.vmc.orgs.sddcs.rst.txt @@ -0,0 +1,43 @@ +com.vmware.vmc.orgs.sddcs package +================================= + +.. automodule:: com.vmware.vmc.orgs.sddcs + :members: + :undoc-members: + :show-inheritance: + +Subpackages +----------- + +.. toctree:: + + com.vmware.vmc.orgs.sddcs.networks + +Submodules +---------- + +com.vmware.vmc.orgs.sddcs.dns\_client module +-------------------------------------------- + +.. automodule:: com.vmware.vmc.orgs.sddcs.dns_client + :members: + :undoc-members: + :show-inheritance: + +com.vmware.vmc.orgs.sddcs.mgw\_client module +-------------------------------------------- + +.. automodule:: com.vmware.vmc.orgs.sddcs.mgw_client + :members: + :undoc-members: + :show-inheritance: + +com.vmware.vmc.orgs.sddcs.networks\_client module +------------------------------------------------- + +.. automodule:: com.vmware.vmc.orgs.sddcs.networks_client + :members: + :undoc-members: + :show-inheritance: + + diff --git a/vmc/_sources/com.vmware.vmc.rst.txt b/vmc/_sources/com.vmware.vmc.rst.txt new file mode 100644 index 00000000..c60630fd --- /dev/null +++ b/vmc/_sources/com.vmware.vmc.rst.txt @@ -0,0 +1,35 @@ +com.vmware.vmc package +====================== + +.. automodule:: com.vmware.vmc + :members: + :undoc-members: + :show-inheritance: + +Subpackages +----------- + +.. toctree:: + + com.vmware.vmc.orgs + +Submodules +---------- + +com.vmware.vmc.model\_client module +----------------------------------- + +.. automodule:: com.vmware.vmc.model_client + :members: + :undoc-members: + :show-inheritance: + +com.vmware.vmc.orgs\_client module +---------------------------------- + +.. automodule:: com.vmware.vmc.orgs_client + :members: + :undoc-members: + :show-inheritance: + + diff --git a/vmc/_sources/enumeration.rst.txt b/vmc/_sources/enumeration.rst.txt new file mode 100644 index 00000000..afe09e47 --- /dev/null +++ b/vmc/_sources/enumeration.rst.txt @@ -0,0 +1,82 @@ +.. _enumeration_description: + +Interface definition language to python mapping for enumerated types +-------------------------------------------------------------------- + +The interface language definition type system includes enumerated types. Python +SDK supports both 2.x and 3.x versions of Python. Since Python 2.x does +not have first class support for enumerations, special classes are +generated to represent enumerated types from the interface definition +language. The special class contains class attributes which represent +the values of the enumerated type. + +This documentation explains the following: + +* How the class variables are defined in the module. This specifies the names that you can use in your program. +* How you instantiate a class to use it for communication with future versions of the service. + +Example of an enumerated type documentation +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +*class* com.vmware.vapi.metadata_client. **SourceType** (string) + Bases: vmware.vapi.bindings.enum.Enum + + Metadata source type + + .. note:: + This class represents an enumerated type in the interface language definition type system. The class contains class attributes which represent the values in the current version of the enumerated type. Newer versions of the enumerated type may contain new values. To use new values of the enumerated type in communication with a server that supports a newer version of the API, you instantiate this class. See :ref:`enumerated type description page `. + + **Parameters** : **string** (``str``) – String value for the SourceType instance. + + **FILE** = *SourceType(string='FILE')* + If the source is backed by a file. + + **REMOTE** = *SourceType(string='REMOTE')* + If the source is backed by a remote service. + +Code Examples +^^^^^^^^^^^^^ + +The enumerated type classes are defined in python modules that your code +imports. You can use these in your code. + +1. If you want to pass an enumerated type value in a method to a server, specify the class variable of the enumerated type class. + +.. code-block:: python + + # SourceType is an enumerated type + from com.vmware.vapi.metadata_client import SourceType + + # SourceType has two class attrites, SourceType.FILE and SourceType.REMOTE + spec = Source.CreateSpec(type=SourceType.FILE, filepath='entity_metadata.json', description='Entity service') + source_svc.create(id='entity', spec=spec) + +2. When you receive an enumerated type value in the response from a server, allow for unknown enumerated type values. + +.. code-block:: python + + # SourceType is an enumerated type + from com.vmware.vapi.metadata_client import SourceType + + source_info = source_svc.get(id='entity') + if (source_info.type == SourceType.FILE) { + print 'Source is a file' + } else if (source_info.type == SourceType.REMOTE) { + print 'Source is a remote provider' + } else { + print 'Unknown source type: %s' % str(source_info.type) + } + +3. Sending a new enumerated type value to a server that has a newer version of the enumerated type. + +To use new values of the enumerated type in communication with a server that supports a newer version of the API, you instantiate the +enumerated type class. + +.. code-block:: python + + # If a newer version of SourceType has a new value FOLDER, FOLDER would be one + # of the class attributes for SourceType. In the older version, SourceType has + # only two class attributes, FILE and REMOTE + from com.vmware.vapi.metadata_client import SourceType + spec = Source.CreateSpec(type=SourceType('FOLDER'), filepath='entity_metadata', description='Entity service') + source_svc.create(id='entity', spec=spec) diff --git a/vmc/_sources/index.rst.txt b/vmc/_sources/index.rst.txt new file mode 100644 index 00000000..e04a6077 --- /dev/null +++ b/vmc/_sources/index.rst.txt @@ -0,0 +1,21 @@ +.. VMware Cloud on AWS Console API documentation master file, created by + sphinx-quickstart on Tue May 22 21:36:26 2018. + You can adapt this file completely to your liking, but it should at least + contain the root `toctree` directive. + +Welcome to VMware Cloud on AWS Console API's documentation! +=========================================================== + +.. toctree:: + :maxdepth: 10 + :caption: Contents: + + com + + +Indices and tables +================== + +* :ref:`genindex` +* :ref:`modindex` +* :ref:`search` diff --git a/vmc/_static/ajax-loader.gif b/vmc/_static/ajax-loader.gif new file mode 100644 index 00000000..61faf8ca Binary files /dev/null and b/vmc/_static/ajax-loader.gif differ diff --git a/vmc/_static/basic.css b/vmc/_static/basic.css new file mode 100644 index 00000000..19ced105 --- /dev/null +++ b/vmc/_static/basic.css @@ -0,0 +1,665 @@ +/* + * basic.css + * ~~~~~~~~~ + * + * Sphinx stylesheet -- basic theme. + * + * :copyright: Copyright 2007-2018 by the Sphinx team, see AUTHORS. + * :license: BSD, see LICENSE for details. + * + */ + +/* -- main layout ----------------------------------------------------------- */ + +div.clearer { + clear: both; +} + +/* -- relbar ---------------------------------------------------------------- */ + +div.related { + width: 100%; + font-size: 90%; +} + +div.related h3 { + display: none; +} + +div.related ul { + margin: 0; + padding: 0 0 0 10px; + list-style: none; +} + +div.related li { + display: inline; +} + +div.related li.right { + float: right; + margin-right: 5px; +} + +/* -- sidebar --------------------------------------------------------------- */ + +div.sphinxsidebarwrapper { + padding: 10px 5px 0 10px; +} + +div.sphinxsidebar { + float: left; + width: 230px; + margin-left: -100%; + font-size: 90%; + word-wrap: break-word; + overflow-wrap : break-word; +} + +div.sphinxsidebar ul { + list-style: none; +} + +div.sphinxsidebar ul ul, +div.sphinxsidebar ul.want-points { + margin-left: 20px; + list-style: square; +} + +div.sphinxsidebar ul ul { + margin-top: 0; + margin-bottom: 0; +} + +div.sphinxsidebar form { + margin-top: 10px; +} + +div.sphinxsidebar input { + border: 1px solid #98dbcc; + font-family: sans-serif; + font-size: 1em; +} + +div.sphinxsidebar #searchbox input[type="text"] { + float: left; + width: 80%; + padding: 0.25em; + box-sizing: border-box; +} + +div.sphinxsidebar #searchbox input[type="submit"] { + float: left; + width: 20%; + border-left: none; + padding: 0.25em; + box-sizing: border-box; +} + + +img { + border: 0; + max-width: 100%; +} + +/* -- search page ----------------------------------------------------------- */ + +ul.search { + margin: 10px 0 0 20px; + padding: 0; +} + +ul.search li { + padding: 5px 0 5px 20px; + background-image: url(file.png); + background-repeat: no-repeat; + background-position: 0 7px; +} + +ul.search li a { + font-weight: bold; +} + +ul.search li div.context { + color: #888; + margin: 2px 0 0 30px; + text-align: left; +} + +ul.keywordmatches li.goodmatch a { + font-weight: bold; +} + +/* -- index page ------------------------------------------------------------ */ + +table.contentstable { + width: 90%; + margin-left: auto; + margin-right: auto; +} + +table.contentstable p.biglink { + line-height: 150%; +} + +a.biglink { + font-size: 1.3em; +} + +span.linkdescr { + font-style: italic; + padding-top: 5px; + font-size: 90%; +} + +/* -- general index --------------------------------------------------------- */ + +table.indextable { + width: 100%; +} + +table.indextable td { + text-align: left; + vertical-align: top; +} + +table.indextable ul { + margin-top: 0; + margin-bottom: 0; + list-style-type: none; +} + +table.indextable > tbody > tr > td > ul { + padding-left: 0em; +} + +table.indextable tr.pcap { + height: 10px; +} + +table.indextable tr.cap { + margin-top: 10px; + background-color: #f2f2f2; +} + +img.toggler { + margin-right: 3px; + margin-top: 3px; + cursor: pointer; +} + +div.modindex-jumpbox { + border-top: 1px solid #ddd; + border-bottom: 1px solid #ddd; + margin: 1em 0 1em 0; + padding: 0.4em; +} + +div.genindex-jumpbox { + border-top: 1px solid #ddd; + border-bottom: 1px solid #ddd; + margin: 1em 0 1em 0; + padding: 0.4em; +} + +/* -- domain module index --------------------------------------------------- */ + +table.modindextable td { + padding: 2px; + border-collapse: collapse; +} + +/* -- general body styles --------------------------------------------------- */ + +div.body { + min-width: 450px; + max-width: 800px; +} + +div.body p, div.body dd, div.body li, div.body blockquote { + -moz-hyphens: auto; + -ms-hyphens: auto; + -webkit-hyphens: auto; + hyphens: auto; +} + +a.headerlink { + visibility: hidden; +} + +h1:hover > a.headerlink, +h2:hover > a.headerlink, +h3:hover > a.headerlink, +h4:hover > a.headerlink, +h5:hover > a.headerlink, +h6:hover > a.headerlink, +dt:hover > a.headerlink, +caption:hover > a.headerlink, +p.caption:hover > a.headerlink, +div.code-block-caption:hover > a.headerlink { + visibility: visible; +} + +div.body p.caption { + text-align: inherit; +} + +div.body td { + text-align: left; +} + +.first { + margin-top: 0 !important; +} + +p.rubric { + margin-top: 30px; + font-weight: bold; +} + +img.align-left, .figure.align-left, object.align-left { + clear: left; + float: left; + margin-right: 1em; +} + +img.align-right, .figure.align-right, object.align-right { + clear: right; + float: right; + margin-left: 1em; +} + +img.align-center, .figure.align-center, object.align-center { + display: block; + margin-left: auto; + margin-right: auto; +} + +.align-left { + text-align: left; +} + +.align-center { + text-align: center; +} + +.align-right { + text-align: right; +} + +/* -- sidebars -------------------------------------------------------------- */ + +div.sidebar { + margin: 0 0 0.5em 1em; + border: 1px solid #ddb; + padding: 7px 7px 0 7px; + background-color: #ffe; + width: 40%; + float: right; +} + +p.sidebar-title { + font-weight: bold; +} + +/* -- topics ---------------------------------------------------------------- */ + +div.topic { + border: 1px solid #ccc; + padding: 7px 7px 0 7px; + margin: 10px 0 10px 0; +} + +p.topic-title { + font-size: 1.1em; + font-weight: bold; + margin-top: 10px; +} + +/* -- admonitions ----------------------------------------------------------- */ + +div.admonition { + margin-top: 10px; + margin-bottom: 10px; + padding: 7px; +} + +div.admonition dt { + font-weight: bold; +} + +div.admonition dl { + margin-bottom: 0; +} + +p.admonition-title { + margin: 0px 10px 5px 0px; + font-weight: bold; +} + +div.body p.centered { + text-align: center; + margin-top: 25px; +} + +/* -- tables ---------------------------------------------------------------- */ + +table.docutils { + border: 0; + border-collapse: collapse; +} + +table.align-center { + margin-left: auto; + margin-right: auto; +} + +table caption span.caption-number { + font-style: italic; +} + +table caption span.caption-text { +} + +table.docutils td, table.docutils th { + padding: 1px 8px 1px 5px; + border-top: 0; + border-left: 0; + border-right: 0; + border-bottom: 1px solid #aaa; +} + +table.footnote td, table.footnote th { + border: 0 !important; +} + +th { + text-align: left; + padding-right: 5px; +} + +table.citation { + border-left: solid 1px gray; + margin-left: 1px; +} + +table.citation td { + border-bottom: none; +} + +/* -- figures --------------------------------------------------------------- */ + +div.figure { + margin: 0.5em; + padding: 0.5em; +} + +div.figure p.caption { + padding: 0.3em; +} + +div.figure p.caption span.caption-number { + font-style: italic; +} + +div.figure p.caption span.caption-text { +} + +/* -- field list styles ----------------------------------------------------- */ + +table.field-list td, table.field-list th { + border: 0 !important; +} + +.field-list ul { + margin: 0; + padding-left: 1em; +} + +.field-list p { + margin: 0; +} + +.field-name { + -moz-hyphens: manual; + -ms-hyphens: manual; + -webkit-hyphens: manual; + hyphens: manual; +} + +/* -- other body styles ----------------------------------------------------- */ + +ol.arabic { + list-style: decimal; +} + +ol.loweralpha { + list-style: lower-alpha; +} + +ol.upperalpha { + list-style: upper-alpha; +} + +ol.lowerroman { + list-style: lower-roman; +} + +ol.upperroman { + list-style: upper-roman; +} + +dl { + margin-bottom: 15px; +} + +dd p { + margin-top: 0px; +} + +dd ul, dd table { + margin-bottom: 10px; +} + +dd { + margin-top: 3px; + margin-bottom: 10px; + margin-left: 30px; +} + +dt:target, span.highlighted { + background-color: #fbe54e; +} + +rect.highlighted { + fill: #fbe54e; +} + +dl.glossary dt { + font-weight: bold; + font-size: 1.1em; +} + +.optional { + font-size: 1.3em; +} + +.sig-paren { + font-size: larger; +} + +.versionmodified { + font-style: italic; +} + +.system-message { + background-color: #fda; + padding: 5px; + border: 3px solid red; +} + +.footnote:target { + background-color: #ffa; +} + +.line-block { + display: block; + margin-top: 1em; + margin-bottom: 1em; +} + +.line-block .line-block { + margin-top: 0; + margin-bottom: 0; + margin-left: 1.5em; +} + +.guilabel, .menuselection { + font-family: sans-serif; +} + +.accelerator { + text-decoration: underline; +} + +.classifier { + font-style: oblique; +} + +abbr, acronym { + border-bottom: dotted 1px; + cursor: help; +} + +/* -- code displays --------------------------------------------------------- */ + +pre { + overflow: auto; + overflow-y: hidden; /* fixes display issues on Chrome browsers */ +} + +span.pre { + -moz-hyphens: none; + -ms-hyphens: none; + -webkit-hyphens: none; + hyphens: none; +} + +td.linenos pre { + padding: 5px 0px; + border: 0; + background-color: transparent; + color: #aaa; +} + +table.highlighttable { + margin-left: 0.5em; +} + +table.highlighttable td { + padding: 0 0.5em 0 0.5em; +} + +div.code-block-caption { + padding: 2px 5px; + font-size: small; +} + +div.code-block-caption code { + background-color: transparent; +} + +div.code-block-caption + div > div.highlight > pre { + margin-top: 0; +} + +div.code-block-caption span.caption-number { + padding: 0.1em 0.3em; + font-style: italic; +} + +div.code-block-caption span.caption-text { +} + +div.literal-block-wrapper { + padding: 1em 1em 0; +} + +div.literal-block-wrapper div.highlight { + margin: 0; +} + +code.descname { + background-color: transparent; + font-weight: bold; + font-size: 1.2em; +} + +code.descclassname { + background-color: transparent; +} + +code.xref, a code { + background-color: transparent; + font-weight: bold; +} + +h1 code, h2 code, h3 code, h4 code, h5 code, h6 code { + background-color: transparent; +} + +.viewcode-link { + float: right; +} + +.viewcode-back { + float: right; + font-family: sans-serif; +} + +div.viewcode-block:target { + margin: -1px -10px; + padding: 0 10px; +} + +/* -- math display ---------------------------------------------------------- */ + +img.math { + vertical-align: middle; +} + +div.body div.math p { + text-align: center; +} + +span.eqno { + float: right; +} + +span.eqno a.headerlink { + position: relative; + left: 0px; + z-index: 1; +} + +div.math:hover a.headerlink { + visibility: visible; +} + +/* -- printout stylesheet --------------------------------------------------- */ + +@media print { + div.document, + div.documentwrapper, + div.bodywrapper { + margin: 0 !important; + width: 100%; + } + + div.sphinxsidebar, + div.related, + div.footer, + #top-link { + display: none; + } +} \ No newline at end of file diff --git a/vmc/_static/comment-bright.png b/vmc/_static/comment-bright.png new file mode 100644 index 00000000..15e27edb Binary files /dev/null and b/vmc/_static/comment-bright.png differ diff --git a/vmc/_static/comment-close.png b/vmc/_static/comment-close.png new file mode 100644 index 00000000..4d91bcf5 Binary files /dev/null and b/vmc/_static/comment-close.png differ diff --git a/vmc/_static/comment.png b/vmc/_static/comment.png new file mode 100644 index 00000000..dfbc0cbd Binary files /dev/null and b/vmc/_static/comment.png differ diff --git a/vmc/_static/css/badge_only.css b/vmc/_static/css/badge_only.css new file mode 100644 index 00000000..323730ae --- /dev/null +++ b/vmc/_static/css/badge_only.css @@ -0,0 +1 @@ +.fa:before{-webkit-font-smoothing:antialiased}.clearfix{*zoom:1}.clearfix:before,.clearfix:after{display:table;content:""}.clearfix:after{clear:both}@font-face{font-family:FontAwesome;font-weight:normal;font-style:normal;src:url("../fonts/fontawesome-webfont.eot");src:url("../fonts/fontawesome-webfont.eot?#iefix") format("embedded-opentype"),url("../fonts/fontawesome-webfont.woff") format("woff"),url("../fonts/fontawesome-webfont.ttf") format("truetype"),url("../fonts/fontawesome-webfont.svg#FontAwesome") format("svg")}.fa:before{display:inline-block;font-family:FontAwesome;font-style:normal;font-weight:normal;line-height:1;text-decoration:inherit}a .fa{display:inline-block;text-decoration:inherit}li .fa{display:inline-block}li .fa-large:before,li .fa-large:before{width:1.875em}ul.fas{list-style-type:none;margin-left:2em;text-indent:-0.8em}ul.fas li .fa{width:.8em}ul.fas li .fa-large:before,ul.fas li .fa-large:before{vertical-align:baseline}.fa-book:before{content:""}.icon-book:before{content:""}.fa-caret-down:before{content:""}.icon-caret-down:before{content:""}.fa-caret-up:before{content:""}.icon-caret-up:before{content:""}.fa-caret-left:before{content:""}.icon-caret-left:before{content:""}.fa-caret-right:before{content:""}.icon-caret-right:before{content:""}.rst-versions{position:fixed;bottom:0;left:0;width:300px;color:#fcfcfc;background:#1f1d1d;font-family:"Lato","proxima-nova","Helvetica Neue",Arial,sans-serif;z-index:400}.rst-versions a{color:#2980B9;text-decoration:none}.rst-versions .rst-badge-small{display:none}.rst-versions .rst-current-version{padding:12px;background-color:#272525;display:block;text-align:right;font-size:90%;cursor:pointer;color:#27AE60;*zoom:1}.rst-versions .rst-current-version:before,.rst-versions .rst-current-version:after{display:table;content:""}.rst-versions .rst-current-version:after{clear:both}.rst-versions .rst-current-version .fa{color:#fcfcfc}.rst-versions .rst-current-version .fa-book{float:left}.rst-versions .rst-current-version .icon-book{float:left}.rst-versions .rst-current-version.rst-out-of-date{background-color:#E74C3C;color:#fff}.rst-versions .rst-current-version.rst-active-old-version{background-color:#F1C40F;color:#000}.rst-versions.shift-up{height:auto;max-height:100%}.rst-versions.shift-up .rst-other-versions{display:block}.rst-versions .rst-other-versions{font-size:90%;padding:12px;color:gray;display:none}.rst-versions .rst-other-versions hr{display:block;height:1px;border:0;margin:20px 0;padding:0;border-top:solid 1px #413d3d}.rst-versions .rst-other-versions dd{display:inline-block;margin:0}.rst-versions .rst-other-versions dd a{display:inline-block;padding:6px;color:#fcfcfc}.rst-versions.rst-badge{width:auto;bottom:20px;right:20px;left:auto;border:none;max-width:300px}.rst-versions.rst-badge .icon-book{float:none}.rst-versions.rst-badge .fa-book{float:none}.rst-versions.rst-badge.shift-up .rst-current-version{text-align:right}.rst-versions.rst-badge.shift-up .rst-current-version .fa-book{float:left}.rst-versions.rst-badge.shift-up .rst-current-version .icon-book{float:left}.rst-versions.rst-badge .rst-current-version{width:auto;height:30px;line-height:30px;padding:0 6px;display:block;text-align:center}@media screen and (max-width: 768px){.rst-versions{width:85%;display:none}.rst-versions.shift{display:block}} diff --git a/vmc/_static/css/theme.css b/vmc/_static/css/theme.css new file mode 100644 index 00000000..d98ab40f --- /dev/null +++ b/vmc/_static/css/theme.css @@ -0,0 +1,4 @@ +*{-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}article,aside,details,figcaption,figure,footer,header,hgroup,nav,section{display:block}audio,canvas,video{display:inline-block;*display:inline;*zoom:1}audio:not([controls]){display:none}[hidden]{display:none}*{-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}html{font-size:100%;-webkit-text-size-adjust:100%;-ms-text-size-adjust:100%}body{margin:0}a:hover,a:active{outline:0}abbr[title]{border-bottom:1px dotted}b,strong{font-weight:bold}blockquote{margin:0}dfn{font-style:italic}ins{background:#ff9;color:#000;text-decoration:none}mark{background:#ff0;color:#000;font-style:italic;font-weight:bold}pre,code,.rst-content tt,.rst-content code,kbd,samp{font-family:monospace,serif;_font-family:"courier new",monospace;font-size:1em}pre{white-space:pre}q{quotes:none}q:before,q:after{content:"";content:none}small{font-size:85%}sub,sup{font-size:75%;line-height:0;position:relative;vertical-align:baseline}sup{top:-0.5em}sub{bottom:-0.25em}ul,ol,dl{margin:0;padding:0;list-style:none;list-style-image:none}li{list-style:none}dd{margin:0}img{border:0;-ms-interpolation-mode:bicubic;vertical-align:middle;max-width:100%}svg:not(:root){overflow:hidden}figure{margin:0}form{margin:0}fieldset{border:0;margin:0;padding:0}label{cursor:pointer}legend{border:0;*margin-left:-7px;padding:0;white-space:normal}button,input,select,textarea{font-size:100%;margin:0;vertical-align:baseline;*vertical-align:middle}button,input{line-height:normal}button,input[type="button"],input[type="reset"],input[type="submit"]{cursor:pointer;-webkit-appearance:button;*overflow:visible}button[disabled],input[disabled]{cursor:default}input[type="checkbox"],input[type="radio"]{box-sizing:border-box;padding:0;*width:13px;*height:13px}input[type="search"]{-webkit-appearance:textfield;-moz-box-sizing:content-box;-webkit-box-sizing:content-box;box-sizing:content-box}input[type="search"]::-webkit-search-decoration,input[type="search"]::-webkit-search-cancel-button{-webkit-appearance:none}button::-moz-focus-inner,input::-moz-focus-inner{border:0;padding:0}textarea{overflow:auto;vertical-align:top;resize:vertical}table{border-collapse:collapse;border-spacing:0}td{vertical-align:top}.chromeframe{margin:.2em 0;background:#ccc;color:#000;padding:.2em 0}.ir{display:block;border:0;text-indent:-999em;overflow:hidden;background-color:transparent;background-repeat:no-repeat;text-align:left;direction:ltr;*line-height:0}.ir br{display:none}.hidden{display:none !important;visibility:hidden}.visuallyhidden{border:0;clip:rect(0 0 0 0);height:1px;margin:-1px;overflow:hidden;padding:0;position:absolute;width:1px}.visuallyhidden.focusable:active,.visuallyhidden.focusable:focus{clip:auto;height:auto;margin:0;overflow:visible;position:static;width:auto}.invisible{visibility:hidden}.relative{position:relative}big,small{font-size:100%}@media print{html,body,section{background:none !important}*{box-shadow:none !important;text-shadow:none !important;filter:none !important;-ms-filter:none !important}a,a:visited{text-decoration:underline}.ir a:after,a[href^="javascript:"]:after,a[href^="#"]:after{content:""}pre,blockquote{page-break-inside:avoid}thead{display:table-header-group}tr,img{page-break-inside:avoid}img{max-width:100% !important}@page{margin:.5cm}p,h2,.rst-content .toctree-wrapper p.caption,h3{orphans:3;widows:3}h2,.rst-content .toctree-wrapper p.caption,h3{page-break-after:avoid}}.fa:before,.wy-menu-vertical li span.toctree-expand:before,.wy-menu-vertical li.on a span.toctree-expand:before,.wy-menu-vertical li.current>a span.toctree-expand:before,.rst-content .admonition-title:before,.rst-content h1 .headerlink:before,.rst-content h2 .headerlink:before,.rst-content h3 .headerlink:before,.rst-content h4 .headerlink:before,.rst-content h5 .headerlink:before,.rst-content h6 .headerlink:before,.rst-content dl dt .headerlink:before,.rst-content p.caption .headerlink:before,.rst-content table>caption .headerlink:before,.rst-content tt.download span:first-child:before,.rst-content code.download span:first-child:before,.icon:before,.wy-dropdown .caret:before,.wy-inline-validate.wy-inline-validate-success .wy-input-context:before,.wy-inline-validate.wy-inline-validate-danger .wy-input-context:before,.wy-inline-validate.wy-inline-validate-warning .wy-input-context:before,.wy-inline-validate.wy-inline-validate-info .wy-input-context:before,.wy-alert,.rst-content .note,.rst-content .attention,.rst-content .caution,.rst-content .danger,.rst-content .error,.rst-content .hint,.rst-content .important,.rst-content .tip,.rst-content .warning,.rst-content .seealso,.rst-content .admonition-todo,.rst-content .admonition,.btn,input[type="text"],input[type="password"],input[type="email"],input[type="url"],input[type="date"],input[type="month"],input[type="time"],input[type="datetime"],input[type="datetime-local"],input[type="week"],input[type="number"],input[type="search"],input[type="tel"],input[type="color"],select,textarea,.wy-menu-vertical li.on a,.wy-menu-vertical li.current>a,.wy-side-nav-search>a,.wy-side-nav-search .wy-dropdown>a,.wy-nav-top a{-webkit-font-smoothing:antialiased}.clearfix{*zoom:1}.clearfix:before,.clearfix:after{display:table;content:""}.clearfix:after{clear:both}/*! + * Font Awesome 4.7.0 by @davegandy - http://fontawesome.io - @fontawesome + * License - http://fontawesome.io/license (Font: SIL OFL 1.1, CSS: MIT License) + */@font-face{font-family:'FontAwesome';src:url("../fonts/fontawesome-webfont.eot?v=4.7.0");src:url("../fonts/fontawesome-webfont.eot?#iefix&v=4.7.0") format("embedded-opentype"),url("../fonts/fontawesome-webfont.woff2?v=4.7.0") format("woff2"),url("../fonts/fontawesome-webfont.woff?v=4.7.0") format("woff"),url("../fonts/fontawesome-webfont.ttf?v=4.7.0") format("truetype"),url("../fonts/fontawesome-webfont.svg?v=4.7.0#fontawesomeregular") format("svg");font-weight:normal;font-style:normal}.fa,.wy-menu-vertical li span.toctree-expand,.wy-menu-vertical li.on a span.toctree-expand,.wy-menu-vertical li.current>a span.toctree-expand,.rst-content .admonition-title,.rst-content h1 .headerlink,.rst-content h2 .headerlink,.rst-content h3 .headerlink,.rst-content h4 .headerlink,.rst-content h5 .headerlink,.rst-content h6 .headerlink,.rst-content dl dt .headerlink,.rst-content p.caption .headerlink,.rst-content table>caption .headerlink,.rst-content tt.download span:first-child,.rst-content code.download span:first-child,.icon{display:inline-block;font:normal normal normal 14px/1 FontAwesome;font-size:inherit;text-rendering:auto;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}.fa-lg{font-size:1.3333333333em;line-height:.75em;vertical-align:-15%}.fa-2x{font-size:2em}.fa-3x{font-size:3em}.fa-4x{font-size:4em}.fa-5x{font-size:5em}.fa-fw{width:1.2857142857em;text-align:center}.fa-ul{padding-left:0;margin-left:2.1428571429em;list-style-type:none}.fa-ul>li{position:relative}.fa-li{position:absolute;left:-2.1428571429em;width:2.1428571429em;top:.1428571429em;text-align:center}.fa-li.fa-lg{left:-1.8571428571em}.fa-border{padding:.2em .25em .15em;border:solid 0.08em #eee;border-radius:.1em}.fa-pull-left{float:left}.fa-pull-right{float:right}.fa.fa-pull-left,.wy-menu-vertical li span.fa-pull-left.toctree-expand,.wy-menu-vertical li.on a span.fa-pull-left.toctree-expand,.wy-menu-vertical li.current>a span.fa-pull-left.toctree-expand,.rst-content .fa-pull-left.admonition-title,.rst-content h1 .fa-pull-left.headerlink,.rst-content h2 .fa-pull-left.headerlink,.rst-content h3 .fa-pull-left.headerlink,.rst-content h4 .fa-pull-left.headerlink,.rst-content h5 .fa-pull-left.headerlink,.rst-content h6 .fa-pull-left.headerlink,.rst-content dl dt .fa-pull-left.headerlink,.rst-content p.caption .fa-pull-left.headerlink,.rst-content table>caption .fa-pull-left.headerlink,.rst-content tt.download span.fa-pull-left:first-child,.rst-content code.download span.fa-pull-left:first-child,.fa-pull-left.icon{margin-right:.3em}.fa.fa-pull-right,.wy-menu-vertical li span.fa-pull-right.toctree-expand,.wy-menu-vertical li.on a span.fa-pull-right.toctree-expand,.wy-menu-vertical li.current>a span.fa-pull-right.toctree-expand,.rst-content .fa-pull-right.admonition-title,.rst-content h1 .fa-pull-right.headerlink,.rst-content h2 .fa-pull-right.headerlink,.rst-content h3 .fa-pull-right.headerlink,.rst-content h4 .fa-pull-right.headerlink,.rst-content h5 .fa-pull-right.headerlink,.rst-content h6 .fa-pull-right.headerlink,.rst-content dl dt .fa-pull-right.headerlink,.rst-content p.caption .fa-pull-right.headerlink,.rst-content table>caption .fa-pull-right.headerlink,.rst-content tt.download span.fa-pull-right:first-child,.rst-content code.download span.fa-pull-right:first-child,.fa-pull-right.icon{margin-left:.3em}.pull-right{float:right}.pull-left{float:left}.fa.pull-left,.wy-menu-vertical li span.pull-left.toctree-expand,.wy-menu-vertical li.on a span.pull-left.toctree-expand,.wy-menu-vertical li.current>a span.pull-left.toctree-expand,.rst-content .pull-left.admonition-title,.rst-content h1 .pull-left.headerlink,.rst-content h2 .pull-left.headerlink,.rst-content h3 .pull-left.headerlink,.rst-content h4 .pull-left.headerlink,.rst-content h5 .pull-left.headerlink,.rst-content h6 .pull-left.headerlink,.rst-content dl dt .pull-left.headerlink,.rst-content p.caption .pull-left.headerlink,.rst-content table>caption .pull-left.headerlink,.rst-content tt.download span.pull-left:first-child,.rst-content code.download span.pull-left:first-child,.pull-left.icon{margin-right:.3em}.fa.pull-right,.wy-menu-vertical li span.pull-right.toctree-expand,.wy-menu-vertical li.on a span.pull-right.toctree-expand,.wy-menu-vertical li.current>a span.pull-right.toctree-expand,.rst-content .pull-right.admonition-title,.rst-content h1 .pull-right.headerlink,.rst-content h2 .pull-right.headerlink,.rst-content h3 .pull-right.headerlink,.rst-content h4 .pull-right.headerlink,.rst-content h5 .pull-right.headerlink,.rst-content h6 .pull-right.headerlink,.rst-content dl dt .pull-right.headerlink,.rst-content p.caption .pull-right.headerlink,.rst-content table>caption .pull-right.headerlink,.rst-content tt.download span.pull-right:first-child,.rst-content code.download span.pull-right:first-child,.pull-right.icon{margin-left:.3em}.fa-spin{-webkit-animation:fa-spin 2s infinite linear;animation:fa-spin 2s infinite linear}.fa-pulse{-webkit-animation:fa-spin 1s infinite steps(8);animation:fa-spin 1s infinite steps(8)}@-webkit-keyframes fa-spin{0%{-webkit-transform:rotate(0deg);transform:rotate(0deg)}100%{-webkit-transform:rotate(359deg);transform:rotate(359deg)}}@keyframes fa-spin{0%{-webkit-transform:rotate(0deg);transform:rotate(0deg)}100%{-webkit-transform:rotate(359deg);transform:rotate(359deg)}}.fa-rotate-90{-ms-filter:"progid:DXImageTransform.Microsoft.BasicImage(rotation=1)";-webkit-transform:rotate(90deg);-ms-transform:rotate(90deg);transform:rotate(90deg)}.fa-rotate-180{-ms-filter:"progid:DXImageTransform.Microsoft.BasicImage(rotation=2)";-webkit-transform:rotate(180deg);-ms-transform:rotate(180deg);transform:rotate(180deg)}.fa-rotate-270{-ms-filter:"progid:DXImageTransform.Microsoft.BasicImage(rotation=3)";-webkit-transform:rotate(270deg);-ms-transform:rotate(270deg);transform:rotate(270deg)}.fa-flip-horizontal{-ms-filter:"progid:DXImageTransform.Microsoft.BasicImage(rotation=0, mirror=1)";-webkit-transform:scale(-1, 1);-ms-transform:scale(-1, 1);transform:scale(-1, 1)}.fa-flip-vertical{-ms-filter:"progid:DXImageTransform.Microsoft.BasicImage(rotation=2, mirror=1)";-webkit-transform:scale(1, -1);-ms-transform:scale(1, -1);transform:scale(1, -1)}:root .fa-rotate-90,:root .fa-rotate-180,:root .fa-rotate-270,:root .fa-flip-horizontal,:root .fa-flip-vertical{filter:none}.fa-stack{position:relative;display:inline-block;width:2em;height:2em;line-height:2em;vertical-align:middle}.fa-stack-1x,.fa-stack-2x{position:absolute;left:0;width:100%;text-align:center}.fa-stack-1x{line-height:inherit}.fa-stack-2x{font-size:2em}.fa-inverse{color:#fff}.fa-glass:before{content:""}.fa-music:before{content:""}.fa-search:before,.icon-search:before{content:""}.fa-envelope-o:before{content:""}.fa-heart:before{content:""}.fa-star:before{content:""}.fa-star-o:before{content:""}.fa-user:before{content:""}.fa-film:before{content:""}.fa-th-large:before{content:""}.fa-th:before{content:""}.fa-th-list:before{content:""}.fa-check:before{content:""}.fa-remove:before,.fa-close:before,.fa-times:before{content:""}.fa-search-plus:before{content:""}.fa-search-minus:before{content:""}.fa-power-off:before{content:""}.fa-signal:before{content:""}.fa-gear:before,.fa-cog:before{content:""}.fa-trash-o:before{content:""}.fa-home:before,.icon-home:before{content:""}.fa-file-o:before{content:""}.fa-clock-o:before{content:""}.fa-road:before{content:""}.fa-download:before,.rst-content tt.download span:first-child:before,.rst-content code.download span:first-child:before{content:""}.fa-arrow-circle-o-down:before{content:""}.fa-arrow-circle-o-up:before{content:""}.fa-inbox:before{content:""}.fa-play-circle-o:before{content:""}.fa-rotate-right:before,.fa-repeat:before{content:""}.fa-refresh:before{content:""}.fa-list-alt:before{content:""}.fa-lock:before{content:""}.fa-flag:before{content:""}.fa-headphones:before{content:""}.fa-volume-off:before{content:""}.fa-volume-down:before{content:""}.fa-volume-up:before{content:""}.fa-qrcode:before{content:""}.fa-barcode:before{content:""}.fa-tag:before{content:""}.fa-tags:before{content:""}.fa-book:before,.icon-book:before{content:""}.fa-bookmark:before{content:""}.fa-print:before{content:""}.fa-camera:before{content:""}.fa-font:before{content:""}.fa-bold:before{content:""}.fa-italic:before{content:""}.fa-text-height:before{content:""}.fa-text-width:before{content:""}.fa-align-left:before{content:""}.fa-align-center:before{content:""}.fa-align-right:before{content:""}.fa-align-justify:before{content:""}.fa-list:before{content:""}.fa-dedent:before,.fa-outdent:before{content:""}.fa-indent:before{content:""}.fa-video-camera:before{content:""}.fa-photo:before,.fa-image:before,.fa-picture-o:before{content:""}.fa-pencil:before{content:""}.fa-map-marker:before{content:""}.fa-adjust:before{content:""}.fa-tint:before{content:""}.fa-edit:before,.fa-pencil-square-o:before{content:""}.fa-share-square-o:before{content:""}.fa-check-square-o:before{content:""}.fa-arrows:before{content:""}.fa-step-backward:before{content:""}.fa-fast-backward:before{content:""}.fa-backward:before{content:""}.fa-play:before{content:""}.fa-pause:before{content:""}.fa-stop:before{content:""}.fa-forward:before{content:""}.fa-fast-forward:before{content:""}.fa-step-forward:before{content:""}.fa-eject:before{content:""}.fa-chevron-left:before{content:""}.fa-chevron-right:before{content:""}.fa-plus-circle:before{content:""}.fa-minus-circle:before{content:""}.fa-times-circle:before,.wy-inline-validate.wy-inline-validate-danger .wy-input-context:before{content:""}.fa-check-circle:before,.wy-inline-validate.wy-inline-validate-success .wy-input-context:before{content:""}.fa-question-circle:before{content:""}.fa-info-circle:before{content:""}.fa-crosshairs:before{content:""}.fa-times-circle-o:before{content:""}.fa-check-circle-o:before{content:""}.fa-ban:before{content:""}.fa-arrow-left:before{content:""}.fa-arrow-right:before{content:""}.fa-arrow-up:before{content:""}.fa-arrow-down:before{content:""}.fa-mail-forward:before,.fa-share:before{content:""}.fa-expand:before{content:""}.fa-compress:before{content:""}.fa-plus:before{content:""}.fa-minus:before{content:""}.fa-asterisk:before{content:""}.fa-exclamation-circle:before,.wy-inline-validate.wy-inline-validate-warning .wy-input-context:before,.wy-inline-validate.wy-inline-validate-info .wy-input-context:before,.rst-content .admonition-title:before{content:""}.fa-gift:before{content:""}.fa-leaf:before{content:""}.fa-fire:before,.icon-fire:before{content:""}.fa-eye:before{content:""}.fa-eye-slash:before{content:""}.fa-warning:before,.fa-exclamation-triangle:before{content:""}.fa-plane:before{content:""}.fa-calendar:before{content:""}.fa-random:before{content:""}.fa-comment:before{content:""}.fa-magnet:before{content:""}.fa-chevron-up:before{content:""}.fa-chevron-down:before{content:""}.fa-retweet:before{content:""}.fa-shopping-cart:before{content:""}.fa-folder:before{content:""}.fa-folder-open:before{content:""}.fa-arrows-v:before{content:""}.fa-arrows-h:before{content:""}.fa-bar-chart-o:before,.fa-bar-chart:before{content:""}.fa-twitter-square:before{content:""}.fa-facebook-square:before{content:""}.fa-camera-retro:before{content:""}.fa-key:before{content:""}.fa-gears:before,.fa-cogs:before{content:""}.fa-comments:before{content:""}.fa-thumbs-o-up:before{content:""}.fa-thumbs-o-down:before{content:""}.fa-star-half:before{content:""}.fa-heart-o:before{content:""}.fa-sign-out:before{content:""}.fa-linkedin-square:before{content:""}.fa-thumb-tack:before{content:""}.fa-external-link:before{content:""}.fa-sign-in:before{content:""}.fa-trophy:before{content:""}.fa-github-square:before{content:""}.fa-upload:before{content:""}.fa-lemon-o:before{content:""}.fa-phone:before{content:""}.fa-square-o:before{content:""}.fa-bookmark-o:before{content:""}.fa-phone-square:before{content:""}.fa-twitter:before{content:""}.fa-facebook-f:before,.fa-facebook:before{content:""}.fa-github:before,.icon-github:before{content:""}.fa-unlock:before{content:""}.fa-credit-card:before{content:""}.fa-feed:before,.fa-rss:before{content:""}.fa-hdd-o:before{content:""}.fa-bullhorn:before{content:""}.fa-bell:before{content:""}.fa-certificate:before{content:""}.fa-hand-o-right:before{content:""}.fa-hand-o-left:before{content:""}.fa-hand-o-up:before{content:""}.fa-hand-o-down:before{content:""}.fa-arrow-circle-left:before,.icon-circle-arrow-left:before{content:""}.fa-arrow-circle-right:before,.icon-circle-arrow-right:before{content:""}.fa-arrow-circle-up:before{content:""}.fa-arrow-circle-down:before{content:""}.fa-globe:before{content:""}.fa-wrench:before{content:""}.fa-tasks:before{content:""}.fa-filter:before{content:""}.fa-briefcase:before{content:""}.fa-arrows-alt:before{content:""}.fa-group:before,.fa-users:before{content:""}.fa-chain:before,.fa-link:before,.icon-link:before{content:""}.fa-cloud:before{content:""}.fa-flask:before{content:""}.fa-cut:before,.fa-scissors:before{content:""}.fa-copy:before,.fa-files-o:before{content:""}.fa-paperclip:before{content:""}.fa-save:before,.fa-floppy-o:before{content:""}.fa-square:before{content:""}.fa-navicon:before,.fa-reorder:before,.fa-bars:before{content:""}.fa-list-ul:before{content:""}.fa-list-ol:before{content:""}.fa-strikethrough:before{content:""}.fa-underline:before{content:""}.fa-table:before{content:""}.fa-magic:before{content:""}.fa-truck:before{content:""}.fa-pinterest:before{content:""}.fa-pinterest-square:before{content:""}.fa-google-plus-square:before{content:""}.fa-google-plus:before{content:""}.fa-money:before{content:""}.fa-caret-down:before,.wy-dropdown .caret:before,.icon-caret-down:before{content:""}.fa-caret-up:before{content:""}.fa-caret-left:before{content:""}.fa-caret-right:before{content:""}.fa-columns:before{content:""}.fa-unsorted:before,.fa-sort:before{content:""}.fa-sort-down:before,.fa-sort-desc:before{content:""}.fa-sort-up:before,.fa-sort-asc:before{content:""}.fa-envelope:before{content:""}.fa-linkedin:before{content:""}.fa-rotate-left:before,.fa-undo:before{content:""}.fa-legal:before,.fa-gavel:before{content:""}.fa-dashboard:before,.fa-tachometer:before{content:""}.fa-comment-o:before{content:""}.fa-comments-o:before{content:""}.fa-flash:before,.fa-bolt:before{content:""}.fa-sitemap:before{content:""}.fa-umbrella:before{content:""}.fa-paste:before,.fa-clipboard:before{content:""}.fa-lightbulb-o:before{content:""}.fa-exchange:before{content:""}.fa-cloud-download:before{content:""}.fa-cloud-upload:before{content:""}.fa-user-md:before{content:""}.fa-stethoscope:before{content:""}.fa-suitcase:before{content:""}.fa-bell-o:before{content:""}.fa-coffee:before{content:""}.fa-cutlery:before{content:""}.fa-file-text-o:before{content:""}.fa-building-o:before{content:""}.fa-hospital-o:before{content:""}.fa-ambulance:before{content:""}.fa-medkit:before{content:""}.fa-fighter-jet:before{content:""}.fa-beer:before{content:""}.fa-h-square:before{content:""}.fa-plus-square:before{content:""}.fa-angle-double-left:before{content:""}.fa-angle-double-right:before{content:""}.fa-angle-double-up:before{content:""}.fa-angle-double-down:before{content:""}.fa-angle-left:before{content:""}.fa-angle-right:before{content:""}.fa-angle-up:before{content:""}.fa-angle-down:before{content:""}.fa-desktop:before{content:""}.fa-laptop:before{content:""}.fa-tablet:before{content:""}.fa-mobile-phone:before,.fa-mobile:before{content:""}.fa-circle-o:before{content:""}.fa-quote-left:before{content:""}.fa-quote-right:before{content:""}.fa-spinner:before{content:""}.fa-circle:before{content:""}.fa-mail-reply:before,.fa-reply:before{content:""}.fa-github-alt:before{content:""}.fa-folder-o:before{content:""}.fa-folder-open-o:before{content:""}.fa-smile-o:before{content:""}.fa-frown-o:before{content:""}.fa-meh-o:before{content:""}.fa-gamepad:before{content:""}.fa-keyboard-o:before{content:""}.fa-flag-o:before{content:""}.fa-flag-checkered:before{content:""}.fa-terminal:before{content:""}.fa-code:before{content:""}.fa-mail-reply-all:before,.fa-reply-all:before{content:""}.fa-star-half-empty:before,.fa-star-half-full:before,.fa-star-half-o:before{content:""}.fa-location-arrow:before{content:""}.fa-crop:before{content:""}.fa-code-fork:before{content:""}.fa-unlink:before,.fa-chain-broken:before{content:""}.fa-question:before{content:""}.fa-info:before{content:""}.fa-exclamation:before{content:""}.fa-superscript:before{content:""}.fa-subscript:before{content:""}.fa-eraser:before{content:""}.fa-puzzle-piece:before{content:""}.fa-microphone:before{content:""}.fa-microphone-slash:before{content:""}.fa-shield:before{content:""}.fa-calendar-o:before{content:""}.fa-fire-extinguisher:before{content:""}.fa-rocket:before{content:""}.fa-maxcdn:before{content:""}.fa-chevron-circle-left:before{content:""}.fa-chevron-circle-right:before{content:""}.fa-chevron-circle-up:before{content:""}.fa-chevron-circle-down:before{content:""}.fa-html5:before{content:""}.fa-css3:before{content:""}.fa-anchor:before{content:""}.fa-unlock-alt:before{content:""}.fa-bullseye:before{content:""}.fa-ellipsis-h:before{content:""}.fa-ellipsis-v:before{content:""}.fa-rss-square:before{content:""}.fa-play-circle:before{content:""}.fa-ticket:before{content:""}.fa-minus-square:before{content:""}.fa-minus-square-o:before,.wy-menu-vertical li.on a span.toctree-expand:before,.wy-menu-vertical li.current>a span.toctree-expand:before{content:""}.fa-level-up:before{content:""}.fa-level-down:before{content:""}.fa-check-square:before{content:""}.fa-pencil-square:before{content:""}.fa-external-link-square:before{content:""}.fa-share-square:before{content:""}.fa-compass:before{content:""}.fa-toggle-down:before,.fa-caret-square-o-down:before{content:""}.fa-toggle-up:before,.fa-caret-square-o-up:before{content:""}.fa-toggle-right:before,.fa-caret-square-o-right:before{content:""}.fa-euro:before,.fa-eur:before{content:""}.fa-gbp:before{content:""}.fa-dollar:before,.fa-usd:before{content:""}.fa-rupee:before,.fa-inr:before{content:""}.fa-cny:before,.fa-rmb:before,.fa-yen:before,.fa-jpy:before{content:""}.fa-ruble:before,.fa-rouble:before,.fa-rub:before{content:""}.fa-won:before,.fa-krw:before{content:""}.fa-bitcoin:before,.fa-btc:before{content:""}.fa-file:before{content:""}.fa-file-text:before{content:""}.fa-sort-alpha-asc:before{content:""}.fa-sort-alpha-desc:before{content:""}.fa-sort-amount-asc:before{content:""}.fa-sort-amount-desc:before{content:""}.fa-sort-numeric-asc:before{content:""}.fa-sort-numeric-desc:before{content:""}.fa-thumbs-up:before{content:""}.fa-thumbs-down:before{content:""}.fa-youtube-square:before{content:""}.fa-youtube:before{content:""}.fa-xing:before{content:""}.fa-xing-square:before{content:""}.fa-youtube-play:before{content:""}.fa-dropbox:before{content:""}.fa-stack-overflow:before{content:""}.fa-instagram:before{content:""}.fa-flickr:before{content:""}.fa-adn:before{content:""}.fa-bitbucket:before,.icon-bitbucket:before{content:""}.fa-bitbucket-square:before{content:""}.fa-tumblr:before{content:""}.fa-tumblr-square:before{content:""}.fa-long-arrow-down:before{content:""}.fa-long-arrow-up:before{content:""}.fa-long-arrow-left:before{content:""}.fa-long-arrow-right:before{content:""}.fa-apple:before{content:""}.fa-windows:before{content:""}.fa-android:before{content:""}.fa-linux:before{content:""}.fa-dribbble:before{content:""}.fa-skype:before{content:""}.fa-foursquare:before{content:""}.fa-trello:before{content:""}.fa-female:before{content:""}.fa-male:before{content:""}.fa-gittip:before,.fa-gratipay:before{content:""}.fa-sun-o:before{content:""}.fa-moon-o:before{content:""}.fa-archive:before{content:""}.fa-bug:before{content:""}.fa-vk:before{content:""}.fa-weibo:before{content:""}.fa-renren:before{content:""}.fa-pagelines:before{content:""}.fa-stack-exchange:before{content:""}.fa-arrow-circle-o-right:before{content:""}.fa-arrow-circle-o-left:before{content:""}.fa-toggle-left:before,.fa-caret-square-o-left:before{content:""}.fa-dot-circle-o:before{content:""}.fa-wheelchair:before{content:""}.fa-vimeo-square:before{content:""}.fa-turkish-lira:before,.fa-try:before{content:""}.fa-plus-square-o:before,.wy-menu-vertical li span.toctree-expand:before{content:""}.fa-space-shuttle:before{content:""}.fa-slack:before{content:""}.fa-envelope-square:before{content:""}.fa-wordpress:before{content:""}.fa-openid:before{content:""}.fa-institution:before,.fa-bank:before,.fa-university:before{content:""}.fa-mortar-board:before,.fa-graduation-cap:before{content:""}.fa-yahoo:before{content:""}.fa-google:before{content:""}.fa-reddit:before{content:""}.fa-reddit-square:before{content:""}.fa-stumbleupon-circle:before{content:""}.fa-stumbleupon:before{content:""}.fa-delicious:before{content:""}.fa-digg:before{content:""}.fa-pied-piper-pp:before{content:""}.fa-pied-piper-alt:before{content:""}.fa-drupal:before{content:""}.fa-joomla:before{content:""}.fa-language:before{content:""}.fa-fax:before{content:""}.fa-building:before{content:""}.fa-child:before{content:""}.fa-paw:before{content:""}.fa-spoon:before{content:""}.fa-cube:before{content:""}.fa-cubes:before{content:""}.fa-behance:before{content:""}.fa-behance-square:before{content:""}.fa-steam:before{content:""}.fa-steam-square:before{content:""}.fa-recycle:before{content:""}.fa-automobile:before,.fa-car:before{content:""}.fa-cab:before,.fa-taxi:before{content:""}.fa-tree:before{content:""}.fa-spotify:before{content:""}.fa-deviantart:before{content:""}.fa-soundcloud:before{content:""}.fa-database:before{content:""}.fa-file-pdf-o:before{content:""}.fa-file-word-o:before{content:""}.fa-file-excel-o:before{content:""}.fa-file-powerpoint-o:before{content:""}.fa-file-photo-o:before,.fa-file-picture-o:before,.fa-file-image-o:before{content:""}.fa-file-zip-o:before,.fa-file-archive-o:before{content:""}.fa-file-sound-o:before,.fa-file-audio-o:before{content:""}.fa-file-movie-o:before,.fa-file-video-o:before{content:""}.fa-file-code-o:before{content:""}.fa-vine:before{content:""}.fa-codepen:before{content:""}.fa-jsfiddle:before{content:""}.fa-life-bouy:before,.fa-life-buoy:before,.fa-life-saver:before,.fa-support:before,.fa-life-ring:before{content:""}.fa-circle-o-notch:before{content:""}.fa-ra:before,.fa-resistance:before,.fa-rebel:before{content:""}.fa-ge:before,.fa-empire:before{content:""}.fa-git-square:before{content:""}.fa-git:before{content:""}.fa-y-combinator-square:before,.fa-yc-square:before,.fa-hacker-news:before{content:""}.fa-tencent-weibo:before{content:""}.fa-qq:before{content:""}.fa-wechat:before,.fa-weixin:before{content:""}.fa-send:before,.fa-paper-plane:before{content:""}.fa-send-o:before,.fa-paper-plane-o:before{content:""}.fa-history:before{content:""}.fa-circle-thin:before{content:""}.fa-header:before{content:""}.fa-paragraph:before{content:""}.fa-sliders:before{content:""}.fa-share-alt:before{content:""}.fa-share-alt-square:before{content:""}.fa-bomb:before{content:""}.fa-soccer-ball-o:before,.fa-futbol-o:before{content:""}.fa-tty:before{content:""}.fa-binoculars:before{content:""}.fa-plug:before{content:""}.fa-slideshare:before{content:""}.fa-twitch:before{content:""}.fa-yelp:before{content:""}.fa-newspaper-o:before{content:""}.fa-wifi:before{content:""}.fa-calculator:before{content:""}.fa-paypal:before{content:""}.fa-google-wallet:before{content:""}.fa-cc-visa:before{content:""}.fa-cc-mastercard:before{content:""}.fa-cc-discover:before{content:""}.fa-cc-amex:before{content:""}.fa-cc-paypal:before{content:""}.fa-cc-stripe:before{content:""}.fa-bell-slash:before{content:""}.fa-bell-slash-o:before{content:""}.fa-trash:before{content:""}.fa-copyright:before{content:""}.fa-at:before{content:""}.fa-eyedropper:before{content:""}.fa-paint-brush:before{content:""}.fa-birthday-cake:before{content:""}.fa-area-chart:before{content:""}.fa-pie-chart:before{content:""}.fa-line-chart:before{content:""}.fa-lastfm:before{content:""}.fa-lastfm-square:before{content:""}.fa-toggle-off:before{content:""}.fa-toggle-on:before{content:""}.fa-bicycle:before{content:""}.fa-bus:before{content:""}.fa-ioxhost:before{content:""}.fa-angellist:before{content:""}.fa-cc:before{content:""}.fa-shekel:before,.fa-sheqel:before,.fa-ils:before{content:""}.fa-meanpath:before{content:""}.fa-buysellads:before{content:""}.fa-connectdevelop:before{content:""}.fa-dashcube:before{content:""}.fa-forumbee:before{content:""}.fa-leanpub:before{content:""}.fa-sellsy:before{content:""}.fa-shirtsinbulk:before{content:""}.fa-simplybuilt:before{content:""}.fa-skyatlas:before{content:""}.fa-cart-plus:before{content:""}.fa-cart-arrow-down:before{content:""}.fa-diamond:before{content:""}.fa-ship:before{content:""}.fa-user-secret:before{content:""}.fa-motorcycle:before{content:""}.fa-street-view:before{content:""}.fa-heartbeat:before{content:""}.fa-venus:before{content:""}.fa-mars:before{content:""}.fa-mercury:before{content:""}.fa-intersex:before,.fa-transgender:before{content:""}.fa-transgender-alt:before{content:""}.fa-venus-double:before{content:""}.fa-mars-double:before{content:""}.fa-venus-mars:before{content:""}.fa-mars-stroke:before{content:""}.fa-mars-stroke-v:before{content:""}.fa-mars-stroke-h:before{content:""}.fa-neuter:before{content:""}.fa-genderless:before{content:""}.fa-facebook-official:before{content:""}.fa-pinterest-p:before{content:""}.fa-whatsapp:before{content:""}.fa-server:before{content:""}.fa-user-plus:before{content:""}.fa-user-times:before{content:""}.fa-hotel:before,.fa-bed:before{content:""}.fa-viacoin:before{content:""}.fa-train:before{content:""}.fa-subway:before{content:""}.fa-medium:before{content:""}.fa-yc:before,.fa-y-combinator:before{content:""}.fa-optin-monster:before{content:""}.fa-opencart:before{content:""}.fa-expeditedssl:before{content:""}.fa-battery-4:before,.fa-battery:before,.fa-battery-full:before{content:""}.fa-battery-3:before,.fa-battery-three-quarters:before{content:""}.fa-battery-2:before,.fa-battery-half:before{content:""}.fa-battery-1:before,.fa-battery-quarter:before{content:""}.fa-battery-0:before,.fa-battery-empty:before{content:""}.fa-mouse-pointer:before{content:""}.fa-i-cursor:before{content:""}.fa-object-group:before{content:""}.fa-object-ungroup:before{content:""}.fa-sticky-note:before{content:""}.fa-sticky-note-o:before{content:""}.fa-cc-jcb:before{content:""}.fa-cc-diners-club:before{content:""}.fa-clone:before{content:""}.fa-balance-scale:before{content:""}.fa-hourglass-o:before{content:""}.fa-hourglass-1:before,.fa-hourglass-start:before{content:""}.fa-hourglass-2:before,.fa-hourglass-half:before{content:""}.fa-hourglass-3:before,.fa-hourglass-end:before{content:""}.fa-hourglass:before{content:""}.fa-hand-grab-o:before,.fa-hand-rock-o:before{content:""}.fa-hand-stop-o:before,.fa-hand-paper-o:before{content:""}.fa-hand-scissors-o:before{content:""}.fa-hand-lizard-o:before{content:""}.fa-hand-spock-o:before{content:""}.fa-hand-pointer-o:before{content:""}.fa-hand-peace-o:before{content:""}.fa-trademark:before{content:""}.fa-registered:before{content:""}.fa-creative-commons:before{content:""}.fa-gg:before{content:""}.fa-gg-circle:before{content:""}.fa-tripadvisor:before{content:""}.fa-odnoklassniki:before{content:""}.fa-odnoklassniki-square:before{content:""}.fa-get-pocket:before{content:""}.fa-wikipedia-w:before{content:""}.fa-safari:before{content:""}.fa-chrome:before{content:""}.fa-firefox:before{content:""}.fa-opera:before{content:""}.fa-internet-explorer:before{content:""}.fa-tv:before,.fa-television:before{content:""}.fa-contao:before{content:""}.fa-500px:before{content:""}.fa-amazon:before{content:""}.fa-calendar-plus-o:before{content:""}.fa-calendar-minus-o:before{content:""}.fa-calendar-times-o:before{content:""}.fa-calendar-check-o:before{content:""}.fa-industry:before{content:""}.fa-map-pin:before{content:""}.fa-map-signs:before{content:""}.fa-map-o:before{content:""}.fa-map:before{content:""}.fa-commenting:before{content:""}.fa-commenting-o:before{content:""}.fa-houzz:before{content:""}.fa-vimeo:before{content:""}.fa-black-tie:before{content:""}.fa-fonticons:before{content:""}.fa-reddit-alien:before{content:""}.fa-edge:before{content:""}.fa-credit-card-alt:before{content:""}.fa-codiepie:before{content:""}.fa-modx:before{content:""}.fa-fort-awesome:before{content:""}.fa-usb:before{content:""}.fa-product-hunt:before{content:""}.fa-mixcloud:before{content:""}.fa-scribd:before{content:""}.fa-pause-circle:before{content:""}.fa-pause-circle-o:before{content:""}.fa-stop-circle:before{content:""}.fa-stop-circle-o:before{content:""}.fa-shopping-bag:before{content:""}.fa-shopping-basket:before{content:""}.fa-hashtag:before{content:""}.fa-bluetooth:before{content:""}.fa-bluetooth-b:before{content:""}.fa-percent:before{content:""}.fa-gitlab:before,.icon-gitlab:before{content:""}.fa-wpbeginner:before{content:""}.fa-wpforms:before{content:""}.fa-envira:before{content:""}.fa-universal-access:before{content:""}.fa-wheelchair-alt:before{content:""}.fa-question-circle-o:before{content:""}.fa-blind:before{content:""}.fa-audio-description:before{content:""}.fa-volume-control-phone:before{content:""}.fa-braille:before{content:""}.fa-assistive-listening-systems:before{content:""}.fa-asl-interpreting:before,.fa-american-sign-language-interpreting:before{content:""}.fa-deafness:before,.fa-hard-of-hearing:before,.fa-deaf:before{content:""}.fa-glide:before{content:""}.fa-glide-g:before{content:""}.fa-signing:before,.fa-sign-language:before{content:""}.fa-low-vision:before{content:""}.fa-viadeo:before{content:""}.fa-viadeo-square:before{content:""}.fa-snapchat:before{content:""}.fa-snapchat-ghost:before{content:""}.fa-snapchat-square:before{content:""}.fa-pied-piper:before{content:""}.fa-first-order:before{content:""}.fa-yoast:before{content:""}.fa-themeisle:before{content:""}.fa-google-plus-circle:before,.fa-google-plus-official:before{content:""}.fa-fa:before,.fa-font-awesome:before{content:""}.fa-handshake-o:before{content:""}.fa-envelope-open:before{content:""}.fa-envelope-open-o:before{content:""}.fa-linode:before{content:""}.fa-address-book:before{content:""}.fa-address-book-o:before{content:""}.fa-vcard:before,.fa-address-card:before{content:""}.fa-vcard-o:before,.fa-address-card-o:before{content:""}.fa-user-circle:before{content:""}.fa-user-circle-o:before{content:""}.fa-user-o:before{content:""}.fa-id-badge:before{content:""}.fa-drivers-license:before,.fa-id-card:before{content:""}.fa-drivers-license-o:before,.fa-id-card-o:before{content:""}.fa-quora:before{content:""}.fa-free-code-camp:before{content:""}.fa-telegram:before{content:""}.fa-thermometer-4:before,.fa-thermometer:before,.fa-thermometer-full:before{content:""}.fa-thermometer-3:before,.fa-thermometer-three-quarters:before{content:""}.fa-thermometer-2:before,.fa-thermometer-half:before{content:""}.fa-thermometer-1:before,.fa-thermometer-quarter:before{content:""}.fa-thermometer-0:before,.fa-thermometer-empty:before{content:""}.fa-shower:before{content:""}.fa-bathtub:before,.fa-s15:before,.fa-bath:before{content:""}.fa-podcast:before{content:""}.fa-window-maximize:before{content:""}.fa-window-minimize:before{content:""}.fa-window-restore:before{content:""}.fa-times-rectangle:before,.fa-window-close:before{content:""}.fa-times-rectangle-o:before,.fa-window-close-o:before{content:""}.fa-bandcamp:before{content:""}.fa-grav:before{content:""}.fa-etsy:before{content:""}.fa-imdb:before{content:""}.fa-ravelry:before{content:""}.fa-eercast:before{content:""}.fa-microchip:before{content:""}.fa-snowflake-o:before{content:""}.fa-superpowers:before{content:""}.fa-wpexplorer:before{content:""}.fa-meetup:before{content:""}.sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0, 0, 0, 0);border:0}.sr-only-focusable:active,.sr-only-focusable:focus{position:static;width:auto;height:auto;margin:0;overflow:visible;clip:auto}.fa,.wy-menu-vertical li span.toctree-expand,.wy-menu-vertical li.on a span.toctree-expand,.wy-menu-vertical li.current>a span.toctree-expand,.rst-content .admonition-title,.rst-content h1 .headerlink,.rst-content h2 .headerlink,.rst-content h3 .headerlink,.rst-content h4 .headerlink,.rst-content h5 .headerlink,.rst-content h6 .headerlink,.rst-content dl dt .headerlink,.rst-content p.caption .headerlink,.rst-content table>caption .headerlink,.rst-content tt.download span:first-child,.rst-content code.download span:first-child,.icon,.wy-dropdown .caret,.wy-inline-validate.wy-inline-validate-success .wy-input-context,.wy-inline-validate.wy-inline-validate-danger .wy-input-context,.wy-inline-validate.wy-inline-validate-warning .wy-input-context,.wy-inline-validate.wy-inline-validate-info .wy-input-context{font-family:inherit}.fa:before,.wy-menu-vertical li span.toctree-expand:before,.wy-menu-vertical li.on a span.toctree-expand:before,.wy-menu-vertical li.current>a span.toctree-expand:before,.rst-content .admonition-title:before,.rst-content h1 .headerlink:before,.rst-content h2 .headerlink:before,.rst-content h3 .headerlink:before,.rst-content h4 .headerlink:before,.rst-content h5 .headerlink:before,.rst-content h6 .headerlink:before,.rst-content dl dt .headerlink:before,.rst-content p.caption .headerlink:before,.rst-content table>caption .headerlink:before,.rst-content tt.download span:first-child:before,.rst-content code.download span:first-child:before,.icon:before,.wy-dropdown .caret:before,.wy-inline-validate.wy-inline-validate-success .wy-input-context:before,.wy-inline-validate.wy-inline-validate-danger .wy-input-context:before,.wy-inline-validate.wy-inline-validate-warning .wy-input-context:before,.wy-inline-validate.wy-inline-validate-info .wy-input-context:before{font-family:"FontAwesome";display:inline-block;font-style:normal;font-weight:normal;line-height:1;text-decoration:inherit}a .fa,a .wy-menu-vertical li span.toctree-expand,.wy-menu-vertical li a span.toctree-expand,.wy-menu-vertical li.on a span.toctree-expand,.wy-menu-vertical li.current>a span.toctree-expand,a .rst-content .admonition-title,.rst-content a .admonition-title,a .rst-content h1 .headerlink,.rst-content h1 a .headerlink,a .rst-content h2 .headerlink,.rst-content h2 a .headerlink,a .rst-content h3 .headerlink,.rst-content h3 a .headerlink,a .rst-content h4 .headerlink,.rst-content h4 a .headerlink,a .rst-content h5 .headerlink,.rst-content h5 a .headerlink,a .rst-content h6 .headerlink,.rst-content h6 a .headerlink,a .rst-content dl dt .headerlink,.rst-content dl dt a .headerlink,a .rst-content p.caption .headerlink,.rst-content p.caption a .headerlink,a .rst-content table>caption .headerlink,.rst-content table>caption a .headerlink,a .rst-content tt.download span:first-child,.rst-content tt.download a span:first-child,a .rst-content code.download span:first-child,.rst-content code.download a span:first-child,a .icon{display:inline-block;text-decoration:inherit}.btn .fa,.btn .wy-menu-vertical li span.toctree-expand,.wy-menu-vertical li .btn span.toctree-expand,.btn .wy-menu-vertical li.on a span.toctree-expand,.wy-menu-vertical li.on a .btn span.toctree-expand,.btn .wy-menu-vertical li.current>a span.toctree-expand,.wy-menu-vertical li.current>a .btn span.toctree-expand,.btn .rst-content .admonition-title,.rst-content .btn .admonition-title,.btn .rst-content h1 .headerlink,.rst-content h1 .btn .headerlink,.btn .rst-content h2 .headerlink,.rst-content h2 .btn .headerlink,.btn .rst-content h3 .headerlink,.rst-content h3 .btn .headerlink,.btn .rst-content h4 .headerlink,.rst-content h4 .btn .headerlink,.btn .rst-content h5 .headerlink,.rst-content h5 .btn .headerlink,.btn .rst-content h6 .headerlink,.rst-content h6 .btn .headerlink,.btn .rst-content dl dt .headerlink,.rst-content dl dt .btn .headerlink,.btn .rst-content p.caption .headerlink,.rst-content p.caption .btn .headerlink,.btn .rst-content table>caption .headerlink,.rst-content table>caption .btn .headerlink,.btn .rst-content tt.download span:first-child,.rst-content tt.download .btn span:first-child,.btn .rst-content code.download span:first-child,.rst-content code.download .btn span:first-child,.btn .icon,.nav .fa,.nav .wy-menu-vertical li span.toctree-expand,.wy-menu-vertical li .nav span.toctree-expand,.nav .wy-menu-vertical li.on a span.toctree-expand,.wy-menu-vertical li.on a .nav span.toctree-expand,.nav .wy-menu-vertical li.current>a span.toctree-expand,.wy-menu-vertical li.current>a .nav span.toctree-expand,.nav .rst-content .admonition-title,.rst-content .nav .admonition-title,.nav .rst-content h1 .headerlink,.rst-content h1 .nav .headerlink,.nav .rst-content h2 .headerlink,.rst-content h2 .nav .headerlink,.nav .rst-content h3 .headerlink,.rst-content h3 .nav .headerlink,.nav .rst-content h4 .headerlink,.rst-content h4 .nav .headerlink,.nav .rst-content h5 .headerlink,.rst-content h5 .nav .headerlink,.nav .rst-content h6 .headerlink,.rst-content h6 .nav .headerlink,.nav .rst-content dl dt .headerlink,.rst-content dl dt .nav .headerlink,.nav .rst-content p.caption .headerlink,.rst-content p.caption .nav .headerlink,.nav .rst-content table>caption .headerlink,.rst-content table>caption .nav .headerlink,.nav .rst-content tt.download span:first-child,.rst-content tt.download .nav span:first-child,.nav .rst-content code.download span:first-child,.rst-content code.download .nav span:first-child,.nav .icon{display:inline}.btn .fa.fa-large,.btn .wy-menu-vertical li span.fa-large.toctree-expand,.wy-menu-vertical li .btn span.fa-large.toctree-expand,.btn .rst-content .fa-large.admonition-title,.rst-content .btn .fa-large.admonition-title,.btn .rst-content h1 .fa-large.headerlink,.rst-content h1 .btn .fa-large.headerlink,.btn .rst-content h2 .fa-large.headerlink,.rst-content h2 .btn .fa-large.headerlink,.btn .rst-content h3 .fa-large.headerlink,.rst-content h3 .btn .fa-large.headerlink,.btn .rst-content h4 .fa-large.headerlink,.rst-content h4 .btn .fa-large.headerlink,.btn .rst-content h5 .fa-large.headerlink,.rst-content h5 .btn .fa-large.headerlink,.btn .rst-content h6 .fa-large.headerlink,.rst-content h6 .btn .fa-large.headerlink,.btn .rst-content dl dt .fa-large.headerlink,.rst-content dl dt .btn .fa-large.headerlink,.btn .rst-content p.caption .fa-large.headerlink,.rst-content p.caption .btn .fa-large.headerlink,.btn .rst-content table>caption .fa-large.headerlink,.rst-content table>caption .btn .fa-large.headerlink,.btn .rst-content tt.download span.fa-large:first-child,.rst-content tt.download .btn span.fa-large:first-child,.btn .rst-content code.download span.fa-large:first-child,.rst-content code.download .btn span.fa-large:first-child,.btn .fa-large.icon,.nav .fa.fa-large,.nav .wy-menu-vertical li span.fa-large.toctree-expand,.wy-menu-vertical li .nav span.fa-large.toctree-expand,.nav .rst-content .fa-large.admonition-title,.rst-content .nav .fa-large.admonition-title,.nav .rst-content h1 .fa-large.headerlink,.rst-content h1 .nav .fa-large.headerlink,.nav .rst-content h2 .fa-large.headerlink,.rst-content h2 .nav .fa-large.headerlink,.nav .rst-content h3 .fa-large.headerlink,.rst-content h3 .nav .fa-large.headerlink,.nav .rst-content h4 .fa-large.headerlink,.rst-content h4 .nav .fa-large.headerlink,.nav .rst-content h5 .fa-large.headerlink,.rst-content h5 .nav .fa-large.headerlink,.nav .rst-content h6 .fa-large.headerlink,.rst-content h6 .nav .fa-large.headerlink,.nav .rst-content dl dt .fa-large.headerlink,.rst-content dl dt .nav .fa-large.headerlink,.nav .rst-content p.caption .fa-large.headerlink,.rst-content p.caption .nav .fa-large.headerlink,.nav .rst-content table>caption .fa-large.headerlink,.rst-content table>caption .nav .fa-large.headerlink,.nav .rst-content tt.download span.fa-large:first-child,.rst-content tt.download .nav span.fa-large:first-child,.nav .rst-content code.download span.fa-large:first-child,.rst-content code.download .nav span.fa-large:first-child,.nav .fa-large.icon{line-height:.9em}.btn .fa.fa-spin,.btn .wy-menu-vertical li span.fa-spin.toctree-expand,.wy-menu-vertical li .btn span.fa-spin.toctree-expand,.btn .rst-content .fa-spin.admonition-title,.rst-content .btn .fa-spin.admonition-title,.btn .rst-content h1 .fa-spin.headerlink,.rst-content h1 .btn .fa-spin.headerlink,.btn .rst-content h2 .fa-spin.headerlink,.rst-content h2 .btn .fa-spin.headerlink,.btn .rst-content h3 .fa-spin.headerlink,.rst-content h3 .btn .fa-spin.headerlink,.btn .rst-content h4 .fa-spin.headerlink,.rst-content h4 .btn .fa-spin.headerlink,.btn .rst-content h5 .fa-spin.headerlink,.rst-content h5 .btn .fa-spin.headerlink,.btn .rst-content h6 .fa-spin.headerlink,.rst-content h6 .btn .fa-spin.headerlink,.btn .rst-content dl dt .fa-spin.headerlink,.rst-content dl dt .btn .fa-spin.headerlink,.btn .rst-content p.caption .fa-spin.headerlink,.rst-content p.caption .btn .fa-spin.headerlink,.btn .rst-content table>caption .fa-spin.headerlink,.rst-content table>caption .btn .fa-spin.headerlink,.btn .rst-content tt.download span.fa-spin:first-child,.rst-content tt.download .btn span.fa-spin:first-child,.btn .rst-content code.download span.fa-spin:first-child,.rst-content code.download .btn span.fa-spin:first-child,.btn .fa-spin.icon,.nav .fa.fa-spin,.nav .wy-menu-vertical li span.fa-spin.toctree-expand,.wy-menu-vertical li .nav span.fa-spin.toctree-expand,.nav .rst-content .fa-spin.admonition-title,.rst-content .nav .fa-spin.admonition-title,.nav .rst-content h1 .fa-spin.headerlink,.rst-content h1 .nav .fa-spin.headerlink,.nav .rst-content h2 .fa-spin.headerlink,.rst-content h2 .nav .fa-spin.headerlink,.nav .rst-content h3 .fa-spin.headerlink,.rst-content h3 .nav .fa-spin.headerlink,.nav .rst-content h4 .fa-spin.headerlink,.rst-content h4 .nav .fa-spin.headerlink,.nav .rst-content h5 .fa-spin.headerlink,.rst-content h5 .nav .fa-spin.headerlink,.nav .rst-content h6 .fa-spin.headerlink,.rst-content h6 .nav .fa-spin.headerlink,.nav .rst-content dl dt .fa-spin.headerlink,.rst-content dl dt .nav .fa-spin.headerlink,.nav .rst-content p.caption .fa-spin.headerlink,.rst-content p.caption .nav .fa-spin.headerlink,.nav .rst-content table>caption .fa-spin.headerlink,.rst-content table>caption .nav .fa-spin.headerlink,.nav .rst-content tt.download span.fa-spin:first-child,.rst-content tt.download .nav span.fa-spin:first-child,.nav .rst-content code.download span.fa-spin:first-child,.rst-content code.download .nav span.fa-spin:first-child,.nav .fa-spin.icon{display:inline-block}.btn.fa:before,.wy-menu-vertical li span.btn.toctree-expand:before,.rst-content .btn.admonition-title:before,.rst-content h1 .btn.headerlink:before,.rst-content h2 .btn.headerlink:before,.rst-content h3 .btn.headerlink:before,.rst-content h4 .btn.headerlink:before,.rst-content h5 .btn.headerlink:before,.rst-content h6 .btn.headerlink:before,.rst-content dl dt .btn.headerlink:before,.rst-content p.caption .btn.headerlink:before,.rst-content table>caption .btn.headerlink:before,.rst-content tt.download span.btn:first-child:before,.rst-content code.download span.btn:first-child:before,.btn.icon:before{opacity:.5;-webkit-transition:opacity .05s ease-in;-moz-transition:opacity .05s ease-in;transition:opacity .05s ease-in}.btn.fa:hover:before,.wy-menu-vertical li span.btn.toctree-expand:hover:before,.rst-content .btn.admonition-title:hover:before,.rst-content h1 .btn.headerlink:hover:before,.rst-content h2 .btn.headerlink:hover:before,.rst-content h3 .btn.headerlink:hover:before,.rst-content h4 .btn.headerlink:hover:before,.rst-content h5 .btn.headerlink:hover:before,.rst-content h6 .btn.headerlink:hover:before,.rst-content dl dt .btn.headerlink:hover:before,.rst-content p.caption .btn.headerlink:hover:before,.rst-content table>caption .btn.headerlink:hover:before,.rst-content tt.download span.btn:first-child:hover:before,.rst-content code.download span.btn:first-child:hover:before,.btn.icon:hover:before{opacity:1}.btn-mini .fa:before,.btn-mini .wy-menu-vertical li span.toctree-expand:before,.wy-menu-vertical li .btn-mini span.toctree-expand:before,.btn-mini .rst-content .admonition-title:before,.rst-content .btn-mini .admonition-title:before,.btn-mini .rst-content h1 .headerlink:before,.rst-content h1 .btn-mini .headerlink:before,.btn-mini .rst-content h2 .headerlink:before,.rst-content h2 .btn-mini .headerlink:before,.btn-mini .rst-content h3 .headerlink:before,.rst-content h3 .btn-mini .headerlink:before,.btn-mini .rst-content h4 .headerlink:before,.rst-content h4 .btn-mini .headerlink:before,.btn-mini .rst-content h5 .headerlink:before,.rst-content h5 .btn-mini .headerlink:before,.btn-mini .rst-content h6 .headerlink:before,.rst-content h6 .btn-mini .headerlink:before,.btn-mini .rst-content dl dt .headerlink:before,.rst-content dl dt .btn-mini .headerlink:before,.btn-mini .rst-content p.caption .headerlink:before,.rst-content p.caption .btn-mini .headerlink:before,.btn-mini .rst-content table>caption .headerlink:before,.rst-content table>caption .btn-mini .headerlink:before,.btn-mini .rst-content tt.download span:first-child:before,.rst-content tt.download .btn-mini span:first-child:before,.btn-mini .rst-content code.download span:first-child:before,.rst-content code.download .btn-mini span:first-child:before,.btn-mini .icon:before{font-size:14px;vertical-align:-15%}.wy-alert,.rst-content .note,.rst-content .attention,.rst-content .caution,.rst-content .danger,.rst-content .error,.rst-content .hint,.rst-content .important,.rst-content .tip,.rst-content .warning,.rst-content .seealso,.rst-content .admonition-todo,.rst-content .admonition{padding:12px;line-height:24px;margin-bottom:24px;background:#e7f2fa}.wy-alert-title,.rst-content .admonition-title{color:#fff;font-weight:bold;display:block;color:#fff;background:#6ab0de;margin:-12px;padding:6px 12px;margin-bottom:12px}.wy-alert.wy-alert-danger,.rst-content .wy-alert-danger.note,.rst-content .wy-alert-danger.attention,.rst-content .wy-alert-danger.caution,.rst-content .danger,.rst-content .error,.rst-content .wy-alert-danger.hint,.rst-content .wy-alert-danger.important,.rst-content .wy-alert-danger.tip,.rst-content .wy-alert-danger.warning,.rst-content .wy-alert-danger.seealso,.rst-content .wy-alert-danger.admonition-todo,.rst-content .wy-alert-danger.admonition{background:#fdf3f2}.wy-alert.wy-alert-danger .wy-alert-title,.rst-content .wy-alert-danger.note .wy-alert-title,.rst-content .wy-alert-danger.attention .wy-alert-title,.rst-content .wy-alert-danger.caution .wy-alert-title,.rst-content .danger .wy-alert-title,.rst-content .error .wy-alert-title,.rst-content .wy-alert-danger.hint .wy-alert-title,.rst-content .wy-alert-danger.important .wy-alert-title,.rst-content .wy-alert-danger.tip .wy-alert-title,.rst-content .wy-alert-danger.warning .wy-alert-title,.rst-content .wy-alert-danger.seealso .wy-alert-title,.rst-content .wy-alert-danger.admonition-todo .wy-alert-title,.rst-content .wy-alert-danger.admonition .wy-alert-title,.wy-alert.wy-alert-danger .rst-content .admonition-title,.rst-content .wy-alert.wy-alert-danger .admonition-title,.rst-content .wy-alert-danger.note .admonition-title,.rst-content .wy-alert-danger.attention .admonition-title,.rst-content .wy-alert-danger.caution .admonition-title,.rst-content .danger .admonition-title,.rst-content .error .admonition-title,.rst-content .wy-alert-danger.hint .admonition-title,.rst-content .wy-alert-danger.important .admonition-title,.rst-content .wy-alert-danger.tip .admonition-title,.rst-content .wy-alert-danger.warning .admonition-title,.rst-content .wy-alert-danger.seealso .admonition-title,.rst-content .wy-alert-danger.admonition-todo .admonition-title,.rst-content .wy-alert-danger.admonition .admonition-title{background:#f29f97}.wy-alert.wy-alert-warning,.rst-content .wy-alert-warning.note,.rst-content .attention,.rst-content .caution,.rst-content .wy-alert-warning.danger,.rst-content .wy-alert-warning.error,.rst-content .wy-alert-warning.hint,.rst-content .wy-alert-warning.important,.rst-content .wy-alert-warning.tip,.rst-content .warning,.rst-content .wy-alert-warning.seealso,.rst-content .admonition-todo,.rst-content .wy-alert-warning.admonition{background:#ffedcc}.wy-alert.wy-alert-warning .wy-alert-title,.rst-content .wy-alert-warning.note .wy-alert-title,.rst-content .attention .wy-alert-title,.rst-content .caution .wy-alert-title,.rst-content .wy-alert-warning.danger .wy-alert-title,.rst-content .wy-alert-warning.error .wy-alert-title,.rst-content .wy-alert-warning.hint .wy-alert-title,.rst-content .wy-alert-warning.important .wy-alert-title,.rst-content .wy-alert-warning.tip .wy-alert-title,.rst-content .warning .wy-alert-title,.rst-content .wy-alert-warning.seealso .wy-alert-title,.rst-content .admonition-todo .wy-alert-title,.rst-content .wy-alert-warning.admonition .wy-alert-title,.wy-alert.wy-alert-warning .rst-content .admonition-title,.rst-content .wy-alert.wy-alert-warning .admonition-title,.rst-content .wy-alert-warning.note .admonition-title,.rst-content .attention .admonition-title,.rst-content .caution .admonition-title,.rst-content .wy-alert-warning.danger .admonition-title,.rst-content .wy-alert-warning.error .admonition-title,.rst-content .wy-alert-warning.hint .admonition-title,.rst-content .wy-alert-warning.important .admonition-title,.rst-content .wy-alert-warning.tip .admonition-title,.rst-content .warning .admonition-title,.rst-content .wy-alert-warning.seealso .admonition-title,.rst-content .admonition-todo .admonition-title,.rst-content .wy-alert-warning.admonition .admonition-title{background:#f0b37e}.wy-alert.wy-alert-info,.rst-content .note,.rst-content .wy-alert-info.attention,.rst-content .wy-alert-info.caution,.rst-content .wy-alert-info.danger,.rst-content .wy-alert-info.error,.rst-content .wy-alert-info.hint,.rst-content .wy-alert-info.important,.rst-content .wy-alert-info.tip,.rst-content .wy-alert-info.warning,.rst-content .seealso,.rst-content .wy-alert-info.admonition-todo,.rst-content .wy-alert-info.admonition{background:#e7f2fa}.wy-alert.wy-alert-info .wy-alert-title,.rst-content .note .wy-alert-title,.rst-content .wy-alert-info.attention .wy-alert-title,.rst-content .wy-alert-info.caution .wy-alert-title,.rst-content .wy-alert-info.danger .wy-alert-title,.rst-content .wy-alert-info.error .wy-alert-title,.rst-content .wy-alert-info.hint .wy-alert-title,.rst-content .wy-alert-info.important .wy-alert-title,.rst-content .wy-alert-info.tip .wy-alert-title,.rst-content .wy-alert-info.warning .wy-alert-title,.rst-content .seealso .wy-alert-title,.rst-content .wy-alert-info.admonition-todo .wy-alert-title,.rst-content .wy-alert-info.admonition .wy-alert-title,.wy-alert.wy-alert-info .rst-content .admonition-title,.rst-content .wy-alert.wy-alert-info .admonition-title,.rst-content .note .admonition-title,.rst-content .wy-alert-info.attention .admonition-title,.rst-content .wy-alert-info.caution .admonition-title,.rst-content .wy-alert-info.danger .admonition-title,.rst-content .wy-alert-info.error .admonition-title,.rst-content .wy-alert-info.hint .admonition-title,.rst-content .wy-alert-info.important .admonition-title,.rst-content .wy-alert-info.tip .admonition-title,.rst-content .wy-alert-info.warning .admonition-title,.rst-content .seealso .admonition-title,.rst-content .wy-alert-info.admonition-todo .admonition-title,.rst-content .wy-alert-info.admonition .admonition-title{background:#6ab0de}.wy-alert.wy-alert-success,.rst-content .wy-alert-success.note,.rst-content .wy-alert-success.attention,.rst-content .wy-alert-success.caution,.rst-content .wy-alert-success.danger,.rst-content .wy-alert-success.error,.rst-content .hint,.rst-content .important,.rst-content .tip,.rst-content .wy-alert-success.warning,.rst-content .wy-alert-success.seealso,.rst-content .wy-alert-success.admonition-todo,.rst-content .wy-alert-success.admonition{background:#dbfaf4}.wy-alert.wy-alert-success .wy-alert-title,.rst-content .wy-alert-success.note .wy-alert-title,.rst-content .wy-alert-success.attention .wy-alert-title,.rst-content .wy-alert-success.caution .wy-alert-title,.rst-content .wy-alert-success.danger .wy-alert-title,.rst-content .wy-alert-success.error .wy-alert-title,.rst-content .hint .wy-alert-title,.rst-content .important .wy-alert-title,.rst-content .tip .wy-alert-title,.rst-content .wy-alert-success.warning .wy-alert-title,.rst-content .wy-alert-success.seealso .wy-alert-title,.rst-content .wy-alert-success.admonition-todo .wy-alert-title,.rst-content .wy-alert-success.admonition .wy-alert-title,.wy-alert.wy-alert-success .rst-content .admonition-title,.rst-content .wy-alert.wy-alert-success .admonition-title,.rst-content .wy-alert-success.note .admonition-title,.rst-content .wy-alert-success.attention .admonition-title,.rst-content .wy-alert-success.caution .admonition-title,.rst-content .wy-alert-success.danger .admonition-title,.rst-content .wy-alert-success.error .admonition-title,.rst-content .hint .admonition-title,.rst-content .important .admonition-title,.rst-content .tip .admonition-title,.rst-content .wy-alert-success.warning .admonition-title,.rst-content .wy-alert-success.seealso .admonition-title,.rst-content .wy-alert-success.admonition-todo .admonition-title,.rst-content .wy-alert-success.admonition .admonition-title{background:#1abc9c}.wy-alert.wy-alert-neutral,.rst-content .wy-alert-neutral.note,.rst-content .wy-alert-neutral.attention,.rst-content .wy-alert-neutral.caution,.rst-content .wy-alert-neutral.danger,.rst-content .wy-alert-neutral.error,.rst-content .wy-alert-neutral.hint,.rst-content .wy-alert-neutral.important,.rst-content .wy-alert-neutral.tip,.rst-content .wy-alert-neutral.warning,.rst-content .wy-alert-neutral.seealso,.rst-content .wy-alert-neutral.admonition-todo,.rst-content .wy-alert-neutral.admonition{background:#f3f6f6}.wy-alert.wy-alert-neutral .wy-alert-title,.rst-content .wy-alert-neutral.note .wy-alert-title,.rst-content .wy-alert-neutral.attention .wy-alert-title,.rst-content .wy-alert-neutral.caution .wy-alert-title,.rst-content .wy-alert-neutral.danger .wy-alert-title,.rst-content .wy-alert-neutral.error .wy-alert-title,.rst-content .wy-alert-neutral.hint .wy-alert-title,.rst-content .wy-alert-neutral.important .wy-alert-title,.rst-content .wy-alert-neutral.tip .wy-alert-title,.rst-content .wy-alert-neutral.warning .wy-alert-title,.rst-content .wy-alert-neutral.seealso .wy-alert-title,.rst-content .wy-alert-neutral.admonition-todo .wy-alert-title,.rst-content .wy-alert-neutral.admonition .wy-alert-title,.wy-alert.wy-alert-neutral .rst-content .admonition-title,.rst-content .wy-alert.wy-alert-neutral .admonition-title,.rst-content .wy-alert-neutral.note .admonition-title,.rst-content .wy-alert-neutral.attention .admonition-title,.rst-content .wy-alert-neutral.caution .admonition-title,.rst-content .wy-alert-neutral.danger .admonition-title,.rst-content .wy-alert-neutral.error .admonition-title,.rst-content .wy-alert-neutral.hint .admonition-title,.rst-content .wy-alert-neutral.important .admonition-title,.rst-content .wy-alert-neutral.tip .admonition-title,.rst-content .wy-alert-neutral.warning .admonition-title,.rst-content .wy-alert-neutral.seealso .admonition-title,.rst-content .wy-alert-neutral.admonition-todo .admonition-title,.rst-content .wy-alert-neutral.admonition .admonition-title{color:#404040;background:#e1e4e5}.wy-alert.wy-alert-neutral a,.rst-content .wy-alert-neutral.note a,.rst-content .wy-alert-neutral.attention a,.rst-content .wy-alert-neutral.caution a,.rst-content .wy-alert-neutral.danger a,.rst-content .wy-alert-neutral.error a,.rst-content .wy-alert-neutral.hint a,.rst-content .wy-alert-neutral.important a,.rst-content .wy-alert-neutral.tip a,.rst-content .wy-alert-neutral.warning a,.rst-content .wy-alert-neutral.seealso a,.rst-content .wy-alert-neutral.admonition-todo a,.rst-content .wy-alert-neutral.admonition a{color:#2980B9}.wy-alert p:last-child,.rst-content .note p:last-child,.rst-content .attention p:last-child,.rst-content .caution p:last-child,.rst-content .danger p:last-child,.rst-content .error p:last-child,.rst-content .hint p:last-child,.rst-content .important p:last-child,.rst-content .tip p:last-child,.rst-content .warning p:last-child,.rst-content .seealso p:last-child,.rst-content .admonition-todo p:last-child,.rst-content .admonition p:last-child{margin-bottom:0}.wy-tray-container{position:fixed;bottom:0px;left:0;z-index:600}.wy-tray-container li{display:block;width:300px;background:transparent;color:#fff;text-align:center;box-shadow:0 5px 5px 0 rgba(0,0,0,0.1);padding:0 24px;min-width:20%;opacity:0;height:0;line-height:56px;overflow:hidden;-webkit-transition:all .3s ease-in;-moz-transition:all .3s ease-in;transition:all .3s ease-in}.wy-tray-container li.wy-tray-item-success{background:#27AE60}.wy-tray-container li.wy-tray-item-info{background:#2980B9}.wy-tray-container li.wy-tray-item-warning{background:#E67E22}.wy-tray-container li.wy-tray-item-danger{background:#E74C3C}.wy-tray-container li.on{opacity:1;height:56px}@media screen and (max-width: 768px){.wy-tray-container{bottom:auto;top:0;width:100%}.wy-tray-container li{width:100%}}button{font-size:100%;margin:0;vertical-align:baseline;*vertical-align:middle;cursor:pointer;line-height:normal;-webkit-appearance:button;*overflow:visible}button::-moz-focus-inner,input::-moz-focus-inner{border:0;padding:0}button[disabled]{cursor:default}.btn{display:inline-block;border-radius:2px;line-height:normal;white-space:nowrap;text-align:center;cursor:pointer;font-size:100%;padding:6px 12px 8px 12px;color:#fff;border:1px solid rgba(0,0,0,0.1);background-color:#27AE60;text-decoration:none;font-weight:normal;font-family:"Lato","proxima-nova","Helvetica Neue",Arial,sans-serif;box-shadow:0px 1px 2px -1px rgba(255,255,255,0.5) inset,0px -2px 0px 0px rgba(0,0,0,0.1) inset;outline-none:false;vertical-align:middle;*display:inline;zoom:1;-webkit-user-drag:none;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;-webkit-transition:all .1s linear;-moz-transition:all .1s linear;transition:all .1s linear}.btn-hover{background:#2e8ece;color:#fff}.btn:hover{background:#2cc36b;color:#fff}.btn:focus{background:#2cc36b;outline:0}.btn:active{box-shadow:0px -1px 0px 0px rgba(0,0,0,0.05) inset,0px 2px 0px 0px rgba(0,0,0,0.1) inset;padding:8px 12px 6px 12px}.btn:visited{color:#fff}.btn:disabled{background-image:none;filter:progid:DXImageTransform.Microsoft.gradient(enabled = false);filter:alpha(opacity=40);opacity:.4;cursor:not-allowed;box-shadow:none}.btn-disabled{background-image:none;filter:progid:DXImageTransform.Microsoft.gradient(enabled = false);filter:alpha(opacity=40);opacity:.4;cursor:not-allowed;box-shadow:none}.btn-disabled:hover,.btn-disabled:focus,.btn-disabled:active{background-image:none;filter:progid:DXImageTransform.Microsoft.gradient(enabled = false);filter:alpha(opacity=40);opacity:.4;cursor:not-allowed;box-shadow:none}.btn::-moz-focus-inner{padding:0;border:0}.btn-small{font-size:80%}.btn-info{background-color:#2980B9 !important}.btn-info:hover{background-color:#2e8ece !important}.btn-neutral{background-color:#f3f6f6 !important;color:#404040 !important}.btn-neutral:hover{background-color:#e5ebeb !important;color:#404040}.btn-neutral:visited{color:#404040 !important}.btn-success{background-color:#27AE60 !important}.btn-success:hover{background-color:#295 !important}.btn-danger{background-color:#E74C3C !important}.btn-danger:hover{background-color:#ea6153 !important}.btn-warning{background-color:#E67E22 !important}.btn-warning:hover{background-color:#e98b39 !important}.btn-invert{background-color:#222}.btn-invert:hover{background-color:#2f2f2f !important}.btn-link{background-color:transparent !important;color:#2980B9;box-shadow:none;border-color:transparent !important}.btn-link:hover{background-color:transparent !important;color:#409ad5 !important;box-shadow:none}.btn-link:active{background-color:transparent !important;color:#409ad5 !important;box-shadow:none}.btn-link:visited{color:#9B59B6}.wy-btn-group .btn,.wy-control .btn{vertical-align:middle}.wy-btn-group{margin-bottom:24px;*zoom:1}.wy-btn-group:before,.wy-btn-group:after{display:table;content:""}.wy-btn-group:after{clear:both}.wy-dropdown{position:relative;display:inline-block}.wy-dropdown-active .wy-dropdown-menu{display:block}.wy-dropdown-menu{position:absolute;left:0;display:none;float:left;top:100%;min-width:100%;background:#fcfcfc;z-index:100;border:solid 1px #cfd7dd;box-shadow:0 2px 2px 0 rgba(0,0,0,0.1);padding:12px}.wy-dropdown-menu>dd>a{display:block;clear:both;color:#404040;white-space:nowrap;font-size:90%;padding:0 12px;cursor:pointer}.wy-dropdown-menu>dd>a:hover{background:#2980B9;color:#fff}.wy-dropdown-menu>dd.divider{border-top:solid 1px #cfd7dd;margin:6px 0}.wy-dropdown-menu>dd.search{padding-bottom:12px}.wy-dropdown-menu>dd.search input[type="search"]{width:100%}.wy-dropdown-menu>dd.call-to-action{background:#e3e3e3;text-transform:uppercase;font-weight:500;font-size:80%}.wy-dropdown-menu>dd.call-to-action:hover{background:#e3e3e3}.wy-dropdown-menu>dd.call-to-action .btn{color:#fff}.wy-dropdown.wy-dropdown-up .wy-dropdown-menu{bottom:100%;top:auto;left:auto;right:0}.wy-dropdown.wy-dropdown-bubble .wy-dropdown-menu{background:#fcfcfc;margin-top:2px}.wy-dropdown.wy-dropdown-bubble .wy-dropdown-menu a{padding:6px 12px}.wy-dropdown.wy-dropdown-bubble .wy-dropdown-menu a:hover{background:#2980B9;color:#fff}.wy-dropdown.wy-dropdown-left .wy-dropdown-menu{right:0;left:auto;text-align:right}.wy-dropdown-arrow:before{content:" ";border-bottom:5px solid #f5f5f5;border-left:5px solid transparent;border-right:5px solid transparent;position:absolute;display:block;top:-4px;left:50%;margin-left:-3px}.wy-dropdown-arrow.wy-dropdown-arrow-left:before{left:11px}.wy-form-stacked select{display:block}.wy-form-aligned input,.wy-form-aligned textarea,.wy-form-aligned select,.wy-form-aligned .wy-help-inline,.wy-form-aligned label{display:inline-block;*display:inline;*zoom:1;vertical-align:middle}.wy-form-aligned .wy-control-group>label{display:inline-block;vertical-align:middle;width:10em;margin:6px 12px 0 0;float:left}.wy-form-aligned .wy-control{float:left}.wy-form-aligned .wy-control label{display:block}.wy-form-aligned .wy-control select{margin-top:6px}fieldset{border:0;margin:0;padding:0}legend{display:block;width:100%;border:0;padding:0;white-space:normal;margin-bottom:24px;font-size:150%;*margin-left:-7px}label{display:block;margin:0 0 .3125em 0;color:#333;font-size:90%}input,select,textarea{font-size:100%;margin:0;vertical-align:baseline;*vertical-align:middle}.wy-control-group{margin-bottom:24px;*zoom:1;max-width:68em;margin-left:auto;margin-right:auto;*zoom:1}.wy-control-group:before,.wy-control-group:after{display:table;content:""}.wy-control-group:after{clear:both}.wy-control-group:before,.wy-control-group:after{display:table;content:""}.wy-control-group:after{clear:both}.wy-control-group.wy-control-group-required>label:after{content:" *";color:#E74C3C}.wy-control-group .wy-form-full,.wy-control-group .wy-form-halves,.wy-control-group .wy-form-thirds{padding-bottom:12px}.wy-control-group .wy-form-full select,.wy-control-group .wy-form-halves select,.wy-control-group .wy-form-thirds select{width:100%}.wy-control-group .wy-form-full input[type="text"],.wy-control-group .wy-form-full input[type="password"],.wy-control-group .wy-form-full input[type="email"],.wy-control-group .wy-form-full input[type="url"],.wy-control-group .wy-form-full input[type="date"],.wy-control-group .wy-form-full input[type="month"],.wy-control-group .wy-form-full input[type="time"],.wy-control-group .wy-form-full input[type="datetime"],.wy-control-group .wy-form-full input[type="datetime-local"],.wy-control-group .wy-form-full input[type="week"],.wy-control-group .wy-form-full input[type="number"],.wy-control-group .wy-form-full input[type="search"],.wy-control-group .wy-form-full input[type="tel"],.wy-control-group .wy-form-full input[type="color"],.wy-control-group .wy-form-halves input[type="text"],.wy-control-group .wy-form-halves input[type="password"],.wy-control-group .wy-form-halves input[type="email"],.wy-control-group .wy-form-halves input[type="url"],.wy-control-group .wy-form-halves input[type="date"],.wy-control-group .wy-form-halves input[type="month"],.wy-control-group .wy-form-halves input[type="time"],.wy-control-group .wy-form-halves input[type="datetime"],.wy-control-group .wy-form-halves input[type="datetime-local"],.wy-control-group .wy-form-halves input[type="week"],.wy-control-group .wy-form-halves input[type="number"],.wy-control-group .wy-form-halves input[type="search"],.wy-control-group .wy-form-halves input[type="tel"],.wy-control-group .wy-form-halves input[type="color"],.wy-control-group .wy-form-thirds input[type="text"],.wy-control-group .wy-form-thirds input[type="password"],.wy-control-group .wy-form-thirds input[type="email"],.wy-control-group .wy-form-thirds input[type="url"],.wy-control-group .wy-form-thirds input[type="date"],.wy-control-group .wy-form-thirds input[type="month"],.wy-control-group .wy-form-thirds input[type="time"],.wy-control-group .wy-form-thirds input[type="datetime"],.wy-control-group .wy-form-thirds input[type="datetime-local"],.wy-control-group .wy-form-thirds input[type="week"],.wy-control-group .wy-form-thirds input[type="number"],.wy-control-group .wy-form-thirds input[type="search"],.wy-control-group .wy-form-thirds input[type="tel"],.wy-control-group .wy-form-thirds input[type="color"]{width:100%}.wy-control-group .wy-form-full{float:left;display:block;margin-right:2.3576515979%;width:100%;margin-right:0}.wy-control-group .wy-form-full:last-child{margin-right:0}.wy-control-group .wy-form-halves{float:left;display:block;margin-right:2.3576515979%;width:48.821174201%}.wy-control-group .wy-form-halves:last-child{margin-right:0}.wy-control-group .wy-form-halves:nth-of-type(2n){margin-right:0}.wy-control-group .wy-form-halves:nth-of-type(2n+1){clear:left}.wy-control-group .wy-form-thirds{float:left;display:block;margin-right:2.3576515979%;width:31.7615656014%}.wy-control-group .wy-form-thirds:last-child{margin-right:0}.wy-control-group .wy-form-thirds:nth-of-type(3n){margin-right:0}.wy-control-group .wy-form-thirds:nth-of-type(3n+1){clear:left}.wy-control-group.wy-control-group-no-input .wy-control{margin:6px 0 0 0;font-size:90%}.wy-control-no-input{display:inline-block;margin:6px 0 0 0;font-size:90%}.wy-control-group.fluid-input input[type="text"],.wy-control-group.fluid-input input[type="password"],.wy-control-group.fluid-input input[type="email"],.wy-control-group.fluid-input input[type="url"],.wy-control-group.fluid-input input[type="date"],.wy-control-group.fluid-input input[type="month"],.wy-control-group.fluid-input input[type="time"],.wy-control-group.fluid-input input[type="datetime"],.wy-control-group.fluid-input input[type="datetime-local"],.wy-control-group.fluid-input input[type="week"],.wy-control-group.fluid-input input[type="number"],.wy-control-group.fluid-input input[type="search"],.wy-control-group.fluid-input input[type="tel"],.wy-control-group.fluid-input input[type="color"]{width:100%}.wy-form-message-inline{display:inline-block;padding-left:.3em;color:#666;vertical-align:middle;font-size:90%}.wy-form-message{display:block;color:#999;font-size:70%;margin-top:.3125em;font-style:italic}.wy-form-message p{font-size:inherit;font-style:italic;margin-bottom:6px}.wy-form-message p:last-child{margin-bottom:0}input{line-height:normal}input[type="button"],input[type="reset"],input[type="submit"]{-webkit-appearance:button;cursor:pointer;font-family:"Lato","proxima-nova","Helvetica Neue",Arial,sans-serif;*overflow:visible}input[type="text"],input[type="password"],input[type="email"],input[type="url"],input[type="date"],input[type="month"],input[type="time"],input[type="datetime"],input[type="datetime-local"],input[type="week"],input[type="number"],input[type="search"],input[type="tel"],input[type="color"]{-webkit-appearance:none;padding:6px;display:inline-block;border:1px solid #ccc;font-size:80%;font-family:"Lato","proxima-nova","Helvetica Neue",Arial,sans-serif;box-shadow:inset 0 1px 3px #ddd;border-radius:0;-webkit-transition:border .3s linear;-moz-transition:border .3s linear;transition:border .3s linear}input[type="datetime-local"]{padding:.34375em .625em}input[disabled]{cursor:default}input[type="checkbox"],input[type="radio"]{-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box;padding:0;margin-right:.3125em;*height:13px;*width:13px}input[type="search"]{-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}input[type="search"]::-webkit-search-cancel-button,input[type="search"]::-webkit-search-decoration{-webkit-appearance:none}input[type="text"]:focus,input[type="password"]:focus,input[type="email"]:focus,input[type="url"]:focus,input[type="date"]:focus,input[type="month"]:focus,input[type="time"]:focus,input[type="datetime"]:focus,input[type="datetime-local"]:focus,input[type="week"]:focus,input[type="number"]:focus,input[type="search"]:focus,input[type="tel"]:focus,input[type="color"]:focus{outline:0;outline:thin dotted \9;border-color:#333}input.no-focus:focus{border-color:#ccc !important}input[type="file"]:focus,input[type="radio"]:focus,input[type="checkbox"]:focus{outline:thin dotted #333;outline:1px auto #129FEA}input[type="text"][disabled],input[type="password"][disabled],input[type="email"][disabled],input[type="url"][disabled],input[type="date"][disabled],input[type="month"][disabled],input[type="time"][disabled],input[type="datetime"][disabled],input[type="datetime-local"][disabled],input[type="week"][disabled],input[type="number"][disabled],input[type="search"][disabled],input[type="tel"][disabled],input[type="color"][disabled]{cursor:not-allowed;background-color:#fafafa}input:focus:invalid,textarea:focus:invalid,select:focus:invalid{color:#E74C3C;border:1px solid #E74C3C}input:focus:invalid:focus,textarea:focus:invalid:focus,select:focus:invalid:focus{border-color:#E74C3C}input[type="file"]:focus:invalid:focus,input[type="radio"]:focus:invalid:focus,input[type="checkbox"]:focus:invalid:focus{outline-color:#E74C3C}input.wy-input-large{padding:12px;font-size:100%}textarea{overflow:auto;vertical-align:top;width:100%;font-family:"Lato","proxima-nova","Helvetica Neue",Arial,sans-serif}select,textarea{padding:.5em .625em;display:inline-block;border:1px solid #ccc;font-size:80%;box-shadow:inset 0 1px 3px #ddd;-webkit-transition:border .3s linear;-moz-transition:border .3s linear;transition:border .3s linear}select{border:1px solid #ccc;background-color:#fff}select[multiple]{height:auto}select:focus,textarea:focus{outline:0}select[disabled],textarea[disabled],input[readonly],select[readonly],textarea[readonly]{cursor:not-allowed;background-color:#fafafa}input[type="radio"][disabled],input[type="checkbox"][disabled]{cursor:not-allowed}.wy-checkbox,.wy-radio{margin:6px 0;color:#404040;display:block}.wy-checkbox input,.wy-radio input{vertical-align:baseline}.wy-form-message-inline{display:inline-block;*display:inline;*zoom:1;vertical-align:middle}.wy-input-prefix,.wy-input-suffix{white-space:nowrap;padding:6px}.wy-input-prefix .wy-input-context,.wy-input-suffix .wy-input-context{line-height:27px;padding:0 8px;display:inline-block;font-size:80%;background-color:#f3f6f6;border:solid 1px #ccc;color:#999}.wy-input-suffix .wy-input-context{border-left:0}.wy-input-prefix .wy-input-context{border-right:0}.wy-switch{position:relative;display:block;height:24px;margin-top:12px;cursor:pointer}.wy-switch:before{position:absolute;content:"";display:block;left:0;top:0;width:36px;height:12px;border-radius:4px;background:#ccc;-webkit-transition:all .2s ease-in-out;-moz-transition:all .2s ease-in-out;transition:all .2s ease-in-out}.wy-switch:after{position:absolute;content:"";display:block;width:18px;height:18px;border-radius:4px;background:#999;left:-3px;top:-3px;-webkit-transition:all .2s ease-in-out;-moz-transition:all .2s ease-in-out;transition:all .2s ease-in-out}.wy-switch span{position:absolute;left:48px;display:block;font-size:12px;color:#ccc;line-height:1}.wy-switch.active:before{background:#1e8449}.wy-switch.active:after{left:24px;background:#27AE60}.wy-switch.disabled{cursor:not-allowed;opacity:.8}.wy-control-group.wy-control-group-error .wy-form-message,.wy-control-group.wy-control-group-error>label{color:#E74C3C}.wy-control-group.wy-control-group-error input[type="text"],.wy-control-group.wy-control-group-error input[type="password"],.wy-control-group.wy-control-group-error input[type="email"],.wy-control-group.wy-control-group-error input[type="url"],.wy-control-group.wy-control-group-error input[type="date"],.wy-control-group.wy-control-group-error input[type="month"],.wy-control-group.wy-control-group-error input[type="time"],.wy-control-group.wy-control-group-error input[type="datetime"],.wy-control-group.wy-control-group-error input[type="datetime-local"],.wy-control-group.wy-control-group-error input[type="week"],.wy-control-group.wy-control-group-error input[type="number"],.wy-control-group.wy-control-group-error input[type="search"],.wy-control-group.wy-control-group-error input[type="tel"],.wy-control-group.wy-control-group-error input[type="color"]{border:solid 1px #E74C3C}.wy-control-group.wy-control-group-error textarea{border:solid 1px #E74C3C}.wy-inline-validate{white-space:nowrap}.wy-inline-validate .wy-input-context{padding:.5em .625em;display:inline-block;font-size:80%}.wy-inline-validate.wy-inline-validate-success .wy-input-context{color:#27AE60}.wy-inline-validate.wy-inline-validate-danger .wy-input-context{color:#E74C3C}.wy-inline-validate.wy-inline-validate-warning .wy-input-context{color:#E67E22}.wy-inline-validate.wy-inline-validate-info .wy-input-context{color:#2980B9}.rotate-90{-webkit-transform:rotate(90deg);-moz-transform:rotate(90deg);-ms-transform:rotate(90deg);-o-transform:rotate(90deg);transform:rotate(90deg)}.rotate-180{-webkit-transform:rotate(180deg);-moz-transform:rotate(180deg);-ms-transform:rotate(180deg);-o-transform:rotate(180deg);transform:rotate(180deg)}.rotate-270{-webkit-transform:rotate(270deg);-moz-transform:rotate(270deg);-ms-transform:rotate(270deg);-o-transform:rotate(270deg);transform:rotate(270deg)}.mirror{-webkit-transform:scaleX(-1);-moz-transform:scaleX(-1);-ms-transform:scaleX(-1);-o-transform:scaleX(-1);transform:scaleX(-1)}.mirror.rotate-90{-webkit-transform:scaleX(-1) rotate(90deg);-moz-transform:scaleX(-1) rotate(90deg);-ms-transform:scaleX(-1) rotate(90deg);-o-transform:scaleX(-1) rotate(90deg);transform:scaleX(-1) rotate(90deg)}.mirror.rotate-180{-webkit-transform:scaleX(-1) rotate(180deg);-moz-transform:scaleX(-1) rotate(180deg);-ms-transform:scaleX(-1) rotate(180deg);-o-transform:scaleX(-1) rotate(180deg);transform:scaleX(-1) rotate(180deg)}.mirror.rotate-270{-webkit-transform:scaleX(-1) rotate(270deg);-moz-transform:scaleX(-1) rotate(270deg);-ms-transform:scaleX(-1) rotate(270deg);-o-transform:scaleX(-1) rotate(270deg);transform:scaleX(-1) rotate(270deg)}@media only screen and (max-width: 480px){.wy-form button[type="submit"]{margin:.7em 0 0}.wy-form input[type="text"],.wy-form input[type="password"],.wy-form input[type="email"],.wy-form input[type="url"],.wy-form input[type="date"],.wy-form input[type="month"],.wy-form input[type="time"],.wy-form input[type="datetime"],.wy-form input[type="datetime-local"],.wy-form input[type="week"],.wy-form input[type="number"],.wy-form input[type="search"],.wy-form input[type="tel"],.wy-form input[type="color"]{margin-bottom:.3em;display:block}.wy-form label{margin-bottom:.3em;display:block}.wy-form input[type="password"],.wy-form input[type="email"],.wy-form input[type="url"],.wy-form input[type="date"],.wy-form input[type="month"],.wy-form input[type="time"],.wy-form input[type="datetime"],.wy-form input[type="datetime-local"],.wy-form input[type="week"],.wy-form input[type="number"],.wy-form input[type="search"],.wy-form input[type="tel"],.wy-form input[type="color"]{margin-bottom:0}.wy-form-aligned .wy-control-group label{margin-bottom:.3em;text-align:left;display:block;width:100%}.wy-form-aligned .wy-control{margin:1.5em 0 0 0}.wy-form .wy-help-inline,.wy-form-message-inline,.wy-form-message{display:block;font-size:80%;padding:6px 0}}@media screen and (max-width: 768px){.tablet-hide{display:none}}@media screen and (max-width: 480px){.mobile-hide{display:none}}.float-left{float:left}.float-right{float:right}.full-width{width:100%}.wy-table,.rst-content table.docutils,.rst-content table.field-list{border-collapse:collapse;border-spacing:0;empty-cells:show;margin-bottom:24px}.wy-table caption,.rst-content table.docutils caption,.rst-content table.field-list caption{color:#000;font:italic 85%/1 arial,sans-serif;padding:1em 0;text-align:center}.wy-table td,.rst-content table.docutils td,.rst-content table.field-list td,.wy-table th,.rst-content table.docutils th,.rst-content table.field-list th{font-size:90%;margin:0;overflow:visible;padding:8px 16px}.wy-table td:first-child,.rst-content table.docutils td:first-child,.rst-content table.field-list td:first-child,.wy-table th:first-child,.rst-content table.docutils th:first-child,.rst-content table.field-list th:first-child{border-left-width:0}.wy-table thead,.rst-content table.docutils thead,.rst-content table.field-list thead{color:#000;text-align:left;vertical-align:bottom;white-space:nowrap}.wy-table thead th,.rst-content table.docutils thead th,.rst-content table.field-list thead th{font-weight:bold;border-bottom:solid 2px #e1e4e5}.wy-table td,.rst-content table.docutils td,.rst-content table.field-list td{background-color:transparent;vertical-align:middle}.wy-table td p,.rst-content table.docutils td p,.rst-content table.field-list td p{line-height:18px}.wy-table td p:last-child,.rst-content table.docutils td p:last-child,.rst-content table.field-list td p:last-child{margin-bottom:0}.wy-table .wy-table-cell-min,.rst-content table.docutils .wy-table-cell-min,.rst-content table.field-list .wy-table-cell-min{width:1%;padding-right:0}.wy-table .wy-table-cell-min input[type=checkbox],.rst-content table.docutils .wy-table-cell-min input[type=checkbox],.rst-content table.field-list .wy-table-cell-min input[type=checkbox],.wy-table .wy-table-cell-min input[type=checkbox],.rst-content table.docutils .wy-table-cell-min input[type=checkbox],.rst-content table.field-list .wy-table-cell-min input[type=checkbox]{margin:0}.wy-table-secondary{color:gray;font-size:90%}.wy-table-tertiary{color:gray;font-size:80%}.wy-table-odd td,.wy-table-striped tr:nth-child(2n-1) td,.rst-content table.docutils:not(.field-list) tr:nth-child(2n-1) td{background-color:#f3f6f6}.wy-table-backed{background-color:#f3f6f6}.wy-table-bordered-all,.rst-content table.docutils{border:1px solid #e1e4e5}.wy-table-bordered-all td,.rst-content table.docutils td{border-bottom:1px solid #e1e4e5;border-left:1px solid #e1e4e5}.wy-table-bordered-all tbody>tr:last-child td,.rst-content table.docutils tbody>tr:last-child td{border-bottom-width:0}.wy-table-bordered{border:1px solid #e1e4e5}.wy-table-bordered-rows td{border-bottom:1px solid #e1e4e5}.wy-table-bordered-rows tbody>tr:last-child td{border-bottom-width:0}.wy-table-horizontal tbody>tr:last-child td{border-bottom-width:0}.wy-table-horizontal td,.wy-table-horizontal th{border-width:0 0 1px 0;border-bottom:1px solid #e1e4e5}.wy-table-horizontal tbody>tr:last-child td{border-bottom-width:0}.wy-table-responsive{margin-bottom:24px;max-width:100%;overflow:auto}.wy-table-responsive table{margin-bottom:0 !important}.wy-table-responsive table td,.wy-table-responsive table th{white-space:nowrap}a{color:#2980B9;text-decoration:none;cursor:pointer}a:hover{color:#3091d1}a:visited{color:#9B59B6}html{height:100%;overflow-x:hidden}body{font-family:"Lato","proxima-nova","Helvetica Neue",Arial,sans-serif;font-weight:normal;color:#404040;min-height:100%;overflow-x:hidden;background:#edf0f2}.wy-text-left{text-align:left}.wy-text-center{text-align:center}.wy-text-right{text-align:right}.wy-text-large{font-size:120%}.wy-text-normal{font-size:100%}.wy-text-small,small{font-size:80%}.wy-text-strike{text-decoration:line-through}.wy-text-warning{color:#E67E22 !important}a.wy-text-warning:hover{color:#eb9950 !important}.wy-text-info{color:#2980B9 !important}a.wy-text-info:hover{color:#409ad5 !important}.wy-text-success{color:#27AE60 !important}a.wy-text-success:hover{color:#36d278 !important}.wy-text-danger{color:#E74C3C !important}a.wy-text-danger:hover{color:#ed7669 !important}.wy-text-neutral{color:#404040 !important}a.wy-text-neutral:hover{color:#595959 !important}h1,h2,.rst-content .toctree-wrapper p.caption,h3,h4,h5,h6,legend{margin-top:0;font-weight:700;font-family:"Roboto Slab","ff-tisa-web-pro","Georgia",Arial,sans-serif}p{line-height:24px;margin:0;font-size:16px;margin-bottom:24px}h1{font-size:175%}h2,.rst-content .toctree-wrapper p.caption{font-size:150%}h3{font-size:125%}h4{font-size:115%}h5{font-size:110%}h6{font-size:100%}hr{display:block;height:1px;border:0;border-top:1px solid #e1e4e5;margin:24px 0;padding:0}code,.rst-content tt,.rst-content code{white-space:nowrap;max-width:100%;background:#fff;border:solid 1px #e1e4e5;font-size:75%;padding:0 5px;font-family:Consolas,"Andale Mono WT","Andale Mono","Lucida Console","Lucida Sans Typewriter","DejaVu Sans Mono","Bitstream Vera Sans Mono","Liberation Mono","Nimbus Mono L",Monaco,"Courier New",Courier,monospace;color:#E74C3C;overflow-x:auto}code.code-large,.rst-content tt.code-large{font-size:90%}.wy-plain-list-disc,.rst-content .section ul,.rst-content .toctree-wrapper ul,article ul{list-style:disc;line-height:24px;margin-bottom:24px}.wy-plain-list-disc li,.rst-content .section ul li,.rst-content .toctree-wrapper ul li,article ul li{list-style:disc;margin-left:24px}.wy-plain-list-disc li p:last-child,.rst-content .section ul li p:last-child,.rst-content .toctree-wrapper ul li p:last-child,article ul li p:last-child{margin-bottom:0}.wy-plain-list-disc li ul,.rst-content .section ul li ul,.rst-content .toctree-wrapper ul li ul,article ul li ul{margin-bottom:0}.wy-plain-list-disc li li,.rst-content .section ul li li,.rst-content .toctree-wrapper ul li li,article ul li li{list-style:circle}.wy-plain-list-disc li li li,.rst-content .section ul li li li,.rst-content .toctree-wrapper ul li li li,article ul li li li{list-style:square}.wy-plain-list-disc li ol li,.rst-content .section ul li ol li,.rst-content .toctree-wrapper ul li ol li,article ul li ol li{list-style:decimal}.wy-plain-list-decimal,.rst-content .section ol,.rst-content ol.arabic,article ol{list-style:decimal;line-height:24px;margin-bottom:24px}.wy-plain-list-decimal li,.rst-content .section ol li,.rst-content ol.arabic li,article ol li{list-style:decimal;margin-left:24px}.wy-plain-list-decimal li p:last-child,.rst-content .section ol li p:last-child,.rst-content ol.arabic li p:last-child,article ol li p:last-child{margin-bottom:0}.wy-plain-list-decimal li ul,.rst-content .section ol li ul,.rst-content ol.arabic li ul,article ol li ul{margin-bottom:0}.wy-plain-list-decimal li ul li,.rst-content .section ol li ul li,.rst-content ol.arabic li ul li,article ol li ul li{list-style:disc}.wy-breadcrumbs{*zoom:1}.wy-breadcrumbs:before,.wy-breadcrumbs:after{display:table;content:""}.wy-breadcrumbs:after{clear:both}.wy-breadcrumbs li{display:inline-block}.wy-breadcrumbs li.wy-breadcrumbs-aside{float:right}.wy-breadcrumbs li a{display:inline-block;padding:5px}.wy-breadcrumbs li a:first-child{padding-left:0}.wy-breadcrumbs li code,.wy-breadcrumbs li .rst-content tt,.rst-content .wy-breadcrumbs li tt{padding:5px;border:none;background:none}.wy-breadcrumbs li code.literal,.wy-breadcrumbs li .rst-content tt.literal,.rst-content .wy-breadcrumbs li tt.literal{color:#404040}.wy-breadcrumbs-extra{margin-bottom:0;color:#b3b3b3;font-size:80%;display:inline-block}@media screen and (max-width: 480px){.wy-breadcrumbs-extra{display:none}.wy-breadcrumbs li.wy-breadcrumbs-aside{display:none}}@media print{.wy-breadcrumbs li.wy-breadcrumbs-aside{display:none}}.wy-affix{position:fixed;top:1.618em}.wy-menu a:hover{text-decoration:none}.wy-menu-horiz{*zoom:1}.wy-menu-horiz:before,.wy-menu-horiz:after{display:table;content:""}.wy-menu-horiz:after{clear:both}.wy-menu-horiz ul,.wy-menu-horiz li{display:inline-block}.wy-menu-horiz li:hover{background:rgba(255,255,255,0.1)}.wy-menu-horiz li.divide-left{border-left:solid 1px #404040}.wy-menu-horiz li.divide-right{border-right:solid 1px #404040}.wy-menu-horiz a{height:32px;display:inline-block;line-height:32px;padding:0 16px}.wy-menu-vertical{width:300px}.wy-menu-vertical header,.wy-menu-vertical p.caption{height:32px;display:inline-block;line-height:32px;padding:0 1.618em;margin-bottom:0;display:block;font-weight:bold;text-transform:uppercase;font-size:80%;color:#6f6f6f;white-space:nowrap}.wy-menu-vertical ul{margin-bottom:0}.wy-menu-vertical li.divide-top{border-top:solid 1px #404040}.wy-menu-vertical li.divide-bottom{border-bottom:solid 1px #404040}.wy-menu-vertical li.current{background:#e3e3e3}.wy-menu-vertical li.current a{color:gray;border-right:solid 1px #c9c9c9;padding:.4045em 2.427em}.wy-menu-vertical li.current a:hover{background:#d6d6d6}.wy-menu-vertical li code,.wy-menu-vertical li .rst-content tt,.rst-content .wy-menu-vertical li tt{border:none;background:inherit;color:inherit;padding-left:0;padding-right:0}.wy-menu-vertical li span.toctree-expand{display:block;float:left;margin-left:-1.2em;font-size:.8em;line-height:1.6em;color:#4d4d4d}.wy-menu-vertical li.on a,.wy-menu-vertical li.current>a{color:#404040;padding:.4045em 1.618em;font-weight:bold;position:relative;background:#fcfcfc;border:none;padding-left:1.618em -4px}.wy-menu-vertical li.on a:hover,.wy-menu-vertical li.current>a:hover{background:#fcfcfc}.wy-menu-vertical li.on a:hover span.toctree-expand,.wy-menu-vertical li.current>a:hover span.toctree-expand{color:gray}.wy-menu-vertical li.on a span.toctree-expand,.wy-menu-vertical li.current>a span.toctree-expand{display:block;font-size:.8em;line-height:1.6em;color:#333}.wy-menu-vertical li.toctree-l1.current>a{border-bottom:solid 1px #c9c9c9;border-top:solid 1px #c9c9c9}.wy-menu-vertical li.toctree-l1.current li.toctree-l2>ul,.wy-menu-vertical li.toctree-l2.current li.toctree-l3>ul{display:none}.wy-menu-vertical li.toctree-l1.current li.toctree-l2.current>ul,.wy-menu-vertical li.toctree-l2.current li.toctree-l3.current>ul{display:block}.wy-menu-vertical li.toctree-l2.current>a{background:#c9c9c9;padding:.4045em 2.427em}.wy-menu-vertical li.toctree-l2.current li.toctree-l3>a{display:block;background:#c9c9c9;padding:.4045em 4.045em}.wy-menu-vertical li.toctree-l2 a:hover span.toctree-expand{color:gray}.wy-menu-vertical li.toctree-l2 span.toctree-expand{color:#a3a3a3}.wy-menu-vertical li.toctree-l3{font-size:.9em}.wy-menu-vertical li.toctree-l3.current>a{background:#bdbdbd;padding:.4045em 4.045em}.wy-menu-vertical li.toctree-l3.current li.toctree-l4>a{display:block;background:#bdbdbd;padding:.4045em 5.663em}.wy-menu-vertical li.toctree-l3 a:hover span.toctree-expand{color:gray}.wy-menu-vertical li.toctree-l3 span.toctree-expand{color:#969696}.wy-menu-vertical li.toctree-l4{font-size:.9em}.wy-menu-vertical li.current ul{display:block}.wy-menu-vertical li ul{margin-bottom:0;display:none}.wy-menu-vertical li ul li a{margin-bottom:0;color:#b3b3b3;font-weight:normal}.wy-menu-vertical a{display:inline-block;line-height:18px;padding:.4045em 1.618em;display:block;position:relative;font-size:90%;color:#b3b3b3}.wy-menu-vertical a:hover{background-color:#4e4a4a;cursor:pointer}.wy-menu-vertical a:hover span.toctree-expand{color:#b3b3b3}.wy-menu-vertical a:active{background-color:#2980B9;cursor:pointer;color:#fff}.wy-menu-vertical a:active span.toctree-expand{color:#fff}.wy-side-nav-search{display:block;width:300px;padding:.809em;margin-bottom:.809em;z-index:200;background-color:#2980B9;text-align:center;padding:.809em;display:block;color:#fcfcfc;margin-bottom:.809em}.wy-side-nav-search input[type=text]{width:100%;border-radius:50px;padding:6px 12px;border-color:#2472a4}.wy-side-nav-search img{display:block;margin:auto auto .809em auto;height:45px;width:45px;background-color:#2980B9;padding:5px;border-radius:100%}.wy-side-nav-search>a,.wy-side-nav-search .wy-dropdown>a{color:#fcfcfc;font-size:100%;font-weight:bold;display:inline-block;padding:4px 6px;margin-bottom:.809em}.wy-side-nav-search>a:hover,.wy-side-nav-search .wy-dropdown>a:hover{background:rgba(255,255,255,0.1)}.wy-side-nav-search>a img.logo,.wy-side-nav-search .wy-dropdown>a img.logo{display:block;margin:0 auto;height:auto;width:auto;border-radius:0;max-width:100%;background:transparent}.wy-side-nav-search>a.icon img.logo,.wy-side-nav-search .wy-dropdown>a.icon img.logo{margin-top:.85em}.wy-side-nav-search>div.version{margin-top:-.4045em;margin-bottom:.809em;font-weight:normal;color:rgba(255,255,255,0.3)}.wy-nav .wy-menu-vertical header{color:#2980B9}.wy-nav .wy-menu-vertical a{color:#b3b3b3}.wy-nav .wy-menu-vertical a:hover{background-color:#2980B9;color:#fff}[data-menu-wrap]{-webkit-transition:all .2s ease-in;-moz-transition:all .2s ease-in;transition:all .2s ease-in;position:absolute;opacity:1;width:100%;opacity:0}[data-menu-wrap].move-center{left:0;right:auto;opacity:1}[data-menu-wrap].move-left{right:auto;left:-100%;opacity:0}[data-menu-wrap].move-right{right:-100%;left:auto;opacity:0}.wy-body-for-nav{background:#fcfcfc}.wy-grid-for-nav{position:absolute;width:100%;height:100%}.wy-nav-side{position:fixed;top:0;bottom:0;left:0;padding-bottom:2em;width:300px;overflow-x:hidden;overflow-y:hidden;min-height:100%;background:#343131;z-index:200}.wy-side-scroll{width:320px;position:relative;overflow-x:hidden;overflow-y:scroll;height:100%}.wy-nav-top{display:none;background:#2980B9;color:#fff;padding:.4045em .809em;position:relative;line-height:50px;text-align:center;font-size:100%;*zoom:1}.wy-nav-top:before,.wy-nav-top:after{display:table;content:""}.wy-nav-top:after{clear:both}.wy-nav-top a{color:#fff;font-weight:bold}.wy-nav-top img{margin-right:12px;height:45px;width:45px;background-color:#2980B9;padding:5px;border-radius:100%}.wy-nav-top i{font-size:30px;float:left;cursor:pointer;padding-top:inherit}.wy-nav-content-wrap{margin-left:300px;background:#fcfcfc;min-height:100%}.wy-nav-content{padding:1.618em 3.236em;height:100%;max-width:800px;margin:auto}.wy-body-mask{position:fixed;width:100%;height:100%;background:rgba(0,0,0,0.2);display:none;z-index:499}.wy-body-mask.on{display:block}footer{color:gray}footer p{margin-bottom:12px}footer span.commit code,footer span.commit .rst-content tt,.rst-content footer span.commit tt{padding:0px;font-family:Consolas,"Andale Mono WT","Andale Mono","Lucida Console","Lucida Sans Typewriter","DejaVu Sans Mono","Bitstream Vera Sans Mono","Liberation Mono","Nimbus Mono L",Monaco,"Courier New",Courier,monospace;font-size:1em;background:none;border:none;color:gray}.rst-footer-buttons{*zoom:1}.rst-footer-buttons:before,.rst-footer-buttons:after{width:100%}.rst-footer-buttons:before,.rst-footer-buttons:after{display:table;content:""}.rst-footer-buttons:after{clear:both}.rst-breadcrumbs-buttons{margin-top:12px;*zoom:1}.rst-breadcrumbs-buttons:before,.rst-breadcrumbs-buttons:after{display:table;content:""}.rst-breadcrumbs-buttons:after{clear:both}#search-results .search li{margin-bottom:24px;border-bottom:solid 1px #e1e4e5;padding-bottom:24px}#search-results .search li:first-child{border-top:solid 1px #e1e4e5;padding-top:24px}#search-results .search li a{font-size:120%;margin-bottom:12px;display:inline-block}#search-results .context{color:gray;font-size:90%}@media screen and (max-width: 768px){.wy-body-for-nav{background:#fcfcfc}.wy-nav-top{display:block}.wy-nav-side{left:-300px}.wy-nav-side.shift{width:85%;left:0}.wy-side-scroll{width:auto}.wy-side-nav-search{width:auto}.wy-menu.wy-menu-vertical{width:auto}.wy-nav-content-wrap{margin-left:0}.wy-nav-content-wrap .wy-nav-content{padding:1.618em}.wy-nav-content-wrap.shift{position:fixed;min-width:100%;left:85%;top:0;height:100%;overflow:hidden}}@media screen and (min-width: 1100px){.wy-nav-content-wrap{background:rgba(0,0,0,0.05)}.wy-nav-content{margin:0;background:#fcfcfc}}@media print{.rst-versions,footer,.wy-nav-side{display:none}.wy-nav-content-wrap{margin-left:0}}.rst-versions{position:fixed;bottom:0;left:0;width:300px;color:#fcfcfc;background:#1f1d1d;font-family:"Lato","proxima-nova","Helvetica Neue",Arial,sans-serif;z-index:400}.rst-versions a{color:#2980B9;text-decoration:none}.rst-versions .rst-badge-small{display:none}.rst-versions .rst-current-version{padding:12px;background-color:#272525;display:block;text-align:right;font-size:90%;cursor:pointer;color:#27AE60;*zoom:1}.rst-versions .rst-current-version:before,.rst-versions .rst-current-version:after{display:table;content:""}.rst-versions .rst-current-version:after{clear:both}.rst-versions .rst-current-version .fa,.rst-versions .rst-current-version .wy-menu-vertical li span.toctree-expand,.wy-menu-vertical li .rst-versions .rst-current-version span.toctree-expand,.rst-versions .rst-current-version .rst-content .admonition-title,.rst-content .rst-versions .rst-current-version .admonition-title,.rst-versions .rst-current-version .rst-content h1 .headerlink,.rst-content h1 .rst-versions .rst-current-version .headerlink,.rst-versions .rst-current-version .rst-content h2 .headerlink,.rst-content h2 .rst-versions .rst-current-version .headerlink,.rst-versions .rst-current-version .rst-content h3 .headerlink,.rst-content h3 .rst-versions .rst-current-version .headerlink,.rst-versions .rst-current-version .rst-content h4 .headerlink,.rst-content h4 .rst-versions .rst-current-version .headerlink,.rst-versions .rst-current-version .rst-content h5 .headerlink,.rst-content h5 .rst-versions .rst-current-version .headerlink,.rst-versions .rst-current-version .rst-content h6 .headerlink,.rst-content h6 .rst-versions .rst-current-version .headerlink,.rst-versions .rst-current-version .rst-content dl dt .headerlink,.rst-content dl dt .rst-versions .rst-current-version .headerlink,.rst-versions .rst-current-version .rst-content p.caption .headerlink,.rst-content p.caption .rst-versions .rst-current-version .headerlink,.rst-versions .rst-current-version .rst-content table>caption .headerlink,.rst-content table>caption .rst-versions .rst-current-version .headerlink,.rst-versions .rst-current-version .rst-content tt.download span:first-child,.rst-content tt.download .rst-versions .rst-current-version span:first-child,.rst-versions .rst-current-version .rst-content code.download span:first-child,.rst-content code.download .rst-versions .rst-current-version span:first-child,.rst-versions .rst-current-version .icon{color:#fcfcfc}.rst-versions .rst-current-version .fa-book,.rst-versions .rst-current-version .icon-book{float:left}.rst-versions .rst-current-version .icon-book{float:left}.rst-versions .rst-current-version.rst-out-of-date{background-color:#E74C3C;color:#fff}.rst-versions .rst-current-version.rst-active-old-version{background-color:#F1C40F;color:#000}.rst-versions.shift-up{height:auto;max-height:100%}.rst-versions.shift-up .rst-other-versions{display:block}.rst-versions .rst-other-versions{font-size:90%;padding:12px;color:gray;display:none}.rst-versions .rst-other-versions hr{display:block;height:1px;border:0;margin:20px 0;padding:0;border-top:solid 1px #413d3d}.rst-versions .rst-other-versions dd{display:inline-block;margin:0}.rst-versions .rst-other-versions dd a{display:inline-block;padding:6px;color:#fcfcfc}.rst-versions.rst-badge{width:auto;bottom:20px;right:20px;left:auto;border:none;max-width:300px}.rst-versions.rst-badge .icon-book{float:none}.rst-versions.rst-badge .fa-book,.rst-versions.rst-badge .icon-book{float:none}.rst-versions.rst-badge.shift-up .rst-current-version{text-align:right}.rst-versions.rst-badge.shift-up .rst-current-version .fa-book,.rst-versions.rst-badge.shift-up .rst-current-version .icon-book{float:left}.rst-versions.rst-badge.shift-up .rst-current-version .icon-book{float:left}.rst-versions.rst-badge .rst-current-version{width:auto;height:30px;line-height:30px;padding:0 6px;display:block;text-align:center}@media screen and (max-width: 768px){.rst-versions{width:85%;display:none}.rst-versions.shift{display:block}}.rst-content img{max-width:100%;height:auto}.rst-content div.figure{margin-bottom:24px}.rst-content div.figure p.caption{font-style:italic}.rst-content div.figure p:last-child.caption{margin-bottom:0px}.rst-content div.figure.align-center{text-align:center}.rst-content .section>img,.rst-content .section>a>img{margin-bottom:24px}.rst-content abbr[title]{text-decoration:none}.rst-content.style-external-links a.reference.external:after{font-family:FontAwesome;content:"";color:#b3b3b3;vertical-align:super;font-size:60%;margin:0 .2em}.rst-content blockquote{margin-left:24px;line-height:24px;margin-bottom:24px}.rst-content pre.literal-block,.rst-content div[class^='highlight']{border:1px solid #e1e4e5;padding:0px;overflow-x:auto;margin:1px 0 24px 0}.rst-content pre.literal-block div[class^='highlight'],.rst-content div[class^='highlight'] div[class^='highlight']{border:none;margin:0}.rst-content div[class^='highlight'] td.code{width:100%}.rst-content .linenodiv pre{border-right:solid 1px #e6e9ea;margin:0;padding:12px 12px;font-family:Consolas,"Andale Mono WT","Andale Mono","Lucida Console","Lucida Sans Typewriter","DejaVu Sans Mono","Bitstream Vera Sans Mono","Liberation Mono","Nimbus Mono L",Monaco,"Courier New",Courier,monospace;user-select:none;pointer-events:none}.rst-content div[class^='highlight'] pre{white-space:pre;margin:0;padding:12px 12px;font-family:Consolas,"Andale Mono WT","Andale Mono","Lucida Console","Lucida Sans Typewriter","DejaVu Sans Mono","Bitstream Vera Sans Mono","Liberation Mono","Nimbus Mono L",Monaco,"Courier New",Courier,monospace;display:block;overflow:auto}.rst-content div[class^='highlight'] pre .hll{display:block;margin:0 -12px;padding:0 12px}.rst-content pre.literal-block,.rst-content div[class^='highlight'] pre,.rst-content .linenodiv pre{font-size:12px;line-height:normal}@media print{.rst-content .codeblock,.rst-content div[class^='highlight'],.rst-content div[class^='highlight'] pre{white-space:pre-wrap}}.rst-content .note .last,.rst-content .attention .last,.rst-content .caution .last,.rst-content .danger .last,.rst-content .error .last,.rst-content .hint .last,.rst-content .important .last,.rst-content .tip .last,.rst-content .warning .last,.rst-content .seealso .last,.rst-content .admonition-todo .last,.rst-content .admonition .last{margin-bottom:0}.rst-content .admonition-title:before{margin-right:4px}.rst-content .admonition table{border-color:rgba(0,0,0,0.1)}.rst-content .admonition table td,.rst-content .admonition table th{background:transparent !important;border-color:rgba(0,0,0,0.1) !important}.rst-content .section ol.loweralpha,.rst-content .section ol.loweralpha li{list-style:lower-alpha}.rst-content .section ol.upperalpha,.rst-content .section ol.upperalpha li{list-style:upper-alpha}.rst-content .section ol p,.rst-content .section ul p{margin-bottom:12px}.rst-content .section ol p:last-child,.rst-content .section ul p:last-child{margin-bottom:24px}.rst-content .line-block{margin-left:0px;margin-bottom:24px}.rst-content .line-block .line-block{margin-left:24px;margin-bottom:0px}.rst-content .topic-title{font-weight:bold;margin-bottom:12px}.rst-content .toc-backref{color:#404040}.rst-content .align-right{float:right;margin:0px 0px 24px 24px}.rst-content .align-left{float:left;margin:0px 24px 24px 0px}.rst-content .align-center{margin:auto}.rst-content .align-center:not(table){display:block}.rst-content h1 .headerlink,.rst-content h2 .headerlink,.rst-content .toctree-wrapper p.caption .headerlink,.rst-content h3 .headerlink,.rst-content h4 .headerlink,.rst-content h5 .headerlink,.rst-content h6 .headerlink,.rst-content dl dt .headerlink,.rst-content p.caption .headerlink,.rst-content table>caption .headerlink{visibility:hidden;font-size:14px}.rst-content h1 .headerlink:after,.rst-content h2 .headerlink:after,.rst-content .toctree-wrapper p.caption .headerlink:after,.rst-content h3 .headerlink:after,.rst-content h4 .headerlink:after,.rst-content h5 .headerlink:after,.rst-content h6 .headerlink:after,.rst-content dl dt .headerlink:after,.rst-content p.caption .headerlink:after,.rst-content table>caption .headerlink:after{content:"";font-family:FontAwesome}.rst-content h1:hover .headerlink:after,.rst-content h2:hover .headerlink:after,.rst-content .toctree-wrapper p.caption:hover .headerlink:after,.rst-content h3:hover .headerlink:after,.rst-content h4:hover .headerlink:after,.rst-content h5:hover .headerlink:after,.rst-content h6:hover .headerlink:after,.rst-content dl dt:hover .headerlink:after,.rst-content p.caption:hover .headerlink:after,.rst-content table>caption:hover .headerlink:after{visibility:visible}.rst-content table>caption .headerlink:after{font-size:12px}.rst-content .centered{text-align:center}.rst-content .sidebar{float:right;width:40%;display:block;margin:0 0 24px 24px;padding:24px;background:#f3f6f6;border:solid 1px #e1e4e5}.rst-content .sidebar p,.rst-content .sidebar ul,.rst-content .sidebar dl{font-size:90%}.rst-content .sidebar .last{margin-bottom:0}.rst-content .sidebar .sidebar-title{display:block;font-family:"Roboto Slab","ff-tisa-web-pro","Georgia",Arial,sans-serif;font-weight:bold;background:#e1e4e5;padding:6px 12px;margin:-24px;margin-bottom:24px;font-size:100%}.rst-content .highlighted{background:#F1C40F;display:inline-block;font-weight:bold;padding:0 6px}.rst-content .footnote-reference,.rst-content .citation-reference{vertical-align:baseline;position:relative;top:-0.4em;line-height:0;font-size:90%}.rst-content table.docutils.citation,.rst-content table.docutils.footnote{background:none;border:none;color:gray}.rst-content table.docutils.citation td,.rst-content table.docutils.citation tr,.rst-content table.docutils.footnote td,.rst-content table.docutils.footnote tr{border:none;background-color:transparent !important;white-space:normal}.rst-content table.docutils.citation td.label,.rst-content table.docutils.footnote td.label{padding-left:0;padding-right:0;vertical-align:top}.rst-content table.docutils.citation tt,.rst-content table.docutils.citation code,.rst-content table.docutils.footnote tt,.rst-content table.docutils.footnote code{color:#555}.rst-content .wy-table-responsive.citation,.rst-content .wy-table-responsive.footnote{margin-bottom:0}.rst-content .wy-table-responsive.citation+:not(.citation),.rst-content .wy-table-responsive.footnote+:not(.footnote){margin-top:24px}.rst-content .wy-table-responsive.citation:last-child,.rst-content .wy-table-responsive.footnote:last-child{margin-bottom:24px}.rst-content table.docutils th{border-color:#e1e4e5}.rst-content table.field-list{border:none}.rst-content table.field-list td{border:none}.rst-content table.field-list td>strong{display:inline-block}.rst-content table.field-list .field-name{padding-right:10px;text-align:left;white-space:nowrap}.rst-content table.field-list .field-body{text-align:left}.rst-content tt,.rst-content tt,.rst-content code{color:#000;padding:2px 5px}.rst-content tt big,.rst-content tt em,.rst-content tt big,.rst-content code big,.rst-content tt em,.rst-content code em{font-size:100% !important;line-height:normal}.rst-content tt.literal,.rst-content tt.literal,.rst-content code.literal{color:#E74C3C}.rst-content tt.xref,a .rst-content tt,.rst-content tt.xref,.rst-content code.xref,a .rst-content tt,a .rst-content code{font-weight:bold;color:#404040}.rst-content a tt,.rst-content a tt,.rst-content a code{color:#2980B9}.rst-content dl{margin-bottom:24px}.rst-content dl dt{font-weight:bold}.rst-content dl p,.rst-content dl table,.rst-content dl ul,.rst-content dl ol{margin-bottom:12px !important}.rst-content dl dd{margin:0 0 12px 24px}.rst-content dl:not(.docutils){margin-bottom:24px}.rst-content dl:not(.docutils) dt{display:table;margin:6px 0;font-size:90%;line-height:normal;background:#e7f2fa;color:#2980B9;border-top:solid 3px #6ab0de;padding:6px;position:relative}.rst-content dl:not(.docutils) dt:before{color:#6ab0de}.rst-content dl:not(.docutils) dt .headerlink{color:#404040;font-size:100% !important}.rst-content dl:not(.docutils) dl dt{margin-bottom:6px;border:none;border-left:solid 3px #ccc;background:#f0f0f0;color:#555}.rst-content dl:not(.docutils) dl dt .headerlink{color:#404040;font-size:100% !important}.rst-content dl:not(.docutils) dt:first-child{margin-top:0}.rst-content dl:not(.docutils) tt,.rst-content dl:not(.docutils) tt,.rst-content dl:not(.docutils) code{font-weight:bold}.rst-content dl:not(.docutils) tt.descname,.rst-content dl:not(.docutils) tt.descclassname,.rst-content dl:not(.docutils) tt.descname,.rst-content dl:not(.docutils) code.descname,.rst-content dl:not(.docutils) tt.descclassname,.rst-content dl:not(.docutils) code.descclassname{background-color:transparent;border:none;padding:0;font-size:100% !important}.rst-content dl:not(.docutils) tt.descname,.rst-content dl:not(.docutils) tt.descname,.rst-content dl:not(.docutils) code.descname{font-weight:bold}.rst-content dl:not(.docutils) .optional{display:inline-block;padding:0 4px;color:#000;font-weight:bold}.rst-content dl:not(.docutils) .property{display:inline-block;padding-right:8px}.rst-content .viewcode-link,.rst-content .viewcode-back{display:inline-block;color:#27AE60;font-size:80%;padding-left:24px}.rst-content .viewcode-back{display:block;float:right}.rst-content p.rubric{margin-bottom:12px;font-weight:bold}.rst-content tt.download,.rst-content code.download{background:inherit;padding:inherit;font-weight:normal;font-family:inherit;font-size:inherit;color:inherit;border:inherit;white-space:inherit}.rst-content tt.download span:first-child,.rst-content code.download span:first-child{-webkit-font-smoothing:subpixel-antialiased}.rst-content tt.download span:first-child:before,.rst-content code.download span:first-child:before{margin-right:4px}.rst-content .guilabel{border:1px solid #7fbbe3;background:#e7f2fa;font-size:80%;font-weight:700;border-radius:4px;padding:2.4px 6px;margin:auto 2px}.rst-content .versionmodified{font-style:italic}@media screen and (max-width: 480px){.rst-content .sidebar{width:100%}}span[id*='MathJax-Span']{color:#404040}.math{text-align:center}@font-face{font-family:"Inconsolata";font-style:normal;font-weight:400;src:local("Inconsolata"),local("Inconsolata-Regular"),url(../fonts/Inconsolata-Regular.ttf) format("truetype")}@font-face{font-family:"Inconsolata";font-style:normal;font-weight:700;src:local("Inconsolata Bold"),local("Inconsolata-Bold"),url(../fonts/Inconsolata-Bold.ttf) format("truetype")}@font-face{font-family:"Lato";font-style:normal;font-weight:400;src:local("Lato Regular"),local("Lato-Regular"),url(../fonts/Lato-Regular.ttf) format("truetype")}@font-face{font-family:"Lato";font-style:normal;font-weight:700;src:local("Lato Bold"),local("Lato-Bold"),url(../fonts/Lato-Bold.ttf) format("truetype")}@font-face{font-family:"Lato";font-style:italic;font-weight:400;src:local("Lato Italic"),local("Lato-Italic"),url(../fonts/Lato-Italic.ttf) format("truetype")}@font-face{font-family:"Lato";font-style:italic;font-weight:700;src:local("Lato Bold Italic"),local("Lato-BoldItalic"),url(../fonts/Lato-BoldItalic.ttf) format("truetype")}@font-face{font-family:"Roboto Slab";font-style:normal;font-weight:400;src:local("Roboto Slab Regular"),local("RobotoSlab-Regular"),url(../fonts/RobotoSlab-Regular.ttf) format("truetype")}@font-face{font-family:"Roboto Slab";font-style:normal;font-weight:700;src:local("Roboto Slab Bold"),local("RobotoSlab-Bold"),url(../fonts/RobotoSlab-Bold.ttf) format("truetype")} diff --git a/vmc/_static/doctools.js b/vmc/_static/doctools.js new file mode 100644 index 00000000..d8928926 --- /dev/null +++ b/vmc/_static/doctools.js @@ -0,0 +1,313 @@ +/* + * doctools.js + * ~~~~~~~~~~~ + * + * Sphinx JavaScript utilities for all documentation. + * + * :copyright: Copyright 2007-2018 by the Sphinx team, see AUTHORS. + * :license: BSD, see LICENSE for details. + * + */ + +/** + * select a different prefix for underscore + */ +$u = _.noConflict(); + +/** + * make the code below compatible with browsers without + * an installed firebug like debugger +if (!window.console || !console.firebug) { + var names = ["log", "debug", "info", "warn", "error", "assert", "dir", + "dirxml", "group", "groupEnd", "time", "timeEnd", "count", "trace", + "profile", "profileEnd"]; + window.console = {}; + for (var i = 0; i < names.length; ++i) + window.console[names[i]] = function() {}; +} + */ + +/** + * small helper function to urldecode strings + */ +jQuery.urldecode = function(x) { + return decodeURIComponent(x).replace(/\+/g, ' '); +}; + +/** + * small helper function to urlencode strings + */ +jQuery.urlencode = encodeURIComponent; + +/** + * This function returns the parsed url parameters of the + * current request. Multiple values per key are supported, + * it will always return arrays of strings for the value parts. + */ +jQuery.getQueryParameters = function(s) { + if (typeof s === 'undefined') + s = document.location.search; + var parts = s.substr(s.indexOf('?') + 1).split('&'); + var result = {}; + for (var i = 0; i < parts.length; i++) { + var tmp = parts[i].split('=', 2); + var key = jQuery.urldecode(tmp[0]); + var value = jQuery.urldecode(tmp[1]); + if (key in result) + result[key].push(value); + else + result[key] = [value]; + } + return result; +}; + +/** + * highlight a given string on a jquery object by wrapping it in + * span elements with the given class name. + */ +jQuery.fn.highlightText = function(text, className) { + function highlight(node, addItems) { + if (node.nodeType === 3) { + var val = node.nodeValue; + var pos = val.toLowerCase().indexOf(text); + if (pos >= 0 && + !jQuery(node.parentNode).hasClass(className) && + !jQuery(node.parentNode).hasClass("nohighlight")) { + var span; + var isInSVG = jQuery(node).closest("body, svg, foreignObject").is("svg"); + if (isInSVG) { + span = document.createElementNS("http://www.w3.org/2000/svg", "tspan"); + } else { + span = document.createElement("span"); + span.className = className; + } + span.appendChild(document.createTextNode(val.substr(pos, text.length))); + node.parentNode.insertBefore(span, node.parentNode.insertBefore( + document.createTextNode(val.substr(pos + text.length)), + node.nextSibling)); + node.nodeValue = val.substr(0, pos); + if (isInSVG) { + var bbox = span.getBBox(); + var rect = document.createElementNS("http://www.w3.org/2000/svg", "rect"); + rect.x.baseVal.value = bbox.x; + rect.y.baseVal.value = bbox.y; + rect.width.baseVal.value = bbox.width; + rect.height.baseVal.value = bbox.height; + rect.setAttribute('class', className); + var parentOfText = node.parentNode.parentNode; + addItems.push({ + "parent": node.parentNode, + "target": rect}); + } + } + } + else if (!jQuery(node).is("button, select, textarea")) { + jQuery.each(node.childNodes, function() { + highlight(this, addItems); + }); + } + } + var addItems = []; + var result = this.each(function() { + highlight(this, addItems); + }); + for (var i = 0; i < addItems.length; ++i) { + jQuery(addItems[i].parent).before(addItems[i].target); + } + return result; +}; + +/* + * backward compatibility for jQuery.browser + * This will be supported until firefox bug is fixed. + */ +if (!jQuery.browser) { + jQuery.uaMatch = function(ua) { + ua = ua.toLowerCase(); + + var match = /(chrome)[ \/]([\w.]+)/.exec(ua) || + /(webkit)[ \/]([\w.]+)/.exec(ua) || + /(opera)(?:.*version|)[ \/]([\w.]+)/.exec(ua) || + /(msie) ([\w.]+)/.exec(ua) || + ua.indexOf("compatible") < 0 && /(mozilla)(?:.*? rv:([\w.]+)|)/.exec(ua) || + []; + + return { + browser: match[ 1 ] || "", + version: match[ 2 ] || "0" + }; + }; + jQuery.browser = {}; + jQuery.browser[jQuery.uaMatch(navigator.userAgent).browser] = true; +} + +/** + * Small JavaScript module for the documentation. + */ +var Documentation = { + + init : function() { + this.fixFirefoxAnchorBug(); + this.highlightSearchWords(); + this.initIndexTable(); + + }, + + /** + * i18n support + */ + TRANSLATIONS : {}, + PLURAL_EXPR : function(n) { return n === 1 ? 0 : 1; }, + LOCALE : 'unknown', + + // gettext and ngettext don't access this so that the functions + // can safely bound to a different name (_ = Documentation.gettext) + gettext : function(string) { + var translated = Documentation.TRANSLATIONS[string]; + if (typeof translated === 'undefined') + return string; + return (typeof translated === 'string') ? translated : translated[0]; + }, + + ngettext : function(singular, plural, n) { + var translated = Documentation.TRANSLATIONS[singular]; + if (typeof translated === 'undefined') + return (n == 1) ? singular : plural; + return translated[Documentation.PLURALEXPR(n)]; + }, + + addTranslations : function(catalog) { + for (var key in catalog.messages) + this.TRANSLATIONS[key] = catalog.messages[key]; + this.PLURAL_EXPR = new Function('n', 'return +(' + catalog.plural_expr + ')'); + this.LOCALE = catalog.locale; + }, + + /** + * add context elements like header anchor links + */ + addContextElements : function() { + $('div[id] > :header:first').each(function() { + $('\u00B6'). + attr('href', '#' + this.id). + attr('title', _('Permalink to this headline')). + appendTo(this); + }); + $('dt[id]').each(function() { + $('\u00B6'). + attr('href', '#' + this.id). + attr('title', _('Permalink to this definition')). + appendTo(this); + }); + }, + + /** + * workaround a firefox stupidity + * see: https://bugzilla.mozilla.org/show_bug.cgi?id=645075 + */ + fixFirefoxAnchorBug : function() { + if (document.location.hash && $.browser.mozilla) + window.setTimeout(function() { + document.location.href += ''; + }, 10); + }, + + /** + * highlight the search words provided in the url in the text + */ + highlightSearchWords : function() { + var params = $.getQueryParameters(); + var terms = (params.highlight) ? params.highlight[0].split(/\s+/) : []; + if (terms.length) { + var body = $('div.body'); + if (!body.length) { + body = $('body'); + } + window.setTimeout(function() { + $.each(terms, function() { + body.highlightText(this.toLowerCase(), 'highlighted'); + }); + }, 10); + $('') + .appendTo($('#searchbox')); + } + }, + + /** + * init the domain index toggle buttons + */ + initIndexTable : function() { + var togglers = $('img.toggler').click(function() { + var src = $(this).attr('src'); + var idnum = $(this).attr('id').substr(7); + $('tr.cg-' + idnum).toggle(); + if (src.substr(-9) === 'minus.png') + $(this).attr('src', src.substr(0, src.length-9) + 'plus.png'); + else + $(this).attr('src', src.substr(0, src.length-8) + 'minus.png'); + }).css('display', ''); + if (DOCUMENTATION_OPTIONS.COLLAPSE_INDEX) { + togglers.click(); + } + }, + + /** + * helper function to hide the search marks again + */ + hideSearchWords : function() { + $('#searchbox .highlight-link').fadeOut(300); + $('span.highlighted').removeClass('highlighted'); + }, + + /** + * make the url absolute + */ + makeURL : function(relativeURL) { + return DOCUMENTATION_OPTIONS.URL_ROOT + '/' + relativeURL; + }, + + /** + * get the current relative url + */ + getCurrentURL : function() { + var path = document.location.pathname; + var parts = path.split(/\//); + $.each(DOCUMENTATION_OPTIONS.URL_ROOT.split(/\//), function() { + if (this === '..') + parts.pop(); + }); + var url = parts.join('/'); + return path.substring(url.lastIndexOf('/') + 1, path.length - 1); + }, + + initOnKeyListeners: function() { + $(document).keyup(function(event) { + var activeElementType = document.activeElement.tagName; + // don't navigate when in search box or textarea + if (activeElementType !== 'TEXTAREA' && activeElementType !== 'INPUT' && activeElementType !== 'SELECT') { + switch (event.keyCode) { + case 37: // left + var prevHref = $('link[rel="prev"]').prop('href'); + if (prevHref) { + window.location.href = prevHref; + return false; + } + case 39: // right + var nextHref = $('link[rel="next"]').prop('href'); + if (nextHref) { + window.location.href = nextHref; + return false; + } + } + } + }); + } +}; + +// quick alias for translations +_ = Documentation.gettext; + +$(document).ready(function() { + Documentation.init(); +}); \ No newline at end of file diff --git a/vmc/_static/documentation_options.js b/vmc/_static/documentation_options.js new file mode 100644 index 00000000..64bfd50d --- /dev/null +++ b/vmc/_static/documentation_options.js @@ -0,0 +1,9 @@ +var DOCUMENTATION_OPTIONS = { + URL_ROOT: '', + VERSION: '1.2.0', + LANGUAGE: 'en', + COLLAPSE_INDEX: false, + FILE_SUFFIX: '.html', + HAS_SOURCE: true, + SOURCELINK_SUFFIX: '.txt' +}; \ No newline at end of file diff --git a/vmc/_static/down-pressed.png b/vmc/_static/down-pressed.png new file mode 100644 index 00000000..5756c8ca Binary files /dev/null and b/vmc/_static/down-pressed.png differ diff --git a/vmc/_static/down.png b/vmc/_static/down.png new file mode 100644 index 00000000..1b3bdad2 Binary files /dev/null and b/vmc/_static/down.png differ diff --git a/vmc/_static/file.png b/vmc/_static/file.png new file mode 100644 index 00000000..a858a410 Binary files /dev/null and b/vmc/_static/file.png differ diff --git a/vmc/_static/fonts/Inconsolata-Bold.ttf b/vmc/_static/fonts/Inconsolata-Bold.ttf new file mode 100644 index 00000000..9addc892 Binary files /dev/null and b/vmc/_static/fonts/Inconsolata-Bold.ttf differ diff --git a/vmc/_static/fonts/Inconsolata-Regular.ttf b/vmc/_static/fonts/Inconsolata-Regular.ttf new file mode 100644 index 00000000..592ccd20 Binary files /dev/null and b/vmc/_static/fonts/Inconsolata-Regular.ttf differ diff --git a/vmc/_static/fonts/Lato-Bold.ttf b/vmc/_static/fonts/Lato-Bold.ttf new file mode 100644 index 00000000..1d23c706 Binary files /dev/null and b/vmc/_static/fonts/Lato-Bold.ttf differ diff --git a/vmc/_static/fonts/Lato-BoldItalic.ttf b/vmc/_static/fonts/Lato-BoldItalic.ttf new file mode 100644 index 00000000..a3b8e332 Binary files /dev/null and b/vmc/_static/fonts/Lato-BoldItalic.ttf differ diff --git a/vmc/_static/fonts/Lato-Italic.ttf b/vmc/_static/fonts/Lato-Italic.ttf new file mode 100644 index 00000000..70a870f4 Binary files /dev/null and b/vmc/_static/fonts/Lato-Italic.ttf differ diff --git a/vmc/_static/fonts/Lato-Regular.ttf b/vmc/_static/fonts/Lato-Regular.ttf new file mode 100644 index 00000000..0f3d0f83 Binary files /dev/null and b/vmc/_static/fonts/Lato-Regular.ttf differ diff --git a/vmc/_static/fonts/RobotoSlab-Bold.ttf b/vmc/_static/fonts/RobotoSlab-Bold.ttf new file mode 100644 index 00000000..df5d1df2 Binary files /dev/null and b/vmc/_static/fonts/RobotoSlab-Bold.ttf differ diff --git a/vmc/_static/fonts/RobotoSlab-Regular.ttf b/vmc/_static/fonts/RobotoSlab-Regular.ttf new file mode 100644 index 00000000..eb52a790 Binary files /dev/null and b/vmc/_static/fonts/RobotoSlab-Regular.ttf differ diff --git a/vmc/_static/fonts/fontawesome-webfont.eot b/vmc/_static/fonts/fontawesome-webfont.eot new file mode 100644 index 00000000..e9f60ca9 Binary files /dev/null and b/vmc/_static/fonts/fontawesome-webfont.eot differ diff --git a/vmc/_static/fonts/fontawesome-webfont.svg b/vmc/_static/fonts/fontawesome-webfont.svg new file mode 100644 index 00000000..855c845e --- /dev/null +++ b/vmc/_static/fonts/fontawesome-webfont.svg @@ -0,0 +1,2671 @@ + + + + +Created by FontForge 20120731 at Mon Oct 24 17:37:40 2016 + By ,,, +Copyright Dave Gandy 2016. All rights reserved. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/vmc/_static/fonts/fontawesome-webfont.ttf b/vmc/_static/fonts/fontawesome-webfont.ttf new file mode 100644 index 00000000..35acda2f Binary files /dev/null and b/vmc/_static/fonts/fontawesome-webfont.ttf differ diff --git a/vmc/_static/fonts/fontawesome-webfont.woff b/vmc/_static/fonts/fontawesome-webfont.woff new file mode 100644 index 00000000..400014a4 Binary files /dev/null and b/vmc/_static/fonts/fontawesome-webfont.woff differ diff --git a/vmc/_static/fonts/fontawesome-webfont.woff2 b/vmc/_static/fonts/fontawesome-webfont.woff2 new file mode 100644 index 00000000..4d13fc60 Binary files /dev/null and b/vmc/_static/fonts/fontawesome-webfont.woff2 differ diff --git a/vmc/_static/jquery-3.2.1.js b/vmc/_static/jquery-3.2.1.js new file mode 100644 index 00000000..d2d8ca47 --- /dev/null +++ b/vmc/_static/jquery-3.2.1.js @@ -0,0 +1,10253 @@ +/*! + * jQuery JavaScript Library v3.2.1 + * https://jquery.com/ + * + * Includes Sizzle.js + * https://sizzlejs.com/ + * + * Copyright JS Foundation and other contributors + * Released under the MIT license + * https://jquery.org/license + * + * Date: 2017-03-20T18:59Z + */ +( function( global, factory ) { + + "use strict"; + + if ( typeof module === "object" && typeof module.exports === "object" ) { + + // For CommonJS and CommonJS-like environments where a proper `window` + // is present, execute the factory and get jQuery. + // For environments that do not have a `window` with a `document` + // (such as Node.js), expose a factory as module.exports. + // This accentuates the need for the creation of a real `window`. + // e.g. var jQuery = require("jquery")(window); + // See ticket #14549 for more info. + module.exports = global.document ? + factory( global, true ) : + function( w ) { + if ( !w.document ) { + throw new Error( "jQuery requires a window with a document" ); + } + return factory( w ); + }; + } else { + factory( global ); + } + +// Pass this if window is not defined yet +} )( typeof window !== "undefined" ? window : this, function( window, noGlobal ) { + +// Edge <= 12 - 13+, Firefox <=18 - 45+, IE 10 - 11, Safari 5.1 - 9+, iOS 6 - 9.1 +// throw exceptions when non-strict code (e.g., ASP.NET 4.5) accesses strict mode +// arguments.callee.caller (trac-13335). But as of jQuery 3.0 (2016), strict mode should be common +// enough that all such attempts are guarded in a try block. +"use strict"; + +var arr = []; + +var document = window.document; + +var getProto = Object.getPrototypeOf; + +var slice = arr.slice; + +var concat = arr.concat; + +var push = arr.push; + +var indexOf = arr.indexOf; + +var class2type = {}; + +var toString = class2type.toString; + +var hasOwn = class2type.hasOwnProperty; + +var fnToString = hasOwn.toString; + +var ObjectFunctionString = fnToString.call( Object ); + +var support = {}; + + + + function DOMEval( code, doc ) { + doc = doc || document; + + var script = doc.createElement( "script" ); + + script.text = code; + doc.head.appendChild( script ).parentNode.removeChild( script ); + } +/* global Symbol */ +// Defining this global in .eslintrc.json would create a danger of using the global +// unguarded in another place, it seems safer to define global only for this module + + + +var + version = "3.2.1", + + // Define a local copy of jQuery + jQuery = function( selector, context ) { + + // The jQuery object is actually just the init constructor 'enhanced' + // Need init if jQuery is called (just allow error to be thrown if not included) + return new jQuery.fn.init( selector, context ); + }, + + // Support: Android <=4.0 only + // Make sure we trim BOM and NBSP + rtrim = /^[\s\uFEFF\xA0]+|[\s\uFEFF\xA0]+$/g, + + // Matches dashed string for camelizing + rmsPrefix = /^-ms-/, + rdashAlpha = /-([a-z])/g, + + // Used by jQuery.camelCase as callback to replace() + fcamelCase = function( all, letter ) { + return letter.toUpperCase(); + }; + +jQuery.fn = jQuery.prototype = { + + // The current version of jQuery being used + jquery: version, + + constructor: jQuery, + + // The default length of a jQuery object is 0 + length: 0, + + toArray: function() { + return slice.call( this ); + }, + + // Get the Nth element in the matched element set OR + // Get the whole matched element set as a clean array + get: function( num ) { + + // Return all the elements in a clean array + if ( num == null ) { + return slice.call( this ); + } + + // Return just the one element from the set + return num < 0 ? this[ num + this.length ] : this[ num ]; + }, + + // Take an array of elements and push it onto the stack + // (returning the new matched element set) + pushStack: function( elems ) { + + // Build a new jQuery matched element set + var ret = jQuery.merge( this.constructor(), elems ); + + // Add the old object onto the stack (as a reference) + ret.prevObject = this; + + // Return the newly-formed element set + return ret; + }, + + // Execute a callback for every element in the matched set. + each: function( callback ) { + return jQuery.each( this, callback ); + }, + + map: function( callback ) { + return this.pushStack( jQuery.map( this, function( elem, i ) { + return callback.call( elem, i, elem ); + } ) ); + }, + + slice: function() { + return this.pushStack( slice.apply( this, arguments ) ); + }, + + first: function() { + return this.eq( 0 ); + }, + + last: function() { + return this.eq( -1 ); + }, + + eq: function( i ) { + var len = this.length, + j = +i + ( i < 0 ? len : 0 ); + return this.pushStack( j >= 0 && j < len ? [ this[ j ] ] : [] ); + }, + + end: function() { + return this.prevObject || this.constructor(); + }, + + // For internal use only. + // Behaves like an Array's method, not like a jQuery method. + push: push, + sort: arr.sort, + splice: arr.splice +}; + +jQuery.extend = jQuery.fn.extend = function() { + var options, name, src, copy, copyIsArray, clone, + target = arguments[ 0 ] || {}, + i = 1, + length = arguments.length, + deep = false; + + // Handle a deep copy situation + if ( typeof target === "boolean" ) { + deep = target; + + // Skip the boolean and the target + target = arguments[ i ] || {}; + i++; + } + + // Handle case when target is a string or something (possible in deep copy) + if ( typeof target !== "object" && !jQuery.isFunction( target ) ) { + target = {}; + } + + // Extend jQuery itself if only one argument is passed + if ( i === length ) { + target = this; + i--; + } + + for ( ; i < length; i++ ) { + + // Only deal with non-null/undefined values + if ( ( options = arguments[ i ] ) != null ) { + + // Extend the base object + for ( name in options ) { + src = target[ name ]; + copy = options[ name ]; + + // Prevent never-ending loop + if ( target === copy ) { + continue; + } + + // Recurse if we're merging plain objects or arrays + if ( deep && copy && ( jQuery.isPlainObject( copy ) || + ( copyIsArray = Array.isArray( copy ) ) ) ) { + + if ( copyIsArray ) { + copyIsArray = false; + clone = src && Array.isArray( src ) ? src : []; + + } else { + clone = src && jQuery.isPlainObject( src ) ? src : {}; + } + + // Never move original objects, clone them + target[ name ] = jQuery.extend( deep, clone, copy ); + + // Don't bring in undefined values + } else if ( copy !== undefined ) { + target[ name ] = copy; + } + } + } + } + + // Return the modified object + return target; +}; + +jQuery.extend( { + + // Unique for each copy of jQuery on the page + expando: "jQuery" + ( version + Math.random() ).replace( /\D/g, "" ), + + // Assume jQuery is ready without the ready module + isReady: true, + + error: function( msg ) { + throw new Error( msg ); + }, + + noop: function() {}, + + isFunction: function( obj ) { + return jQuery.type( obj ) === "function"; + }, + + isWindow: function( obj ) { + return obj != null && obj === obj.window; + }, + + isNumeric: function( obj ) { + + // As of jQuery 3.0, isNumeric is limited to + // strings and numbers (primitives or objects) + // that can be coerced to finite numbers (gh-2662) + var type = jQuery.type( obj ); + return ( type === "number" || type === "string" ) && + + // parseFloat NaNs numeric-cast false positives ("") + // ...but misinterprets leading-number strings, particularly hex literals ("0x...") + // subtraction forces infinities to NaN + !isNaN( obj - parseFloat( obj ) ); + }, + + isPlainObject: function( obj ) { + var proto, Ctor; + + // Detect obvious negatives + // Use toString instead of jQuery.type to catch host objects + if ( !obj || toString.call( obj ) !== "[object Object]" ) { + return false; + } + + proto = getProto( obj ); + + // Objects with no prototype (e.g., `Object.create( null )`) are plain + if ( !proto ) { + return true; + } + + // Objects with prototype are plain iff they were constructed by a global Object function + Ctor = hasOwn.call( proto, "constructor" ) && proto.constructor; + return typeof Ctor === "function" && fnToString.call( Ctor ) === ObjectFunctionString; + }, + + isEmptyObject: function( obj ) { + + /* eslint-disable no-unused-vars */ + // See https://github.com/eslint/eslint/issues/6125 + var name; + + for ( name in obj ) { + return false; + } + return true; + }, + + type: function( obj ) { + if ( obj == null ) { + return obj + ""; + } + + // Support: Android <=2.3 only (functionish RegExp) + return typeof obj === "object" || typeof obj === "function" ? + class2type[ toString.call( obj ) ] || "object" : + typeof obj; + }, + + // Evaluates a script in a global context + globalEval: function( code ) { + DOMEval( code ); + }, + + // Convert dashed to camelCase; used by the css and data modules + // Support: IE <=9 - 11, Edge 12 - 13 + // Microsoft forgot to hump their vendor prefix (#9572) + camelCase: function( string ) { + return string.replace( rmsPrefix, "ms-" ).replace( rdashAlpha, fcamelCase ); + }, + + each: function( obj, callback ) { + var length, i = 0; + + if ( isArrayLike( obj ) ) { + length = obj.length; + for ( ; i < length; i++ ) { + if ( callback.call( obj[ i ], i, obj[ i ] ) === false ) { + break; + } + } + } else { + for ( i in obj ) { + if ( callback.call( obj[ i ], i, obj[ i ] ) === false ) { + break; + } + } + } + + return obj; + }, + + // Support: Android <=4.0 only + trim: function( text ) { + return text == null ? + "" : + ( text + "" ).replace( rtrim, "" ); + }, + + // results is for internal usage only + makeArray: function( arr, results ) { + var ret = results || []; + + if ( arr != null ) { + if ( isArrayLike( Object( arr ) ) ) { + jQuery.merge( ret, + typeof arr === "string" ? + [ arr ] : arr + ); + } else { + push.call( ret, arr ); + } + } + + return ret; + }, + + inArray: function( elem, arr, i ) { + return arr == null ? -1 : indexOf.call( arr, elem, i ); + }, + + // Support: Android <=4.0 only, PhantomJS 1 only + // push.apply(_, arraylike) throws on ancient WebKit + merge: function( first, second ) { + var len = +second.length, + j = 0, + i = first.length; + + for ( ; j < len; j++ ) { + first[ i++ ] = second[ j ]; + } + + first.length = i; + + return first; + }, + + grep: function( elems, callback, invert ) { + var callbackInverse, + matches = [], + i = 0, + length = elems.length, + callbackExpect = !invert; + + // Go through the array, only saving the items + // that pass the validator function + for ( ; i < length; i++ ) { + callbackInverse = !callback( elems[ i ], i ); + if ( callbackInverse !== callbackExpect ) { + matches.push( elems[ i ] ); + } + } + + return matches; + }, + + // arg is for internal usage only + map: function( elems, callback, arg ) { + var length, value, + i = 0, + ret = []; + + // Go through the array, translating each of the items to their new values + if ( isArrayLike( elems ) ) { + length = elems.length; + for ( ; i < length; i++ ) { + value = callback( elems[ i ], i, arg ); + + if ( value != null ) { + ret.push( value ); + } + } + + // Go through every key on the object, + } else { + for ( i in elems ) { + value = callback( elems[ i ], i, arg ); + + if ( value != null ) { + ret.push( value ); + } + } + } + + // Flatten any nested arrays + return concat.apply( [], ret ); + }, + + // A global GUID counter for objects + guid: 1, + + // Bind a function to a context, optionally partially applying any + // arguments. + proxy: function( fn, context ) { + var tmp, args, proxy; + + if ( typeof context === "string" ) { + tmp = fn[ context ]; + context = fn; + fn = tmp; + } + + // Quick check to determine if target is callable, in the spec + // this throws a TypeError, but we will just return undefined. + if ( !jQuery.isFunction( fn ) ) { + return undefined; + } + + // Simulated bind + args = slice.call( arguments, 2 ); + proxy = function() { + return fn.apply( context || this, args.concat( slice.call( arguments ) ) ); + }; + + // Set the guid of unique handler to the same of original handler, so it can be removed + proxy.guid = fn.guid = fn.guid || jQuery.guid++; + + return proxy; + }, + + now: Date.now, + + // jQuery.support is not used in Core but other projects attach their + // properties to it so it needs to exist. + support: support +} ); + +if ( typeof Symbol === "function" ) { + jQuery.fn[ Symbol.iterator ] = arr[ Symbol.iterator ]; +} + +// Populate the class2type map +jQuery.each( "Boolean Number String Function Array Date RegExp Object Error Symbol".split( " " ), +function( i, name ) { + class2type[ "[object " + name + "]" ] = name.toLowerCase(); +} ); + +function isArrayLike( obj ) { + + // Support: real iOS 8.2 only (not reproducible in simulator) + // `in` check used to prevent JIT error (gh-2145) + // hasOwn isn't used here due to false negatives + // regarding Nodelist length in IE + var length = !!obj && "length" in obj && obj.length, + type = jQuery.type( obj ); + + if ( type === "function" || jQuery.isWindow( obj ) ) { + return false; + } + + return type === "array" || length === 0 || + typeof length === "number" && length > 0 && ( length - 1 ) in obj; +} +var Sizzle = +/*! + * Sizzle CSS Selector Engine v2.3.3 + * https://sizzlejs.com/ + * + * Copyright jQuery Foundation and other contributors + * Released under the MIT license + * http://jquery.org/license + * + * Date: 2016-08-08 + */ +(function( window ) { + +var i, + support, + Expr, + getText, + isXML, + tokenize, + compile, + select, + outermostContext, + sortInput, + hasDuplicate, + + // Local document vars + setDocument, + document, + docElem, + documentIsHTML, + rbuggyQSA, + rbuggyMatches, + matches, + contains, + + // Instance-specific data + expando = "sizzle" + 1 * new Date(), + preferredDoc = window.document, + dirruns = 0, + done = 0, + classCache = createCache(), + tokenCache = createCache(), + compilerCache = createCache(), + sortOrder = function( a, b ) { + if ( a === b ) { + hasDuplicate = true; + } + return 0; + }, + + // Instance methods + hasOwn = ({}).hasOwnProperty, + arr = [], + pop = arr.pop, + push_native = arr.push, + push = arr.push, + slice = arr.slice, + // Use a stripped-down indexOf as it's faster than native + // https://jsperf.com/thor-indexof-vs-for/5 + indexOf = function( list, elem ) { + var i = 0, + len = list.length; + for ( ; i < len; i++ ) { + if ( list[i] === elem ) { + return i; + } + } + return -1; + }, + + booleans = "checked|selected|async|autofocus|autoplay|controls|defer|disabled|hidden|ismap|loop|multiple|open|readonly|required|scoped", + + // Regular expressions + + // http://www.w3.org/TR/css3-selectors/#whitespace + whitespace = "[\\x20\\t\\r\\n\\f]", + + // http://www.w3.org/TR/CSS21/syndata.html#value-def-identifier + identifier = "(?:\\\\.|[\\w-]|[^\0-\\xa0])+", + + // Attribute selectors: http://www.w3.org/TR/selectors/#attribute-selectors + attributes = "\\[" + whitespace + "*(" + identifier + ")(?:" + whitespace + + // Operator (capture 2) + "*([*^$|!~]?=)" + whitespace + + // "Attribute values must be CSS identifiers [capture 5] or strings [capture 3 or capture 4]" + "*(?:'((?:\\\\.|[^\\\\'])*)'|\"((?:\\\\.|[^\\\\\"])*)\"|(" + identifier + "))|)" + whitespace + + "*\\]", + + pseudos = ":(" + identifier + ")(?:\\((" + + // To reduce the number of selectors needing tokenize in the preFilter, prefer arguments: + // 1. quoted (capture 3; capture 4 or capture 5) + "('((?:\\\\.|[^\\\\'])*)'|\"((?:\\\\.|[^\\\\\"])*)\")|" + + // 2. simple (capture 6) + "((?:\\\\.|[^\\\\()[\\]]|" + attributes + ")*)|" + + // 3. anything else (capture 2) + ".*" + + ")\\)|)", + + // Leading and non-escaped trailing whitespace, capturing some non-whitespace characters preceding the latter + rwhitespace = new RegExp( whitespace + "+", "g" ), + rtrim = new RegExp( "^" + whitespace + "+|((?:^|[^\\\\])(?:\\\\.)*)" + whitespace + "+$", "g" ), + + rcomma = new RegExp( "^" + whitespace + "*," + whitespace + "*" ), + rcombinators = new RegExp( "^" + whitespace + "*([>+~]|" + whitespace + ")" + whitespace + "*" ), + + rattributeQuotes = new RegExp( "=" + whitespace + "*([^\\]'\"]*?)" + whitespace + "*\\]", "g" ), + + rpseudo = new RegExp( pseudos ), + ridentifier = new RegExp( "^" + identifier + "$" ), + + matchExpr = { + "ID": new RegExp( "^#(" + identifier + ")" ), + "CLASS": new RegExp( "^\\.(" + identifier + ")" ), + "TAG": new RegExp( "^(" + identifier + "|[*])" ), + "ATTR": new RegExp( "^" + attributes ), + "PSEUDO": new RegExp( "^" + pseudos ), + "CHILD": new RegExp( "^:(only|first|last|nth|nth-last)-(child|of-type)(?:\\(" + whitespace + + "*(even|odd|(([+-]|)(\\d*)n|)" + whitespace + "*(?:([+-]|)" + whitespace + + "*(\\d+)|))" + whitespace + "*\\)|)", "i" ), + "bool": new RegExp( "^(?:" + booleans + ")$", "i" ), + // For use in libraries implementing .is() + // We use this for POS matching in `select` + "needsContext": new RegExp( "^" + whitespace + "*[>+~]|:(even|odd|eq|gt|lt|nth|first|last)(?:\\(" + + whitespace + "*((?:-\\d)?\\d*)" + whitespace + "*\\)|)(?=[^-]|$)", "i" ) + }, + + rinputs = /^(?:input|select|textarea|button)$/i, + rheader = /^h\d$/i, + + rnative = /^[^{]+\{\s*\[native \w/, + + // Easily-parseable/retrievable ID or TAG or CLASS selectors + rquickExpr = /^(?:#([\w-]+)|(\w+)|\.([\w-]+))$/, + + rsibling = /[+~]/, + + // CSS escapes + // http://www.w3.org/TR/CSS21/syndata.html#escaped-characters + runescape = new RegExp( "\\\\([\\da-f]{1,6}" + whitespace + "?|(" + whitespace + ")|.)", "ig" ), + funescape = function( _, escaped, escapedWhitespace ) { + var high = "0x" + escaped - 0x10000; + // NaN means non-codepoint + // Support: Firefox<24 + // Workaround erroneous numeric interpretation of +"0x" + return high !== high || escapedWhitespace ? + escaped : + high < 0 ? + // BMP codepoint + String.fromCharCode( high + 0x10000 ) : + // Supplemental Plane codepoint (surrogate pair) + String.fromCharCode( high >> 10 | 0xD800, high & 0x3FF | 0xDC00 ); + }, + + // CSS string/identifier serialization + // https://drafts.csswg.org/cssom/#common-serializing-idioms + rcssescape = /([\0-\x1f\x7f]|^-?\d)|^-$|[^\0-\x1f\x7f-\uFFFF\w-]/g, + fcssescape = function( ch, asCodePoint ) { + if ( asCodePoint ) { + + // U+0000 NULL becomes U+FFFD REPLACEMENT CHARACTER + if ( ch === "\0" ) { + return "\uFFFD"; + } + + // Control characters and (dependent upon position) numbers get escaped as code points + return ch.slice( 0, -1 ) + "\\" + ch.charCodeAt( ch.length - 1 ).toString( 16 ) + " "; + } + + // Other potentially-special ASCII characters get backslash-escaped + return "\\" + ch; + }, + + // Used for iframes + // See setDocument() + // Removing the function wrapper causes a "Permission Denied" + // error in IE + unloadHandler = function() { + setDocument(); + }, + + disabledAncestor = addCombinator( + function( elem ) { + return elem.disabled === true && ("form" in elem || "label" in elem); + }, + { dir: "parentNode", next: "legend" } + ); + +// Optimize for push.apply( _, NodeList ) +try { + push.apply( + (arr = slice.call( preferredDoc.childNodes )), + preferredDoc.childNodes + ); + // Support: Android<4.0 + // Detect silently failing push.apply + arr[ preferredDoc.childNodes.length ].nodeType; +} catch ( e ) { + push = { apply: arr.length ? + + // Leverage slice if possible + function( target, els ) { + push_native.apply( target, slice.call(els) ); + } : + + // Support: IE<9 + // Otherwise append directly + function( target, els ) { + var j = target.length, + i = 0; + // Can't trust NodeList.length + while ( (target[j++] = els[i++]) ) {} + target.length = j - 1; + } + }; +} + +function Sizzle( selector, context, results, seed ) { + var m, i, elem, nid, match, groups, newSelector, + newContext = context && context.ownerDocument, + + // nodeType defaults to 9, since context defaults to document + nodeType = context ? context.nodeType : 9; + + results = results || []; + + // Return early from calls with invalid selector or context + if ( typeof selector !== "string" || !selector || + nodeType !== 1 && nodeType !== 9 && nodeType !== 11 ) { + + return results; + } + + // Try to shortcut find operations (as opposed to filters) in HTML documents + if ( !seed ) { + + if ( ( context ? context.ownerDocument || context : preferredDoc ) !== document ) { + setDocument( context ); + } + context = context || document; + + if ( documentIsHTML ) { + + // If the selector is sufficiently simple, try using a "get*By*" DOM method + // (excepting DocumentFragment context, where the methods don't exist) + if ( nodeType !== 11 && (match = rquickExpr.exec( selector )) ) { + + // ID selector + if ( (m = match[1]) ) { + + // Document context + if ( nodeType === 9 ) { + if ( (elem = context.getElementById( m )) ) { + + // Support: IE, Opera, Webkit + // TODO: identify versions + // getElementById can match elements by name instead of ID + if ( elem.id === m ) { + results.push( elem ); + return results; + } + } else { + return results; + } + + // Element context + } else { + + // Support: IE, Opera, Webkit + // TODO: identify versions + // getElementById can match elements by name instead of ID + if ( newContext && (elem = newContext.getElementById( m )) && + contains( context, elem ) && + elem.id === m ) { + + results.push( elem ); + return results; + } + } + + // Type selector + } else if ( match[2] ) { + push.apply( results, context.getElementsByTagName( selector ) ); + return results; + + // Class selector + } else if ( (m = match[3]) && support.getElementsByClassName && + context.getElementsByClassName ) { + + push.apply( results, context.getElementsByClassName( m ) ); + return results; + } + } + + // Take advantage of querySelectorAll + if ( support.qsa && + !compilerCache[ selector + " " ] && + (!rbuggyQSA || !rbuggyQSA.test( selector )) ) { + + if ( nodeType !== 1 ) { + newContext = context; + newSelector = selector; + + // qSA looks outside Element context, which is not what we want + // Thanks to Andrew Dupont for this workaround technique + // Support: IE <=8 + // Exclude object elements + } else if ( context.nodeName.toLowerCase() !== "object" ) { + + // Capture the context ID, setting it first if necessary + if ( (nid = context.getAttribute( "id" )) ) { + nid = nid.replace( rcssescape, fcssescape ); + } else { + context.setAttribute( "id", (nid = expando) ); + } + + // Prefix every selector in the list + groups = tokenize( selector ); + i = groups.length; + while ( i-- ) { + groups[i] = "#" + nid + " " + toSelector( groups[i] ); + } + newSelector = groups.join( "," ); + + // Expand context for sibling selectors + newContext = rsibling.test( selector ) && testContext( context.parentNode ) || + context; + } + + if ( newSelector ) { + try { + push.apply( results, + newContext.querySelectorAll( newSelector ) + ); + return results; + } catch ( qsaError ) { + } finally { + if ( nid === expando ) { + context.removeAttribute( "id" ); + } + } + } + } + } + } + + // All others + return select( selector.replace( rtrim, "$1" ), context, results, seed ); +} + +/** + * Create key-value caches of limited size + * @returns {function(string, object)} Returns the Object data after storing it on itself with + * property name the (space-suffixed) string and (if the cache is larger than Expr.cacheLength) + * deleting the oldest entry + */ +function createCache() { + var keys = []; + + function cache( key, value ) { + // Use (key + " ") to avoid collision with native prototype properties (see Issue #157) + if ( keys.push( key + " " ) > Expr.cacheLength ) { + // Only keep the most recent entries + delete cache[ keys.shift() ]; + } + return (cache[ key + " " ] = value); + } + return cache; +} + +/** + * Mark a function for special use by Sizzle + * @param {Function} fn The function to mark + */ +function markFunction( fn ) { + fn[ expando ] = true; + return fn; +} + +/** + * Support testing using an element + * @param {Function} fn Passed the created element and returns a boolean result + */ +function assert( fn ) { + var el = document.createElement("fieldset"); + + try { + return !!fn( el ); + } catch (e) { + return false; + } finally { + // Remove from its parent by default + if ( el.parentNode ) { + el.parentNode.removeChild( el ); + } + // release memory in IE + el = null; + } +} + +/** + * Adds the same handler for all of the specified attrs + * @param {String} attrs Pipe-separated list of attributes + * @param {Function} handler The method that will be applied + */ +function addHandle( attrs, handler ) { + var arr = attrs.split("|"), + i = arr.length; + + while ( i-- ) { + Expr.attrHandle[ arr[i] ] = handler; + } +} + +/** + * Checks document order of two siblings + * @param {Element} a + * @param {Element} b + * @returns {Number} Returns less than 0 if a precedes b, greater than 0 if a follows b + */ +function siblingCheck( a, b ) { + var cur = b && a, + diff = cur && a.nodeType === 1 && b.nodeType === 1 && + a.sourceIndex - b.sourceIndex; + + // Use IE sourceIndex if available on both nodes + if ( diff ) { + return diff; + } + + // Check if b follows a + if ( cur ) { + while ( (cur = cur.nextSibling) ) { + if ( cur === b ) { + return -1; + } + } + } + + return a ? 1 : -1; +} + +/** + * Returns a function to use in pseudos for input types + * @param {String} type + */ +function createInputPseudo( type ) { + return function( elem ) { + var name = elem.nodeName.toLowerCase(); + return name === "input" && elem.type === type; + }; +} + +/** + * Returns a function to use in pseudos for buttons + * @param {String} type + */ +function createButtonPseudo( type ) { + return function( elem ) { + var name = elem.nodeName.toLowerCase(); + return (name === "input" || name === "button") && elem.type === type; + }; +} + +/** + * Returns a function to use in pseudos for :enabled/:disabled + * @param {Boolean} disabled true for :disabled; false for :enabled + */ +function createDisabledPseudo( disabled ) { + + // Known :disabled false positives: fieldset[disabled] > legend:nth-of-type(n+2) :can-disable + return function( elem ) { + + // Only certain elements can match :enabled or :disabled + // https://html.spec.whatwg.org/multipage/scripting.html#selector-enabled + // https://html.spec.whatwg.org/multipage/scripting.html#selector-disabled + if ( "form" in elem ) { + + // Check for inherited disabledness on relevant non-disabled elements: + // * listed form-associated elements in a disabled fieldset + // https://html.spec.whatwg.org/multipage/forms.html#category-listed + // https://html.spec.whatwg.org/multipage/forms.html#concept-fe-disabled + // * option elements in a disabled optgroup + // https://html.spec.whatwg.org/multipage/forms.html#concept-option-disabled + // All such elements have a "form" property. + if ( elem.parentNode && elem.disabled === false ) { + + // Option elements defer to a parent optgroup if present + if ( "label" in elem ) { + if ( "label" in elem.parentNode ) { + return elem.parentNode.disabled === disabled; + } else { + return elem.disabled === disabled; + } + } + + // Support: IE 6 - 11 + // Use the isDisabled shortcut property to check for disabled fieldset ancestors + return elem.isDisabled === disabled || + + // Where there is no isDisabled, check manually + /* jshint -W018 */ + elem.isDisabled !== !disabled && + disabledAncestor( elem ) === disabled; + } + + return elem.disabled === disabled; + + // Try to winnow out elements that can't be disabled before trusting the disabled property. + // Some victims get caught in our net (label, legend, menu, track), but it shouldn't + // even exist on them, let alone have a boolean value. + } else if ( "label" in elem ) { + return elem.disabled === disabled; + } + + // Remaining elements are neither :enabled nor :disabled + return false; + }; +} + +/** + * Returns a function to use in pseudos for positionals + * @param {Function} fn + */ +function createPositionalPseudo( fn ) { + return markFunction(function( argument ) { + argument = +argument; + return markFunction(function( seed, matches ) { + var j, + matchIndexes = fn( [], seed.length, argument ), + i = matchIndexes.length; + + // Match elements found at the specified indexes + while ( i-- ) { + if ( seed[ (j = matchIndexes[i]) ] ) { + seed[j] = !(matches[j] = seed[j]); + } + } + }); + }); +} + +/** + * Checks a node for validity as a Sizzle context + * @param {Element|Object=} context + * @returns {Element|Object|Boolean} The input node if acceptable, otherwise a falsy value + */ +function testContext( context ) { + return context && typeof context.getElementsByTagName !== "undefined" && context; +} + +// Expose support vars for convenience +support = Sizzle.support = {}; + +/** + * Detects XML nodes + * @param {Element|Object} elem An element or a document + * @returns {Boolean} True iff elem is a non-HTML XML node + */ +isXML = Sizzle.isXML = function( elem ) { + // documentElement is verified for cases where it doesn't yet exist + // (such as loading iframes in IE - #4833) + var documentElement = elem && (elem.ownerDocument || elem).documentElement; + return documentElement ? documentElement.nodeName !== "HTML" : false; +}; + +/** + * Sets document-related variables once based on the current document + * @param {Element|Object} [doc] An element or document object to use to set the document + * @returns {Object} Returns the current document + */ +setDocument = Sizzle.setDocument = function( node ) { + var hasCompare, subWindow, + doc = node ? node.ownerDocument || node : preferredDoc; + + // Return early if doc is invalid or already selected + if ( doc === document || doc.nodeType !== 9 || !doc.documentElement ) { + return document; + } + + // Update global variables + document = doc; + docElem = document.documentElement; + documentIsHTML = !isXML( document ); + + // Support: IE 9-11, Edge + // Accessing iframe documents after unload throws "permission denied" errors (jQuery #13936) + if ( preferredDoc !== document && + (subWindow = document.defaultView) && subWindow.top !== subWindow ) { + + // Support: IE 11, Edge + if ( subWindow.addEventListener ) { + subWindow.addEventListener( "unload", unloadHandler, false ); + + // Support: IE 9 - 10 only + } else if ( subWindow.attachEvent ) { + subWindow.attachEvent( "onunload", unloadHandler ); + } + } + + /* Attributes + ---------------------------------------------------------------------- */ + + // Support: IE<8 + // Verify that getAttribute really returns attributes and not properties + // (excepting IE8 booleans) + support.attributes = assert(function( el ) { + el.className = "i"; + return !el.getAttribute("className"); + }); + + /* getElement(s)By* + ---------------------------------------------------------------------- */ + + // Check if getElementsByTagName("*") returns only elements + support.getElementsByTagName = assert(function( el ) { + el.appendChild( document.createComment("") ); + return !el.getElementsByTagName("*").length; + }); + + // Support: IE<9 + support.getElementsByClassName = rnative.test( document.getElementsByClassName ); + + // Support: IE<10 + // Check if getElementById returns elements by name + // The broken getElementById methods don't pick up programmatically-set names, + // so use a roundabout getElementsByName test + support.getById = assert(function( el ) { + docElem.appendChild( el ).id = expando; + return !document.getElementsByName || !document.getElementsByName( expando ).length; + }); + + // ID filter and find + if ( support.getById ) { + Expr.filter["ID"] = function( id ) { + var attrId = id.replace( runescape, funescape ); + return function( elem ) { + return elem.getAttribute("id") === attrId; + }; + }; + Expr.find["ID"] = function( id, context ) { + if ( typeof context.getElementById !== "undefined" && documentIsHTML ) { + var elem = context.getElementById( id ); + return elem ? [ elem ] : []; + } + }; + } else { + Expr.filter["ID"] = function( id ) { + var attrId = id.replace( runescape, funescape ); + return function( elem ) { + var node = typeof elem.getAttributeNode !== "undefined" && + elem.getAttributeNode("id"); + return node && node.value === attrId; + }; + }; + + // Support: IE 6 - 7 only + // getElementById is not reliable as a find shortcut + Expr.find["ID"] = function( id, context ) { + if ( typeof context.getElementById !== "undefined" && documentIsHTML ) { + var node, i, elems, + elem = context.getElementById( id ); + + if ( elem ) { + + // Verify the id attribute + node = elem.getAttributeNode("id"); + if ( node && node.value === id ) { + return [ elem ]; + } + + // Fall back on getElementsByName + elems = context.getElementsByName( id ); + i = 0; + while ( (elem = elems[i++]) ) { + node = elem.getAttributeNode("id"); + if ( node && node.value === id ) { + return [ elem ]; + } + } + } + + return []; + } + }; + } + + // Tag + Expr.find["TAG"] = support.getElementsByTagName ? + function( tag, context ) { + if ( typeof context.getElementsByTagName !== "undefined" ) { + return context.getElementsByTagName( tag ); + + // DocumentFragment nodes don't have gEBTN + } else if ( support.qsa ) { + return context.querySelectorAll( tag ); + } + } : + + function( tag, context ) { + var elem, + tmp = [], + i = 0, + // By happy coincidence, a (broken) gEBTN appears on DocumentFragment nodes too + results = context.getElementsByTagName( tag ); + + // Filter out possible comments + if ( tag === "*" ) { + while ( (elem = results[i++]) ) { + if ( elem.nodeType === 1 ) { + tmp.push( elem ); + } + } + + return tmp; + } + return results; + }; + + // Class + Expr.find["CLASS"] = support.getElementsByClassName && function( className, context ) { + if ( typeof context.getElementsByClassName !== "undefined" && documentIsHTML ) { + return context.getElementsByClassName( className ); + } + }; + + /* QSA/matchesSelector + ---------------------------------------------------------------------- */ + + // QSA and matchesSelector support + + // matchesSelector(:active) reports false when true (IE9/Opera 11.5) + rbuggyMatches = []; + + // qSa(:focus) reports false when true (Chrome 21) + // We allow this because of a bug in IE8/9 that throws an error + // whenever `document.activeElement` is accessed on an iframe + // So, we allow :focus to pass through QSA all the time to avoid the IE error + // See https://bugs.jquery.com/ticket/13378 + rbuggyQSA = []; + + if ( (support.qsa = rnative.test( document.querySelectorAll )) ) { + // Build QSA regex + // Regex strategy adopted from Diego Perini + assert(function( el ) { + // Select is set to empty string on purpose + // This is to test IE's treatment of not explicitly + // setting a boolean content attribute, + // since its presence should be enough + // https://bugs.jquery.com/ticket/12359 + docElem.appendChild( el ).innerHTML = "" + + ""; + + // Support: IE8, Opera 11-12.16 + // Nothing should be selected when empty strings follow ^= or $= or *= + // The test attribute must be unknown in Opera but "safe" for WinRT + // https://msdn.microsoft.com/en-us/library/ie/hh465388.aspx#attribute_section + if ( el.querySelectorAll("[msallowcapture^='']").length ) { + rbuggyQSA.push( "[*^$]=" + whitespace + "*(?:''|\"\")" ); + } + + // Support: IE8 + // Boolean attributes and "value" are not treated correctly + if ( !el.querySelectorAll("[selected]").length ) { + rbuggyQSA.push( "\\[" + whitespace + "*(?:value|" + booleans + ")" ); + } + + // Support: Chrome<29, Android<4.4, Safari<7.0+, iOS<7.0+, PhantomJS<1.9.8+ + if ( !el.querySelectorAll( "[id~=" + expando + "-]" ).length ) { + rbuggyQSA.push("~="); + } + + // Webkit/Opera - :checked should return selected option elements + // http://www.w3.org/TR/2011/REC-css3-selectors-20110929/#checked + // IE8 throws error here and will not see later tests + if ( !el.querySelectorAll(":checked").length ) { + rbuggyQSA.push(":checked"); + } + + // Support: Safari 8+, iOS 8+ + // https://bugs.webkit.org/show_bug.cgi?id=136851 + // In-page `selector#id sibling-combinator selector` fails + if ( !el.querySelectorAll( "a#" + expando + "+*" ).length ) { + rbuggyQSA.push(".#.+[+~]"); + } + }); + + assert(function( el ) { + el.innerHTML = "" + + ""; + + // Support: Windows 8 Native Apps + // The type and name attributes are restricted during .innerHTML assignment + var input = document.createElement("input"); + input.setAttribute( "type", "hidden" ); + el.appendChild( input ).setAttribute( "name", "D" ); + + // Support: IE8 + // Enforce case-sensitivity of name attribute + if ( el.querySelectorAll("[name=d]").length ) { + rbuggyQSA.push( "name" + whitespace + "*[*^$|!~]?=" ); + } + + // FF 3.5 - :enabled/:disabled and hidden elements (hidden elements are still enabled) + // IE8 throws error here and will not see later tests + if ( el.querySelectorAll(":enabled").length !== 2 ) { + rbuggyQSA.push( ":enabled", ":disabled" ); + } + + // Support: IE9-11+ + // IE's :disabled selector does not pick up the children of disabled fieldsets + docElem.appendChild( el ).disabled = true; + if ( el.querySelectorAll(":disabled").length !== 2 ) { + rbuggyQSA.push( ":enabled", ":disabled" ); + } + + // Opera 10-11 does not throw on post-comma invalid pseudos + el.querySelectorAll("*,:x"); + rbuggyQSA.push(",.*:"); + }); + } + + if ( (support.matchesSelector = rnative.test( (matches = docElem.matches || + docElem.webkitMatchesSelector || + docElem.mozMatchesSelector || + docElem.oMatchesSelector || + docElem.msMatchesSelector) )) ) { + + assert(function( el ) { + // Check to see if it's possible to do matchesSelector + // on a disconnected node (IE 9) + support.disconnectedMatch = matches.call( el, "*" ); + + // This should fail with an exception + // Gecko does not error, returns false instead + matches.call( el, "[s!='']:x" ); + rbuggyMatches.push( "!=", pseudos ); + }); + } + + rbuggyQSA = rbuggyQSA.length && new RegExp( rbuggyQSA.join("|") ); + rbuggyMatches = rbuggyMatches.length && new RegExp( rbuggyMatches.join("|") ); + + /* Contains + ---------------------------------------------------------------------- */ + hasCompare = rnative.test( docElem.compareDocumentPosition ); + + // Element contains another + // Purposefully self-exclusive + // As in, an element does not contain itself + contains = hasCompare || rnative.test( docElem.contains ) ? + function( a, b ) { + var adown = a.nodeType === 9 ? a.documentElement : a, + bup = b && b.parentNode; + return a === bup || !!( bup && bup.nodeType === 1 && ( + adown.contains ? + adown.contains( bup ) : + a.compareDocumentPosition && a.compareDocumentPosition( bup ) & 16 + )); + } : + function( a, b ) { + if ( b ) { + while ( (b = b.parentNode) ) { + if ( b === a ) { + return true; + } + } + } + return false; + }; + + /* Sorting + ---------------------------------------------------------------------- */ + + // Document order sorting + sortOrder = hasCompare ? + function( a, b ) { + + // Flag for duplicate removal + if ( a === b ) { + hasDuplicate = true; + return 0; + } + + // Sort on method existence if only one input has compareDocumentPosition + var compare = !a.compareDocumentPosition - !b.compareDocumentPosition; + if ( compare ) { + return compare; + } + + // Calculate position if both inputs belong to the same document + compare = ( a.ownerDocument || a ) === ( b.ownerDocument || b ) ? + a.compareDocumentPosition( b ) : + + // Otherwise we know they are disconnected + 1; + + // Disconnected nodes + if ( compare & 1 || + (!support.sortDetached && b.compareDocumentPosition( a ) === compare) ) { + + // Choose the first element that is related to our preferred document + if ( a === document || a.ownerDocument === preferredDoc && contains(preferredDoc, a) ) { + return -1; + } + if ( b === document || b.ownerDocument === preferredDoc && contains(preferredDoc, b) ) { + return 1; + } + + // Maintain original order + return sortInput ? + ( indexOf( sortInput, a ) - indexOf( sortInput, b ) ) : + 0; + } + + return compare & 4 ? -1 : 1; + } : + function( a, b ) { + // Exit early if the nodes are identical + if ( a === b ) { + hasDuplicate = true; + return 0; + } + + var cur, + i = 0, + aup = a.parentNode, + bup = b.parentNode, + ap = [ a ], + bp = [ b ]; + + // Parentless nodes are either documents or disconnected + if ( !aup || !bup ) { + return a === document ? -1 : + b === document ? 1 : + aup ? -1 : + bup ? 1 : + sortInput ? + ( indexOf( sortInput, a ) - indexOf( sortInput, b ) ) : + 0; + + // If the nodes are siblings, we can do a quick check + } else if ( aup === bup ) { + return siblingCheck( a, b ); + } + + // Otherwise we need full lists of their ancestors for comparison + cur = a; + while ( (cur = cur.parentNode) ) { + ap.unshift( cur ); + } + cur = b; + while ( (cur = cur.parentNode) ) { + bp.unshift( cur ); + } + + // Walk down the tree looking for a discrepancy + while ( ap[i] === bp[i] ) { + i++; + } + + return i ? + // Do a sibling check if the nodes have a common ancestor + siblingCheck( ap[i], bp[i] ) : + + // Otherwise nodes in our document sort first + ap[i] === preferredDoc ? -1 : + bp[i] === preferredDoc ? 1 : + 0; + }; + + return document; +}; + +Sizzle.matches = function( expr, elements ) { + return Sizzle( expr, null, null, elements ); +}; + +Sizzle.matchesSelector = function( elem, expr ) { + // Set document vars if needed + if ( ( elem.ownerDocument || elem ) !== document ) { + setDocument( elem ); + } + + // Make sure that attribute selectors are quoted + expr = expr.replace( rattributeQuotes, "='$1']" ); + + if ( support.matchesSelector && documentIsHTML && + !compilerCache[ expr + " " ] && + ( !rbuggyMatches || !rbuggyMatches.test( expr ) ) && + ( !rbuggyQSA || !rbuggyQSA.test( expr ) ) ) { + + try { + var ret = matches.call( elem, expr ); + + // IE 9's matchesSelector returns false on disconnected nodes + if ( ret || support.disconnectedMatch || + // As well, disconnected nodes are said to be in a document + // fragment in IE 9 + elem.document && elem.document.nodeType !== 11 ) { + return ret; + } + } catch (e) {} + } + + return Sizzle( expr, document, null, [ elem ] ).length > 0; +}; + +Sizzle.contains = function( context, elem ) { + // Set document vars if needed + if ( ( context.ownerDocument || context ) !== document ) { + setDocument( context ); + } + return contains( context, elem ); +}; + +Sizzle.attr = function( elem, name ) { + // Set document vars if needed + if ( ( elem.ownerDocument || elem ) !== document ) { + setDocument( elem ); + } + + var fn = Expr.attrHandle[ name.toLowerCase() ], + // Don't get fooled by Object.prototype properties (jQuery #13807) + val = fn && hasOwn.call( Expr.attrHandle, name.toLowerCase() ) ? + fn( elem, name, !documentIsHTML ) : + undefined; + + return val !== undefined ? + val : + support.attributes || !documentIsHTML ? + elem.getAttribute( name ) : + (val = elem.getAttributeNode(name)) && val.specified ? + val.value : + null; +}; + +Sizzle.escape = function( sel ) { + return (sel + "").replace( rcssescape, fcssescape ); +}; + +Sizzle.error = function( msg ) { + throw new Error( "Syntax error, unrecognized expression: " + msg ); +}; + +/** + * Document sorting and removing duplicates + * @param {ArrayLike} results + */ +Sizzle.uniqueSort = function( results ) { + var elem, + duplicates = [], + j = 0, + i = 0; + + // Unless we *know* we can detect duplicates, assume their presence + hasDuplicate = !support.detectDuplicates; + sortInput = !support.sortStable && results.slice( 0 ); + results.sort( sortOrder ); + + if ( hasDuplicate ) { + while ( (elem = results[i++]) ) { + if ( elem === results[ i ] ) { + j = duplicates.push( i ); + } + } + while ( j-- ) { + results.splice( duplicates[ j ], 1 ); + } + } + + // Clear input after sorting to release objects + // See https://github.com/jquery/sizzle/pull/225 + sortInput = null; + + return results; +}; + +/** + * Utility function for retrieving the text value of an array of DOM nodes + * @param {Array|Element} elem + */ +getText = Sizzle.getText = function( elem ) { + var node, + ret = "", + i = 0, + nodeType = elem.nodeType; + + if ( !nodeType ) { + // If no nodeType, this is expected to be an array + while ( (node = elem[i++]) ) { + // Do not traverse comment nodes + ret += getText( node ); + } + } else if ( nodeType === 1 || nodeType === 9 || nodeType === 11 ) { + // Use textContent for elements + // innerText usage removed for consistency of new lines (jQuery #11153) + if ( typeof elem.textContent === "string" ) { + return elem.textContent; + } else { + // Traverse its children + for ( elem = elem.firstChild; elem; elem = elem.nextSibling ) { + ret += getText( elem ); + } + } + } else if ( nodeType === 3 || nodeType === 4 ) { + return elem.nodeValue; + } + // Do not include comment or processing instruction nodes + + return ret; +}; + +Expr = Sizzle.selectors = { + + // Can be adjusted by the user + cacheLength: 50, + + createPseudo: markFunction, + + match: matchExpr, + + attrHandle: {}, + + find: {}, + + relative: { + ">": { dir: "parentNode", first: true }, + " ": { dir: "parentNode" }, + "+": { dir: "previousSibling", first: true }, + "~": { dir: "previousSibling" } + }, + + preFilter: { + "ATTR": function( match ) { + match[1] = match[1].replace( runescape, funescape ); + + // Move the given value to match[3] whether quoted or unquoted + match[3] = ( match[3] || match[4] || match[5] || "" ).replace( runescape, funescape ); + + if ( match[2] === "~=" ) { + match[3] = " " + match[3] + " "; + } + + return match.slice( 0, 4 ); + }, + + "CHILD": function( match ) { + /* matches from matchExpr["CHILD"] + 1 type (only|nth|...) + 2 what (child|of-type) + 3 argument (even|odd|\d*|\d*n([+-]\d+)?|...) + 4 xn-component of xn+y argument ([+-]?\d*n|) + 5 sign of xn-component + 6 x of xn-component + 7 sign of y-component + 8 y of y-component + */ + match[1] = match[1].toLowerCase(); + + if ( match[1].slice( 0, 3 ) === "nth" ) { + // nth-* requires argument + if ( !match[3] ) { + Sizzle.error( match[0] ); + } + + // numeric x and y parameters for Expr.filter.CHILD + // remember that false/true cast respectively to 0/1 + match[4] = +( match[4] ? match[5] + (match[6] || 1) : 2 * ( match[3] === "even" || match[3] === "odd" ) ); + match[5] = +( ( match[7] + match[8] ) || match[3] === "odd" ); + + // other types prohibit arguments + } else if ( match[3] ) { + Sizzle.error( match[0] ); + } + + return match; + }, + + "PSEUDO": function( match ) { + var excess, + unquoted = !match[6] && match[2]; + + if ( matchExpr["CHILD"].test( match[0] ) ) { + return null; + } + + // Accept quoted arguments as-is + if ( match[3] ) { + match[2] = match[4] || match[5] || ""; + + // Strip excess characters from unquoted arguments + } else if ( unquoted && rpseudo.test( unquoted ) && + // Get excess from tokenize (recursively) + (excess = tokenize( unquoted, true )) && + // advance to the next closing parenthesis + (excess = unquoted.indexOf( ")", unquoted.length - excess ) - unquoted.length) ) { + + // excess is a negative index + match[0] = match[0].slice( 0, excess ); + match[2] = unquoted.slice( 0, excess ); + } + + // Return only captures needed by the pseudo filter method (type and argument) + return match.slice( 0, 3 ); + } + }, + + filter: { + + "TAG": function( nodeNameSelector ) { + var nodeName = nodeNameSelector.replace( runescape, funescape ).toLowerCase(); + return nodeNameSelector === "*" ? + function() { return true; } : + function( elem ) { + return elem.nodeName && elem.nodeName.toLowerCase() === nodeName; + }; + }, + + "CLASS": function( className ) { + var pattern = classCache[ className + " " ]; + + return pattern || + (pattern = new RegExp( "(^|" + whitespace + ")" + className + "(" + whitespace + "|$)" )) && + classCache( className, function( elem ) { + return pattern.test( typeof elem.className === "string" && elem.className || typeof elem.getAttribute !== "undefined" && elem.getAttribute("class") || "" ); + }); + }, + + "ATTR": function( name, operator, check ) { + return function( elem ) { + var result = Sizzle.attr( elem, name ); + + if ( result == null ) { + return operator === "!="; + } + if ( !operator ) { + return true; + } + + result += ""; + + return operator === "=" ? result === check : + operator === "!=" ? result !== check : + operator === "^=" ? check && result.indexOf( check ) === 0 : + operator === "*=" ? check && result.indexOf( check ) > -1 : + operator === "$=" ? check && result.slice( -check.length ) === check : + operator === "~=" ? ( " " + result.replace( rwhitespace, " " ) + " " ).indexOf( check ) > -1 : + operator === "|=" ? result === check || result.slice( 0, check.length + 1 ) === check + "-" : + false; + }; + }, + + "CHILD": function( type, what, argument, first, last ) { + var simple = type.slice( 0, 3 ) !== "nth", + forward = type.slice( -4 ) !== "last", + ofType = what === "of-type"; + + return first === 1 && last === 0 ? + + // Shortcut for :nth-*(n) + function( elem ) { + return !!elem.parentNode; + } : + + function( elem, context, xml ) { + var cache, uniqueCache, outerCache, node, nodeIndex, start, + dir = simple !== forward ? "nextSibling" : "previousSibling", + parent = elem.parentNode, + name = ofType && elem.nodeName.toLowerCase(), + useCache = !xml && !ofType, + diff = false; + + if ( parent ) { + + // :(first|last|only)-(child|of-type) + if ( simple ) { + while ( dir ) { + node = elem; + while ( (node = node[ dir ]) ) { + if ( ofType ? + node.nodeName.toLowerCase() === name : + node.nodeType === 1 ) { + + return false; + } + } + // Reverse direction for :only-* (if we haven't yet done so) + start = dir = type === "only" && !start && "nextSibling"; + } + return true; + } + + start = [ forward ? parent.firstChild : parent.lastChild ]; + + // non-xml :nth-child(...) stores cache data on `parent` + if ( forward && useCache ) { + + // Seek `elem` from a previously-cached index + + // ...in a gzip-friendly way + node = parent; + outerCache = node[ expando ] || (node[ expando ] = {}); + + // Support: IE <9 only + // Defend against cloned attroperties (jQuery gh-1709) + uniqueCache = outerCache[ node.uniqueID ] || + (outerCache[ node.uniqueID ] = {}); + + cache = uniqueCache[ type ] || []; + nodeIndex = cache[ 0 ] === dirruns && cache[ 1 ]; + diff = nodeIndex && cache[ 2 ]; + node = nodeIndex && parent.childNodes[ nodeIndex ]; + + while ( (node = ++nodeIndex && node && node[ dir ] || + + // Fallback to seeking `elem` from the start + (diff = nodeIndex = 0) || start.pop()) ) { + + // When found, cache indexes on `parent` and break + if ( node.nodeType === 1 && ++diff && node === elem ) { + uniqueCache[ type ] = [ dirruns, nodeIndex, diff ]; + break; + } + } + + } else { + // Use previously-cached element index if available + if ( useCache ) { + // ...in a gzip-friendly way + node = elem; + outerCache = node[ expando ] || (node[ expando ] = {}); + + // Support: IE <9 only + // Defend against cloned attroperties (jQuery gh-1709) + uniqueCache = outerCache[ node.uniqueID ] || + (outerCache[ node.uniqueID ] = {}); + + cache = uniqueCache[ type ] || []; + nodeIndex = cache[ 0 ] === dirruns && cache[ 1 ]; + diff = nodeIndex; + } + + // xml :nth-child(...) + // or :nth-last-child(...) or :nth(-last)?-of-type(...) + if ( diff === false ) { + // Use the same loop as above to seek `elem` from the start + while ( (node = ++nodeIndex && node && node[ dir ] || + (diff = nodeIndex = 0) || start.pop()) ) { + + if ( ( ofType ? + node.nodeName.toLowerCase() === name : + node.nodeType === 1 ) && + ++diff ) { + + // Cache the index of each encountered element + if ( useCache ) { + outerCache = node[ expando ] || (node[ expando ] = {}); + + // Support: IE <9 only + // Defend against cloned attroperties (jQuery gh-1709) + uniqueCache = outerCache[ node.uniqueID ] || + (outerCache[ node.uniqueID ] = {}); + + uniqueCache[ type ] = [ dirruns, diff ]; + } + + if ( node === elem ) { + break; + } + } + } + } + } + + // Incorporate the offset, then check against cycle size + diff -= last; + return diff === first || ( diff % first === 0 && diff / first >= 0 ); + } + }; + }, + + "PSEUDO": function( pseudo, argument ) { + // pseudo-class names are case-insensitive + // http://www.w3.org/TR/selectors/#pseudo-classes + // Prioritize by case sensitivity in case custom pseudos are added with uppercase letters + // Remember that setFilters inherits from pseudos + var args, + fn = Expr.pseudos[ pseudo ] || Expr.setFilters[ pseudo.toLowerCase() ] || + Sizzle.error( "unsupported pseudo: " + pseudo ); + + // The user may use createPseudo to indicate that + // arguments are needed to create the filter function + // just as Sizzle does + if ( fn[ expando ] ) { + return fn( argument ); + } + + // But maintain support for old signatures + if ( fn.length > 1 ) { + args = [ pseudo, pseudo, "", argument ]; + return Expr.setFilters.hasOwnProperty( pseudo.toLowerCase() ) ? + markFunction(function( seed, matches ) { + var idx, + matched = fn( seed, argument ), + i = matched.length; + while ( i-- ) { + idx = indexOf( seed, matched[i] ); + seed[ idx ] = !( matches[ idx ] = matched[i] ); + } + }) : + function( elem ) { + return fn( elem, 0, args ); + }; + } + + return fn; + } + }, + + pseudos: { + // Potentially complex pseudos + "not": markFunction(function( selector ) { + // Trim the selector passed to compile + // to avoid treating leading and trailing + // spaces as combinators + var input = [], + results = [], + matcher = compile( selector.replace( rtrim, "$1" ) ); + + return matcher[ expando ] ? + markFunction(function( seed, matches, context, xml ) { + var elem, + unmatched = matcher( seed, null, xml, [] ), + i = seed.length; + + // Match elements unmatched by `matcher` + while ( i-- ) { + if ( (elem = unmatched[i]) ) { + seed[i] = !(matches[i] = elem); + } + } + }) : + function( elem, context, xml ) { + input[0] = elem; + matcher( input, null, xml, results ); + // Don't keep the element (issue #299) + input[0] = null; + return !results.pop(); + }; + }), + + "has": markFunction(function( selector ) { + return function( elem ) { + return Sizzle( selector, elem ).length > 0; + }; + }), + + "contains": markFunction(function( text ) { + text = text.replace( runescape, funescape ); + return function( elem ) { + return ( elem.textContent || elem.innerText || getText( elem ) ).indexOf( text ) > -1; + }; + }), + + // "Whether an element is represented by a :lang() selector + // is based solely on the element's language value + // being equal to the identifier C, + // or beginning with the identifier C immediately followed by "-". + // The matching of C against the element's language value is performed case-insensitively. + // The identifier C does not have to be a valid language name." + // http://www.w3.org/TR/selectors/#lang-pseudo + "lang": markFunction( function( lang ) { + // lang value must be a valid identifier + if ( !ridentifier.test(lang || "") ) { + Sizzle.error( "unsupported lang: " + lang ); + } + lang = lang.replace( runescape, funescape ).toLowerCase(); + return function( elem ) { + var elemLang; + do { + if ( (elemLang = documentIsHTML ? + elem.lang : + elem.getAttribute("xml:lang") || elem.getAttribute("lang")) ) { + + elemLang = elemLang.toLowerCase(); + return elemLang === lang || elemLang.indexOf( lang + "-" ) === 0; + } + } while ( (elem = elem.parentNode) && elem.nodeType === 1 ); + return false; + }; + }), + + // Miscellaneous + "target": function( elem ) { + var hash = window.location && window.location.hash; + return hash && hash.slice( 1 ) === elem.id; + }, + + "root": function( elem ) { + return elem === docElem; + }, + + "focus": function( elem ) { + return elem === document.activeElement && (!document.hasFocus || document.hasFocus()) && !!(elem.type || elem.href || ~elem.tabIndex); + }, + + // Boolean properties + "enabled": createDisabledPseudo( false ), + "disabled": createDisabledPseudo( true ), + + "checked": function( elem ) { + // In CSS3, :checked should return both checked and selected elements + // http://www.w3.org/TR/2011/REC-css3-selectors-20110929/#checked + var nodeName = elem.nodeName.toLowerCase(); + return (nodeName === "input" && !!elem.checked) || (nodeName === "option" && !!elem.selected); + }, + + "selected": function( elem ) { + // Accessing this property makes selected-by-default + // options in Safari work properly + if ( elem.parentNode ) { + elem.parentNode.selectedIndex; + } + + return elem.selected === true; + }, + + // Contents + "empty": function( elem ) { + // http://www.w3.org/TR/selectors/#empty-pseudo + // :empty is negated by element (1) or content nodes (text: 3; cdata: 4; entity ref: 5), + // but not by others (comment: 8; processing instruction: 7; etc.) + // nodeType < 6 works because attributes (2) do not appear as children + for ( elem = elem.firstChild; elem; elem = elem.nextSibling ) { + if ( elem.nodeType < 6 ) { + return false; + } + } + return true; + }, + + "parent": function( elem ) { + return !Expr.pseudos["empty"]( elem ); + }, + + // Element/input types + "header": function( elem ) { + return rheader.test( elem.nodeName ); + }, + + "input": function( elem ) { + return rinputs.test( elem.nodeName ); + }, + + "button": function( elem ) { + var name = elem.nodeName.toLowerCase(); + return name === "input" && elem.type === "button" || name === "button"; + }, + + "text": function( elem ) { + var attr; + return elem.nodeName.toLowerCase() === "input" && + elem.type === "text" && + + // Support: IE<8 + // New HTML5 attribute values (e.g., "search") appear with elem.type === "text" + ( (attr = elem.getAttribute("type")) == null || attr.toLowerCase() === "text" ); + }, + + // Position-in-collection + "first": createPositionalPseudo(function() { + return [ 0 ]; + }), + + "last": createPositionalPseudo(function( matchIndexes, length ) { + return [ length - 1 ]; + }), + + "eq": createPositionalPseudo(function( matchIndexes, length, argument ) { + return [ argument < 0 ? argument + length : argument ]; + }), + + "even": createPositionalPseudo(function( matchIndexes, length ) { + var i = 0; + for ( ; i < length; i += 2 ) { + matchIndexes.push( i ); + } + return matchIndexes; + }), + + "odd": createPositionalPseudo(function( matchIndexes, length ) { + var i = 1; + for ( ; i < length; i += 2 ) { + matchIndexes.push( i ); + } + return matchIndexes; + }), + + "lt": createPositionalPseudo(function( matchIndexes, length, argument ) { + var i = argument < 0 ? argument + length : argument; + for ( ; --i >= 0; ) { + matchIndexes.push( i ); + } + return matchIndexes; + }), + + "gt": createPositionalPseudo(function( matchIndexes, length, argument ) { + var i = argument < 0 ? argument + length : argument; + for ( ; ++i < length; ) { + matchIndexes.push( i ); + } + return matchIndexes; + }) + } +}; + +Expr.pseudos["nth"] = Expr.pseudos["eq"]; + +// Add button/input type pseudos +for ( i in { radio: true, checkbox: true, file: true, password: true, image: true } ) { + Expr.pseudos[ i ] = createInputPseudo( i ); +} +for ( i in { submit: true, reset: true } ) { + Expr.pseudos[ i ] = createButtonPseudo( i ); +} + +// Easy API for creating new setFilters +function setFilters() {} +setFilters.prototype = Expr.filters = Expr.pseudos; +Expr.setFilters = new setFilters(); + +tokenize = Sizzle.tokenize = function( selector, parseOnly ) { + var matched, match, tokens, type, + soFar, groups, preFilters, + cached = tokenCache[ selector + " " ]; + + if ( cached ) { + return parseOnly ? 0 : cached.slice( 0 ); + } + + soFar = selector; + groups = []; + preFilters = Expr.preFilter; + + while ( soFar ) { + + // Comma and first run + if ( !matched || (match = rcomma.exec( soFar )) ) { + if ( match ) { + // Don't consume trailing commas as valid + soFar = soFar.slice( match[0].length ) || soFar; + } + groups.push( (tokens = []) ); + } + + matched = false; + + // Combinators + if ( (match = rcombinators.exec( soFar )) ) { + matched = match.shift(); + tokens.push({ + value: matched, + // Cast descendant combinators to space + type: match[0].replace( rtrim, " " ) + }); + soFar = soFar.slice( matched.length ); + } + + // Filters + for ( type in Expr.filter ) { + if ( (match = matchExpr[ type ].exec( soFar )) && (!preFilters[ type ] || + (match = preFilters[ type ]( match ))) ) { + matched = match.shift(); + tokens.push({ + value: matched, + type: type, + matches: match + }); + soFar = soFar.slice( matched.length ); + } + } + + if ( !matched ) { + break; + } + } + + // Return the length of the invalid excess + // if we're just parsing + // Otherwise, throw an error or return tokens + return parseOnly ? + soFar.length : + soFar ? + Sizzle.error( selector ) : + // Cache the tokens + tokenCache( selector, groups ).slice( 0 ); +}; + +function toSelector( tokens ) { + var i = 0, + len = tokens.length, + selector = ""; + for ( ; i < len; i++ ) { + selector += tokens[i].value; + } + return selector; +} + +function addCombinator( matcher, combinator, base ) { + var dir = combinator.dir, + skip = combinator.next, + key = skip || dir, + checkNonElements = base && key === "parentNode", + doneName = done++; + + return combinator.first ? + // Check against closest ancestor/preceding element + function( elem, context, xml ) { + while ( (elem = elem[ dir ]) ) { + if ( elem.nodeType === 1 || checkNonElements ) { + return matcher( elem, context, xml ); + } + } + return false; + } : + + // Check against all ancestor/preceding elements + function( elem, context, xml ) { + var oldCache, uniqueCache, outerCache, + newCache = [ dirruns, doneName ]; + + // We can't set arbitrary data on XML nodes, so they don't benefit from combinator caching + if ( xml ) { + while ( (elem = elem[ dir ]) ) { + if ( elem.nodeType === 1 || checkNonElements ) { + if ( matcher( elem, context, xml ) ) { + return true; + } + } + } + } else { + while ( (elem = elem[ dir ]) ) { + if ( elem.nodeType === 1 || checkNonElements ) { + outerCache = elem[ expando ] || (elem[ expando ] = {}); + + // Support: IE <9 only + // Defend against cloned attroperties (jQuery gh-1709) + uniqueCache = outerCache[ elem.uniqueID ] || (outerCache[ elem.uniqueID ] = {}); + + if ( skip && skip === elem.nodeName.toLowerCase() ) { + elem = elem[ dir ] || elem; + } else if ( (oldCache = uniqueCache[ key ]) && + oldCache[ 0 ] === dirruns && oldCache[ 1 ] === doneName ) { + + // Assign to newCache so results back-propagate to previous elements + return (newCache[ 2 ] = oldCache[ 2 ]); + } else { + // Reuse newcache so results back-propagate to previous elements + uniqueCache[ key ] = newCache; + + // A match means we're done; a fail means we have to keep checking + if ( (newCache[ 2 ] = matcher( elem, context, xml )) ) { + return true; + } + } + } + } + } + return false; + }; +} + +function elementMatcher( matchers ) { + return matchers.length > 1 ? + function( elem, context, xml ) { + var i = matchers.length; + while ( i-- ) { + if ( !matchers[i]( elem, context, xml ) ) { + return false; + } + } + return true; + } : + matchers[0]; +} + +function multipleContexts( selector, contexts, results ) { + var i = 0, + len = contexts.length; + for ( ; i < len; i++ ) { + Sizzle( selector, contexts[i], results ); + } + return results; +} + +function condense( unmatched, map, filter, context, xml ) { + var elem, + newUnmatched = [], + i = 0, + len = unmatched.length, + mapped = map != null; + + for ( ; i < len; i++ ) { + if ( (elem = unmatched[i]) ) { + if ( !filter || filter( elem, context, xml ) ) { + newUnmatched.push( elem ); + if ( mapped ) { + map.push( i ); + } + } + } + } + + return newUnmatched; +} + +function setMatcher( preFilter, selector, matcher, postFilter, postFinder, postSelector ) { + if ( postFilter && !postFilter[ expando ] ) { + postFilter = setMatcher( postFilter ); + } + if ( postFinder && !postFinder[ expando ] ) { + postFinder = setMatcher( postFinder, postSelector ); + } + return markFunction(function( seed, results, context, xml ) { + var temp, i, elem, + preMap = [], + postMap = [], + preexisting = results.length, + + // Get initial elements from seed or context + elems = seed || multipleContexts( selector || "*", context.nodeType ? [ context ] : context, [] ), + + // Prefilter to get matcher input, preserving a map for seed-results synchronization + matcherIn = preFilter && ( seed || !selector ) ? + condense( elems, preMap, preFilter, context, xml ) : + elems, + + matcherOut = matcher ? + // If we have a postFinder, or filtered seed, or non-seed postFilter or preexisting results, + postFinder || ( seed ? preFilter : preexisting || postFilter ) ? + + // ...intermediate processing is necessary + [] : + + // ...otherwise use results directly + results : + matcherIn; + + // Find primary matches + if ( matcher ) { + matcher( matcherIn, matcherOut, context, xml ); + } + + // Apply postFilter + if ( postFilter ) { + temp = condense( matcherOut, postMap ); + postFilter( temp, [], context, xml ); + + // Un-match failing elements by moving them back to matcherIn + i = temp.length; + while ( i-- ) { + if ( (elem = temp[i]) ) { + matcherOut[ postMap[i] ] = !(matcherIn[ postMap[i] ] = elem); + } + } + } + + if ( seed ) { + if ( postFinder || preFilter ) { + if ( postFinder ) { + // Get the final matcherOut by condensing this intermediate into postFinder contexts + temp = []; + i = matcherOut.length; + while ( i-- ) { + if ( (elem = matcherOut[i]) ) { + // Restore matcherIn since elem is not yet a final match + temp.push( (matcherIn[i] = elem) ); + } + } + postFinder( null, (matcherOut = []), temp, xml ); + } + + // Move matched elements from seed to results to keep them synchronized + i = matcherOut.length; + while ( i-- ) { + if ( (elem = matcherOut[i]) && + (temp = postFinder ? indexOf( seed, elem ) : preMap[i]) > -1 ) { + + seed[temp] = !(results[temp] = elem); + } + } + } + + // Add elements to results, through postFinder if defined + } else { + matcherOut = condense( + matcherOut === results ? + matcherOut.splice( preexisting, matcherOut.length ) : + matcherOut + ); + if ( postFinder ) { + postFinder( null, results, matcherOut, xml ); + } else { + push.apply( results, matcherOut ); + } + } + }); +} + +function matcherFromTokens( tokens ) { + var checkContext, matcher, j, + len = tokens.length, + leadingRelative = Expr.relative[ tokens[0].type ], + implicitRelative = leadingRelative || Expr.relative[" "], + i = leadingRelative ? 1 : 0, + + // The foundational matcher ensures that elements are reachable from top-level context(s) + matchContext = addCombinator( function( elem ) { + return elem === checkContext; + }, implicitRelative, true ), + matchAnyContext = addCombinator( function( elem ) { + return indexOf( checkContext, elem ) > -1; + }, implicitRelative, true ), + matchers = [ function( elem, context, xml ) { + var ret = ( !leadingRelative && ( xml || context !== outermostContext ) ) || ( + (checkContext = context).nodeType ? + matchContext( elem, context, xml ) : + matchAnyContext( elem, context, xml ) ); + // Avoid hanging onto element (issue #299) + checkContext = null; + return ret; + } ]; + + for ( ; i < len; i++ ) { + if ( (matcher = Expr.relative[ tokens[i].type ]) ) { + matchers = [ addCombinator(elementMatcher( matchers ), matcher) ]; + } else { + matcher = Expr.filter[ tokens[i].type ].apply( null, tokens[i].matches ); + + // Return special upon seeing a positional matcher + if ( matcher[ expando ] ) { + // Find the next relative operator (if any) for proper handling + j = ++i; + for ( ; j < len; j++ ) { + if ( Expr.relative[ tokens[j].type ] ) { + break; + } + } + return setMatcher( + i > 1 && elementMatcher( matchers ), + i > 1 && toSelector( + // If the preceding token was a descendant combinator, insert an implicit any-element `*` + tokens.slice( 0, i - 1 ).concat({ value: tokens[ i - 2 ].type === " " ? "*" : "" }) + ).replace( rtrim, "$1" ), + matcher, + i < j && matcherFromTokens( tokens.slice( i, j ) ), + j < len && matcherFromTokens( (tokens = tokens.slice( j )) ), + j < len && toSelector( tokens ) + ); + } + matchers.push( matcher ); + } + } + + return elementMatcher( matchers ); +} + +function matcherFromGroupMatchers( elementMatchers, setMatchers ) { + var bySet = setMatchers.length > 0, + byElement = elementMatchers.length > 0, + superMatcher = function( seed, context, xml, results, outermost ) { + var elem, j, matcher, + matchedCount = 0, + i = "0", + unmatched = seed && [], + setMatched = [], + contextBackup = outermostContext, + // We must always have either seed elements or outermost context + elems = seed || byElement && Expr.find["TAG"]( "*", outermost ), + // Use integer dirruns iff this is the outermost matcher + dirrunsUnique = (dirruns += contextBackup == null ? 1 : Math.random() || 0.1), + len = elems.length; + + if ( outermost ) { + outermostContext = context === document || context || outermost; + } + + // Add elements passing elementMatchers directly to results + // Support: IE<9, Safari + // Tolerate NodeList properties (IE: "length"; Safari: ) matching elements by id + for ( ; i !== len && (elem = elems[i]) != null; i++ ) { + if ( byElement && elem ) { + j = 0; + if ( !context && elem.ownerDocument !== document ) { + setDocument( elem ); + xml = !documentIsHTML; + } + while ( (matcher = elementMatchers[j++]) ) { + if ( matcher( elem, context || document, xml) ) { + results.push( elem ); + break; + } + } + if ( outermost ) { + dirruns = dirrunsUnique; + } + } + + // Track unmatched elements for set filters + if ( bySet ) { + // They will have gone through all possible matchers + if ( (elem = !matcher && elem) ) { + matchedCount--; + } + + // Lengthen the array for every element, matched or not + if ( seed ) { + unmatched.push( elem ); + } + } + } + + // `i` is now the count of elements visited above, and adding it to `matchedCount` + // makes the latter nonnegative. + matchedCount += i; + + // Apply set filters to unmatched elements + // NOTE: This can be skipped if there are no unmatched elements (i.e., `matchedCount` + // equals `i`), unless we didn't visit _any_ elements in the above loop because we have + // no element matchers and no seed. + // Incrementing an initially-string "0" `i` allows `i` to remain a string only in that + // case, which will result in a "00" `matchedCount` that differs from `i` but is also + // numerically zero. + if ( bySet && i !== matchedCount ) { + j = 0; + while ( (matcher = setMatchers[j++]) ) { + matcher( unmatched, setMatched, context, xml ); + } + + if ( seed ) { + // Reintegrate element matches to eliminate the need for sorting + if ( matchedCount > 0 ) { + while ( i-- ) { + if ( !(unmatched[i] || setMatched[i]) ) { + setMatched[i] = pop.call( results ); + } + } + } + + // Discard index placeholder values to get only actual matches + setMatched = condense( setMatched ); + } + + // Add matches to results + push.apply( results, setMatched ); + + // Seedless set matches succeeding multiple successful matchers stipulate sorting + if ( outermost && !seed && setMatched.length > 0 && + ( matchedCount + setMatchers.length ) > 1 ) { + + Sizzle.uniqueSort( results ); + } + } + + // Override manipulation of globals by nested matchers + if ( outermost ) { + dirruns = dirrunsUnique; + outermostContext = contextBackup; + } + + return unmatched; + }; + + return bySet ? + markFunction( superMatcher ) : + superMatcher; +} + +compile = Sizzle.compile = function( selector, match /* Internal Use Only */ ) { + var i, + setMatchers = [], + elementMatchers = [], + cached = compilerCache[ selector + " " ]; + + if ( !cached ) { + // Generate a function of recursive functions that can be used to check each element + if ( !match ) { + match = tokenize( selector ); + } + i = match.length; + while ( i-- ) { + cached = matcherFromTokens( match[i] ); + if ( cached[ expando ] ) { + setMatchers.push( cached ); + } else { + elementMatchers.push( cached ); + } + } + + // Cache the compiled function + cached = compilerCache( selector, matcherFromGroupMatchers( elementMatchers, setMatchers ) ); + + // Save selector and tokenization + cached.selector = selector; + } + return cached; +}; + +/** + * A low-level selection function that works with Sizzle's compiled + * selector functions + * @param {String|Function} selector A selector or a pre-compiled + * selector function built with Sizzle.compile + * @param {Element} context + * @param {Array} [results] + * @param {Array} [seed] A set of elements to match against + */ +select = Sizzle.select = function( selector, context, results, seed ) { + var i, tokens, token, type, find, + compiled = typeof selector === "function" && selector, + match = !seed && tokenize( (selector = compiled.selector || selector) ); + + results = results || []; + + // Try to minimize operations if there is only one selector in the list and no seed + // (the latter of which guarantees us context) + if ( match.length === 1 ) { + + // Reduce context if the leading compound selector is an ID + tokens = match[0] = match[0].slice( 0 ); + if ( tokens.length > 2 && (token = tokens[0]).type === "ID" && + context.nodeType === 9 && documentIsHTML && Expr.relative[ tokens[1].type ] ) { + + context = ( Expr.find["ID"]( token.matches[0].replace(runescape, funescape), context ) || [] )[0]; + if ( !context ) { + return results; + + // Precompiled matchers will still verify ancestry, so step up a level + } else if ( compiled ) { + context = context.parentNode; + } + + selector = selector.slice( tokens.shift().value.length ); + } + + // Fetch a seed set for right-to-left matching + i = matchExpr["needsContext"].test( selector ) ? 0 : tokens.length; + while ( i-- ) { + token = tokens[i]; + + // Abort if we hit a combinator + if ( Expr.relative[ (type = token.type) ] ) { + break; + } + if ( (find = Expr.find[ type ]) ) { + // Search, expanding context for leading sibling combinators + if ( (seed = find( + token.matches[0].replace( runescape, funescape ), + rsibling.test( tokens[0].type ) && testContext( context.parentNode ) || context + )) ) { + + // If seed is empty or no tokens remain, we can return early + tokens.splice( i, 1 ); + selector = seed.length && toSelector( tokens ); + if ( !selector ) { + push.apply( results, seed ); + return results; + } + + break; + } + } + } + } + + // Compile and execute a filtering function if one is not provided + // Provide `match` to avoid retokenization if we modified the selector above + ( compiled || compile( selector, match ) )( + seed, + context, + !documentIsHTML, + results, + !context || rsibling.test( selector ) && testContext( context.parentNode ) || context + ); + return results; +}; + +// One-time assignments + +// Sort stability +support.sortStable = expando.split("").sort( sortOrder ).join("") === expando; + +// Support: Chrome 14-35+ +// Always assume duplicates if they aren't passed to the comparison function +support.detectDuplicates = !!hasDuplicate; + +// Initialize against the default document +setDocument(); + +// Support: Webkit<537.32 - Safari 6.0.3/Chrome 25 (fixed in Chrome 27) +// Detached nodes confoundingly follow *each other* +support.sortDetached = assert(function( el ) { + // Should return 1, but returns 4 (following) + return el.compareDocumentPosition( document.createElement("fieldset") ) & 1; +}); + +// Support: IE<8 +// Prevent attribute/property "interpolation" +// https://msdn.microsoft.com/en-us/library/ms536429%28VS.85%29.aspx +if ( !assert(function( el ) { + el.innerHTML = ""; + return el.firstChild.getAttribute("href") === "#" ; +}) ) { + addHandle( "type|href|height|width", function( elem, name, isXML ) { + if ( !isXML ) { + return elem.getAttribute( name, name.toLowerCase() === "type" ? 1 : 2 ); + } + }); +} + +// Support: IE<9 +// Use defaultValue in place of getAttribute("value") +if ( !support.attributes || !assert(function( el ) { + el.innerHTML = ""; + el.firstChild.setAttribute( "value", "" ); + return el.firstChild.getAttribute( "value" ) === ""; +}) ) { + addHandle( "value", function( elem, name, isXML ) { + if ( !isXML && elem.nodeName.toLowerCase() === "input" ) { + return elem.defaultValue; + } + }); +} + +// Support: IE<9 +// Use getAttributeNode to fetch booleans when getAttribute lies +if ( !assert(function( el ) { + return el.getAttribute("disabled") == null; +}) ) { + addHandle( booleans, function( elem, name, isXML ) { + var val; + if ( !isXML ) { + return elem[ name ] === true ? name.toLowerCase() : + (val = elem.getAttributeNode( name )) && val.specified ? + val.value : + null; + } + }); +} + +return Sizzle; + +})( window ); + + + +jQuery.find = Sizzle; +jQuery.expr = Sizzle.selectors; + +// Deprecated +jQuery.expr[ ":" ] = jQuery.expr.pseudos; +jQuery.uniqueSort = jQuery.unique = Sizzle.uniqueSort; +jQuery.text = Sizzle.getText; +jQuery.isXMLDoc = Sizzle.isXML; +jQuery.contains = Sizzle.contains; +jQuery.escapeSelector = Sizzle.escape; + + + + +var dir = function( elem, dir, until ) { + var matched = [], + truncate = until !== undefined; + + while ( ( elem = elem[ dir ] ) && elem.nodeType !== 9 ) { + if ( elem.nodeType === 1 ) { + if ( truncate && jQuery( elem ).is( until ) ) { + break; + } + matched.push( elem ); + } + } + return matched; +}; + + +var siblings = function( n, elem ) { + var matched = []; + + for ( ; n; n = n.nextSibling ) { + if ( n.nodeType === 1 && n !== elem ) { + matched.push( n ); + } + } + + return matched; +}; + + +var rneedsContext = jQuery.expr.match.needsContext; + + + +function nodeName( elem, name ) { + + return elem.nodeName && elem.nodeName.toLowerCase() === name.toLowerCase(); + +}; +var rsingleTag = ( /^<([a-z][^\/\0>:\x20\t\r\n\f]*)[\x20\t\r\n\f]*\/?>(?:<\/\1>|)$/i ); + + + +var risSimple = /^.[^:#\[\.,]*$/; + +// Implement the identical functionality for filter and not +function winnow( elements, qualifier, not ) { + if ( jQuery.isFunction( qualifier ) ) { + return jQuery.grep( elements, function( elem, i ) { + return !!qualifier.call( elem, i, elem ) !== not; + } ); + } + + // Single element + if ( qualifier.nodeType ) { + return jQuery.grep( elements, function( elem ) { + return ( elem === qualifier ) !== not; + } ); + } + + // Arraylike of elements (jQuery, arguments, Array) + if ( typeof qualifier !== "string" ) { + return jQuery.grep( elements, function( elem ) { + return ( indexOf.call( qualifier, elem ) > -1 ) !== not; + } ); + } + + // Simple selector that can be filtered directly, removing non-Elements + if ( risSimple.test( qualifier ) ) { + return jQuery.filter( qualifier, elements, not ); + } + + // Complex selector, compare the two sets, removing non-Elements + qualifier = jQuery.filter( qualifier, elements ); + return jQuery.grep( elements, function( elem ) { + return ( indexOf.call( qualifier, elem ) > -1 ) !== not && elem.nodeType === 1; + } ); +} + +jQuery.filter = function( expr, elems, not ) { + var elem = elems[ 0 ]; + + if ( not ) { + expr = ":not(" + expr + ")"; + } + + if ( elems.length === 1 && elem.nodeType === 1 ) { + return jQuery.find.matchesSelector( elem, expr ) ? [ elem ] : []; + } + + return jQuery.find.matches( expr, jQuery.grep( elems, function( elem ) { + return elem.nodeType === 1; + } ) ); +}; + +jQuery.fn.extend( { + find: function( selector ) { + var i, ret, + len = this.length, + self = this; + + if ( typeof selector !== "string" ) { + return this.pushStack( jQuery( selector ).filter( function() { + for ( i = 0; i < len; i++ ) { + if ( jQuery.contains( self[ i ], this ) ) { + return true; + } + } + } ) ); + } + + ret = this.pushStack( [] ); + + for ( i = 0; i < len; i++ ) { + jQuery.find( selector, self[ i ], ret ); + } + + return len > 1 ? jQuery.uniqueSort( ret ) : ret; + }, + filter: function( selector ) { + return this.pushStack( winnow( this, selector || [], false ) ); + }, + not: function( selector ) { + return this.pushStack( winnow( this, selector || [], true ) ); + }, + is: function( selector ) { + return !!winnow( + this, + + // If this is a positional/relative selector, check membership in the returned set + // so $("p:first").is("p:last") won't return true for a doc with two "p". + typeof selector === "string" && rneedsContext.test( selector ) ? + jQuery( selector ) : + selector || [], + false + ).length; + } +} ); + + +// Initialize a jQuery object + + +// A central reference to the root jQuery(document) +var rootjQuery, + + // A simple way to check for HTML strings + // Prioritize #id over to avoid XSS via location.hash (#9521) + // Strict HTML recognition (#11290: must start with <) + // Shortcut simple #id case for speed + rquickExpr = /^(?:\s*(<[\w\W]+>)[^>]*|#([\w-]+))$/, + + init = jQuery.fn.init = function( selector, context, root ) { + var match, elem; + + // HANDLE: $(""), $(null), $(undefined), $(false) + if ( !selector ) { + return this; + } + + // Method init() accepts an alternate rootjQuery + // so migrate can support jQuery.sub (gh-2101) + root = root || rootjQuery; + + // Handle HTML strings + if ( typeof selector === "string" ) { + if ( selector[ 0 ] === "<" && + selector[ selector.length - 1 ] === ">" && + selector.length >= 3 ) { + + // Assume that strings that start and end with <> are HTML and skip the regex check + match = [ null, selector, null ]; + + } else { + match = rquickExpr.exec( selector ); + } + + // Match html or make sure no context is specified for #id + if ( match && ( match[ 1 ] || !context ) ) { + + // HANDLE: $(html) -> $(array) + if ( match[ 1 ] ) { + context = context instanceof jQuery ? context[ 0 ] : context; + + // Option to run scripts is true for back-compat + // Intentionally let the error be thrown if parseHTML is not present + jQuery.merge( this, jQuery.parseHTML( + match[ 1 ], + context && context.nodeType ? context.ownerDocument || context : document, + true + ) ); + + // HANDLE: $(html, props) + if ( rsingleTag.test( match[ 1 ] ) && jQuery.isPlainObject( context ) ) { + for ( match in context ) { + + // Properties of context are called as methods if possible + if ( jQuery.isFunction( this[ match ] ) ) { + this[ match ]( context[ match ] ); + + // ...and otherwise set as attributes + } else { + this.attr( match, context[ match ] ); + } + } + } + + return this; + + // HANDLE: $(#id) + } else { + elem = document.getElementById( match[ 2 ] ); + + if ( elem ) { + + // Inject the element directly into the jQuery object + this[ 0 ] = elem; + this.length = 1; + } + return this; + } + + // HANDLE: $(expr, $(...)) + } else if ( !context || context.jquery ) { + return ( context || root ).find( selector ); + + // HANDLE: $(expr, context) + // (which is just equivalent to: $(context).find(expr) + } else { + return this.constructor( context ).find( selector ); + } + + // HANDLE: $(DOMElement) + } else if ( selector.nodeType ) { + this[ 0 ] = selector; + this.length = 1; + return this; + + // HANDLE: $(function) + // Shortcut for document ready + } else if ( jQuery.isFunction( selector ) ) { + return root.ready !== undefined ? + root.ready( selector ) : + + // Execute immediately if ready is not present + selector( jQuery ); + } + + return jQuery.makeArray( selector, this ); + }; + +// Give the init function the jQuery prototype for later instantiation +init.prototype = jQuery.fn; + +// Initialize central reference +rootjQuery = jQuery( document ); + + +var rparentsprev = /^(?:parents|prev(?:Until|All))/, + + // Methods guaranteed to produce a unique set when starting from a unique set + guaranteedUnique = { + children: true, + contents: true, + next: true, + prev: true + }; + +jQuery.fn.extend( { + has: function( target ) { + var targets = jQuery( target, this ), + l = targets.length; + + return this.filter( function() { + var i = 0; + for ( ; i < l; i++ ) { + if ( jQuery.contains( this, targets[ i ] ) ) { + return true; + } + } + } ); + }, + + closest: function( selectors, context ) { + var cur, + i = 0, + l = this.length, + matched = [], + targets = typeof selectors !== "string" && jQuery( selectors ); + + // Positional selectors never match, since there's no _selection_ context + if ( !rneedsContext.test( selectors ) ) { + for ( ; i < l; i++ ) { + for ( cur = this[ i ]; cur && cur !== context; cur = cur.parentNode ) { + + // Always skip document fragments + if ( cur.nodeType < 11 && ( targets ? + targets.index( cur ) > -1 : + + // Don't pass non-elements to Sizzle + cur.nodeType === 1 && + jQuery.find.matchesSelector( cur, selectors ) ) ) { + + matched.push( cur ); + break; + } + } + } + } + + return this.pushStack( matched.length > 1 ? jQuery.uniqueSort( matched ) : matched ); + }, + + // Determine the position of an element within the set + index: function( elem ) { + + // No argument, return index in parent + if ( !elem ) { + return ( this[ 0 ] && this[ 0 ].parentNode ) ? this.first().prevAll().length : -1; + } + + // Index in selector + if ( typeof elem === "string" ) { + return indexOf.call( jQuery( elem ), this[ 0 ] ); + } + + // Locate the position of the desired element + return indexOf.call( this, + + // If it receives a jQuery object, the first element is used + elem.jquery ? elem[ 0 ] : elem + ); + }, + + add: function( selector, context ) { + return this.pushStack( + jQuery.uniqueSort( + jQuery.merge( this.get(), jQuery( selector, context ) ) + ) + ); + }, + + addBack: function( selector ) { + return this.add( selector == null ? + this.prevObject : this.prevObject.filter( selector ) + ); + } +} ); + +function sibling( cur, dir ) { + while ( ( cur = cur[ dir ] ) && cur.nodeType !== 1 ) {} + return cur; +} + +jQuery.each( { + parent: function( elem ) { + var parent = elem.parentNode; + return parent && parent.nodeType !== 11 ? parent : null; + }, + parents: function( elem ) { + return dir( elem, "parentNode" ); + }, + parentsUntil: function( elem, i, until ) { + return dir( elem, "parentNode", until ); + }, + next: function( elem ) { + return sibling( elem, "nextSibling" ); + }, + prev: function( elem ) { + return sibling( elem, "previousSibling" ); + }, + nextAll: function( elem ) { + return dir( elem, "nextSibling" ); + }, + prevAll: function( elem ) { + return dir( elem, "previousSibling" ); + }, + nextUntil: function( elem, i, until ) { + return dir( elem, "nextSibling", until ); + }, + prevUntil: function( elem, i, until ) { + return dir( elem, "previousSibling", until ); + }, + siblings: function( elem ) { + return siblings( ( elem.parentNode || {} ).firstChild, elem ); + }, + children: function( elem ) { + return siblings( elem.firstChild ); + }, + contents: function( elem ) { + if ( nodeName( elem, "iframe" ) ) { + return elem.contentDocument; + } + + // Support: IE 9 - 11 only, iOS 7 only, Android Browser <=4.3 only + // Treat the template element as a regular one in browsers that + // don't support it. + if ( nodeName( elem, "template" ) ) { + elem = elem.content || elem; + } + + return jQuery.merge( [], elem.childNodes ); + } +}, function( name, fn ) { + jQuery.fn[ name ] = function( until, selector ) { + var matched = jQuery.map( this, fn, until ); + + if ( name.slice( -5 ) !== "Until" ) { + selector = until; + } + + if ( selector && typeof selector === "string" ) { + matched = jQuery.filter( selector, matched ); + } + + if ( this.length > 1 ) { + + // Remove duplicates + if ( !guaranteedUnique[ name ] ) { + jQuery.uniqueSort( matched ); + } + + // Reverse order for parents* and prev-derivatives + if ( rparentsprev.test( name ) ) { + matched.reverse(); + } + } + + return this.pushStack( matched ); + }; +} ); +var rnothtmlwhite = ( /[^\x20\t\r\n\f]+/g ); + + + +// Convert String-formatted options into Object-formatted ones +function createOptions( options ) { + var object = {}; + jQuery.each( options.match( rnothtmlwhite ) || [], function( _, flag ) { + object[ flag ] = true; + } ); + return object; +} + +/* + * Create a callback list using the following parameters: + * + * options: an optional list of space-separated options that will change how + * the callback list behaves or a more traditional option object + * + * By default a callback list will act like an event callback list and can be + * "fired" multiple times. + * + * Possible options: + * + * once: will ensure the callback list can only be fired once (like a Deferred) + * + * memory: will keep track of previous values and will call any callback added + * after the list has been fired right away with the latest "memorized" + * values (like a Deferred) + * + * unique: will ensure a callback can only be added once (no duplicate in the list) + * + * stopOnFalse: interrupt callings when a callback returns false + * + */ +jQuery.Callbacks = function( options ) { + + // Convert options from String-formatted to Object-formatted if needed + // (we check in cache first) + options = typeof options === "string" ? + createOptions( options ) : + jQuery.extend( {}, options ); + + var // Flag to know if list is currently firing + firing, + + // Last fire value for non-forgettable lists + memory, + + // Flag to know if list was already fired + fired, + + // Flag to prevent firing + locked, + + // Actual callback list + list = [], + + // Queue of execution data for repeatable lists + queue = [], + + // Index of currently firing callback (modified by add/remove as needed) + firingIndex = -1, + + // Fire callbacks + fire = function() { + + // Enforce single-firing + locked = locked || options.once; + + // Execute callbacks for all pending executions, + // respecting firingIndex overrides and runtime changes + fired = firing = true; + for ( ; queue.length; firingIndex = -1 ) { + memory = queue.shift(); + while ( ++firingIndex < list.length ) { + + // Run callback and check for early termination + if ( list[ firingIndex ].apply( memory[ 0 ], memory[ 1 ] ) === false && + options.stopOnFalse ) { + + // Jump to end and forget the data so .add doesn't re-fire + firingIndex = list.length; + memory = false; + } + } + } + + // Forget the data if we're done with it + if ( !options.memory ) { + memory = false; + } + + firing = false; + + // Clean up if we're done firing for good + if ( locked ) { + + // Keep an empty list if we have data for future add calls + if ( memory ) { + list = []; + + // Otherwise, this object is spent + } else { + list = ""; + } + } + }, + + // Actual Callbacks object + self = { + + // Add a callback or a collection of callbacks to the list + add: function() { + if ( list ) { + + // If we have memory from a past run, we should fire after adding + if ( memory && !firing ) { + firingIndex = list.length - 1; + queue.push( memory ); + } + + ( function add( args ) { + jQuery.each( args, function( _, arg ) { + if ( jQuery.isFunction( arg ) ) { + if ( !options.unique || !self.has( arg ) ) { + list.push( arg ); + } + } else if ( arg && arg.length && jQuery.type( arg ) !== "string" ) { + + // Inspect recursively + add( arg ); + } + } ); + } )( arguments ); + + if ( memory && !firing ) { + fire(); + } + } + return this; + }, + + // Remove a callback from the list + remove: function() { + jQuery.each( arguments, function( _, arg ) { + var index; + while ( ( index = jQuery.inArray( arg, list, index ) ) > -1 ) { + list.splice( index, 1 ); + + // Handle firing indexes + if ( index <= firingIndex ) { + firingIndex--; + } + } + } ); + return this; + }, + + // Check if a given callback is in the list. + // If no argument is given, return whether or not list has callbacks attached. + has: function( fn ) { + return fn ? + jQuery.inArray( fn, list ) > -1 : + list.length > 0; + }, + + // Remove all callbacks from the list + empty: function() { + if ( list ) { + list = []; + } + return this; + }, + + // Disable .fire and .add + // Abort any current/pending executions + // Clear all callbacks and values + disable: function() { + locked = queue = []; + list = memory = ""; + return this; + }, + disabled: function() { + return !list; + }, + + // Disable .fire + // Also disable .add unless we have memory (since it would have no effect) + // Abort any pending executions + lock: function() { + locked = queue = []; + if ( !memory && !firing ) { + list = memory = ""; + } + return this; + }, + locked: function() { + return !!locked; + }, + + // Call all callbacks with the given context and arguments + fireWith: function( context, args ) { + if ( !locked ) { + args = args || []; + args = [ context, args.slice ? args.slice() : args ]; + queue.push( args ); + if ( !firing ) { + fire(); + } + } + return this; + }, + + // Call all the callbacks with the given arguments + fire: function() { + self.fireWith( this, arguments ); + return this; + }, + + // To know if the callbacks have already been called at least once + fired: function() { + return !!fired; + } + }; + + return self; +}; + + +function Identity( v ) { + return v; +} +function Thrower( ex ) { + throw ex; +} + +function adoptValue( value, resolve, reject, noValue ) { + var method; + + try { + + // Check for promise aspect first to privilege synchronous behavior + if ( value && jQuery.isFunction( ( method = value.promise ) ) ) { + method.call( value ).done( resolve ).fail( reject ); + + // Other thenables + } else if ( value && jQuery.isFunction( ( method = value.then ) ) ) { + method.call( value, resolve, reject ); + + // Other non-thenables + } else { + + // Control `resolve` arguments by letting Array#slice cast boolean `noValue` to integer: + // * false: [ value ].slice( 0 ) => resolve( value ) + // * true: [ value ].slice( 1 ) => resolve() + resolve.apply( undefined, [ value ].slice( noValue ) ); + } + + // For Promises/A+, convert exceptions into rejections + // Since jQuery.when doesn't unwrap thenables, we can skip the extra checks appearing in + // Deferred#then to conditionally suppress rejection. + } catch ( value ) { + + // Support: Android 4.0 only + // Strict mode functions invoked without .call/.apply get global-object context + reject.apply( undefined, [ value ] ); + } +} + +jQuery.extend( { + + Deferred: function( func ) { + var tuples = [ + + // action, add listener, callbacks, + // ... .then handlers, argument index, [final state] + [ "notify", "progress", jQuery.Callbacks( "memory" ), + jQuery.Callbacks( "memory" ), 2 ], + [ "resolve", "done", jQuery.Callbacks( "once memory" ), + jQuery.Callbacks( "once memory" ), 0, "resolved" ], + [ "reject", "fail", jQuery.Callbacks( "once memory" ), + jQuery.Callbacks( "once memory" ), 1, "rejected" ] + ], + state = "pending", + promise = { + state: function() { + return state; + }, + always: function() { + deferred.done( arguments ).fail( arguments ); + return this; + }, + "catch": function( fn ) { + return promise.then( null, fn ); + }, + + // Keep pipe for back-compat + pipe: function( /* fnDone, fnFail, fnProgress */ ) { + var fns = arguments; + + return jQuery.Deferred( function( newDefer ) { + jQuery.each( tuples, function( i, tuple ) { + + // Map tuples (progress, done, fail) to arguments (done, fail, progress) + var fn = jQuery.isFunction( fns[ tuple[ 4 ] ] ) && fns[ tuple[ 4 ] ]; + + // deferred.progress(function() { bind to newDefer or newDefer.notify }) + // deferred.done(function() { bind to newDefer or newDefer.resolve }) + // deferred.fail(function() { bind to newDefer or newDefer.reject }) + deferred[ tuple[ 1 ] ]( function() { + var returned = fn && fn.apply( this, arguments ); + if ( returned && jQuery.isFunction( returned.promise ) ) { + returned.promise() + .progress( newDefer.notify ) + .done( newDefer.resolve ) + .fail( newDefer.reject ); + } else { + newDefer[ tuple[ 0 ] + "With" ]( + this, + fn ? [ returned ] : arguments + ); + } + } ); + } ); + fns = null; + } ).promise(); + }, + then: function( onFulfilled, onRejected, onProgress ) { + var maxDepth = 0; + function resolve( depth, deferred, handler, special ) { + return function() { + var that = this, + args = arguments, + mightThrow = function() { + var returned, then; + + // Support: Promises/A+ section 2.3.3.3.3 + // https://promisesaplus.com/#point-59 + // Ignore double-resolution attempts + if ( depth < maxDepth ) { + return; + } + + returned = handler.apply( that, args ); + + // Support: Promises/A+ section 2.3.1 + // https://promisesaplus.com/#point-48 + if ( returned === deferred.promise() ) { + throw new TypeError( "Thenable self-resolution" ); + } + + // Support: Promises/A+ sections 2.3.3.1, 3.5 + // https://promisesaplus.com/#point-54 + // https://promisesaplus.com/#point-75 + // Retrieve `then` only once + then = returned && + + // Support: Promises/A+ section 2.3.4 + // https://promisesaplus.com/#point-64 + // Only check objects and functions for thenability + ( typeof returned === "object" || + typeof returned === "function" ) && + returned.then; + + // Handle a returned thenable + if ( jQuery.isFunction( then ) ) { + + // Special processors (notify) just wait for resolution + if ( special ) { + then.call( + returned, + resolve( maxDepth, deferred, Identity, special ), + resolve( maxDepth, deferred, Thrower, special ) + ); + + // Normal processors (resolve) also hook into progress + } else { + + // ...and disregard older resolution values + maxDepth++; + + then.call( + returned, + resolve( maxDepth, deferred, Identity, special ), + resolve( maxDepth, deferred, Thrower, special ), + resolve( maxDepth, deferred, Identity, + deferred.notifyWith ) + ); + } + + // Handle all other returned values + } else { + + // Only substitute handlers pass on context + // and multiple values (non-spec behavior) + if ( handler !== Identity ) { + that = undefined; + args = [ returned ]; + } + + // Process the value(s) + // Default process is resolve + ( special || deferred.resolveWith )( that, args ); + } + }, + + // Only normal processors (resolve) catch and reject exceptions + process = special ? + mightThrow : + function() { + try { + mightThrow(); + } catch ( e ) { + + if ( jQuery.Deferred.exceptionHook ) { + jQuery.Deferred.exceptionHook( e, + process.stackTrace ); + } + + // Support: Promises/A+ section 2.3.3.3.4.1 + // https://promisesaplus.com/#point-61 + // Ignore post-resolution exceptions + if ( depth + 1 >= maxDepth ) { + + // Only substitute handlers pass on context + // and multiple values (non-spec behavior) + if ( handler !== Thrower ) { + that = undefined; + args = [ e ]; + } + + deferred.rejectWith( that, args ); + } + } + }; + + // Support: Promises/A+ section 2.3.3.3.1 + // https://promisesaplus.com/#point-57 + // Re-resolve promises immediately to dodge false rejection from + // subsequent errors + if ( depth ) { + process(); + } else { + + // Call an optional hook to record the stack, in case of exception + // since it's otherwise lost when execution goes async + if ( jQuery.Deferred.getStackHook ) { + process.stackTrace = jQuery.Deferred.getStackHook(); + } + window.setTimeout( process ); + } + }; + } + + return jQuery.Deferred( function( newDefer ) { + + // progress_handlers.add( ... ) + tuples[ 0 ][ 3 ].add( + resolve( + 0, + newDefer, + jQuery.isFunction( onProgress ) ? + onProgress : + Identity, + newDefer.notifyWith + ) + ); + + // fulfilled_handlers.add( ... ) + tuples[ 1 ][ 3 ].add( + resolve( + 0, + newDefer, + jQuery.isFunction( onFulfilled ) ? + onFulfilled : + Identity + ) + ); + + // rejected_handlers.add( ... ) + tuples[ 2 ][ 3 ].add( + resolve( + 0, + newDefer, + jQuery.isFunction( onRejected ) ? + onRejected : + Thrower + ) + ); + } ).promise(); + }, + + // Get a promise for this deferred + // If obj is provided, the promise aspect is added to the object + promise: function( obj ) { + return obj != null ? jQuery.extend( obj, promise ) : promise; + } + }, + deferred = {}; + + // Add list-specific methods + jQuery.each( tuples, function( i, tuple ) { + var list = tuple[ 2 ], + stateString = tuple[ 5 ]; + + // promise.progress = list.add + // promise.done = list.add + // promise.fail = list.add + promise[ tuple[ 1 ] ] = list.add; + + // Handle state + if ( stateString ) { + list.add( + function() { + + // state = "resolved" (i.e., fulfilled) + // state = "rejected" + state = stateString; + }, + + // rejected_callbacks.disable + // fulfilled_callbacks.disable + tuples[ 3 - i ][ 2 ].disable, + + // progress_callbacks.lock + tuples[ 0 ][ 2 ].lock + ); + } + + // progress_handlers.fire + // fulfilled_handlers.fire + // rejected_handlers.fire + list.add( tuple[ 3 ].fire ); + + // deferred.notify = function() { deferred.notifyWith(...) } + // deferred.resolve = function() { deferred.resolveWith(...) } + // deferred.reject = function() { deferred.rejectWith(...) } + deferred[ tuple[ 0 ] ] = function() { + deferred[ tuple[ 0 ] + "With" ]( this === deferred ? undefined : this, arguments ); + return this; + }; + + // deferred.notifyWith = list.fireWith + // deferred.resolveWith = list.fireWith + // deferred.rejectWith = list.fireWith + deferred[ tuple[ 0 ] + "With" ] = list.fireWith; + } ); + + // Make the deferred a promise + promise.promise( deferred ); + + // Call given func if any + if ( func ) { + func.call( deferred, deferred ); + } + + // All done! + return deferred; + }, + + // Deferred helper + when: function( singleValue ) { + var + + // count of uncompleted subordinates + remaining = arguments.length, + + // count of unprocessed arguments + i = remaining, + + // subordinate fulfillment data + resolveContexts = Array( i ), + resolveValues = slice.call( arguments ), + + // the master Deferred + master = jQuery.Deferred(), + + // subordinate callback factory + updateFunc = function( i ) { + return function( value ) { + resolveContexts[ i ] = this; + resolveValues[ i ] = arguments.length > 1 ? slice.call( arguments ) : value; + if ( !( --remaining ) ) { + master.resolveWith( resolveContexts, resolveValues ); + } + }; + }; + + // Single- and empty arguments are adopted like Promise.resolve + if ( remaining <= 1 ) { + adoptValue( singleValue, master.done( updateFunc( i ) ).resolve, master.reject, + !remaining ); + + // Use .then() to unwrap secondary thenables (cf. gh-3000) + if ( master.state() === "pending" || + jQuery.isFunction( resolveValues[ i ] && resolveValues[ i ].then ) ) { + + return master.then(); + } + } + + // Multiple arguments are aggregated like Promise.all array elements + while ( i-- ) { + adoptValue( resolveValues[ i ], updateFunc( i ), master.reject ); + } + + return master.promise(); + } +} ); + + +// These usually indicate a programmer mistake during development, +// warn about them ASAP rather than swallowing them by default. +var rerrorNames = /^(Eval|Internal|Range|Reference|Syntax|Type|URI)Error$/; + +jQuery.Deferred.exceptionHook = function( error, stack ) { + + // Support: IE 8 - 9 only + // Console exists when dev tools are open, which can happen at any time + if ( window.console && window.console.warn && error && rerrorNames.test( error.name ) ) { + window.console.warn( "jQuery.Deferred exception: " + error.message, error.stack, stack ); + } +}; + + + + +jQuery.readyException = function( error ) { + window.setTimeout( function() { + throw error; + } ); +}; + + + + +// The deferred used on DOM ready +var readyList = jQuery.Deferred(); + +jQuery.fn.ready = function( fn ) { + + readyList + .then( fn ) + + // Wrap jQuery.readyException in a function so that the lookup + // happens at the time of error handling instead of callback + // registration. + .catch( function( error ) { + jQuery.readyException( error ); + } ); + + return this; +}; + +jQuery.extend( { + + // Is the DOM ready to be used? Set to true once it occurs. + isReady: false, + + // A counter to track how many items to wait for before + // the ready event fires. See #6781 + readyWait: 1, + + // Handle when the DOM is ready + ready: function( wait ) { + + // Abort if there are pending holds or we're already ready + if ( wait === true ? --jQuery.readyWait : jQuery.isReady ) { + return; + } + + // Remember that the DOM is ready + jQuery.isReady = true; + + // If a normal DOM Ready event fired, decrement, and wait if need be + if ( wait !== true && --jQuery.readyWait > 0 ) { + return; + } + + // If there are functions bound, to execute + readyList.resolveWith( document, [ jQuery ] ); + } +} ); + +jQuery.ready.then = readyList.then; + +// The ready event handler and self cleanup method +function completed() { + document.removeEventListener( "DOMContentLoaded", completed ); + window.removeEventListener( "load", completed ); + jQuery.ready(); +} + +// Catch cases where $(document).ready() is called +// after the browser event has already occurred. +// Support: IE <=9 - 10 only +// Older IE sometimes signals "interactive" too soon +if ( document.readyState === "complete" || + ( document.readyState !== "loading" && !document.documentElement.doScroll ) ) { + + // Handle it asynchronously to allow scripts the opportunity to delay ready + window.setTimeout( jQuery.ready ); + +} else { + + // Use the handy event callback + document.addEventListener( "DOMContentLoaded", completed ); + + // A fallback to window.onload, that will always work + window.addEventListener( "load", completed ); +} + + + + +// Multifunctional method to get and set values of a collection +// The value/s can optionally be executed if it's a function +var access = function( elems, fn, key, value, chainable, emptyGet, raw ) { + var i = 0, + len = elems.length, + bulk = key == null; + + // Sets many values + if ( jQuery.type( key ) === "object" ) { + chainable = true; + for ( i in key ) { + access( elems, fn, i, key[ i ], true, emptyGet, raw ); + } + + // Sets one value + } else if ( value !== undefined ) { + chainable = true; + + if ( !jQuery.isFunction( value ) ) { + raw = true; + } + + if ( bulk ) { + + // Bulk operations run against the entire set + if ( raw ) { + fn.call( elems, value ); + fn = null; + + // ...except when executing function values + } else { + bulk = fn; + fn = function( elem, key, value ) { + return bulk.call( jQuery( elem ), value ); + }; + } + } + + if ( fn ) { + for ( ; i < len; i++ ) { + fn( + elems[ i ], key, raw ? + value : + value.call( elems[ i ], i, fn( elems[ i ], key ) ) + ); + } + } + } + + if ( chainable ) { + return elems; + } + + // Gets + if ( bulk ) { + return fn.call( elems ); + } + + return len ? fn( elems[ 0 ], key ) : emptyGet; +}; +var acceptData = function( owner ) { + + // Accepts only: + // - Node + // - Node.ELEMENT_NODE + // - Node.DOCUMENT_NODE + // - Object + // - Any + return owner.nodeType === 1 || owner.nodeType === 9 || !( +owner.nodeType ); +}; + + + + +function Data() { + this.expando = jQuery.expando + Data.uid++; +} + +Data.uid = 1; + +Data.prototype = { + + cache: function( owner ) { + + // Check if the owner object already has a cache + var value = owner[ this.expando ]; + + // If not, create one + if ( !value ) { + value = {}; + + // We can accept data for non-element nodes in modern browsers, + // but we should not, see #8335. + // Always return an empty object. + if ( acceptData( owner ) ) { + + // If it is a node unlikely to be stringify-ed or looped over + // use plain assignment + if ( owner.nodeType ) { + owner[ this.expando ] = value; + + // Otherwise secure it in a non-enumerable property + // configurable must be true to allow the property to be + // deleted when data is removed + } else { + Object.defineProperty( owner, this.expando, { + value: value, + configurable: true + } ); + } + } + } + + return value; + }, + set: function( owner, data, value ) { + var prop, + cache = this.cache( owner ); + + // Handle: [ owner, key, value ] args + // Always use camelCase key (gh-2257) + if ( typeof data === "string" ) { + cache[ jQuery.camelCase( data ) ] = value; + + // Handle: [ owner, { properties } ] args + } else { + + // Copy the properties one-by-one to the cache object + for ( prop in data ) { + cache[ jQuery.camelCase( prop ) ] = data[ prop ]; + } + } + return cache; + }, + get: function( owner, key ) { + return key === undefined ? + this.cache( owner ) : + + // Always use camelCase key (gh-2257) + owner[ this.expando ] && owner[ this.expando ][ jQuery.camelCase( key ) ]; + }, + access: function( owner, key, value ) { + + // In cases where either: + // + // 1. No key was specified + // 2. A string key was specified, but no value provided + // + // Take the "read" path and allow the get method to determine + // which value to return, respectively either: + // + // 1. The entire cache object + // 2. The data stored at the key + // + if ( key === undefined || + ( ( key && typeof key === "string" ) && value === undefined ) ) { + + return this.get( owner, key ); + } + + // When the key is not a string, or both a key and value + // are specified, set or extend (existing objects) with either: + // + // 1. An object of properties + // 2. A key and value + // + this.set( owner, key, value ); + + // Since the "set" path can have two possible entry points + // return the expected data based on which path was taken[*] + return value !== undefined ? value : key; + }, + remove: function( owner, key ) { + var i, + cache = owner[ this.expando ]; + + if ( cache === undefined ) { + return; + } + + if ( key !== undefined ) { + + // Support array or space separated string of keys + if ( Array.isArray( key ) ) { + + // If key is an array of keys... + // We always set camelCase keys, so remove that. + key = key.map( jQuery.camelCase ); + } else { + key = jQuery.camelCase( key ); + + // If a key with the spaces exists, use it. + // Otherwise, create an array by matching non-whitespace + key = key in cache ? + [ key ] : + ( key.match( rnothtmlwhite ) || [] ); + } + + i = key.length; + + while ( i-- ) { + delete cache[ key[ i ] ]; + } + } + + // Remove the expando if there's no more data + if ( key === undefined || jQuery.isEmptyObject( cache ) ) { + + // Support: Chrome <=35 - 45 + // Webkit & Blink performance suffers when deleting properties + // from DOM nodes, so set to undefined instead + // https://bugs.chromium.org/p/chromium/issues/detail?id=378607 (bug restricted) + if ( owner.nodeType ) { + owner[ this.expando ] = undefined; + } else { + delete owner[ this.expando ]; + } + } + }, + hasData: function( owner ) { + var cache = owner[ this.expando ]; + return cache !== undefined && !jQuery.isEmptyObject( cache ); + } +}; +var dataPriv = new Data(); + +var dataUser = new Data(); + + + +// Implementation Summary +// +// 1. Enforce API surface and semantic compatibility with 1.9.x branch +// 2. Improve the module's maintainability by reducing the storage +// paths to a single mechanism. +// 3. Use the same single mechanism to support "private" and "user" data. +// 4. _Never_ expose "private" data to user code (TODO: Drop _data, _removeData) +// 5. Avoid exposing implementation details on user objects (eg. expando properties) +// 6. Provide a clear path for implementation upgrade to WeakMap in 2014 + +var rbrace = /^(?:\{[\w\W]*\}|\[[\w\W]*\])$/, + rmultiDash = /[A-Z]/g; + +function getData( data ) { + if ( data === "true" ) { + return true; + } + + if ( data === "false" ) { + return false; + } + + if ( data === "null" ) { + return null; + } + + // Only convert to a number if it doesn't change the string + if ( data === +data + "" ) { + return +data; + } + + if ( rbrace.test( data ) ) { + return JSON.parse( data ); + } + + return data; +} + +function dataAttr( elem, key, data ) { + var name; + + // If nothing was found internally, try to fetch any + // data from the HTML5 data-* attribute + if ( data === undefined && elem.nodeType === 1 ) { + name = "data-" + key.replace( rmultiDash, "-$&" ).toLowerCase(); + data = elem.getAttribute( name ); + + if ( typeof data === "string" ) { + try { + data = getData( data ); + } catch ( e ) {} + + // Make sure we set the data so it isn't changed later + dataUser.set( elem, key, data ); + } else { + data = undefined; + } + } + return data; +} + +jQuery.extend( { + hasData: function( elem ) { + return dataUser.hasData( elem ) || dataPriv.hasData( elem ); + }, + + data: function( elem, name, data ) { + return dataUser.access( elem, name, data ); + }, + + removeData: function( elem, name ) { + dataUser.remove( elem, name ); + }, + + // TODO: Now that all calls to _data and _removeData have been replaced + // with direct calls to dataPriv methods, these can be deprecated. + _data: function( elem, name, data ) { + return dataPriv.access( elem, name, data ); + }, + + _removeData: function( elem, name ) { + dataPriv.remove( elem, name ); + } +} ); + +jQuery.fn.extend( { + data: function( key, value ) { + var i, name, data, + elem = this[ 0 ], + attrs = elem && elem.attributes; + + // Gets all values + if ( key === undefined ) { + if ( this.length ) { + data = dataUser.get( elem ); + + if ( elem.nodeType === 1 && !dataPriv.get( elem, "hasDataAttrs" ) ) { + i = attrs.length; + while ( i-- ) { + + // Support: IE 11 only + // The attrs elements can be null (#14894) + if ( attrs[ i ] ) { + name = attrs[ i ].name; + if ( name.indexOf( "data-" ) === 0 ) { + name = jQuery.camelCase( name.slice( 5 ) ); + dataAttr( elem, name, data[ name ] ); + } + } + } + dataPriv.set( elem, "hasDataAttrs", true ); + } + } + + return data; + } + + // Sets multiple values + if ( typeof key === "object" ) { + return this.each( function() { + dataUser.set( this, key ); + } ); + } + + return access( this, function( value ) { + var data; + + // The calling jQuery object (element matches) is not empty + // (and therefore has an element appears at this[ 0 ]) and the + // `value` parameter was not undefined. An empty jQuery object + // will result in `undefined` for elem = this[ 0 ] which will + // throw an exception if an attempt to read a data cache is made. + if ( elem && value === undefined ) { + + // Attempt to get data from the cache + // The key will always be camelCased in Data + data = dataUser.get( elem, key ); + if ( data !== undefined ) { + return data; + } + + // Attempt to "discover" the data in + // HTML5 custom data-* attrs + data = dataAttr( elem, key ); + if ( data !== undefined ) { + return data; + } + + // We tried really hard, but the data doesn't exist. + return; + } + + // Set the data... + this.each( function() { + + // We always store the camelCased key + dataUser.set( this, key, value ); + } ); + }, null, value, arguments.length > 1, null, true ); + }, + + removeData: function( key ) { + return this.each( function() { + dataUser.remove( this, key ); + } ); + } +} ); + + +jQuery.extend( { + queue: function( elem, type, data ) { + var queue; + + if ( elem ) { + type = ( type || "fx" ) + "queue"; + queue = dataPriv.get( elem, type ); + + // Speed up dequeue by getting out quickly if this is just a lookup + if ( data ) { + if ( !queue || Array.isArray( data ) ) { + queue = dataPriv.access( elem, type, jQuery.makeArray( data ) ); + } else { + queue.push( data ); + } + } + return queue || []; + } + }, + + dequeue: function( elem, type ) { + type = type || "fx"; + + var queue = jQuery.queue( elem, type ), + startLength = queue.length, + fn = queue.shift(), + hooks = jQuery._queueHooks( elem, type ), + next = function() { + jQuery.dequeue( elem, type ); + }; + + // If the fx queue is dequeued, always remove the progress sentinel + if ( fn === "inprogress" ) { + fn = queue.shift(); + startLength--; + } + + if ( fn ) { + + // Add a progress sentinel to prevent the fx queue from being + // automatically dequeued + if ( type === "fx" ) { + queue.unshift( "inprogress" ); + } + + // Clear up the last queue stop function + delete hooks.stop; + fn.call( elem, next, hooks ); + } + + if ( !startLength && hooks ) { + hooks.empty.fire(); + } + }, + + // Not public - generate a queueHooks object, or return the current one + _queueHooks: function( elem, type ) { + var key = type + "queueHooks"; + return dataPriv.get( elem, key ) || dataPriv.access( elem, key, { + empty: jQuery.Callbacks( "once memory" ).add( function() { + dataPriv.remove( elem, [ type + "queue", key ] ); + } ) + } ); + } +} ); + +jQuery.fn.extend( { + queue: function( type, data ) { + var setter = 2; + + if ( typeof type !== "string" ) { + data = type; + type = "fx"; + setter--; + } + + if ( arguments.length < setter ) { + return jQuery.queue( this[ 0 ], type ); + } + + return data === undefined ? + this : + this.each( function() { + var queue = jQuery.queue( this, type, data ); + + // Ensure a hooks for this queue + jQuery._queueHooks( this, type ); + + if ( type === "fx" && queue[ 0 ] !== "inprogress" ) { + jQuery.dequeue( this, type ); + } + } ); + }, + dequeue: function( type ) { + return this.each( function() { + jQuery.dequeue( this, type ); + } ); + }, + clearQueue: function( type ) { + return this.queue( type || "fx", [] ); + }, + + // Get a promise resolved when queues of a certain type + // are emptied (fx is the type by default) + promise: function( type, obj ) { + var tmp, + count = 1, + defer = jQuery.Deferred(), + elements = this, + i = this.length, + resolve = function() { + if ( !( --count ) ) { + defer.resolveWith( elements, [ elements ] ); + } + }; + + if ( typeof type !== "string" ) { + obj = type; + type = undefined; + } + type = type || "fx"; + + while ( i-- ) { + tmp = dataPriv.get( elements[ i ], type + "queueHooks" ); + if ( tmp && tmp.empty ) { + count++; + tmp.empty.add( resolve ); + } + } + resolve(); + return defer.promise( obj ); + } +} ); +var pnum = ( /[+-]?(?:\d*\.|)\d+(?:[eE][+-]?\d+|)/ ).source; + +var rcssNum = new RegExp( "^(?:([+-])=|)(" + pnum + ")([a-z%]*)$", "i" ); + + +var cssExpand = [ "Top", "Right", "Bottom", "Left" ]; + +var isHiddenWithinTree = function( elem, el ) { + + // isHiddenWithinTree might be called from jQuery#filter function; + // in that case, element will be second argument + elem = el || elem; + + // Inline style trumps all + return elem.style.display === "none" || + elem.style.display === "" && + + // Otherwise, check computed style + // Support: Firefox <=43 - 45 + // Disconnected elements can have computed display: none, so first confirm that elem is + // in the document. + jQuery.contains( elem.ownerDocument, elem ) && + + jQuery.css( elem, "display" ) === "none"; + }; + +var swap = function( elem, options, callback, args ) { + var ret, name, + old = {}; + + // Remember the old values, and insert the new ones + for ( name in options ) { + old[ name ] = elem.style[ name ]; + elem.style[ name ] = options[ name ]; + } + + ret = callback.apply( elem, args || [] ); + + // Revert the old values + for ( name in options ) { + elem.style[ name ] = old[ name ]; + } + + return ret; +}; + + + + +function adjustCSS( elem, prop, valueParts, tween ) { + var adjusted, + scale = 1, + maxIterations = 20, + currentValue = tween ? + function() { + return tween.cur(); + } : + function() { + return jQuery.css( elem, prop, "" ); + }, + initial = currentValue(), + unit = valueParts && valueParts[ 3 ] || ( jQuery.cssNumber[ prop ] ? "" : "px" ), + + // Starting value computation is required for potential unit mismatches + initialInUnit = ( jQuery.cssNumber[ prop ] || unit !== "px" && +initial ) && + rcssNum.exec( jQuery.css( elem, prop ) ); + + if ( initialInUnit && initialInUnit[ 3 ] !== unit ) { + + // Trust units reported by jQuery.css + unit = unit || initialInUnit[ 3 ]; + + // Make sure we update the tween properties later on + valueParts = valueParts || []; + + // Iteratively approximate from a nonzero starting point + initialInUnit = +initial || 1; + + do { + + // If previous iteration zeroed out, double until we get *something*. + // Use string for doubling so we don't accidentally see scale as unchanged below + scale = scale || ".5"; + + // Adjust and apply + initialInUnit = initialInUnit / scale; + jQuery.style( elem, prop, initialInUnit + unit ); + + // Update scale, tolerating zero or NaN from tween.cur() + // Break the loop if scale is unchanged or perfect, or if we've just had enough. + } while ( + scale !== ( scale = currentValue() / initial ) && scale !== 1 && --maxIterations + ); + } + + if ( valueParts ) { + initialInUnit = +initialInUnit || +initial || 0; + + // Apply relative offset (+=/-=) if specified + adjusted = valueParts[ 1 ] ? + initialInUnit + ( valueParts[ 1 ] + 1 ) * valueParts[ 2 ] : + +valueParts[ 2 ]; + if ( tween ) { + tween.unit = unit; + tween.start = initialInUnit; + tween.end = adjusted; + } + } + return adjusted; +} + + +var defaultDisplayMap = {}; + +function getDefaultDisplay( elem ) { + var temp, + doc = elem.ownerDocument, + nodeName = elem.nodeName, + display = defaultDisplayMap[ nodeName ]; + + if ( display ) { + return display; + } + + temp = doc.body.appendChild( doc.createElement( nodeName ) ); + display = jQuery.css( temp, "display" ); + + temp.parentNode.removeChild( temp ); + + if ( display === "none" ) { + display = "block"; + } + defaultDisplayMap[ nodeName ] = display; + + return display; +} + +function showHide( elements, show ) { + var display, elem, + values = [], + index = 0, + length = elements.length; + + // Determine new display value for elements that need to change + for ( ; index < length; index++ ) { + elem = elements[ index ]; + if ( !elem.style ) { + continue; + } + + display = elem.style.display; + if ( show ) { + + // Since we force visibility upon cascade-hidden elements, an immediate (and slow) + // check is required in this first loop unless we have a nonempty display value (either + // inline or about-to-be-restored) + if ( display === "none" ) { + values[ index ] = dataPriv.get( elem, "display" ) || null; + if ( !values[ index ] ) { + elem.style.display = ""; + } + } + if ( elem.style.display === "" && isHiddenWithinTree( elem ) ) { + values[ index ] = getDefaultDisplay( elem ); + } + } else { + if ( display !== "none" ) { + values[ index ] = "none"; + + // Remember what we're overwriting + dataPriv.set( elem, "display", display ); + } + } + } + + // Set the display of the elements in a second loop to avoid constant reflow + for ( index = 0; index < length; index++ ) { + if ( values[ index ] != null ) { + elements[ index ].style.display = values[ index ]; + } + } + + return elements; +} + +jQuery.fn.extend( { + show: function() { + return showHide( this, true ); + }, + hide: function() { + return showHide( this ); + }, + toggle: function( state ) { + if ( typeof state === "boolean" ) { + return state ? this.show() : this.hide(); + } + + return this.each( function() { + if ( isHiddenWithinTree( this ) ) { + jQuery( this ).show(); + } else { + jQuery( this ).hide(); + } + } ); + } +} ); +var rcheckableType = ( /^(?:checkbox|radio)$/i ); + +var rtagName = ( /<([a-z][^\/\0>\x20\t\r\n\f]+)/i ); + +var rscriptType = ( /^$|\/(?:java|ecma)script/i ); + + + +// We have to close these tags to support XHTML (#13200) +var wrapMap = { + + // Support: IE <=9 only + option: [ 1, "" ], + + // XHTML parsers do not magically insert elements in the + // same way that tag soup parsers do. So we cannot shorten + // this by omitting or other required elements. + thead: [ 1, "", "
" ], + col: [ 2, "", "
" ], + tr: [ 2, "", "
" ], + td: [ 3, "", "
" ], + + _default: [ 0, "", "" ] +}; + +// Support: IE <=9 only +wrapMap.optgroup = wrapMap.option; + +wrapMap.tbody = wrapMap.tfoot = wrapMap.colgroup = wrapMap.caption = wrapMap.thead; +wrapMap.th = wrapMap.td; + + +function getAll( context, tag ) { + + // Support: IE <=9 - 11 only + // Use typeof to avoid zero-argument method invocation on host objects (#15151) + var ret; + + if ( typeof context.getElementsByTagName !== "undefined" ) { + ret = context.getElementsByTagName( tag || "*" ); + + } else if ( typeof context.querySelectorAll !== "undefined" ) { + ret = context.querySelectorAll( tag || "*" ); + + } else { + ret = []; + } + + if ( tag === undefined || tag && nodeName( context, tag ) ) { + return jQuery.merge( [ context ], ret ); + } + + return ret; +} + + +// Mark scripts as having already been evaluated +function setGlobalEval( elems, refElements ) { + var i = 0, + l = elems.length; + + for ( ; i < l; i++ ) { + dataPriv.set( + elems[ i ], + "globalEval", + !refElements || dataPriv.get( refElements[ i ], "globalEval" ) + ); + } +} + + +var rhtml = /<|&#?\w+;/; + +function buildFragment( elems, context, scripts, selection, ignored ) { + var elem, tmp, tag, wrap, contains, j, + fragment = context.createDocumentFragment(), + nodes = [], + i = 0, + l = elems.length; + + for ( ; i < l; i++ ) { + elem = elems[ i ]; + + if ( elem || elem === 0 ) { + + // Add nodes directly + if ( jQuery.type( elem ) === "object" ) { + + // Support: Android <=4.0 only, PhantomJS 1 only + // push.apply(_, arraylike) throws on ancient WebKit + jQuery.merge( nodes, elem.nodeType ? [ elem ] : elem ); + + // Convert non-html into a text node + } else if ( !rhtml.test( elem ) ) { + nodes.push( context.createTextNode( elem ) ); + + // Convert html into DOM nodes + } else { + tmp = tmp || fragment.appendChild( context.createElement( "div" ) ); + + // Deserialize a standard representation + tag = ( rtagName.exec( elem ) || [ "", "" ] )[ 1 ].toLowerCase(); + wrap = wrapMap[ tag ] || wrapMap._default; + tmp.innerHTML = wrap[ 1 ] + jQuery.htmlPrefilter( elem ) + wrap[ 2 ]; + + // Descend through wrappers to the right content + j = wrap[ 0 ]; + while ( j-- ) { + tmp = tmp.lastChild; + } + + // Support: Android <=4.0 only, PhantomJS 1 only + // push.apply(_, arraylike) throws on ancient WebKit + jQuery.merge( nodes, tmp.childNodes ); + + // Remember the top-level container + tmp = fragment.firstChild; + + // Ensure the created nodes are orphaned (#12392) + tmp.textContent = ""; + } + } + } + + // Remove wrapper from fragment + fragment.textContent = ""; + + i = 0; + while ( ( elem = nodes[ i++ ] ) ) { + + // Skip elements already in the context collection (trac-4087) + if ( selection && jQuery.inArray( elem, selection ) > -1 ) { + if ( ignored ) { + ignored.push( elem ); + } + continue; + } + + contains = jQuery.contains( elem.ownerDocument, elem ); + + // Append to fragment + tmp = getAll( fragment.appendChild( elem ), "script" ); + + // Preserve script evaluation history + if ( contains ) { + setGlobalEval( tmp ); + } + + // Capture executables + if ( scripts ) { + j = 0; + while ( ( elem = tmp[ j++ ] ) ) { + if ( rscriptType.test( elem.type || "" ) ) { + scripts.push( elem ); + } + } + } + } + + return fragment; +} + + +( function() { + var fragment = document.createDocumentFragment(), + div = fragment.appendChild( document.createElement( "div" ) ), + input = document.createElement( "input" ); + + // Support: Android 4.0 - 4.3 only + // Check state lost if the name is set (#11217) + // Support: Windows Web Apps (WWA) + // `name` and `type` must use .setAttribute for WWA (#14901) + input.setAttribute( "type", "radio" ); + input.setAttribute( "checked", "checked" ); + input.setAttribute( "name", "t" ); + + div.appendChild( input ); + + // Support: Android <=4.1 only + // Older WebKit doesn't clone checked state correctly in fragments + support.checkClone = div.cloneNode( true ).cloneNode( true ).lastChild.checked; + + // Support: IE <=11 only + // Make sure textarea (and checkbox) defaultValue is properly cloned + div.innerHTML = ""; + support.noCloneChecked = !!div.cloneNode( true ).lastChild.defaultValue; +} )(); +var documentElement = document.documentElement; + + + +var + rkeyEvent = /^key/, + rmouseEvent = /^(?:mouse|pointer|contextmenu|drag|drop)|click/, + rtypenamespace = /^([^.]*)(?:\.(.+)|)/; + +function returnTrue() { + return true; +} + +function returnFalse() { + return false; +} + +// Support: IE <=9 only +// See #13393 for more info +function safeActiveElement() { + try { + return document.activeElement; + } catch ( err ) { } +} + +function on( elem, types, selector, data, fn, one ) { + var origFn, type; + + // Types can be a map of types/handlers + if ( typeof types === "object" ) { + + // ( types-Object, selector, data ) + if ( typeof selector !== "string" ) { + + // ( types-Object, data ) + data = data || selector; + selector = undefined; + } + for ( type in types ) { + on( elem, type, selector, data, types[ type ], one ); + } + return elem; + } + + if ( data == null && fn == null ) { + + // ( types, fn ) + fn = selector; + data = selector = undefined; + } else if ( fn == null ) { + if ( typeof selector === "string" ) { + + // ( types, selector, fn ) + fn = data; + data = undefined; + } else { + + // ( types, data, fn ) + fn = data; + data = selector; + selector = undefined; + } + } + if ( fn === false ) { + fn = returnFalse; + } else if ( !fn ) { + return elem; + } + + if ( one === 1 ) { + origFn = fn; + fn = function( event ) { + + // Can use an empty set, since event contains the info + jQuery().off( event ); + return origFn.apply( this, arguments ); + }; + + // Use same guid so caller can remove using origFn + fn.guid = origFn.guid || ( origFn.guid = jQuery.guid++ ); + } + return elem.each( function() { + jQuery.event.add( this, types, fn, data, selector ); + } ); +} + +/* + * Helper functions for managing events -- not part of the public interface. + * Props to Dean Edwards' addEvent library for many of the ideas. + */ +jQuery.event = { + + global: {}, + + add: function( elem, types, handler, data, selector ) { + + var handleObjIn, eventHandle, tmp, + events, t, handleObj, + special, handlers, type, namespaces, origType, + elemData = dataPriv.get( elem ); + + // Don't attach events to noData or text/comment nodes (but allow plain objects) + if ( !elemData ) { + return; + } + + // Caller can pass in an object of custom data in lieu of the handler + if ( handler.handler ) { + handleObjIn = handler; + handler = handleObjIn.handler; + selector = handleObjIn.selector; + } + + // Ensure that invalid selectors throw exceptions at attach time + // Evaluate against documentElement in case elem is a non-element node (e.g., document) + if ( selector ) { + jQuery.find.matchesSelector( documentElement, selector ); + } + + // Make sure that the handler has a unique ID, used to find/remove it later + if ( !handler.guid ) { + handler.guid = jQuery.guid++; + } + + // Init the element's event structure and main handler, if this is the first + if ( !( events = elemData.events ) ) { + events = elemData.events = {}; + } + if ( !( eventHandle = elemData.handle ) ) { + eventHandle = elemData.handle = function( e ) { + + // Discard the second event of a jQuery.event.trigger() and + // when an event is called after a page has unloaded + return typeof jQuery !== "undefined" && jQuery.event.triggered !== e.type ? + jQuery.event.dispatch.apply( elem, arguments ) : undefined; + }; + } + + // Handle multiple events separated by a space + types = ( types || "" ).match( rnothtmlwhite ) || [ "" ]; + t = types.length; + while ( t-- ) { + tmp = rtypenamespace.exec( types[ t ] ) || []; + type = origType = tmp[ 1 ]; + namespaces = ( tmp[ 2 ] || "" ).split( "." ).sort(); + + // There *must* be a type, no attaching namespace-only handlers + if ( !type ) { + continue; + } + + // If event changes its type, use the special event handlers for the changed type + special = jQuery.event.special[ type ] || {}; + + // If selector defined, determine special event api type, otherwise given type + type = ( selector ? special.delegateType : special.bindType ) || type; + + // Update special based on newly reset type + special = jQuery.event.special[ type ] || {}; + + // handleObj is passed to all event handlers + handleObj = jQuery.extend( { + type: type, + origType: origType, + data: data, + handler: handler, + guid: handler.guid, + selector: selector, + needsContext: selector && jQuery.expr.match.needsContext.test( selector ), + namespace: namespaces.join( "." ) + }, handleObjIn ); + + // Init the event handler queue if we're the first + if ( !( handlers = events[ type ] ) ) { + handlers = events[ type ] = []; + handlers.delegateCount = 0; + + // Only use addEventListener if the special events handler returns false + if ( !special.setup || + special.setup.call( elem, data, namespaces, eventHandle ) === false ) { + + if ( elem.addEventListener ) { + elem.addEventListener( type, eventHandle ); + } + } + } + + if ( special.add ) { + special.add.call( elem, handleObj ); + + if ( !handleObj.handler.guid ) { + handleObj.handler.guid = handler.guid; + } + } + + // Add to the element's handler list, delegates in front + if ( selector ) { + handlers.splice( handlers.delegateCount++, 0, handleObj ); + } else { + handlers.push( handleObj ); + } + + // Keep track of which events have ever been used, for event optimization + jQuery.event.global[ type ] = true; + } + + }, + + // Detach an event or set of events from an element + remove: function( elem, types, handler, selector, mappedTypes ) { + + var j, origCount, tmp, + events, t, handleObj, + special, handlers, type, namespaces, origType, + elemData = dataPriv.hasData( elem ) && dataPriv.get( elem ); + + if ( !elemData || !( events = elemData.events ) ) { + return; + } + + // Once for each type.namespace in types; type may be omitted + types = ( types || "" ).match( rnothtmlwhite ) || [ "" ]; + t = types.length; + while ( t-- ) { + tmp = rtypenamespace.exec( types[ t ] ) || []; + type = origType = tmp[ 1 ]; + namespaces = ( tmp[ 2 ] || "" ).split( "." ).sort(); + + // Unbind all events (on this namespace, if provided) for the element + if ( !type ) { + for ( type in events ) { + jQuery.event.remove( elem, type + types[ t ], handler, selector, true ); + } + continue; + } + + special = jQuery.event.special[ type ] || {}; + type = ( selector ? special.delegateType : special.bindType ) || type; + handlers = events[ type ] || []; + tmp = tmp[ 2 ] && + new RegExp( "(^|\\.)" + namespaces.join( "\\.(?:.*\\.|)" ) + "(\\.|$)" ); + + // Remove matching events + origCount = j = handlers.length; + while ( j-- ) { + handleObj = handlers[ j ]; + + if ( ( mappedTypes || origType === handleObj.origType ) && + ( !handler || handler.guid === handleObj.guid ) && + ( !tmp || tmp.test( handleObj.namespace ) ) && + ( !selector || selector === handleObj.selector || + selector === "**" && handleObj.selector ) ) { + handlers.splice( j, 1 ); + + if ( handleObj.selector ) { + handlers.delegateCount--; + } + if ( special.remove ) { + special.remove.call( elem, handleObj ); + } + } + } + + // Remove generic event handler if we removed something and no more handlers exist + // (avoids potential for endless recursion during removal of special event handlers) + if ( origCount && !handlers.length ) { + if ( !special.teardown || + special.teardown.call( elem, namespaces, elemData.handle ) === false ) { + + jQuery.removeEvent( elem, type, elemData.handle ); + } + + delete events[ type ]; + } + } + + // Remove data and the expando if it's no longer used + if ( jQuery.isEmptyObject( events ) ) { + dataPriv.remove( elem, "handle events" ); + } + }, + + dispatch: function( nativeEvent ) { + + // Make a writable jQuery.Event from the native event object + var event = jQuery.event.fix( nativeEvent ); + + var i, j, ret, matched, handleObj, handlerQueue, + args = new Array( arguments.length ), + handlers = ( dataPriv.get( this, "events" ) || {} )[ event.type ] || [], + special = jQuery.event.special[ event.type ] || {}; + + // Use the fix-ed jQuery.Event rather than the (read-only) native event + args[ 0 ] = event; + + for ( i = 1; i < arguments.length; i++ ) { + args[ i ] = arguments[ i ]; + } + + event.delegateTarget = this; + + // Call the preDispatch hook for the mapped type, and let it bail if desired + if ( special.preDispatch && special.preDispatch.call( this, event ) === false ) { + return; + } + + // Determine handlers + handlerQueue = jQuery.event.handlers.call( this, event, handlers ); + + // Run delegates first; they may want to stop propagation beneath us + i = 0; + while ( ( matched = handlerQueue[ i++ ] ) && !event.isPropagationStopped() ) { + event.currentTarget = matched.elem; + + j = 0; + while ( ( handleObj = matched.handlers[ j++ ] ) && + !event.isImmediatePropagationStopped() ) { + + // Triggered event must either 1) have no namespace, or 2) have namespace(s) + // a subset or equal to those in the bound event (both can have no namespace). + if ( !event.rnamespace || event.rnamespace.test( handleObj.namespace ) ) { + + event.handleObj = handleObj; + event.data = handleObj.data; + + ret = ( ( jQuery.event.special[ handleObj.origType ] || {} ).handle || + handleObj.handler ).apply( matched.elem, args ); + + if ( ret !== undefined ) { + if ( ( event.result = ret ) === false ) { + event.preventDefault(); + event.stopPropagation(); + } + } + } + } + } + + // Call the postDispatch hook for the mapped type + if ( special.postDispatch ) { + special.postDispatch.call( this, event ); + } + + return event.result; + }, + + handlers: function( event, handlers ) { + var i, handleObj, sel, matchedHandlers, matchedSelectors, + handlerQueue = [], + delegateCount = handlers.delegateCount, + cur = event.target; + + // Find delegate handlers + if ( delegateCount && + + // Support: IE <=9 + // Black-hole SVG instance trees (trac-13180) + cur.nodeType && + + // Support: Firefox <=42 + // Suppress spec-violating clicks indicating a non-primary pointer button (trac-3861) + // https://www.w3.org/TR/DOM-Level-3-Events/#event-type-click + // Support: IE 11 only + // ...but not arrow key "clicks" of radio inputs, which can have `button` -1 (gh-2343) + !( event.type === "click" && event.button >= 1 ) ) { + + for ( ; cur !== this; cur = cur.parentNode || this ) { + + // Don't check non-elements (#13208) + // Don't process clicks on disabled elements (#6911, #8165, #11382, #11764) + if ( cur.nodeType === 1 && !( event.type === "click" && cur.disabled === true ) ) { + matchedHandlers = []; + matchedSelectors = {}; + for ( i = 0; i < delegateCount; i++ ) { + handleObj = handlers[ i ]; + + // Don't conflict with Object.prototype properties (#13203) + sel = handleObj.selector + " "; + + if ( matchedSelectors[ sel ] === undefined ) { + matchedSelectors[ sel ] = handleObj.needsContext ? + jQuery( sel, this ).index( cur ) > -1 : + jQuery.find( sel, this, null, [ cur ] ).length; + } + if ( matchedSelectors[ sel ] ) { + matchedHandlers.push( handleObj ); + } + } + if ( matchedHandlers.length ) { + handlerQueue.push( { elem: cur, handlers: matchedHandlers } ); + } + } + } + } + + // Add the remaining (directly-bound) handlers + cur = this; + if ( delegateCount < handlers.length ) { + handlerQueue.push( { elem: cur, handlers: handlers.slice( delegateCount ) } ); + } + + return handlerQueue; + }, + + addProp: function( name, hook ) { + Object.defineProperty( jQuery.Event.prototype, name, { + enumerable: true, + configurable: true, + + get: jQuery.isFunction( hook ) ? + function() { + if ( this.originalEvent ) { + return hook( this.originalEvent ); + } + } : + function() { + if ( this.originalEvent ) { + return this.originalEvent[ name ]; + } + }, + + set: function( value ) { + Object.defineProperty( this, name, { + enumerable: true, + configurable: true, + writable: true, + value: value + } ); + } + } ); + }, + + fix: function( originalEvent ) { + return originalEvent[ jQuery.expando ] ? + originalEvent : + new jQuery.Event( originalEvent ); + }, + + special: { + load: { + + // Prevent triggered image.load events from bubbling to window.load + noBubble: true + }, + focus: { + + // Fire native event if possible so blur/focus sequence is correct + trigger: function() { + if ( this !== safeActiveElement() && this.focus ) { + this.focus(); + return false; + } + }, + delegateType: "focusin" + }, + blur: { + trigger: function() { + if ( this === safeActiveElement() && this.blur ) { + this.blur(); + return false; + } + }, + delegateType: "focusout" + }, + click: { + + // For checkbox, fire native event so checked state will be right + trigger: function() { + if ( this.type === "checkbox" && this.click && nodeName( this, "input" ) ) { + this.click(); + return false; + } + }, + + // For cross-browser consistency, don't fire native .click() on links + _default: function( event ) { + return nodeName( event.target, "a" ); + } + }, + + beforeunload: { + postDispatch: function( event ) { + + // Support: Firefox 20+ + // Firefox doesn't alert if the returnValue field is not set. + if ( event.result !== undefined && event.originalEvent ) { + event.originalEvent.returnValue = event.result; + } + } + } + } +}; + +jQuery.removeEvent = function( elem, type, handle ) { + + // This "if" is needed for plain objects + if ( elem.removeEventListener ) { + elem.removeEventListener( type, handle ); + } +}; + +jQuery.Event = function( src, props ) { + + // Allow instantiation without the 'new' keyword + if ( !( this instanceof jQuery.Event ) ) { + return new jQuery.Event( src, props ); + } + + // Event object + if ( src && src.type ) { + this.originalEvent = src; + this.type = src.type; + + // Events bubbling up the document may have been marked as prevented + // by a handler lower down the tree; reflect the correct value. + this.isDefaultPrevented = src.defaultPrevented || + src.defaultPrevented === undefined && + + // Support: Android <=2.3 only + src.returnValue === false ? + returnTrue : + returnFalse; + + // Create target properties + // Support: Safari <=6 - 7 only + // Target should not be a text node (#504, #13143) + this.target = ( src.target && src.target.nodeType === 3 ) ? + src.target.parentNode : + src.target; + + this.currentTarget = src.currentTarget; + this.relatedTarget = src.relatedTarget; + + // Event type + } else { + this.type = src; + } + + // Put explicitly provided properties onto the event object + if ( props ) { + jQuery.extend( this, props ); + } + + // Create a timestamp if incoming event doesn't have one + this.timeStamp = src && src.timeStamp || jQuery.now(); + + // Mark it as fixed + this[ jQuery.expando ] = true; +}; + +// jQuery.Event is based on DOM3 Events as specified by the ECMAScript Language Binding +// https://www.w3.org/TR/2003/WD-DOM-Level-3-Events-20030331/ecma-script-binding.html +jQuery.Event.prototype = { + constructor: jQuery.Event, + isDefaultPrevented: returnFalse, + isPropagationStopped: returnFalse, + isImmediatePropagationStopped: returnFalse, + isSimulated: false, + + preventDefault: function() { + var e = this.originalEvent; + + this.isDefaultPrevented = returnTrue; + + if ( e && !this.isSimulated ) { + e.preventDefault(); + } + }, + stopPropagation: function() { + var e = this.originalEvent; + + this.isPropagationStopped = returnTrue; + + if ( e && !this.isSimulated ) { + e.stopPropagation(); + } + }, + stopImmediatePropagation: function() { + var e = this.originalEvent; + + this.isImmediatePropagationStopped = returnTrue; + + if ( e && !this.isSimulated ) { + e.stopImmediatePropagation(); + } + + this.stopPropagation(); + } +}; + +// Includes all common event props including KeyEvent and MouseEvent specific props +jQuery.each( { + altKey: true, + bubbles: true, + cancelable: true, + changedTouches: true, + ctrlKey: true, + detail: true, + eventPhase: true, + metaKey: true, + pageX: true, + pageY: true, + shiftKey: true, + view: true, + "char": true, + charCode: true, + key: true, + keyCode: true, + button: true, + buttons: true, + clientX: true, + clientY: true, + offsetX: true, + offsetY: true, + pointerId: true, + pointerType: true, + screenX: true, + screenY: true, + targetTouches: true, + toElement: true, + touches: true, + + which: function( event ) { + var button = event.button; + + // Add which for key events + if ( event.which == null && rkeyEvent.test( event.type ) ) { + return event.charCode != null ? event.charCode : event.keyCode; + } + + // Add which for click: 1 === left; 2 === middle; 3 === right + if ( !event.which && button !== undefined && rmouseEvent.test( event.type ) ) { + if ( button & 1 ) { + return 1; + } + + if ( button & 2 ) { + return 3; + } + + if ( button & 4 ) { + return 2; + } + + return 0; + } + + return event.which; + } +}, jQuery.event.addProp ); + +// Create mouseenter/leave events using mouseover/out and event-time checks +// so that event delegation works in jQuery. +// Do the same for pointerenter/pointerleave and pointerover/pointerout +// +// Support: Safari 7 only +// Safari sends mouseenter too often; see: +// https://bugs.chromium.org/p/chromium/issues/detail?id=470258 +// for the description of the bug (it existed in older Chrome versions as well). +jQuery.each( { + mouseenter: "mouseover", + mouseleave: "mouseout", + pointerenter: "pointerover", + pointerleave: "pointerout" +}, function( orig, fix ) { + jQuery.event.special[ orig ] = { + delegateType: fix, + bindType: fix, + + handle: function( event ) { + var ret, + target = this, + related = event.relatedTarget, + handleObj = event.handleObj; + + // For mouseenter/leave call the handler if related is outside the target. + // NB: No relatedTarget if the mouse left/entered the browser window + if ( !related || ( related !== target && !jQuery.contains( target, related ) ) ) { + event.type = handleObj.origType; + ret = handleObj.handler.apply( this, arguments ); + event.type = fix; + } + return ret; + } + }; +} ); + +jQuery.fn.extend( { + + on: function( types, selector, data, fn ) { + return on( this, types, selector, data, fn ); + }, + one: function( types, selector, data, fn ) { + return on( this, types, selector, data, fn, 1 ); + }, + off: function( types, selector, fn ) { + var handleObj, type; + if ( types && types.preventDefault && types.handleObj ) { + + // ( event ) dispatched jQuery.Event + handleObj = types.handleObj; + jQuery( types.delegateTarget ).off( + handleObj.namespace ? + handleObj.origType + "." + handleObj.namespace : + handleObj.origType, + handleObj.selector, + handleObj.handler + ); + return this; + } + if ( typeof types === "object" ) { + + // ( types-object [, selector] ) + for ( type in types ) { + this.off( type, selector, types[ type ] ); + } + return this; + } + if ( selector === false || typeof selector === "function" ) { + + // ( types [, fn] ) + fn = selector; + selector = undefined; + } + if ( fn === false ) { + fn = returnFalse; + } + return this.each( function() { + jQuery.event.remove( this, types, fn, selector ); + } ); + } +} ); + + +var + + /* eslint-disable max-len */ + + // See https://github.com/eslint/eslint/issues/3229 + rxhtmlTag = /<(?!area|br|col|embed|hr|img|input|link|meta|param)(([a-z][^\/\0>\x20\t\r\n\f]*)[^>]*)\/>/gi, + + /* eslint-enable */ + + // Support: IE <=10 - 11, Edge 12 - 13 + // In IE/Edge using regex groups here causes severe slowdowns. + // See https://connect.microsoft.com/IE/feedback/details/1736512/ + rnoInnerhtml = /\s*$/g; + +// Prefer a tbody over its parent table for containing new rows +function manipulationTarget( elem, content ) { + if ( nodeName( elem, "table" ) && + nodeName( content.nodeType !== 11 ? content : content.firstChild, "tr" ) ) { + + return jQuery( ">tbody", elem )[ 0 ] || elem; + } + + return elem; +} + +// Replace/restore the type attribute of script elements for safe DOM manipulation +function disableScript( elem ) { + elem.type = ( elem.getAttribute( "type" ) !== null ) + "/" + elem.type; + return elem; +} +function restoreScript( elem ) { + var match = rscriptTypeMasked.exec( elem.type ); + + if ( match ) { + elem.type = match[ 1 ]; + } else { + elem.removeAttribute( "type" ); + } + + return elem; +} + +function cloneCopyEvent( src, dest ) { + var i, l, type, pdataOld, pdataCur, udataOld, udataCur, events; + + if ( dest.nodeType !== 1 ) { + return; + } + + // 1. Copy private data: events, handlers, etc. + if ( dataPriv.hasData( src ) ) { + pdataOld = dataPriv.access( src ); + pdataCur = dataPriv.set( dest, pdataOld ); + events = pdataOld.events; + + if ( events ) { + delete pdataCur.handle; + pdataCur.events = {}; + + for ( type in events ) { + for ( i = 0, l = events[ type ].length; i < l; i++ ) { + jQuery.event.add( dest, type, events[ type ][ i ] ); + } + } + } + } + + // 2. Copy user data + if ( dataUser.hasData( src ) ) { + udataOld = dataUser.access( src ); + udataCur = jQuery.extend( {}, udataOld ); + + dataUser.set( dest, udataCur ); + } +} + +// Fix IE bugs, see support tests +function fixInput( src, dest ) { + var nodeName = dest.nodeName.toLowerCase(); + + // Fails to persist the checked state of a cloned checkbox or radio button. + if ( nodeName === "input" && rcheckableType.test( src.type ) ) { + dest.checked = src.checked; + + // Fails to return the selected option to the default selected state when cloning options + } else if ( nodeName === "input" || nodeName === "textarea" ) { + dest.defaultValue = src.defaultValue; + } +} + +function domManip( collection, args, callback, ignored ) { + + // Flatten any nested arrays + args = concat.apply( [], args ); + + var fragment, first, scripts, hasScripts, node, doc, + i = 0, + l = collection.length, + iNoClone = l - 1, + value = args[ 0 ], + isFunction = jQuery.isFunction( value ); + + // We can't cloneNode fragments that contain checked, in WebKit + if ( isFunction || + ( l > 1 && typeof value === "string" && + !support.checkClone && rchecked.test( value ) ) ) { + return collection.each( function( index ) { + var self = collection.eq( index ); + if ( isFunction ) { + args[ 0 ] = value.call( this, index, self.html() ); + } + domManip( self, args, callback, ignored ); + } ); + } + + if ( l ) { + fragment = buildFragment( args, collection[ 0 ].ownerDocument, false, collection, ignored ); + first = fragment.firstChild; + + if ( fragment.childNodes.length === 1 ) { + fragment = first; + } + + // Require either new content or an interest in ignored elements to invoke the callback + if ( first || ignored ) { + scripts = jQuery.map( getAll( fragment, "script" ), disableScript ); + hasScripts = scripts.length; + + // Use the original fragment for the last item + // instead of the first because it can end up + // being emptied incorrectly in certain situations (#8070). + for ( ; i < l; i++ ) { + node = fragment; + + if ( i !== iNoClone ) { + node = jQuery.clone( node, true, true ); + + // Keep references to cloned scripts for later restoration + if ( hasScripts ) { + + // Support: Android <=4.0 only, PhantomJS 1 only + // push.apply(_, arraylike) throws on ancient WebKit + jQuery.merge( scripts, getAll( node, "script" ) ); + } + } + + callback.call( collection[ i ], node, i ); + } + + if ( hasScripts ) { + doc = scripts[ scripts.length - 1 ].ownerDocument; + + // Reenable scripts + jQuery.map( scripts, restoreScript ); + + // Evaluate executable scripts on first document insertion + for ( i = 0; i < hasScripts; i++ ) { + node = scripts[ i ]; + if ( rscriptType.test( node.type || "" ) && + !dataPriv.access( node, "globalEval" ) && + jQuery.contains( doc, node ) ) { + + if ( node.src ) { + + // Optional AJAX dependency, but won't run scripts if not present + if ( jQuery._evalUrl ) { + jQuery._evalUrl( node.src ); + } + } else { + DOMEval( node.textContent.replace( rcleanScript, "" ), doc ); + } + } + } + } + } + } + + return collection; +} + +function remove( elem, selector, keepData ) { + var node, + nodes = selector ? jQuery.filter( selector, elem ) : elem, + i = 0; + + for ( ; ( node = nodes[ i ] ) != null; i++ ) { + if ( !keepData && node.nodeType === 1 ) { + jQuery.cleanData( getAll( node ) ); + } + + if ( node.parentNode ) { + if ( keepData && jQuery.contains( node.ownerDocument, node ) ) { + setGlobalEval( getAll( node, "script" ) ); + } + node.parentNode.removeChild( node ); + } + } + + return elem; +} + +jQuery.extend( { + htmlPrefilter: function( html ) { + return html.replace( rxhtmlTag, "<$1>" ); + }, + + clone: function( elem, dataAndEvents, deepDataAndEvents ) { + var i, l, srcElements, destElements, + clone = elem.cloneNode( true ), + inPage = jQuery.contains( elem.ownerDocument, elem ); + + // Fix IE cloning issues + if ( !support.noCloneChecked && ( elem.nodeType === 1 || elem.nodeType === 11 ) && + !jQuery.isXMLDoc( elem ) ) { + + // We eschew Sizzle here for performance reasons: https://jsperf.com/getall-vs-sizzle/2 + destElements = getAll( clone ); + srcElements = getAll( elem ); + + for ( i = 0, l = srcElements.length; i < l; i++ ) { + fixInput( srcElements[ i ], destElements[ i ] ); + } + } + + // Copy the events from the original to the clone + if ( dataAndEvents ) { + if ( deepDataAndEvents ) { + srcElements = srcElements || getAll( elem ); + destElements = destElements || getAll( clone ); + + for ( i = 0, l = srcElements.length; i < l; i++ ) { + cloneCopyEvent( srcElements[ i ], destElements[ i ] ); + } + } else { + cloneCopyEvent( elem, clone ); + } + } + + // Preserve script evaluation history + destElements = getAll( clone, "script" ); + if ( destElements.length > 0 ) { + setGlobalEval( destElements, !inPage && getAll( elem, "script" ) ); + } + + // Return the cloned set + return clone; + }, + + cleanData: function( elems ) { + var data, elem, type, + special = jQuery.event.special, + i = 0; + + for ( ; ( elem = elems[ i ] ) !== undefined; i++ ) { + if ( acceptData( elem ) ) { + if ( ( data = elem[ dataPriv.expando ] ) ) { + if ( data.events ) { + for ( type in data.events ) { + if ( special[ type ] ) { + jQuery.event.remove( elem, type ); + + // This is a shortcut to avoid jQuery.event.remove's overhead + } else { + jQuery.removeEvent( elem, type, data.handle ); + } + } + } + + // Support: Chrome <=35 - 45+ + // Assign undefined instead of using delete, see Data#remove + elem[ dataPriv.expando ] = undefined; + } + if ( elem[ dataUser.expando ] ) { + + // Support: Chrome <=35 - 45+ + // Assign undefined instead of using delete, see Data#remove + elem[ dataUser.expando ] = undefined; + } + } + } + } +} ); + +jQuery.fn.extend( { + detach: function( selector ) { + return remove( this, selector, true ); + }, + + remove: function( selector ) { + return remove( this, selector ); + }, + + text: function( value ) { + return access( this, function( value ) { + return value === undefined ? + jQuery.text( this ) : + this.empty().each( function() { + if ( this.nodeType === 1 || this.nodeType === 11 || this.nodeType === 9 ) { + this.textContent = value; + } + } ); + }, null, value, arguments.length ); + }, + + append: function() { + return domManip( this, arguments, function( elem ) { + if ( this.nodeType === 1 || this.nodeType === 11 || this.nodeType === 9 ) { + var target = manipulationTarget( this, elem ); + target.appendChild( elem ); + } + } ); + }, + + prepend: function() { + return domManip( this, arguments, function( elem ) { + if ( this.nodeType === 1 || this.nodeType === 11 || this.nodeType === 9 ) { + var target = manipulationTarget( this, elem ); + target.insertBefore( elem, target.firstChild ); + } + } ); + }, + + before: function() { + return domManip( this, arguments, function( elem ) { + if ( this.parentNode ) { + this.parentNode.insertBefore( elem, this ); + } + } ); + }, + + after: function() { + return domManip( this, arguments, function( elem ) { + if ( this.parentNode ) { + this.parentNode.insertBefore( elem, this.nextSibling ); + } + } ); + }, + + empty: function() { + var elem, + i = 0; + + for ( ; ( elem = this[ i ] ) != null; i++ ) { + if ( elem.nodeType === 1 ) { + + // Prevent memory leaks + jQuery.cleanData( getAll( elem, false ) ); + + // Remove any remaining nodes + elem.textContent = ""; + } + } + + return this; + }, + + clone: function( dataAndEvents, deepDataAndEvents ) { + dataAndEvents = dataAndEvents == null ? false : dataAndEvents; + deepDataAndEvents = deepDataAndEvents == null ? dataAndEvents : deepDataAndEvents; + + return this.map( function() { + return jQuery.clone( this, dataAndEvents, deepDataAndEvents ); + } ); + }, + + html: function( value ) { + return access( this, function( value ) { + var elem = this[ 0 ] || {}, + i = 0, + l = this.length; + + if ( value === undefined && elem.nodeType === 1 ) { + return elem.innerHTML; + } + + // See if we can take a shortcut and just use innerHTML + if ( typeof value === "string" && !rnoInnerhtml.test( value ) && + !wrapMap[ ( rtagName.exec( value ) || [ "", "" ] )[ 1 ].toLowerCase() ] ) { + + value = jQuery.htmlPrefilter( value ); + + try { + for ( ; i < l; i++ ) { + elem = this[ i ] || {}; + + // Remove element nodes and prevent memory leaks + if ( elem.nodeType === 1 ) { + jQuery.cleanData( getAll( elem, false ) ); + elem.innerHTML = value; + } + } + + elem = 0; + + // If using innerHTML throws an exception, use the fallback method + } catch ( e ) {} + } + + if ( elem ) { + this.empty().append( value ); + } + }, null, value, arguments.length ); + }, + + replaceWith: function() { + var ignored = []; + + // Make the changes, replacing each non-ignored context element with the new content + return domManip( this, arguments, function( elem ) { + var parent = this.parentNode; + + if ( jQuery.inArray( this, ignored ) < 0 ) { + jQuery.cleanData( getAll( this ) ); + if ( parent ) { + parent.replaceChild( elem, this ); + } + } + + // Force callback invocation + }, ignored ); + } +} ); + +jQuery.each( { + appendTo: "append", + prependTo: "prepend", + insertBefore: "before", + insertAfter: "after", + replaceAll: "replaceWith" +}, function( name, original ) { + jQuery.fn[ name ] = function( selector ) { + var elems, + ret = [], + insert = jQuery( selector ), + last = insert.length - 1, + i = 0; + + for ( ; i <= last; i++ ) { + elems = i === last ? this : this.clone( true ); + jQuery( insert[ i ] )[ original ]( elems ); + + // Support: Android <=4.0 only, PhantomJS 1 only + // .get() because push.apply(_, arraylike) throws on ancient WebKit + push.apply( ret, elems.get() ); + } + + return this.pushStack( ret ); + }; +} ); +var rmargin = ( /^margin/ ); + +var rnumnonpx = new RegExp( "^(" + pnum + ")(?!px)[a-z%]+$", "i" ); + +var getStyles = function( elem ) { + + // Support: IE <=11 only, Firefox <=30 (#15098, #14150) + // IE throws on elements created in popups + // FF meanwhile throws on frame elements through "defaultView.getComputedStyle" + var view = elem.ownerDocument.defaultView; + + if ( !view || !view.opener ) { + view = window; + } + + return view.getComputedStyle( elem ); + }; + + + +( function() { + + // Executing both pixelPosition & boxSizingReliable tests require only one layout + // so they're executed at the same time to save the second computation. + function computeStyleTests() { + + // This is a singleton, we need to execute it only once + if ( !div ) { + return; + } + + div.style.cssText = + "box-sizing:border-box;" + + "position:relative;display:block;" + + "margin:auto;border:1px;padding:1px;" + + "top:1%;width:50%"; + div.innerHTML = ""; + documentElement.appendChild( container ); + + var divStyle = window.getComputedStyle( div ); + pixelPositionVal = divStyle.top !== "1%"; + + // Support: Android 4.0 - 4.3 only, Firefox <=3 - 44 + reliableMarginLeftVal = divStyle.marginLeft === "2px"; + boxSizingReliableVal = divStyle.width === "4px"; + + // Support: Android 4.0 - 4.3 only + // Some styles come back with percentage values, even though they shouldn't + div.style.marginRight = "50%"; + pixelMarginRightVal = divStyle.marginRight === "4px"; + + documentElement.removeChild( container ); + + // Nullify the div so it wouldn't be stored in the memory and + // it will also be a sign that checks already performed + div = null; + } + + var pixelPositionVal, boxSizingReliableVal, pixelMarginRightVal, reliableMarginLeftVal, + container = document.createElement( "div" ), + div = document.createElement( "div" ); + + // Finish early in limited (non-browser) environments + if ( !div.style ) { + return; + } + + // Support: IE <=9 - 11 only + // Style of cloned element affects source element cloned (#8908) + div.style.backgroundClip = "content-box"; + div.cloneNode( true ).style.backgroundClip = ""; + support.clearCloneStyle = div.style.backgroundClip === "content-box"; + + container.style.cssText = "border:0;width:8px;height:0;top:0;left:-9999px;" + + "padding:0;margin-top:1px;position:absolute"; + container.appendChild( div ); + + jQuery.extend( support, { + pixelPosition: function() { + computeStyleTests(); + return pixelPositionVal; + }, + boxSizingReliable: function() { + computeStyleTests(); + return boxSizingReliableVal; + }, + pixelMarginRight: function() { + computeStyleTests(); + return pixelMarginRightVal; + }, + reliableMarginLeft: function() { + computeStyleTests(); + return reliableMarginLeftVal; + } + } ); +} )(); + + +function curCSS( elem, name, computed ) { + var width, minWidth, maxWidth, ret, + + // Support: Firefox 51+ + // Retrieving style before computed somehow + // fixes an issue with getting wrong values + // on detached elements + style = elem.style; + + computed = computed || getStyles( elem ); + + // getPropertyValue is needed for: + // .css('filter') (IE 9 only, #12537) + // .css('--customProperty) (#3144) + if ( computed ) { + ret = computed.getPropertyValue( name ) || computed[ name ]; + + if ( ret === "" && !jQuery.contains( elem.ownerDocument, elem ) ) { + ret = jQuery.style( elem, name ); + } + + // A tribute to the "awesome hack by Dean Edwards" + // Android Browser returns percentage for some values, + // but width seems to be reliably pixels. + // This is against the CSSOM draft spec: + // https://drafts.csswg.org/cssom/#resolved-values + if ( !support.pixelMarginRight() && rnumnonpx.test( ret ) && rmargin.test( name ) ) { + + // Remember the original values + width = style.width; + minWidth = style.minWidth; + maxWidth = style.maxWidth; + + // Put in the new values to get a computed value out + style.minWidth = style.maxWidth = style.width = ret; + ret = computed.width; + + // Revert the changed values + style.width = width; + style.minWidth = minWidth; + style.maxWidth = maxWidth; + } + } + + return ret !== undefined ? + + // Support: IE <=9 - 11 only + // IE returns zIndex value as an integer. + ret + "" : + ret; +} + + +function addGetHookIf( conditionFn, hookFn ) { + + // Define the hook, we'll check on the first run if it's really needed. + return { + get: function() { + if ( conditionFn() ) { + + // Hook not needed (or it's not possible to use it due + // to missing dependency), remove it. + delete this.get; + return; + } + + // Hook needed; redefine it so that the support test is not executed again. + return ( this.get = hookFn ).apply( this, arguments ); + } + }; +} + + +var + + // Swappable if display is none or starts with table + // except "table", "table-cell", or "table-caption" + // See here for display values: https://developer.mozilla.org/en-US/docs/CSS/display + rdisplayswap = /^(none|table(?!-c[ea]).+)/, + rcustomProp = /^--/, + cssShow = { position: "absolute", visibility: "hidden", display: "block" }, + cssNormalTransform = { + letterSpacing: "0", + fontWeight: "400" + }, + + cssPrefixes = [ "Webkit", "Moz", "ms" ], + emptyStyle = document.createElement( "div" ).style; + +// Return a css property mapped to a potentially vendor prefixed property +function vendorPropName( name ) { + + // Shortcut for names that are not vendor prefixed + if ( name in emptyStyle ) { + return name; + } + + // Check for vendor prefixed names + var capName = name[ 0 ].toUpperCase() + name.slice( 1 ), + i = cssPrefixes.length; + + while ( i-- ) { + name = cssPrefixes[ i ] + capName; + if ( name in emptyStyle ) { + return name; + } + } +} + +// Return a property mapped along what jQuery.cssProps suggests or to +// a vendor prefixed property. +function finalPropName( name ) { + var ret = jQuery.cssProps[ name ]; + if ( !ret ) { + ret = jQuery.cssProps[ name ] = vendorPropName( name ) || name; + } + return ret; +} + +function setPositiveNumber( elem, value, subtract ) { + + // Any relative (+/-) values have already been + // normalized at this point + var matches = rcssNum.exec( value ); + return matches ? + + // Guard against undefined "subtract", e.g., when used as in cssHooks + Math.max( 0, matches[ 2 ] - ( subtract || 0 ) ) + ( matches[ 3 ] || "px" ) : + value; +} + +function augmentWidthOrHeight( elem, name, extra, isBorderBox, styles ) { + var i, + val = 0; + + // If we already have the right measurement, avoid augmentation + if ( extra === ( isBorderBox ? "border" : "content" ) ) { + i = 4; + + // Otherwise initialize for horizontal or vertical properties + } else { + i = name === "width" ? 1 : 0; + } + + for ( ; i < 4; i += 2 ) { + + // Both box models exclude margin, so add it if we want it + if ( extra === "margin" ) { + val += jQuery.css( elem, extra + cssExpand[ i ], true, styles ); + } + + if ( isBorderBox ) { + + // border-box includes padding, so remove it if we want content + if ( extra === "content" ) { + val -= jQuery.css( elem, "padding" + cssExpand[ i ], true, styles ); + } + + // At this point, extra isn't border nor margin, so remove border + if ( extra !== "margin" ) { + val -= jQuery.css( elem, "border" + cssExpand[ i ] + "Width", true, styles ); + } + } else { + + // At this point, extra isn't content, so add padding + val += jQuery.css( elem, "padding" + cssExpand[ i ], true, styles ); + + // At this point, extra isn't content nor padding, so add border + if ( extra !== "padding" ) { + val += jQuery.css( elem, "border" + cssExpand[ i ] + "Width", true, styles ); + } + } + } + + return val; +} + +function getWidthOrHeight( elem, name, extra ) { + + // Start with computed style + var valueIsBorderBox, + styles = getStyles( elem ), + val = curCSS( elem, name, styles ), + isBorderBox = jQuery.css( elem, "boxSizing", false, styles ) === "border-box"; + + // Computed unit is not pixels. Stop here and return. + if ( rnumnonpx.test( val ) ) { + return val; + } + + // Check for style in case a browser which returns unreliable values + // for getComputedStyle silently falls back to the reliable elem.style + valueIsBorderBox = isBorderBox && + ( support.boxSizingReliable() || val === elem.style[ name ] ); + + // Fall back to offsetWidth/Height when value is "auto" + // This happens for inline elements with no explicit setting (gh-3571) + if ( val === "auto" ) { + val = elem[ "offset" + name[ 0 ].toUpperCase() + name.slice( 1 ) ]; + } + + // Normalize "", auto, and prepare for extra + val = parseFloat( val ) || 0; + + // Use the active box-sizing model to add/subtract irrelevant styles + return ( val + + augmentWidthOrHeight( + elem, + name, + extra || ( isBorderBox ? "border" : "content" ), + valueIsBorderBox, + styles + ) + ) + "px"; +} + +jQuery.extend( { + + // Add in style property hooks for overriding the default + // behavior of getting and setting a style property + cssHooks: { + opacity: { + get: function( elem, computed ) { + if ( computed ) { + + // We should always get a number back from opacity + var ret = curCSS( elem, "opacity" ); + return ret === "" ? "1" : ret; + } + } + } + }, + + // Don't automatically add "px" to these possibly-unitless properties + cssNumber: { + "animationIterationCount": true, + "columnCount": true, + "fillOpacity": true, + "flexGrow": true, + "flexShrink": true, + "fontWeight": true, + "lineHeight": true, + "opacity": true, + "order": true, + "orphans": true, + "widows": true, + "zIndex": true, + "zoom": true + }, + + // Add in properties whose names you wish to fix before + // setting or getting the value + cssProps: { + "float": "cssFloat" + }, + + // Get and set the style property on a DOM Node + style: function( elem, name, value, extra ) { + + // Don't set styles on text and comment nodes + if ( !elem || elem.nodeType === 3 || elem.nodeType === 8 || !elem.style ) { + return; + } + + // Make sure that we're working with the right name + var ret, type, hooks, + origName = jQuery.camelCase( name ), + isCustomProp = rcustomProp.test( name ), + style = elem.style; + + // Make sure that we're working with the right name. We don't + // want to query the value if it is a CSS custom property + // since they are user-defined. + if ( !isCustomProp ) { + name = finalPropName( origName ); + } + + // Gets hook for the prefixed version, then unprefixed version + hooks = jQuery.cssHooks[ name ] || jQuery.cssHooks[ origName ]; + + // Check if we're setting a value + if ( value !== undefined ) { + type = typeof value; + + // Convert "+=" or "-=" to relative numbers (#7345) + if ( type === "string" && ( ret = rcssNum.exec( value ) ) && ret[ 1 ] ) { + value = adjustCSS( elem, name, ret ); + + // Fixes bug #9237 + type = "number"; + } + + // Make sure that null and NaN values aren't set (#7116) + if ( value == null || value !== value ) { + return; + } + + // If a number was passed in, add the unit (except for certain CSS properties) + if ( type === "number" ) { + value += ret && ret[ 3 ] || ( jQuery.cssNumber[ origName ] ? "" : "px" ); + } + + // background-* props affect original clone's values + if ( !support.clearCloneStyle && value === "" && name.indexOf( "background" ) === 0 ) { + style[ name ] = "inherit"; + } + + // If a hook was provided, use that value, otherwise just set the specified value + if ( !hooks || !( "set" in hooks ) || + ( value = hooks.set( elem, value, extra ) ) !== undefined ) { + + if ( isCustomProp ) { + style.setProperty( name, value ); + } else { + style[ name ] = value; + } + } + + } else { + + // If a hook was provided get the non-computed value from there + if ( hooks && "get" in hooks && + ( ret = hooks.get( elem, false, extra ) ) !== undefined ) { + + return ret; + } + + // Otherwise just get the value from the style object + return style[ name ]; + } + }, + + css: function( elem, name, extra, styles ) { + var val, num, hooks, + origName = jQuery.camelCase( name ), + isCustomProp = rcustomProp.test( name ); + + // Make sure that we're working with the right name. We don't + // want to modify the value if it is a CSS custom property + // since they are user-defined. + if ( !isCustomProp ) { + name = finalPropName( origName ); + } + + // Try prefixed name followed by the unprefixed name + hooks = jQuery.cssHooks[ name ] || jQuery.cssHooks[ origName ]; + + // If a hook was provided get the computed value from there + if ( hooks && "get" in hooks ) { + val = hooks.get( elem, true, extra ); + } + + // Otherwise, if a way to get the computed value exists, use that + if ( val === undefined ) { + val = curCSS( elem, name, styles ); + } + + // Convert "normal" to computed value + if ( val === "normal" && name in cssNormalTransform ) { + val = cssNormalTransform[ name ]; + } + + // Make numeric if forced or a qualifier was provided and val looks numeric + if ( extra === "" || extra ) { + num = parseFloat( val ); + return extra === true || isFinite( num ) ? num || 0 : val; + } + + return val; + } +} ); + +jQuery.each( [ "height", "width" ], function( i, name ) { + jQuery.cssHooks[ name ] = { + get: function( elem, computed, extra ) { + if ( computed ) { + + // Certain elements can have dimension info if we invisibly show them + // but it must have a current display style that would benefit + return rdisplayswap.test( jQuery.css( elem, "display" ) ) && + + // Support: Safari 8+ + // Table columns in Safari have non-zero offsetWidth & zero + // getBoundingClientRect().width unless display is changed. + // Support: IE <=11 only + // Running getBoundingClientRect on a disconnected node + // in IE throws an error. + ( !elem.getClientRects().length || !elem.getBoundingClientRect().width ) ? + swap( elem, cssShow, function() { + return getWidthOrHeight( elem, name, extra ); + } ) : + getWidthOrHeight( elem, name, extra ); + } + }, + + set: function( elem, value, extra ) { + var matches, + styles = extra && getStyles( elem ), + subtract = extra && augmentWidthOrHeight( + elem, + name, + extra, + jQuery.css( elem, "boxSizing", false, styles ) === "border-box", + styles + ); + + // Convert to pixels if value adjustment is needed + if ( subtract && ( matches = rcssNum.exec( value ) ) && + ( matches[ 3 ] || "px" ) !== "px" ) { + + elem.style[ name ] = value; + value = jQuery.css( elem, name ); + } + + return setPositiveNumber( elem, value, subtract ); + } + }; +} ); + +jQuery.cssHooks.marginLeft = addGetHookIf( support.reliableMarginLeft, + function( elem, computed ) { + if ( computed ) { + return ( parseFloat( curCSS( elem, "marginLeft" ) ) || + elem.getBoundingClientRect().left - + swap( elem, { marginLeft: 0 }, function() { + return elem.getBoundingClientRect().left; + } ) + ) + "px"; + } + } +); + +// These hooks are used by animate to expand properties +jQuery.each( { + margin: "", + padding: "", + border: "Width" +}, function( prefix, suffix ) { + jQuery.cssHooks[ prefix + suffix ] = { + expand: function( value ) { + var i = 0, + expanded = {}, + + // Assumes a single number if not a string + parts = typeof value === "string" ? value.split( " " ) : [ value ]; + + for ( ; i < 4; i++ ) { + expanded[ prefix + cssExpand[ i ] + suffix ] = + parts[ i ] || parts[ i - 2 ] || parts[ 0 ]; + } + + return expanded; + } + }; + + if ( !rmargin.test( prefix ) ) { + jQuery.cssHooks[ prefix + suffix ].set = setPositiveNumber; + } +} ); + +jQuery.fn.extend( { + css: function( name, value ) { + return access( this, function( elem, name, value ) { + var styles, len, + map = {}, + i = 0; + + if ( Array.isArray( name ) ) { + styles = getStyles( elem ); + len = name.length; + + for ( ; i < len; i++ ) { + map[ name[ i ] ] = jQuery.css( elem, name[ i ], false, styles ); + } + + return map; + } + + return value !== undefined ? + jQuery.style( elem, name, value ) : + jQuery.css( elem, name ); + }, name, value, arguments.length > 1 ); + } +} ); + + +function Tween( elem, options, prop, end, easing ) { + return new Tween.prototype.init( elem, options, prop, end, easing ); +} +jQuery.Tween = Tween; + +Tween.prototype = { + constructor: Tween, + init: function( elem, options, prop, end, easing, unit ) { + this.elem = elem; + this.prop = prop; + this.easing = easing || jQuery.easing._default; + this.options = options; + this.start = this.now = this.cur(); + this.end = end; + this.unit = unit || ( jQuery.cssNumber[ prop ] ? "" : "px" ); + }, + cur: function() { + var hooks = Tween.propHooks[ this.prop ]; + + return hooks && hooks.get ? + hooks.get( this ) : + Tween.propHooks._default.get( this ); + }, + run: function( percent ) { + var eased, + hooks = Tween.propHooks[ this.prop ]; + + if ( this.options.duration ) { + this.pos = eased = jQuery.easing[ this.easing ]( + percent, this.options.duration * percent, 0, 1, this.options.duration + ); + } else { + this.pos = eased = percent; + } + this.now = ( this.end - this.start ) * eased + this.start; + + if ( this.options.step ) { + this.options.step.call( this.elem, this.now, this ); + } + + if ( hooks && hooks.set ) { + hooks.set( this ); + } else { + Tween.propHooks._default.set( this ); + } + return this; + } +}; + +Tween.prototype.init.prototype = Tween.prototype; + +Tween.propHooks = { + _default: { + get: function( tween ) { + var result; + + // Use a property on the element directly when it is not a DOM element, + // or when there is no matching style property that exists. + if ( tween.elem.nodeType !== 1 || + tween.elem[ tween.prop ] != null && tween.elem.style[ tween.prop ] == null ) { + return tween.elem[ tween.prop ]; + } + + // Passing an empty string as a 3rd parameter to .css will automatically + // attempt a parseFloat and fallback to a string if the parse fails. + // Simple values such as "10px" are parsed to Float; + // complex values such as "rotate(1rad)" are returned as-is. + result = jQuery.css( tween.elem, tween.prop, "" ); + + // Empty strings, null, undefined and "auto" are converted to 0. + return !result || result === "auto" ? 0 : result; + }, + set: function( tween ) { + + // Use step hook for back compat. + // Use cssHook if its there. + // Use .style if available and use plain properties where available. + if ( jQuery.fx.step[ tween.prop ] ) { + jQuery.fx.step[ tween.prop ]( tween ); + } else if ( tween.elem.nodeType === 1 && + ( tween.elem.style[ jQuery.cssProps[ tween.prop ] ] != null || + jQuery.cssHooks[ tween.prop ] ) ) { + jQuery.style( tween.elem, tween.prop, tween.now + tween.unit ); + } else { + tween.elem[ tween.prop ] = tween.now; + } + } + } +}; + +// Support: IE <=9 only +// Panic based approach to setting things on disconnected nodes +Tween.propHooks.scrollTop = Tween.propHooks.scrollLeft = { + set: function( tween ) { + if ( tween.elem.nodeType && tween.elem.parentNode ) { + tween.elem[ tween.prop ] = tween.now; + } + } +}; + +jQuery.easing = { + linear: function( p ) { + return p; + }, + swing: function( p ) { + return 0.5 - Math.cos( p * Math.PI ) / 2; + }, + _default: "swing" +}; + +jQuery.fx = Tween.prototype.init; + +// Back compat <1.8 extension point +jQuery.fx.step = {}; + + + + +var + fxNow, inProgress, + rfxtypes = /^(?:toggle|show|hide)$/, + rrun = /queueHooks$/; + +function schedule() { + if ( inProgress ) { + if ( document.hidden === false && window.requestAnimationFrame ) { + window.requestAnimationFrame( schedule ); + } else { + window.setTimeout( schedule, jQuery.fx.interval ); + } + + jQuery.fx.tick(); + } +} + +// Animations created synchronously will run synchronously +function createFxNow() { + window.setTimeout( function() { + fxNow = undefined; + } ); + return ( fxNow = jQuery.now() ); +} + +// Generate parameters to create a standard animation +function genFx( type, includeWidth ) { + var which, + i = 0, + attrs = { height: type }; + + // If we include width, step value is 1 to do all cssExpand values, + // otherwise step value is 2 to skip over Left and Right + includeWidth = includeWidth ? 1 : 0; + for ( ; i < 4; i += 2 - includeWidth ) { + which = cssExpand[ i ]; + attrs[ "margin" + which ] = attrs[ "padding" + which ] = type; + } + + if ( includeWidth ) { + attrs.opacity = attrs.width = type; + } + + return attrs; +} + +function createTween( value, prop, animation ) { + var tween, + collection = ( Animation.tweeners[ prop ] || [] ).concat( Animation.tweeners[ "*" ] ), + index = 0, + length = collection.length; + for ( ; index < length; index++ ) { + if ( ( tween = collection[ index ].call( animation, prop, value ) ) ) { + + // We're done with this property + return tween; + } + } +} + +function defaultPrefilter( elem, props, opts ) { + var prop, value, toggle, hooks, oldfire, propTween, restoreDisplay, display, + isBox = "width" in props || "height" in props, + anim = this, + orig = {}, + style = elem.style, + hidden = elem.nodeType && isHiddenWithinTree( elem ), + dataShow = dataPriv.get( elem, "fxshow" ); + + // Queue-skipping animations hijack the fx hooks + if ( !opts.queue ) { + hooks = jQuery._queueHooks( elem, "fx" ); + if ( hooks.unqueued == null ) { + hooks.unqueued = 0; + oldfire = hooks.empty.fire; + hooks.empty.fire = function() { + if ( !hooks.unqueued ) { + oldfire(); + } + }; + } + hooks.unqueued++; + + anim.always( function() { + + // Ensure the complete handler is called before this completes + anim.always( function() { + hooks.unqueued--; + if ( !jQuery.queue( elem, "fx" ).length ) { + hooks.empty.fire(); + } + } ); + } ); + } + + // Detect show/hide animations + for ( prop in props ) { + value = props[ prop ]; + if ( rfxtypes.test( value ) ) { + delete props[ prop ]; + toggle = toggle || value === "toggle"; + if ( value === ( hidden ? "hide" : "show" ) ) { + + // Pretend to be hidden if this is a "show" and + // there is still data from a stopped show/hide + if ( value === "show" && dataShow && dataShow[ prop ] !== undefined ) { + hidden = true; + + // Ignore all other no-op show/hide data + } else { + continue; + } + } + orig[ prop ] = dataShow && dataShow[ prop ] || jQuery.style( elem, prop ); + } + } + + // Bail out if this is a no-op like .hide().hide() + propTween = !jQuery.isEmptyObject( props ); + if ( !propTween && jQuery.isEmptyObject( orig ) ) { + return; + } + + // Restrict "overflow" and "display" styles during box animations + if ( isBox && elem.nodeType === 1 ) { + + // Support: IE <=9 - 11, Edge 12 - 13 + // Record all 3 overflow attributes because IE does not infer the shorthand + // from identically-valued overflowX and overflowY + opts.overflow = [ style.overflow, style.overflowX, style.overflowY ]; + + // Identify a display type, preferring old show/hide data over the CSS cascade + restoreDisplay = dataShow && dataShow.display; + if ( restoreDisplay == null ) { + restoreDisplay = dataPriv.get( elem, "display" ); + } + display = jQuery.css( elem, "display" ); + if ( display === "none" ) { + if ( restoreDisplay ) { + display = restoreDisplay; + } else { + + // Get nonempty value(s) by temporarily forcing visibility + showHide( [ elem ], true ); + restoreDisplay = elem.style.display || restoreDisplay; + display = jQuery.css( elem, "display" ); + showHide( [ elem ] ); + } + } + + // Animate inline elements as inline-block + if ( display === "inline" || display === "inline-block" && restoreDisplay != null ) { + if ( jQuery.css( elem, "float" ) === "none" ) { + + // Restore the original display value at the end of pure show/hide animations + if ( !propTween ) { + anim.done( function() { + style.display = restoreDisplay; + } ); + if ( restoreDisplay == null ) { + display = style.display; + restoreDisplay = display === "none" ? "" : display; + } + } + style.display = "inline-block"; + } + } + } + + if ( opts.overflow ) { + style.overflow = "hidden"; + anim.always( function() { + style.overflow = opts.overflow[ 0 ]; + style.overflowX = opts.overflow[ 1 ]; + style.overflowY = opts.overflow[ 2 ]; + } ); + } + + // Implement show/hide animations + propTween = false; + for ( prop in orig ) { + + // General show/hide setup for this element animation + if ( !propTween ) { + if ( dataShow ) { + if ( "hidden" in dataShow ) { + hidden = dataShow.hidden; + } + } else { + dataShow = dataPriv.access( elem, "fxshow", { display: restoreDisplay } ); + } + + // Store hidden/visible for toggle so `.stop().toggle()` "reverses" + if ( toggle ) { + dataShow.hidden = !hidden; + } + + // Show elements before animating them + if ( hidden ) { + showHide( [ elem ], true ); + } + + /* eslint-disable no-loop-func */ + + anim.done( function() { + + /* eslint-enable no-loop-func */ + + // The final step of a "hide" animation is actually hiding the element + if ( !hidden ) { + showHide( [ elem ] ); + } + dataPriv.remove( elem, "fxshow" ); + for ( prop in orig ) { + jQuery.style( elem, prop, orig[ prop ] ); + } + } ); + } + + // Per-property setup + propTween = createTween( hidden ? dataShow[ prop ] : 0, prop, anim ); + if ( !( prop in dataShow ) ) { + dataShow[ prop ] = propTween.start; + if ( hidden ) { + propTween.end = propTween.start; + propTween.start = 0; + } + } + } +} + +function propFilter( props, specialEasing ) { + var index, name, easing, value, hooks; + + // camelCase, specialEasing and expand cssHook pass + for ( index in props ) { + name = jQuery.camelCase( index ); + easing = specialEasing[ name ]; + value = props[ index ]; + if ( Array.isArray( value ) ) { + easing = value[ 1 ]; + value = props[ index ] = value[ 0 ]; + } + + if ( index !== name ) { + props[ name ] = value; + delete props[ index ]; + } + + hooks = jQuery.cssHooks[ name ]; + if ( hooks && "expand" in hooks ) { + value = hooks.expand( value ); + delete props[ name ]; + + // Not quite $.extend, this won't overwrite existing keys. + // Reusing 'index' because we have the correct "name" + for ( index in value ) { + if ( !( index in props ) ) { + props[ index ] = value[ index ]; + specialEasing[ index ] = easing; + } + } + } else { + specialEasing[ name ] = easing; + } + } +} + +function Animation( elem, properties, options ) { + var result, + stopped, + index = 0, + length = Animation.prefilters.length, + deferred = jQuery.Deferred().always( function() { + + // Don't match elem in the :animated selector + delete tick.elem; + } ), + tick = function() { + if ( stopped ) { + return false; + } + var currentTime = fxNow || createFxNow(), + remaining = Math.max( 0, animation.startTime + animation.duration - currentTime ), + + // Support: Android 2.3 only + // Archaic crash bug won't allow us to use `1 - ( 0.5 || 0 )` (#12497) + temp = remaining / animation.duration || 0, + percent = 1 - temp, + index = 0, + length = animation.tweens.length; + + for ( ; index < length; index++ ) { + animation.tweens[ index ].run( percent ); + } + + deferred.notifyWith( elem, [ animation, percent, remaining ] ); + + // If there's more to do, yield + if ( percent < 1 && length ) { + return remaining; + } + + // If this was an empty animation, synthesize a final progress notification + if ( !length ) { + deferred.notifyWith( elem, [ animation, 1, 0 ] ); + } + + // Resolve the animation and report its conclusion + deferred.resolveWith( elem, [ animation ] ); + return false; + }, + animation = deferred.promise( { + elem: elem, + props: jQuery.extend( {}, properties ), + opts: jQuery.extend( true, { + specialEasing: {}, + easing: jQuery.easing._default + }, options ), + originalProperties: properties, + originalOptions: options, + startTime: fxNow || createFxNow(), + duration: options.duration, + tweens: [], + createTween: function( prop, end ) { + var tween = jQuery.Tween( elem, animation.opts, prop, end, + animation.opts.specialEasing[ prop ] || animation.opts.easing ); + animation.tweens.push( tween ); + return tween; + }, + stop: function( gotoEnd ) { + var index = 0, + + // If we are going to the end, we want to run all the tweens + // otherwise we skip this part + length = gotoEnd ? animation.tweens.length : 0; + if ( stopped ) { + return this; + } + stopped = true; + for ( ; index < length; index++ ) { + animation.tweens[ index ].run( 1 ); + } + + // Resolve when we played the last frame; otherwise, reject + if ( gotoEnd ) { + deferred.notifyWith( elem, [ animation, 1, 0 ] ); + deferred.resolveWith( elem, [ animation, gotoEnd ] ); + } else { + deferred.rejectWith( elem, [ animation, gotoEnd ] ); + } + return this; + } + } ), + props = animation.props; + + propFilter( props, animation.opts.specialEasing ); + + for ( ; index < length; index++ ) { + result = Animation.prefilters[ index ].call( animation, elem, props, animation.opts ); + if ( result ) { + if ( jQuery.isFunction( result.stop ) ) { + jQuery._queueHooks( animation.elem, animation.opts.queue ).stop = + jQuery.proxy( result.stop, result ); + } + return result; + } + } + + jQuery.map( props, createTween, animation ); + + if ( jQuery.isFunction( animation.opts.start ) ) { + animation.opts.start.call( elem, animation ); + } + + // Attach callbacks from options + animation + .progress( animation.opts.progress ) + .done( animation.opts.done, animation.opts.complete ) + .fail( animation.opts.fail ) + .always( animation.opts.always ); + + jQuery.fx.timer( + jQuery.extend( tick, { + elem: elem, + anim: animation, + queue: animation.opts.queue + } ) + ); + + return animation; +} + +jQuery.Animation = jQuery.extend( Animation, { + + tweeners: { + "*": [ function( prop, value ) { + var tween = this.createTween( prop, value ); + adjustCSS( tween.elem, prop, rcssNum.exec( value ), tween ); + return tween; + } ] + }, + + tweener: function( props, callback ) { + if ( jQuery.isFunction( props ) ) { + callback = props; + props = [ "*" ]; + } else { + props = props.match( rnothtmlwhite ); + } + + var prop, + index = 0, + length = props.length; + + for ( ; index < length; index++ ) { + prop = props[ index ]; + Animation.tweeners[ prop ] = Animation.tweeners[ prop ] || []; + Animation.tweeners[ prop ].unshift( callback ); + } + }, + + prefilters: [ defaultPrefilter ], + + prefilter: function( callback, prepend ) { + if ( prepend ) { + Animation.prefilters.unshift( callback ); + } else { + Animation.prefilters.push( callback ); + } + } +} ); + +jQuery.speed = function( speed, easing, fn ) { + var opt = speed && typeof speed === "object" ? jQuery.extend( {}, speed ) : { + complete: fn || !fn && easing || + jQuery.isFunction( speed ) && speed, + duration: speed, + easing: fn && easing || easing && !jQuery.isFunction( easing ) && easing + }; + + // Go to the end state if fx are off + if ( jQuery.fx.off ) { + opt.duration = 0; + + } else { + if ( typeof opt.duration !== "number" ) { + if ( opt.duration in jQuery.fx.speeds ) { + opt.duration = jQuery.fx.speeds[ opt.duration ]; + + } else { + opt.duration = jQuery.fx.speeds._default; + } + } + } + + // Normalize opt.queue - true/undefined/null -> "fx" + if ( opt.queue == null || opt.queue === true ) { + opt.queue = "fx"; + } + + // Queueing + opt.old = opt.complete; + + opt.complete = function() { + if ( jQuery.isFunction( opt.old ) ) { + opt.old.call( this ); + } + + if ( opt.queue ) { + jQuery.dequeue( this, opt.queue ); + } + }; + + return opt; +}; + +jQuery.fn.extend( { + fadeTo: function( speed, to, easing, callback ) { + + // Show any hidden elements after setting opacity to 0 + return this.filter( isHiddenWithinTree ).css( "opacity", 0 ).show() + + // Animate to the value specified + .end().animate( { opacity: to }, speed, easing, callback ); + }, + animate: function( prop, speed, easing, callback ) { + var empty = jQuery.isEmptyObject( prop ), + optall = jQuery.speed( speed, easing, callback ), + doAnimation = function() { + + // Operate on a copy of prop so per-property easing won't be lost + var anim = Animation( this, jQuery.extend( {}, prop ), optall ); + + // Empty animations, or finishing resolves immediately + if ( empty || dataPriv.get( this, "finish" ) ) { + anim.stop( true ); + } + }; + doAnimation.finish = doAnimation; + + return empty || optall.queue === false ? + this.each( doAnimation ) : + this.queue( optall.queue, doAnimation ); + }, + stop: function( type, clearQueue, gotoEnd ) { + var stopQueue = function( hooks ) { + var stop = hooks.stop; + delete hooks.stop; + stop( gotoEnd ); + }; + + if ( typeof type !== "string" ) { + gotoEnd = clearQueue; + clearQueue = type; + type = undefined; + } + if ( clearQueue && type !== false ) { + this.queue( type || "fx", [] ); + } + + return this.each( function() { + var dequeue = true, + index = type != null && type + "queueHooks", + timers = jQuery.timers, + data = dataPriv.get( this ); + + if ( index ) { + if ( data[ index ] && data[ index ].stop ) { + stopQueue( data[ index ] ); + } + } else { + for ( index in data ) { + if ( data[ index ] && data[ index ].stop && rrun.test( index ) ) { + stopQueue( data[ index ] ); + } + } + } + + for ( index = timers.length; index--; ) { + if ( timers[ index ].elem === this && + ( type == null || timers[ index ].queue === type ) ) { + + timers[ index ].anim.stop( gotoEnd ); + dequeue = false; + timers.splice( index, 1 ); + } + } + + // Start the next in the queue if the last step wasn't forced. + // Timers currently will call their complete callbacks, which + // will dequeue but only if they were gotoEnd. + if ( dequeue || !gotoEnd ) { + jQuery.dequeue( this, type ); + } + } ); + }, + finish: function( type ) { + if ( type !== false ) { + type = type || "fx"; + } + return this.each( function() { + var index, + data = dataPriv.get( this ), + queue = data[ type + "queue" ], + hooks = data[ type + "queueHooks" ], + timers = jQuery.timers, + length = queue ? queue.length : 0; + + // Enable finishing flag on private data + data.finish = true; + + // Empty the queue first + jQuery.queue( this, type, [] ); + + if ( hooks && hooks.stop ) { + hooks.stop.call( this, true ); + } + + // Look for any active animations, and finish them + for ( index = timers.length; index--; ) { + if ( timers[ index ].elem === this && timers[ index ].queue === type ) { + timers[ index ].anim.stop( true ); + timers.splice( index, 1 ); + } + } + + // Look for any animations in the old queue and finish them + for ( index = 0; index < length; index++ ) { + if ( queue[ index ] && queue[ index ].finish ) { + queue[ index ].finish.call( this ); + } + } + + // Turn off finishing flag + delete data.finish; + } ); + } +} ); + +jQuery.each( [ "toggle", "show", "hide" ], function( i, name ) { + var cssFn = jQuery.fn[ name ]; + jQuery.fn[ name ] = function( speed, easing, callback ) { + return speed == null || typeof speed === "boolean" ? + cssFn.apply( this, arguments ) : + this.animate( genFx( name, true ), speed, easing, callback ); + }; +} ); + +// Generate shortcuts for custom animations +jQuery.each( { + slideDown: genFx( "show" ), + slideUp: genFx( "hide" ), + slideToggle: genFx( "toggle" ), + fadeIn: { opacity: "show" }, + fadeOut: { opacity: "hide" }, + fadeToggle: { opacity: "toggle" } +}, function( name, props ) { + jQuery.fn[ name ] = function( speed, easing, callback ) { + return this.animate( props, speed, easing, callback ); + }; +} ); + +jQuery.timers = []; +jQuery.fx.tick = function() { + var timer, + i = 0, + timers = jQuery.timers; + + fxNow = jQuery.now(); + + for ( ; i < timers.length; i++ ) { + timer = timers[ i ]; + + // Run the timer and safely remove it when done (allowing for external removal) + if ( !timer() && timers[ i ] === timer ) { + timers.splice( i--, 1 ); + } + } + + if ( !timers.length ) { + jQuery.fx.stop(); + } + fxNow = undefined; +}; + +jQuery.fx.timer = function( timer ) { + jQuery.timers.push( timer ); + jQuery.fx.start(); +}; + +jQuery.fx.interval = 13; +jQuery.fx.start = function() { + if ( inProgress ) { + return; + } + + inProgress = true; + schedule(); +}; + +jQuery.fx.stop = function() { + inProgress = null; +}; + +jQuery.fx.speeds = { + slow: 600, + fast: 200, + + // Default speed + _default: 400 +}; + + +// Based off of the plugin by Clint Helfers, with permission. +// https://web.archive.org/web/20100324014747/http://blindsignals.com/index.php/2009/07/jquery-delay/ +jQuery.fn.delay = function( time, type ) { + time = jQuery.fx ? jQuery.fx.speeds[ time ] || time : time; + type = type || "fx"; + + return this.queue( type, function( next, hooks ) { + var timeout = window.setTimeout( next, time ); + hooks.stop = function() { + window.clearTimeout( timeout ); + }; + } ); +}; + + +( function() { + var input = document.createElement( "input" ), + select = document.createElement( "select" ), + opt = select.appendChild( document.createElement( "option" ) ); + + input.type = "checkbox"; + + // Support: Android <=4.3 only + // Default value for a checkbox should be "on" + support.checkOn = input.value !== ""; + + // Support: IE <=11 only + // Must access selectedIndex to make default options select + support.optSelected = opt.selected; + + // Support: IE <=11 only + // An input loses its value after becoming a radio + input = document.createElement( "input" ); + input.value = "t"; + input.type = "radio"; + support.radioValue = input.value === "t"; +} )(); + + +var boolHook, + attrHandle = jQuery.expr.attrHandle; + +jQuery.fn.extend( { + attr: function( name, value ) { + return access( this, jQuery.attr, name, value, arguments.length > 1 ); + }, + + removeAttr: function( name ) { + return this.each( function() { + jQuery.removeAttr( this, name ); + } ); + } +} ); + +jQuery.extend( { + attr: function( elem, name, value ) { + var ret, hooks, + nType = elem.nodeType; + + // Don't get/set attributes on text, comment and attribute nodes + if ( nType === 3 || nType === 8 || nType === 2 ) { + return; + } + + // Fallback to prop when attributes are not supported + if ( typeof elem.getAttribute === "undefined" ) { + return jQuery.prop( elem, name, value ); + } + + // Attribute hooks are determined by the lowercase version + // Grab necessary hook if one is defined + if ( nType !== 1 || !jQuery.isXMLDoc( elem ) ) { + hooks = jQuery.attrHooks[ name.toLowerCase() ] || + ( jQuery.expr.match.bool.test( name ) ? boolHook : undefined ); + } + + if ( value !== undefined ) { + if ( value === null ) { + jQuery.removeAttr( elem, name ); + return; + } + + if ( hooks && "set" in hooks && + ( ret = hooks.set( elem, value, name ) ) !== undefined ) { + return ret; + } + + elem.setAttribute( name, value + "" ); + return value; + } + + if ( hooks && "get" in hooks && ( ret = hooks.get( elem, name ) ) !== null ) { + return ret; + } + + ret = jQuery.find.attr( elem, name ); + + // Non-existent attributes return null, we normalize to undefined + return ret == null ? undefined : ret; + }, + + attrHooks: { + type: { + set: function( elem, value ) { + if ( !support.radioValue && value === "radio" && + nodeName( elem, "input" ) ) { + var val = elem.value; + elem.setAttribute( "type", value ); + if ( val ) { + elem.value = val; + } + return value; + } + } + } + }, + + removeAttr: function( elem, value ) { + var name, + i = 0, + + // Attribute names can contain non-HTML whitespace characters + // https://html.spec.whatwg.org/multipage/syntax.html#attributes-2 + attrNames = value && value.match( rnothtmlwhite ); + + if ( attrNames && elem.nodeType === 1 ) { + while ( ( name = attrNames[ i++ ] ) ) { + elem.removeAttribute( name ); + } + } + } +} ); + +// Hooks for boolean attributes +boolHook = { + set: function( elem, value, name ) { + if ( value === false ) { + + // Remove boolean attributes when set to false + jQuery.removeAttr( elem, name ); + } else { + elem.setAttribute( name, name ); + } + return name; + } +}; + +jQuery.each( jQuery.expr.match.bool.source.match( /\w+/g ), function( i, name ) { + var getter = attrHandle[ name ] || jQuery.find.attr; + + attrHandle[ name ] = function( elem, name, isXML ) { + var ret, handle, + lowercaseName = name.toLowerCase(); + + if ( !isXML ) { + + // Avoid an infinite loop by temporarily removing this function from the getter + handle = attrHandle[ lowercaseName ]; + attrHandle[ lowercaseName ] = ret; + ret = getter( elem, name, isXML ) != null ? + lowercaseName : + null; + attrHandle[ lowercaseName ] = handle; + } + return ret; + }; +} ); + + + + +var rfocusable = /^(?:input|select|textarea|button)$/i, + rclickable = /^(?:a|area)$/i; + +jQuery.fn.extend( { + prop: function( name, value ) { + return access( this, jQuery.prop, name, value, arguments.length > 1 ); + }, + + removeProp: function( name ) { + return this.each( function() { + delete this[ jQuery.propFix[ name ] || name ]; + } ); + } +} ); + +jQuery.extend( { + prop: function( elem, name, value ) { + var ret, hooks, + nType = elem.nodeType; + + // Don't get/set properties on text, comment and attribute nodes + if ( nType === 3 || nType === 8 || nType === 2 ) { + return; + } + + if ( nType !== 1 || !jQuery.isXMLDoc( elem ) ) { + + // Fix name and attach hooks + name = jQuery.propFix[ name ] || name; + hooks = jQuery.propHooks[ name ]; + } + + if ( value !== undefined ) { + if ( hooks && "set" in hooks && + ( ret = hooks.set( elem, value, name ) ) !== undefined ) { + return ret; + } + + return ( elem[ name ] = value ); + } + + if ( hooks && "get" in hooks && ( ret = hooks.get( elem, name ) ) !== null ) { + return ret; + } + + return elem[ name ]; + }, + + propHooks: { + tabIndex: { + get: function( elem ) { + + // Support: IE <=9 - 11 only + // elem.tabIndex doesn't always return the + // correct value when it hasn't been explicitly set + // https://web.archive.org/web/20141116233347/http://fluidproject.org/blog/2008/01/09/getting-setting-and-removing-tabindex-values-with-javascript/ + // Use proper attribute retrieval(#12072) + var tabindex = jQuery.find.attr( elem, "tabindex" ); + + if ( tabindex ) { + return parseInt( tabindex, 10 ); + } + + if ( + rfocusable.test( elem.nodeName ) || + rclickable.test( elem.nodeName ) && + elem.href + ) { + return 0; + } + + return -1; + } + } + }, + + propFix: { + "for": "htmlFor", + "class": "className" + } +} ); + +// Support: IE <=11 only +// Accessing the selectedIndex property +// forces the browser to respect setting selected +// on the option +// The getter ensures a default option is selected +// when in an optgroup +// eslint rule "no-unused-expressions" is disabled for this code +// since it considers such accessions noop +if ( !support.optSelected ) { + jQuery.propHooks.selected = { + get: function( elem ) { + + /* eslint no-unused-expressions: "off" */ + + var parent = elem.parentNode; + if ( parent && parent.parentNode ) { + parent.parentNode.selectedIndex; + } + return null; + }, + set: function( elem ) { + + /* eslint no-unused-expressions: "off" */ + + var parent = elem.parentNode; + if ( parent ) { + parent.selectedIndex; + + if ( parent.parentNode ) { + parent.parentNode.selectedIndex; + } + } + } + }; +} + +jQuery.each( [ + "tabIndex", + "readOnly", + "maxLength", + "cellSpacing", + "cellPadding", + "rowSpan", + "colSpan", + "useMap", + "frameBorder", + "contentEditable" +], function() { + jQuery.propFix[ this.toLowerCase() ] = this; +} ); + + + + + // Strip and collapse whitespace according to HTML spec + // https://html.spec.whatwg.org/multipage/infrastructure.html#strip-and-collapse-whitespace + function stripAndCollapse( value ) { + var tokens = value.match( rnothtmlwhite ) || []; + return tokens.join( " " ); + } + + +function getClass( elem ) { + return elem.getAttribute && elem.getAttribute( "class" ) || ""; +} + +jQuery.fn.extend( { + addClass: function( value ) { + var classes, elem, cur, curValue, clazz, j, finalValue, + i = 0; + + if ( jQuery.isFunction( value ) ) { + return this.each( function( j ) { + jQuery( this ).addClass( value.call( this, j, getClass( this ) ) ); + } ); + } + + if ( typeof value === "string" && value ) { + classes = value.match( rnothtmlwhite ) || []; + + while ( ( elem = this[ i++ ] ) ) { + curValue = getClass( elem ); + cur = elem.nodeType === 1 && ( " " + stripAndCollapse( curValue ) + " " ); + + if ( cur ) { + j = 0; + while ( ( clazz = classes[ j++ ] ) ) { + if ( cur.indexOf( " " + clazz + " " ) < 0 ) { + cur += clazz + " "; + } + } + + // Only assign if different to avoid unneeded rendering. + finalValue = stripAndCollapse( cur ); + if ( curValue !== finalValue ) { + elem.setAttribute( "class", finalValue ); + } + } + } + } + + return this; + }, + + removeClass: function( value ) { + var classes, elem, cur, curValue, clazz, j, finalValue, + i = 0; + + if ( jQuery.isFunction( value ) ) { + return this.each( function( j ) { + jQuery( this ).removeClass( value.call( this, j, getClass( this ) ) ); + } ); + } + + if ( !arguments.length ) { + return this.attr( "class", "" ); + } + + if ( typeof value === "string" && value ) { + classes = value.match( rnothtmlwhite ) || []; + + while ( ( elem = this[ i++ ] ) ) { + curValue = getClass( elem ); + + // This expression is here for better compressibility (see addClass) + cur = elem.nodeType === 1 && ( " " + stripAndCollapse( curValue ) + " " ); + + if ( cur ) { + j = 0; + while ( ( clazz = classes[ j++ ] ) ) { + + // Remove *all* instances + while ( cur.indexOf( " " + clazz + " " ) > -1 ) { + cur = cur.replace( " " + clazz + " ", " " ); + } + } + + // Only assign if different to avoid unneeded rendering. + finalValue = stripAndCollapse( cur ); + if ( curValue !== finalValue ) { + elem.setAttribute( "class", finalValue ); + } + } + } + } + + return this; + }, + + toggleClass: function( value, stateVal ) { + var type = typeof value; + + if ( typeof stateVal === "boolean" && type === "string" ) { + return stateVal ? this.addClass( value ) : this.removeClass( value ); + } + + if ( jQuery.isFunction( value ) ) { + return this.each( function( i ) { + jQuery( this ).toggleClass( + value.call( this, i, getClass( this ), stateVal ), + stateVal + ); + } ); + } + + return this.each( function() { + var className, i, self, classNames; + + if ( type === "string" ) { + + // Toggle individual class names + i = 0; + self = jQuery( this ); + classNames = value.match( rnothtmlwhite ) || []; + + while ( ( className = classNames[ i++ ] ) ) { + + // Check each className given, space separated list + if ( self.hasClass( className ) ) { + self.removeClass( className ); + } else { + self.addClass( className ); + } + } + + // Toggle whole class name + } else if ( value === undefined || type === "boolean" ) { + className = getClass( this ); + if ( className ) { + + // Store className if set + dataPriv.set( this, "__className__", className ); + } + + // If the element has a class name or if we're passed `false`, + // then remove the whole classname (if there was one, the above saved it). + // Otherwise bring back whatever was previously saved (if anything), + // falling back to the empty string if nothing was stored. + if ( this.setAttribute ) { + this.setAttribute( "class", + className || value === false ? + "" : + dataPriv.get( this, "__className__" ) || "" + ); + } + } + } ); + }, + + hasClass: function( selector ) { + var className, elem, + i = 0; + + className = " " + selector + " "; + while ( ( elem = this[ i++ ] ) ) { + if ( elem.nodeType === 1 && + ( " " + stripAndCollapse( getClass( elem ) ) + " " ).indexOf( className ) > -1 ) { + return true; + } + } + + return false; + } +} ); + + + + +var rreturn = /\r/g; + +jQuery.fn.extend( { + val: function( value ) { + var hooks, ret, isFunction, + elem = this[ 0 ]; + + if ( !arguments.length ) { + if ( elem ) { + hooks = jQuery.valHooks[ elem.type ] || + jQuery.valHooks[ elem.nodeName.toLowerCase() ]; + + if ( hooks && + "get" in hooks && + ( ret = hooks.get( elem, "value" ) ) !== undefined + ) { + return ret; + } + + ret = elem.value; + + // Handle most common string cases + if ( typeof ret === "string" ) { + return ret.replace( rreturn, "" ); + } + + // Handle cases where value is null/undef or number + return ret == null ? "" : ret; + } + + return; + } + + isFunction = jQuery.isFunction( value ); + + return this.each( function( i ) { + var val; + + if ( this.nodeType !== 1 ) { + return; + } + + if ( isFunction ) { + val = value.call( this, i, jQuery( this ).val() ); + } else { + val = value; + } + + // Treat null/undefined as ""; convert numbers to string + if ( val == null ) { + val = ""; + + } else if ( typeof val === "number" ) { + val += ""; + + } else if ( Array.isArray( val ) ) { + val = jQuery.map( val, function( value ) { + return value == null ? "" : value + ""; + } ); + } + + hooks = jQuery.valHooks[ this.type ] || jQuery.valHooks[ this.nodeName.toLowerCase() ]; + + // If set returns undefined, fall back to normal setting + if ( !hooks || !( "set" in hooks ) || hooks.set( this, val, "value" ) === undefined ) { + this.value = val; + } + } ); + } +} ); + +jQuery.extend( { + valHooks: { + option: { + get: function( elem ) { + + var val = jQuery.find.attr( elem, "value" ); + return val != null ? + val : + + // Support: IE <=10 - 11 only + // option.text throws exceptions (#14686, #14858) + // Strip and collapse whitespace + // https://html.spec.whatwg.org/#strip-and-collapse-whitespace + stripAndCollapse( jQuery.text( elem ) ); + } + }, + select: { + get: function( elem ) { + var value, option, i, + options = elem.options, + index = elem.selectedIndex, + one = elem.type === "select-one", + values = one ? null : [], + max = one ? index + 1 : options.length; + + if ( index < 0 ) { + i = max; + + } else { + i = one ? index : 0; + } + + // Loop through all the selected options + for ( ; i < max; i++ ) { + option = options[ i ]; + + // Support: IE <=9 only + // IE8-9 doesn't update selected after form reset (#2551) + if ( ( option.selected || i === index ) && + + // Don't return options that are disabled or in a disabled optgroup + !option.disabled && + ( !option.parentNode.disabled || + !nodeName( option.parentNode, "optgroup" ) ) ) { + + // Get the specific value for the option + value = jQuery( option ).val(); + + // We don't need an array for one selects + if ( one ) { + return value; + } + + // Multi-Selects return an array + values.push( value ); + } + } + + return values; + }, + + set: function( elem, value ) { + var optionSet, option, + options = elem.options, + values = jQuery.makeArray( value ), + i = options.length; + + while ( i-- ) { + option = options[ i ]; + + /* eslint-disable no-cond-assign */ + + if ( option.selected = + jQuery.inArray( jQuery.valHooks.option.get( option ), values ) > -1 + ) { + optionSet = true; + } + + /* eslint-enable no-cond-assign */ + } + + // Force browsers to behave consistently when non-matching value is set + if ( !optionSet ) { + elem.selectedIndex = -1; + } + return values; + } + } + } +} ); + +// Radios and checkboxes getter/setter +jQuery.each( [ "radio", "checkbox" ], function() { + jQuery.valHooks[ this ] = { + set: function( elem, value ) { + if ( Array.isArray( value ) ) { + return ( elem.checked = jQuery.inArray( jQuery( elem ).val(), value ) > -1 ); + } + } + }; + if ( !support.checkOn ) { + jQuery.valHooks[ this ].get = function( elem ) { + return elem.getAttribute( "value" ) === null ? "on" : elem.value; + }; + } +} ); + + + + +// Return jQuery for attributes-only inclusion + + +var rfocusMorph = /^(?:focusinfocus|focusoutblur)$/; + +jQuery.extend( jQuery.event, { + + trigger: function( event, data, elem, onlyHandlers ) { + + var i, cur, tmp, bubbleType, ontype, handle, special, + eventPath = [ elem || document ], + type = hasOwn.call( event, "type" ) ? event.type : event, + namespaces = hasOwn.call( event, "namespace" ) ? event.namespace.split( "." ) : []; + + cur = tmp = elem = elem || document; + + // Don't do events on text and comment nodes + if ( elem.nodeType === 3 || elem.nodeType === 8 ) { + return; + } + + // focus/blur morphs to focusin/out; ensure we're not firing them right now + if ( rfocusMorph.test( type + jQuery.event.triggered ) ) { + return; + } + + if ( type.indexOf( "." ) > -1 ) { + + // Namespaced trigger; create a regexp to match event type in handle() + namespaces = type.split( "." ); + type = namespaces.shift(); + namespaces.sort(); + } + ontype = type.indexOf( ":" ) < 0 && "on" + type; + + // Caller can pass in a jQuery.Event object, Object, or just an event type string + event = event[ jQuery.expando ] ? + event : + new jQuery.Event( type, typeof event === "object" && event ); + + // Trigger bitmask: & 1 for native handlers; & 2 for jQuery (always true) + event.isTrigger = onlyHandlers ? 2 : 3; + event.namespace = namespaces.join( "." ); + event.rnamespace = event.namespace ? + new RegExp( "(^|\\.)" + namespaces.join( "\\.(?:.*\\.|)" ) + "(\\.|$)" ) : + null; + + // Clean up the event in case it is being reused + event.result = undefined; + if ( !event.target ) { + event.target = elem; + } + + // Clone any incoming data and prepend the event, creating the handler arg list + data = data == null ? + [ event ] : + jQuery.makeArray( data, [ event ] ); + + // Allow special events to draw outside the lines + special = jQuery.event.special[ type ] || {}; + if ( !onlyHandlers && special.trigger && special.trigger.apply( elem, data ) === false ) { + return; + } + + // Determine event propagation path in advance, per W3C events spec (#9951) + // Bubble up to document, then to window; watch for a global ownerDocument var (#9724) + if ( !onlyHandlers && !special.noBubble && !jQuery.isWindow( elem ) ) { + + bubbleType = special.delegateType || type; + if ( !rfocusMorph.test( bubbleType + type ) ) { + cur = cur.parentNode; + } + for ( ; cur; cur = cur.parentNode ) { + eventPath.push( cur ); + tmp = cur; + } + + // Only add window if we got to document (e.g., not plain obj or detached DOM) + if ( tmp === ( elem.ownerDocument || document ) ) { + eventPath.push( tmp.defaultView || tmp.parentWindow || window ); + } + } + + // Fire handlers on the event path + i = 0; + while ( ( cur = eventPath[ i++ ] ) && !event.isPropagationStopped() ) { + + event.type = i > 1 ? + bubbleType : + special.bindType || type; + + // jQuery handler + handle = ( dataPriv.get( cur, "events" ) || {} )[ event.type ] && + dataPriv.get( cur, "handle" ); + if ( handle ) { + handle.apply( cur, data ); + } + + // Native handler + handle = ontype && cur[ ontype ]; + if ( handle && handle.apply && acceptData( cur ) ) { + event.result = handle.apply( cur, data ); + if ( event.result === false ) { + event.preventDefault(); + } + } + } + event.type = type; + + // If nobody prevented the default action, do it now + if ( !onlyHandlers && !event.isDefaultPrevented() ) { + + if ( ( !special._default || + special._default.apply( eventPath.pop(), data ) === false ) && + acceptData( elem ) ) { + + // Call a native DOM method on the target with the same name as the event. + // Don't do default actions on window, that's where global variables be (#6170) + if ( ontype && jQuery.isFunction( elem[ type ] ) && !jQuery.isWindow( elem ) ) { + + // Don't re-trigger an onFOO event when we call its FOO() method + tmp = elem[ ontype ]; + + if ( tmp ) { + elem[ ontype ] = null; + } + + // Prevent re-triggering of the same event, since we already bubbled it above + jQuery.event.triggered = type; + elem[ type ](); + jQuery.event.triggered = undefined; + + if ( tmp ) { + elem[ ontype ] = tmp; + } + } + } + } + + return event.result; + }, + + // Piggyback on a donor event to simulate a different one + // Used only for `focus(in | out)` events + simulate: function( type, elem, event ) { + var e = jQuery.extend( + new jQuery.Event(), + event, + { + type: type, + isSimulated: true + } + ); + + jQuery.event.trigger( e, null, elem ); + } + +} ); + +jQuery.fn.extend( { + + trigger: function( type, data ) { + return this.each( function() { + jQuery.event.trigger( type, data, this ); + } ); + }, + triggerHandler: function( type, data ) { + var elem = this[ 0 ]; + if ( elem ) { + return jQuery.event.trigger( type, data, elem, true ); + } + } +} ); + + +jQuery.each( ( "blur focus focusin focusout resize scroll click dblclick " + + "mousedown mouseup mousemove mouseover mouseout mouseenter mouseleave " + + "change select submit keydown keypress keyup contextmenu" ).split( " " ), + function( i, name ) { + + // Handle event binding + jQuery.fn[ name ] = function( data, fn ) { + return arguments.length > 0 ? + this.on( name, null, data, fn ) : + this.trigger( name ); + }; +} ); + +jQuery.fn.extend( { + hover: function( fnOver, fnOut ) { + return this.mouseenter( fnOver ).mouseleave( fnOut || fnOver ); + } +} ); + + + + +support.focusin = "onfocusin" in window; + + +// Support: Firefox <=44 +// Firefox doesn't have focus(in | out) events +// Related ticket - https://bugzilla.mozilla.org/show_bug.cgi?id=687787 +// +// Support: Chrome <=48 - 49, Safari <=9.0 - 9.1 +// focus(in | out) events fire after focus & blur events, +// which is spec violation - http://www.w3.org/TR/DOM-Level-3-Events/#events-focusevent-event-order +// Related ticket - https://bugs.chromium.org/p/chromium/issues/detail?id=449857 +if ( !support.focusin ) { + jQuery.each( { focus: "focusin", blur: "focusout" }, function( orig, fix ) { + + // Attach a single capturing handler on the document while someone wants focusin/focusout + var handler = function( event ) { + jQuery.event.simulate( fix, event.target, jQuery.event.fix( event ) ); + }; + + jQuery.event.special[ fix ] = { + setup: function() { + var doc = this.ownerDocument || this, + attaches = dataPriv.access( doc, fix ); + + if ( !attaches ) { + doc.addEventListener( orig, handler, true ); + } + dataPriv.access( doc, fix, ( attaches || 0 ) + 1 ); + }, + teardown: function() { + var doc = this.ownerDocument || this, + attaches = dataPriv.access( doc, fix ) - 1; + + if ( !attaches ) { + doc.removeEventListener( orig, handler, true ); + dataPriv.remove( doc, fix ); + + } else { + dataPriv.access( doc, fix, attaches ); + } + } + }; + } ); +} +var location = window.location; + +var nonce = jQuery.now(); + +var rquery = ( /\?/ ); + + + +// Cross-browser xml parsing +jQuery.parseXML = function( data ) { + var xml; + if ( !data || typeof data !== "string" ) { + return null; + } + + // Support: IE 9 - 11 only + // IE throws on parseFromString with invalid input. + try { + xml = ( new window.DOMParser() ).parseFromString( data, "text/xml" ); + } catch ( e ) { + xml = undefined; + } + + if ( !xml || xml.getElementsByTagName( "parsererror" ).length ) { + jQuery.error( "Invalid XML: " + data ); + } + return xml; +}; + + +var + rbracket = /\[\]$/, + rCRLF = /\r?\n/g, + rsubmitterTypes = /^(?:submit|button|image|reset|file)$/i, + rsubmittable = /^(?:input|select|textarea|keygen)/i; + +function buildParams( prefix, obj, traditional, add ) { + var name; + + if ( Array.isArray( obj ) ) { + + // Serialize array item. + jQuery.each( obj, function( i, v ) { + if ( traditional || rbracket.test( prefix ) ) { + + // Treat each array item as a scalar. + add( prefix, v ); + + } else { + + // Item is non-scalar (array or object), encode its numeric index. + buildParams( + prefix + "[" + ( typeof v === "object" && v != null ? i : "" ) + "]", + v, + traditional, + add + ); + } + } ); + + } else if ( !traditional && jQuery.type( obj ) === "object" ) { + + // Serialize object item. + for ( name in obj ) { + buildParams( prefix + "[" + name + "]", obj[ name ], traditional, add ); + } + + } else { + + // Serialize scalar item. + add( prefix, obj ); + } +} + +// Serialize an array of form elements or a set of +// key/values into a query string +jQuery.param = function( a, traditional ) { + var prefix, + s = [], + add = function( key, valueOrFunction ) { + + // If value is a function, invoke it and use its return value + var value = jQuery.isFunction( valueOrFunction ) ? + valueOrFunction() : + valueOrFunction; + + s[ s.length ] = encodeURIComponent( key ) + "=" + + encodeURIComponent( value == null ? "" : value ); + }; + + // If an array was passed in, assume that it is an array of form elements. + if ( Array.isArray( a ) || ( a.jquery && !jQuery.isPlainObject( a ) ) ) { + + // Serialize the form elements + jQuery.each( a, function() { + add( this.name, this.value ); + } ); + + } else { + + // If traditional, encode the "old" way (the way 1.3.2 or older + // did it), otherwise encode params recursively. + for ( prefix in a ) { + buildParams( prefix, a[ prefix ], traditional, add ); + } + } + + // Return the resulting serialization + return s.join( "&" ); +}; + +jQuery.fn.extend( { + serialize: function() { + return jQuery.param( this.serializeArray() ); + }, + serializeArray: function() { + return this.map( function() { + + // Can add propHook for "elements" to filter or add form elements + var elements = jQuery.prop( this, "elements" ); + return elements ? jQuery.makeArray( elements ) : this; + } ) + .filter( function() { + var type = this.type; + + // Use .is( ":disabled" ) so that fieldset[disabled] works + return this.name && !jQuery( this ).is( ":disabled" ) && + rsubmittable.test( this.nodeName ) && !rsubmitterTypes.test( type ) && + ( this.checked || !rcheckableType.test( type ) ); + } ) + .map( function( i, elem ) { + var val = jQuery( this ).val(); + + if ( val == null ) { + return null; + } + + if ( Array.isArray( val ) ) { + return jQuery.map( val, function( val ) { + return { name: elem.name, value: val.replace( rCRLF, "\r\n" ) }; + } ); + } + + return { name: elem.name, value: val.replace( rCRLF, "\r\n" ) }; + } ).get(); + } +} ); + + +var + r20 = /%20/g, + rhash = /#.*$/, + rantiCache = /([?&])_=[^&]*/, + rheaders = /^(.*?):[ \t]*([^\r\n]*)$/mg, + + // #7653, #8125, #8152: local protocol detection + rlocalProtocol = /^(?:about|app|app-storage|.+-extension|file|res|widget):$/, + rnoContent = /^(?:GET|HEAD)$/, + rprotocol = /^\/\//, + + /* Prefilters + * 1) They are useful to introduce custom dataTypes (see ajax/jsonp.js for an example) + * 2) These are called: + * - BEFORE asking for a transport + * - AFTER param serialization (s.data is a string if s.processData is true) + * 3) key is the dataType + * 4) the catchall symbol "*" can be used + * 5) execution will start with transport dataType and THEN continue down to "*" if needed + */ + prefilters = {}, + + /* Transports bindings + * 1) key is the dataType + * 2) the catchall symbol "*" can be used + * 3) selection will start with transport dataType and THEN go to "*" if needed + */ + transports = {}, + + // Avoid comment-prolog char sequence (#10098); must appease lint and evade compression + allTypes = "*/".concat( "*" ), + + // Anchor tag for parsing the document origin + originAnchor = document.createElement( "a" ); + originAnchor.href = location.href; + +// Base "constructor" for jQuery.ajaxPrefilter and jQuery.ajaxTransport +function addToPrefiltersOrTransports( structure ) { + + // dataTypeExpression is optional and defaults to "*" + return function( dataTypeExpression, func ) { + + if ( typeof dataTypeExpression !== "string" ) { + func = dataTypeExpression; + dataTypeExpression = "*"; + } + + var dataType, + i = 0, + dataTypes = dataTypeExpression.toLowerCase().match( rnothtmlwhite ) || []; + + if ( jQuery.isFunction( func ) ) { + + // For each dataType in the dataTypeExpression + while ( ( dataType = dataTypes[ i++ ] ) ) { + + // Prepend if requested + if ( dataType[ 0 ] === "+" ) { + dataType = dataType.slice( 1 ) || "*"; + ( structure[ dataType ] = structure[ dataType ] || [] ).unshift( func ); + + // Otherwise append + } else { + ( structure[ dataType ] = structure[ dataType ] || [] ).push( func ); + } + } + } + }; +} + +// Base inspection function for prefilters and transports +function inspectPrefiltersOrTransports( structure, options, originalOptions, jqXHR ) { + + var inspected = {}, + seekingTransport = ( structure === transports ); + + function inspect( dataType ) { + var selected; + inspected[ dataType ] = true; + jQuery.each( structure[ dataType ] || [], function( _, prefilterOrFactory ) { + var dataTypeOrTransport = prefilterOrFactory( options, originalOptions, jqXHR ); + if ( typeof dataTypeOrTransport === "string" && + !seekingTransport && !inspected[ dataTypeOrTransport ] ) { + + options.dataTypes.unshift( dataTypeOrTransport ); + inspect( dataTypeOrTransport ); + return false; + } else if ( seekingTransport ) { + return !( selected = dataTypeOrTransport ); + } + } ); + return selected; + } + + return inspect( options.dataTypes[ 0 ] ) || !inspected[ "*" ] && inspect( "*" ); +} + +// A special extend for ajax options +// that takes "flat" options (not to be deep extended) +// Fixes #9887 +function ajaxExtend( target, src ) { + var key, deep, + flatOptions = jQuery.ajaxSettings.flatOptions || {}; + + for ( key in src ) { + if ( src[ key ] !== undefined ) { + ( flatOptions[ key ] ? target : ( deep || ( deep = {} ) ) )[ key ] = src[ key ]; + } + } + if ( deep ) { + jQuery.extend( true, target, deep ); + } + + return target; +} + +/* Handles responses to an ajax request: + * - finds the right dataType (mediates between content-type and expected dataType) + * - returns the corresponding response + */ +function ajaxHandleResponses( s, jqXHR, responses ) { + + var ct, type, finalDataType, firstDataType, + contents = s.contents, + dataTypes = s.dataTypes; + + // Remove auto dataType and get content-type in the process + while ( dataTypes[ 0 ] === "*" ) { + dataTypes.shift(); + if ( ct === undefined ) { + ct = s.mimeType || jqXHR.getResponseHeader( "Content-Type" ); + } + } + + // Check if we're dealing with a known content-type + if ( ct ) { + for ( type in contents ) { + if ( contents[ type ] && contents[ type ].test( ct ) ) { + dataTypes.unshift( type ); + break; + } + } + } + + // Check to see if we have a response for the expected dataType + if ( dataTypes[ 0 ] in responses ) { + finalDataType = dataTypes[ 0 ]; + } else { + + // Try convertible dataTypes + for ( type in responses ) { + if ( !dataTypes[ 0 ] || s.converters[ type + " " + dataTypes[ 0 ] ] ) { + finalDataType = type; + break; + } + if ( !firstDataType ) { + firstDataType = type; + } + } + + // Or just use first one + finalDataType = finalDataType || firstDataType; + } + + // If we found a dataType + // We add the dataType to the list if needed + // and return the corresponding response + if ( finalDataType ) { + if ( finalDataType !== dataTypes[ 0 ] ) { + dataTypes.unshift( finalDataType ); + } + return responses[ finalDataType ]; + } +} + +/* Chain conversions given the request and the original response + * Also sets the responseXXX fields on the jqXHR instance + */ +function ajaxConvert( s, response, jqXHR, isSuccess ) { + var conv2, current, conv, tmp, prev, + converters = {}, + + // Work with a copy of dataTypes in case we need to modify it for conversion + dataTypes = s.dataTypes.slice(); + + // Create converters map with lowercased keys + if ( dataTypes[ 1 ] ) { + for ( conv in s.converters ) { + converters[ conv.toLowerCase() ] = s.converters[ conv ]; + } + } + + current = dataTypes.shift(); + + // Convert to each sequential dataType + while ( current ) { + + if ( s.responseFields[ current ] ) { + jqXHR[ s.responseFields[ current ] ] = response; + } + + // Apply the dataFilter if provided + if ( !prev && isSuccess && s.dataFilter ) { + response = s.dataFilter( response, s.dataType ); + } + + prev = current; + current = dataTypes.shift(); + + if ( current ) { + + // There's only work to do if current dataType is non-auto + if ( current === "*" ) { + + current = prev; + + // Convert response if prev dataType is non-auto and differs from current + } else if ( prev !== "*" && prev !== current ) { + + // Seek a direct converter + conv = converters[ prev + " " + current ] || converters[ "* " + current ]; + + // If none found, seek a pair + if ( !conv ) { + for ( conv2 in converters ) { + + // If conv2 outputs current + tmp = conv2.split( " " ); + if ( tmp[ 1 ] === current ) { + + // If prev can be converted to accepted input + conv = converters[ prev + " " + tmp[ 0 ] ] || + converters[ "* " + tmp[ 0 ] ]; + if ( conv ) { + + // Condense equivalence converters + if ( conv === true ) { + conv = converters[ conv2 ]; + + // Otherwise, insert the intermediate dataType + } else if ( converters[ conv2 ] !== true ) { + current = tmp[ 0 ]; + dataTypes.unshift( tmp[ 1 ] ); + } + break; + } + } + } + } + + // Apply converter (if not an equivalence) + if ( conv !== true ) { + + // Unless errors are allowed to bubble, catch and return them + if ( conv && s.throws ) { + response = conv( response ); + } else { + try { + response = conv( response ); + } catch ( e ) { + return { + state: "parsererror", + error: conv ? e : "No conversion from " + prev + " to " + current + }; + } + } + } + } + } + } + + return { state: "success", data: response }; +} + +jQuery.extend( { + + // Counter for holding the number of active queries + active: 0, + + // Last-Modified header cache for next request + lastModified: {}, + etag: {}, + + ajaxSettings: { + url: location.href, + type: "GET", + isLocal: rlocalProtocol.test( location.protocol ), + global: true, + processData: true, + async: true, + contentType: "application/x-www-form-urlencoded; charset=UTF-8", + + /* + timeout: 0, + data: null, + dataType: null, + username: null, + password: null, + cache: null, + throws: false, + traditional: false, + headers: {}, + */ + + accepts: { + "*": allTypes, + text: "text/plain", + html: "text/html", + xml: "application/xml, text/xml", + json: "application/json, text/javascript" + }, + + contents: { + xml: /\bxml\b/, + html: /\bhtml/, + json: /\bjson\b/ + }, + + responseFields: { + xml: "responseXML", + text: "responseText", + json: "responseJSON" + }, + + // Data converters + // Keys separate source (or catchall "*") and destination types with a single space + converters: { + + // Convert anything to text + "* text": String, + + // Text to html (true = no transformation) + "text html": true, + + // Evaluate text as a json expression + "text json": JSON.parse, + + // Parse text as xml + "text xml": jQuery.parseXML + }, + + // For options that shouldn't be deep extended: + // you can add your own custom options here if + // and when you create one that shouldn't be + // deep extended (see ajaxExtend) + flatOptions: { + url: true, + context: true + } + }, + + // Creates a full fledged settings object into target + // with both ajaxSettings and settings fields. + // If target is omitted, writes into ajaxSettings. + ajaxSetup: function( target, settings ) { + return settings ? + + // Building a settings object + ajaxExtend( ajaxExtend( target, jQuery.ajaxSettings ), settings ) : + + // Extending ajaxSettings + ajaxExtend( jQuery.ajaxSettings, target ); + }, + + ajaxPrefilter: addToPrefiltersOrTransports( prefilters ), + ajaxTransport: addToPrefiltersOrTransports( transports ), + + // Main method + ajax: function( url, options ) { + + // If url is an object, simulate pre-1.5 signature + if ( typeof url === "object" ) { + options = url; + url = undefined; + } + + // Force options to be an object + options = options || {}; + + var transport, + + // URL without anti-cache param + cacheURL, + + // Response headers + responseHeadersString, + responseHeaders, + + // timeout handle + timeoutTimer, + + // Url cleanup var + urlAnchor, + + // Request state (becomes false upon send and true upon completion) + completed, + + // To know if global events are to be dispatched + fireGlobals, + + // Loop variable + i, + + // uncached part of the url + uncached, + + // Create the final options object + s = jQuery.ajaxSetup( {}, options ), + + // Callbacks context + callbackContext = s.context || s, + + // Context for global events is callbackContext if it is a DOM node or jQuery collection + globalEventContext = s.context && + ( callbackContext.nodeType || callbackContext.jquery ) ? + jQuery( callbackContext ) : + jQuery.event, + + // Deferreds + deferred = jQuery.Deferred(), + completeDeferred = jQuery.Callbacks( "once memory" ), + + // Status-dependent callbacks + statusCode = s.statusCode || {}, + + // Headers (they are sent all at once) + requestHeaders = {}, + requestHeadersNames = {}, + + // Default abort message + strAbort = "canceled", + + // Fake xhr + jqXHR = { + readyState: 0, + + // Builds headers hashtable if needed + getResponseHeader: function( key ) { + var match; + if ( completed ) { + if ( !responseHeaders ) { + responseHeaders = {}; + while ( ( match = rheaders.exec( responseHeadersString ) ) ) { + responseHeaders[ match[ 1 ].toLowerCase() ] = match[ 2 ]; + } + } + match = responseHeaders[ key.toLowerCase() ]; + } + return match == null ? null : match; + }, + + // Raw string + getAllResponseHeaders: function() { + return completed ? responseHeadersString : null; + }, + + // Caches the header + setRequestHeader: function( name, value ) { + if ( completed == null ) { + name = requestHeadersNames[ name.toLowerCase() ] = + requestHeadersNames[ name.toLowerCase() ] || name; + requestHeaders[ name ] = value; + } + return this; + }, + + // Overrides response content-type header + overrideMimeType: function( type ) { + if ( completed == null ) { + s.mimeType = type; + } + return this; + }, + + // Status-dependent callbacks + statusCode: function( map ) { + var code; + if ( map ) { + if ( completed ) { + + // Execute the appropriate callbacks + jqXHR.always( map[ jqXHR.status ] ); + } else { + + // Lazy-add the new callbacks in a way that preserves old ones + for ( code in map ) { + statusCode[ code ] = [ statusCode[ code ], map[ code ] ]; + } + } + } + return this; + }, + + // Cancel the request + abort: function( statusText ) { + var finalText = statusText || strAbort; + if ( transport ) { + transport.abort( finalText ); + } + done( 0, finalText ); + return this; + } + }; + + // Attach deferreds + deferred.promise( jqXHR ); + + // Add protocol if not provided (prefilters might expect it) + // Handle falsy url in the settings object (#10093: consistency with old signature) + // We also use the url parameter if available + s.url = ( ( url || s.url || location.href ) + "" ) + .replace( rprotocol, location.protocol + "//" ); + + // Alias method option to type as per ticket #12004 + s.type = options.method || options.type || s.method || s.type; + + // Extract dataTypes list + s.dataTypes = ( s.dataType || "*" ).toLowerCase().match( rnothtmlwhite ) || [ "" ]; + + // A cross-domain request is in order when the origin doesn't match the current origin. + if ( s.crossDomain == null ) { + urlAnchor = document.createElement( "a" ); + + // Support: IE <=8 - 11, Edge 12 - 13 + // IE throws exception on accessing the href property if url is malformed, + // e.g. http://example.com:80x/ + try { + urlAnchor.href = s.url; + + // Support: IE <=8 - 11 only + // Anchor's host property isn't correctly set when s.url is relative + urlAnchor.href = urlAnchor.href; + s.crossDomain = originAnchor.protocol + "//" + originAnchor.host !== + urlAnchor.protocol + "//" + urlAnchor.host; + } catch ( e ) { + + // If there is an error parsing the URL, assume it is crossDomain, + // it can be rejected by the transport if it is invalid + s.crossDomain = true; + } + } + + // Convert data if not already a string + if ( s.data && s.processData && typeof s.data !== "string" ) { + s.data = jQuery.param( s.data, s.traditional ); + } + + // Apply prefilters + inspectPrefiltersOrTransports( prefilters, s, options, jqXHR ); + + // If request was aborted inside a prefilter, stop there + if ( completed ) { + return jqXHR; + } + + // We can fire global events as of now if asked to + // Don't fire events if jQuery.event is undefined in an AMD-usage scenario (#15118) + fireGlobals = jQuery.event && s.global; + + // Watch for a new set of requests + if ( fireGlobals && jQuery.active++ === 0 ) { + jQuery.event.trigger( "ajaxStart" ); + } + + // Uppercase the type + s.type = s.type.toUpperCase(); + + // Determine if request has content + s.hasContent = !rnoContent.test( s.type ); + + // Save the URL in case we're toying with the If-Modified-Since + // and/or If-None-Match header later on + // Remove hash to simplify url manipulation + cacheURL = s.url.replace( rhash, "" ); + + // More options handling for requests with no content + if ( !s.hasContent ) { + + // Remember the hash so we can put it back + uncached = s.url.slice( cacheURL.length ); + + // If data is available, append data to url + if ( s.data ) { + cacheURL += ( rquery.test( cacheURL ) ? "&" : "?" ) + s.data; + + // #9682: remove data so that it's not used in an eventual retry + delete s.data; + } + + // Add or update anti-cache param if needed + if ( s.cache === false ) { + cacheURL = cacheURL.replace( rantiCache, "$1" ); + uncached = ( rquery.test( cacheURL ) ? "&" : "?" ) + "_=" + ( nonce++ ) + uncached; + } + + // Put hash and anti-cache on the URL that will be requested (gh-1732) + s.url = cacheURL + uncached; + + // Change '%20' to '+' if this is encoded form body content (gh-2658) + } else if ( s.data && s.processData && + ( s.contentType || "" ).indexOf( "application/x-www-form-urlencoded" ) === 0 ) { + s.data = s.data.replace( r20, "+" ); + } + + // Set the If-Modified-Since and/or If-None-Match header, if in ifModified mode. + if ( s.ifModified ) { + if ( jQuery.lastModified[ cacheURL ] ) { + jqXHR.setRequestHeader( "If-Modified-Since", jQuery.lastModified[ cacheURL ] ); + } + if ( jQuery.etag[ cacheURL ] ) { + jqXHR.setRequestHeader( "If-None-Match", jQuery.etag[ cacheURL ] ); + } + } + + // Set the correct header, if data is being sent + if ( s.data && s.hasContent && s.contentType !== false || options.contentType ) { + jqXHR.setRequestHeader( "Content-Type", s.contentType ); + } + + // Set the Accepts header for the server, depending on the dataType + jqXHR.setRequestHeader( + "Accept", + s.dataTypes[ 0 ] && s.accepts[ s.dataTypes[ 0 ] ] ? + s.accepts[ s.dataTypes[ 0 ] ] + + ( s.dataTypes[ 0 ] !== "*" ? ", " + allTypes + "; q=0.01" : "" ) : + s.accepts[ "*" ] + ); + + // Check for headers option + for ( i in s.headers ) { + jqXHR.setRequestHeader( i, s.headers[ i ] ); + } + + // Allow custom headers/mimetypes and early abort + if ( s.beforeSend && + ( s.beforeSend.call( callbackContext, jqXHR, s ) === false || completed ) ) { + + // Abort if not done already and return + return jqXHR.abort(); + } + + // Aborting is no longer a cancellation + strAbort = "abort"; + + // Install callbacks on deferreds + completeDeferred.add( s.complete ); + jqXHR.done( s.success ); + jqXHR.fail( s.error ); + + // Get transport + transport = inspectPrefiltersOrTransports( transports, s, options, jqXHR ); + + // If no transport, we auto-abort + if ( !transport ) { + done( -1, "No Transport" ); + } else { + jqXHR.readyState = 1; + + // Send global event + if ( fireGlobals ) { + globalEventContext.trigger( "ajaxSend", [ jqXHR, s ] ); + } + + // If request was aborted inside ajaxSend, stop there + if ( completed ) { + return jqXHR; + } + + // Timeout + if ( s.async && s.timeout > 0 ) { + timeoutTimer = window.setTimeout( function() { + jqXHR.abort( "timeout" ); + }, s.timeout ); + } + + try { + completed = false; + transport.send( requestHeaders, done ); + } catch ( e ) { + + // Rethrow post-completion exceptions + if ( completed ) { + throw e; + } + + // Propagate others as results + done( -1, e ); + } + } + + // Callback for when everything is done + function done( status, nativeStatusText, responses, headers ) { + var isSuccess, success, error, response, modified, + statusText = nativeStatusText; + + // Ignore repeat invocations + if ( completed ) { + return; + } + + completed = true; + + // Clear timeout if it exists + if ( timeoutTimer ) { + window.clearTimeout( timeoutTimer ); + } + + // Dereference transport for early garbage collection + // (no matter how long the jqXHR object will be used) + transport = undefined; + + // Cache response headers + responseHeadersString = headers || ""; + + // Set readyState + jqXHR.readyState = status > 0 ? 4 : 0; + + // Determine if successful + isSuccess = status >= 200 && status < 300 || status === 304; + + // Get response data + if ( responses ) { + response = ajaxHandleResponses( s, jqXHR, responses ); + } + + // Convert no matter what (that way responseXXX fields are always set) + response = ajaxConvert( s, response, jqXHR, isSuccess ); + + // If successful, handle type chaining + if ( isSuccess ) { + + // Set the If-Modified-Since and/or If-None-Match header, if in ifModified mode. + if ( s.ifModified ) { + modified = jqXHR.getResponseHeader( "Last-Modified" ); + if ( modified ) { + jQuery.lastModified[ cacheURL ] = modified; + } + modified = jqXHR.getResponseHeader( "etag" ); + if ( modified ) { + jQuery.etag[ cacheURL ] = modified; + } + } + + // if no content + if ( status === 204 || s.type === "HEAD" ) { + statusText = "nocontent"; + + // if not modified + } else if ( status === 304 ) { + statusText = "notmodified"; + + // If we have data, let's convert it + } else { + statusText = response.state; + success = response.data; + error = response.error; + isSuccess = !error; + } + } else { + + // Extract error from statusText and normalize for non-aborts + error = statusText; + if ( status || !statusText ) { + statusText = "error"; + if ( status < 0 ) { + status = 0; + } + } + } + + // Set data for the fake xhr object + jqXHR.status = status; + jqXHR.statusText = ( nativeStatusText || statusText ) + ""; + + // Success/Error + if ( isSuccess ) { + deferred.resolveWith( callbackContext, [ success, statusText, jqXHR ] ); + } else { + deferred.rejectWith( callbackContext, [ jqXHR, statusText, error ] ); + } + + // Status-dependent callbacks + jqXHR.statusCode( statusCode ); + statusCode = undefined; + + if ( fireGlobals ) { + globalEventContext.trigger( isSuccess ? "ajaxSuccess" : "ajaxError", + [ jqXHR, s, isSuccess ? success : error ] ); + } + + // Complete + completeDeferred.fireWith( callbackContext, [ jqXHR, statusText ] ); + + if ( fireGlobals ) { + globalEventContext.trigger( "ajaxComplete", [ jqXHR, s ] ); + + // Handle the global AJAX counter + if ( !( --jQuery.active ) ) { + jQuery.event.trigger( "ajaxStop" ); + } + } + } + + return jqXHR; + }, + + getJSON: function( url, data, callback ) { + return jQuery.get( url, data, callback, "json" ); + }, + + getScript: function( url, callback ) { + return jQuery.get( url, undefined, callback, "script" ); + } +} ); + +jQuery.each( [ "get", "post" ], function( i, method ) { + jQuery[ method ] = function( url, data, callback, type ) { + + // Shift arguments if data argument was omitted + if ( jQuery.isFunction( data ) ) { + type = type || callback; + callback = data; + data = undefined; + } + + // The url can be an options object (which then must have .url) + return jQuery.ajax( jQuery.extend( { + url: url, + type: method, + dataType: type, + data: data, + success: callback + }, jQuery.isPlainObject( url ) && url ) ); + }; +} ); + + +jQuery._evalUrl = function( url ) { + return jQuery.ajax( { + url: url, + + // Make this explicit, since user can override this through ajaxSetup (#11264) + type: "GET", + dataType: "script", + cache: true, + async: false, + global: false, + "throws": true + } ); +}; + + +jQuery.fn.extend( { + wrapAll: function( html ) { + var wrap; + + if ( this[ 0 ] ) { + if ( jQuery.isFunction( html ) ) { + html = html.call( this[ 0 ] ); + } + + // The elements to wrap the target around + wrap = jQuery( html, this[ 0 ].ownerDocument ).eq( 0 ).clone( true ); + + if ( this[ 0 ].parentNode ) { + wrap.insertBefore( this[ 0 ] ); + } + + wrap.map( function() { + var elem = this; + + while ( elem.firstElementChild ) { + elem = elem.firstElementChild; + } + + return elem; + } ).append( this ); + } + + return this; + }, + + wrapInner: function( html ) { + if ( jQuery.isFunction( html ) ) { + return this.each( function( i ) { + jQuery( this ).wrapInner( html.call( this, i ) ); + } ); + } + + return this.each( function() { + var self = jQuery( this ), + contents = self.contents(); + + if ( contents.length ) { + contents.wrapAll( html ); + + } else { + self.append( html ); + } + } ); + }, + + wrap: function( html ) { + var isFunction = jQuery.isFunction( html ); + + return this.each( function( i ) { + jQuery( this ).wrapAll( isFunction ? html.call( this, i ) : html ); + } ); + }, + + unwrap: function( selector ) { + this.parent( selector ).not( "body" ).each( function() { + jQuery( this ).replaceWith( this.childNodes ); + } ); + return this; + } +} ); + + +jQuery.expr.pseudos.hidden = function( elem ) { + return !jQuery.expr.pseudos.visible( elem ); +}; +jQuery.expr.pseudos.visible = function( elem ) { + return !!( elem.offsetWidth || elem.offsetHeight || elem.getClientRects().length ); +}; + + + + +jQuery.ajaxSettings.xhr = function() { + try { + return new window.XMLHttpRequest(); + } catch ( e ) {} +}; + +var xhrSuccessStatus = { + + // File protocol always yields status code 0, assume 200 + 0: 200, + + // Support: IE <=9 only + // #1450: sometimes IE returns 1223 when it should be 204 + 1223: 204 + }, + xhrSupported = jQuery.ajaxSettings.xhr(); + +support.cors = !!xhrSupported && ( "withCredentials" in xhrSupported ); +support.ajax = xhrSupported = !!xhrSupported; + +jQuery.ajaxTransport( function( options ) { + var callback, errorCallback; + + // Cross domain only allowed if supported through XMLHttpRequest + if ( support.cors || xhrSupported && !options.crossDomain ) { + return { + send: function( headers, complete ) { + var i, + xhr = options.xhr(); + + xhr.open( + options.type, + options.url, + options.async, + options.username, + options.password + ); + + // Apply custom fields if provided + if ( options.xhrFields ) { + for ( i in options.xhrFields ) { + xhr[ i ] = options.xhrFields[ i ]; + } + } + + // Override mime type if needed + if ( options.mimeType && xhr.overrideMimeType ) { + xhr.overrideMimeType( options.mimeType ); + } + + // X-Requested-With header + // For cross-domain requests, seeing as conditions for a preflight are + // akin to a jigsaw puzzle, we simply never set it to be sure. + // (it can always be set on a per-request basis or even using ajaxSetup) + // For same-domain requests, won't change header if already provided. + if ( !options.crossDomain && !headers[ "X-Requested-With" ] ) { + headers[ "X-Requested-With" ] = "XMLHttpRequest"; + } + + // Set headers + for ( i in headers ) { + xhr.setRequestHeader( i, headers[ i ] ); + } + + // Callback + callback = function( type ) { + return function() { + if ( callback ) { + callback = errorCallback = xhr.onload = + xhr.onerror = xhr.onabort = xhr.onreadystatechange = null; + + if ( type === "abort" ) { + xhr.abort(); + } else if ( type === "error" ) { + + // Support: IE <=9 only + // On a manual native abort, IE9 throws + // errors on any property access that is not readyState + if ( typeof xhr.status !== "number" ) { + complete( 0, "error" ); + } else { + complete( + + // File: protocol always yields status 0; see #8605, #14207 + xhr.status, + xhr.statusText + ); + } + } else { + complete( + xhrSuccessStatus[ xhr.status ] || xhr.status, + xhr.statusText, + + // Support: IE <=9 only + // IE9 has no XHR2 but throws on binary (trac-11426) + // For XHR2 non-text, let the caller handle it (gh-2498) + ( xhr.responseType || "text" ) !== "text" || + typeof xhr.responseText !== "string" ? + { binary: xhr.response } : + { text: xhr.responseText }, + xhr.getAllResponseHeaders() + ); + } + } + }; + }; + + // Listen to events + xhr.onload = callback(); + errorCallback = xhr.onerror = callback( "error" ); + + // Support: IE 9 only + // Use onreadystatechange to replace onabort + // to handle uncaught aborts + if ( xhr.onabort !== undefined ) { + xhr.onabort = errorCallback; + } else { + xhr.onreadystatechange = function() { + + // Check readyState before timeout as it changes + if ( xhr.readyState === 4 ) { + + // Allow onerror to be called first, + // but that will not handle a native abort + // Also, save errorCallback to a variable + // as xhr.onerror cannot be accessed + window.setTimeout( function() { + if ( callback ) { + errorCallback(); + } + } ); + } + }; + } + + // Create the abort callback + callback = callback( "abort" ); + + try { + + // Do send the request (this may raise an exception) + xhr.send( options.hasContent && options.data || null ); + } catch ( e ) { + + // #14683: Only rethrow if this hasn't been notified as an error yet + if ( callback ) { + throw e; + } + } + }, + + abort: function() { + if ( callback ) { + callback(); + } + } + }; + } +} ); + + + + +// Prevent auto-execution of scripts when no explicit dataType was provided (See gh-2432) +jQuery.ajaxPrefilter( function( s ) { + if ( s.crossDomain ) { + s.contents.script = false; + } +} ); + +// Install script dataType +jQuery.ajaxSetup( { + accepts: { + script: "text/javascript, application/javascript, " + + "application/ecmascript, application/x-ecmascript" + }, + contents: { + script: /\b(?:java|ecma)script\b/ + }, + converters: { + "text script": function( text ) { + jQuery.globalEval( text ); + return text; + } + } +} ); + +// Handle cache's special case and crossDomain +jQuery.ajaxPrefilter( "script", function( s ) { + if ( s.cache === undefined ) { + s.cache = false; + } + if ( s.crossDomain ) { + s.type = "GET"; + } +} ); + +// Bind script tag hack transport +jQuery.ajaxTransport( "script", function( s ) { + + // This transport only deals with cross domain requests + if ( s.crossDomain ) { + var script, callback; + return { + send: function( _, complete ) { + script = jQuery( " + + + + + + +
+ + + + +
+ + + + + +
+ +
+ + + + + + + + + + + + + + + + + +
+ + + + +
+
+
+
+ +
+

com package

+
+

Subpackages

+
+ +
+
+
+ + +
+ +
+ + +
+
+ +
+ +
+ + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/vmc/com.vmware.html b/vmc/com.vmware.html new file mode 100644 index 00000000..a292b124 --- /dev/null +++ b/vmc/com.vmware.html @@ -0,0 +1,405 @@ + + + + + + + + + + + com.vmware package — VMware Cloud on AWS Console API 1.2.0 documentation + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + + + +
+ + + + + +
+ +
+ + + + + + + + + + + + + + + + + +
+ + + + +
+
+
+
+ +
+

com.vmware package

+
+

Subpackages

+
+ +
+
+
+

Submodules

+
+
+

com.vmware.vmc_client module

+
+
+class com.vmware.vmc_client.Orgs(config)
+

Bases: vmware.vapi.bindings.stub.VapiInterface

+ +++ + + + +
Parameters:config (vmware.vapi.bindings.stub.StubConfiguration) – Configuration to be used for creating the stub.
+
+
+get(org)
+

Get details of organization

+ +++ + + + + + + + + + + + + + +
Parameters:org (str) – Organization identifier. (required)
Return type:com.vmware.vmc.model_client.Organization
Returns:com.vmware.vmc.model.Organization
Raise:com.vmware.vapi.std.errors_client.Unauthorized +Forbidden
Raise:com.vmware.vapi.std.errors_client.NotFound +Organization doesn’t exist
Raise:com.vmware.vapi.std.errors_client.Unauthenticated +Unauthorized
+
+ +
+
+list()
+

Return a list of all organizations the calling user (based on +credential) is authorized on.

+ +++ + + + + + + + + + +
Return type:list of com.vmware.vmc.model_client.Organization
Returns:
Raise:com.vmware.vapi.std.errors_client.Unauthorized +Forbidden
Raise:com.vmware.vapi.std.errors_client.Unauthenticated +Unauthorized
+
+ +
+ +
+
+class com.vmware.vmc_client.StubFactory(stub_config)
+

Bases: vmware.vapi.bindings.stub.StubFactoryBase

+

Initialize StubFactoryBase

+ +++ + + + +
Parameters:stub_config (vmware.vapi.bindings.stub.StubConfiguration) – Stub config instance
+
+ +
+
+ + +
+ +
+ + +
+
+ +
+ +
+ + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/vmc/com.vmware.vmc.html b/vmc/com.vmware.vmc.html new file mode 100644 index 00000000..4138f264 --- /dev/null +++ b/vmc/com.vmware.vmc.html @@ -0,0 +1,6371 @@ + + + + + + + + + + + com.vmware.vmc package — VMware Cloud on AWS Console API 1.2.0 documentation + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + + + +
+ + + + + +
+ +
+ + + + + + + + + + + + + + + + + +
+ + + + +
+
+
+
+ +
+

com.vmware.vmc package

+
+

Subpackages

+
+ +
+
+
+

Submodules

+
+
+

com.vmware.vmc.model_client module

+
+
+class com.vmware.vmc.model_client.AbstractEntity(updated=None, user_id=None, updated_by_user_id=None, created=None, version=None, updated_by_user_name=None, user_name=None, id=None)
+

Bases: vmware.vapi.bindings.struct.VapiStruct

+
+

Tip

+

The arguments are used to initialize data attributes with the same +names.

+
+ +++ + + + +
Parameters:
    +
  • updated (datetime.datetime) –
  • +
  • user_id (str) – User id that last updated this record
  • +
  • updated_by_user_id (str) – User id that last updated this record
  • +
  • created (datetime.datetime) –
  • +
  • version (long) – Version of this entity format: int32
  • +
  • updated_by_user_name (str or None) – User name that last updated this record
  • +
  • user_name (str) – User name that last updated this record
  • +
  • id (str) – Unique ID for this entity
  • +
+
+
+ +
+
+class com.vmware.vmc.model_client.AccountLinkConfig(delay_account_link=None)
+

Bases: vmware.vapi.bindings.struct.VapiStruct

+
+

Tip

+

The arguments are used to initialize data attributes with the same +names.

+
+ +++ + + + +
Parameters:delay_account_link (bool or None) – Boolean flag identifying whether account linking should be delayed +or not for the SDDC.
+
+ +
+
+class com.vmware.vmc.model_client.AccountLinkSddcConfig(customer_subnet_ids=None, connected_account_id=None)
+

Bases: vmware.vapi.bindings.struct.VapiStruct

+
+

Tip

+

The arguments are used to initialize data attributes with the same +names.

+
+ +++ + + + +
Parameters:
    +
  • customer_subnet_ids (list of str or None) –
  • +
  • connected_account_id (str or None) – The ID of the customer connected account to work with.
  • +
+
+
+ +
+
+class com.vmware.vmc.model_client.AddressFWSourceDestination(exclude=None, ip_address=None, grouping_object_id=None, vnic_group_id=None)
+

Bases: vmware.vapi.bindings.struct.VapiStruct

+

Source or Destination for firewall rule. Default is ‘any’.

+
+

Tip

+

The arguments are used to initialize data attributes with the same +names.

+
+ +++ + + + +
Parameters:
    +
  • exclude (bool or None) – Exclude the specified source or destination.
  • +
  • ip_address (list of str or None) – List of string. Can specify single IP address, range of IP address, +or in CIDR format. Can define multiple.
  • +
  • grouping_object_id (list of str or None) – List of string. Id of cluster, datacenter, distributedPortGroup, +legacyPortGroup, VirtualMachine, vApp, resourcePool, logicalSwitch, +IPSet, securityGroup. Can define multiple.
  • +
  • vnic_group_id (list of str or None) – List of string. Possible values are vnic-index-[1-9], vse, external +or internal. Can define multiple.
  • +
+
+
+ +
+
+class com.vmware.vmc.model_client.Agent(addresses=None, healthy=None, custom_properties=None, last_health_status_change=None, internal_ip=None, reserved_ip=None, network_netmask=None, network_gateway=None, provider='Agent', agent_url=None, network_cidr=None, id=None)
+

Bases: vmware.vapi.bindings.struct.VapiStruct

+
+

Tip

+

The arguments are used to initialize data attributes with the same +names.

+
+ +++ + + + +
Parameters:
    +
  • addresses (list of str or None) –
  • +
  • healthy (bool or None) –
  • +
  • custom_properties ((dict of str and str) or None) –
  • +
  • last_health_status_change (long or None) –
  • +
  • internal_ip (str or None) –
  • +
  • reserved_ip (str or None) –
  • +
  • network_netmask (str or None) –
  • +
  • network_gateway (str or None) –
  • +
  • provider (str) –
  • +
  • agent_url (str or None) –
  • +
  • network_cidr (str or None) –
  • +
  • id (str or None) –
  • +
+
+
+ +
+
+class com.vmware.vmc.model_client.AmiInfo(region=None, id=None, name=None)
+

Bases: vmware.vapi.bindings.struct.VapiStruct

+

the AmiInfo used for deploying esx of the sddc

+
+

Tip

+

The arguments are used to initialize data attributes with the same +names.

+
+ +++ + + + +
Parameters:
    +
  • region (str or None) – the region of the esx ami
  • +
  • id (str or None) – the ami id for the esx
  • +
  • name (str or None) – the name of the esx ami
  • +
+
+
+ +
+
+class com.vmware.vmc.model_client.AppliancesSummary(data_store_moid_of_active_vse=None, enable_fips=None, host_name_of_active_vse=None, vm_build_info=None, deploy_appliances=None, communication_channel=None, vm_name_of_active_vse=None, number_of_deployed_vms=None, resource_pool_moid_of_active_vse=None, data_store_name_of_active_vse=None, vm_moid_of_active_vse=None, status_from_vse_updated_on=None, fqdn=None, appliance_size=None, resource_pool_name_of_active_vse=None, active_vse_ha_index=None, vm_version=None, host_moid_of_active_vse=None)
+

Bases: vmware.vapi.bindings.struct.VapiStruct

+

NSX Edge appliance summary.

+
+

Tip

+

The arguments are used to initialize data attributes with the same +names.

+
+ +++ + + + +
Parameters:
    +
  • data_store_moid_of_active_vse (str or None) – vCenter MOID of the active NSX Edge appliance’s data store.
  • +
  • enable_fips (bool or None) – Value is true if FIPS is enabled on NSX Edge appliance.
  • +
  • host_name_of_active_vse (str or None) – Host name of the active NSX Edge appliance.
  • +
  • vm_build_info (str or None) – NSX Edge appliance build version.
  • +
  • deploy_appliances (bool or None) – Value is true if NSX Edge appliances are to be deployed.
  • +
  • communication_channel (str or None) – Communication channel used to communicate with NSX Edge appliance.
  • +
  • vm_name_of_active_vse (str or None) – Name of the active NSX Edge appliance.
  • +
  • number_of_deployed_vms (long or None) – Number of deployed appliances of the NSX Edge. format: int32
  • +
  • resource_pool_moid_of_active_vse (str or None) – vCenter MOID of the active NSX Edge appliance’s resource +pool/cluster. Can be resource pool ID, e.g. resgroup-15 or cluster +ID, e.g. domain-c41.
  • +
  • data_store_name_of_active_vse (str or None) – Datastore name of the active NSX Edge appliance.
  • +
  • vm_moid_of_active_vse (str or None) – vCenter MOID of the active NSX Edge appliance.
  • +
  • status_from_vse_updated_on (long or None) – Time stamp value when healthcheck status was last updated for the +NSX Edge appliance. format: int64
  • +
  • fqdn (str or None) – FQDN of the NSX Edge.
  • +
  • appliance_size (str or None) – NSX Edge appliance size.
  • +
  • resource_pool_name_of_active_vse (str or None) – Resource Pool/Cluster name of the active NSX Edge appliance.
  • +
  • active_vse_ha_index (long or None) – HA index of the active NSX Edge appliance. format: int32
  • +
  • vm_version (str or None) – NSX Edge appliance version.
  • +
  • host_moid_of_active_vse (str or None) – vCenter MOID of the active NSX Edge appliance’s host.
  • +
+
+
+ +
+
+class com.vmware.vmc.model_client.Application(application_id=None, service=None)
+

Bases: vmware.vapi.bindings.struct.VapiStruct

+

Application for firewall rule

+
+

Tip

+

The arguments are used to initialize data attributes with the same +names.

+
+ +++ + + + +
Parameters:
    +
  • application_id (list of str or None) – List of string. Id of service or serviceGroup groupingObject. Can +define multiple.
  • +
  • service (list of Nsxfirewallservice or None) – List of protocol and ports. Can define multiple.
  • +
+
+
+ +
+
+class com.vmware.vmc.model_client.AwsAgent(instance_id=None, key_pair=None, addresses=None, healthy=None, custom_properties=None, last_health_status_change=None, internal_ip=None, reserved_ip=None, network_netmask=None, network_gateway=None, provider='AWS', agent_url=None, network_cidr=None, id=None)
+

Bases: vmware.vapi.bindings.struct.VapiStruct

+
+

Tip

+

The arguments are used to initialize data attributes with the same +names.

+
+ +++ + + + +
Parameters:
    +
  • instance_id (str or None) –
  • +
  • key_pair (AwsKeyPair or None) –
  • +
  • addresses (list of str or None) –
  • +
  • healthy (bool or None) –
  • +
  • custom_properties ((dict of str and str) or None) –
  • +
  • last_health_status_change (long or None) –
  • +
  • internal_ip (str or None) –
  • +
  • reserved_ip (str or None) –
  • +
  • network_netmask (str or None) –
  • +
  • network_gateway (str or None) –
  • +
  • provider (str) –
  • +
  • agent_url (str or None) –
  • +
  • network_cidr (str or None) –
  • +
  • id (str or None) –
  • +
+
+
+ +
+
+class com.vmware.vmc.model_client.AwsCloudProvider(regions=None, provider='AWS')
+

Bases: vmware.vapi.bindings.struct.VapiStruct

+
+

Tip

+

The arguments are used to initialize data attributes with the same +names.

+
+ +++ + + + +
Parameters:
    +
  • regions (list of str or None) –
  • +
  • provider (str) – Name of the Cloud Provider
  • +
+
+
+ +
+
+class com.vmware.vmc.model_client.AwsCompatibleSubnets(customer_available_zones=None, vpc_map=None)
+

Bases: vmware.vapi.bindings.struct.VapiStruct

+
+

Tip

+

The arguments are used to initialize data attributes with the same +names.

+
+ +++ + + + +
Parameters:
    +
  • customer_available_zones (list of str or None) –
  • +
  • vpc_map (vmware.vapi.struct.VapiStruct or None) –
  • +
+
+
+ +
+
+class com.vmware.vmc.model_client.AwsCustomerConnectedAccount(updated=None, user_id=None, updated_by_user_id=None, created=None, version=None, updated_by_user_name=None, user_name=None, id=None, policy_payer_arn=None, account_number=None, policy_external_id=None, region_to_az_to_shadow_mapping=None, org_id=None, cf_stack_name=None, policy_service_arn=None)
+

Bases: vmware.vapi.bindings.struct.VapiStruct

+
+

Tip

+

The arguments are used to initialize data attributes with the same +names.

+
+ +++ + + + +
Parameters:
    +
  • updated (datetime.datetime) –
  • +
  • user_id (str) – User id that last updated this record
  • +
  • updated_by_user_id (str) – User id that last updated this record
  • +
  • created (datetime.datetime) –
  • +
  • version (long) – Version of this entity format: int32
  • +
  • updated_by_user_name (str or None) – User name that last updated this record
  • +
  • user_name (str) – User name that last updated this record
  • +
  • id (str) – Unique ID for this entity
  • +
  • policy_payer_arn (str or None) –
  • +
  • account_number (str or None) –
  • +
  • policy_external_id (str or None) –
  • +
  • region_to_az_to_shadow_mapping (vmware.vapi.struct.VapiStruct or None) – Provides a map of regions to availability zones from the shadow +account’s perspective
  • +
  • org_id (str or None) –
  • +
  • cf_stack_name (str or None) –
  • +
  • policy_service_arn (str or None) –
  • +
+
+
+ +
+
+class com.vmware.vmc.model_client.AwsEsxHost(internal_public_ip_pool=None, name=None, availability_zone=None, esx_id=None, hostname=None, provider='AWS', mac_address=None, custom_properties=None, esx_state=None)
+

Bases: vmware.vapi.bindings.struct.VapiStruct

+
+

Tip

+

The arguments are used to initialize data attributes with the same +names.

+
+ +++ + + + +
Parameters: +
+
+ +
+
+class com.vmware.vmc.model_client.AwsKeyPair(key_name=None, key_fingerprint=None, key_material=None)
+

Bases: vmware.vapi.bindings.struct.VapiStruct

+
+

Tip

+

The arguments are used to initialize data attributes with the same +names.

+
+ +++ + + + +
Parameters:
    +
  • key_name (str or None) –
  • +
  • key_fingerprint (str or None) –
  • +
  • key_material (str or None) –
  • +
+
+
+ +
+
+class com.vmware.vmc.model_client.AwsOrgConfiguration(provider='AWS')
+

Bases: vmware.vapi.bindings.struct.VapiStruct

+
+

Tip

+

The arguments are used to initialize data attributes with the same +names.

+
+ +++ + + + +
Parameters:provider (str) –

Possible values are:

+ +
+
Discriminator for provider specific properties
+
+
+ +
+
+class com.vmware.vmc.model_client.AwsSddcConfig(region=None, vpc_name=None, name=None, account_link_sddc_config=None, vpc_cidr=None, num_hosts=None, sddc_type=None, vxlan_subnet=None, account_link_config=None, provider='AWS', sso_domain=None, sddc_template_id=None, deployment_type=None)
+

Bases: vmware.vapi.bindings.struct.VapiStruct

+
+

Tip

+

The arguments are used to initialize data attributes with the same +names.

+
+ +++ + + + +
Parameters:
    +
  • region (str) –
  • +
  • vpc_name (str or None) –
  • +
  • name (str) –
  • +
  • account_link_sddc_config (list of AccountLinkSddcConfig or None) – A list of the SDDC linking configurations to use.
  • +
  • vpc_cidr (str or None) – AWS VPC IP range. Only prefix of 16 or 20 is currently supported.
  • +
  • num_hosts (long) –
  • +
  • sddc_type (str or None) – Denotes the sddc type , if the value is null or empty, the type is +considered as default.
  • +
  • vxlan_subnet (str or None) – VXLAN IP subnet
  • +
  • account_link_config (AccountLinkConfig or None) – The account linking configuration, we will keep this one and remove +accountLinkSddcConfig finally.
  • +
  • provider (str) –

    Possible values are:

    + +

    Determines what additional properties are available based on cloud +provider.

    +
  • +
  • sso_domain (str or None) – The SSO domain name to use for vSphere users. If not specified, +vmc.local will be used.
  • +
  • sddc_template_id (str or None) – If provided, configuration from the template will applied to the +provisioned SDDC. format: UUID
  • +
  • deployment_type (str or None) –

    Possible values are:

    + +

    Denotes if request is for a SingleAZ or a MultiAZ SDDC. Default is +SingleAZ.

    +
  • +
+
+
+ +
+
+class com.vmware.vmc.model_client.AwsSddcConnection(updated=None, user_id=None, updated_by_user_id=None, created=None, version=None, updated_by_user_name=None, user_name=None, id=None, cidr_block_subnet=None, connected_account_id=None, eni_group=None, subnet_id=None, org_id=None, sddc_id=None, cidr_block_vpc=None, subnet_availability_zone=None, vpc_id=None, is_cgw_present=None, customer_eni_infos=None, default_route_table=None)
+

Bases: vmware.vapi.bindings.struct.VapiStruct

+
+

Tip

+

The arguments are used to initialize data attributes with the same +names.

+
+ +++ + + + +
Parameters:
    +
  • updated (datetime.datetime) –
  • +
  • user_id (str) – User id that last updated this record
  • +
  • updated_by_user_id (str) – User id that last updated this record
  • +
  • created (datetime.datetime) –
  • +
  • version (long) – Version of this entity format: int32
  • +
  • updated_by_user_name (str or None) – User name that last updated this record
  • +
  • user_name (str) – User name that last updated this record
  • +
  • id (str) – Unique ID for this entity
  • +
  • cidr_block_subnet (str or None) –
  • +
  • connected_account_id (str or None) –
  • +
  • eni_group (str or None) –
  • +
  • subnet_id (str or None) –
  • +
  • org_id (str or None) –
  • +
  • sddc_id (str or None) –
  • +
  • cidr_block_vpc (str or None) –
  • +
  • subnet_availability_zone (str or None) –
  • +
  • vpc_id (str or None) –
  • +
  • is_cgw_present (bool or None) –
  • +
  • customer_eni_infos (list of str or None) –
  • +
  • default_route_table (str or None) –
  • +
+
+
+ +
+
+class com.vmware.vmc.model_client.AwsSddcResourceConfig(account_link_sddc_config=None, public_ip_pool=None, region=None, vpc_info=None, max_num_public_ip=None, vpc_info_peered_agent=None, backup_restore_bucket=None, nsxt=None, mgw_id=None, nsx_mgr_url=None, psc_management_ip=None, psc_url=None, cgws=None, availability_zones=None, management_ds=None, custom_properties=None, cloud_password=None, provider='AWS', clusters=None, vc_management_ip=None, sddc_networks=None, cloud_username=None, esx_hosts=None, nsx_mgr_management_ip=None, vc_instance_id=None, esx_cluster_id=None, vc_public_ip=None, vc_url=None, sddc_manifest=None, vxlan_subnet=None, cloud_user_group=None, management_rp=None, witness_availability_zone=None, sso_domain=None, deployment_type=None, dns_with_management_vm_private_ip=None)
+

Bases: vmware.vapi.bindings.struct.VapiStruct

+
+

Tip

+

The arguments are used to initialize data attributes with the same +names.

+
+ +++ + + + +
Parameters:
    +
  • account_link_sddc_config (list of SddcLinkConfig or None) –
  • +
  • public_ip_pool (list of SddcPublicIp or None) –
  • +
  • region (str or None) –
  • +
  • vpc_info (VpcInfo or None) –
  • +
  • max_num_public_ip (long or None) – maximum number of public IP that user can allocate.
  • +
  • vpc_info_peered_agent (VpcInfo or None) –
  • +
  • backup_restore_bucket (str or None) –
  • +
  • nsxt (bool or None) – if true, NSX-T UI is enabled.
  • +
  • mgw_id (str or None) – Management Gateway Id
  • +
  • nsx_mgr_url (str or None) – URL of the NSX Manager
  • +
  • psc_management_ip (str or None) – PSC internal management IP
  • +
  • psc_url (str or None) – URL of the PSC server
  • +
  • cgws (list of str or None) –
  • +
  • availability_zones (list of str or None) – Availability zones over which esx hosts are provisioned. MultiAZ +SDDCs will have hosts provisioned over two availability zones while +SingleAZ SDDCs will provision over one.
  • +
  • management_ds (str or None) – The ManagedObjectReference of the management Datastore
  • +
  • custom_properties ((dict of str and str) or None) –
  • +
  • cloud_password (str or None) – Password for vCenter SDDC administrator
  • +
  • provider (str) –

    Possible values are:

    + +
    +
    Discriminator for additional properties
    +
  • +
  • clusters (list of vmware.vapi.struct.VapiStruct or None) – List of clusters in the SDDC. +When clients pass a value of this class as a parameter, the +attribute must contain all the attributes defined in +Cluster. When methods return a value of this class as a +return value, the attribute will contain all the attributes defined +in Cluster.
  • +
  • vc_management_ip (str or None) – vCenter internal management IP
  • +
  • sddc_networks (list of str or None) –
  • +
  • cloud_username (str or None) – Username for vCenter SDDC administrator
  • +
  • esx_hosts (list of AwsEsxHost or None) –
  • +
  • nsx_mgr_management_ip (str or None) – NSX Manager internal management IP
  • +
  • vc_instance_id (str or None) – unique id of the vCenter server
  • +
  • esx_cluster_id (str or None) – Cluster Id to add ESX workflow
  • +
  • vc_public_ip (str or None) – vCenter public IP
  • +
  • vc_url (str or None) – URL of the vCenter server
  • +
  • sddc_manifest (SddcManifest or None) –
  • +
  • vxlan_subnet (str or None) – VXLAN IP subnet
  • +
  • cloud_user_group (str or None) – Group name for vCenter SDDC administrator
  • +
  • management_rp (str or None) –
  • +
  • witness_availability_zone (str or None) – Availability zone where the witness node is provisioned for a +MultiAZ SDDC. This is null for a SingleAZ SDDC.
  • +
  • sso_domain (str or None) – The SSO domain name to use for vSphere users
  • +
  • deployment_type (str or None) –

    Possible values are:

    + +
    +
    Denotes if this is a SingleAZ SDDC or a MultiAZ SDDC.
    +
  • +
  • dns_with_management_vm_private_ip (bool or None) – if true, use the private IP addresses to register DNS records for +the management VMs
  • +
+
+
+ +
+
+class com.vmware.vmc.model_client.AwsSubnet(connected_account_id=None, region_name=None, availability_zone=None, subnet_id=None, subnet_cidr_block=None, is_compatible=None, vpc_id=None, vpc_cidr_block=None, name=None)
+

Bases: vmware.vapi.bindings.struct.VapiStruct

+
+

Tip

+

The arguments are used to initialize data attributes with the same +names.

+
+ +++ + + + +
Parameters:
    +
  • connected_account_id (str or None) – The connected account ID this subnet is accessible through. This is +an internal ID formatted as a UUID specific to Skyscraper.
  • +
  • region_name (str or None) – The region this subnet is in, usually in the form of country code, +general location, and a number (ex. us-west-2).
  • +
  • availability_zone (str or None) – The availability zone this subnet is in, which should be the region +name plus one extra letter (ex. us-west-2a).
  • +
  • subnet_id (str or None) – The subnet ID in AWS, provided in the form ‘subnet-######’.
  • +
  • subnet_cidr_block (str or None) – The CIDR block of the subnet, in the form of ‘#.#.#.#/#’.
  • +
  • is_compatible (bool or None) – Flag indicating whether this subnet is compatible. If true, this is +a valid choice for the customer to deploy a SDDC in.
  • +
  • vpc_id (str or None) – The VPC ID the subnet resides in within AWS. Tends to be +‘vpc-#######’.
  • +
  • vpc_cidr_block (str or None) – The CIDR block of the VPC, in the form of ‘#.#.#.#/#’.
  • +
  • name (str or None) – Optional field (may not be provided by AWS), indicates the found +name tag for the subnet.
  • +
+
+
+ +
+
+class com.vmware.vmc.model_client.CaCertificates(ca_certificate=None)
+

Bases: vmware.vapi.bindings.struct.VapiStruct

+

CA certificate list. Optional.

+
+

Tip

+

The arguments are used to initialize data attributes with the same +names.

+
+ +++ + + + +
Parameters:ca_certificate (list of str or None) –
+
+ +
+
+class com.vmware.vmc.model_client.CbmStatistic(vnic=None, timestamp=None, out=None, in_=None)
+

Bases: vmware.vapi.bindings.struct.VapiStruct

+

Statistics data for each vnic.

+
+

Tip

+

The arguments are used to initialize data attributes with the same +names.

+
+ +++ + + + +
Parameters:
    +
  • vnic (long or None) – Vnic index. format: int32
  • +
  • timestamp (long or None) – Timestamp value. format: int64
  • +
  • out (float or None) – Tx rate (Kilobits per second - kbps) format: double
  • +
  • in (float or None) – Rx rate (Kilobits per second - kbps) format: double
  • +
+
+
+ +
+
+class com.vmware.vmc.model_client.CbmStatistics(data_dto=None, meta_dto=None)
+

Bases: vmware.vapi.bindings.struct.VapiStruct

+

NSX Edge Interface Statistics.

+
+

Tip

+

The arguments are used to initialize data attributes with the same +names.

+
+ +++ + + + +
Parameters: +
+
+ +
+
+class com.vmware.vmc.model_client.CbmStatsData(vnic9=None, vnic8=None, vnic7=None, vnic6=None, vnic5=None, vnic4=None, vnic3=None, vnic2=None, vnic1=None, vnic0=None)
+

Bases: vmware.vapi.bindings.struct.VapiStruct

+

Statistics data.

+
+

Tip

+

The arguments are used to initialize data attributes with the same +names.

+
+ +++ + + + +
Parameters: +
+
+ +
+
+class com.vmware.vmc.model_client.CloudProvider(provider='CloudProvider')
+

Bases: vmware.vapi.bindings.struct.VapiStruct

+
+

Tip

+

The arguments are used to initialize data attributes with the same +names.

+
+ +++ + + + +
Parameters:provider (str) – Name of the Cloud Provider
+
+ +
+
+class com.vmware.vmc.model_client.Cluster(cluster_name=None, esx_host_list=None, cluster_id='Cluster', cluster_state=None)
+

Bases: vmware.vapi.bindings.struct.VapiStruct

+
+

Tip

+

The arguments are used to initialize data attributes with the same +names.

+
+ +++ + + + +
Parameters: +
+
+
+CLUSTER_STATE_ADDING_HOSTS = 'ADDING_HOSTS'
+
+ +
+
+CLUSTER_STATE_DEPLOYING = 'DEPLOYING'
+
+ +
+
+CLUSTER_STATE_FAILED = 'FAILED'
+
+ +
+
+CLUSTER_STATE_READY = 'READY'
+
+ +
+ +
+
+class com.vmware.vmc.model_client.ClusterConfig(num_hosts=None)
+

Bases: vmware.vapi.bindings.struct.VapiStruct

+
+

Tip

+

The arguments are used to initialize data attributes with the same +names.

+
+ +++ + + + +
Parameters:num_hosts (long) –
+
+ +
+
+class com.vmware.vmc.model_client.ComputeGatewayTemplate(public_ip=None, primary_dns=None, secondary_dns=None, firewall_rules=None, vpns=None, logical_networks=None, nat_rules=None, l2_vpn=None)
+

Bases: vmware.vapi.bindings.struct.VapiStruct

+
+

Tip

+

The arguments are used to initialize data attributes with the same +names.

+
+ +++ + + + +
Parameters:
    +
  • public_ip (SddcPublicIp or None) –
  • +
  • primary_dns (str or None) –
  • +
  • secondary_dns (str or None) –
  • +
  • firewall_rules (list of FirewallRule or None) –
  • +
  • vpns (list of Vpn or None) –
  • +
  • logical_networks (list of LogicalNetwork or None) –
  • +
  • nat_rules (list of NatRule or None) –
  • +
  • l2_vpn (vmware.vapi.struct.VapiStruct or None) –
  • +
+
+
+ +
+
+class com.vmware.vmc.model_client.CrlCertificates(crl_certificate=None)
+

Bases: vmware.vapi.bindings.struct.VapiStruct

+

CRL certificate list. Optional.

+
+

Tip

+

The arguments are used to initialize data attributes with the same +names.

+
+ +++ + + + +
Parameters:crl_certificate (list of str or None) –
+
+ +
+
+class com.vmware.vmc.model_client.DashboardData(firewall=None, sslvpn=None, interfaces=None, load_balancer=None, ipsec=None)
+

Bases: vmware.vapi.bindings.struct.VapiStruct

+

Dashboard Statistics data.

+
+

Tip

+

The arguments are used to initialize data attributes with the same +names.

+
+ +++ + + + +
Parameters: +
+
+ +
+
+class com.vmware.vmc.model_client.DashboardStat(timestamp=None, value=None)
+

Bases: vmware.vapi.bindings.struct.VapiStruct

+
+

Tip

+

The arguments are used to initialize data attributes with the same +names.

+
+ +++ + + + +
Parameters:
    +
  • timestamp (long or None) –
  • +
  • value (float or None) –
  • +
+
+
+ +
+
+class com.vmware.vmc.model_client.DashboardStatistics(data_dto=None, meta_dto=None)
+

Bases: vmware.vapi.bindings.struct.VapiStruct

+

Dashboard Statistics data.

+
+

Tip

+

The arguments are used to initialize data attributes with the same +names.

+
+ +++ + + + +
Parameters: +
+
+ +
+
+class com.vmware.vmc.model_client.DataPageEdgeSummary(paging_info=None, data=None)
+

Bases: vmware.vapi.bindings.struct.VapiStruct

+
+

Tip

+

The arguments are used to initialize data attributes with the same +names.

+
+ +++ + + + +
Parameters: +
+
+ +
+
+class com.vmware.vmc.model_client.DataPageSddcNetwork(paging_info=None, data=None)
+

Bases: vmware.vapi.bindings.struct.VapiStruct

+
+

Tip

+

The arguments are used to initialize data attributes with the same +names.

+
+ +++ + + + +
Parameters: +
+
+ +
+
+class com.vmware.vmc.model_client.DataPermissions(save_permission=None, publish_permission=None)
+

Bases: vmware.vapi.bindings.struct.VapiStruct

+
+

Tip

+

The arguments are used to initialize data attributes with the same +names.

+
+ +++ + + + +
Parameters:
    +
  • save_permission (bool or None) –
  • +
  • publish_permission (bool or None) –
  • +
+
+
+ +
+
+class com.vmware.vmc.model_client.DhcpLeaseInfo(host_lease_info_dtos=None)
+

Bases: vmware.vapi.bindings.struct.VapiStruct

+

DHCP lease information.

+
+

Tip

+

The arguments are used to initialize data attributes with the same +names.

+
+ +++ + + + +
Parameters:host_lease_info_dtos (list of HostLeaseInfo or None) – List of DHCP leases.
+
+ +
+
+class com.vmware.vmc.model_client.DhcpLeases(time_stamp=None, host_lease_infos_dto=None)
+

Bases: vmware.vapi.bindings.struct.VapiStruct

+

DHCP leases information

+
+

Tip

+

The arguments are used to initialize data attributes with the same +names.

+
+ +++ + + + +
Parameters:
    +
  • time_stamp (long or None) – The timestamp of the DHCP lease. format: int64
  • +
  • host_lease_infos_dto (DhcpLeaseInfo or None) – DHCP lease information.
  • +
+
+
+ +
+
+class com.vmware.vmc.model_client.DnsConfig(feature_type=None, logging=None, enabled=None, dns_views=None, listeners=None, version=None, template=None, cache_size=None, dns_servers=None)
+

Bases: vmware.vapi.bindings.struct.VapiStruct

+

DNS configuration

+
+

Tip

+

The arguments are used to initialize data attributes with the same +names.

+
+ +++ + + + +
Parameters:
    +
  • feature_type (str or None) –
  • +
  • logging (Logging or None) – DNS logging setting.
  • +
  • enabled (bool or None) – Value is true if feature is enabled. Default value is true. +Optional.
  • +
  • dns_views (DnsViews or None) – List of DNS views.
  • +
  • listeners (DnsListeners or None) – List of DNS listeners.
  • +
  • version (long or None) – Version number tracking each configuration change. To avoid +problems with overwriting changes, always retrieve and modify the +latest configuration to include the current version number in your +request. If you provide a version number which is not current, the +request is rejected. If you omit the version number, the request is +accepted but may overwrite any current changes if your change is +not in sync with the latest change. format: int64
  • +
  • template (str or None) –
  • +
  • cache_size (long or None) – The cache size of the DNS service. format: int64
  • +
  • dns_servers (IpAddresses or None) –
  • +
+
+
+ +
+
+class com.vmware.vmc.model_client.DnsForwarders(ip_address=None)
+

Bases: vmware.vapi.bindings.struct.VapiStruct

+

DNS forwarders.

+
+

Tip

+

The arguments are used to initialize data attributes with the same +names.

+
+ +++ + + + +
Parameters:ip_address (list of str or None) – IP addresses of the DNS servers.
+
+ +
+
+class com.vmware.vmc.model_client.DnsListeners(ip_address=None, vnic=None, type=None)
+

Bases: vmware.vapi.bindings.struct.VapiStruct

+
+

Tip

+

The arguments are used to initialize data attributes with the same +names.

+
+ +++ + + + +
Parameters:
    +
  • ip_address (list of str or None) – List of IP addresses.
  • +
  • vnic (list of str or None) – Vnic for DNS listener.
  • +
  • type (str or None) –
  • +
+
+
+ +
+
+class com.vmware.vmc.model_client.DnsResponseStats(total=None, form_err=None, nx_domain=None, success=None, server_fail=None, nxrrset=None, others=None)
+

Bases: vmware.vapi.bindings.struct.VapiStruct

+

DNS response statistics.

+
+

Tip

+

The arguments are used to initialize data attributes with the same +names.

+
+ +++ + + + +
Parameters:
    +
  • total (long or None) –
  • +
  • form_err (long or None) –
  • +
  • nx_domain (long or None) –
  • +
  • success (long or None) –
  • +
  • server_fail (long or None) –
  • +
  • nxrrset (long or None) –
  • +
  • others (long or None) –
  • +
+
+
+ +
+
+class com.vmware.vmc.model_client.DnsStatusAndStats(time_stamp=None, requests=None, responses=None, cached_dbrr_set=None)
+

Bases: vmware.vapi.bindings.struct.VapiStruct

+

DNS statistics.

+
+

Tip

+

The arguments are used to initialize data attributes with the same +names.

+
+ +++ + + + +
Parameters:
    +
  • time_stamp (long or None) –
  • +
  • requests (Requests or None) –
  • +
  • responses (DnsResponseStats or None) –
  • +
  • cached_dbrr_set (long or None) –
  • +
+
+
+ +
+
+class com.vmware.vmc.model_client.DnsView(name=None, view_match=None, recursion=None, view_id=None, forwarders=None, enabled=None)
+

Bases: vmware.vapi.bindings.struct.VapiStruct

+

DNS View

+
+

Tip

+

The arguments are used to initialize data attributes with the same +names.

+
+ +++ + + + +
Parameters:
    +
  • name (str) – Name of the DNS view.
  • +
  • view_match (DnsViewMatch or None) – Rules that match the DNS query to this view. The rule can be +ipAddress, or ipSet. Defaults to ipAddress ‘any’ and ‘any’ vnic.
  • +
  • recursion (bool or None) – Recursion enabled on DNS view.
  • +
  • view_id (str or None) – Identifier for the DNS view.
  • +
  • forwarders (DnsForwarders or None) – DNS forwarders.
  • +
  • enabled (bool or None) – DNS view is enabled.
  • +
+
+
+ +
+
+class com.vmware.vmc.model_client.DnsViewMatch(vnic=None, ip_set=None, ip_address=None)
+

Bases: vmware.vapi.bindings.struct.VapiStruct

+

Dns view match

+
+

Tip

+

The arguments are used to initialize data attributes with the same +names.

+
+ +++ + + + +
Parameters:
    +
  • vnic (list of str or None) –
  • +
  • ip_set (list of str or None) –
  • +
  • ip_address (list of str or None) –
  • +
+
+
+ +
+
+class com.vmware.vmc.model_client.DnsViews(dns_view=None)
+

Bases: vmware.vapi.bindings.struct.VapiStruct

+

DNS views.

+
+

Tip

+

The arguments are used to initialize data attributes with the same +names.

+
+ +++ + + + +
Parameters:dns_view (list of DnsView or None) – List of DNS views.
+
+ +
+
+class com.vmware.vmc.model_client.EdgeJob(status=None, edge_id=None, module=None, job_id=None, error_code=None, result=None, start_time=None, message=None, end_time=None)
+

Bases: vmware.vapi.bindings.struct.VapiStruct

+

Job status information for the configuration change carried out on NSX +Edge.

+
+

Tip

+

The arguments are used to initialize data attributes with the same +names.

+
+ +++ + + + +
Parameters:
    +
  • status (str or None) – Job status.
  • +
  • edge_id (str or None) – NSX Edge ID.
  • +
  • module (str or None) – Module information.
  • +
  • job_id (str or None) – Job ID.
  • +
  • error_code (str or None) – Error code identifying the failure of the configuration change.
  • +
  • result (list of Result or None) – Job result information.
  • +
  • start_time (datetime.datetime or None) – Job start time. format: date-time
  • +
  • message (str or None) – Job message.
  • +
  • end_time (datetime.datetime or None) – Job end time. format: date-time
  • +
+
+
+ +
+
+class com.vmware.vmc.model_client.EdgeStatus(pre_rules_exists=None, feature_statuses=None, timestamp=None, publish_status=None, last_published_pre_rules_generation_number=None, version=None, edge_vm_status=None, active_vse_ha_index=None, system_status=None, ha_vnic_in_use=None, edge_status=None)
+

Bases: vmware.vapi.bindings.struct.VapiStruct

+

NSX Edge Appliance status.

+
+

Tip

+

The arguments are used to initialize data attributes with the same +names.

+
+ +++ + + + +
Parameters:
    +
  • pre_rules_exists (bool or None) – Value is true if pre rules publish is enabled.
  • +
  • feature_statuses (list of FeatureStatus or None) – Individual feature status.
  • +
  • timestamp (long or None) – Timestamp value at which the NSX Edge healthcheck was done. format: +int64
  • +
  • publish_status (str or None) – Status of the latest configuration change for the NSX Edge. Values +are APPLIED or PERSISTED (not published to NSX Edge Appliance yet).
  • +
  • last_published_pre_rules_generation_number (long or None) – Value of the last published pre rules generation number. format: +int64
  • +
  • version (long or None) – Version number of the current configuration. format: int64
  • +
  • edge_vm_status (list of EdgeVmStatus or None) – Detailed status of each of the deployed NSX Edge appliances.
  • +
  • active_vse_ha_index (long or None) – Index of the active NSX Edge appliance. Values are 0 and 1. format: +int32
  • +
  • system_status (str or None) – System status of the active NSX Edge appliance.
  • +
  • ha_vnic_in_use (long or None) – Index of the vnic consumed for NSX Edge HA. format: int32
  • +
  • edge_status (str or None) – NSX Edge appliance health status identified by GREY (unknown +status), GREEN (health checks are successful), YELLOW (intermittent +health check failure), RED (none of the appliances are in serving +state). If health check fails for 5 consecutive times for all +appliance (2 for HA else 1) then status will turn from YELLOW to +RED.
  • +
+
+
+ +
+
+class com.vmware.vmc.model_client.EdgeSummary(feature_capabilities=None, edge_type=None, logical_router_scopes=None, recent_job_info=None, hypervisor_assist=None, edge_assist_id=None, edge_status=None, edge_assist_instance_name=None, object_id=None, node_id=None, id=None, datacenter_name=None, state=None, client_handle=None, scope=None, type=None, revision=None, vsm_uuid=None, description=None, extended_attributes=None, local_egress_enabled=None, universal_revision=None, allowed_actions=None, object_type_name=None, is_upgrade_available=None, is_universal=None, name=None, lrouter_uuid=None, appliances_summary=None, api_version=None, tenant_id=None, datacenter_moid=None, number_of_connected_vnics=None)
+

Bases: vmware.vapi.bindings.struct.VapiStruct

+

NSX Edge summary. Read only.

+
+

Tip

+

The arguments are used to initialize data attributes with the same +names.

+
+ +++ + + + +
Parameters:
    +
  • feature_capabilities (FeatureCapabilities or None) – List of Features and their capability details based on Edge +appliance form factor.
  • +
  • edge_type (str or None) – NSX Edge type, whether ‘gatewayServices’ or ‘distributedRouter’.
  • +
  • logical_router_scopes (LogicalRouterScopes or None) – Backing type scope (DistributedVirtualSwitch - VLAN, TransportZone +-VXLAN) and its ID for the Distributed Logical Router.
  • +
  • recent_job_info (EdgeJob or None) – Job information for the most recent configuration change carried +out on the NSX Edge.
  • +
  • hypervisor_assist (bool or None) –
  • +
  • edge_assist_id (long or None) – ID generated by NSX Manager for Distributed Logical Router only. +format: int64
  • +
  • edge_status (str or None) – NSX Edge appliance health status identified by GREY (unknown +status), GREEN (health checks are successful), YELLOW (intermittent +health check failure), RED (none of the appliances are in serving +state). If health check fails for 5 consecutive times for all +appliance (2 for HA else 1) then status will turn from YELLOW to +RED.
  • +
  • edge_assist_instance_name (str or None) – Name derived by NSX Manager only for Distributed Logical Router.
  • +
  • object_id (str or None) –
  • +
  • node_id (str or None) –
  • +
  • id (str or None) – NSX Edge ID.
  • +
  • datacenter_name (str or None) – Datacenter name where the NSX Edge is deployed.
  • +
  • state (str or None) – Deployment state of the NSX Edge appliance. Values are ‘deployed’ +when VMs have been deployed, ‘undeployed’ when no VMs are deployed +and ‘active’ when Edge type is Distributed Logical Router and has +no appliance deployed but is serving data path.
  • +
  • client_handle (str or None) –
  • +
  • scope (ScopeInfo or None) –
  • +
  • type (ObjectType or None) –
  • +
  • revision (long or None) –
  • +
  • vsm_uuid (str or None) –
  • +
  • description (str or None) –
  • +
  • extended_attributes (list of ExtendedAttribute or None) –
  • +
  • local_egress_enabled (bool or None) – Value is true if local egress is enabled for UDLR traffic. +Applicable only for Universal Distributed Logical Router.
  • +
  • universal_revision (long or None) –
  • +
  • allowed_actions (list of str or None) –
  • +
  • object_type_name (str or None) –
  • +
  • is_upgrade_available (bool or None) – Value is true if NSX Edge upgrade is available.
  • +
  • is_universal (bool or None) –
  • +
  • name (str or None) –
  • +
  • lrouter_uuid (str or None) – Distributed Logical Router UUID provided by the NSX Controller.
  • +
  • appliances_summary (AppliancesSummary or None) – NSX Edge appliance summary.
  • +
  • api_version (str or None) – REST API version applicable for the NSX Edge.
  • +
  • tenant_id (str or None) – Tenant ID for the NSX Edge.
  • +
  • datacenter_moid (str or None) – vCenter MOID of the datacenter where the NSX Edge is deployed.
  • +
  • number_of_connected_vnics (long or None) – Number of connected vnics that are configured on the NSX Edge. +format: int32
  • +
+
+
+ +
+
+class com.vmware.vmc.model_client.EdgeVmStatus(index=None, ha_state=None, name=None, id=None, edge_vm_status=None, pre_rules_generation_number=None)
+

Bases: vmware.vapi.bindings.struct.VapiStruct

+

Status of each of the deployed NSX Edge appliances.

+
+

Tip

+

The arguments are used to initialize data attributes with the same +names.

+
+ +++ + + + +
Parameters:
    +
  • index (long or None) – High Availability index of the appliance. Values are 0 and 1. +format: int32
  • +
  • ha_state (str or None) – High Availability state of the appliance. Values are active and +standby.
  • +
  • name (str or None) – Name of the NSX Edge appliance.
  • +
  • id (str or None) – vCenter MOID of the NSX Edge appliance.
  • +
  • edge_vm_status (str or None) – NSX Edge appliance health status identified by GREY (unknown +status), GREEN (health checks are successful), YELLOW (intermittent +health check failure), RED (appliance not in serving state).
  • +
  • pre_rules_generation_number (long or None) – Value of the last published pre rules generation number. format: +int64
  • +
+
+
+ +
+
+class com.vmware.vmc.model_client.EdgeVnicAddressGroup(subnet_prefix_length=None, secondary_addresses=None, primary_address=None, subnet_mask=None)
+

Bases: vmware.vapi.bindings.struct.VapiStruct

+

Address group configuration of the NSX Edge vnic. An interface can have one +primary and multiple secondary IP addresses.

+
+

Tip

+

The arguments are used to initialize data attributes with the same +names.

+
+ +++ + + + +
Parameters:
    +
  • subnet_prefix_length (str or None) – Subnet prefix length of the primary IP address.
  • +
  • secondary_addresses (SecondaryAddresses or None) – Secondary IP addresses of the NSX Edge vnic address group. +Optional.
  • +
  • primary_address (str or None) – Primary IP address of the vnic interface. Required.
  • +
  • subnet_mask (str or None) –
  • +
+
+
+ +
+
+class com.vmware.vmc.model_client.EdgeVnicAddressGroups(address_groups=None)
+

Bases: vmware.vapi.bindings.struct.VapiStruct

+

NSX Edge vnic address group configuration details.

+
+

Tip

+

The arguments are used to initialize data attributes with the same +names.

+
+ +++ + + + +
Parameters:address_groups (list of EdgeVnicAddressGroup or None) – Address group configuration of the NSX Edge vnic. Vnic can be +configured to have more than one address group/subnets.
+
+ +
+
+class com.vmware.vmc.model_client.ErrorResponse(status=None, path=None, retryable=None, error_code=None, error_messages=None)
+

Bases: vmware.vapi.bindings.struct.VapiStruct

+
+

Tip

+

The arguments are used to initialize data attributes with the same +names.

+
+ +++ + + + +
Parameters:
    +
  • status (long) – HTTP status code
  • +
  • path (str) – Originating request URI
  • +
  • retryable (bool) – If true, client should retry operation
  • +
  • error_code (str) – unique error code
  • +
  • error_messages (list of str) – localized error messages
  • +
+
+
+ +
+
+class com.vmware.vmc.model_client.EsxConfig(num_hosts=None, availability_zone=None)
+

Bases: vmware.vapi.bindings.struct.VapiStruct

+
+

Tip

+

The arguments are used to initialize data attributes with the same +names.

+
+ +++ + + + +
Parameters:
    +
  • num_hosts (long) –
  • +
  • availability_zone (str or None) – Availability zone where the hosts should be provisioned. (Can be +specified only for privileged host operations).
  • +
+
+
+ +
+
+class com.vmware.vmc.model_client.EsxHost(name=None, availability_zone=None, esx_id=None, hostname=None, provider='EsxHost', mac_address=None, custom_properties=None, esx_state=None)
+

Bases: vmware.vapi.bindings.struct.VapiStruct

+
+

Tip

+

The arguments are used to initialize data attributes with the same +names.

+
+ +++ + + + +
Parameters: +
+
+
+ESX_STATE_DELETED = 'DELETED'
+
+ +
+
+ESX_STATE_DELETING = 'DELETING'
+
+ +
+
+ESX_STATE_DEPLOYING = 'DEPLOYING'
+
+ +
+
+ESX_STATE_FAILED = 'FAILED'
+
+ +
+
+ESX_STATE_PROVISIONED = 'PROVISIONED'
+
+ +
+
+ESX_STATE_READY = 'READY'
+
+ +
+ +
+
+class com.vmware.vmc.model_client.ExtendedAttribute(name=None, value=None)
+

Bases: vmware.vapi.bindings.struct.VapiStruct

+
+

Tip

+

The arguments are used to initialize data attributes with the same +names.

+
+ +++ + + + +
Parameters:
    +
  • name (str or None) –
  • +
  • value (str or None) –
  • +
+
+
+ +
+
+class com.vmware.vmc.model_client.FeatureCapabilities(timestamp=None, feature_capabilities=None)
+

Bases: vmware.vapi.bindings.struct.VapiStruct

+

List of features and their capability details based on NSX Edge appliance +form factor.

+
+

Tip

+

The arguments are used to initialize data attributes with the same +names.

+
+ +++ + + + +
Parameters:
    +
  • timestamp (long or None) – Time stamp value at which the feature capabilities were retrieved. +format: int64
  • +
  • feature_capabilities (list of FeatureCapability or None) – List of feature capability information.
  • +
+
+
+ +
+
+class com.vmware.vmc.model_client.FeatureCapability(configuration_limits=None, is_supported=None, service=None, permission=None)
+

Bases: vmware.vapi.bindings.struct.VapiStruct

+

Feature capability information.

+
+

Tip

+

The arguments are used to initialize data attributes with the same +names.

+
+ +++ + + + +
Parameters:
    +
  • configuration_limits (list of KeyValueAttributes or None) – List of key value pairs describing the feature configuration +limits.
  • +
  • is_supported (bool or None) – Value is true if feature is supported on NSX Edge.
  • +
  • service (str or None) – Name of the feature or service.
  • +
  • permission (LicenceAclPermissions or None) – Licence and access control information for the feature.
  • +
+
+
+ +
+
+class com.vmware.vmc.model_client.FeatureStatus(status=None, configured=None, server_status=None, publish_status=None, service=None)
+

Bases: vmware.vapi.bindings.struct.VapiStruct

+

Individual feature status.

+
+

Tip

+

The arguments are used to initialize data attributes with the same +names.

+
+ +++ + + + +
Parameters:
    +
  • status (str or None) – Status of the feature or service.
  • +
  • configured (bool or None) – Value is true if feature is configured.
  • +
  • server_status (str or None) – Server status of the feature or service. Values are up and down.
  • +
  • publish_status (str or None) – Publish status of the feature, whether APPLIED or PERSISTED.
  • +
  • service (str or None) – Name of the feature or service.
  • +
+
+
+ +
+
+class com.vmware.vmc.model_client.FirewallConfig(firewall_rules=None, feature_type=None, version=None, template=None, global_config=None, enabled=None, default_policy=None)
+

Bases: vmware.vapi.bindings.struct.VapiStruct

+

Firewall Configuration

+
+

Tip

+

The arguments are used to initialize data attributes with the same +names.

+
+ +++ + + + +
Parameters:
    +
  • firewall_rules (FirewallRules or None) – Ordered list of firewall rules.
  • +
  • feature_type (str or None) –
  • +
  • version (long or None) – Version number tracking each configuration change. To avoid +problems with overwriting changes, always retrieve and modify the +latest configuration to include the current version number in your +request. If you provide a version number which is not current, the +request is rejected. If you omit the version number, the request is +accepted but may overwrite any current changes if your change is +not in sync with the latest change. format: int64
  • +
  • template (str or None) –
  • +
  • global_config (FirewallGlobalConfig or None) – Global configuration applicable to all rules.
  • +
  • enabled (bool or None) – Value is true if feature is enabled. Default value is true. +Optional.
  • +
  • default_policy (FirewallDefaultPolicy or None) – Default Policy.
  • +
+
+
+ +
+
+class com.vmware.vmc.model_client.FirewallDashboardStats(connections=None)
+

Bases: vmware.vapi.bindings.struct.VapiStruct

+

Dashboard Statistics data for Firewall.

+
+

Tip

+

The arguments are used to initialize data attributes with the same +names.

+
+ +++ + + + +
Parameters:connections (list of DashboardStat or None) – Number of NSX Edge firewall connections and rules.
+
+ +
+
+class com.vmware.vmc.model_client.FirewallDefaultPolicy(action=None, logging_enabled=None)
+

Bases: vmware.vapi.bindings.struct.VapiStruct

+

Firewall default policy. Default is deny.

+
+

Tip

+

The arguments are used to initialize data attributes with the same +names.

+
+ +++ + + + +
Parameters:
    +
  • action (str or None) – Action. Default is deny. Supported values accept, deny
  • +
  • logging_enabled (bool or None) – Enable logging for the rule.
  • +
+
+
+ +
+
+class com.vmware.vmc.model_client.FirewallGlobalConfig(tcp_allow_out_of_window_packets=None, udp_timeout=None, ip_generic_timeout=None, tcp_pick_ongoing_connections=None, tcp_timeout_open=None, tcp_timeout_close=None, icmp6_timeout=None, drop_icmp_replays=None, log_icmp_errors=None, tcp_send_reset_for_closed_vse_ports=None, drop_invalid_traffic=None, enable_syn_flood_protection=None, icmp_timeout=None, tcp_timeout_established=None, log_invalid_traffic=None)
+

Bases: vmware.vapi.bindings.struct.VapiStruct

+

Global configuration applicable to all rules.

+
+

Tip

+

The arguments are used to initialize data attributes with the same +names.

+
+ +++ + + + +
Parameters:
    +
  • tcp_allow_out_of_window_packets (bool or None) – Allow TCP out of window packets.
  • +
  • udp_timeout (long or None) – UDP timeout close. format: int32
  • +
  • ip_generic_timeout (long or None) – IP generic timeout. format: int32
  • +
  • tcp_pick_ongoing_connections (bool or None) – Pick TCP ongoing connections.
  • +
  • tcp_timeout_open (long or None) – TCP timeout open. format: int32
  • +
  • tcp_timeout_close (long or None) – TCP timeout close. format: int32
  • +
  • icmp6_timeout (long or None) – ICMP6 timeout. format: int32
  • +
  • drop_icmp_replays (bool or None) – Drop icmp replays.
  • +
  • log_icmp_errors (bool or None) – Log icmp errors.
  • +
  • tcp_send_reset_for_closed_vse_ports (bool or None) – Send TCP reset for closed NSX Edge ports.
  • +
  • drop_invalid_traffic (bool or None) – Drop invalid traffic.
  • +
  • enable_syn_flood_protection (bool or None) – Protect against SYN flood attacks by detecting bogus TCP +connections and terminating them without consuming firewall state +tracking resources. Default : false
  • +
  • icmp_timeout (long or None) – ICMP timeout. format: int32
  • +
  • tcp_timeout_established (long or None) – TCP timeout established. format: int32
  • +
  • log_invalid_traffic (bool or None) – Log invalid traffic.
  • +
+
+
+ +
+
+class com.vmware.vmc.model_client.FirewallRule(rule_type=None, application_ids=None, name=None, rule_interface=None, destination=None, id=None, destination_scope=None, source=None, source_scope=None, services=None, action=None, revision=None)
+

Bases: vmware.vapi.bindings.struct.VapiStruct

+
+

Tip

+

The arguments are used to initialize data attributes with the same +names.

+
+ +++ + + + +
Parameters:
    +
  • rule_type (str or None) –

    Possible values are:

    + +
  • +
  • application_ids (list of str or None) –
  • +
  • name (str or None) –
  • +
  • rule_interface (str or None) – Deprecated, left for backwards compatibility. Remove once UI stops +using it.
  • +
  • destination (str or None) – Optional. Possible formats are IP, IP1-IPn, CIDR or comma separated +list of those entries. If not specified, defaults to ‘any’.
  • +
  • id (str or None) –
  • +
  • destination_scope (FirewallRuleScope or None) –
  • +
  • source (str or None) – Optional. Possible formats are IP, IP1-IPn, CIDR or comma separated +list of those entries. If not specified, defaults to ‘any’.
  • +
  • source_scope (FirewallRuleScope or None) –
  • +
  • services (list of FirewallService or None) – list of protocols and ports for this firewall rule
  • +
  • action (str or None) –

    Possible values are:

    + +
  • +
  • revision (long or None) – current revision of the list of firewall rules, used to protect +against concurrent modification (first writer wins) format: int32 +This attribute may be present in responses from the server, but if +it is present in a request to server it will be ignored.
  • +
+
+
+
+ACTION_ALLOW = 'ALLOW'
+
+ +
+
+ACTION_DENY = 'DENY'
+
+ +
+
+RULE_TYPE_DEFAULT = 'DEFAULT'
+
+ +
+
+RULE_TYPE_USER = 'USER'
+
+ +
+ +
+
+class com.vmware.vmc.model_client.FirewallRuleScope(grouping_object_ids=None, vnic_group_ids=None)
+

Bases: vmware.vapi.bindings.struct.VapiStruct

+

Optional for FirewallRule. If not specified, defaults to ‘any’.

+
+

Tip

+

The arguments are used to initialize data attributes with the same +names.

+
+ +++ + + + +
Parameters: +
+
+
+VNIC_GROUP_IDS_EXTERNAL = 'external'
+
+ +
+
+VNIC_GROUP_IDS_INTERNAL = 'internal'
+
+ +
+
+VNIC_GROUP_IDS_VNIC_INDEX_0 = 'vnic-index-0'
+
+ +
+
+VNIC_GROUP_IDS_VNIC_INDEX_1 = 'vnic-index-1'
+
+ +
+
+VNIC_GROUP_IDS_VNIC_INDEX_2 = 'vnic-index-2'
+
+ +
+
+VNIC_GROUP_IDS_VNIC_INDEX_3 = 'vnic-index-3'
+
+ +
+
+VNIC_GROUP_IDS_VNIC_INDEX_4 = 'vnic-index-4'
+
+ +
+
+VNIC_GROUP_IDS_VNIC_INDEX_5 = 'vnic-index-5'
+
+ +
+
+VNIC_GROUP_IDS_VNIC_INDEX_6 = 'vnic-index-6'
+
+ +
+
+VNIC_GROUP_IDS_VNIC_INDEX_7 = 'vnic-index-7'
+
+ +
+
+VNIC_GROUP_IDS_VNIC_INDEX_8 = 'vnic-index-8'
+
+ +
+
+VNIC_GROUP_IDS_VNIC_INDEX_9 = 'vnic-index-9'
+
+ +
+
+VNIC_GROUP_IDS_VSE = 'vse'
+
+ +
+ +
+
+class com.vmware.vmc.model_client.FirewallRuleStats(timestamp=None, connection_count=None, byte_count=None, packet_count=None)
+

Bases: vmware.vapi.bindings.struct.VapiStruct

+

Statistics for firewall rule

+
+

Tip

+

The arguments are used to initialize data attributes with the same +names.

+
+ +++ + + + +
Parameters:
    +
  • timestamp (long or None) – Timestamp of statistics collection. format: int64
  • +
  • connection_count (long or None) – Connection count. format: int64
  • +
  • byte_count (long or None) – Byte count. format: int64
  • +
  • packet_count (long or None) – Packet count. format: int64
  • +
+
+
+ +
+
+class com.vmware.vmc.model_client.FirewallRules(firewall_rules=None)
+

Bases: vmware.vapi.bindings.struct.VapiStruct

+

Ordered list of firewall rules.

+
+

Tip

+

The arguments are used to initialize data attributes with the same +names.

+
+ +++ + + + +
Parameters:firewall_rules (list of Nsxfirewallrule or None) – Ordered list of firewall rules.
+
+ +
+
+class com.vmware.vmc.model_client.FirewallService(protocol=None, ports=None)
+

Bases: vmware.vapi.bindings.struct.VapiStruct

+
+

Tip

+

The arguments are used to initialize data attributes with the same +names.

+
+ +++ + + + +
Parameters:
    +
  • protocol (str or None) – protocol name, such as ‘tcp’, ‘udp’ etc.
  • +
  • ports (list of str or None) – a list of port numbers and port ranges, such as {80, 91-95, 99}. If +not specified, defaults to ‘any’.
  • +
+
+
+ +
+
+class com.vmware.vmc.model_client.GatewayTemplate(public_ip=None, primary_dns=None, secondary_dns=None, firewall_rules=None, vpns=None)
+

Bases: vmware.vapi.bindings.struct.VapiStruct

+

Describes common properties for MGW and CGW configuration templates

+
+

Tip

+

The arguments are used to initialize data attributes with the same +names.

+
+ +++ + + + +
Parameters:
    +
  • public_ip (SddcPublicIp or None) –
  • +
  • primary_dns (str or None) –
  • +
  • secondary_dns (str or None) –
  • +
  • firewall_rules (list of FirewallRule or None) –
  • +
  • vpns (list of Vpn or None) –
  • +
+
+
+ +
+
+class com.vmware.vmc.model_client.GlcmBundle(s3_bucket=None, id=None)
+

Bases: vmware.vapi.bindings.struct.VapiStruct

+

the GlcmBundle used for deploying the sddc

+
+

Tip

+

The arguments are used to initialize data attributes with the same +names.

+
+ +++ + + + +
Parameters:
    +
  • s3_bucket (str or None) – the glcmbundle’s s3 bucket
  • +
  • id (str or None) – the glcmbundle’s id
  • +
+
+
+ +
+
+class com.vmware.vmc.model_client.HostLeaseInfo(mac_address=None, ends=None, abandoned=None, cltt=None, client_hostname=None, starts=None, binding_state=None, hardware_type=None, tsfp=None, uid=None, next_binding_state=None, ip_address=None, tstp=None)
+

Bases: vmware.vapi.bindings.struct.VapiStruct

+

DHCP lease information.

+
+

Tip

+

The arguments are used to initialize data attributes with the same +names.

+
+ +++ + + + +
Parameters:
    +
  • mac_address (str or None) – MAC address of the client.
  • +
  • ends (str or None) – End time of the lease.
  • +
  • abandoned (str or None) – Time stamp of when IP address was marked as abandoned.
  • +
  • cltt (str or None) – Client Last Transaction Time of the lease info.
  • +
  • client_hostname (str or None) – Name of the client.
  • +
  • starts (str or None) – Start time of the lease.
  • +
  • binding_state (str or None) – Lease’s binding state.
  • +
  • hardware_type (str or None) – The hardware type on which the lease will be used.
  • +
  • tsfp (str or None) – Time Sent From Partner of the lease info.
  • +
  • uid (str or None) – Uid to identify the DHCP lease.
  • +
  • next_binding_state (str or None) – Indicates what state the lease will move to when the current state +expires.
  • +
  • ip_address (str or None) – IP address of the client.
  • +
  • tstp (str or None) – Time Sent To Partner of the lease info.
  • +
+
+
+ +
+
+class com.vmware.vmc.model_client.InteractionPermissions(manage_permission=None, view_permission=None)
+

Bases: vmware.vapi.bindings.struct.VapiStruct

+
+

Tip

+

The arguments are used to initialize data attributes with the same +names.

+
+ +++ + + + +
Parameters:
    +
  • manage_permission (bool or None) –
  • +
  • view_permission (bool or None) –
  • +
+
+
+ +
+
+class com.vmware.vmc.model_client.InterfacesDashboardStats(vnic7_in_pkt=None, vnic0_in_byte=None, vnic8_out_pkt=None, vnic5_in_byte=None, vnic2_in_pkt=None, vnic3_in_pkt=None, vnic6_out_byte=None, vnic3_in_byte=None, vnic8_in_pkt=None, vnic1_in_byte=None, vnic1_out_pkt=None, vnic5_out_byte=None, vnic0_out_pkt=None, vnic0_out_byte=None, vnic6_out_pkt=None, vnic3_out_byte=None, vnic7_in_byte=None, vnic1_out_byte=None, vnic9_out_pkt=None, vnic9_in_pkt=None, vnic4_in_byte=None, vnic5_out_pkt=None, vnic2_out_pkt=None, vnic2_in_byte=None, vnic5_in_pkt=None, vnic7_out_pkt=None, vnic3_out_pkt=None, vnic4_out_pkt=None, vnic4_out_byte=None, vnic1_in_pkt=None, vnic2_out_byte=None, vnic6_in_byte=None, vnic0_in_pkt=None, vnic9_in_byte=None, vnic7_out_byte=None, vnic4_in_pkt=None, vnic9_out_byte=None, vnic8_out_byte=None, vnic8_in_byte=None, vnic6_in_pkt=None)
+

Bases: vmware.vapi.bindings.struct.VapiStruct

+

Dashboard Statistics data for Interfaces.

+
+

Tip

+

The arguments are used to initialize data attributes with the same +names.

+
+ +++ + + + +
Parameters: +
+
+ +
+
+class com.vmware.vmc.model_client.IpAddresses(ip_address=None)
+

Bases: vmware.vapi.bindings.struct.VapiStruct

+

IP address

+
+

Tip

+

The arguments are used to initialize data attributes with the same +names.

+
+ +++ + + + +
Parameters:ip_address (list of str or None) – List of IP addresses.
+
+ +
+
+class com.vmware.vmc.model_client.Ipsec(feature_type=None, logging=None, global_=None, enabled=None, sites=None, disable_event=None, version=None, template=None)
+

Bases: vmware.vapi.bindings.struct.VapiStruct

+

NSX Edge IPsec configuration details.

+
+

Tip

+

The arguments are used to initialize data attributes with the same +names.

+
+ +++ + + + +
Parameters:
    +
  • feature_type (str or None) –
  • +
  • logging (Logging or None) – Configure logging for the feature on NSX Edge appliance. Logging is +disabled by default. Optional.
  • +
  • global (IpsecGlobalConfig or None) – IPsec Global configuration details.
  • +
  • enabled (bool or None) – Value is true if feature is enabled. Default value is true. +Optional.
  • +
  • sites (IpsecSites or None) – IPsec Site configuration details.
  • +
  • disable_event (bool or None) – Enable/disable event generation on NSX Edge appliance for IPsec.
  • +
  • version (long or None) – Version number tracking each configuration change. To avoid +problems with overwriting changes, always retrieve and modify the +latest configuration to include the current version number in your +request. If you provide a version number which is not current, the +request is rejected. If you omit the version number, the request is +accepted but may overwrite any current changes if your change is +not in sync with the latest change. format: int64
  • +
  • template (str or None) –
  • +
+
+
+ +
+
+class com.vmware.vmc.model_client.IpsecDashboardStats(ipsec_bytes_out=None, ipsec_bytes_in=None, ipsec_tunnels=None)
+

Bases: vmware.vapi.bindings.struct.VapiStruct

+

Dashboard Statistics data for Ipsec.

+
+

Tip

+

The arguments are used to initialize data attributes with the same +names.

+
+ +++ + + + +
Parameters:
    +
  • ipsec_bytes_out (list of DashboardStat or None) – Tx transmitted bytes.
  • +
  • ipsec_bytes_in (list of DashboardStat or None) – Rx received bytes.
  • +
  • ipsec_tunnels (list of DashboardStat or None) – Number of Ipsec tunnels.
  • +
+
+
+ +
+
+class com.vmware.vmc.model_client.IpsecGlobalConfig(psk=None, ca_certificates=None, service_certificate=None, crl_certificates=None, extension=None)
+

Bases: vmware.vapi.bindings.struct.VapiStruct

+

IPsec Global configuration details.

+
+

Tip

+

The arguments are used to initialize data attributes with the same +names.

+
+ +++ + + + +
Parameters:
    +
  • psk (str or None) – IPsec Global Pre Shared Key. Maximum characters is 128. Required +when peerIp is configured as ‘any’ in NSX Edge IPsec Site +configuration.
  • +
  • ca_certificates (CaCertificates or None) – CA certificate list. Optional.
  • +
  • service_certificate (str or None) – Certificate name or identifier. Required when x.509 is selected as +the authentication mode.
  • +
  • crl_certificates (CrlCertificates or None) – CRL certificate list. Optional.
  • +
  • extension (str or None) –
  • +
+
+
+ +
+
+class com.vmware.vmc.model_client.IpsecSite(psk=None, local_id=None, enable_pfs=None, authentication_mode=None, peer_subnets=None, dh_group=None, site_id=None, description=None, peer_ip=None, name=None, certificate=None, local_ip=None, encryption_algorithm=None, enabled=None, mtu=None, extension=None, peer_id=None, local_subnets=None)
+

Bases: vmware.vapi.bindings.struct.VapiStruct

+

NSX Edge IPsec Site configuration details.

+
+

Tip

+

The arguments are used to initialize data attributes with the same +names.

+
+ +++ + + + +
Parameters:
    +
  • psk (str or None) – Pre Shared Key for the IPsec Site. Required if Site peerIp is not +‘any’. Global PSK is used when Authentication mode is PSK and Site +peerIp is ‘any’.
  • +
  • local_id (str or None) – Local ID of the IPsec Site. Defaults to the local IP.
  • +
  • enable_pfs (bool or None) – Enable/disable Perfect Forward Secrecy. Default is true.
  • +
  • authentication_mode (str or None) – Authentication mode for the IPsec Site. Valid values are psk and +x.509, with psk as default.
  • +
  • peer_subnets (Subnets or None) – Peer subnets for which IPsec VPN is configured.
  • +
  • dh_group (str or None) – Diffie-Hellman algorithm group. Defaults to DH14 for FIPS enabled +NSX Edge. DH2 and DH5 are not supported when FIPS is enabled on NSX +Edge. Valid values are DH2, DH5, DH14, DH15, DH16.
  • +
  • site_id (str or None) – ID of the IPsec Site configuration provided by NSX Manager.
  • +
  • description (str or None) – Description of the IPsec Site.
  • +
  • peer_ip (str or None) – IP (IPv4) address or FQDN of the Peer. Can also be specified as +‘any’. Required.
  • +
  • name (str or None) – Name of the IPsec Site.
  • +
  • certificate (str or None) –
  • +
  • local_ip (str or None) – Local IP of the IPsec Site. Should be one of the IP addresses +configured on the uplink interfaces of the NSX Edge. Required.
  • +
  • encryption_algorithm (str or None) – IPsec encryption algorithm with default as aes256. Valid values are +‘aes’, ‘aes256’, ‘3des’, ‘aes-gcm’.
  • +
  • enabled (bool or None) – Enable/disable IPsec Site.
  • +
  • mtu (long or None) – MTU for the IPsec site. Defaults to the mtu of the NSX Edge vnic +specified by the localIp. Optional. format: int32
  • +
  • extension (str or None) –
  • +
  • peer_id (str or None) – Peer ID. Should be unique for all IPsec Site’s configured for an +NSX Edge.
  • +
  • local_subnets (Subnets or None) – Local subnets for which IPsec VPN is configured.
  • +
+
+
+ +
+
+class com.vmware.vmc.model_client.IpsecSiteIKEStatus(channel_status=None, channel_state=None, peer_ip_address=None, local_ip_address=None, peer_subnets=None, peer_id=None, last_informational_message=None, local_subnets=None)
+

Bases: vmware.vapi.bindings.struct.VapiStruct

+
+

Tip

+

The arguments are used to initialize data attributes with the same +names.

+
+ +++ + + + +
Parameters:
    +
  • channel_status (str or None) –
  • +
  • channel_state (str or None) –
  • +
  • peer_ip_address (str or None) –
  • +
  • local_ip_address (str or None) –
  • +
  • peer_subnets (list of str or None) –
  • +
  • peer_id (str or None) –
  • +
  • last_informational_message (str or None) –
  • +
  • local_subnets (list of str or None) –
  • +
+
+
+ +
+
+class com.vmware.vmc.model_client.IpsecSiteStats(rx_bytes_on_site=None, tunnel_stats=None, ike_status=None, site_status=None, tx_bytes_from_site=None)
+

Bases: vmware.vapi.bindings.struct.VapiStruct

+
+

Tip

+

The arguments are used to initialize data attributes with the same +names.

+
+ +++ + + + +
Parameters:
    +
  • rx_bytes_on_site (long or None) –
  • +
  • tunnel_stats (list of IpsecTunnelStats or None) –
  • +
  • ike_status (IpsecSiteIKEStatus or None) –
  • +
  • site_status (str or None) –
  • +
  • tx_bytes_from_site (long or None) –
  • +
+
+
+ +
+
+class com.vmware.vmc.model_client.IpsecSites(sites=None)
+

Bases: vmware.vapi.bindings.struct.VapiStruct

+

List of IPsec sites for NSX Edge.

+
+

Tip

+

The arguments are used to initialize data attributes with the same +names.

+
+ +++ + + + +
Parameters:sites (list of IpsecSite or None) –
+
+ +
+
+class com.vmware.vmc.model_client.IpsecStatusAndStats(time_stamp=None, server_status=None, site_statistics=None)
+

Bases: vmware.vapi.bindings.struct.VapiStruct

+
+

Tip

+

The arguments are used to initialize data attributes with the same +names.

+
+ +++ + + + +
Parameters:
    +
  • time_stamp (long or None) –
  • +
  • server_status (str or None) –
  • +
  • site_statistics (list of IpsecSiteStats or None) –
  • +
+
+
+ +
+
+class com.vmware.vmc.model_client.IpsecTunnelStats(tunnel_status=None, peer_spi=None, rx_bytes_on_local_subnet=None, established_date=None, peer_subnet=None, authentication_algorithm=None, tunnel_state=None, tx_bytes_from_local_subnet=None, last_informational_message=None, local_spi=None, encryption_algorithm=None, local_subnet=None)
+

Bases: vmware.vapi.bindings.struct.VapiStruct

+
+

Tip

+

The arguments are used to initialize data attributes with the same +names.

+
+ +++ + + + +
Parameters:
    +
  • tunnel_status (str or None) –
  • +
  • peer_spi (str or None) –
  • +
  • rx_bytes_on_local_subnet (long or None) –
  • +
  • established_date (str or None) –
  • +
  • peer_subnet (str or None) –
  • +
  • authentication_algorithm (str or None) –
  • +
  • tunnel_state (str or None) –
  • +
  • tx_bytes_from_local_subnet (long or None) –
  • +
  • last_informational_message (str or None) –
  • +
  • local_spi (str or None) –
  • +
  • encryption_algorithm (str or None) –
  • +
  • local_subnet (str or None) –
  • +
+
+
+ +
+
+class com.vmware.vmc.model_client.KeyValueAttributes(value=None, key=None)
+

Bases: vmware.vapi.bindings.struct.VapiStruct

+

Key value pair describing the feature configuration limit.

+
+

Tip

+

The arguments are used to initialize data attributes with the same +names.

+
+ +++ + + + +
Parameters:
    +
  • value (str or None) – Value corresponding to the key of the configuration limit +parameter.
  • +
  • key (str or None) – Key name of the configuration limit parameter.
  • +
+
+
+ +
+
+class com.vmware.vmc.model_client.L2Extension(tunnel_id=None)
+

Bases: vmware.vapi.bindings.struct.VapiStruct

+

Layer 2 extension.

+
+

Tip

+

The arguments are used to initialize data attributes with the same +names.

+
+ +++ + + + +
Parameters:tunnel_id (long) – Identifier for layer 2 extension tunnel. Valid range: 1-4093. +format: int32
+
+ +
+
+class com.vmware.vmc.model_client.L2Vpn(enabled=None, sites=None, listener_ip=None)
+

Bases: vmware.vapi.bindings.struct.VapiStruct

+
+

Tip

+

The arguments are used to initialize data attributes with the same +names.

+
+ +++ + + + +
Parameters:
    +
  • enabled (bool or None) – Enable (true) or disable (false) L2 VPN.
  • +
  • sites (list of Site or None) – Array of L2 vpn site config.
  • +
  • listener_ip (str or None) – Public uplink ip address. IP of external interface on which L2VPN +service listens to.
  • +
+
+
+ +
+
+class com.vmware.vmc.model_client.L2vpnStats(tunnel_status=None, established_date=None, name=None, dropped_rx_packets=None, encryption_algorithm=None, failure_message=None, tx_bytes_from_local_subnet=None, rx_bytes_on_local_subnet=None, dropped_tx_packets=None, last_updated_time=None)
+

Bases: vmware.vapi.bindings.struct.VapiStruct

+

L2 VPN status and statistics of a single L2 VPN site.

+
+

Tip

+

The arguments are used to initialize data attributes with the same +names.

+
+ +++ + + + +
Parameters:
    +
  • tunnel_status (str or None) – Status of the tunnel (UP/DOWN).
  • +
  • established_date (long or None) – Tunnel established date. format: int64
  • +
  • name (str or None) – User defined name of the site.
  • +
  • dropped_rx_packets (long or None) – Number of received packets dropped.
  • +
  • encryption_algorithm (str or None) – Cipher used in encryption.
  • +
  • failure_message (str or None) – Reason for the tunnel down.
  • +
  • tx_bytes_from_local_subnet (long or None) – Number of bytes transferred from local subnet.
  • +
  • rx_bytes_on_local_subnet (long or None) – Number of bytes received on the local subnet.
  • +
  • dropped_tx_packets (long or None) – Number of transferred packets dropped.
  • +
  • last_updated_time (long or None) – Time stamp of the statistics collection. format: int64
  • +
+
+
+ +
+
+class com.vmware.vmc.model_client.L2vpnStatusAndStats(time_stamp=None, server_status=None, site_stats=None)
+

Bases: vmware.vapi.bindings.struct.VapiStruct

+

L2 VPN status and statistics.

+
+

Tip

+

The arguments are used to initialize data attributes with the same +names.

+
+ +++ + + + +
Parameters:
    +
  • time_stamp (long or None) – Time stamp of statistics collection. format: int64
  • +
  • server_status (str or None) –
  • +
  • site_stats (list of L2vpnStats or None) – List of statistics for each Site.
  • +
+
+
+ +
+
+class com.vmware.vmc.model_client.LicenceAclPermissions(data_permission=None, is_licensed=None, access_permission=None)
+

Bases: vmware.vapi.bindings.struct.VapiStruct

+

Licence and access control information for the feature.

+
+

Tip

+

The arguments are used to initialize data attributes with the same +names.

+
+ +++ + + + +
Parameters:
    +
  • data_permission (DataPermissions or None) – Data access control information for the feature.
  • +
  • is_licensed (bool or None) – Value is true if feature is licenced.
  • +
  • access_permission (InteractionPermissions or None) – Access control information for the feature.
  • +
+
+
+ +
+
+class com.vmware.vmc.model_client.LoadBalancerDashboardStats(lb_bps_in=None, lb_http_reqs=None, lb_bps_out=None, lb_sessions=None)
+

Bases: vmware.vapi.bindings.struct.VapiStruct

+

Dashboard Statistics data for Load Balancer.

+
+

Tip

+

The arguments are used to initialize data attributes with the same +names.

+
+ +++ + + + +
Parameters:
    +
  • lb_bps_in (list of DashboardStat or None) – Number of bytes in.
  • +
  • lb_http_reqs (list of DashboardStat or None) – Number of HTTP requests received by Load Balancer.
  • +
  • lb_bps_out (list of DashboardStat or None) – Number of bytes out.
  • +
  • lb_sessions (list of DashboardStat or None) – Number of Load Balancer sessions.
  • +
+
+
+ +
+
+class com.vmware.vmc.model_client.Logging(log_level=None, enable=None)
+

Bases: vmware.vapi.bindings.struct.VapiStruct

+

logging.

+
+

Tip

+

The arguments are used to initialize data attributes with the same +names.

+
+ +++ + + + +
Parameters:
    +
  • log_level (str or None) – Log level. Valid values: emergency, alert, critical, error, +warning, notice, info, debug.
  • +
  • enable (bool or None) – Logging enabled.
  • +
+
+
+ +
+
+class com.vmware.vmc.model_client.LogicalNetwork(subnet_cidr=None, name=None, gateway_ip=None, dhcp_enabled=None, dhcp_ip_range=None, tunnel_id=None, id=None, network_type=None)
+

Bases: vmware.vapi.bindings.struct.VapiStruct

+
+

Tip

+

The arguments are used to initialize data attributes with the same +names.

+
+ +++ + + + +
Parameters:
    +
  • subnet_cidr (str or None) – the subnet cidr
  • +
  • name (str or None) – name of the network
  • +
  • gateway_ip (str or None) – gateway ip of the logical network
  • +
  • dhcp_enabled (str or None) – if ‘true’ - enabled; if ‘false’ - disabled
  • +
  • dhcp_ip_range (str or None) – ip range within the subnet mask, range delimiter is ‘-‘ (example +10.118.10.130-10.118.10.140)
  • +
  • tunnel_id (long or None) – tunnel id of extended network format: int32
  • +
  • id (str or None) –
  • +
  • network_type (str or None) –

    Possible values are:

    + +
  • +
+
+
+
+NETWORK_TYPE_EXTENDED = 'EXTENDED'
+
+ +
+
+NETWORK_TYPE_HOSTED = 'HOSTED'
+
+ +
+
+NETWORK_TYPE_ROUTED = 'ROUTED'
+
+ +
+ +
+
+class com.vmware.vmc.model_client.LogicalRouterScope(type=None, id=None)
+

Bases: vmware.vapi.bindings.struct.VapiStruct

+
+

Tip

+

The arguments are used to initialize data attributes with the same +names.

+
+ +++ + + + +
Parameters:
    +
  • type (str or None) –
  • +
  • id (str or None) –
  • +
+
+
+ +
+
+class com.vmware.vmc.model_client.LogicalRouterScopes(logical_router_scope=None)
+

Bases: vmware.vapi.bindings.struct.VapiStruct

+
+

Tip

+

The arguments are used to initialize data attributes with the same +names.

+
+ +++ + + + +
Parameters:logical_router_scope (list of LogicalRouterScope or None) –
+
+ +
+
+class com.vmware.vmc.model_client.MacAddress(edge_vm_ha_index=None, value=None)
+

Bases: vmware.vapi.bindings.struct.VapiStruct

+
+

Tip

+

The arguments are used to initialize data attributes with the same +names.

+
+ +++ + + + +
Parameters:
    +
  • edge_vm_ha_index (long or None) –
  • +
  • value (str or None) –
  • +
+
+
+ +
+
+class com.vmware.vmc.model_client.ManagementGatewayTemplate(public_ip=None, primary_dns=None, secondary_dns=None, firewall_rules=None, vpns=None, subnet_cidr=None)
+

Bases: vmware.vapi.bindings.struct.VapiStruct

+
+

Tip

+

The arguments are used to initialize data attributes with the same +names.

+
+ +++ + + + +
Parameters:
    +
  • public_ip (SddcPublicIp or None) –
  • +
  • primary_dns (str or None) –
  • +
  • secondary_dns (str or None) –
  • +
  • firewall_rules (list of FirewallRule or None) –
  • +
  • vpns (list of Vpn or None) –
  • +
  • subnet_cidr (str or None) – mgw network subnet cidr
  • +
+
+
+ +
+
+class com.vmware.vmc.model_client.MapZonesRequest(connected_account_id=None, org_id=None, petronas_regions_to_map=None)
+

Bases: vmware.vapi.bindings.struct.VapiStruct

+
+

Tip

+

The arguments are used to initialize data attributes with the same +names.

+
+ +++ + + + +
Parameters:
    +
  • connected_account_id (str or None) – The connected account ID to remap. This is a standard UUID.
  • +
  • org_id (str or None) – The org ID to remap in. This is a standard UUID.
  • +
  • petronas_regions_to_map (list of str or None) – A list of Petronas regions to map.
  • +
+
+
+ +
+
+class com.vmware.vmc.model_client.MetaDashboardStats(vnics=None, end_time=None, start_time=None, interval=None)
+

Bases: vmware.vapi.bindings.struct.VapiStruct

+

Start time, end time and interval details.

+
+

Tip

+

The arguments are used to initialize data attributes with the same +names.

+
+ +++ + + + +
Parameters:
    +
  • vnics (list of Vnic or None) – Statistics data is collected for these vNICs.
  • +
  • end_time (long or None) – End time in seconds. format: int64
  • +
  • start_time (long or None) – Start time in seconds. format: int64
  • +
  • interval (long or None) – Time interval in seconds. format: int32
  • +
+
+
+ +
+
+class com.vmware.vmc.model_client.Metadata(timestamp=None, cycle_id=None)
+

Bases: vmware.vapi.bindings.struct.VapiStruct

+

metadata of the sddc manifest

+
+

Tip

+

The arguments are used to initialize data attributes with the same +names.

+
+ +++ + + + +
Parameters:
    +
  • timestamp (str or None) – the timestamp for the bundle
  • +
  • cycle_id (str or None) – the cycle id
  • +
+
+
+ +
+
+class com.vmware.vmc.model_client.Nat(rules=None, feature_type=None, version=None, enabled=None, template=None)
+

Bases: vmware.vapi.bindings.struct.VapiStruct

+

NAT configuration

+
+

Tip

+

The arguments are used to initialize data attributes with the same +names.

+
+ +++ + + + +
Parameters:
    +
  • rules (NatRules or None) – Ordered list of NAT rules.
  • +
  • feature_type (str or None) –
  • +
  • version (long or None) – Version number tracking each configuration change. To avoid +problems with overwriting changes, always retrieve and modify the +latest configuration to include the current version number in your +request. If you provide a version number which is not current, the +request is rejected. If you omit the version number, the request is +accepted but may overwrite any current changes if your change is +not in sync with the latest change. format: int64
  • +
  • enabled (bool or None) – Value is true if feature is enabled. Default value is true. +Optional.
  • +
  • template (str or None) –
  • +
+
+
+ +
+
+class com.vmware.vmc.model_client.NatRule(rule_type=None, protocol=None, name=None, internal_ports=None, public_ports=None, public_ip=None, internal_ip=None, action=None, id=None, revision=None)
+

Bases: vmware.vapi.bindings.struct.VapiStruct

+
+

Tip

+

The arguments are used to initialize data attributes with the same +names.

+
+ +++ + + + +
Parameters:
    +
  • rule_type (str or None) –
  • +
  • protocol (str or None) –
  • +
  • name (str or None) –
  • +
  • internal_ports (str or None) –
  • +
  • public_ports (str or None) –
  • +
  • public_ip (str or None) –
  • +
  • internal_ip (str or None) –
  • +
  • action (str or None) –

    Possible values are:

    + +
  • +
  • id (str or None) –
  • +
  • revision (long or None) – current revision of the list of nat rules, used to protect against +concurrent modification (first writer wins) format: int32 +This attribute may be present in responses from the server, but if +it is present in a request to server it will be ignored.
  • +
+
+
+
+ACTION_DNAT = 'dnat'
+
+ +
+
+ACTION_SNAT = 'snat'
+
+ +
+ +
+
+class com.vmware.vmc.model_client.NatRules(nat_rules_dtos=None)
+

Bases: vmware.vapi.bindings.struct.VapiStruct

+

Ordered list of NAT rules.

+
+

Tip

+

The arguments are used to initialize data attributes with the same +names.

+
+ +++ + + + +
Parameters:nat_rules_dtos (list of Nsxnatrule or None) – Ordered list of NAT rules.
+
+ +
+
+class com.vmware.vmc.model_client.NetworkingTemplate(management_gateway_templates=None, compute_gateway_templates=None)
+

Bases: vmware.vapi.bindings.struct.VapiStruct

+
+

Tip

+

The arguments are used to initialize data attributes with the same +names.

+
+ +++ + + + +
Parameters: +
+
+ +
+
+class com.vmware.vmc.model_client.Nsxfirewallrule(rule_type=None, description=None, rule_id=None, match_translated=None, invalid_application=None, direction=None, statistics=None, name=None, invalid_source=None, logging_enabled=None, destination=None, enabled=None, application=None, source=None, action=None, invalid_destination=None, rule_tag=None)
+

Bases: vmware.vapi.bindings.struct.VapiStruct

+

Firewall Rule

+
+

Tip

+

The arguments are used to initialize data attributes with the same +names.

+
+ +++ + + + +
Parameters:
    +
  • rule_type (str or None) – Identifies the type of the rule. internal_high or user.
  • +
  • description (str or None) – Description for the rule
  • +
  • rule_id (long or None) – Identifier for the rule. format: int64
  • +
  • match_translated (bool or None) – Defines the order of NAT and Firewall pipeline. When false, +firewall happens before NAT. Default : false
  • +
  • invalid_application (bool or None) –
  • +
  • direction (str or None) – Direction. Possible values in or out. Default is ‘any’.
  • +
  • statistics (FirewallRuleStats or None) – Statistics for the rule
  • +
  • name (str or None) – Name for the rule.
  • +
  • invalid_source (bool or None) –
  • +
  • logging_enabled (bool or None) – Enable logging for the rule.
  • +
  • destination (AddressFWSourceDestination or None) – List of destinations. Default is any.
  • +
  • enabled (bool or None) – Enable rule.
  • +
  • application (Application or None) – List of applications. Default is any.
  • +
  • source (AddressFWSourceDestination or None) – List of sources. Default is any.
  • +
  • action (str or None) – Action. Values : accept, deny
  • +
  • invalid_destination (bool or None) –
  • +
  • rule_tag (long or None) – Rule tag. Used to specify user-defined ruleId. If not specified NSX +Manager will generate ruleId. format: int64
  • +
+
+
+ +
+
+class com.vmware.vmc.model_client.Nsxfirewallservice(source_port=None, protocol=None, port=None, icmp_type=None)
+

Bases: vmware.vapi.bindings.struct.VapiStruct

+

Application (service) for firewall rule.

+
+

Tip

+

The arguments are used to initialize data attributes with the same +names.

+
+ +++ + + + +
Parameters:
    +
  • source_port (list of str or None) – List of source ports.
  • +
  • protocol (str or None) – Protocol.
  • +
  • port (list of str or None) – List of destination ports.
  • +
  • icmp_type (str or None) – IcmpType. Only supported when protocol is icmp. Default is ‘any’.
  • +
+
+
+ +
+
+class com.vmware.vmc.model_client.Nsxl2vpn(listener_ips=None, enabled=None, sites=None)
+

Bases: vmware.vapi.bindings.struct.VapiStruct

+

L2 VPN server configuration.

+
+

Tip

+

The arguments are used to initialize data attributes with the same +names.

+
+ +++ + + + +
Parameters:
    +
  • listener_ips (list of str) – Listener IP addresses.
  • +
  • enabled (bool or None) – Enabled state of L2 VPN service.
  • +
  • sites (Sites) – List of L2 VPN sites.
  • +
+
+
+ +
+
+class com.vmware.vmc.model_client.Nsxnatrule(vnic=None, rule_type=None, protocol=None, description=None, rule_id=None, snat_match_destination_port=None, original_address=None, dnat_match_source_address=None, dnat_match_source_port=None, snat_match_destination_address=None, original_port=None, logging_enabled=None, translated_address=None, enabled=None, icmp_type=None, translated_port=None, action=None, rule_tag=None)
+

Bases: vmware.vapi.bindings.struct.VapiStruct

+

NAT rule

+
+

Tip

+

The arguments are used to initialize data attributes with the same +names.

+
+ +++ + + + +
Parameters:
    +
  • vnic (str or None) – Interface on which the NAT rule is applied.
  • +
  • rule_type (str or None) – Identifies the type of the rule. internal_high or user.
  • +
  • protocol (str or None) – Protocol. Default is ‘any’
  • +
  • description (str or None) – Description for the rule.
  • +
  • rule_id (long or None) – Identifier for the rule. format: int64
  • +
  • snat_match_destination_port (str or None) – Apply SNAT rule only if traffic has this destination port. Default +is ‘any’.
  • +
  • original_address (str or None) – Original address or address range. This is the original source +address for SNAT rules and the original destination address for +DNAT rules.
  • +
  • dnat_match_source_address (str or None) – Apply DNAT rule only if traffic has this source address. Default is +‘any’.
  • +
  • dnat_match_source_port (str or None) – Apply DNAT rule only if traffic has this source port. Default is +‘any’.
  • +
  • snat_match_destination_address (str or None) – Apply SNAT rule only if traffic has this destination address. +Default is ‘any’.
  • +
  • original_port (str or None) – Original port. This is the original source port for SNAT rules, and +the original destination port for DNAT rules.
  • +
  • logging_enabled (bool or None) – Enable logging for the rule.
  • +
  • translated_address (str or None) – Translated address or address range.
  • +
  • enabled (bool or None) – Enable rule.
  • +
  • icmp_type (str or None) – ICMP type. Only supported when protocol is icmp. Default is ‘any’.
  • +
  • translated_port (str or None) – Translated port. Supported in DNAT rules only.
  • +
  • action (str or None) – Action for the rule. SNAT or DNAT.
  • +
  • rule_tag (long or None) – Rule tag. Used to specify user-defined ruleId. If not specified NSX +Manager will generate ruleId. format: int64
  • +
+
+
+ +
+
+class com.vmware.vmc.model_client.Nsxsite(secure_traffic=None, site_id=None, name=None, password=None, user_id=None, description=None)
+

Bases: vmware.vapi.bindings.struct.VapiStruct

+

L2 VPN site.

+
+

Tip

+

The arguments are used to initialize data attributes with the same +names.

+
+ +++ + + + +
Parameters:
    +
  • secure_traffic (bool or None) – Secure L2VPN traffic.
  • +
  • site_id (str or None) – Identifier for L2 VPN site.
  • +
  • name (str or None) – Name of L2 VPN site. Length: 1-255 characters.
  • +
  • password (str or None) – Password for L2 VPN user. Passwords must contain the following: +12-63 characters, a mix of upper case letters, lower case letters, +numbers, and at least one special character. Password must not +contain the username as a substring. Do not repeat a character 3 or +more times.
  • +
  • user_id (str or None) – L2 VPN user ID. Valid user names: 1-63 characters, letters and +numbers only. No white space or special characters.
  • +
  • description (str or None) – Description of L2 VPN site.
  • +
+
+
+ +
+
+class com.vmware.vmc.model_client.ObjectType(name=None)
+

Bases: vmware.vapi.bindings.struct.VapiStruct

+
+

Tip

+

The arguments are used to initialize data attributes with the same +names.

+
+ +++ + + + +
Parameters:name (str or None) –
+
+ +
+
+class com.vmware.vmc.model_client.OfferInstancesHolder(on_demand=None, offers=None)
+

Bases: vmware.vapi.bindings.struct.VapiStruct

+

Holder for the offer instances.

+
+

Tip

+

The arguments are used to initialize data attributes with the same +names.

+
+ +++ + + + +
Parameters: +
+
+ +
+
+class com.vmware.vmc.model_client.OfferType(string)
+

Bases: vmware.vapi.bindings.enum.Enum

+
+

Note

+

This class represents an enumerated type in the interface language +definition. The class contains class attributes which represent the +values in the current version of the enumerated type. Newer versions of +the enumerated type may contain new values. To use new values of the +enumerated type in communication with a server that supports the newer +version of the API, you instantiate this class. See enumerated +type description page.

+
+ +++ + + + +
Parameters:string (str) – String value for the OfferType instance.
+
+
+ON_DEMAND = OfferType(string='ON_DEMAND')
+
+ +
+
+TERM = OfferType(string='TERM')
+
+ +
+ +
+
+class com.vmware.vmc.model_client.OnDemandOfferInstance(product_type=None, name=None, currency=None, region=None, unit_price=None, monthly_cost=None, version=None, description=None)
+

Bases: vmware.vapi.bindings.struct.VapiStruct

+

Holder for the on-demand offer instance.

+
+

Tip

+

The arguments are used to initialize data attributes with the same +names.

+
+ +++ + + + +
Parameters:
    +
  • product_type (str) –
  • +
  • name (str) –
  • +
  • currency (str) –
  • +
  • region (str) –
  • +
  • unit_price (str) –
  • +
  • monthly_cost (str) –
  • +
  • version (str) –
  • +
  • description (str) –
  • +
+
+
+ +
+
+class com.vmware.vmc.model_client.OrgConfiguration(provider='OrgConfiguration')
+

Bases: vmware.vapi.bindings.struct.VapiStruct

+
+

Tip

+

The arguments are used to initialize data attributes with the same +names.

+
+ +++ + + + +
Parameters:provider (str) –

Possible values are:

+ +
+
Discriminator for provider specific properties
+
+
+
+PROVIDER_AWS = 'AWS'
+
+ +
+ +
+
+class com.vmware.vmc.model_client.OrgProperties(values=None)
+

Bases: vmware.vapi.bindings.struct.VapiStruct

+
+

Tip

+

The arguments are used to initialize data attributes with the same +names.

+
+ +++ + + + +
Parameters:values ((dict of str and str) or None) – A map of string properties to values.
+
+ +
+
+class com.vmware.vmc.model_client.Organization(updated=None, user_id=None, updated_by_user_id=None, created=None, version=None, updated_by_user_name=None, user_name=None, id=None, org_type=None, display_name=None, name=None, sla=None, project_state=None, properties=None, cloud_configurations=None)
+

Bases: vmware.vapi.bindings.struct.VapiStruct

+
+

Tip

+

The arguments are used to initialize data attributes with the same +names.

+
+ +++ + + + +
Parameters: +
+
+
+PROJECT_STATE_CREATED = 'CREATED'
+
+ +
+
+PROJECT_STATE_DELETED = 'DELETED'
+
+ +
+
+SLA_CUSTOMER = 'CUSTOMER'
+
+ +
+
+SLA_INTERNAL_CUSTOMER = 'INTERNAL_CUSTOMER'
+
+ +
+
+SLA_SECOND_PARTY_PARTNER = 'SECOND_PARTY_PARTNER'
+
+ +
+
+SLA_THIRD_PARTY_PARTNER = 'THIRD_PARTY_PARTNER'
+
+ +
+
+SLA_VMC_INTERNAL = 'VMC_INTERNAL'
+
+ +
+ +
+
+class com.vmware.vmc.model_client.PagedEdgeList(edge_page=None)
+

Bases: vmware.vapi.bindings.struct.VapiStruct

+

NSX Edges listed by pages.

+
+

Tip

+

The arguments are used to initialize data attributes with the same +names.

+
+ +++ + + + +
Parameters:edge_page (DataPageEdgeSummary or None) – Page details with matched records.
+
+ +
+
+class com.vmware.vmc.model_client.PagingInfo(sort_order_ascending=None, total_count=None, start_index=None, sort_by=None, page_size=None)
+

Bases: vmware.vapi.bindings.struct.VapiStruct

+
+

Tip

+

The arguments are used to initialize data attributes with the same +names.

+
+ +++ + + + +
Parameters:
    +
  • sort_order_ascending (bool or None) –
  • +
  • total_count (long or None) –
  • +
  • start_index (long or None) –
  • +
  • sort_by (str or None) –
  • +
  • page_size (long or None) –
  • +
+
+
+ +
+
+class com.vmware.vmc.model_client.PopAmiInfo(region=None, id=None, name=None, type=None)
+

Bases: vmware.vapi.bindings.struct.VapiStruct

+
+

Tip

+

The arguments are used to initialize data attributes with the same +names.

+
+ +++ + + + +
Parameters:
    +
  • region (str or None) – the region of the esx ami
  • +
  • id (str or None) – the ami id for the esx
  • +
  • name (str or None) – the name of the esx ami
  • +
  • type (str or None) –

    Possible values are:

    + +
    +
    PoP AMI type. CENTOS: a Centos AMI; POP: a PoP AMI.
    +
  • +
+
+
+
+TYPE_CENTOS = 'CENTOS'
+
+ +
+
+TYPE_POP = 'POP'
+
+ +
+ +
+
+class com.vmware.vmc.model_client.PopInfo(ami_infos=None, created_at=None, id=None, service_infos=None)
+

Bases: vmware.vapi.bindings.struct.VapiStruct

+

Present a SDDC PoP information.

+
+

Tip

+

The arguments are used to initialize data attributes with the same +names.

+
+ +++ + + + +
Parameters:
    +
  • ami_infos (dict of str and PopAmiInfo) – A map of [region name of PoP / PoP-AMI]:[PopAmiInfo].
  • +
  • created_at (datetime.datetime or None) – The PopInfo (or PoP AMI) created time. Using ISO 8601 date-time +pattern. format: date-time
  • +
  • id (str or None) – UUID of the PopInfo format: UUID
  • +
  • service_infos ((dict of str and PopServiceInfo) or None) – A map of [service type]:[PopServiceInfo]
  • +
+
+
+ +
+
+class com.vmware.vmc.model_client.PopServiceInfo(cln=None, version=None, build=None, service=None)
+

Bases: vmware.vapi.bindings.struct.VapiStruct

+
+

Tip

+

The arguments are used to initialize data attributes with the same +names.

+
+ +++ + + + +
Parameters: +
+
+
+SERVICE_AGENT = 'AGENT'
+
+ +
+
+SERVICE_AIDE = 'AIDE'
+
+ +
+
+SERVICE_BRE = 'BRE'
+
+ +
+
+SERVICE_BRF = 'BRF'
+
+ +
+
+SERVICE_DNS = 'DNS'
+
+ +
+
+SERVICE_DOCKER = 'DOCKER'
+
+ +
+
+SERVICE_FM_LOG_COLLECTOR = 'FM_LOG_COLLECTOR'
+
+ +
+
+SERVICE_FM_MANAGEMENT = 'FM_MANAGEMENT'
+
+ +
+
+SERVICE_FM_METRICS_COLLECTOR = 'FM_METRICS_COLLECTOR'
+
+ +
+
+SERVICE_FORWARD_PROXY = 'FORWARD_PROXY'
+
+ +
+
+SERVICE_GLCM = 'GLCM'
+
+ +
+
+SERVICE_JRE = 'JRE'
+
+ +
+
+SERVICE_LOGZ_LOG_COLLECTOR = 'LOGZ_LOG_COLLECTOR'
+
+ +
+
+SERVICE_NTP = 'NTP'
+
+ +
+
+SERVICE_OS = 'OS'
+
+ +
+
+SERVICE_REVERSE_PROXY = 'REVERSE_PROXY'
+
+ +
+
+SERVICE_RTS = 'RTS'
+
+ +
+
+SERVICE_S3_ADAPTER = 'S3_ADAPTER'
+
+ +
+ +
+
+class com.vmware.vmc.model_client.Requests(total=None, queries=None)
+

Bases: vmware.vapi.bindings.struct.VapiStruct

+

DNS request statistics.

+
+

Tip

+

The arguments are used to initialize data attributes with the same +names.

+
+ +++ + + + +
Parameters:
    +
  • total (long or None) –
  • +
  • queries (long or None) –
  • +
+
+
+ +
+
+class com.vmware.vmc.model_client.Result(value=None, key=None)
+

Bases: vmware.vapi.bindings.struct.VapiStruct

+

Job result information for the configuration change carried out on NSX +Edge.

+
+

Tip

+

The arguments are used to initialize data attributes with the same +names.

+
+ +++ + + + +
Parameters:
    +
  • value (str or None) – Job Result value associated with key ID.
  • +
  • key (str or None) – Job Result key ID.
  • +
+
+
+ +
+
+class com.vmware.vmc.model_client.ScopeInfo(object_type_name=None, id=None, name=None)
+

Bases: vmware.vapi.bindings.struct.VapiStruct

+
+

Tip

+

The arguments are used to initialize data attributes with the same +names.

+
+ +++ + + + +
Parameters:
    +
  • object_type_name (str or None) –
  • +
  • id (str or None) –
  • +
  • name (str or None) –
  • +
+
+
+ +
+
+class com.vmware.vmc.model_client.Sddc(updated=None, user_id=None, updated_by_user_id=None, created=None, version=None, updated_by_user_name=None, user_name=None, id=None, name=None, sddc_state=None, expiration_date=None, org_id=None, sddc_type=None, provider=None, account_link_state=None, resource_config=None)
+

Bases: vmware.vapi.bindings.struct.VapiStruct

+
+

Tip

+

The arguments are used to initialize data attributes with the same +names.

+
+ +++ + + + +
Parameters: +
+
+ +
+ +
+ +
+ +
+ +
+ +
+
+PROVIDER_AWS = 'AWS'
+
+ +
+
+SDDC_STATE_DELETED = 'DELETED'
+
+ +
+
+SDDC_STATE_DELETING = 'DELETING'
+
+ +
+
+SDDC_STATE_DELETION_FAILED = 'DELETION_FAILED'
+
+ +
+
+SDDC_STATE_DEPLOYING = 'DEPLOYING'
+
+ +
+
+SDDC_STATE_FAILED = 'FAILED'
+
+ +
+
+SDDC_STATE_READY = 'READY'
+
+ +
+ +
+
+class com.vmware.vmc.model_client.SddcAllocatePublicIpSpec(count=None, private_ips=None, names=None)
+

Bases: vmware.vapi.bindings.struct.VapiStruct

+
+

Tip

+

The arguments are used to initialize data attributes with the same +names.

+
+ +++ + + + +
Parameters:
    +
  • count (long) –
  • +
  • private_ips (list of str or None) – List of workload VM private IPs to be assigned the public IP just +allocated.
  • +
  • names (list of str or None) – List of names for the workload VM public IP assignment.
  • +
+
+
+ +
+
+class com.vmware.vmc.model_client.SddcConfig(name=None, account_link_sddc_config=None, vpc_cidr=None, num_hosts=None, sddc_type=None, vxlan_subnet=None, account_link_config=None, provider='SddcConfig', sso_domain=None, sddc_template_id=None, deployment_type=None)
+

Bases: vmware.vapi.bindings.struct.VapiStruct

+
+

Tip

+

The arguments are used to initialize data attributes with the same +names.

+
+ +++ + + + +
Parameters:
    +
  • name (str) –
  • +
  • account_link_sddc_config (list of AccountLinkSddcConfig or None) – A list of the SDDC linking configurations to use.
  • +
  • vpc_cidr (str or None) – AWS VPC IP range. Only prefix of 16 or 20 is currently supported.
  • +
  • num_hosts (long) –
  • +
  • sddc_type (str or None) – Denotes the sddc type , if the value is null or empty, the type is +considered as default.
  • +
  • vxlan_subnet (str or None) – VXLAN IP subnet
  • +
  • account_link_config (AccountLinkConfig or None) – The account linking configuration, we will keep this one and remove +accountLinkSddcConfig finally.
  • +
  • provider (str) –

    Possible values are:

    + +

    Determines what additional properties are available based on cloud +provider.

    +
  • +
  • sso_domain (str or None) – The SSO domain name to use for vSphere users. If not specified, +vmc.local will be used.
  • +
  • sddc_template_id (str or None) – If provided, configuration from the template will applied to the +provisioned SDDC. format: UUID
  • +
  • deployment_type (str or None) –

    Possible values are:

    + +

    Denotes if request is for a SingleAZ or a MultiAZ SDDC. Default is +SingleAZ.

    +
  • +
+
+
+
+DEPLOYMENT_TYPE_MULTIAZ = 'MultiAZ'
+
+ +
+
+DEPLOYMENT_TYPE_SINGLEAZ = 'SingleAZ'
+
+ +
+
+PROVIDER_AWS = 'AWS'
+
+ +
+ +
+
+class com.vmware.vmc.model_client.SddcLinkConfig(customer_subnet_ids=None, connected_account_id=None)
+

Bases: vmware.vapi.bindings.struct.VapiStruct

+
+

Tip

+

The arguments are used to initialize data attributes with the same +names.

+
+ +++ + + + +
Parameters:
    +
  • customer_subnet_ids (list of str or None) –
  • +
  • connected_account_id (str or None) – Determines which connected customer account to link to
  • +
+
+
+ +
+
+class com.vmware.vmc.model_client.SddcManifest(vmc_version=None, glcm_bundle=None, pop_info=None, vmc_internal_version=None, esx_ami=None, esx_nsxt_ami=None, metadata=None)
+

Bases: vmware.vapi.bindings.struct.VapiStruct

+

Describes software components of the installed SDDC

+
+

Tip

+

The arguments are used to initialize data attributes with the same +names.

+
+ +++ + + + +
Parameters:
    +
  • vmc_version (str or None) – the vmcVersion of the sddc for display
  • +
  • glcm_bundle (GlcmBundle or None) –
  • +
  • pop_info (PopInfo or None) –
  • +
  • vmc_internal_version (str or None) – the vmcInternalVersion of the sddc for internal use
  • +
  • esx_ami (AmiInfo or None) –
  • +
  • esx_nsxt_ami (AmiInfo or None) –
  • +
  • metadata (Metadata or None) –
  • +
+
+
+ +
+
+class com.vmware.vmc.model_client.SddcNetwork(subnets=None, cgw_name=None, name=None, l2_extension=None, cgw_id=None, dhcp_configs=None, id=None)
+

Bases: vmware.vapi.bindings.struct.VapiStruct

+

Logical network.

+
+

Tip

+

The arguments are used to initialize data attributes with the same +names.

+
+ +++ + + + +
Parameters:
    +
  • subnets (SddcNetworkAddressGroups or None) – Network address groups for routed logical networks.
  • +
  • cgw_name (str or None) – Name of the compute gateway to which the logical network is +attached.
  • +
  • name (str) – Name of logical network. Length needs to be between 1-35 +characters.
  • +
  • l2_extension (L2Extension or None) – Layer 2 extension for extended logical networks.
  • +
  • cgw_id (str) – ID of the compute gateway edge to which the logical network is +attached.
  • +
  • dhcp_configs (SddcNetworkDhcpConfig or None) – DHCP configuration for routed logical networks.
  • +
  • id (str or None) – ID of logical network.
  • +
+
+
+ +
+
+class com.vmware.vmc.model_client.SddcNetworkAddressGroup(prefix_length=None, primary_address=None)
+

Bases: vmware.vapi.bindings.struct.VapiStruct

+

Logical Network address group.

+
+

Tip

+

The arguments are used to initialize data attributes with the same +names.

+
+ +++ + + + +
Parameters:
    +
  • prefix_length (str or None) – Prefix length of logical network.
  • +
  • primary_address (str or None) – Primary address for logical network.
  • +
+
+
+ +
+
+class com.vmware.vmc.model_client.SddcNetworkAddressGroups(address_groups=None)
+

Bases: vmware.vapi.bindings.struct.VapiStruct

+

Logical network address groups.

+
+

Tip

+

The arguments are used to initialize data attributes with the same +names.

+
+ +++ + + + +
Parameters:address_groups (list of SddcNetworkAddressGroup or None) – List of logical network address groups.
+
+ +
+
+class com.vmware.vmc.model_client.SddcNetworkDhcpConfig(ip_pools=None)
+

Bases: vmware.vapi.bindings.struct.VapiStruct

+

DHCP configuration for the logical network.

+
+

Tip

+

The arguments are used to initialize data attributes with the same +names.

+
+ +++ + + + +
Parameters:ip_pools (list of SddcNetworkDhcpIpPool or None) – List of IP pools in DHCP configuration.
+
+ +
+
+class com.vmware.vmc.model_client.SddcNetworkDhcpIpPool(ip_range=None, domain_name=None)
+

Bases: vmware.vapi.bindings.struct.VapiStruct

+

DHCP IP pool for logical network.

+
+

Tip

+

The arguments are used to initialize data attributes with the same +names.

+
+ +++ + + + +
Parameters:
    +
  • ip_range (str or None) – IP range for DHCP IP pool.
  • +
  • domain_name (str or None) – DNS domain name.
  • +
+
+
+ +
+
+class com.vmware.vmc.model_client.SddcPublicIp(public_ip=None, name=None, allocation_id=None, dnat_rule_id=None, associated_private_ip=None, snat_rule_id=None)
+

Bases: vmware.vapi.bindings.struct.VapiStruct

+
+

Tip

+

The arguments are used to initialize data attributes with the same +names.

+
+ +++ + + + +
Parameters:
    +
  • public_ip (str) –
  • +
  • name (str or None) –
  • +
  • allocation_id (str or None) –
  • +
  • dnat_rule_id (str or None) –
  • +
  • associated_private_ip (str or None) –
  • +
  • snat_rule_id (str or None) –
  • +
+
+
+ +
+
+class com.vmware.vmc.model_client.SddcResourceConfig(nsxt=None, mgw_id=None, nsx_mgr_url=None, psc_management_ip=None, psc_url=None, cgws=None, availability_zones=None, management_ds=None, custom_properties=None, cloud_password=None, provider='SddcResourceConfig', clusters=None, vc_management_ip=None, sddc_networks=None, cloud_username=None, esx_hosts=None, nsx_mgr_management_ip=None, vc_instance_id=None, esx_cluster_id=None, vc_public_ip=None, vc_url=None, sddc_manifest=None, vxlan_subnet=None, cloud_user_group=None, management_rp=None, witness_availability_zone=None, sso_domain=None, deployment_type=None, dns_with_management_vm_private_ip=None)
+

Bases: vmware.vapi.bindings.struct.VapiStruct

+
+

Tip

+

The arguments are used to initialize data attributes with the same +names.

+
+ +++ + + + +
Parameters:
    +
  • nsxt (bool or None) – if true, NSX-T UI is enabled.
  • +
  • mgw_id (str or None) – Management Gateway Id
  • +
  • nsx_mgr_url (str or None) – URL of the NSX Manager
  • +
  • psc_management_ip (str or None) – PSC internal management IP
  • +
  • psc_url (str or None) – URL of the PSC server
  • +
  • cgws (list of str or None) –
  • +
  • availability_zones (list of str or None) – Availability zones over which esx hosts are provisioned. MultiAZ +SDDCs will have hosts provisioned over two availability zones while +SingleAZ SDDCs will provision over one.
  • +
  • management_ds (str or None) – The ManagedObjectReference of the management Datastore
  • +
  • custom_properties ((dict of str and str) or None) –
  • +
  • cloud_password (str or None) – Password for vCenter SDDC administrator
  • +
  • provider (str) –

    Possible values are:

    + +
    +
    Discriminator for additional properties
    +
  • +
  • clusters (list of vmware.vapi.struct.VapiStruct or None) – List of clusters in the SDDC. +When clients pass a value of this class as a parameter, the +attribute must contain all the attributes defined in +Cluster. When methods return a value of this class as a +return value, the attribute will contain all the attributes defined +in Cluster.
  • +
  • vc_management_ip (str or None) – vCenter internal management IP
  • +
  • sddc_networks (list of str or None) –
  • +
  • cloud_username (str or None) – Username for vCenter SDDC administrator
  • +
  • esx_hosts (list of AwsEsxHost or None) –
  • +
  • nsx_mgr_management_ip (str or None) – NSX Manager internal management IP
  • +
  • vc_instance_id (str or None) – unique id of the vCenter server
  • +
  • esx_cluster_id (str or None) – Cluster Id to add ESX workflow
  • +
  • vc_public_ip (str or None) – vCenter public IP
  • +
  • vc_url (str or None) – URL of the vCenter server
  • +
  • sddc_manifest (SddcManifest or None) –
  • +
  • vxlan_subnet (str or None) – VXLAN IP subnet
  • +
  • cloud_user_group (str or None) – Group name for vCenter SDDC administrator
  • +
  • management_rp (str or None) –
  • +
  • witness_availability_zone (str or None) – Availability zone where the witness node is provisioned for a +MultiAZ SDDC. This is null for a SingleAZ SDDC.
  • +
  • sso_domain (str or None) – The SSO domain name to use for vSphere users
  • +
  • deployment_type (str or None) –

    Possible values are:

    + +
    +
    Denotes if this is a SingleAZ SDDC or a MultiAZ SDDC.
    +
  • +
  • dns_with_management_vm_private_ip (bool or None) – if true, use the private IP addresses to register DNS records for +the management VMs
  • +
+
+
+
+DEPLOYMENT_TYPE_MULTIAZ = 'MultiAZ'
+
+ +
+
+DEPLOYMENT_TYPE_SINGLEAZ = 'SingleAZ'
+
+ +
+
+PROVIDER_AWS = 'AWS'
+
+ +
+ +
+
+class com.vmware.vmc.model_client.SddcTemplate(updated=None, user_id=None, updated_by_user_id=None, created=None, version=None, updated_by_user_name=None, user_name=None, id=None, name=None, tenant_id=None, source_sddc_id=None, state=None, num_hosts=None, public_ips=None, vpc_cidr=None, provider=None, vc_public_ip=None, sso_domain=None, networking_template=None, region=None, vc_url=None)
+

Bases: vmware.vapi.bindings.struct.VapiStruct

+
+

Tip

+

The arguments are used to initialize data attributes with the same +names.

+
+ +++ + + + +
Parameters:
    +
  • updated (datetime.datetime) –
  • +
  • user_id (str) – User id that last updated this record
  • +
  • updated_by_user_id (str) – User id that last updated this record
  • +
  • created (datetime.datetime) –
  • +
  • version (long) – Version of this entity format: int32
  • +
  • updated_by_user_name (str or None) – User name that last updated this record
  • +
  • user_name (str) – User name that last updated this record
  • +
  • id (str) – Unique ID for this entity
  • +
  • name (str or None) – name for SDDC configuration template
  • +
  • tenant_id (str or None) –
  • +
  • source_sddc_id (str or None) –
  • +
  • state (str or None) –

    Possible values are:

    + +
  • +
  • num_hosts (long or None) –
  • +
  • public_ips (list of SddcPublicIp or None) –
  • +
  • vpc_cidr (str or None) –
  • +
  • provider (str or None) –

    Possible values are:

    + +
  • +
  • vc_public_ip (SddcPublicIp or None) –
  • +
  • sso_domain (str or None) –
  • +
  • networking_template (NetworkingTemplate or None) –
  • +
  • region (str or None) –
  • +
  • vc_url (str or None) –
  • +
+
+
+
+PROVIDER_AWS = 'AWS'
+
+ +
+
+STATE_APPLIED = 'APPLIED'
+
+ +
+
+STATE_AVAILABLE = 'AVAILABLE'
+
+ +
+
+STATE_DELETED = 'DELETED'
+
+ +
+
+STATE_DELETING = 'DELETING'
+
+ +
+
+STATE_FAILED = 'FAILED'
+
+ +
+
+STATE_INUSE = 'INUSE'
+
+ +
+ +
+
+class com.vmware.vmc.model_client.SecondaryAddresses(type=None, ip_address=None)
+

Bases: vmware.vapi.bindings.struct.VapiStruct

+

Secondary IP addresses of the NSX Edge vnic address group. These are used +for NAT, LB, VPN etc. Optional.

+
+

Tip

+

The arguments are used to initialize data attributes with the same +names.

+
+ +++ + + + +
Parameters:
    +
  • type (str or None) –
  • +
  • ip_address (list of str or None) – List of IP addresses.
  • +
+
+
+ +
+
+class com.vmware.vmc.model_client.ServiceError(original_service=None, params=None, default_message=None, original_service_error_code=None, error_code=None, localized_message=None)
+

Bases: vmware.vapi.bindings.struct.VapiStruct

+

Detailed service errors associated with a task.

+
+

Tip

+

The arguments are used to initialize data attributes with the same +names.

+
+ +++ + + + +
Parameters:
    +
  • original_service (str) – The original service name of the error.
  • +
  • params (list of str or None) – The parameters of the service error.
  • +
  • default_message (str or None) – Error message in English.
  • +
  • original_service_error_code (str) – The original error code of the service.
  • +
  • error_code (str) – Localizable error code.
  • +
  • localized_message (str or None) – The localized message.
  • +
+
+
+ +
+
+class com.vmware.vmc.model_client.Site(password=None, user_id=None, name=None, rx_bytes_on_local_subnet=None, secure_traffic=None, established_date=None, failure_message=None, dropped_tx_packets=None, dropped_rx_packets=None, tunnel_status=None, tx_bytes_from_local_subnet=None)
+

Bases: vmware.vapi.bindings.struct.VapiStruct

+
+

Tip

+

The arguments are used to initialize data attributes with the same +names.

+
+ +++ + + + +
Parameters:
    +
  • password (str or None) – Site password.
  • +
  • user_id (str or None) – Site user id.
  • +
  • name (str or None) – Unique name for the site getting configured.
  • +
  • rx_bytes_on_local_subnet (long or None) – Bytes received on local network. format: int64 +This attribute may be present in responses from the server, but if +it is present in a request to server it will be ignored.
  • +
  • secure_traffic (bool or None) – Enable/disable encription.
  • +
  • established_date (str or None) – Date tunnel was established. +This attribute may be present in responses from the server, but if +it is present in a request to server it will be ignored.
  • +
  • failure_message (str or None) – failure message. +This attribute may be present in responses from the server, but if +it is present in a request to server it will be ignored.
  • +
  • dropped_tx_packets (str or None) – Number of transmitted packets dropped. +This attribute may be present in responses from the server, but if +it is present in a request to server it will be ignored.
  • +
  • dropped_rx_packets (str or None) – Number of received packets dropped. +This attribute may be present in responses from the server, but if +it is present in a request to server it will be ignored.
  • +
  • tunnel_status (str or None) –

    Possible values are:

    + +
    +
    Site tunnel status.
    +

    This attribute may be present in responses from the server, but if +it is present in a request to server it will be ignored.

    +
  • +
  • tx_bytes_from_local_subnet (long or None) – Bytes transmitted from local subnet. format: int64 +This attribute may be present in responses from the server, but if +it is present in a request to server it will be ignored.
  • +
+
+
+
+TUNNEL_STATUS_CONNECTED = 'CONNECTED'
+
+ +
+
+TUNNEL_STATUS_DISCONNECTED = 'DISCONNECTED'
+
+ +
+
+TUNNEL_STATUS_UNKNOWN = 'UNKNOWN'
+
+ +
+ +
+
+class com.vmware.vmc.model_client.Sites(sites=None)
+

Bases: vmware.vapi.bindings.struct.VapiStruct

+

L2 VPN sites.

+
+

Tip

+

The arguments are used to initialize data attributes with the same +names.

+
+ +++ + + + +
Parameters:sites (list of Nsxsite or None) –
+
+ +
+
+class com.vmware.vmc.model_client.SslvpnDashboardStats(active_clients=None, sslvpn_bytes_in=None, auth_failures=None, sessions_created=None, sslvpn_bytes_out=None)
+

Bases: vmware.vapi.bindings.struct.VapiStruct

+

Dashboard Statistics data for SSL VPN.

+
+

Tip

+

The arguments are used to initialize data attributes with the same +names.

+
+ +++ + + + +
Parameters:
    +
  • active_clients (list of DashboardStat or None) – Number of active clients.
  • +
  • sslvpn_bytes_in (list of DashboardStat or None) – Rx bytes received for SSL VPN.
  • +
  • auth_failures (list of DashboardStat or None) – Number of authentication failures.
  • +
  • sessions_created (list of DashboardStat or None) – Number of SSL VPN sessions created.
  • +
  • sslvpn_bytes_out (list of DashboardStat or None) – Tx bytes transmitted for SSL VPN.
  • +
+
+
+ +
+
+class com.vmware.vmc.model_client.StubFactory(stub_config)
+

Bases: vmware.vapi.bindings.stub.StubFactoryBase

+

Initialize StubFactoryBase

+ +++ + + + +
Parameters:stub_config (vmware.vapi.bindings.stub.StubConfiguration) – Stub config instance
+
+ +
+
+class com.vmware.vmc.model_client.SubInterface(index=None, tunnel_id=None, name=None, address_groups=None, vlan_id=None, label=None, logical_switch_name=None, is_connected=None, mtu=None, logical_switch_id=None, enable_send_redirects=None)
+

Bases: vmware.vapi.bindings.struct.VapiStruct

+

NSX Edge sub interface configuration details. Sub interfaces are created on +a trunk interface.

+
+

Tip

+

The arguments are used to initialize data attributes with the same +names.

+
+ +++ + + + +
Parameters:
    +
  • index (long or None) – Index of the sub interface assigned by NSX Manager. Min value is 10 +and max value is 4103. format: int32
  • +
  • tunnel_id (long) – Valid values for tunnel ID are min 1 to max 4093. Required. format: +int32
  • +
  • name (str or None) – Name of the sub interface. Required.
  • +
  • address_groups (EdgeVnicAddressGroups or None) – Address group configuration of the sub interface.
  • +
  • vlan_id (long or None) – VLAN ID of the virtual LAN used by this sub interface. VLAN IDs can +range from 0 to 4094. format: int32
  • +
  • label (str or None) – Sub interface label of format vNic_{index} provided by NSX Manager. +Read only.
  • +
  • logical_switch_name (str or None) – Name of the logical switch connected to this sub interface.
  • +
  • is_connected (bool or None) – Value is true if the sub interface is connected to a logical +switch, standard portgroup or distributed portgroup.
  • +
  • mtu (long or None) – MTU value of the sub interface. This value would be the least mtu +for all the trunk interfaces of the NSX Edge. Default is 1500. +format: int32
  • +
  • logical_switch_id (str or None) – ID of the logical switch connected to this sub interface.
  • +
  • enable_send_redirects (bool or None) – Value is true if send redirects is enabled. Enable ICMP redirect to +convey routing information to hosts.
  • +
+
+
+ +
+
+class com.vmware.vmc.model_client.SubInterfaces(sub_interfaces=None)
+

Bases: vmware.vapi.bindings.struct.VapiStruct

+
+

Tip

+

The arguments are used to initialize data attributes with the same +names.

+
+ +++ + + + +
Parameters:sub_interfaces (list of SubInterface or None) – List of sub interfaces.
+
+ +
+
+class com.vmware.vmc.model_client.Subnets(subnets=None)
+

Bases: vmware.vapi.bindings.struct.VapiStruct

+
+

Tip

+

The arguments are used to initialize data attributes with the same +names.

+
+ +++ + + + +
Parameters:subnets (list of str or None) – List of subnets for which IPsec VPN is configured. Subnets should +be network address specified in CIDR format and can accept +‘0.0.0.0/0’ (any)
+
+ +
+
+class com.vmware.vmc.model_client.SubscriptionDetails(status=None, anniversary_billing_date=None, end_date=None, auto_renewed_allowed=None, description=None, commitment_term=None, csp_subscription_id=None, billing_subscription_id=None, commitment_term_uom=None, offer_version=None, region=None, offer_name=None, offer_type=None, start_date=None, quantity=None)
+

Bases: vmware.vapi.bindings.struct.VapiStruct

+

details of a subscription

+
+

Tip

+

The arguments are used to initialize data attributes with the same +names.

+
+ +++ + + + +
Parameters: +
+
+
+STATUS_ACTIVATED = 'ACTIVATED'
+
+ +
+
+STATUS_CANCELLED = 'CANCELLED'
+
+ +
+
+STATUS_CREATED = 'CREATED'
+
+ +
+
+STATUS_EXPIRED = 'EXPIRED'
+
+ +
+
+STATUS_FAILED = 'FAILED'
+
+ +
+
+STATUS_PENDING_PROVISIONING = 'PENDING_PROVISIONING'
+
+ +
+ +
+
+class com.vmware.vmc.model_client.SubscriptionRequest(offer_version=None, product_type=None, region=None, commitment_term=None, offer_name=None, quantity=None)
+

Bases: vmware.vapi.bindings.struct.VapiStruct

+
+

Tip

+

The arguments are used to initialize data attributes with the same +names.

+
+ +++ + + + +
Parameters:
    +
  • offer_version (str) –
  • +
  • product_type (str) –
  • +
  • region (str) –
  • +
  • commitment_term (str) –
  • +
  • offer_name (str) –
  • +
  • quantity (long) –
  • +
+
+
+ +
+
+class com.vmware.vmc.model_client.Task(updated=None, user_id=None, updated_by_user_id=None, created=None, version=None, updated_by_user_name=None, user_name=None, id=None, status=None, resource_id=None, start_time=None, service_errors=None, sub_status=None, task_type=None, task_progress_phases=None, error_message=None, org_id=None, progress_percent=None, estimated_remaining_minutes=None, params=None, end_time=None, phase_in_progress=None, task_version=None, resource_type=None)
+

Bases: vmware.vapi.bindings.struct.VapiStruct

+
+

Tip

+

The arguments are used to initialize data attributes with the same +names.

+
+ +++ + + + +
Parameters:
    +
  • updated (datetime.datetime) –
  • +
  • user_id (str) – User id that last updated this record
  • +
  • updated_by_user_id (str) – User id that last updated this record
  • +
  • created (datetime.datetime) –
  • +
  • version (long) – Version of this entity format: int32
  • +
  • updated_by_user_name (str or None) – User name that last updated this record
  • +
  • user_name (str) – User name that last updated this record
  • +
  • id (str) – Unique ID for this entity
  • +
  • status (str or None) –

    Possible values are:

    + +
  • +
  • resource_id (str or None) – UUID of resources task is acting upon
  • +
  • start_time (datetime.datetime or None) –
  • +
  • service_errors (list of ServiceError or None) – Service errors returned from SDDC services.
  • +
  • sub_status (str or None) –
  • +
  • task_type (str or None) –
  • +
  • task_progress_phases (list of TaskProgressPhase or None) – Task progress phases involved in current task execution
  • +
  • error_message (str or None) –
  • +
  • org_id (str or None) –
  • +
  • progress_percent (long or None) – Estimated progress percentage the task executed format: int32
  • +
  • estimated_remaining_minutes (long or None) – Estimated remaining time in minute of the task execution, < 0 means +no estimation for the task. format: int32
  • +
  • params (vmware.vapi.struct.VapiStruct or None) –
  • +
  • end_time (datetime.datetime or None) –
  • +
  • phase_in_progress (str or None) – The current in progress phase ID in the task execution, if none in +progress, empty string returned.
  • +
  • task_version (str or None) –
  • +
  • resource_type (str or None) – Type of resource being acted upon
  • +
+
+
+
+STATUS_CANCELED = 'CANCELED'
+
+ +
+
+STATUS_CANCELING = 'CANCELING'
+
+ +
+
+STATUS_FAILED = 'FAILED'
+
+ +
+
+STATUS_FINISHED = 'FINISHED'
+
+ +
+
+STATUS_STARTED = 'STARTED'
+
+ +
+ +
+
+class com.vmware.vmc.model_client.TaskProgressPhase(id=None, name=None, progress_percent=None)
+

Bases: vmware.vapi.bindings.struct.VapiStruct

+

A task progress can be (but does NOT have to be) divided to more meaningful +progress phases.

+
+

Tip

+

The arguments are used to initialize data attributes with the same +names.

+
+ +++ + + + +
Parameters:
    +
  • id (str) – The identifier of the task progress phase
  • +
  • name (str) – The display name of the task progress phase
  • +
  • progress_percent (long) – The percentage of the phase that has completed format: int32
  • +
+
+
+ +
+
+class com.vmware.vmc.model_client.TermOfferInstance(product_type=None, name=None, region=None, commitment_term=None, unit_price=None, currency=None, version=None, description=None)
+

Bases: vmware.vapi.bindings.struct.VapiStruct

+

Holder for the term offer instances.

+
+

Tip

+

The arguments are used to initialize data attributes with the same +names.

+
+ +++ + + + +
Parameters:
    +
  • product_type (str) –
  • +
  • name (str) –
  • +
  • region (str) –
  • +
  • commitment_term (long) –
  • +
  • unit_price (str) –
  • +
  • currency (str) –
  • +
  • version (str) –
  • +
  • description (str) –
  • +
+
+
+ +
+
+class com.vmware.vmc.model_client.TrafficShapingPolicy(burst_size=None, average_bandwidth=None, peak_bandwidth=None, enabled=None, inherited=None)
+

Bases: vmware.vapi.bindings.struct.VapiStruct

+
+

Tip

+

The arguments are used to initialize data attributes with the same +names.

+
+ +++ + + + +
Parameters:
    +
  • burst_size (long or None) –
  • +
  • average_bandwidth (long or None) –
  • +
  • peak_bandwidth (long or None) –
  • +
  • enabled (bool or None) –
  • +
  • inherited (bool or None) –
  • +
+
+
+ +
+
+class com.vmware.vmc.model_client.Vnic(sub_interfaces=None, address_groups=None, is_connected=None, enable_send_redirects=None, in_shaping_policy=None, label=None, enable_proxy_arp=None, index=None, name=None, mtu=None, fence_parameters=None, mac_addresses=None, out_shaping_policy=None, portgroup_name=None, enable_bridge_mode=None, type=None, portgroup_id=None)
+

Bases: vmware.vapi.bindings.struct.VapiStruct

+

NSX Edge vnic configuration details.

+
+

Tip

+

The arguments are used to initialize data attributes with the same +names.

+
+ +++ + + + +
Parameters:
    +
  • sub_interfaces (SubInterfaces or None) – List of sub interfaces. Sub interfaces can be created only on a +trunk interface.
  • +
  • address_groups (EdgeVnicAddressGroups or None) – Address group configuration of the interface.
  • +
  • is_connected (bool or None) – Value is true if the vnic is connected to a logical switch, +standard portgroup or distributed portgroup.
  • +
  • enable_send_redirects (bool or None) – Value is true if send redirects is enabled. Enable ICMP redirect to +convey routing information to hosts.
  • +
  • in_shaping_policy (TrafficShapingPolicy or None) –
  • +
  • label (str or None) – Interface label of format vNic_{vnicIndex} provided by NSX Manager. +Read only.
  • +
  • enable_proxy_arp (bool or None) – Value is true if proxy arp is enabled. Enable proxy ARP if you want +to allow the NSX Edge of type ‘gatewayServices’ to answer ARP +requests intended for other machines.
  • +
  • index (long) – Index of the vnic. Min value is 0 and max value is 9. format: int32
  • +
  • name (str or None) – Name of the interface. Optional.
  • +
  • mtu (long or None) – MTU of the interface, with default as 1500. Min is 68, Max is 9000. +Optional. format: int32
  • +
  • fence_parameters (list of KeyValueAttributes or None) –
  • +
  • mac_addresses (list of MacAddress or None) – Distinct MAC addresses configured for the vnic. Optional.
  • +
  • out_shaping_policy (TrafficShapingPolicy or None) –
  • +
  • portgroup_name (str or None) – Name of the port group or logical switch.
  • +
  • enable_bridge_mode (bool or None) – Value is true if bridge mode is enabled.
  • +
  • type (str or None) – Type of the vnic. Values are uplink, internal, trunk. At least one +internal interface must be configured for NSX Edge HA to work.
  • +
  • portgroup_id (str or None) – Value are port group ID (standard portgroup or distributed +portgroup) or virtual wire ID (logical switch). Logical switch +cannot be used for a TRUNK vnic. Portgroup cannot be shared among +vnics/LIFs. Required when isConnected is specified as true. Example +‘network-17’ (standard portgroup), ‘dvportgroup-34’ (distributed +portgroup) or ‘virtualwire-2’ (logical switch).
  • +
+
+
+ +
+
+class com.vmware.vmc.model_client.Vnics(vnics=None)
+

Bases: vmware.vapi.bindings.struct.VapiStruct

+

Ordered list of NSX Edge vnics. Until one connected vnic is configured, +none of the configured features will serve the network.

+
+

Tip

+

The arguments are used to initialize data attributes with the same +names.

+
+ +++ + + + +
Parameters:vnics (list of Vnic or None) – Ordered list of NSX Edge vnics.
+
+ +
+
+class com.vmware.vmc.model_client.VpcInfo(vpc_cidr=None, vm_security_group_id=None, route_table_id=None, edge_subnet_id=None, id=None, api_association_id=None, private_subnet_id=None, api_subnet_id=None, esx_security_group_id=None, subnet_id=None, internet_gateway_id=None, security_group_id=None, association_id=None, vgw_route_table_id=None, edge_association_id=None, vif_ids=None, peering_connection_id=None)
+

Bases: vmware.vapi.bindings.struct.VapiStruct

+
+

Tip

+

The arguments are used to initialize data attributes with the same +names.

+
+ +++ + + + +
Parameters:
    +
  • vpc_cidr (str or None) –
  • +
  • vm_security_group_id (str or None) –
  • +
  • route_table_id (str or None) –
  • +
  • edge_subnet_id (str or None) – Id of the NSX edge associated with this VPC
  • +
  • id (str or None) –
  • +
  • api_association_id (str or None) – Id of the association between subnet and route-table
  • +
  • private_subnet_id (str or None) –
  • +
  • api_subnet_id (str or None) – Id associated with this VPC
  • +
  • esx_security_group_id (str or None) –
  • +
  • subnet_id (str or None) –
  • +
  • internet_gateway_id (str or None) –
  • +
  • security_group_id (str or None) –
  • +
  • association_id (str or None) –
  • +
  • vgw_route_table_id (str or None) – Route table which contains the route to VGW
  • +
  • edge_association_id (str or None) – Id of the association between edge subnet and route-table
  • +
  • vif_ids (list of str or None) –
  • +
  • peering_connection_id (str or None) –
  • +
+
+
+ +
+
+class com.vmware.vmc.model_client.Vpn(version=None, on_prem_gateway_ip=None, on_prem_network_cidr=None, pfs_enabled=None, id=None, channel_status=None, on_prem_nat_ip=None, name=None, internal_network_ids=None, tunnel_statuses=None, encryption=None, enabled=None, state=None, dh_group=None, authentication=None, pre_shared_key=None)
+

Bases: vmware.vapi.bindings.struct.VapiStruct

+
+

Tip

+

The arguments are used to initialize data attributes with the same +names.

+
+ +++ + + + +
Parameters: +
+
+
+AUTHENTICATION_PSK = 'PSK'
+
+ +
+
+AUTHENTICATION_UNKNOWN = 'UNKNOWN'
+
+ +
+
+DH_GROUP_DH14 = 'DH14'
+
+ +
+
+DH_GROUP_DH15 = 'DH15'
+
+ +
+
+DH_GROUP_DH16 = 'DH16'
+
+ +
+
+DH_GROUP_DH2 = 'DH2'
+
+ +
+
+DH_GROUP_DH5 = 'DH5'
+
+ +
+
+DH_GROUP_UNKNOWN = 'UNKNOWN'
+
+ +
+
+ENCRYPTION_AES = 'AES'
+
+ +
+
+ENCRYPTION_AES256 = 'AES256'
+
+ +
+
+ENCRYPTION_AES_GCM = 'AES_GCM'
+
+ +
+
+ENCRYPTION_TRIPLE_DES = 'TRIPLE_DES'
+
+ +
+
+ENCRYPTION_UNKNOWN = 'UNKNOWN'
+
+ +
+
+STATE_CONNECTED = 'CONNECTED'
+
+ +
+
+STATE_DISCONNECTED = 'DISCONNECTED'
+
+ +
+
+STATE_PARTIALLY_CONNECTED = 'PARTIALLY_CONNECTED'
+
+ +
+
+STATE_UNKNOWN = 'UNKNOWN'
+
+ +
+ +
+
+class com.vmware.vmc.model_client.VpnChannelStatus(channel_status=None, channel_state=None, last_info_message=None, failure_message=None)
+

Bases: vmware.vapi.bindings.struct.VapiStruct

+
+

Tip

+

The arguments are used to initialize data attributes with the same +names.

+
+ +++ + + + +
Parameters: +
+
+
+CHANNEL_STATUS_CONNECTED = 'CONNECTED'
+
+ +
+
+CHANNEL_STATUS_DISCONNECTED = 'DISCONNECTED'
+
+ +
+
+CHANNEL_STATUS_UNKNOWN = 'UNKNOWN'
+
+ +
+ +
+
+class com.vmware.vmc.model_client.VpnTunnelStatus(on_prem_subnet=None, traffic_stats=None, last_info_message=None, local_subnet=None, tunnel_state=None, failure_message=None, tunnel_status=None)
+

Bases: vmware.vapi.bindings.struct.VapiStruct

+
+

Tip

+

The arguments are used to initialize data attributes with the same +names.

+
+ +++ + + + +
Parameters: +
+
+
+TUNNEL_STATUS_CONNECTED = 'CONNECTED'
+
+ +
+
+TUNNEL_STATUS_DISCONNECTED = 'DISCONNECTED'
+
+ +
+
+TUNNEL_STATUS_UNKNOWN = 'UNKNOWN'
+
+ +
+ +
+
+class com.vmware.vmc.model_client.VpnTunnelTrafficStats(packets_out=None, packet_received_errors=None, rx_bytes_on_local_subnet=None, replay_errors=None, sequence_number_over_flow_errors=None, encryption_failures=None, integrity_errors=None, packet_sent_errors=None, decryption_failures=None, packets_in=None, tx_bytes_from_local_subnet=None)
+

Bases: vmware.vapi.bindings.struct.VapiStruct

+
+

Tip

+

The arguments are used to initialize data attributes with the same +names.

+
+ +++ + + + +
Parameters:
    +
  • packets_out (str or None) –
  • +
  • packet_received_errors (str or None) –
  • +
  • rx_bytes_on_local_subnet (str or None) –
  • +
  • replay_errors (str or None) –
  • +
  • sequence_number_over_flow_errors (str or None) –
  • +
  • encryption_failures (str or None) –
  • +
  • integrity_errors (str or None) –
  • +
  • packet_sent_errors (str or None) –
  • +
  • decryption_failures (str or None) –
  • +
  • packets_in (str or None) –
  • +
  • tx_bytes_from_local_subnet (str or None) –
  • +
+
+
+ +
+
+

com.vmware.vmc.orgs_client module

+
+ +

Bases: vmware.vapi.bindings.stub.VapiInterface

+ +++ + + + +
Parameters:config (vmware.vapi.bindings.stub.StubConfiguration) – Configuration to be used for creating the stub.
+
+
+create(org)
+

Gets a link that can be used on a customer’s account to start the +linking process.

+ +++ + + + + + +
Parameters:org (str) – Organization identifier. (required)
Raise:com.vmware.vapi.std.errors_client.Error +Generic Error
+
+ +
+ +
+
+class com.vmware.vmc.orgs_client.OfferInstances(config)
+

Bases: vmware.vapi.bindings.stub.VapiInterface

+ +++ + + + +
Parameters:config (vmware.vapi.bindings.stub.StubConfiguration) – Configuration to be used for creating the stub.
+
+
+list(org, region, product_type)
+

List all offers available for the specific product type in the specific +region

+ +++ + + + + + + + + + + + + + +
Parameters:
    +
  • org (str) – Organization identifier. (required)
  • +
  • region (str) – Region for the offer (required)
  • +
  • product_type (str) – Type of the product in offers (required)
  • +
+
Return type:

com.vmware.vmc.model_client.OfferInstancesHolder

+
Returns:

com.vmware.vmc.model.OfferInstancesHolder

+
Raise:

com.vmware.vapi.std.errors_client.InvalidRequest +Bad Request. Type of the product not supported.

+
Raise:

com.vmware.vapi.std.errors_client.Unauthorized +Forbidden

+
Raise:

com.vmware.vapi.std.errors_client.Unauthenticated +Unauthorized

+
+
+ +
+ +
+
+class com.vmware.vmc.orgs_client.Providers(config)
+

Bases: vmware.vapi.bindings.stub.VapiInterface

+ +++ + + + +
Parameters:config (vmware.vapi.bindings.stub.StubConfiguration) – Configuration to be used for creating the stub.
+
+
+list(org)
+
+++ + + + + + + + + + + + + + +
Parameters:org (str) – Organization identifier. (required)
Return type:list of com.vmware.vmc.model_client.AwsCloudProvider
Returns:
Raise:com.vmware.vapi.std.errors_client.Unauthorized +Forbidden
Raise:com.vmware.vapi.std.errors_client.NotFound +Organization doesn’t exist
Raise:com.vmware.vapi.std.errors_client.Unauthenticated +Unauthorized
+
+ +
+ +
+
+class com.vmware.vmc.orgs_client.SddcTemplates(config)
+

Bases: vmware.vapi.bindings.stub.VapiInterface

+ +++ + + + +
Parameters:config (vmware.vapi.bindings.stub.StubConfiguration) – Configuration to be used for creating the stub.
+
+
+delete(org, template_id)
+

Delete SDDC template identified by given id.

+ +++ + + + + + + + + + + + +
Parameters:
    +
  • org (str) – Organization identifier. (required)
  • +
  • template_id (str) – SDDC Template identifier (required)
  • +
+
Return type:

com.vmware.vmc.model_client.Task

+
Returns:

com.vmware.vmc.model.Task

+
Raise:

com.vmware.vapi.std.errors_client.Unauthorized +Forbidden

+
Raise:

com.vmware.vapi.std.errors_client.Unauthenticated +Unauthorized

+
+
+ +
+
+get(org, template_id)
+

Get configuration template by given template id.

+ +++ + + + + + + + + + + + + + +
Parameters:
    +
  • org (str) – Organization identifier. (required)
  • +
  • template_id (str) – SDDC Template identifier (required)
  • +
+
Return type:

com.vmware.vmc.model_client.SddcTemplate

+
Returns:

com.vmware.vmc.model.SddcTemplate

+
Raise:

com.vmware.vapi.std.errors_client.Unauthorized +Forbidden

+
Raise:

com.vmware.vapi.std.errors_client.NotFound +Cannot find the SDDC Template with given identifier

+
Raise:

com.vmware.vapi.std.errors_client.Unauthenticated +Unauthorized

+
+
+ +
+
+list(org)
+

List all available SDDC configuration templates in an organization

+ +++ + + + + + + + + + + + +
Parameters:org (str) – Organization identifier. (required)
Return type:list of com.vmware.vmc.model_client.SddcTemplate
Returns:
Raise:com.vmware.vapi.std.errors_client.Unauthorized +Forbidden
Raise:com.vmware.vapi.std.errors_client.Unauthenticated +Unauthorized
+
+ +
+ +
+
+class com.vmware.vmc.orgs_client.Sddcs(config)
+

Bases: vmware.vapi.bindings.stub.VapiInterface

+ +++ + + + +
Parameters:config (vmware.vapi.bindings.stub.StubConfiguration) – Configuration to be used for creating the stub.
+
+
+create(org, sddc_config)
+

Provision an SDDC in target cloud

+ +++ + + + + + + + + + + + +
Parameters: +
Return type:

com.vmware.vmc.model_client.Task

+
Returns:

com.vmware.vmc.model.Task

+
Raise:

com.vmware.vapi.std.errors_client.Unauthorized +Forbidden

+
Raise:

com.vmware.vapi.std.errors_client.Unauthenticated +Unauthorized

+
+
+ +
+
+delete(org, sddc, retain_configuration=None, template_name=None)
+

Delete SDDC

+ +++ + + + + + + + + + + + + + + + +
Parameters:
    +
  • org (str) – Organization identifier. (required)
  • +
  • sddc (str) – Sddc Identifier. (required)
  • +
  • retain_configuration (str or None) – If = ‘true’, the SDDC’s configuration is retained as a template for +later use. This flag is applicable only to SDDCs in ACTIVE state. +(optional)
  • +
  • template_name (str or None) – Only applicable when retainConfiguration is also set to ‘true’. +When set, this value will be used as the name of the SDDC +configuration template generated. (optional)
  • +
+
Return type:

com.vmware.vmc.model_client.Task

+
Returns:

com.vmware.vmc.model.Task

+
Raise:

com.vmware.vapi.std.errors_client.InvalidRequest +The sddc is not in a state that’s valid for deletion

+
Raise:

com.vmware.vapi.std.errors_client.Unauthorized +Access not allowed to the operation for the current user

+
Raise:

com.vmware.vapi.std.errors_client.NotFound +Cannot find the SDDC with given identifier

+
Raise:

com.vmware.vapi.std.errors_client.Unauthenticated +Unauthorized

+
+
+ +
+
+get(org, sddc)
+

Get SDDC

+ +++ + + + + + + + + + + + + + +
Parameters:
    +
  • org (str) – Organization identifier. (required)
  • +
  • sddc (str) – Sddc Identifier. (required)
  • +
+
Return type:

com.vmware.vmc.model_client.Sddc

+
Returns:

com.vmware.vmc.model.Sddc

+
Raise:

com.vmware.vapi.std.errors_client.Unauthorized +Forbidden

+
Raise:

com.vmware.vapi.std.errors_client.NotFound +Cannot find the SDDC with given identifier

+
Raise:

com.vmware.vapi.std.errors_client.Unauthenticated +Unauthorized

+
+
+ +
+
+list(org)
+

List all the SDDCs of an organization

+ +++ + + + + + + + + + + + +
Parameters:org (str) – Organization identifier. (required)
Return type:list of com.vmware.vmc.model_client.Sddc
Returns:
Raise:com.vmware.vapi.std.errors_client.Unauthorized +Forbidden
Raise:com.vmware.vapi.std.errors_client.Unauthenticated +Unauthorized
+
+ +
+ +
+
+class com.vmware.vmc.orgs_client.StubFactory(stub_config)
+

Bases: vmware.vapi.bindings.stub.StubFactoryBase

+

Initialize StubFactoryBase

+ +++ + + + +
Parameters:stub_config (vmware.vapi.bindings.stub.StubConfiguration) – Stub config instance
+
+ +
+
+class com.vmware.vmc.orgs_client.Subscriptions(config)
+

Bases: vmware.vapi.bindings.stub.VapiInterface

+ +++ + + + +
Parameters:config (vmware.vapi.bindings.stub.StubConfiguration) – Configuration to be used for creating the stub.
+
+
+GET_0_OFFER_TYPE_ON_DEMAND = 'ON_DEMAND'
+

Possible value for offerType of method Subscriptions.get_0().

+
+ +
+
+GET_0_OFFER_TYPE_TERM = 'TERM'
+

Possible value for offerType of method Subscriptions.get_0().

+
+ +
+
+create(org, subscription_request)
+

Initiates the creation of a subscription

+ +++ + + + + + + + + + + + + + +
Parameters: +
Return type:

com.vmware.vmc.model_client.Task

+
Returns:

com.vmware.vmc.model.Task

+
Raise:

com.vmware.vapi.std.errors_client.InternalServerError +Server error. Check retryable flag to see if request should be +retried.

+
Raise:

com.vmware.vapi.std.errors_client.Unauthorized +Forbidden

+
Raise:

com.vmware.vapi.std.errors_client.Unauthenticated +Unauthorized

+
+
+ +
+
+delete(org, subscription)
+

Initiates subscription cancellation. Returns Task object.

+ +++ + + + + + + + + + + + + + + + +
Parameters:
    +
  • org (str) – Organization identifier. (required)
  • +
  • subscription (str) – SubscriptionId for an sddc. (required)
  • +
+
Return type:

com.vmware.vmc.model_client.Task

+
Returns:

com.vmware.vmc.model.Task

+
Raise:

com.vmware.vapi.std.errors_client.InvalidRequest +Bad Request. Check if the subscription id is still valid and if the +Sddc is in a state that can be deleted. More information will be +available in the error_messages field.

+
Raise:

com.vmware.vapi.std.errors_client.InternalServerError +Server error. Check retryable flag to see if request should be +retried.

+
Raise:

com.vmware.vapi.std.errors_client.Unauthorized +Forbidden

+
Raise:

com.vmware.vapi.std.errors_client.Unauthenticated +Unauthorized

+
+
+ +
+
+get(org, subscription)
+

Get subscription details for a given subscription id

+ +++ + + + + + + + + + + + +
Parameters:
    +
  • org (str) – Organization identifier. (required)
  • +
  • subscription (str) – SubscriptionId for an sddc. (required)
  • +
+
Return type:

com.vmware.vmc.model_client.SubscriptionDetails

+
Returns:

com.vmware.vmc.model.SubscriptionDetails

+
Raise:

com.vmware.vapi.std.errors_client.InternalServerError +Server error. Check retryable flag to see if request should be +retried.

+
Raise:

com.vmware.vapi.std.errors_client.NotFound +Not Found

+
+
+ +
+
+get_0(org, offer_type=None)
+

Returns all subscriptions for a given org id

+ +++ + + + + + + + + + + + + + +
Parameters:
    +
  • org (str) – Organization identifier. (required)
  • +
  • offer_type (str or None) – Offer Type \* `ON_DEMAND` - on-demand subscription \* +`TERM` - term subscription \* All subscriptions if not +specified (optional)
  • +
+
Return type:

list of com.vmware.vmc.model_client.SubscriptionDetails

+
Returns:

+
Raise:

com.vmware.vapi.std.errors_client.InternalServerError +Server error. Check retryable flag to see if request should be +retried.

+
Raise:

com.vmware.vapi.std.errors_client.NotFound +Not Found

+
Raise:

com.vmware.vapi.std.errors_client.Unauthenticated +Unauthorized

+
+
+ +
+ +
+
+class com.vmware.vmc.orgs_client.Tasks(config)
+

Bases: vmware.vapi.bindings.stub.VapiInterface

+ +++ + + + +
Parameters:config (vmware.vapi.bindings.stub.StubConfiguration) – Configuration to be used for creating the stub.
+
+
+get(org, task)
+

Retrieve details of a task.

+ +++ + + + + + + + + + + + + + +
Parameters:
    +
  • org (str) – Organization identifier. (required)
  • +
  • task (str) – task Id (required)
  • +
+
Return type:

com.vmware.vmc.model_client.Task

+
Returns:

com.vmware.vmc.model.Task

+
Raise:

com.vmware.vapi.std.errors_client.Unauthorized +Forbidden

+
Raise:

com.vmware.vapi.std.errors_client.NotFound +Cannot find the task with given identifier

+
Raise:

com.vmware.vapi.std.errors_client.Unauthenticated +Unauthorized

+
+
+ +
+
+list(org, filter=None)
+

List all tasks with optional filtering.

+ +++ + + + + + + + + + + + +
Parameters:
    +
  • org (str) – Organization identifier. (required)
  • +
  • filter (str or None) – Filter expression Binary Operators: ‘eq’, ‘ne’, ‘lt’, ‘gt’, ‘le’, +‘ge’ Nested attributes are composed using ‘.’ Dates must be +formatted as YYYY-MM-DD Strings should enclosed in single quotes, +escape single quote with two single quotes The special literal +‘created’ will be mapped to the time the resource was first +created. NOTE: currently only ANDs of ORs is implemented. NOTE2: +currently only range operators are implemented for created date. +Examples: - $filter=(created gt ‘2016-08-09’) and (org_id eq +278710ff4e-6b6d-4d4e-aefb-ca637f38609e) - $filter=(created eq +‘2016-08-09’) - $filter=(created gt ‘2016-08-09’) and (sddc.status +eq ‘READY’) (optional)
  • +
+
Return type:

list of com.vmware.vmc.model_client.Task

+
Returns:

+
Raise:

com.vmware.vapi.std.errors_client.Unauthorized +Forbidden

+
Raise:

com.vmware.vapi.std.errors_client.Unauthenticated +Unauthorized

+
+
+ +
+
+update(org, task, action=None)
+

Request that a running task be canceled. This is advisory only, some +tasks may not be cancelable, and some tasks might take an arbitrary +amount of time to respond to a cancelation request. The task must be +monitored to determine subsequent status.

+ +++ + + + + + + + + + + + + + + + +
Parameters:
    +
  • org (str) – Organization identifier. (required)
  • +
  • task (str) – task Id (required)
  • +
  • action (str or None) – If = ‘cancel’, task will be canceled (optional)
  • +
+
Return type:

com.vmware.vmc.model_client.Task

+
Returns:

com.vmware.vmc.model.Task

+
Raise:

com.vmware.vapi.std.errors_client.InvalidRequest +Invalid action or bad argument

+
Raise:

com.vmware.vapi.std.errors_client.Unauthorized +Forbidden

+
Raise:

com.vmware.vapi.std.errors_client.NotFound +Cannot find the task with given identifier

+
Raise:

com.vmware.vapi.std.errors_client.Unauthenticated +Unauthorized

+
+
+ +
+ +
+
+ + +
+ +
+ + +
+
+ +
+ +
+ + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/vmc/com.vmware.vmc.orgs.html b/vmc/com.vmware.vmc.orgs.html new file mode 100644 index 00000000..edbb1209 --- /dev/null +++ b/vmc/com.vmware.vmc.orgs.html @@ -0,0 +1,1165 @@ + + + + + + + + + + + com.vmware.vmc.orgs package — VMware Cloud on AWS Console API 1.2.0 documentation + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + + + +
+ + + + + +
+ +
+ + + + + + + + + + + + + + + + + +
+ + + + +
+
+
+
+ +
+

com.vmware.vmc.orgs package

+
+

Subpackages

+
+ +
+
+
+

Submodules

+
+ +
+

com.vmware.vmc.orgs.sddcs_client module

+
+
+class com.vmware.vmc.orgs.sddcs_client.Clusters(config)
+

Bases: vmware.vapi.bindings.stub.VapiInterface

+ +++ + + + +
Parameters:config (vmware.vapi.bindings.stub.StubConfiguration) – Configuration to be used for creating the stub.
+
+
+create(org, sddc, cluster_config)
+

Add a cluster in the target sddc

+ +++ + + + + + + + + + + + + + + + +
Parameters: +
Return type:

com.vmware.vmc.model_client.Task

+
Returns:

com.vmware.vmc.model.Task

+
Raise:

com.vmware.vapi.std.errors_client.InvalidRequest +The sddc is not in a state that’s valid for updates

+
Raise:

com.vmware.vapi.std.errors_client.Unauthorized +Access not allowed to the operation for the current user

+
Raise:

com.vmware.vapi.std.errors_client.NotFound +Cannot find the cluster with the given identifier

+
Raise:

com.vmware.vapi.std.errors_client.Unauthenticated +Unauthorized

+
+
+ +
+
+delete(org, sddc, cluster)
+

This is a force operation which will delete the cluster even if there +can be a data loss. Before calling this operation, all the VMs should +be powered off.

+ +++ + + + + + + + + + + + + + + + +
Parameters:
    +
  • org (str) – Organization identifier. (required)
  • +
  • sddc (str) – Sddc Identifier. (required)
  • +
  • cluster (str) – cluster identifier (required)
  • +
+
Return type:

com.vmware.vmc.model_client.Task

+
Returns:

com.vmware.vmc.model.Task

+
Raise:

com.vmware.vapi.std.errors_client.InvalidRequest +The sddc is not in a state that’s valid for updates

+
Raise:

com.vmware.vapi.std.errors_client.Unauthorized +Access not allowed to the operation for the current user

+
Raise:

com.vmware.vapi.std.errors_client.NotFound +Cannot find the cluster with the given id

+
Raise:

com.vmware.vapi.std.errors_client.Unauthenticated +Unauthorized

+
+
+ +
+ +
+
+class com.vmware.vmc.orgs.sddcs_client.Convert(config)
+

Bases: vmware.vapi.bindings.stub.VapiInterface

+ +++ + + + +
Parameters:config (vmware.vapi.bindings.stub.StubConfiguration) – Configuration to be used for creating the stub.
+
+
+create(org, sddc)
+

This API converts a one host SDDC to a four node DEFAULT SDDC. It takes +care of configuring and upgrading the vCenter configurations on the +SDDC for high availability and data redundancy.

+ +++ + + + + + + + + + + + + + + + +
Parameters:
    +
  • org (str) – Organization identifier. (required)
  • +
  • sddc (str) – Sddc Identifier. (required)
  • +
+
Return type:

com.vmware.vmc.model_client.Task

+
Returns:

com.vmware.vmc.model.Task

+
Raise:

com.vmware.vapi.std.errors_client.InvalidRequest +The sddc is not in a state that’s valid for updates, Method not +allowed

+
Raise:

com.vmware.vapi.std.errors_client.Unauthorized +Access not allowed to the operation for the current user

+
Raise:

com.vmware.vapi.std.errors_client.NotFound +Cannot find the SDDC with given identifier

+
Raise:

com.vmware.vapi.std.errors_client.Unauthenticated +Unauthorized

+
+
+ +
+ +
+
+class com.vmware.vmc.orgs.sddcs_client.Esxs(config)
+

Bases: vmware.vapi.bindings.stub.VapiInterface

+ +++ + + + +
Parameters:config (vmware.vapi.bindings.stub.StubConfiguration) – Configuration to be used for creating the stub.
+
+
+create(org, sddc, esx_config, action=None)
+

Add/Remove one or more ESX hosts in the target cloud

+ +++ + + + + + + + + + + + + + + + +
Parameters:
    +
  • org (str) – Organization identifier. (required)
  • +
  • sddc (str) – Sddc Identifier. (required)
  • +
  • esx_config (com.vmware.vmc.model_client.EsxConfig) – esxConfig (required)
  • +
  • action (str or None) – If = ‘add’, will add the esx. If = ‘remove’, will delete the +esx/esxs bound to a single cluster (Cluster Id is mandatory for non +cluster 1 esx remove). If = ‘force-remove’, will delete the esx +even if it can lead to data loss (This is an privileged operation). +If = ‘addToAll’, will add esxs to all clusters in the SDDC (This is +an privileged operation). If = ‘removeFromAll’, will delete the +esxs from all clusters in the SDDC (This is an privileged +operation). Default behaviour is ‘add’ (optional)
  • +
+
Return type:

com.vmware.vmc.model_client.Task

+
Returns:

com.vmware.vmc.model.Task

+
Raise:

com.vmware.vapi.std.errors_client.InvalidRequest +The sddc is not in a state that’s valid for updates

+
Raise:

com.vmware.vapi.std.errors_client.Unauthorized +Access not allowed to the operation for the current user

+
Raise:

com.vmware.vapi.std.errors_client.NotFound +Cannot find the SDDC with the given identifier

+
Raise:

com.vmware.vapi.std.errors_client.Unauthenticated +Unauthorized

+
+
+ +
+ +
+
+class com.vmware.vmc.orgs.sddcs_client.Publicips(config)
+

Bases: vmware.vapi.bindings.stub.VapiInterface

+ +++ + + + +
Parameters:config (vmware.vapi.bindings.stub.StubConfiguration) – Configuration to be used for creating the stub.
+
+
+create(org, sddc, spec)
+

Allocate public IPs for a SDDC

+ +++ + + + + + + + + + + + + + + + +
Parameters: +
Return type:

com.vmware.vmc.model_client.Task

+
Returns:

com.vmware.vmc.model.Task

+
Raise:

com.vmware.vapi.std.errors_client.InvalidRequest +The sddc is not in a state that’s valid for updates

+
Raise:

com.vmware.vapi.std.errors_client.Unauthorized +Access not allowed to the operation for the current user

+
Raise:

com.vmware.vapi.std.errors_client.NotFound +Cannot find the SDDC with given identifier

+
Raise:

com.vmware.vapi.std.errors_client.Unauthenticated +Unauthorized

+
+
+ +
+
+delete(org, sddc, id)
+

Free one public IP for a SDDC

+ +++ + + + + + + + + + + + + + + + +
Parameters:
    +
  • org (str) – Organization identifier. (required)
  • +
  • sddc (str) – Sddc Identifier. (required)
  • +
  • id (str) – ip allocation id (required)
  • +
+
Return type:

com.vmware.vmc.model_client.Task

+
Returns:

com.vmware.vmc.model.Task

+
Raise:

com.vmware.vapi.std.errors_client.InvalidRequest +The sddc is not in a state that’s valid for updates

+
Raise:

com.vmware.vapi.std.errors_client.Unauthorized +Access not allowed to the operation for the current user

+
Raise:

com.vmware.vapi.std.errors_client.NotFound +Cannot find the public IP with given IP address

+
Raise:

com.vmware.vapi.std.errors_client.Unauthenticated +Unauthorized

+
+
+ +
+
+get(org, sddc, id)
+

Get one public IP for a SDDC

+ +++ + + + + + + + + + + + + + +
Parameters:
    +
  • org (str) – Organization identifier. (required)
  • +
  • sddc (str) – Sddc Identifier. (required)
  • +
  • id (str) – ip allocation id (required)
  • +
+
Return type:

com.vmware.vmc.model_client.SddcPublicIp

+
Returns:

com.vmware.vmc.model.SddcPublicIp

+
Raise:

com.vmware.vapi.std.errors_client.Unauthorized +Forbidden

+
Raise:

com.vmware.vapi.std.errors_client.NotFound +Cannot find the public IP with given IP address

+
Raise:

com.vmware.vapi.std.errors_client.Unauthenticated +Unauthorized

+
+
+ +
+
+list(org, sddc)
+

list all public IPs for a SDDC

+ +++ + + + + + + + + + + + + + +
Parameters:
    +
  • org (str) – Organization identifier. (required)
  • +
  • sddc (str) – Sddc Identifier. (required)
  • +
+
Return type:

list of com.vmware.vmc.model_client.SddcPublicIp

+
Returns:

+
Raise:

com.vmware.vapi.std.errors_client.Unauthorized +Forbidden

+
Raise:

com.vmware.vapi.std.errors_client.NotFound +Cannot find the SDDC with given identifier

+
Raise:

com.vmware.vapi.std.errors_client.Unauthenticated +Unauthorized

+
+
+ +
+
+update(org, sddc, id, action, sddc_public_ip_object)
+

Attach or detach a public IP to workload VM for a SDDC

+ +++ + + + + + + + + + + + + + + + +
Parameters:
    +
  • org (str) – Organization identifier. (required)
  • +
  • sddc (str) – Sddc Identifier. (required)
  • +
  • id (str) – ip allocation id (required)
  • +
  • action (str) – Type of action as ‘attach’, ‘detach’, ‘reattach’, or ‘rename’. For +‘attch’, the public IP must not be attached and +‘associated_private_ip’ in the payload needs to be set with a +workload VM private IP. For ‘detach’, the public IP must be +attached and ‘associated_private_ip’ in the payload should not be +set with any value. For ‘reattach’, the public IP must be attached +and ‘associated_private_ip’ in the payload needs to be set with a +new workload VM private IP. For ‘rename’, the ‘name’ in the payload +needs to have a new name string. (required)
  • +
  • sddc_public_ip_object (com.vmware.vmc.model_client.SddcPublicIp) – SddcPublicIp object to update (required)
  • +
+
Return type:

com.vmware.vmc.model_client.Task

+
Returns:

com.vmware.vmc.model.Task

+
Raise:

com.vmware.vapi.std.errors_client.InvalidRequest +The sddc is not in a state that’s valid for updates

+
Raise:

com.vmware.vapi.std.errors_client.Unauthorized +Access not allowed to the operation for the current user

+
Raise:

com.vmware.vapi.std.errors_client.NotFound +Cannot find the public IP with given IP address

+
Raise:

com.vmware.vapi.std.errors_client.Unauthenticated +Unauthorized

+
+
+ +
+ +
+
+class com.vmware.vmc.orgs.sddcs_client.SddcTemplate(config)
+

Bases: vmware.vapi.bindings.stub.VapiInterface

+ +++ + + + +
Parameters:config (vmware.vapi.bindings.stub.StubConfiguration) – Configuration to be used for creating the stub.
+
+
+get(org, sddc)
+

Get configuration template for an SDDC

+ +++ + + + + + + + + + + + + + + + +
Parameters:
    +
  • org (str) – Organization identifier. (required)
  • +
  • sddc (str) – Sddc Identifier. (required)
  • +
+
Return type:

com.vmware.vmc.model_client.SddcTemplate

+
Returns:

com.vmware.vmc.model.SddcTemplate

+
Raise:

com.vmware.vapi.std.errors_client.InvalidRequest +SDDC is in a state that cannot be use for generating configuration +template

+
Raise:

com.vmware.vapi.std.errors_client.Unauthorized +Forbidden

+
Raise:

com.vmware.vapi.std.errors_client.NotFound +Cannot find the SDDC with given identifier

+
Raise:

com.vmware.vapi.std.errors_client.Unauthenticated +Unauthorized

+
+
+ +
+ +
+
+class com.vmware.vmc.orgs.sddcs_client.StubFactory(stub_config)
+

Bases: vmware.vapi.bindings.stub.StubFactoryBase

+

Initialize StubFactoryBase

+ +++ + + + +
Parameters:stub_config (vmware.vapi.bindings.stub.StubConfiguration) – Stub config instance
+
+ +
+
+ + +
+ +
+ + +
+
+ +
+ +
+ + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/vmc/com.vmware.vmc.orgs.sddcs.html b/vmc/com.vmware.vmc.orgs.sddcs.html new file mode 100644 index 00000000..5f945998 --- /dev/null +++ b/vmc/com.vmware.vmc.orgs.sddcs.html @@ -0,0 +1,791 @@ + + + + + + + + + + + com.vmware.vmc.orgs.sddcs package — VMware Cloud on AWS Console API 1.2.0 documentation + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + + + +
+ + + + + +
+ +
+ + + + + + + + + + + + + + + + + +
+ + + + +
+
+
+
+ +
+

com.vmware.vmc.orgs.sddcs package

+ +
+

Submodules

+
+
+

com.vmware.vmc.orgs.sddcs.dns_client module

+
+
+class com.vmware.vmc.orgs.sddcs.dns_client.Private(config)
+

Bases: vmware.vapi.bindings.stub.VapiInterface

+ +++ + + + +
Parameters:config (vmware.vapi.bindings.stub.StubConfiguration) – Configuration to be used for creating the stub.
+
+
+update(org, sddc)
+

Update the DNS records of management VMs to use private IP addresses

+ +++ + + + + + + + + + + + + + +
Parameters:
    +
  • org (str) – Organization identifier. (required)
  • +
  • sddc (str) – Sddc Identifier. (required)
  • +
+
Return type:

com.vmware.vmc.model_client.Task

+
Returns:

com.vmware.vmc.model.Task

+
Raise:

com.vmware.vapi.std.errors_client.InvalidRequest +The sddc is not in a state that’s valid for updates or invalid body

+
Raise:

com.vmware.vapi.std.errors_client.Unauthorized +Forbidden

+
Raise:

com.vmware.vapi.std.errors_client.Unauthenticated +Unauthorized

+
+
+ +
+ +
+
+class com.vmware.vmc.orgs.sddcs.dns_client.Public(config)
+

Bases: vmware.vapi.bindings.stub.VapiInterface

+ +++ + + + +
Parameters:config (vmware.vapi.bindings.stub.StubConfiguration) – Configuration to be used for creating the stub.
+
+
+update(org, sddc)
+

Update the DNS records of management VMs to use public IP addresses

+ +++ + + + + + + + + + + + + + +
Parameters:
    +
  • org (str) – Organization identifier. (required)
  • +
  • sddc (str) – Sddc Identifier. (required)
  • +
+
Return type:

com.vmware.vmc.model_client.Task

+
Returns:

com.vmware.vmc.model.Task

+
Raise:

com.vmware.vapi.std.errors_client.InvalidRequest +The sddc is not in a state that’s valid for updates or invalid body

+
Raise:

com.vmware.vapi.std.errors_client.Unauthorized +Forbidden

+
Raise:

com.vmware.vapi.std.errors_client.Unauthenticated +Unauthorized

+
+
+ +
+ +
+
+class com.vmware.vmc.orgs.sddcs.dns_client.StubFactory(stub_config)
+

Bases: vmware.vapi.bindings.stub.StubFactoryBase

+

Initialize StubFactoryBase

+ +++ + + + +
Parameters:stub_config (vmware.vapi.bindings.stub.StubConfiguration) – Stub config instance
+
+ +
+
+

com.vmware.vmc.orgs.sddcs.mgw_client module

+
+
+class com.vmware.vmc.orgs.sddcs.mgw_client.Publicips(config)
+

Bases: vmware.vapi.bindings.stub.VapiInterface

+ +++ + + + +
Parameters:config (vmware.vapi.bindings.stub.StubConfiguration) – Configuration to be used for creating the stub.
+
+
+get(org, sddc, id)
+

Get one public IP for a SDDC

+ +++ + + + + + + + + + + + + + +
Parameters:
    +
  • org (str) – Organization identifier. (required)
  • +
  • sddc (str) – Sddc Identifier. (required)
  • +
  • id (str) – ip allocation id (required)
  • +
+
Return type:

com.vmware.vmc.model_client.SddcPublicIp

+
Returns:

com.vmware.vmc.model.SddcPublicIp

+
Raise:

com.vmware.vapi.std.errors_client.Unauthorized +Forbidden

+
Raise:

com.vmware.vapi.std.errors_client.NotFound +Cannot find the public IP with given IP address

+
Raise:

com.vmware.vapi.std.errors_client.Unauthenticated +Unauthorized

+
+
+ +
+
+list(org, sddc)
+

list all public IPs for the mgw of a SDDC

+ +++ + + + + + + + + + + + + + +
Parameters:
    +
  • org (str) – Organization identifier. (required)
  • +
  • sddc (str) – Sddc Identifier. (required)
  • +
+
Return type:

list of com.vmware.vmc.model_client.SddcPublicIp

+
Returns:

+
Raise:

com.vmware.vapi.std.errors_client.Unauthorized +Forbidden

+
Raise:

com.vmware.vapi.std.errors_client.NotFound +Cannot find the SDDC with given identifier

+
Raise:

com.vmware.vapi.std.errors_client.Unauthenticated +Unauthorized

+
+
+ +
+ +
+
+class com.vmware.vmc.orgs.sddcs.mgw_client.StubFactory(stub_config)
+

Bases: vmware.vapi.bindings.stub.StubFactoryBase

+

Initialize StubFactoryBase

+ +++ + + + +
Parameters:stub_config (vmware.vapi.bindings.stub.StubConfiguration) – Stub config instance
+
+ +
+
+

com.vmware.vmc.orgs.sddcs.networks_client module

+
+
+class com.vmware.vmc.orgs.sddcs.networks_client.Edges(config)
+

Bases: vmware.vapi.bindings.stub.VapiInterface

+ +++ + + + +
Parameters:config (vmware.vapi.bindings.stub.StubConfiguration) – Configuration to be used for creating the stub.
+
+
+get(org, sddc, edge_type, prev_edge_id=None, start_index=None, page_size=None, sort_order_ascending=None, sort_by=None, filter=None, ld_rname=None)
+

Retrieve information about all management and compute gateways and +other routers (NSX Edges).

+ +++ + + + + + + + + + + + + + +
Parameters:
    +
  • org (str) – Organization identifier. (required)
  • +
  • sddc (str) – Sddc Identifier. (required)
  • +
  • edge_type (str) – Retrieve records matching NSX Edge type (‘gatewayServices’ or +‘distributedRouter’). Specify gatewayServices to find management +and compute gateways in your SDDC. (required)
  • +
  • prev_edge_id (str or None) – Provide Edge ID as prevEdgeId to serve as reference for startIndex. +(optional)
  • +
  • start_index (long or None) – Start index for the current page. Default is 0. (optional)
  • +
  • page_size (long or None) – Number of records per page. Default is 256. (optional)
  • +
  • sort_order_ascending (bool or None) – Set to true to fetch records in ascending sorted order. (optional)
  • +
  • sort_by (str or None) – Sort records using one of the column names (id, name, description, +tenantId, size, enableFips). (optional)
  • +
  • filter (str or None) – Filter records matching the NSX Edge ID, name or description. +(optional)
  • +
  • ld_rname (str or None) – (optional)
  • +
+
Return type:

com.vmware.vmc.model_client.PagedEdgeList

+
Returns:

com.vmware.vmc.model.PagedEdgeList

+
Raise:

com.vmware.vapi.std.errors_client.InvalidRequest +Bad request. Request object passed is invalid.

+
Raise:

com.vmware.vapi.std.errors_client.Unauthorized +Forbidden. Authorization header not provided

+
Raise:

com.vmware.vapi.std.errors_client.NotFound +Not found. Requested object not found.

+
+
+ +
+ +
+
+class com.vmware.vmc.orgs.sddcs.networks_client.Logical(config)
+

Bases: vmware.vapi.bindings.stub.VapiInterface

+ +++ + + + +
Parameters:config (vmware.vapi.bindings.stub.StubConfiguration) – Configuration to be used for creating the stub.
+
+
+create(org, sddc, sddc_network)
+

Create a network in an SDDC.

+ +++ + + + + + + + + + +
Parameters: +
Raise:

com.vmware.vapi.std.errors_client.InvalidRequest +Bad request. Request object passed is invalid.

+
Raise:

com.vmware.vapi.std.errors_client.Unauthorized +Forbidden. Authorization header not provided.

+
Raise:

com.vmware.vapi.std.errors_client.NotFound +Not found. Requested object not found.

+
+
+ +
+
+delete(org, sddc, network_id)
+

Delete a network in an SDDC.

+ +++ + + + + + + + + + +
Parameters:
    +
  • org (str) – Organization identifier. (required)
  • +
  • sddc (str) – Sddc Identifier. (required)
  • +
  • network_id (str) – Logical Network Identifier (required)
  • +
+
Raise:

com.vmware.vapi.std.errors_client.InvalidRequest +Bad request. Request object passed is invalid.

+
Raise:

com.vmware.vapi.std.errors_client.Unauthorized +Forbidden. Authorization header not provided.

+
Raise:

com.vmware.vapi.std.errors_client.NotFound +Not found. Requested object not found.

+
+
+ +
+
+get(org, sddc, network_id)
+

Retrieve information about a network in an SDDC.

+ +++ + + + + + + + + + + + + + +
Parameters:
    +
  • org (str) – Organization identifier. (required)
  • +
  • sddc (str) – Sddc Identifier. (required)
  • +
  • network_id (str) – Logical Network Identifier (required)
  • +
+
Return type:

com.vmware.vmc.model_client.SddcNetwork

+
Returns:

com.vmware.vmc.model.SddcNetwork

+
Raise:

com.vmware.vapi.std.errors_client.InvalidRequest +Bad request. Request object passed is invalid.

+
Raise:

com.vmware.vapi.std.errors_client.Unauthorized +Forbidden. Authorization header not provided

+
Raise:

com.vmware.vapi.std.errors_client.NotFound +Not found. Requested object not found.

+
+
+ +
+
+get_0(org, sddc, page_size=None, start_index=None, prev_sddc_network_id=None, sort_order_ascending=None)
+

Retrieve all networks in an SDDC.

+ +++ + + + + + + + + + + + + + +
Parameters:
    +
  • org (str) – Organization identifier. (required)
  • +
  • sddc (str) – Sddc Identifier. (required)
  • +
  • page_size (long or None) – Page size for pagination. (optional)
  • +
  • start_index (long or None) – Start index of page. (optional)
  • +
  • prev_sddc_network_id (str or None) – Previous logical network id. (optional)
  • +
  • sort_order_ascending (bool or None) – Sort order ascending. (optional)
  • +
+
Return type:

com.vmware.vmc.model_client.DataPageSddcNetwork

+
Returns:

com.vmware.vmc.model.DataPageSddcNetwork

+
Raise:

com.vmware.vapi.std.errors_client.InvalidRequest +Bad request. Request object passed is invalid.

+
Raise:

com.vmware.vapi.std.errors_client.Unauthorized +Forbidden. Authorization header not provided

+
Raise:

com.vmware.vapi.std.errors_client.NotFound +Not found. Requested object not found.

+
+
+ +
+
+update(org, sddc, network_id, sddc_network)
+

Modify a network in an SDDC.

+ +++ + + + + + + + + + +
Parameters:
    +
  • org (str) – Organization identifier. (required)
  • +
  • sddc (str) – Sddc Identifier. (required)
  • +
  • network_id (str) – Logical Network Identifier (required)
  • +
  • sddc_network (com.vmware.vmc.model_client.SddcNetwork) – (required)
  • +
+
Raise:

com.vmware.vapi.std.errors_client.InvalidRequest +Bad request. Request object passed is invalid.

+
Raise:

com.vmware.vapi.std.errors_client.Unauthorized +Forbidden. Authorization header not provided.

+
Raise:

com.vmware.vapi.std.errors_client.NotFound +Not found. Requested object not found.

+
+
+ +
+ +
+
+class com.vmware.vmc.orgs.sddcs.networks_client.StubFactory(stub_config)
+

Bases: vmware.vapi.bindings.stub.StubFactoryBase

+

Initialize StubFactoryBase

+ +++ + + + +
Parameters:stub_config (vmware.vapi.bindings.stub.StubConfiguration) – Stub config instance
+
+ +
+
+ + +
+ +
+ + +
+
+ +
+ +
+ + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/vmc/com.vmware.vmc.orgs.sddcs.networks.cgws.html b/vmc/com.vmware.vmc.orgs.sddcs.networks.cgws.html new file mode 100644 index 00000000..a3a130c6 --- /dev/null +++ b/vmc/com.vmware.vmc.orgs.sddcs.networks.cgws.html @@ -0,0 +1,384 @@ + + + + + + + + + + + com.vmware.vmc.orgs.sddcs.networks.cgws package — VMware Cloud on AWS Console API 1.2.0 documentation + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + + + +
+ + + + + +
+ +
+ + + + + + + + + + + + + + + + + +
+ + + + +
+
+
+
+ +
+

com.vmware.vmc.orgs.sddcs.networks.cgws package

+
+

Submodules

+
+
+

com.vmware.vmc.orgs.sddcs.networks.cgws.l2vpn_client module

+
+
+class com.vmware.vmc.orgs.sddcs.networks.cgws.l2vpn_client.Config(config)
+

Bases: vmware.vapi.bindings.stub.VapiInterface

+ +++ + + + +
Parameters:config (vmware.vapi.bindings.stub.StubConfiguration) – Configuration to be used for creating the stub.
+
+
+delete(org, sddc, edge_id)
+

Delete SDDC L2 VPN configuration.

+ +++ + + + + + + + + + +
Parameters:
    +
  • org (str) – Organization identifier. (required)
  • +
  • sddc (str) – Sddc Identifier. (required)
  • +
  • edge_id (str) – Compute Gateway Edge Identifier (required)
  • +
+
Raise:

com.vmware.vapi.std.errors_client.InvalidRequest +Bad request. Request object passed is invalid.

+
Raise:

com.vmware.vapi.std.errors_client.Unauthorized +Forbidden. Authorization header not provided.

+
Raise:

com.vmware.vapi.std.errors_client.NotFound +Not found. Requested object not found.

+
+
+ +
+
+get(org, sddc, edge_id, show_sensitive_data=None)
+

Retrieve SDDC L2 VPN configuration.

+ +++ + + + + + + + + + + + + + +
Parameters:
    +
  • org (str) – Organization identifier. (required)
  • +
  • sddc (str) – Sddc Identifier. (required)
  • +
  • edge_id (str) – Compute Gateway Edge Identifier (required)
  • +
  • show_sensitive_data (bool or None) – (optional)
  • +
+
Return type:

com.vmware.vmc.model_client.Nsxl2vpn

+
Returns:

com.vmware.vmc.model.Nsxl2vpn

+
Raise:

com.vmware.vapi.std.errors_client.InvalidRequest +Bad request. Request object passed is invalid.

+
Raise:

com.vmware.vapi.std.errors_client.Unauthorized +Forbidden. Authorization header not provided

+
Raise:

com.vmware.vapi.std.errors_client.NotFound +Not found. Requested object not found.

+
+
+ +
+
+update(org, sddc, edge_id, nsxl2vpn)
+

Modify SDDC L2 VPN configuration

+ +++ + + + + + + + + + +
Parameters:
    +
  • org (str) – Organization identifier. (required)
  • +
  • sddc (str) – Sddc Identifier. (required)
  • +
  • edge_id (str) – Compute Gateway Edge Identifier (required)
  • +
  • nsxl2vpn (com.vmware.vmc.model_client.Nsxl2vpn) – (required)
  • +
+
Raise:

com.vmware.vapi.std.errors_client.InvalidRequest +Bad request. Request object passed is invalid.

+
Raise:

com.vmware.vapi.std.errors_client.Unauthorized +Forbidden. Authorization header not provided.

+
Raise:

com.vmware.vapi.std.errors_client.NotFound +Not found. Requested object not found.

+
+
+ +
+ +
+
+class com.vmware.vmc.orgs.sddcs.networks.cgws.l2vpn_client.StubFactory(stub_config)
+

Bases: vmware.vapi.bindings.stub.StubFactoryBase

+

Initialize StubFactoryBase

+ +++ + + + +
Parameters:stub_config (vmware.vapi.bindings.stub.StubConfiguration) – Stub config instance
+
+ +
+
+ + +
+ +
+ + +
+
+ +
+ +
+ + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/vmc/com.vmware.vmc.orgs.sddcs.networks.edges.firewall.html b/vmc/com.vmware.vmc.orgs.sddcs.networks.edges.firewall.html new file mode 100644 index 00000000..a9b2e0a7 --- /dev/null +++ b/vmc/com.vmware.vmc.orgs.sddcs.networks.edges.firewall.html @@ -0,0 +1,423 @@ + + + + + + + + + + + com.vmware.vmc.orgs.sddcs.networks.edges.firewall package — VMware Cloud on AWS Console API 1.2.0 documentation + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + + + +
+ + + + + +
+ +
+ + + + + + + + + + + + + + + + + +
+ + + + +
+
+
+
+ +
+

com.vmware.vmc.orgs.sddcs.networks.edges.firewall package

+
+

Submodules

+
+
+

com.vmware.vmc.orgs.sddcs.networks.edges.firewall.config_client module

+
+
+class com.vmware.vmc.orgs.sddcs.networks.edges.firewall.config_client.Rules(config)
+

Bases: vmware.vapi.bindings.stub.VapiInterface

+ +++ + + + +
Parameters:config (vmware.vapi.bindings.stub.StubConfiguration) – Configuration to be used for creating the stub.
+
+
+add(org, sddc, edge_id, firewall_rules)
+

Append firewall rules for a management or compute gateway (NSX Edge).

+ +++ + + + + + + + + + +
Parameters:
    +
  • org (str) – Organization identifier. (required)
  • +
  • sddc (str) – Sddc Identifier. (required)
  • +
  • edge_id (str) – Edge Identifier. (required)
  • +
  • firewall_rules (com.vmware.vmc.model_client.FirewallRules) – (required)
  • +
+
Raise:

com.vmware.vapi.std.errors_client.InvalidRequest +Bad request. Request object passed is invalid.

+
Raise:

com.vmware.vapi.std.errors_client.Unauthorized +Forbidden. Authorization header not provided.

+
Raise:

com.vmware.vapi.std.errors_client.NotFound +Not found. Requested object not found.

+
+
+ +
+
+delete(org, sddc, edge_id, rule_id)
+

Delete a specific firewall rule for a management or compute gateway +(NSX Edge).

+ +++ + + + + + + + + + +
Parameters:
    +
  • org (str) – Organization identifier. (required)
  • +
  • sddc (str) – Sddc Identifier. (required)
  • +
  • edge_id (str) – Edge Identifier. (required)
  • +
  • rule_id (long) – Rule Identifier. (required)
  • +
+
Raise:

com.vmware.vapi.std.errors_client.InvalidRequest +Bad request. Request object passed is invalid.

+
Raise:

com.vmware.vapi.std.errors_client.Unauthorized +Forbidden. Authorization header not provided.

+
Raise:

com.vmware.vapi.std.errors_client.NotFound +Not found. Requested object not found.

+
+
+ +
+
+get(org, sddc, edge_id, rule_id)
+

Retrieve a specific firewall rule for a management or compute gateway +(NSX Edge).

+ +++ + + + + + + + + + + + + + +
Parameters:
    +
  • org (str) – Organization identifier. (required)
  • +
  • sddc (str) – Sddc Identifier. (required)
  • +
  • edge_id (str) – Edge Identifier. (required)
  • +
  • rule_id (long) – Rule Identifier. (required)
  • +
+
Return type:

com.vmware.vmc.model_client.Nsxfirewallrule

+
Returns:

com.vmware.vmc.model.Nsxfirewallrule

+
Raise:

com.vmware.vapi.std.errors_client.InvalidRequest +Bad request. Request object passed is invalid.

+
Raise:

com.vmware.vapi.std.errors_client.Unauthorized +Forbidden. Authorization header not provided

+
Raise:

com.vmware.vapi.std.errors_client.NotFound +Not found. Requested object not found.

+
+
+ +
+
+update(org, sddc, edge_id, rule_id, nsxfirewallrule)
+

Modify the specified firewall rule for a management or compute gateway +(NSX Edge).

+ +++ + + + + + + + + + +
Parameters:
    +
  • org (str) – Organization identifier. (required)
  • +
  • sddc (str) – Sddc Identifier. (required)
  • +
  • edge_id (str) – Edge Identifier. (required)
  • +
  • rule_id (long) – Rule Identifier. (required)
  • +
  • nsxfirewallrule (com.vmware.vmc.model_client.Nsxfirewallrule) – (required)
  • +
+
Raise:

com.vmware.vapi.std.errors_client.InvalidRequest +Bad request. Request object passed is invalid.

+
Raise:

com.vmware.vapi.std.errors_client.Unauthorized +Forbidden. Authorization header not provided.

+
Raise:

com.vmware.vapi.std.errors_client.NotFound +Not found. Requested object not found.

+
+
+ +
+ +
+
+class com.vmware.vmc.orgs.sddcs.networks.edges.firewall.config_client.StubFactory(stub_config)
+

Bases: vmware.vapi.bindings.stub.StubFactoryBase

+

Initialize StubFactoryBase

+ +++ + + + +
Parameters:stub_config (vmware.vapi.bindings.stub.StubConfiguration) – Stub config instance
+
+ +
+
+ + +
+ +
+ + +
+
+ +
+ +
+ + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/vmc/com.vmware.vmc.orgs.sddcs.networks.edges.html b/vmc/com.vmware.vmc.orgs.sddcs.networks.edges.html new file mode 100644 index 00000000..47743e6d --- /dev/null +++ b/vmc/com.vmware.vmc.orgs.sddcs.networks.edges.html @@ -0,0 +1,1153 @@ + + + + + + + + + + + com.vmware.vmc.orgs.sddcs.networks.edges package — VMware Cloud on AWS Console API 1.2.0 documentation + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + + + +
+ + + + + +
+ +
+ + + + + + + + + + + + + + + + + +
+ + + + +
+
+
+
+ +
+

com.vmware.vmc.orgs.sddcs.networks.edges package

+ +
+

Submodules

+
+
+

com.vmware.vmc.orgs.sddcs.networks.edges.dhcp_client module

+
+
+class com.vmware.vmc.orgs.sddcs.networks.edges.dhcp_client.Leaseinfo(config)
+

Bases: vmware.vapi.bindings.stub.VapiInterface

+ +++ + + + +
Parameters:config (vmware.vapi.bindings.stub.StubConfiguration) – Configuration to be used for creating the stub.
+
+
+get(org, sddc, edge_id)
+

Retrieve DHCP leaseinfo of a management or compute gateway (NSX Edge).

+ +++ + + + + + + + + + + + + + +
Parameters:
    +
  • org (str) – Organization identifier. (required)
  • +
  • sddc (str) – Sddc Identifier. (required)
  • +
  • edge_id (str) – Edge Identifier. (required)
  • +
+
Return type:

com.vmware.vmc.model_client.DhcpLeases

+
Returns:

com.vmware.vmc.model.DhcpLeases

+
Raise:

com.vmware.vapi.std.errors_client.InvalidRequest +Bad request. Request object passed is invalid.

+
Raise:

com.vmware.vapi.std.errors_client.Unauthorized +Forbidden. Authorization header not provided

+
Raise:

com.vmware.vapi.std.errors_client.NotFound +Not found. Requested object not found.

+
+
+ +
+ +
+
+class com.vmware.vmc.orgs.sddcs.networks.edges.dhcp_client.StubFactory(stub_config)
+

Bases: vmware.vapi.bindings.stub.StubFactoryBase

+

Initialize StubFactoryBase

+ +++ + + + +
Parameters:stub_config (vmware.vapi.bindings.stub.StubConfiguration) – Stub config instance
+
+ +
+
+

com.vmware.vmc.orgs.sddcs.networks.edges.dns_client module

+
+
+class com.vmware.vmc.orgs.sddcs.networks.edges.dns_client.Config(config)
+

Bases: vmware.vapi.bindings.stub.VapiInterface

+ +++ + + + +
Parameters:config (vmware.vapi.bindings.stub.StubConfiguration) – Configuration to be used for creating the stub.
+
+
+create(org, sddc, edge_id, enable)
+

Enable or disable DNS configuration for a management or compute gateway +(NSX Edge).

+ +++ + + + + + + + + + +
Parameters:
    +
  • org (str) – Organization identifier. (required)
  • +
  • sddc (str) – Sddc Identifier. (required)
  • +
  • edge_id (str) – Edge Identifier. (required)
  • +
  • enable (bool) – Set to true to enable, set to false to disable. (required)
  • +
+
Raise:

com.vmware.vapi.std.errors_client.InvalidRequest +Bad request. Request object passed is invalid.

+
Raise:

com.vmware.vapi.std.errors_client.Unauthorized +Forbidden. Authorization header not provided.

+
Raise:

com.vmware.vapi.std.errors_client.NotFound +Not found. Requested object not found.

+
+
+ +
+
+delete(org, sddc, edge_id)
+

Delete DNS server configuration for a management or compute gateway +(NSX Edge).

+ +++ + + + + + + + + + +
Parameters:
    +
  • org (str) – Organization identifier. (required)
  • +
  • sddc (str) – Sddc Identifier. (required)
  • +
  • edge_id (str) – Edge Identifier. (required)
  • +
+
Raise:

com.vmware.vapi.std.errors_client.InvalidRequest +Bad request. Request object passed is invalid.

+
Raise:

com.vmware.vapi.std.errors_client.Unauthorized +Forbidden. Authorization header not provided.

+
Raise:

com.vmware.vapi.std.errors_client.NotFound +Not found. Requested object not found.

+
+
+ +
+
+get(org, sddc, edge_id)
+

Retrieve DNS server configuration for a management or compute gateway +(NSX Edge).

+ +++ + + + + + + + + + + + + + +
Parameters:
    +
  • org (str) – Organization identifier. (required)
  • +
  • sddc (str) – Sddc Identifier. (required)
  • +
  • edge_id (str) – Edge Identifier. (required)
  • +
+
Return type:

com.vmware.vmc.model_client.DnsConfig

+
Returns:

com.vmware.vmc.model.DnsConfig

+
Raise:

com.vmware.vapi.std.errors_client.InvalidRequest +Bad request. Request object passed is invalid.

+
Raise:

com.vmware.vapi.std.errors_client.Unauthorized +Forbidden. Authorization header not provided

+
Raise:

com.vmware.vapi.std.errors_client.NotFound +Not found. Requested object not found.

+
+
+ +
+
+update(org, sddc, edge_id, dns_config)
+

Configure DNS server configuration for a management or compute gateway +(NSX Edge).

+ +++ + + + + + + + + + +
Parameters:
    +
  • org (str) – Organization identifier. (required)
  • +
  • sddc (str) – Sddc Identifier. (required)
  • +
  • edge_id (str) – Edge Identifier. (required)
  • +
  • dns_config (com.vmware.vmc.model_client.DnsConfig) – (required)
  • +
+
Raise:

com.vmware.vapi.std.errors_client.InvalidRequest +Bad request. Request object passed is invalid.

+
Raise:

com.vmware.vapi.std.errors_client.Unauthorized +Forbidden. Authorization header not provided.

+
Raise:

com.vmware.vapi.std.errors_client.NotFound +Not found. Requested object not found.

+
+
+ +
+ +
+
+class com.vmware.vmc.orgs.sddcs.networks.edges.dns_client.Statistics(config)
+

Bases: vmware.vapi.bindings.stub.VapiInterface

+ +++ + + + +
Parameters:config (vmware.vapi.bindings.stub.StubConfiguration) – Configuration to be used for creating the stub.
+
+
+get(org, sddc, edge_id)
+

Retrieve DNS server statistics for a management or compute gateway (NSX +Edge).

+ +++ + + + + + + + + + + + + + +
Parameters:
    +
  • org (str) – Organization identifier. (required)
  • +
  • sddc (str) – Sddc Identifier. (required)
  • +
  • edge_id (str) – Edge Identifier. (required)
  • +
+
Return type:

com.vmware.vmc.model_client.DnsStatusAndStats

+
Returns:

com.vmware.vmc.model.DnsStatusAndStats

+
Raise:

com.vmware.vapi.std.errors_client.InvalidRequest +Bad request. Request object passed is invalid.

+
Raise:

com.vmware.vapi.std.errors_client.Unauthorized +Forbidden. Authorization header not provided

+
Raise:

com.vmware.vapi.std.errors_client.NotFound +Not found. Requested object not found.

+
+
+ +
+ +
+
+class com.vmware.vmc.orgs.sddcs.networks.edges.dns_client.StubFactory(stub_config)
+

Bases: vmware.vapi.bindings.stub.StubFactoryBase

+

Initialize StubFactoryBase

+ +++ + + + +
Parameters:stub_config (vmware.vapi.bindings.stub.StubConfiguration) – Stub config instance
+
+ +
+
+

com.vmware.vmc.orgs.sddcs.networks.edges.firewall_client module

+
+
+class com.vmware.vmc.orgs.sddcs.networks.edges.firewall_client.Config(config)
+

Bases: vmware.vapi.bindings.stub.VapiInterface

+ +++ + + + +
Parameters:config (vmware.vapi.bindings.stub.StubConfiguration) – Configuration to be used for creating the stub.
+
+
+delete(org, sddc, edge_id)
+

Delete firewall configuration for a management or compute gateway (NSX +Edge).

+ +++ + + + + + + + + + +
Parameters:
    +
  • org (str) – Organization identifier. (required)
  • +
  • sddc (str) – Sddc Identifier. (required)
  • +
  • edge_id (str) – Edge Identifier. (required)
  • +
+
Raise:

com.vmware.vapi.std.errors_client.InvalidRequest +Bad request. Request object passed is invalid.

+
Raise:

com.vmware.vapi.std.errors_client.Unauthorized +Forbidden. Authorization header not provided.

+
Raise:

com.vmware.vapi.std.errors_client.NotFound +Not found. Requested object not found.

+
+
+ +
+
+get(org, sddc, edge_id)
+

Retrieve the firewall configuration for a management or compute gateway +(NSX Edge).

+ +++ + + + + + + + + + + + + + +
Parameters:
    +
  • org (str) – Organization identifier. (required)
  • +
  • sddc (str) – Sddc Identifier. (required)
  • +
  • edge_id (str) – Edge Identifier. (required)
  • +
+
Return type:

com.vmware.vmc.model_client.FirewallConfig

+
Returns:

com.vmware.vmc.model.FirewallConfig

+
Raise:

com.vmware.vapi.std.errors_client.InvalidRequest +Bad request. Request object passed is invalid.

+
Raise:

com.vmware.vapi.std.errors_client.Unauthorized +Forbidden. Authorization header not provided.

+
Raise:

com.vmware.vapi.std.errors_client.NotFound +Not found. Requested object not found.

+
+
+ +
+
+update(org, sddc, edge_id, firewall_config)
+

Configure firewall for a management or compute gateway (NSX Edge).

+ +++ + + + + + + + + + +
Parameters:
    +
  • org (str) – Organization identifier. (required)
  • +
  • sddc (str) – Sddc Identifier. (required)
  • +
  • edge_id (str) – Edge Identifier. (required)
  • +
  • firewall_config (com.vmware.vmc.model_client.FirewallConfig) – (required)
  • +
+
Raise:

com.vmware.vapi.std.errors_client.InvalidRequest +Bad request. Request object passed is invalid.

+
Raise:

com.vmware.vapi.std.errors_client.Unauthorized +Forbidden. Authorization header not provided.

+
Raise:

com.vmware.vapi.std.errors_client.NotFound +Not found. Requested object not found.

+
+
+ +
+ +
+
+class com.vmware.vmc.orgs.sddcs.networks.edges.firewall_client.Statistics(config)
+

Bases: vmware.vapi.bindings.stub.VapiInterface

+ +++ + + + +
Parameters:config (vmware.vapi.bindings.stub.StubConfiguration) – Configuration to be used for creating the stub.
+
+
+get(org, sddc, edge_id, rule_id)
+

Retrieve statistics for a specific firewall rule for a management or +compute gateway (NSX Edge).

+ +++ + + + + + + + + + + + + + +
Parameters:
    +
  • org (str) – Organization identifier. (required)
  • +
  • sddc (str) – Sddc Identifier. (required)
  • +
  • edge_id (str) – Edge Identifier. (required)
  • +
  • rule_id (long) – Rule Identifier. (required)
  • +
+
Return type:

com.vmware.vmc.model_client.FirewallRuleStats

+
Returns:

com.vmware.vmc.model.FirewallRuleStats

+
Raise:

com.vmware.vapi.std.errors_client.InvalidRequest +Bad request. Request object passed is invalid.

+
Raise:

com.vmware.vapi.std.errors_client.Unauthorized +Forbidden. Authorization header not provided

+
Raise:

com.vmware.vapi.std.errors_client.NotFound +Not found. Requested object not found.

+
+
+ +
+ +
+
+class com.vmware.vmc.orgs.sddcs.networks.edges.firewall_client.StubFactory(stub_config)
+

Bases: vmware.vapi.bindings.stub.StubFactoryBase

+

Initialize StubFactoryBase

+ +++ + + + +
Parameters:stub_config (vmware.vapi.bindings.stub.StubConfiguration) – Stub config instance
+
+ +
+
+

com.vmware.vmc.orgs.sddcs.networks.edges.ipsec_client module

+
+
+class com.vmware.vmc.orgs.sddcs.networks.edges.ipsec_client.Config(config)
+

Bases: vmware.vapi.bindings.stub.VapiInterface

+ +++ + + + +
Parameters:config (vmware.vapi.bindings.stub.StubConfiguration) – Configuration to be used for creating the stub.
+
+
+delete(org, sddc, edge_id)
+

Delete IPsec VPN configuration for a management or compute gateway (NSX +Edge).

+ +++ + + + + + + + + + +
Parameters:
    +
  • org (str) – Organization identifier. (required)
  • +
  • sddc (str) – Sddc Identifier. (required)
  • +
  • edge_id (str) – Edge Identifier. (required)
  • +
+
Raise:

com.vmware.vapi.std.errors_client.InvalidRequest +Bad request. Request object passed is invalid.

+
Raise:

com.vmware.vapi.std.errors_client.Unauthorized +Forbidden. Authorization header not provided.

+
Raise:

com.vmware.vapi.std.errors_client.NotFound +Not found. Requested object not found.

+
+
+ +
+
+get(org, sddc, edge_id, show_sensitive_data=None)
+

Retrieve IPsec VPN configuration for a management or compute gateway +(NSX Edge).

+ +++ + + + + + + + + + + + + + +
Parameters:
    +
  • org (str) – Organization identifier. (required)
  • +
  • sddc (str) – Sddc Identifier. (required)
  • +
  • edge_id (str) – Edge Identifier. (required)
  • +
  • show_sensitive_data (bool or None) – Set to true to show sensitive data. Default value is false. +(optional)
  • +
+
Return type:

com.vmware.vmc.model_client.Ipsec

+
Returns:

com.vmware.vmc.model.Ipsec

+
Raise:

com.vmware.vapi.std.errors_client.InvalidRequest +Bad request. Request object passed is invalid.

+
Raise:

com.vmware.vapi.std.errors_client.Unauthorized +Forbidden. Authorization header not provided

+
Raise:

com.vmware.vapi.std.errors_client.NotFound +Not found. Requested object not found.

+
+
+ +
+
+update(org, sddc, edge_id, ipsec)
+

Modify IPsec VPN configuration for a management or compute gateway (NSX +Edge).

+ +++ + + + + + + + + + +
Parameters:
    +
  • org (str) – Organization identifier. (required)
  • +
  • sddc (str) – Sddc Identifier. (required)
  • +
  • edge_id (str) – Edge Identifier. (required)
  • +
  • ipsec (com.vmware.vmc.model_client.Ipsec) – IPsec Configuration dto object. (required)
  • +
+
Raise:

com.vmware.vapi.std.errors_client.InvalidRequest +Bad request. Request object passed is invalid.

+
Raise:

com.vmware.vapi.std.errors_client.Unauthorized +Forbidden. Authorization header not provided.

+
Raise:

com.vmware.vapi.std.errors_client.NotFound +Not found. Requested object not found.

+
+
+ +
+ +
+
+class com.vmware.vmc.orgs.sddcs.networks.edges.ipsec_client.Statistics(config)
+

Bases: vmware.vapi.bindings.stub.VapiInterface

+ +++ + + + +
Parameters:config (vmware.vapi.bindings.stub.StubConfiguration) – Configuration to be used for creating the stub.
+
+
+get(org, sddc, edge_id)
+

Retrieve IPsec VPN statistics for a management or compute gateway (NSX +Edge).

+ +++ + + + + + + + + + + + + + +
Parameters:
    +
  • org (str) – Organization identifier. (required)
  • +
  • sddc (str) – Sddc Identifier. (required)
  • +
  • edge_id (str) – Edge Identifier. (required)
  • +
+
Return type:

com.vmware.vmc.model_client.IpsecStatusAndStats

+
Returns:

com.vmware.vmc.model.IpsecStatusAndStats

+
Raise:

com.vmware.vapi.std.errors_client.InvalidRequest +Bad request. Request object passed is invalid.

+
Raise:

com.vmware.vapi.std.errors_client.Unauthorized +Forbidden. Authorization header not provided

+
Raise:

com.vmware.vapi.std.errors_client.NotFound +Not found. Requested object not found.

+
+
+ +
+ +
+
+class com.vmware.vmc.orgs.sddcs.networks.edges.ipsec_client.StubFactory(stub_config)
+

Bases: vmware.vapi.bindings.stub.StubFactoryBase

+

Initialize StubFactoryBase

+ +++ + + + +
Parameters:stub_config (vmware.vapi.bindings.stub.StubConfiguration) – Stub config instance
+
+ +
+
+

com.vmware.vmc.orgs.sddcs.networks.edges.nat_client module

+
+
+class com.vmware.vmc.orgs.sddcs.networks.edges.nat_client.Config(config)
+

Bases: vmware.vapi.bindings.stub.VapiInterface

+ +++ + + + +
Parameters:config (vmware.vapi.bindings.stub.StubConfiguration) – Configuration to be used for creating the stub.
+
+
+delete(org, sddc, edge_id)
+

Delete all NAT configuration for the specified management or compute +gateway (NSX Edge).

+ +++ + + + + + + + + + +
Parameters:
    +
  • org (str) – Organization identifier. (required)
  • +
  • sddc (str) – Sddc Identifier. (required)
  • +
  • edge_id (str) – Edge Identifier. (required)
  • +
+
Raise:

com.vmware.vapi.std.errors_client.InvalidRequest +Bad request. Request object passed is invalid.

+
Raise:

com.vmware.vapi.std.errors_client.Unauthorized +Forbidden. Authorization header not provided.

+
Raise:

com.vmware.vapi.std.errors_client.NotFound +Not found. Requested object not found.

+
+
+ +
+
+get(org, sddc, edge_id)
+

Retrieve NAT configuration for a management or compute gateway (NSX +Edge).

+ +++ + + + + + + + + + + + + + +
Parameters:
    +
  • org (str) – Organization identifier. (required)
  • +
  • sddc (str) – Sddc Identifier. (required)
  • +
  • edge_id (str) – Edge Identifier. (required)
  • +
+
Return type:

com.vmware.vmc.model_client.Nat

+
Returns:

com.vmware.vmc.model.Nat

+
Raise:

com.vmware.vapi.std.errors_client.InvalidRequest +Bad request. Request object passed is invalid.

+
Raise:

com.vmware.vapi.std.errors_client.Unauthorized +Forbidden. Authorization header not provided

+
Raise:

com.vmware.vapi.std.errors_client.NotFound +Not found. Requested object not found.

+
+
+ +
+
+update(org, sddc, edge_id, nat)
+

Modify NAT configuration for a management or compute gateway (NSX +Edge).

+ +++ + + + + + + + + + +
Parameters:
    +
  • org (str) – Organization identifier. (required)
  • +
  • sddc (str) – Sddc Identifier. (required)
  • +
  • edge_id (str) – Edge Identifier. (required)
  • +
  • nat (com.vmware.vmc.model_client.Nat) – (required)
  • +
+
Raise:

com.vmware.vapi.std.errors_client.InvalidRequest +Bad request. Request object passed is invalid.

+
Raise:

com.vmware.vapi.std.errors_client.Unauthorized +Forbidden. Authorization header not provided.

+
Raise:

com.vmware.vapi.std.errors_client.NotFound +Not found. Requested object not found.

+
+
+ +
+ +
+
+class com.vmware.vmc.orgs.sddcs.networks.edges.nat_client.StubFactory(stub_config)
+

Bases: vmware.vapi.bindings.stub.StubFactoryBase

+

Initialize StubFactoryBase

+ +++ + + + +
Parameters:stub_config (vmware.vapi.bindings.stub.StubConfiguration) – Stub config instance
+
+ +
+
+

com.vmware.vmc.orgs.sddcs.networks.edges.statistics_client module

+
+
+class com.vmware.vmc.orgs.sddcs.networks.edges.statistics_client.Interfaces(config)
+

Bases: vmware.vapi.bindings.stub.VapiInterface

+ +++ + + + +
Parameters:config (vmware.vapi.bindings.stub.StubConfiguration) – Configuration to be used for creating the stub.
+
+
+get(org, sddc, edge_id, start_time=None, end_time=None)
+

Retrieve interface statistics for a management or compute gateway (NSX +Edge).

+ +++ + + + + + + + + + + + + + +
Parameters:
    +
  • org (str) – Organization identifier. (required)
  • +
  • sddc (str) – Sddc Identifier. (required)
  • +
  • edge_id (str) – Edge Identifier. (required)
  • +
  • start_time (long or None) – Show statistics from this start time (in milliseconds since epoch). +(optional)
  • +
  • end_time (long or None) – Show statistics until this end time (in milliseconds since epoch). +(optional)
  • +
+
Return type:

com.vmware.vmc.model_client.CbmStatistics

+
Returns:

com.vmware.vmc.model.CbmStatistics

+
Raise:

com.vmware.vapi.std.errors_client.InvalidRequest +Bad request. Request object passed is invalid.

+
Raise:

com.vmware.vapi.std.errors_client.Unauthorized +Forbidden. Authorization header not provided.

+
Raise:

com.vmware.vapi.std.errors_client.NotFound +Not found. Requested object not found.

+
+
+ +
+ +
+
+class com.vmware.vmc.orgs.sddcs.networks.edges.statistics_client.StubFactory(stub_config)
+

Bases: vmware.vapi.bindings.stub.StubFactoryBase

+

Initialize StubFactoryBase

+ +++ + + + +
Parameters:stub_config (vmware.vapi.bindings.stub.StubConfiguration) – Stub config instance
+
+ +
+
+ + +
+ +
+ + +
+
+ +
+ +
+ + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/vmc/com.vmware.vmc.orgs.sddcs.networks.edges.l2vpn.html b/vmc/com.vmware.vmc.orgs.sddcs.networks.edges.l2vpn.html new file mode 100644 index 00000000..f17f9b36 --- /dev/null +++ b/vmc/com.vmware.vmc.orgs.sddcs.networks.edges.l2vpn.html @@ -0,0 +1,322 @@ + + + + + + + + + + + com.vmware.vmc.orgs.sddcs.networks.edges.l2vpn package — VMware Cloud on AWS Console API 1.2.0 documentation + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + + + +
+ + + + + +
+ +
+ + + + + + + + + + + + + + + + + +
+ + + + +
+
+
+
+ +
+

com.vmware.vmc.orgs.sddcs.networks.edges.l2vpn package

+
+

Submodules

+
+
+

com.vmware.vmc.orgs.sddcs.networks.edges.l2vpn.config_client module

+
+
+class com.vmware.vmc.orgs.sddcs.networks.edges.l2vpn.config_client.Statistics(config)
+

Bases: vmware.vapi.bindings.stub.VapiInterface

+ +++ + + + +
Parameters:config (vmware.vapi.bindings.stub.StubConfiguration) – Configuration to be used for creating the stub.
+
+
+get(org, sddc, edge_id)
+

Retrieve L2 VPN statistics for a compute gateway (NSX Edge).

+ +++ + + + + + + + + + + + + + +
Parameters:
    +
  • org (str) – Organization identifier. (required)
  • +
  • sddc (str) – Sddc Identifier. (required)
  • +
  • edge_id (str) – Edge Identifier. (required)
  • +
+
Return type:

com.vmware.vmc.model_client.L2vpnStatusAndStats

+
Returns:

com.vmware.vmc.model.L2vpnStatusAndStats

+
Raise:

com.vmware.vapi.std.errors_client.InvalidRequest +Bad request. Request object passed is invalid.

+
Raise:

com.vmware.vapi.std.errors_client.Unauthorized +Forbidden. Authorization header not provided.

+
Raise:

com.vmware.vapi.std.errors_client.NotFound +Not found. Requested object not found.

+
+
+ +
+ +
+
+class com.vmware.vmc.orgs.sddcs.networks.edges.l2vpn.config_client.StubFactory(stub_config)
+

Bases: vmware.vapi.bindings.stub.StubFactoryBase

+

Initialize StubFactoryBase

+ +++ + + + +
Parameters:stub_config (vmware.vapi.bindings.stub.StubConfiguration) – Stub config instance
+
+ +
+
+ + +
+ +
+ + +
+
+ +
+ +
+ + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/vmc/com.vmware.vmc.orgs.sddcs.networks.edges.nat.html b/vmc/com.vmware.vmc.orgs.sddcs.networks.edges.nat.html new file mode 100644 index 00000000..03fd8779 --- /dev/null +++ b/vmc/com.vmware.vmc.orgs.sddcs.networks.edges.nat.html @@ -0,0 +1,384 @@ + + + + + + + + + + + com.vmware.vmc.orgs.sddcs.networks.edges.nat package — VMware Cloud on AWS Console API 1.2.0 documentation + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + + + +
+ + + + + +
+ +
+ + + + + + + + + + + + + + + + + +
+ + + + +
+
+
+
+ +
+

com.vmware.vmc.orgs.sddcs.networks.edges.nat package

+
+

Submodules

+
+
+

com.vmware.vmc.orgs.sddcs.networks.edges.nat.config_client module

+
+
+class com.vmware.vmc.orgs.sddcs.networks.edges.nat.config_client.Rules(config)
+

Bases: vmware.vapi.bindings.stub.VapiInterface

+ +++ + + + +
Parameters:config (vmware.vapi.bindings.stub.StubConfiguration) – Configuration to be used for creating the stub.
+
+
+add(org, sddc, edge_id, nat_rules)
+

Append a NAT rule for a management or compute gateway (NSX Edge).

+ +++ + + + + + + + + + +
Parameters:
    +
  • org (str) – Organization identifier. (required)
  • +
  • sddc (str) – Sddc Identifier. (required)
  • +
  • edge_id (str) – Edge Identifier. (required)
  • +
  • nat_rules (com.vmware.vmc.model_client.NatRules) – (required)
  • +
+
Raise:

com.vmware.vapi.std.errors_client.InvalidRequest +Bad request. Request object passed is invalid.

+
Raise:

com.vmware.vapi.std.errors_client.Unauthorized +Forbidden. Authorization header not provided.

+
Raise:

com.vmware.vapi.std.errors_client.NotFound +Not found. Requested object not found.

+
+
+ +
+
+delete(org, sddc, edge_id, rule_id)
+

Delete the specific NAT rule for a management or compute gateway (NSX +Edge).

+ +++ + + + + + + + + + +
Parameters:
    +
  • org (str) – Organization identifier. (required)
  • +
  • sddc (str) – Sddc Identifier. (required)
  • +
  • edge_id (str) – Edge Identifier. (required)
  • +
  • rule_id (long) – Rule Identifier. (required)
  • +
+
Raise:

com.vmware.vapi.std.errors_client.InvalidRequest +Bad request. Request object passed is invalid.

+
Raise:

com.vmware.vapi.std.errors_client.Unauthorized +Forbidden. Authorization header not provided.

+
Raise:

com.vmware.vapi.std.errors_client.NotFound +Not found. Requested object not found.

+
+
+ +
+
+update(org, sddc, edge_id, rule_id, nsxnatrule)
+

Update the specific NAT rule for a management or compute gateway (NSX +Edge).

+ +++ + + + + + + + + + +
Parameters:
    +
  • org (str) – Organization identifier. (required)
  • +
  • sddc (str) – Sddc Identifier. (required)
  • +
  • edge_id (str) – Edge Identifier. (required)
  • +
  • rule_id (long) – Rule Identifier. (required)
  • +
  • nsxnatrule (com.vmware.vmc.model_client.Nsxnatrule) – (required)
  • +
+
Raise:

com.vmware.vapi.std.errors_client.InvalidRequest +Bad request. Request object passed is invalid.

+
Raise:

com.vmware.vapi.std.errors_client.Unauthorized +Forbidden. Authorization header not provided.

+
Raise:

com.vmware.vapi.std.errors_client.NotFound +Not found. Requested object not found.

+
+
+ +
+ +
+
+class com.vmware.vmc.orgs.sddcs.networks.edges.nat.config_client.StubFactory(stub_config)
+

Bases: vmware.vapi.bindings.stub.StubFactoryBase

+

Initialize StubFactoryBase

+ +++ + + + +
Parameters:stub_config (vmware.vapi.bindings.stub.StubConfiguration) – Stub config instance
+
+ +
+
+ + +
+ +
+ + +
+
+ +
+ +
+ + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/vmc/com.vmware.vmc.orgs.sddcs.networks.edges.statistics.html b/vmc/com.vmware.vmc.orgs.sddcs.networks.edges.statistics.html new file mode 100644 index 00000000..97485286 --- /dev/null +++ b/vmc/com.vmware.vmc.orgs.sddcs.networks.edges.statistics.html @@ -0,0 +1,560 @@ + + + + + + + + + + + com.vmware.vmc.orgs.sddcs.networks.edges.statistics package — VMware Cloud on AWS Console API 1.2.0 documentation + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + + + +
+ + + + + +
+ +
+ + + + + + + + + + + + + + + + + +
+ + + + +
+
+
+
+ +
+

com.vmware.vmc.orgs.sddcs.networks.edges.statistics package

+
+

Submodules

+
+
+

com.vmware.vmc.orgs.sddcs.networks.edges.statistics.dashboard_client module

+
+
+class com.vmware.vmc.orgs.sddcs.networks.edges.statistics.dashboard_client.Firewall(config)
+

Bases: vmware.vapi.bindings.stub.VapiInterface

+ +++ + + + +
Parameters:config (vmware.vapi.bindings.stub.StubConfiguration) – Configuration to be used for creating the stub.
+
+
+get(org, sddc, edge_id, interval=None)
+

Retrieve firewall dashboard statistics for a management or compute +gateway (NSX Edge).

+ +++ + + + + + + + + + + + + + +
Parameters:
    +
  • org (str) – Organization identifier. (required)
  • +
  • sddc (str) – Sddc Identifier. (required)
  • +
  • edge_id (str) – Edge Identifier. (required)
  • +
  • interval (str or None) – 60 min by default, can be given as 1 - 60 min, oneDay, oneWeek, +oneMonth, oneYear. (optional)
  • +
+
Return type:

com.vmware.vmc.model_client.DashboardStatistics

+
Returns:

com.vmware.vmc.model.DashboardStatistics

+
Raise:

com.vmware.vapi.std.errors_client.InvalidRequest +Bad request. Request object passed is invalid.

+
Raise:

com.vmware.vapi.std.errors_client.Unauthorized +Forbidden. Authorization header not provided

+
Raise:

com.vmware.vapi.std.errors_client.NotFound +Not found. Requested object not found.

+
+
+ +
+ +
+
+class com.vmware.vmc.orgs.sddcs.networks.edges.statistics.dashboard_client.Interface(config)
+

Bases: vmware.vapi.bindings.stub.VapiInterface

+ +++ + + + +
Parameters:config (vmware.vapi.bindings.stub.StubConfiguration) – Configuration to be used for creating the stub.
+
+
+get(org, sddc, edge_id, interval=None)
+

Retrieve interface dashboard statistics for a management or compute +gateway (NSX Edge).

+ +++ + + + + + + + + + + + + + +
Parameters:
    +
  • org (str) – Organization identifier. (required)
  • +
  • sddc (str) – Sddc Identifier. (required)
  • +
  • edge_id (str) – Edge Identifier. (required)
  • +
  • interval (str or None) – 60 min by default, can be given as 1 - 60 min, oneDay, oneWeek, +oneMonth, oneYear. (optional)
  • +
+
Return type:

com.vmware.vmc.model_client.DashboardStatistics

+
Returns:

com.vmware.vmc.model.DashboardStatistics

+
Raise:

com.vmware.vapi.std.errors_client.InvalidRequest +Bad request. Request object passed is invalid.

+
Raise:

com.vmware.vapi.std.errors_client.Unauthorized +Forbidden. Authorization header not provided

+
Raise:

com.vmware.vapi.std.errors_client.NotFound +Not found. Requested object not found.

+
+
+ +
+ +
+
+class com.vmware.vmc.orgs.sddcs.networks.edges.statistics.dashboard_client.Ipsec(config)
+

Bases: vmware.vapi.bindings.stub.VapiInterface

+ +++ + + + +
Parameters:config (vmware.vapi.bindings.stub.StubConfiguration) – Configuration to be used for creating the stub.
+
+
+get(org, sddc, edge_id, interval=None)
+

Retrieve ipsec dashboard statistics for a management or compute gateway +(NSX Edge).

+ +++ + + + + + + + + + + + + + +
Parameters:
    +
  • org (str) – Organization identifier. (required)
  • +
  • sddc (str) – Sddc Identifier. (required)
  • +
  • edge_id (str) – Edge Identifier. (required)
  • +
  • interval (str or None) – 60 min by default, can be given as 1 - 60 min, oneDay, oneWeek, +oneMonth, oneYear. (optional)
  • +
+
Return type:

com.vmware.vmc.model_client.DashboardStatistics

+
Returns:

com.vmware.vmc.model.DashboardStatistics

+
Raise:

com.vmware.vapi.std.errors_client.InvalidRequest +Bad request. Request object passed is invalid.

+
Raise:

com.vmware.vapi.std.errors_client.Unauthorized +Forbidden. Authorization header not provided

+
Raise:

com.vmware.vapi.std.errors_client.NotFound +Not found. Requested object not found.

+
+
+ +
+ +
+
+class com.vmware.vmc.orgs.sddcs.networks.edges.statistics.dashboard_client.StubFactory(stub_config)
+

Bases: vmware.vapi.bindings.stub.StubFactoryBase

+

Initialize StubFactoryBase

+ +++ + + + +
Parameters:stub_config (vmware.vapi.bindings.stub.StubConfiguration) – Stub config instance
+
+ +
+
+

com.vmware.vmc.orgs.sddcs.networks.edges.statistics.interfaces_client module

+
+
+class com.vmware.vmc.orgs.sddcs.networks.edges.statistics.interfaces_client.Internal(config)
+

Bases: vmware.vapi.bindings.stub.VapiInterface

+ +++ + + + +
Parameters:config (vmware.vapi.bindings.stub.StubConfiguration) – Configuration to be used for creating the stub.
+
+
+get(org, sddc, edge_id, start_time=None, end_time=None)
+

Retrieve internal interface statistics for a management or compute +gateway (NSX Edge).

+ +++ + + + + + + + + + + + + + +
Parameters:
    +
  • org (str) – Organization identifier. (required)
  • +
  • sddc (str) – Sddc Identifier. (required)
  • +
  • edge_id (str) – Edge Identifier. (required)
  • +
  • start_time (long or None) – Show statistics from this start time (in milliseconds since epoch). +(optional)
  • +
  • end_time (long or None) – Show statistics until this end time (in milliseconds since epoch). +(optional)
  • +
+
Return type:

com.vmware.vmc.model_client.CbmStatistics

+
Returns:

com.vmware.vmc.model.CbmStatistics

+
Raise:

com.vmware.vapi.std.errors_client.InvalidRequest +Bad request. Request object passed is invalid.

+
Raise:

com.vmware.vapi.std.errors_client.Unauthorized +Forbidden. Authorization header not provided.

+
Raise:

com.vmware.vapi.std.errors_client.NotFound +Not found. Requested object not found.

+
+
+ +
+ +
+
+class com.vmware.vmc.orgs.sddcs.networks.edges.statistics.interfaces_client.StubFactory(stub_config)
+

Bases: vmware.vapi.bindings.stub.StubFactoryBase

+

Initialize StubFactoryBase

+ +++ + + + +
Parameters:stub_config (vmware.vapi.bindings.stub.StubConfiguration) – Stub config instance
+
+ +
+ +

Bases: vmware.vapi.bindings.stub.VapiInterface

+ +++ + + + +
Parameters:config (vmware.vapi.bindings.stub.StubConfiguration) – Configuration to be used for creating the stub.
+
+
+get(org, sddc, edge_id, start_time=None, end_time=None)
+

Retrieve uplink interface statistics for a management or compute +gateway (NSX Edge).

+ +++ + + + + + + + + + + + + + +
Parameters:
    +
  • org (str) – Organization identifier. (required)
  • +
  • sddc (str) – Sddc Identifier. (required)
  • +
  • edge_id (str) – Edge Identifier. (required)
  • +
  • start_time (long or None) – Show statistics from this start time (in milliseconds since epoch). +(optional)
  • +
  • end_time (long or None) – Show statistics until this end time (in milliseconds since epoch). +(optional)
  • +
+
Return type:

com.vmware.vmc.model_client.CbmStatistics

+
Returns:

com.vmware.vmc.model.CbmStatistics

+
Raise:

com.vmware.vapi.std.errors_client.InvalidRequest +Bad request. Request object passed is invalid.

+
Raise:

com.vmware.vapi.std.errors_client.Unauthorized +Forbidden. Authorization header not provided.

+
Raise:

com.vmware.vapi.std.errors_client.NotFound +Not found. Requested object not found.

+
+
+ +
+ +
+
+ + +
+ +
+ + +
+
+ +
+ +
+ + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/vmc/com.vmware.vmc.orgs.sddcs.networks.html b/vmc/com.vmware.vmc.orgs.sddcs.networks.html new file mode 100644 index 00000000..3442406b --- /dev/null +++ b/vmc/com.vmware.vmc.orgs.sddcs.networks.html @@ -0,0 +1,481 @@ + + + + + + + + + + + com.vmware.vmc.orgs.sddcs.networks package — VMware Cloud on AWS Console API 1.2.0 documentation + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + + + +
+ + + + + +
+ +
+ + + + + + + + + + + + + + + + + +
+ + + + +
+
+
+
+ +
+

com.vmware.vmc.orgs.sddcs.networks package

+ +
+

Submodules

+
+
+

com.vmware.vmc.orgs.sddcs.networks.edges_client module

+
+
+class com.vmware.vmc.orgs.sddcs.networks.edges_client.Peerconfig(config)
+

Bases: vmware.vapi.bindings.stub.VapiInterface

+ +++ + + + +
Parameters:config (vmware.vapi.bindings.stub.StubConfiguration) – Configuration to be used for creating the stub.
+
+
+get(org, sddc, edge_id, objecttype, objectid, templateid=None)
+

Retrieve IPsec VPN peer configuration for a management or compute +gateway (NSX Edge). The response output is free form text generated as +per the template specified as request parameter input.

+ +++ + + + + + + + + + + + + + +
Parameters:
    +
  • org (str) – Organization identifier. (required)
  • +
  • sddc (str) – Sddc Identifier. (required)
  • +
  • edge_id (str) – Edge Identifier. (required)
  • +
  • objecttype (str) – Specify object type identifier. Valid value is ‘ipsecSiteConfig’. +Required. (required)
  • +
  • objectid (str) – Specify object identifier, for example ‘ipsecsite-1’ for IPsec Site +configuration. Required. (required)
  • +
  • templateid (str or None) – Specify template identifier and response format. Valid values are +‘text’, ‘json’ and ‘xml’. Default is ‘text’. Optional. (optional)
  • +
+
Return type:

vmware.vapi.struct.VapiStruct

+
Returns:

DynamicStructure

+
Raise:

com.vmware.vapi.std.errors_client.InvalidRequest +Bad request. Request object passed is invalid.

+
Raise:

com.vmware.vapi.std.errors_client.Unauthorized +Forbidden. Authorization header not provided

+
Raise:

com.vmware.vapi.std.errors_client.NotFound +Not found. Requested object not found.

+
+
+ +
+ +
+
+class com.vmware.vmc.orgs.sddcs.networks.edges_client.Status(config)
+

Bases: vmware.vapi.bindings.stub.VapiInterface

+ +++ + + + +
Parameters:config (vmware.vapi.bindings.stub.StubConfiguration) – Configuration to be used for creating the stub.
+
+
+get(org, sddc, edge_id, getlatest=None, detailed=None)
+

Retrieve the status of the specified management or compute gateway (NSX +Edge).

+ +++ + + + + + + + + + + + + + +
Parameters:
    +
  • org (str) – Organization identifier. (required)
  • +
  • sddc (str) – Sddc Identifier. (required)
  • +
  • edge_id (str) – Edge Identifier. (required)
  • +
  • getlatest (bool or None) – If true, retrieve the status live from the gateway (NSX Edge). If +false, retrieve the latest available status from database. +(optional)
  • +
  • detailed (bool or None) – If true, retrieve detailed status per feature. If false, retrieve +aggregated summary of status per feature. (optional)
  • +
+
Return type:

com.vmware.vmc.model_client.EdgeStatus

+
Returns:

com.vmware.vmc.model.EdgeStatus

+
Raise:

com.vmware.vapi.std.errors_client.InvalidRequest +Bad request. Request object passed is invalid.

+
Raise:

com.vmware.vapi.std.errors_client.Unauthorized +Forbidden. Authorization header not provided

+
Raise:

com.vmware.vapi.std.errors_client.NotFound +Not found. Requested object not found.

+
+
+ +
+ +
+
+class com.vmware.vmc.orgs.sddcs.networks.edges_client.StubFactory(stub_config)
+

Bases: vmware.vapi.bindings.stub.StubFactoryBase

+

Initialize StubFactoryBase

+ +++ + + + +
Parameters:stub_config (vmware.vapi.bindings.stub.StubConfiguration) – Stub config instance
+
+ +
+
+class com.vmware.vmc.orgs.sddcs.networks.edges_client.Vnics(config)
+

Bases: vmware.vapi.bindings.stub.VapiInterface

+ +++ + + + +
Parameters:config (vmware.vapi.bindings.stub.StubConfiguration) – Configuration to be used for creating the stub.
+
+
+get(org, sddc, edge_id)
+

Retrieve all interfaces for the specified management or compute gateway +(NSX Edge).

+ +++ + + + + + + + + + + + + + +
Parameters:
    +
  • org (str) – Organization identifier. (required)
  • +
  • sddc (str) – Sddc Identifier. (required)
  • +
  • edge_id (str) – Edge Identifier. (required)
  • +
+
Return type:

com.vmware.vmc.model_client.Vnics

+
Returns:

com.vmware.vmc.model.Vnics

+
Raise:

com.vmware.vapi.std.errors_client.InvalidRequest +Bad request. Request object passed is invalid.

+
Raise:

com.vmware.vapi.std.errors_client.Unauthorized +Forbidden. Authorization header not provided

+
Raise:

com.vmware.vapi.std.errors_client.NotFound +Not found. Requested object not found.

+
+
+ +
+ +
+
+ + +
+ +
+ + +
+
+ +
+ +
+ + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/vmc/enumeration.html b/vmc/enumeration.html new file mode 100644 index 00000000..703e9edf --- /dev/null +++ b/vmc/enumeration.html @@ -0,0 +1,290 @@ + + + + + + + + + + + Interface definition language to python mapping for enumerated types — VMware Cloud on AWS Console API 1.2.0 documentation + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + + + +
+ + + + + +
+ +
+ + + + + + + + + + + + + + + + + +
+ +
    + +
  • Docs »
  • + +
  • Interface definition language to python mapping for enumerated types
  • + + +
  • + + + View page source + + +
  • + +
+ + +
+
+
+
+ +
+

Interface definition language to python mapping for enumerated types

+

The interface language definition type system includes enumerated types. Python +SDK supports both 2.x and 3.x versions of Python. Since Python 2.x does +not have first class support for enumerations, special classes are +generated to represent enumerated types from the interface definition +language. The special class contains class attributes which represent +the values of the enumerated type.

+

This documentation explains the following:

+
    +
  • How the class variables are defined in the module. This specifies the names that you can use in your program.
  • +
  • How you instantiate a class to use it for communication with future versions of the service.
  • +
+
+

Example of an enumerated type documentation

+
+
class com.vmware.vapi.metadata_client. SourceType (string)
+

Bases: vmware.vapi.bindings.enum.Enum

+

Metadata source type

+
+

Note

+

This class represents an enumerated type in the interface language definition type system. The class contains class attributes which represent the values in the current version of the enumerated type. Newer versions of the enumerated type may contain new values. To use new values of the enumerated type in communication with a server that supports a newer version of the API, you instantiate this class. See enumerated type description page.

+
+

Parameters : string (str) – String value for the SourceType instance.

+
+
FILE = SourceType(string=’FILE’)
+
If the source is backed by a file.
+
REMOTE = SourceType(string=’REMOTE’)
+
If the source is backed by a remote service.
+
+
+
+
+
+

Code Examples

+

The enumerated type classes are defined in python modules that your code +imports. You can use these in your code.

+
    +
  1. If you want to pass an enumerated type value in a method to a server, specify the class variable of the enumerated type class.
  2. +
+
# SourceType is an enumerated type
+from com.vmware.vapi.metadata_client import SourceType
+
+# SourceType has two class attrites, SourceType.FILE and SourceType.REMOTE
+spec = Source.CreateSpec(type=SourceType.FILE, filepath='entity_metadata.json', description='Entity service')
+source_svc.create(id='entity', spec=spec)
+
+
+
    +
  1. When you receive an enumerated type value in the response from a server, allow for unknown enumerated type values.
  2. +
+
# SourceType is an enumerated type
+from com.vmware.vapi.metadata_client import SourceType
+
+source_info = source_svc.get(id='entity')
+if (source_info.type == SourceType.FILE) {
+    print 'Source is a file'
+} else if (source_info.type == SourceType.REMOTE) {
+    print 'Source is a remote provider'
+} else {
+    print 'Unknown source type: %s' % str(source_info.type)
+}
+
+
+
    +
  1. Sending a new enumerated type value to a server that has a newer version of the enumerated type.
  2. +
+

To use new values of the enumerated type in communication with a server that supports a newer version of the API, you instantiate the +enumerated type class.

+
# If a newer version of SourceType has a new value FOLDER, FOLDER would be one
+# of the class attributes for SourceType. In the older version, SourceType has
+# only two class attributes, FILE and REMOTE
+from com.vmware.vapi.metadata_client import SourceType
+spec = Source.CreateSpec(type=SourceType('FOLDER'), filepath='entity_metadata', description='Entity service')
+source_svc.create(id='entity', spec=spec)
+
+
+
+
+ + +
+ +
+ + +
+
+ +
+ +
+ + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/vmc/genindex.html b/vmc/genindex.html new file mode 100644 index 00000000..c73b6f8a --- /dev/null +++ b/vmc/genindex.html @@ -0,0 +1,1351 @@ + + + + + + + + + + + + Index — VMware Cloud on AWS Console API 1.2.0 documentation + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + + + +
+ + + + + +
+ +
+ + + + + + + + + + + + + + + + + +
+ +
    + +
  • Docs »
  • + +
  • Index
  • + + +
  • + + + +
  • + +
+ + +
+
+
+
+ + +

Index

+ +
+ A + | C + | D + | E + | F + | G + | H + | I + | K + | L + | M + | N + | O + | P + | R + | S + | T + | U + | V + +
+

A

+ + + +
+ +

C

+ + + +
+ +

D

+ + + +
+ +

E

+ + + +
+ +

F

+ + + +
+ +

G

+ + + +
+ +

H

+ + +
+ +

I

+ + + +
+ +

K

+ + +
+ +

L

+ + + +
+ +

M

+ + + +
+ +

N

+ + + +
+ +

O

+ + + +
+ +

P

+ + + +
+ +

R

+ + + +
+ +

S

+ + + +
+ +

T

+ + + +
+ +

U

+ + + +
+ +

V

+ + + +
+ + + +
+ +
+ + +
+
+ +
+ +
+ + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/vmc/index.html b/vmc/index.html new file mode 100644 index 00000000..e31733b7 --- /dev/null +++ b/vmc/index.html @@ -0,0 +1,275 @@ + + + + + + + + + + + Welcome to VMware Cloud on AWS Console API’s documentation! — VMware Cloud on AWS Console API 1.2.0 documentation + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + + + +
+ + + + + +
+ +
+ + + + + + + + + + + + + + + + + +
+ +
    + +
  • Docs »
  • + +
  • Welcome to VMware Cloud on AWS Console API’s documentation!
  • + + +
  • + + + View page source + + +
  • + +
+ + +
+
+ + + +
+
+ +
+ +
+ + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/vmc/objects.inv b/vmc/objects.inv new file mode 100644 index 00000000..35477134 Binary files /dev/null and b/vmc/objects.inv differ diff --git a/vmc/py-modindex.html b/vmc/py-modindex.html new file mode 100644 index 00000000..9bc2d87f --- /dev/null +++ b/vmc/py-modindex.html @@ -0,0 +1,388 @@ + + + + + + + + + + + Python Module Index — VMware Cloud on AWS Console API 1.2.0 documentation + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + + + +
+ + + + + +
+ +
+ + + + + + + + + + + + + + + + + +
+ +
    + +
  • Docs »
  • + +
  • Python Module Index
  • + + +
  • + +
  • + +
+ + +
+
+
+
+ + +

Python Module Index

+ +
+ c +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
 
+ c
+ com +
    + com.vmware +
    + com.vmware.vmc +
    + com.vmware.vmc.model_client +
    + com.vmware.vmc.orgs +
    + com.vmware.vmc.orgs.account_link_client +
    + com.vmware.vmc.orgs.sddcs +
    + com.vmware.vmc.orgs.sddcs.dns_client +
    + com.vmware.vmc.orgs.sddcs.mgw_client +
    + com.vmware.vmc.orgs.sddcs.networks +
    + com.vmware.vmc.orgs.sddcs.networks.cgws +
    + com.vmware.vmc.orgs.sddcs.networks.cgws.l2vpn_client +
    + com.vmware.vmc.orgs.sddcs.networks.edges +
    + com.vmware.vmc.orgs.sddcs.networks.edges.dhcp_client +
    + com.vmware.vmc.orgs.sddcs.networks.edges.dns_client +
    + com.vmware.vmc.orgs.sddcs.networks.edges.firewall +
    + com.vmware.vmc.orgs.sddcs.networks.edges.firewall.config_client +
    + com.vmware.vmc.orgs.sddcs.networks.edges.firewall_client +
    + com.vmware.vmc.orgs.sddcs.networks.edges.ipsec_client +
    + com.vmware.vmc.orgs.sddcs.networks.edges.l2vpn +
    + com.vmware.vmc.orgs.sddcs.networks.edges.l2vpn.config_client +
    + com.vmware.vmc.orgs.sddcs.networks.edges.nat +
    + com.vmware.vmc.orgs.sddcs.networks.edges.nat.config_client +
    + com.vmware.vmc.orgs.sddcs.networks.edges.nat_client +
    + com.vmware.vmc.orgs.sddcs.networks.edges.statistics +
    + com.vmware.vmc.orgs.sddcs.networks.edges.statistics.dashboard_client +
    + com.vmware.vmc.orgs.sddcs.networks.edges.statistics.interfaces_client +
    + com.vmware.vmc.orgs.sddcs.networks.edges.statistics_client +
    + com.vmware.vmc.orgs.sddcs.networks.edges_client +
    + com.vmware.vmc.orgs.sddcs.networks_client +
    + com.vmware.vmc.orgs.sddcs_client +
    + com.vmware.vmc.orgs_client +
    + com.vmware.vmc_client +
+ + +
+ +
+ + +
+
+ +
+ +
+ + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/vmc/search.html b/vmc/search.html new file mode 100644 index 00000000..e5bd9220 --- /dev/null +++ b/vmc/search.html @@ -0,0 +1,229 @@ + + + + + + + + + + + Search — VMware Cloud on AWS Console API 1.2.0 documentation + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + + + +
+ + + + + +
+ +
+ + + + + + + + + + + + + + + + + +
+ +
    + +
  • Docs »
  • + +
  • Search
  • + + +
  • + + + +
  • + +
+ + +
+
+
+
+ + + + +
+ +
+ +
+ +
+ + +
+
+ +
+ +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/vmc/searchindex.js b/vmc/searchindex.js new file mode 100644 index 00000000..e2d4c6ac --- /dev/null +++ b/vmc/searchindex.js @@ -0,0 +1 @@ +Search.setIndex({docnames:["com","com.vmware","com.vmware.vmc","com.vmware.vmc.orgs","com.vmware.vmc.orgs.sddcs","com.vmware.vmc.orgs.sddcs.networks","com.vmware.vmc.orgs.sddcs.networks.cgws","com.vmware.vmc.orgs.sddcs.networks.edges","com.vmware.vmc.orgs.sddcs.networks.edges.firewall","com.vmware.vmc.orgs.sddcs.networks.edges.l2vpn","com.vmware.vmc.orgs.sddcs.networks.edges.nat","com.vmware.vmc.orgs.sddcs.networks.edges.statistics","enumeration","index"],envversion:53,filenames:["com.rst","com.vmware.rst","com.vmware.vmc.rst","com.vmware.vmc.orgs.rst","com.vmware.vmc.orgs.sddcs.rst","com.vmware.vmc.orgs.sddcs.networks.rst","com.vmware.vmc.orgs.sddcs.networks.cgws.rst","com.vmware.vmc.orgs.sddcs.networks.edges.rst","com.vmware.vmc.orgs.sddcs.networks.edges.firewall.rst","com.vmware.vmc.orgs.sddcs.networks.edges.l2vpn.rst","com.vmware.vmc.orgs.sddcs.networks.edges.nat.rst","com.vmware.vmc.orgs.sddcs.networks.edges.statistics.rst","enumeration.rst","index.rst"],objects:{"":{com:[0,0,0,"-"]},"com.vmware":{vmc:[2,0,0,"-"],vmc_client:[1,0,0,"-"]},"com.vmware.vmc":{model_client:[2,0,0,"-"],orgs:[3,0,0,"-"],orgs_client:[2,0,0,"-"]},"com.vmware.vmc.model_client":{AbstractEntity:[2,1,1,""],AccountLinkConfig:[2,1,1,""],AccountLinkSddcConfig:[2,1,1,""],AddressFWSourceDestination:[2,1,1,""],Agent:[2,1,1,""],AmiInfo:[2,1,1,""],AppliancesSummary:[2,1,1,""],Application:[2,1,1,""],AwsAgent:[2,1,1,""],AwsCloudProvider:[2,1,1,""],AwsCompatibleSubnets:[2,1,1,""],AwsCustomerConnectedAccount:[2,1,1,""],AwsEsxHost:[2,1,1,""],AwsKeyPair:[2,1,1,""],AwsOrgConfiguration:[2,1,1,""],AwsSddcConfig:[2,1,1,""],AwsSddcConnection:[2,1,1,""],AwsSddcResourceConfig:[2,1,1,""],AwsSubnet:[2,1,1,""],CaCertificates:[2,1,1,""],CbmStatistic:[2,1,1,""],CbmStatistics:[2,1,1,""],CbmStatsData:[2,1,1,""],CloudProvider:[2,1,1,""],Cluster:[2,1,1,""],ClusterConfig:[2,1,1,""],ComputeGatewayTemplate:[2,1,1,""],CrlCertificates:[2,1,1,""],DashboardData:[2,1,1,""],DashboardStat:[2,1,1,""],DashboardStatistics:[2,1,1,""],DataPageEdgeSummary:[2,1,1,""],DataPageSddcNetwork:[2,1,1,""],DataPermissions:[2,1,1,""],DhcpLeaseInfo:[2,1,1,""],DhcpLeases:[2,1,1,""],DnsConfig:[2,1,1,""],DnsForwarders:[2,1,1,""],DnsListeners:[2,1,1,""],DnsResponseStats:[2,1,1,""],DnsStatusAndStats:[2,1,1,""],DnsView:[2,1,1,""],DnsViewMatch:[2,1,1,""],DnsViews:[2,1,1,""],EdgeJob:[2,1,1,""],EdgeStatus:[2,1,1,""],EdgeSummary:[2,1,1,""],EdgeVmStatus:[2,1,1,""],EdgeVnicAddressGroup:[2,1,1,""],EdgeVnicAddressGroups:[2,1,1,""],ErrorResponse:[2,1,1,""],EsxConfig:[2,1,1,""],EsxHost:[2,1,1,""],ExtendedAttribute:[2,1,1,""],FeatureCapabilities:[2,1,1,""],FeatureCapability:[2,1,1,""],FeatureStatus:[2,1,1,""],FirewallConfig:[2,1,1,""],FirewallDashboardStats:[2,1,1,""],FirewallDefaultPolicy:[2,1,1,""],FirewallGlobalConfig:[2,1,1,""],FirewallRule:[2,1,1,""],FirewallRuleScope:[2,1,1,""],FirewallRuleStats:[2,1,1,""],FirewallRules:[2,1,1,""],FirewallService:[2,1,1,""],GatewayTemplate:[2,1,1,""],GlcmBundle:[2,1,1,""],HostLeaseInfo:[2,1,1,""],InteractionPermissions:[2,1,1,""],InterfacesDashboardStats:[2,1,1,""],IpAddresses:[2,1,1,""],Ipsec:[2,1,1,""],IpsecDashboardStats:[2,1,1,""],IpsecGlobalConfig:[2,1,1,""],IpsecSite:[2,1,1,""],IpsecSiteIKEStatus:[2,1,1,""],IpsecSiteStats:[2,1,1,""],IpsecSites:[2,1,1,""],IpsecStatusAndStats:[2,1,1,""],IpsecTunnelStats:[2,1,1,""],KeyValueAttributes:[2,1,1,""],L2Extension:[2,1,1,""],L2Vpn:[2,1,1,""],L2vpnStats:[2,1,1,""],L2vpnStatusAndStats:[2,1,1,""],LicenceAclPermissions:[2,1,1,""],LoadBalancerDashboardStats:[2,1,1,""],Logging:[2,1,1,""],LogicalNetwork:[2,1,1,""],LogicalRouterScope:[2,1,1,""],LogicalRouterScopes:[2,1,1,""],MacAddress:[2,1,1,""],ManagementGatewayTemplate:[2,1,1,""],MapZonesRequest:[2,1,1,""],MetaDashboardStats:[2,1,1,""],Metadata:[2,1,1,""],Nat:[2,1,1,""],NatRule:[2,1,1,""],NatRules:[2,1,1,""],NetworkingTemplate:[2,1,1,""],Nsxfirewallrule:[2,1,1,""],Nsxfirewallservice:[2,1,1,""],Nsxl2vpn:[2,1,1,""],Nsxnatrule:[2,1,1,""],Nsxsite:[2,1,1,""],ObjectType:[2,1,1,""],OfferInstancesHolder:[2,1,1,""],OfferType:[2,1,1,""],OnDemandOfferInstance:[2,1,1,""],OrgConfiguration:[2,1,1,""],OrgProperties:[2,1,1,""],Organization:[2,1,1,""],PagedEdgeList:[2,1,1,""],PagingInfo:[2,1,1,""],PopAmiInfo:[2,1,1,""],PopInfo:[2,1,1,""],PopServiceInfo:[2,1,1,""],Requests:[2,1,1,""],Result:[2,1,1,""],ScopeInfo:[2,1,1,""],Sddc:[2,1,1,""],SddcAllocatePublicIpSpec:[2,1,1,""],SddcConfig:[2,1,1,""],SddcLinkConfig:[2,1,1,""],SddcManifest:[2,1,1,""],SddcNetwork:[2,1,1,""],SddcNetworkAddressGroup:[2,1,1,""],SddcNetworkAddressGroups:[2,1,1,""],SddcNetworkDhcpConfig:[2,1,1,""],SddcNetworkDhcpIpPool:[2,1,1,""],SddcPublicIp:[2,1,1,""],SddcResourceConfig:[2,1,1,""],SddcTemplate:[2,1,1,""],SecondaryAddresses:[2,1,1,""],ServiceError:[2,1,1,""],Site:[2,1,1,""],Sites:[2,1,1,""],SslvpnDashboardStats:[2,1,1,""],StubFactory:[2,1,1,""],SubInterface:[2,1,1,""],SubInterfaces:[2,1,1,""],Subnets:[2,1,1,""],SubscriptionDetails:[2,1,1,""],SubscriptionRequest:[2,1,1,""],Task:[2,1,1,""],TaskProgressPhase:[2,1,1,""],TermOfferInstance:[2,1,1,""],TrafficShapingPolicy:[2,1,1,""],Vnic:[2,1,1,""],Vnics:[2,1,1,""],VpcInfo:[2,1,1,""],Vpn:[2,1,1,""],VpnChannelStatus:[2,1,1,""],VpnTunnelStatus:[2,1,1,""],VpnTunnelTrafficStats:[2,1,1,""]},"com.vmware.vmc.model_client.Cluster":{CLUSTER_STATE_ADDING_HOSTS:[2,2,1,""],CLUSTER_STATE_DEPLOYING:[2,2,1,""],CLUSTER_STATE_FAILED:[2,2,1,""],CLUSTER_STATE_READY:[2,2,1,""]},"com.vmware.vmc.model_client.EsxHost":{ESX_STATE_DELETED:[2,2,1,""],ESX_STATE_DELETING:[2,2,1,""],ESX_STATE_DEPLOYING:[2,2,1,""],ESX_STATE_FAILED:[2,2,1,""],ESX_STATE_PROVISIONED:[2,2,1,""],ESX_STATE_READY:[2,2,1,""]},"com.vmware.vmc.model_client.FirewallRule":{ACTION_ALLOW:[2,2,1,""],ACTION_DENY:[2,2,1,""],RULE_TYPE_DEFAULT:[2,2,1,""],RULE_TYPE_USER:[2,2,1,""]},"com.vmware.vmc.model_client.FirewallRuleScope":{VNIC_GROUP_IDS_EXTERNAL:[2,2,1,""],VNIC_GROUP_IDS_INTERNAL:[2,2,1,""],VNIC_GROUP_IDS_VNIC_INDEX_0:[2,2,1,""],VNIC_GROUP_IDS_VNIC_INDEX_1:[2,2,1,""],VNIC_GROUP_IDS_VNIC_INDEX_2:[2,2,1,""],VNIC_GROUP_IDS_VNIC_INDEX_3:[2,2,1,""],VNIC_GROUP_IDS_VNIC_INDEX_4:[2,2,1,""],VNIC_GROUP_IDS_VNIC_INDEX_5:[2,2,1,""],VNIC_GROUP_IDS_VNIC_INDEX_6:[2,2,1,""],VNIC_GROUP_IDS_VNIC_INDEX_7:[2,2,1,""],VNIC_GROUP_IDS_VNIC_INDEX_8:[2,2,1,""],VNIC_GROUP_IDS_VNIC_INDEX_9:[2,2,1,""],VNIC_GROUP_IDS_VSE:[2,2,1,""]},"com.vmware.vmc.model_client.LogicalNetwork":{NETWORK_TYPE_EXTENDED:[2,2,1,""],NETWORK_TYPE_HOSTED:[2,2,1,""],NETWORK_TYPE_ROUTED:[2,2,1,""]},"com.vmware.vmc.model_client.NatRule":{ACTION_DNAT:[2,2,1,""],ACTION_SNAT:[2,2,1,""]},"com.vmware.vmc.model_client.OfferType":{ON_DEMAND:[2,2,1,""],TERM:[2,2,1,""]},"com.vmware.vmc.model_client.OrgConfiguration":{PROVIDER_AWS:[2,2,1,""]},"com.vmware.vmc.model_client.Organization":{PROJECT_STATE_CREATED:[2,2,1,""],PROJECT_STATE_DELETED:[2,2,1,""],SLA_CUSTOMER:[2,2,1,""],SLA_INTERNAL_CUSTOMER:[2,2,1,""],SLA_SECOND_PARTY_PARTNER:[2,2,1,""],SLA_THIRD_PARTY_PARTNER:[2,2,1,""],SLA_VMC_INTERNAL:[2,2,1,""]},"com.vmware.vmc.model_client.PopAmiInfo":{TYPE_CENTOS:[2,2,1,""],TYPE_POP:[2,2,1,""]},"com.vmware.vmc.model_client.PopServiceInfo":{SERVICE_AGENT:[2,2,1,""],SERVICE_AIDE:[2,2,1,""],SERVICE_BRE:[2,2,1,""],SERVICE_BRF:[2,2,1,""],SERVICE_DNS:[2,2,1,""],SERVICE_DOCKER:[2,2,1,""],SERVICE_FM_LOG_COLLECTOR:[2,2,1,""],SERVICE_FM_MANAGEMENT:[2,2,1,""],SERVICE_FM_METRICS_COLLECTOR:[2,2,1,""],SERVICE_FORWARD_PROXY:[2,2,1,""],SERVICE_GLCM:[2,2,1,""],SERVICE_JRE:[2,2,1,""],SERVICE_LOGZ_LOG_COLLECTOR:[2,2,1,""],SERVICE_NTP:[2,2,1,""],SERVICE_OS:[2,2,1,""],SERVICE_REVERSE_PROXY:[2,2,1,""],SERVICE_RTS:[2,2,1,""],SERVICE_S3_ADAPTER:[2,2,1,""]},"com.vmware.vmc.model_client.Sddc":{ACCOUNT_LINK_STATE_DELAYED:[2,2,1,""],ACCOUNT_LINK_STATE_LINKED:[2,2,1,""],ACCOUNT_LINK_STATE_UNLINKED:[2,2,1,""],PROVIDER_AWS:[2,2,1,""],SDDC_STATE_DELETED:[2,2,1,""],SDDC_STATE_DELETING:[2,2,1,""],SDDC_STATE_DELETION_FAILED:[2,2,1,""],SDDC_STATE_DEPLOYING:[2,2,1,""],SDDC_STATE_FAILED:[2,2,1,""],SDDC_STATE_READY:[2,2,1,""]},"com.vmware.vmc.model_client.SddcConfig":{DEPLOYMENT_TYPE_MULTIAZ:[2,2,1,""],DEPLOYMENT_TYPE_SINGLEAZ:[2,2,1,""],PROVIDER_AWS:[2,2,1,""]},"com.vmware.vmc.model_client.SddcResourceConfig":{DEPLOYMENT_TYPE_MULTIAZ:[2,2,1,""],DEPLOYMENT_TYPE_SINGLEAZ:[2,2,1,""],PROVIDER_AWS:[2,2,1,""]},"com.vmware.vmc.model_client.SddcTemplate":{PROVIDER_AWS:[2,2,1,""],STATE_APPLIED:[2,2,1,""],STATE_AVAILABLE:[2,2,1,""],STATE_DELETED:[2,2,1,""],STATE_DELETING:[2,2,1,""],STATE_FAILED:[2,2,1,""],STATE_INUSE:[2,2,1,""]},"com.vmware.vmc.model_client.Site":{TUNNEL_STATUS_CONNECTED:[2,2,1,""],TUNNEL_STATUS_DISCONNECTED:[2,2,1,""],TUNNEL_STATUS_UNKNOWN:[2,2,1,""]},"com.vmware.vmc.model_client.SubscriptionDetails":{STATUS_ACTIVATED:[2,2,1,""],STATUS_CANCELLED:[2,2,1,""],STATUS_CREATED:[2,2,1,""],STATUS_EXPIRED:[2,2,1,""],STATUS_FAILED:[2,2,1,""],STATUS_PENDING_PROVISIONING:[2,2,1,""]},"com.vmware.vmc.model_client.Task":{STATUS_CANCELED:[2,2,1,""],STATUS_CANCELING:[2,2,1,""],STATUS_FAILED:[2,2,1,""],STATUS_FINISHED:[2,2,1,""],STATUS_STARTED:[2,2,1,""]},"com.vmware.vmc.model_client.Vpn":{AUTHENTICATION_PSK:[2,2,1,""],AUTHENTICATION_UNKNOWN:[2,2,1,""],DH_GROUP_DH14:[2,2,1,""],DH_GROUP_DH15:[2,2,1,""],DH_GROUP_DH16:[2,2,1,""],DH_GROUP_DH2:[2,2,1,""],DH_GROUP_DH5:[2,2,1,""],DH_GROUP_UNKNOWN:[2,2,1,""],ENCRYPTION_AES256:[2,2,1,""],ENCRYPTION_AES:[2,2,1,""],ENCRYPTION_AES_GCM:[2,2,1,""],ENCRYPTION_TRIPLE_DES:[2,2,1,""],ENCRYPTION_UNKNOWN:[2,2,1,""],STATE_CONNECTED:[2,2,1,""],STATE_DISCONNECTED:[2,2,1,""],STATE_PARTIALLY_CONNECTED:[2,2,1,""],STATE_UNKNOWN:[2,2,1,""]},"com.vmware.vmc.model_client.VpnChannelStatus":{CHANNEL_STATUS_CONNECTED:[2,2,1,""],CHANNEL_STATUS_DISCONNECTED:[2,2,1,""],CHANNEL_STATUS_UNKNOWN:[2,2,1,""]},"com.vmware.vmc.model_client.VpnTunnelStatus":{TUNNEL_STATUS_CONNECTED:[2,2,1,""],TUNNEL_STATUS_DISCONNECTED:[2,2,1,""],TUNNEL_STATUS_UNKNOWN:[2,2,1,""]},"com.vmware.vmc.orgs":{account_link_client:[3,0,0,"-"],sddcs:[4,0,0,"-"],sddcs_client:[3,0,0,"-"]},"com.vmware.vmc.orgs.account_link_client":{CompatibleSubnets:[3,1,1,""],CompatibleSubnetsAsync:[3,1,1,""],ConnectedAccounts:[3,1,1,""],MapCustomerZones:[3,1,1,""],SddcConnections:[3,1,1,""],StubFactory:[3,1,1,""]},"com.vmware.vmc.orgs.account_link_client.CompatibleSubnets":{get:[3,3,1,""],post:[3,3,1,""]},"com.vmware.vmc.orgs.account_link_client.CompatibleSubnetsAsync":{get:[3,3,1,""],post:[3,3,1,""]},"com.vmware.vmc.orgs.account_link_client.ConnectedAccounts":{"delete":[3,3,1,""],get:[3,3,1,""]},"com.vmware.vmc.orgs.account_link_client.MapCustomerZones":{post:[3,3,1,""]},"com.vmware.vmc.orgs.account_link_client.SddcConnections":{get:[3,3,1,""]},"com.vmware.vmc.orgs.sddcs":{dns_client:[4,0,0,"-"],mgw_client:[4,0,0,"-"],networks:[5,0,0,"-"],networks_client:[4,0,0,"-"]},"com.vmware.vmc.orgs.sddcs.dns_client":{Private:[4,1,1,""],Public:[4,1,1,""],StubFactory:[4,1,1,""]},"com.vmware.vmc.orgs.sddcs.dns_client.Private":{update:[4,3,1,""]},"com.vmware.vmc.orgs.sddcs.dns_client.Public":{update:[4,3,1,""]},"com.vmware.vmc.orgs.sddcs.mgw_client":{Publicips:[4,1,1,""],StubFactory:[4,1,1,""]},"com.vmware.vmc.orgs.sddcs.mgw_client.Publicips":{get:[4,3,1,""],list:[4,3,1,""]},"com.vmware.vmc.orgs.sddcs.networks":{cgws:[6,0,0,"-"],edges:[7,0,0,"-"],edges_client:[5,0,0,"-"]},"com.vmware.vmc.orgs.sddcs.networks.cgws":{l2vpn_client:[6,0,0,"-"]},"com.vmware.vmc.orgs.sddcs.networks.cgws.l2vpn_client":{Config:[6,1,1,""],StubFactory:[6,1,1,""]},"com.vmware.vmc.orgs.sddcs.networks.cgws.l2vpn_client.Config":{"delete":[6,3,1,""],get:[6,3,1,""],update:[6,3,1,""]},"com.vmware.vmc.orgs.sddcs.networks.edges":{dhcp_client:[7,0,0,"-"],dns_client:[7,0,0,"-"],firewall:[8,0,0,"-"],firewall_client:[7,0,0,"-"],ipsec_client:[7,0,0,"-"],l2vpn:[9,0,0,"-"],nat:[10,0,0,"-"],nat_client:[7,0,0,"-"],statistics:[11,0,0,"-"],statistics_client:[7,0,0,"-"]},"com.vmware.vmc.orgs.sddcs.networks.edges.dhcp_client":{Leaseinfo:[7,1,1,""],StubFactory:[7,1,1,""]},"com.vmware.vmc.orgs.sddcs.networks.edges.dhcp_client.Leaseinfo":{get:[7,3,1,""]},"com.vmware.vmc.orgs.sddcs.networks.edges.dns_client":{Config:[7,1,1,""],Statistics:[7,1,1,""],StubFactory:[7,1,1,""]},"com.vmware.vmc.orgs.sddcs.networks.edges.dns_client.Config":{"delete":[7,3,1,""],create:[7,3,1,""],get:[7,3,1,""],update:[7,3,1,""]},"com.vmware.vmc.orgs.sddcs.networks.edges.dns_client.Statistics":{get:[7,3,1,""]},"com.vmware.vmc.orgs.sddcs.networks.edges.firewall":{config_client:[8,0,0,"-"]},"com.vmware.vmc.orgs.sddcs.networks.edges.firewall.config_client":{Rules:[8,1,1,""],StubFactory:[8,1,1,""]},"com.vmware.vmc.orgs.sddcs.networks.edges.firewall.config_client.Rules":{"delete":[8,3,1,""],add:[8,3,1,""],get:[8,3,1,""],update:[8,3,1,""]},"com.vmware.vmc.orgs.sddcs.networks.edges.firewall_client":{Config:[7,1,1,""],Statistics:[7,1,1,""],StubFactory:[7,1,1,""]},"com.vmware.vmc.orgs.sddcs.networks.edges.firewall_client.Config":{"delete":[7,3,1,""],get:[7,3,1,""],update:[7,3,1,""]},"com.vmware.vmc.orgs.sddcs.networks.edges.firewall_client.Statistics":{get:[7,3,1,""]},"com.vmware.vmc.orgs.sddcs.networks.edges.ipsec_client":{Config:[7,1,1,""],Statistics:[7,1,1,""],StubFactory:[7,1,1,""]},"com.vmware.vmc.orgs.sddcs.networks.edges.ipsec_client.Config":{"delete":[7,3,1,""],get:[7,3,1,""],update:[7,3,1,""]},"com.vmware.vmc.orgs.sddcs.networks.edges.ipsec_client.Statistics":{get:[7,3,1,""]},"com.vmware.vmc.orgs.sddcs.networks.edges.l2vpn":{config_client:[9,0,0,"-"]},"com.vmware.vmc.orgs.sddcs.networks.edges.l2vpn.config_client":{Statistics:[9,1,1,""],StubFactory:[9,1,1,""]},"com.vmware.vmc.orgs.sddcs.networks.edges.l2vpn.config_client.Statistics":{get:[9,3,1,""]},"com.vmware.vmc.orgs.sddcs.networks.edges.nat":{config_client:[10,0,0,"-"]},"com.vmware.vmc.orgs.sddcs.networks.edges.nat.config_client":{Rules:[10,1,1,""],StubFactory:[10,1,1,""]},"com.vmware.vmc.orgs.sddcs.networks.edges.nat.config_client.Rules":{"delete":[10,3,1,""],add:[10,3,1,""],update:[10,3,1,""]},"com.vmware.vmc.orgs.sddcs.networks.edges.nat_client":{Config:[7,1,1,""],StubFactory:[7,1,1,""]},"com.vmware.vmc.orgs.sddcs.networks.edges.nat_client.Config":{"delete":[7,3,1,""],get:[7,3,1,""],update:[7,3,1,""]},"com.vmware.vmc.orgs.sddcs.networks.edges.statistics":{dashboard_client:[11,0,0,"-"],interfaces_client:[11,0,0,"-"]},"com.vmware.vmc.orgs.sddcs.networks.edges.statistics.dashboard_client":{Firewall:[11,1,1,""],Interface:[11,1,1,""],Ipsec:[11,1,1,""],StubFactory:[11,1,1,""]},"com.vmware.vmc.orgs.sddcs.networks.edges.statistics.dashboard_client.Firewall":{get:[11,3,1,""]},"com.vmware.vmc.orgs.sddcs.networks.edges.statistics.dashboard_client.Interface":{get:[11,3,1,""]},"com.vmware.vmc.orgs.sddcs.networks.edges.statistics.dashboard_client.Ipsec":{get:[11,3,1,""]},"com.vmware.vmc.orgs.sddcs.networks.edges.statistics.interfaces_client":{Internal:[11,1,1,""],StubFactory:[11,1,1,""],Uplink:[11,1,1,""]},"com.vmware.vmc.orgs.sddcs.networks.edges.statistics.interfaces_client.Internal":{get:[11,3,1,""]},"com.vmware.vmc.orgs.sddcs.networks.edges.statistics.interfaces_client.Uplink":{get:[11,3,1,""]},"com.vmware.vmc.orgs.sddcs.networks.edges.statistics_client":{Interfaces:[7,1,1,""],StubFactory:[7,1,1,""]},"com.vmware.vmc.orgs.sddcs.networks.edges.statistics_client.Interfaces":{get:[7,3,1,""]},"com.vmware.vmc.orgs.sddcs.networks.edges_client":{Peerconfig:[5,1,1,""],Status:[5,1,1,""],StubFactory:[5,1,1,""],Vnics:[5,1,1,""]},"com.vmware.vmc.orgs.sddcs.networks.edges_client.Peerconfig":{get:[5,3,1,""]},"com.vmware.vmc.orgs.sddcs.networks.edges_client.Status":{get:[5,3,1,""]},"com.vmware.vmc.orgs.sddcs.networks.edges_client.Vnics":{get:[5,3,1,""]},"com.vmware.vmc.orgs.sddcs.networks_client":{Edges:[4,1,1,""],Logical:[4,1,1,""],StubFactory:[4,1,1,""]},"com.vmware.vmc.orgs.sddcs.networks_client.Edges":{get:[4,3,1,""]},"com.vmware.vmc.orgs.sddcs.networks_client.Logical":{"delete":[4,3,1,""],create:[4,3,1,""],get:[4,3,1,""],get_0:[4,3,1,""],update:[4,3,1,""]},"com.vmware.vmc.orgs.sddcs_client":{Clusters:[3,1,1,""],Convert:[3,1,1,""],Esxs:[3,1,1,""],Publicips:[3,1,1,""],SddcTemplate:[3,1,1,""],StubFactory:[3,1,1,""]},"com.vmware.vmc.orgs.sddcs_client.Clusters":{"delete":[3,3,1,""],create:[3,3,1,""]},"com.vmware.vmc.orgs.sddcs_client.Convert":{create:[3,3,1,""]},"com.vmware.vmc.orgs.sddcs_client.Esxs":{create:[3,3,1,""]},"com.vmware.vmc.orgs.sddcs_client.Publicips":{"delete":[3,3,1,""],create:[3,3,1,""],get:[3,3,1,""],list:[3,3,1,""],update:[3,3,1,""]},"com.vmware.vmc.orgs.sddcs_client.SddcTemplate":{get:[3,3,1,""]},"com.vmware.vmc.orgs_client":{AccountLink:[2,1,1,""],OfferInstances:[2,1,1,""],Providers:[2,1,1,""],SddcTemplates:[2,1,1,""],Sddcs:[2,1,1,""],StubFactory:[2,1,1,""],Subscriptions:[2,1,1,""],Tasks:[2,1,1,""]},"com.vmware.vmc.orgs_client.AccountLink":{create:[2,3,1,""]},"com.vmware.vmc.orgs_client.OfferInstances":{list:[2,3,1,""]},"com.vmware.vmc.orgs_client.Providers":{list:[2,3,1,""]},"com.vmware.vmc.orgs_client.SddcTemplates":{"delete":[2,3,1,""],get:[2,3,1,""],list:[2,3,1,""]},"com.vmware.vmc.orgs_client.Sddcs":{"delete":[2,3,1,""],create:[2,3,1,""],get:[2,3,1,""],list:[2,3,1,""]},"com.vmware.vmc.orgs_client.Subscriptions":{"delete":[2,3,1,""],GET_0_OFFER_TYPE_ON_DEMAND:[2,2,1,""],GET_0_OFFER_TYPE_TERM:[2,2,1,""],create:[2,3,1,""],get:[2,3,1,""],get_0:[2,3,1,""]},"com.vmware.vmc.orgs_client.Tasks":{get:[2,3,1,""],list:[2,3,1,""],update:[2,3,1,""]},"com.vmware.vmc_client":{Orgs:[1,1,1,""],StubFactory:[1,1,1,""]},"com.vmware.vmc_client.Orgs":{get:[1,3,1,""],list:[1,3,1,""]},com:{vmware:[1,0,0,"-"]}},objnames:{"0":["py","module","Python module"],"1":["py","class","Python class"],"2":["py","attribute","Python attribute"],"3":["py","method","Python method"]},objtypes:{"0":"py:module","1":"py:class","2":"py:attribute","3":"py:method"},terms:{"278710ff4e":2,"3de":2,"4d4e":2,"6b6d":2,"boolean":2,"byte":2,"case":2,"class":[1,2,3,4,5,6,7,8,9,10,11,12],"default":[2,3,4,5,7,11],"enum":[2,12],"final":2,"float":2,"import":12,"long":[2,4,7,8,10,11],"new":[2,3,12],"null":2,"public":[2,3,4],"return":[1,2,3,4,5,6,7,8,9,11],"switch":2,"true":[2,3,4,5,7],"while":2,AES:2,ANDs:2,AWS:2,DNS:[2,4,7],Dns:2,For:3,IDs:2,IPs:[2,3,4],NOT:2,Not:[2,4,5,6,7,8,9,10,11],ORs:2,RTS:2,The:[2,3,4,5,12],These:2,Used:2,Using:2,VMs:[2,3,4],abandon:2,about:[3,4],abstractent:2,accept:2,access:[2,3],access_permiss:2,account:[2,3],account_link_cli:[0,1,2,13],account_link_config:2,account_link_sddc_config:2,account_link_st:2,account_link_state_delai:2,account_link_state_link:2,account_link_state_unlink:2,account_numb:2,accountlink:2,accountlinkconfig:2,accountlinksddcconfig:2,across:3,act:2,action:[2,3],action_allow:2,action_deni:2,action_dnat:2,action_snat:2,activ:[2,3],active_cli:2,active_vse_ha_index:2,add:[2,3,8,10],adding_host:2,addit:2,address:[2,3,4],address_group:2,addressfwsourcedestin:2,addtoal:3,administr:2,advisori:2,aefb:2,aes256:2,aes:2,aes_gcm:2,against:2,agent:2,agent_url:2,aggreg:5,aid:2,alert:2,algorithm:2,all:[1,2,3,4,5,7],alloc:[2,3,4],allocation_id:2,allow:[2,3,12],allowed_act:2,also:2,alwai:2,ami:2,ami_info:2,amiinfo:2,among:2,amount:2,ani:[2,3],anniversary_billing_d:2,answer:2,api:[2,3,12],api_association_id:2,api_subnet_id:2,api_vers:2,append:[8,10],appli:2,applianc:2,appliance_s:2,appliances_summari:2,appliancessummari:2,applic:2,application_id:2,arbitrari:2,argument:2,arp:2,arrai:2,ascend:4,assign:2,associ:2,associated_private_ip:[2,3],association_id:2,attach:[2,3],attack:2,attch:3,attribut:[2,12],attrit:12,auth_failur:2,authent:2,authentication_algorithm:2,authentication_mod:2,authentication_psk:2,authentication_unknown:2,author:[1,4,5,6,7,8,9,10,11],auto_renewed_allow:2,avail:[2,3,5],availability_zon:2,average_bandwidth:2,avoid:2,aws_subnet:3,awsag:2,awscloudprovid:2,awscompatiblesubnet:[2,3],awscustomerconnectedaccount:[2,3],awsesxhost:2,awskeypair:2,awsorgconfigur:2,awssddcconfig:2,awssddcconnect:[2,3],awssddcresourceconfig:2,awssubnet:[2,3],back:[2,12],backup_restore_bucket:2,backward:2,bad:[2,4,5,6,7,8,9,10,11],balanc:2,base:[1,2,3,4,5,6,7,8,9,10,11,12],been:2,befor:[2,3],behaviour:3,being:2,between:2,billing_subscription_id:2,binari:2,bind:[1,2,3,4,5,6,7,8,9,10,11,12],binding_st:2,block:2,bodi:4,bogu:2,bool:[2,3,4,5,6,7],both:12,bound:3,bre:2,brf:2,bridg:2,bucket:2,build:2,bundl:2,burst_siz:2,byte_count:2,c41:2,ca637f38609:2,ca_certif:2,cacertif:2,cach:2,cache_s:2,cached_dbrr_set:2,call:[1,3],can:[2,3,11,12],cancel:2,cannot:[2,3,4],capabl:2,care:3,carri:2,cbmstatist:[2,7,11],cbmstatsdata:2,cento:2,certif:2,cf_stack_nam:2,cgw:[0,1,2,3,4,5],cgw_id:2,cgw_name:2,chang:2,channel:2,channel_st:2,channel_statu:2,channel_status_connect:2,channel_status_disconnect:2,channel_status_unknown:2,charact:2,check:2,choic:2,chosen:3,cidr:2,cidr_block_subnet:2,cidr_block_vpc:2,cipher:2,client:2,client_handl:2,client_hostnam:2,cln:2,close:2,cloud:[2,3],cloud_configur:2,cloud_password:2,cloud_user_group:2,cloud_usernam:2,cloudprovid:2,cltt:2,cluster:[2,3],cluster_config:3,cluster_id:2,cluster_nam:2,cluster_st:2,cluster_state_adding_host:2,cluster_state_deploi:2,cluster_state_fail:2,cluster_state_readi:2,clusterconfig:[2,3],code:2,collect:2,column:4,com:[12,13],comma:2,commit:2,commitment_term:2,commitment_term_uom:2,common:2,commun:[2,12],communication_channel:2,compat:[2,3],compatiblesubnet:3,compatiblesubnetsasync:3,complet:[2,3],compon:2,compos:2,comput:[2,4,5,6,7,8,9,10,11],compute_gateway_templ:2,computegatewaytempl:2,concurr:2,config:[1,2,3,4,5,6,7,8,9,10,11],config_cli:[0,1,2,3,4,5,7],configur:[1,2,3,4,5,6,7,8,9,10,11],configuration_limit:2,connect:[2,3],connected_account_id:2,connectedaccount:3,connection_count:2,consecut:2,consid:2,consum:2,contain:[2,12],content:13,control:2,convei:2,convert:3,correspond:2,count:2,countri:2,creat:[1,2,3,4,5,6,7,8,9,10,11,12],created_at:2,createspec:12,creation:2,credenti:1,critic:2,crl:2,crl_certif:2,crlcertif:2,csp_subscription_id:2,currenc:2,current:[2,3,4,12],custom:[2,3],custom_properti:2,customer_available_zon:2,customer_eni_info:2,customer_subnet_id:2,cycl:2,cycle_id:2,dashboard:[2,11],dashboard_cli:[0,1,2,3,4,5,7],dashboarddata:2,dashboardstat:2,dashboardstatist:[2,11],data:[2,3,7],data_dto:2,data_permiss:2,data_store_moid_of_active_vs:2,data_store_name_of_active_vs:2,databas:5,datacent:[2,3],datacenter_moid:2,datacenter_nam:2,datapageedgesummari:2,datapagesddcnetwork:[2,4],datapermiss:2,datastor:2,date:2,datetim:2,debug:2,decryption_failur:2,default_messag:2,default_polici:2,default_route_t:2,defin:[2,12],definit:[2,3],delai:2,delay_account_link:2,delet:[2,3,4,6,7,8,10],deletion_fail:2,delimit:2,demand:2,deni:2,denot:2,deploi:2,deploy:2,deploy_appli:2,deployment_typ:2,deployment_type_multiaz:2,deployment_type_singleaz:2,deprec:2,deriv:2,describ:2,descript:[2,4,12],destin:2,destination_scop:2,detach:3,detail:[1,2,5],detect:2,determin:2,dh14:2,dh15:2,dh16:2,dh2:2,dh5:2,dh_group:2,dh_group_dh14:2,dh_group_dh15:2,dh_group_dh16:2,dh_group_dh2:2,dh_group_dh5:2,dh_group_unknown:2,dhcp:[2,7],dhcp_client:[0,1,2,3,4,5],dhcp_config:2,dhcp_enabl:2,dhcp_ip_rang:2,dhcpleas:[2,7],dhcpleaseinfo:2,dict:2,diffi:2,direct:2,disabl:[2,7],disable_ev:2,disconnect:2,discrimin:2,displai:2,display_nam:2,distinct:2,distribut:2,distributedportgroup:2,distributedrout:[2,4],distributedvirtualswitch:2,divid:2,dnat:2,dnat_match_source_address:2,dnat_match_source_port:2,dnat_rule_id:2,dns_client:[0,1,2,3,5,13],dns_config:7,dns_server:2,dns_view:2,dns_with_management_vm_private_ip:2,dnsconfig:[2,7],dnsforward:2,dnslisten:2,dnsresponsestat:2,dnsstatusandstat:[2,7],dnsview:2,dnsviewmatch:2,docker:2,document:3,doe:[2,12],doesn:[1,2],domain:2,domain_nam:2,done:2,doubl:2,down:2,drop:2,drop_icmp_replai:2,drop_invalid_traff:2,dropped_rx_packet:2,dropped_tx_packet:2,dto:7,dvportgroup:2,dynamicstructur:5,each:2,edg:[0,1,2,3,4,5,6],edge_assist_id:2,edge_assist_instance_nam:2,edge_association_id:2,edge_id:[2,5,6,7,8,9,10,11],edge_pag:2,edge_statu:2,edge_subnet_id:2,edge_typ:[2,4],edge_vm_ha_index:2,edge_vm_statu:2,edgejob:2,edges_cli:[0,1,2,3,4],edgestatu:[2,5],edgesummari:2,edgevmstatu:2,edgevnicaddressgroup:2,egress:2,els:[2,12],emerg:2,empti:2,enabl:[2,7],enable_bridge_mod:2,enable_fip:2,enable_pf:2,enable_proxy_arp:2,enable_send_redirect:2,enable_syn_flood_protect:2,enablefip:4,enclos:2,encript:2,encrypt:2,encryption_a:2,encryption_aes256:2,encryption_aes_gcm:2,encryption_algorithm:2,encryption_failur:2,encryption_triple_d:2,encryption_unknown:2,end:[2,7,11],end_dat:2,end_tim:[2,7,11],english:2,eni_group:2,entiti:[2,12],entity_metadata:12,entri:2,enumer:2,epoch:[7,11],error:2,error_cod:2,error_messag:2,errorrespons:2,errors_cli:[1,2,3,4,5,6,7,8,9,10,11],escap:2,establish:2,established_d:2,estim:2,estimated_remaining_minut:2,esx:[2,3],esx_ami:2,esx_cluster_id:2,esx_config:3,esx_host:2,esx_host_list:2,esx_id:2,esx_nsxt_ami:2,esx_security_group_id:2,esx_stat:2,esx_state_delet:2,esx_state_deploi:2,esx_state_fail:2,esx_state_provis:2,esx_state_readi:2,esxconfig:[2,3],esxhost:2,etc:2,even:3,event:2,exampl:[2,5],exclud:2,execut:2,exist:[1,2],expir:2,expiration_d:2,explain:12,express:2,extend:2,extended_attribut:2,extendedattribut:2,extens:2,extern:2,extra:2,factor:2,fail:2,failur:2,failure_messag:2,fals:[2,5,7],featur:[2,5],feature_cap:2,feature_status:2,feature_typ:2,featurecap:2,featurestatu:2,fence_paramet:2,fetch:4,field:2,file:12,filepath:12,filter:[2,4],find:[2,3,4],finish:[2,3],fip:2,firewal:[0,1,2,3,4,5,7,11],firewall_cli:[0,1,2,3,4,5],firewall_config:7,firewall_rul:[2,8],firewallconfig:[2,7],firewalldashboardstat:2,firewalldefaultpolici:2,firewallglobalconfig:2,firewallrul:[2,8],firewallrulescop:2,firewallrulestat:[2,7],firewallservic:2,first:[2,12],flag:2,flood:2,fm_log_collector:2,fm_manag:2,fm_metrics_collector:2,folder:12,follow:[2,12],forbidden:[1,2,3,4,5,6,7,8,9,10,11],forc:3,force_even_when_sddc_pres:3,forcibl:3,form:[2,5],form_err:2,format:[2,5],forward:2,forward_proxi:2,found:[2,3,4,5,6,7,8,9,10,11],four:3,fqdn:2,free:[3,5],from:[2,3,5,7,11,12],futur:12,gatewai:[2,4,5,6,7,8,9,10,11],gateway_ip:2,gatewayservic:[2,4],gatewaytempl:2,gcm:2,gener:[2,3,5,12],get:[1,2,3,4,5,6,7,8,9,11,12],get_0:[2,4],get_0_offer_type_on_demand:2,get_0_offer_type_term:2,getlatest:5,given:[2,3,4,11],glcm:2,glcm_bundl:2,glcmbundl:2,global:2,global_:2,global_config:2,green:2,grei:2,group:2,grouping_object_id:2,groupingobject:2,ha_stat:2,ha_vnic_in_us:2,happen:2,hardwar:2,hardware_typ:2,has:[2,3,12],have:[2,3,12],header:[4,5,6,7,8,9,10,11],health:2,healthcheck:2,healthi:2,hellman:2,high:[2,3],holder:2,host:[2,3],host_lease_info_dto:2,host_lease_infos_dto:2,host_moid_of_active_vs:2,host_name_of_active_vs:2,hostleaseinfo:2,hostnam:2,how:12,http:2,hypervisor_assist:2,icmp6:2,icmp6_timeout:2,icmp:2,icmp_timeout:2,icmp_typ:2,icmptyp:2,identifi:[1,2,3,4,5,6,7,8,9,10,11],ignor:2,ike_statu:2,implement:2,in_:2,in_shaping_polici:2,includ:[2,12],index:[2,4,13],indic:2,individu:2,info:2,inform:[2,3,4],inherit:2,initi:[1,2,3,4,5,6,7,8,9,10,11],input:5,instal:2,instanc:[1,2,3,4,5,6,7,8,9,10,11,12],instance_id:2,instanti:[2,12],int32:2,int64:2,integrity_error:2,intend:2,interactionpermiss:2,interfac:[2,5,7,11],interfaces_cli:[0,1,2,3,4,5,7],interfacesdashboardstat:2,intermitt:2,intern:[2,11],internal_custom:2,internal_high:2,internal_ip:2,internal_network_id:2,internal_port:2,internal_public_ip_pool:2,internalservererror:2,internet_gateway_id:2,interv:[2,11],inus:2,invalid:[2,3,4,5,6,7,8,9,10,11],invalid_appl:2,invalid_destin:2,invalid_sourc:2,invalidrequest:[2,3,4,5,6,7,8,9,10,11],involv:2,ip1:2,ip_address:2,ip_generic_timeout:2,ip_pool:2,ip_rang:2,ip_set:2,ipaddress:2,ipn:2,ipsec:[2,5,7,11],ipsec_bytes_in:2,ipsec_bytes_out:2,ipsec_cli:[0,1,2,3,4,5],ipsec_tunnel:2,ipsecdashboardstat:2,ipsecglobalconfig:2,ipsecsit:[2,5],ipsecsiteconfig:5,ipsecsiteikestatu:2,ipsecsitestat:2,ipsecstatusandstat:[2,7],ipsectunnelstat:2,ipset:2,ipv4:2,is_cgw_pres:2,is_compat:2,is_connect:2,is_licens:2,is_support:2,is_univers:2,is_upgrade_avail:2,isconnect:2,iso:2,its:2,job:2,job_id:2,jre:2,json:[5,12],just:2,kbp:2,keep:2,kei:2,key_fingerprint:2,key_materi:2,key_nam:2,key_pair:2,keyvalueattribut:2,kilobit:2,l2_extens:2,l2_vpn:2,l2extens:2,l2vpn:[0,1,2,3,4,5,7],l2vpn_client:[0,1,2,3,4,5],l2vpnstat:2,l2vpnstatusandstat:[2,9],label:2,lan:2,languag:2,last:2,last_health_status_chang:2,last_info_messag:2,last_informational_messag:2,last_published_pre_rules_generation_numb:2,last_updated_tim:2,later:2,latest:[2,5],layer:2,lb_bps_in:2,lb_bps_out:2,lb_http_req:2,lb_session:2,ld_rname:4,lead:3,leas:2,leaseinfo:7,least:2,left:2,legacyportgroup:2,length:2,letter:2,level:2,licenc:2,licenceaclpermiss:2,lif:2,limit:2,link:[2,3],linked_account_id:3,linked_account_path_id:3,list:[1,2,3,4],listen:2,listener_ip:2,liter:2,live:5,load:2,load_balanc:2,loadbalancerdashboardstat:2,local:2,local_egress_en:2,local_id:2,local_ip:2,local_ip_address:2,local_spi:2,local_subnet:2,localip:2,localiz:2,localized_messag:2,locat:2,log:2,log_icmp_error:2,log_invalid_traff:2,log_level:2,logging_en:2,logic:[2,4],logical_network:2,logical_router_scop:2,logical_switch_id:2,logical_switch_nam:2,logicalnetwork:2,logicalrouterscop:2,logicalswitch:2,logz_log_collector:2,loss:3,lower:2,lrouter_uuid:2,mac:2,mac_address:2,macaddress:2,machin:2,mai:[2,12],manag:[2,4,5,7,8,10,11],manage_permiss:2,managedobjectrefer:2,management_d:2,management_gateway_templ:2,management_rp:2,managementgatewaytempl:2,mandatori:3,manifest:2,map:[2,3],map_zones_request:3,mapcustomerzon:3,mapzonesrequest:[2,3],mark:2,mask:2,match:[2,4],match_transl:2,max:2,max_num_public_ip:2,maximum:2,mean:2,meaning:2,measur:2,member:3,messag:2,meta_dto:2,metadashboardstat:2,metadata:[2,12],metadata_cli:12,method:[2,3,12],mgw:[2,4],mgw_client:[0,1,2,3,13],mgw_id:2,might:2,millisecond:[7,11],min:[2,11],minut:2,mix:2,mode:2,model:[1,2,3,4,5,6,7,8,9,11],model_cli:[0,1,3,4,5,6,7,8,9,10,11,13],modif:2,modifi:[2,4,6,7,8],modul:[0,12,13],moid:2,monitor:2,monthly_cost:2,more:[2,3],most:2,move:2,mtu:2,multiaz:2,multipl:2,must:[2,3],name:[2,3,4,12],nat:[0,1,2,3,4,5,7],nat_client:[0,1,2,3,4,5],nat_rul:[2,10],nat_rules_dto:2,natrul:[2,10],need:[2,3],nest:2,network:[0,1,2,3,4],network_cidr:2,network_gatewai:2,network_id:4,network_netmask:2,network_typ:2,network_type_extend:2,network_type_host:2,network_type_rout:2,networking_templ:2,networkingtempl:2,networks_cli:[0,1,2,3,13],newer:[2,12],next_binding_st:2,node:[2,3],node_id:2,non:3,none:[2,3,4,5,6,7,11],note2:2,note:2,notfound:[1,2,3,4,5,6,7,8,9,10,11],notic:2,notifi:3,nsx:[2,4,5,7,8,9,10,11],nsx_mgr_management_ip:2,nsx_mgr_url:2,nsxfirewallrul:[2,8],nsxfirewallservic:2,nsxl2vpn:[2,6],nsxnatrul:[2,10],nsxsite:2,nsxt:2,ntp:2,num_host:2,number:[2,4],number_of_connected_vn:2,number_of_deployed_vm:2,nx_domain:2,nxrrset:2,object:[2,3,4,5,6,7,8,9,10,11],object_id:2,object_type_nam:2,objectid:5,objecttyp:[2,5],off:3,offer:2,offer_nam:2,offer_typ:2,offer_vers:2,offerinst:2,offerinstanceshold:2,offertyp:2,older:12,omit:2,on_demand:2,on_prem_gateway_ip:2,on_prem_nat_ip:2,on_prem_network_cidr:2,on_prem_subnet:2,onc:2,ondemandofferinst:2,one:[2,3,4,12],onedai:11,onemonth:11,oneweek:11,oneyear:11,ongo:2,onli:[2,12],open:2,oper:[2,3],option:[2,3,4,5,6,7,11],order:[2,4],org:[0,1,2,13],org_id:2,org_typ:2,organ:[1,2,3,4,5,6,7,8,9,10,11],orgconfigur:2,orgproperti:2,orgs_client:[0,1,13],origin:2,original_address:2,original_port:2,original_servic:2,original_service_error_cod:2,other:[2,4],out:2,out_shaping_polici:2,output:5,over:2,overwrit:2,packag:13,packet:2,packet_count:2,packet_received_error:2,packet_sent_error:2,packets_in:2,packets_out:2,page:[2,4,12,13],page_s:[2,4],pagededgelist:[2,4],pagin:4,paging_info:2,paginginfo:2,pair:2,param:[2,3],paramet:[1,2,3,4,5,6,7,8,9,10,11,12],partially_connect:2,particular:3,partner:2,pass:[2,4,5,6,7,8,9,10,11,12],password:2,path:2,pattern:2,payload:3,peak_bandwidth:2,peer:[2,5],peer_id:2,peer_ip:2,peer_ip_address:2,peer_spi:2,peer_subnet:2,peerconfig:5,peering_connection_id:2,peerip:2,pending_provis:2,per:[2,4,5],percentag:2,perfect:2,permiss:2,persist:2,perspect:2,petrona:2,petronas_regions_to_map:2,pfs_enabl:2,phase:2,phase_in_progress:2,pick:2,pipelin:2,platform:2,plu:2,polici:2,policy_external_id:2,policy_payer_arn:2,policy_service_arn:2,pool:2,pop:2,pop_info:2,popamiinfo:2,popinfo:2,popserviceinfo:2,port:2,portgroup:2,portgroup_id:2,portgroup_nam:2,possibl:2,post:3,power:3,pre:2,pre_rules_exist:2,pre_rules_generation_numb:2,pre_shared_kei:2,prefix:2,prefix_length:2,present:2,prev_edge_id:4,prev_sddc_network_id:4,prevedgeid:4,previou:4,primari:2,primary_address:2,primary_dn:2,print:12,privat:[2,3,4],private_ip:2,private_subnet_id:2,privileg:[2,3],problem:2,process:[2,3],product:2,product_typ:2,program:12,progress:2,progress_perc:2,project_st:2,project_state_cr:2,project_state_delet:2,properti:2,protect:2,protocol:2,provid:[2,4,5,6,7,8,9,10,11,12],provider_aw:2,provis:2,proxi:2,psc:2,psc_management_ip:2,psc_url:2,psk:2,public_ip:2,public_ip_pool:2,public_port:2,publicip:[3,4],publish:2,publish_permiss:2,publish_statu:2,quantiti:2,queri:2,quot:2,rais:[1,2,3,4,5,6,7,8,9,10,11],rang:2,rate:2,read:2,readi:2,reason:2,reattach:3,receiv:[2,12],recent:2,recent_job_info:2,record:[2,4],recurs:2,red:2,redirect:2,redund:3,ref:3,refer:4,region:[2,3],region_nam:2,region_to_az_to_shadow_map:2,regist:2,reject:2,relat:2,remain:2,remap:2,remot:12,remov:[2,3],removefromal:3,renam:3,repeat:2,replai:2,replay_error:2,repres:[2,12],request:[2,3,4,5,6,7,8,9,10,11],requir:[1,2,3,4,5,6,7,8,9,10,11],reserved_ip:2,reset:2,resgroup:2,resid:2,resourc:[2,3],resource_config:2,resource_id:2,resource_pool_moid_of_active_vs:2,resource_pool_name_of_active_vs:2,resource_typ:2,resourcepool:2,respond:2,respons:[2,5,12],rest:2,result:2,retain:2,retain_configur:2,retainconfigur:2,retri:2,retriev:[2,4,5,6,7,8,9,11],retryabl:2,reverse_proxi:2,revis:2,rout:2,route_table_id:2,router:[2,4],rule:[2,7,8,10],rule_id:[2,7,8,10],rule_interfac:2,rule_tag:2,rule_typ:2,rule_type_default:2,rule_type_us:2,ruleid:2,run:2,rx_bytes_on_local_subnet:2,rx_bytes_on_sit:2,s3_adapt:2,s3_bucket:2,same:2,save_permiss:2,scope:2,scopeinfo:2,sddc:[0,1,2,3,13],sddc_config:2,sddc_id:2,sddc_manifest:2,sddc_network:[2,4],sddc_public_ip_object:3,sddc_state:2,sddc_state_delet:2,sddc_state_deletion_fail:2,sddc_state_deploi:2,sddc_state_fail:2,sddc_state_readi:2,sddc_template_id:2,sddc_type:2,sddcallocatepublicipspec:[2,3],sddcconfig:2,sddcconnect:3,sddclinkconfig:2,sddcmanifest:2,sddcnetwork:[2,4],sddcnetworkaddressgroup:2,sddcnetworkdhcpconfig:2,sddcnetworkdhcpippool:2,sddcpublicip:[2,3,4],sddcresourceconfig:2,sddcs_client:[0,1,2,13],sddctemplat:[2,3],sdk:12,search:13,second:2,second_party_partn:2,secondari:2,secondary_address:2,secondary_dn:2,secondaryaddress:2,secreci:2,secur:2,secure_traff:2,security_group_id:2,securitygroup:2,see:[2,12],select:2,send:[2,12],sensit:7,sent:2,separ:2,sequence_number_over_flow_error:2,serv:[2,4],server:[2,7,12],server_fail:2,server_statu:2,servic:[2,12],service_ag:2,service_aid:2,service_br:2,service_brf:2,service_certif:2,service_dn:2,service_dock:2,service_error:2,service_fm_log_collector:2,service_fm_manag:2,service_fm_metrics_collector:2,service_forward_proxi:2,service_glcm:2,service_info:2,service_jr:2,service_logz_log_collector:2,service_ntp:2,service_o:2,service_reverse_proxi:2,service_rt:2,service_s3_adapt:2,serviceerror:2,servicegroup:2,session:2,sessions_cr:2,set:[2,3,4,7],setup:3,shadow:2,share:2,should:[2,3],show:[7,11],show_sensitive_data:[6,7],sinc:[7,11,12],singl:[2,3],singleaz:2,site:[2,5],site_id:2,site_stat:2,site_statist:2,site_statu:2,size:[2,4],skyscrap:2,sla:2,sla_custom:2,sla_internal_custom:2,sla_second_party_partn:2,sla_third_party_partn:2,sla_vmc_intern:2,snat:2,snat_match_destination_address:2,snat_match_destination_port:2,snat_rule_id:2,softwar:2,some:2,sort:4,sort_bi:[2,4],sort_order_ascend:[2,4],sourc:[2,12],source_info:12,source_port:2,source_scop:2,source_sddc_id:2,source_svc:12,sourcetyp:12,space:2,spec:[3,12],special:[2,12],specif:[2,7,8,10],specifi:[2,3,4,5,7,8,12],ssl:2,sslvpn:2,sslvpn_bytes_in:2,sslvpn_bytes_out:2,sslvpndashboardstat:2,sso:2,sso_domain:2,stamp:2,standard:2,standbi:2,start:[2,4,7,11],start_dat:2,start_index:[2,4],start_tim:[2,7,11],startindex:4,state:[2,3,4],state_appli:2,state_avail:2,state_connect:2,state_delet:2,state_disconnect:2,state_fail:2,state_inus:2,state_partially_connect:2,state_unknown:2,statist:[0,1,2,3,4,5,7,9],statistics_cli:[0,1,2,3,4,5],statu:[2,5],status_activ:2,status_cancel:2,status_cr:2,status_expir:2,status_fail:2,status_finish:2,status_from_vse_updated_on:2,status_pending_provis:2,status_start:2,std:[1,2,3,4,5,6,7,8,9,10,11],still:[2,3],stop:2,store:2,str:[1,2,3,4,5,6,7,8,9,10,11,12],string:[2,3,12],struct:[2,5],stub:[1,2,3,4,5,6,7,8,9,10,11],stub_config:[1,2,3,4,5,6,7,8,9,10,11],stubconfigur:[1,2,3,4,5,6,7,8,9,10,11],stubfactori:[1,2,3,4,5,6,7,8,9,10,11],stubfactorybas:[1,2,3,4,5,6,7,8,9,10,11],sub:2,sub_interfac:2,sub_statu:2,subinterfac:2,submodul:[0,13],subnet:[2,3],subnet_availability_zon:2,subnet_cidr:2,subnet_cidr_block:2,subnet_id:2,subnet_list_result:3,subnet_mask:2,subnet_prefix_length:2,subpackag:13,subscript:2,subscription_request:2,subscriptiondetail:2,subscriptionid:2,subscriptionrequest:2,subsequ:2,substr:2,success:2,summari:[2,5],support:[2,12],syn:2,sync:2,system:[2,12],system_statu:2,tabl:2,tag:2,take:[2,3],target:[2,3],task:[2,3,4],task_progress_phas:2,task_typ:2,task_vers:2,taskprogressphas:2,tcp:2,tcp_allow_out_of_window_packet:2,tcp_pick_ongoing_connect:2,tcp_send_reset_for_closed_vse_port:2,tcp_timeout_clos:2,tcp_timeout_establish:2,tcp_timeout_open:2,templat:[2,3,5],template_id:2,template_nam:2,templateid:5,tenant:2,tenant_id:2,tenantid:4,tend:2,term:2,termin:2,termofferinst:2,text:5,than:2,them:2,thi:[2,3,7,11,12],third_party_partn:2,those:2,through:2,time:[2,7,11],time_stamp:2,timeout:2,timestamp:2,total:2,total_count:2,track:2,traffic:2,traffic_stat:2,trafficshapingpolici:2,transact:2,transfer:2,translat:2,translated_address:2,translated_port:2,transmit:2,transportzon:2,triple_d:2,trunk:2,tsfp:2,tstp:2,tunnel:2,tunnel_id:2,tunnel_st:2,tunnel_stat:2,tunnel_statu:2,tunnel_status:2,tunnel_status_connect:2,tunnel_status_disconnect:2,tunnel_status_unknown:2,turn:2,two:[2,12],tx_bytes_from_local_subnet:2,tx_bytes_from_sit:2,type:[1,2,3,4,5,6,7,8,9,11],type_cento:2,type_pop:2,udlr:2,udp:2,udp_timeout:2,uid:2,unauthent:[1,2,3,4],unauthor:[1,2,3,4,5,6,7,8,9,10,11],undeploi:2,under:3,uniqu:2,unit:2,unit_pric:2,univers:2,universal_revis:2,unknown:[2,12],unlink:2,until:[2,7,11],updat:[2,3,4,6,7,8,10],updated_by_user_id:2,updated_by_user_nam:2,upgrad:[2,3],uplink:[2,11],upon:2,upper:2,uri:2,url:2,use:[2,3,4,12],used:[1,2,3,4,5,6,7,8,9,10,11],user:[1,2,3],user_id:2,user_nam:2,usernam:2,using:[2,4],usual:2,utc:2,uuid:2,valid:[2,3,4,5],valu:[2,3,5,7,12],vapi:[1,2,3,4,5,6,7,8,9,10,11,12],vapiinterfac:[1,2,3,4,5,6,7,8,9,10,11],vapistruct:[2,5],vapp:2,variabl:12,vc_instance_id:2,vc_management_ip:2,vc_public_ip:2,vc_url:2,vcenter:[2,3],version:[2,12],vgw:2,vgw_route_table_id:2,via:3,view:2,view_id:2,view_match:2,view_permiss:2,vif_id:2,virtual:2,virtualmachin:2,virtualwir:2,vlan:2,vlan_id:2,vm_build_info:2,vm_moid_of_active_vs:2,vm_name_of_active_vs:2,vm_security_group_id:2,vm_version:2,vmc:[0,1,13],vmc_client:[0,13],vmc_intern:2,vmc_internal_vers:2,vmc_version:2,vmcinternalvers:2,vmcversion:2,vmware:[0,12],vnic0:2,vnic0_in_byt:2,vnic0_in_pkt:2,vnic0_out_byt:2,vnic0_out_pkt:2,vnic1:2,vnic1_in_byt:2,vnic1_in_pkt:2,vnic1_out_byt:2,vnic1_out_pkt:2,vnic2:2,vnic2_in_byt:2,vnic2_in_pkt:2,vnic2_out_byt:2,vnic2_out_pkt:2,vnic3:2,vnic3_in_byt:2,vnic3_in_pkt:2,vnic3_out_byt:2,vnic3_out_pkt:2,vnic4:2,vnic4_in_byt:2,vnic4_in_pkt:2,vnic4_out_byt:2,vnic4_out_pkt:2,vnic5:2,vnic5_in_byt:2,vnic5_in_pkt:2,vnic5_out_byt:2,vnic5_out_pkt:2,vnic6:2,vnic6_in_byt:2,vnic6_in_pkt:2,vnic6_out_byt:2,vnic6_out_pkt:2,vnic7:2,vnic7_in_byt:2,vnic7_in_pkt:2,vnic7_out_byt:2,vnic7_out_pkt:2,vnic8:2,vnic8_in_byt:2,vnic8_in_pkt:2,vnic8_out_byt:2,vnic8_out_pkt:2,vnic9:2,vnic9_in_byt:2,vnic9_in_pkt:2,vnic9_out_byt:2,vnic9_out_pkt:2,vnic:[2,5],vnic_:2,vnic_group_id:2,vnic_group_ids_extern:2,vnic_group_ids_intern:2,vnic_group_ids_vnic_index_0:2,vnic_group_ids_vnic_index_1:2,vnic_group_ids_vnic_index_2:2,vnic_group_ids_vnic_index_3:2,vnic_group_ids_vnic_index_4:2,vnic_group_ids_vnic_index_5:2,vnic_group_ids_vnic_index_6:2,vnic_group_ids_vnic_index_7:2,vnic_group_ids_vnic_index_8:2,vnic_group_ids_vnic_index_9:2,vnic_group_ids_vs:2,vnicindex:2,vpc:2,vpc_cidr:2,vpc_cidr_block:2,vpc_id:2,vpc_info:2,vpc_info_peered_ag:2,vpc_map:2,vpc_name:2,vpcinfo:2,vpn:[2,5,6,7,9],vpnchannelstatu:2,vpntunnelstatu:2,vpntunneltrafficstat:2,vse:2,vsm_uuid:2,vsphere:2,vxlan:2,vxlan_subnet:2,want:[2,12],warn:2,were:2,west:2,what:[2,3],when:[2,3,12],where:2,whether:2,which:[2,3,12],white:2,who:3,win:2,window:2,wire:2,wit:2,within:2,without:2,witness_availability_zon:2,work:[2,3],workflow:2,workload:[2,3],would:[2,12],writer:2,xml:5,yellow:2,yet:2,you:[2,3,12],your:[2,4,12],yyyi:2,zone:[2,3]},titles:["com package","com.vmware package","com.vmware.vmc package","com.vmware.vmc.orgs package","com.vmware.vmc.orgs.sddcs package","com.vmware.vmc.orgs.sddcs.networks package","com.vmware.vmc.orgs.sddcs.networks.cgws package","com.vmware.vmc.orgs.sddcs.networks.edges package","com.vmware.vmc.orgs.sddcs.networks.edges.firewall package","com.vmware.vmc.orgs.sddcs.networks.edges.l2vpn package","com.vmware.vmc.orgs.sddcs.networks.edges.nat package","com.vmware.vmc.orgs.sddcs.networks.edges.statistics package","Interface definition language to python mapping for enumerated types","Welcome to VMware Cloud on AWS Console API\u2019s documentation!"],titleterms:{AWS:13,account_link_cli:3,api:13,cgw:6,cloud:13,code:12,com:[0,1,2,3,4,5,6,7,8,9,10,11],config_cli:[8,9,10],consol:13,dashboard_cli:11,definit:12,dhcp_client:7,dns_client:[4,7],document:[12,13],edg:[7,8,9,10,11],edges_cli:5,enumer:12,exampl:12,firewal:8,firewall_cli:7,indic:13,interfac:12,interfaces_cli:11,ipsec_cli:7,l2vpn:9,l2vpn_client:6,languag:12,map:12,mgw_client:4,model_cli:2,modul:[1,2,3,4,5,6,7,8,9,10,11],nat:10,nat_client:7,network:[5,6,7,8,9,10,11],networks_cli:4,org:[3,4,5,6,7,8,9,10,11],orgs_client:2,packag:[0,1,2,3,4,5,6,7,8,9,10,11],python:12,sddc:[4,5,6,7,8,9,10,11],sddcs_client:3,statist:11,statistics_cli:7,submodul:[1,2,3,4,5,6,7,8,9,10,11],subpackag:[0,1,2,3,4,5,7],tabl:13,type:12,vmc:[2,3,4,5,6,7,8,9,10,11],vmc_client:1,vmware:[1,2,3,4,5,6,7,8,9,10,11,13],welcom:13}}) \ No newline at end of file diff --git a/vsphere/6.0/_modules/com/vmware/cis/tagging_client.html b/vsphere/6.0/_modules/com/vmware/cis/tagging_client.html new file mode 100644 index 00000000..fcb36435 --- /dev/null +++ b/vsphere/6.0/_modules/com/vmware/cis/tagging_client.html @@ -0,0 +1,1742 @@ + + + + + + + + + + com.vmware.cis.tagging_client — vCloud Suite SDK for Python 6.0.0 documentation + + + + + + + + + + + + + + +
+
+
+
+ +

Source code for com.vmware.cis.tagging_client

+#---------------------------------------------------------------------------
+# Copyright 2015 VMware, Inc.  All rights reserved.
+
+# AUTO GENERATED FILE -- DO NOT MODIFY!
+#
+# vAPI stub file for package com.vmware.cis.tagging.
+#---------------------------------------------------------------------------
+
+"""
+Copyright 2013-2014 VMware, Inc. All rights reserved. -- VMware Confidential
+Copyright 2013-2014 VMware, Inc. All rights reserved. -- VMware Confidential
+Copyright 2013-2014 VMware, Inc. All rights reserved. -- VMware Confidential
+Copyright 2013-2014 VMware, Inc. All rights reserved. -- VMware Confidential
+Copyright 2013-2014 VMware, Inc. All rights reserved. -- VMware Confidential
+The ``com.vmware.cis.tagging_client`` component provides methods and classes to
+attach metadata, by means of tags, to vSphere objects to make these objects
+more sortable and searchable. You can use it to create, manage, and enumerate
+tags and their categories (the group a tag belongs to). You can also query the
+attached tags and attached objects.
+
+"""
+
+__author__ = 'VMware, Inc.'
+__docformat__ = 'restructuredtext en'
+
+import sys
+
+from vmware.vapi.bindings import type
+from vmware.vapi.bindings.converter import TypeConverter
+from vmware.vapi.bindings.enum import Enum
+from vmware.vapi.bindings.error import VapiError
+from vmware.vapi.bindings.struct import VapiStruct
+from vmware.vapi.bindings.stub import VapiInterface, ApiInterfaceStub
+from vmware.vapi.bindings.common import raise_core_exception
+from vmware.vapi.data.validator import UnionValidator, HasFieldsOfValidator
+from vmware.vapi.exception import CoreException
+import com.vmware.vapi.std.errors_client
+import com.vmware.vapi.std_client
+
+
+
[docs]class CategoryModel(VapiStruct): + """ + The ``CategoryModel`` class defines a category that is used to group one or + more tags. + + .. tip:: + The arguments are used to initialize data attributes with the same + names. + """ + + + + def __init__(self, + id=None, + name=None, + description=None, + cardinality=None, + associable_types=None, + used_by=None, + ): + """ + :type id: :class:`str` + :param id: The unique identifier of the category. + When clients pass a value of this class as a parameter, the + attribute must be an identifier for the resource type: + ``com.vmware.cis.tagging.Category``. When methods return a value of + this class as a return value, the attribute will be an identifier + for the resource type: ``com.vmware.cis.tagging.Category``. + :type name: :class:`str` + :param name: The display name of the category. + :type description: :class:`str` + :param description: The description of the category. + :type cardinality: :class:`CategoryModel.Cardinality` + :param cardinality: The associated cardinality (SINGLE, MULTIPLE) of the category. + :type associable_types: :class:`set` of :class:`str` + :param associable_types: The types of objects that the tags in this category can be attached + to. If the :class:`set` is empty, then tags can be attached to all + types of objects. This field works only for objects that reside in + Inventory Service (IS). For non IS objects, this check is not + performed today and hence a tag can be attached to any non IS + object. + :type used_by: :class:`set` of :class:`str` + :param used_by: The :class:`set` of users that can use this category. To add users + to this, you need to have the edit privilege on the category. + Similarly, to unsubscribe from this category, you need the edit + privilege on the category. You should not modify other users + subscription from this :class:`set`. + """ + self.id = id + self.name = name + self.description = description + self.cardinality = cardinality + self.associable_types = associable_types + self.used_by = used_by + VapiStruct.__init__(self) + +
[docs] class Cardinality(Enum): + """ + The ``CategoryModel.Cardinality`` class defines the number of tags in a + category that can be assigned to an object. + + .. note:: + This class represents an enumerated type in the interface language + definition. The class contains class attributes which represent the + values in the current version of the enumerated type. Newer versions of + the enumerated type may contain new values. To use new values of the + enumerated type in communication with a server that supports the newer + version of the API, you instantiate this class. See :ref:`enumerated + type description page <enumeration_description>`. + """ + SINGLE = None + """ + An object can only be assigned one of the tags in this category. For + example, if a category is "Operating System", then different tags of this + category would be "Windows", "Linux", and so on. In this case a VM object + can be assigned only one of these tags and hence the cardinality of the + associated category here is single. + + """ + MULTIPLE = None + """ + An object can be assigned several of the tags in this category. For + example, if a category is "Server", then different tags of this category + would be "AppServer", "DatabaseServer" and so on. In this case a VM object + can be assigned more than one of the above tags and hence the cardinality + of the associated category here is multiple. + + """ + + def __init__(self, string): + """ + :type string: :class:`str` + :param string: String value for the :class:`Cardinality` instance. + """ + Enum.__init__(string) +
+ Cardinality.SINGLE = Cardinality('SINGLE') + Cardinality.MULTIPLE = Cardinality('MULTIPLE') + Cardinality._set_binding_type(type.EnumType( + 'com.vmware.cis.tagging.category_model.cardinality', + Cardinality))
+CategoryModel._set_binding_type(type.StructType( + 'com.vmware.cis.tagging.category_model', { + 'id': type.IdType(resource_types='com.vmware.cis.tagging.Category'), + 'name': type.StringType(), + 'description': type.StringType(), + 'cardinality': type.ReferenceType(sys.modules[__name__], 'CategoryModel.Cardinality'), + 'associable_types': type.SetType(type.StringType()), + 'used_by': type.SetType(type.StringType()), + }, + CategoryModel, + True, + ["id"])) + + + +
[docs]class TagModel(VapiStruct): + """ + The ``TagModel`` class defines a tag that can be attached to vSphere + objects. + + .. tip:: + The arguments are used to initialize data attributes with the same + names. + """ + + + + def __init__(self, + id=None, + category_id=None, + name=None, + description=None, + used_by=None, + ): + """ + :type id: :class:`str` + :param id: The unique identifier of the tag. + When clients pass a value of this class as a parameter, the + attribute must be an identifier for the resource type: + ``com.vmware.cis.tagging.Tag``. When methods return a value of this + class as a return value, the attribute will be an identifier for + the resource type: ``com.vmware.cis.tagging.Tag``. + :type category_id: :class:`str` + :param category_id: The identifier of the parent category in which this tag will be + created. + When clients pass a value of this class as a parameter, the + attribute must be an identifier for the resource type: + ``com.vmware.cis.tagging.Category``. When methods return a value of + this class as a return value, the attribute will be an identifier + for the resource type: ``com.vmware.cis.tagging.Category``. + :type name: :class:`str` + :param name: The display name of the tag. + :type description: :class:`str` + :param description: The description of the tag. + :type used_by: :class:`set` of :class:`str` + :param used_by: The :class:`set` of users that can use this tag. To add users to + this, you need to have the edit privilege on the tag. Similarly, to + unsubscribe from this tag, you need the edit privilege on the tag. + You should not modify other users subscription from this + :class:`set`. + """ + self.id = id + self.category_id = category_id + self.name = name + self.description = description + self.used_by = used_by + VapiStruct.__init__(self) +
+TagModel._set_binding_type(type.StructType( + 'com.vmware.cis.tagging.tag_model', { + 'id': type.IdType(resource_types='com.vmware.cis.tagging.Tag'), + 'category_id': type.IdType(resource_types='com.vmware.cis.tagging.Category'), + 'name': type.StringType(), + 'description': type.StringType(), + 'used_by': type.SetType(type.StringType()), + }, + TagModel, + True, + ["id"])) + + + +
[docs]class Category(VapiInterface): + """ + The ``Category`` class provides methods to create, read, update, delete, + and enumerate categories. + """ + + + def __init__(self, config): + """ + :type config: :class:`vmware.vapi.bindings.stub.StubConfiguration` + :param config: Configuration to be used for creating the stub. + """ + VapiInterface.__init__(self, config, _CategoryStub) + +
[docs] class CreateSpec(VapiStruct): + """ + The ``Category.CreateSpec`` class is used to create a category. + + Use the :func:`Category.create` method to create a category defined by the + create specification. + + .. tip:: + The arguments are used to initialize data attributes with the same + names. + """ + + + + def __init__(self, + name=None, + description=None, + cardinality=None, + associable_types=None, + ): + """ + :type name: :class:`str` + :param name: The display name of the category. + :type description: :class:`str` + :param description: The description of the category. + :type cardinality: :class:`CategoryModel.Cardinality` + :param cardinality: The associated cardinality (SINGLE, MULTIPLE) of the category. + :type associable_types: :class:`set` of :class:`str` + :param associable_types: Object types to which this category's tags can be attached. + """ + self.name = name + self.description = description + self.cardinality = cardinality + self.associable_types = associable_types + VapiStruct.__init__(self) +
+ CreateSpec._set_binding_type(type.StructType( + 'com.vmware.cis.tagging.category.create_spec', { + 'name': type.StringType(), + 'description': type.StringType(), + 'cardinality': type.ReferenceType(sys.modules[__name__], 'CategoryModel.Cardinality'), + 'associable_types': type.SetType(type.StringType()), + }, + CreateSpec, + False, + None)) + +
[docs] class UpdateSpec(VapiStruct): + """ + The ``Category.UpdateSpec`` class describes the updates to be made to an + existing category. + + Use the :func:`Category.update` method to modify a category. When you call + the method, specify the category identifier. You obtain the category + identifier when you call the :func:`Category.create` method. You can also + retrieve an identifier by using the :func:`Category.list` method. + + .. tip:: + The arguments are used to initialize data attributes with the same + names. + """ + + + + def __init__(self, + name=None, + description=None, + cardinality=None, + associable_types=None, + ): + """ + :type name: :class:`str` or ``None`` + :param name: The display name of the category. + If None the name will not be modified. + :type description: :class:`str` or ``None`` + :param description: The description of the category. + If None the description will not be modified. + :type cardinality: :class:`CategoryModel.Cardinality` or ``None`` + :param cardinality: The associated cardinality (SINGLE, MULTIPLE) of the category. + If None the cardinality will not be modified. + :type associable_types: :class:`set` of :class:`str` or ``None`` + :param associable_types: Object types to which this category's tags can be attached. + + The :class:`set` of associable types cannot be updated + incrementally. For example, if + :attr:`Category.UpdateSpec.associable_types` originally contains + {A,B,C} and you want to add D, then you need to pass {A,B,C,D} in + your update specification. You also cannot remove any item from + this :class:`set`. For example, if you have {A,B,C}, then you + cannot remove say {A} from it. Similarly, if you start with an + empty :class:`set`, then that implies that you can tag any object + and hence you cannot later pass say {A}, because that would be + restricting the type of objects you want to tag. Thus, associable + types can only grow and not shrink. + If None the associable types will not be modified. + """ + self.name = name + self.description = description + self.cardinality = cardinality + self.associable_types = associable_types + VapiStruct.__init__(self) +
+ UpdateSpec._set_binding_type(type.StructType( + 'com.vmware.cis.tagging.category.update_spec', { + 'name': type.OptionalType(type.StringType()), + 'description': type.OptionalType(type.StringType()), + 'cardinality': type.OptionalType(type.ReferenceType(sys.modules[__name__], 'CategoryModel.Cardinality')), + 'associable_types': type.OptionalType(type.SetType(type.StringType())), + }, + UpdateSpec, + False, + None)) + + +
[docs] def create(self, + create_spec, + ): + """ + Creates a category. To invoke this method, you need the create category + privilege. + + :type create_spec: :class:`Category.CreateSpec` + :param create_spec: Specification for the new category to be created. + :rtype: :class:`str` + :return: The identifier of the created category. + The return value will be an identifier for the resource type: + ``com.vmware.cis.tagging.Category``. + :raise: :class:`com.vmware.vapi.std.errors_client.AlreadyExists` + if the :attr:`Category.CreateSpec.name` provided in the + ``create_spec`` is the name of an already existing category. + :raise: :class:`com.vmware.vapi.std.errors_client.InvalidArgument` + if any of the information in the ``create_spec`` is invalid. + :raise: :class:`com.vmware.vapi.std.errors_client.Unauthorized` + if you do not have the privilege to create a category. + """ + return self._invoke('create', + { + 'create_spec': create_spec, + }) +
+
[docs] def get(self, + category_id, + ): + """ + Fetches the category information for the given category identifier. In + order to view the category information, you need the read privilege on + the category. + + :type category_id: :class:`str` + :param category_id: The identifier of the input category. + The parameter must be an identifier for the resource type: + ``com.vmware.cis.tagging.Category``. + :rtype: :class:`CategoryModel` + :return: The :class:`CategoryModel` that corresponds to ``category_id``. + :raise: :class:`com.vmware.vapi.std.errors_client.NotFound` + if the category for the given ``category_id`` does not exist in the + system. + :raise: :class:`com.vmware.vapi.std.errors_client.Unauthorized` + if you do not have the privilege to read the category. + """ + return self._invoke('get', + { + 'category_id': category_id, + }) +
+
[docs] def update(self, + category_id, + update_spec, + ): + """ + Updates an existing category. To invoke this method, you need the edit + privilege on the category. + + :type category_id: :class:`str` + :param category_id: The identifier of the category to be updated. + The parameter must be an identifier for the resource type: + ``com.vmware.cis.tagging.Category``. + :type update_spec: :class:`Category.UpdateSpec` + :param update_spec: Specification to update the category. + :raise: :class:`com.vmware.vapi.std.errors_client.AlreadyExists` + if the :attr:`Category.UpdateSpec.name` provided in the + ``update_spec`` is the name of an already existing category. + :raise: :class:`com.vmware.vapi.std.errors_client.InvalidArgument` + if any of the information in the ``update_spec`` is invalid. + :raise: :class:`com.vmware.vapi.std.errors_client.NotFound` + if the category for the given ``category_id`` does not exist in the + system. + :raise: :class:`com.vmware.vapi.std.errors_client.Unauthorized` + if you do not have the privilege to update the category. + """ + return self._invoke('update', + { + 'category_id': category_id, + 'update_spec': update_spec, + }) +
+
[docs] def delete(self, + category_id, + ): + """ + Deletes an existing category. To invoke this method, you need the + delete privilege on the category. + + :type category_id: :class:`str` + :param category_id: The identifier of category to be deleted. + The parameter must be an identifier for the resource type: + ``com.vmware.cis.tagging.Category``. + :raise: :class:`com.vmware.vapi.std.errors_client.NotFound` + if the category for the given ``category_id`` does not exist in the + system. + :raise: :class:`com.vmware.vapi.std.errors_client.Unauthorized` + if you do not have the privilege to delete the category. + """ + return self._invoke('delete', + { + 'category_id': category_id, + }) +
+
[docs] def list(self): + """ + Enumerates the categories in the system. To invoke this method, you + need the read privilege on the individual categories. The :class:`list` + will only contain those categories for which you have read privileges. + + + :rtype: :class:`list` of :class:`str` + :return: The :class:`list` of resource identifiers for the categories in the + system. + The return value will contain identifiers for the resource type: + ``com.vmware.cis.tagging.Category``. + """ + return self._invoke('list', None) +
+
[docs] def list_used_categories(self, + used_by_entity, + ): + """ + Enumerates all categories for which the ``used_by_entity`` is part of + the :attr:`CategoryModel.used_by` subscribers :class:`set`. To invoke + this method, you need the read privilege on the individual categories. + + :type used_by_entity: :class:`str` + :param used_by_entity: The field on which the results will be filtered. + :rtype: :class:`list` of :class:`str` + :return: The :class:`list` of resource identifiers for the categories in the + system that are used by ``used_by_entity``. + The return value will contain identifiers for the resource type: + ``com.vmware.cis.tagging.Category``. + """ + return self._invoke('list_used_categories', + { + 'used_by_entity': used_by_entity, + }) +
+
[docs] def add_to_used_by(self, + category_id, + used_by_entity, + ): + """ + Adds the ``used_by_entity`` to the :attr:`CategoryModel.used_by` + subscribers :class:`set` for the specified category. If the + ``used_by_entity`` is already in the :class:`set`, then this becomes an + idempotent no-op. To invoke this method, you need the modify + :attr:`CategoryModel.used_by` privilege on the category. + + :type category_id: :class:`str` + :param category_id: The identifier of the input category. + The parameter must be an identifier for the resource type: + ``com.vmware.cis.tagging.Category``. + :type used_by_entity: :class:`str` + :param used_by_entity: The name of the user to be added to the + :attr:`CategoryModel.used_by` :class:`set`. + :raise: :class:`com.vmware.vapi.std.errors_client.NotFound` + if the category for the given ``category_id`` does not exist in the + system. + :raise: :class:`com.vmware.vapi.std.errors_client.Unauthorized` + if you do not have the privilege to add an entity to the + :attr:`CategoryModel.used_by` field. + """ + return self._invoke('add_to_used_by', + { + 'category_id': category_id, + 'used_by_entity': used_by_entity, + }) +
+
[docs] def remove_from_used_by(self, + category_id, + used_by_entity, + ): + """ + Removes the ``used_by_entity`` from the :attr:`CategoryModel.used_by` + subscribers :class:`set`. If the ``used_by_entity`` is not using this + category, then this becomes a no-op. To invoke this method, you need + the modify :attr:`CategoryModel.used_by` privilege on the category. + + :type category_id: :class:`str` + :param category_id: The identifier of the input category. + The parameter must be an identifier for the resource type: + ``com.vmware.cis.tagging.Category``. + :type used_by_entity: :class:`str` + :param used_by_entity: The name of the user to be removed from the + :attr:`CategoryModel.used_by` :class:`set`. + :raise: :class:`com.vmware.vapi.std.errors_client.NotFound` + if the category for the given ``category_id`` does not exist in the + system. + :raise: :class:`com.vmware.vapi.std.errors_client.Unauthorized` + if you do not have the privilege to remove an entity from the + :attr:`CategoryModel.used_by` field. + """ + return self._invoke('remove_from_used_by', + { + 'category_id': category_id, + 'used_by_entity': used_by_entity, + }) +
+
[docs] def revoke_propagating_permissions(self, + category_id, + ): + """ + Revokes all propagating permissions on the given category. You should + then attach a direct permission with tagging privileges on the given + category. To invoke this method, you need category related privileges + (direct or propagating) on the concerned category. + + :type category_id: :class:`str` + :param category_id: The identifier of the input category. + The parameter must be an identifier for the resource type: + ``com.vmware.cis.tagging.Category``. + :raise: :class:`com.vmware.vapi.std.errors_client.NotFound` + if the category for the given ``category_id`` does not exist in the + system. + :raise: :class:`com.vmware.vapi.std.errors_client.Unauthorized` + if you do not have the privilege to revoke propagating permissions + on the category. + """ + return self._invoke('revoke_propagating_permissions', + { + 'category_id': category_id, + }) +
+
[docs]class Tag(VapiInterface): + """ + The ``Tag`` class provides methods to create, read, update, delete, and + enumerate tags. + """ + + + def __init__(self, config): + """ + :type config: :class:`vmware.vapi.bindings.stub.StubConfiguration` + :param config: Configuration to be used for creating the stub. + """ + VapiInterface.__init__(self, config, _TagStub) + +
[docs] class CreateSpec(VapiStruct): + """ + The ``Tag.CreateSpec`` class describes a tag. + + Use the :func:`Tag.create` method to create a tag defined by the create + specification. + + .. tip:: + The arguments are used to initialize data attributes with the same + names. + """ + + + + def __init__(self, + name=None, + description=None, + category_id=None, + ): + """ + :type name: :class:`str` + :param name: The display name of the tag. The name must be unique within its + category. + :type description: :class:`str` + :param description: The description of the tag. + :type category_id: :class:`str` + :param category_id: The unique identifier of the parent category in which this tag will + be created. + When clients pass a value of this class as a parameter, the + attribute must be an identifier for the resource type: + ``com.vmware.cis.tagging.Category``. When methods return a value of + this class as a return value, the attribute will be an identifier + for the resource type: ``com.vmware.cis.tagging.Category``. + """ + self.name = name + self.description = description + self.category_id = category_id + VapiStruct.__init__(self) +
+ CreateSpec._set_binding_type(type.StructType( + 'com.vmware.cis.tagging.tag.create_spec', { + 'name': type.StringType(), + 'description': type.StringType(), + 'category_id': type.IdType(resource_types='com.vmware.cis.tagging.Category'), + }, + CreateSpec, + False, + None)) + +
[docs] class UpdateSpec(VapiStruct): + """ + The ``Tag.UpdateSpec`` class describes the updates to be made to an + existing tag. + + Use the :func:`Tag.update` method to modify a tag. When you call the + method, you specify the tag identifier. You obtain the tag identifier when + you call the :func:`Tag.create` method. You can also retrieve an identifier + by using the :func:`Tag.list` method. + + .. tip:: + The arguments are used to initialize data attributes with the same + names. + """ + + + + def __init__(self, + name=None, + description=None, + ): + """ + :type name: :class:`str` or ``None`` + :param name: The display name of the tag. + If None the name will not be modified. + :type description: :class:`str` or ``None`` + :param description: The description of the tag. + If None the description will not be modified. + """ + self.name = name + self.description = description + VapiStruct.__init__(self) +
+ UpdateSpec._set_binding_type(type.StructType( + 'com.vmware.cis.tagging.tag.update_spec', { + 'name': type.OptionalType(type.StringType()), + 'description': type.OptionalType(type.StringType()), + }, + UpdateSpec, + False, + None)) + + +
[docs] def create(self, + create_spec, + ): + """ + Creates a tag. To invoke this method, you need the create tag privilege + on the input category. + + :type create_spec: :class:`Tag.CreateSpec` + :param create_spec: Specification for the new tag to be created. + :rtype: :class:`str` + :return: The identifier of the created tag. + The return value will be an identifier for the resource type: + ``com.vmware.cis.tagging.Tag``. + :raise: :class:`com.vmware.vapi.std.errors_client.AlreadyExists` + if the :attr:`Tag.CreateSpec.name` provided in the ``create_spec`` + is the name of an already existing tag in the input category. + :raise: :class:`com.vmware.vapi.std.errors_client.InvalidArgument` + if any of the input information in the ``create_spec`` is invalid. + :raise: :class:`com.vmware.vapi.std.errors_client.NotFound` + if the category for in the given ``create_spec`` does not exist in + the system. + :raise: :class:`com.vmware.vapi.std.errors_client.Unauthorized` + if you do not have the privilege to create tag. + """ + return self._invoke('create', + { + 'create_spec': create_spec, + }) +
+
[docs] def get(self, + tag_id, + ): + """ + Fetches the tag information for the given tag identifier. To invoke + this method, you need the read privilege on the tag in order to view + the tag info. + + :type tag_id: :class:`str` + :param tag_id: The identifier of the input tag. + The parameter must be an identifier for the resource type: + ``com.vmware.cis.tagging.Tag``. + :rtype: :class:`TagModel` + :return: The :class:`TagModel` that corresponds to ``tag_id``. + :raise: :class:`com.vmware.vapi.std.errors_client.NotFound` + if the tag for the given ``tag_id`` does not exist in the system. + :raise: :class:`com.vmware.vapi.std.errors_client.Unauthorized` + if the user does not have the privilege to read the tag. + """ + return self._invoke('get', + { + 'tag_id': tag_id, + }) +
+
[docs] def update(self, + tag_id, + update_spec, + ): + """ + Updates an existing tag. To invoke this method, you need the edit + privilege on the tag. + + :type tag_id: :class:`str` + :param tag_id: The identifier of the input tag. + The parameter must be an identifier for the resource type: + ``com.vmware.cis.tagging.Tag``. + :type update_spec: :class:`Tag.UpdateSpec` + :param update_spec: Specification to update the tag. + :raise: :class:`com.vmware.vapi.std.errors_client.AlreadyExists` + if the :attr:`Tag.UpdateSpec.name` provided in the ``update_spec`` + is the name of an already existing tag in the same category. + :raise: :class:`com.vmware.vapi.std.errors_client.InvalidArgument` + if any of the input information in the ``update_spec`` is invalid. + :raise: :class:`com.vmware.vapi.std.errors_client.NotFound` + if the tag for the given ``tag_id`` does not exist in the system. + :raise: :class:`com.vmware.vapi.std.errors_client.Unauthorized` + if you do not have the privilege to update the tag. + """ + return self._invoke('update', + { + 'tag_id': tag_id, + 'update_spec': update_spec, + }) +
+
[docs] def delete(self, + tag_id, + ): + """ + Deletes an existing tag. To invoke this method, you need the delete + privilege on the tag. + + :type tag_id: :class:`str` + :param tag_id: The identifier of the input tag. + The parameter must be an identifier for the resource type: + ``com.vmware.cis.tagging.Tag``. + :raise: :class:`com.vmware.vapi.std.errors_client.NotFound` + if the tag for the given ``tag_id`` does not exist in the system. + :raise: :class:`com.vmware.vapi.std.errors_client.Unauthorized` + if you do not have the privilege to delete the tag. + """ + return self._invoke('delete', + { + 'tag_id': tag_id, + }) +
+
[docs] def list(self): + """ + Enumerates the tags in the system. To invoke this method, you need read + privilege on the individual tags. The :class:`list` will only contain + tags for which you have read privileges. + + + :rtype: :class:`list` of :class:`str` + :return: The :class:`list` of resource identifiers for the tags in the + system. + The return value will contain identifiers for the resource type: + ``com.vmware.cis.tagging.Tag``. + """ + return self._invoke('list', None) +
+
[docs] def list_used_tags(self, + used_by_entity, + ): + """ + Enumerates all tags for which the ``used_by_entity`` is part of the + :attr:`TagModel.used_by` subscribers :class:`set`. To invoke this + method, you need the read privilege on the individual tags. + + :type used_by_entity: :class:`str` + :param used_by_entity: The field on which the results will be filtered. + :rtype: :class:`list` of :class:`str` + :return: The :class:`list` of resource identifiers for the tags in the + system that are used by ``used_by_entity``. + The return value will contain identifiers for the resource type: + ``com.vmware.cis.tagging.Tag``. + """ + return self._invoke('list_used_tags', + { + 'used_by_entity': used_by_entity, + }) +
+
[docs] def list_tags_for_category(self, + category_id, + ): + """ + Enumerates all tags for the given category. To invoke this method, you + need the read privilege on the given category and the individual tags + in that category. + + :type category_id: :class:`str` + :param category_id: The identifier of the input category. + The parameter must be an identifier for the resource type: + ``com.vmware.cis.tagging.Category``. + :rtype: :class:`list` of :class:`str` + :return: The :class:`list` of resource identifiers for the tags in the given + input category. + The return value will contain identifiers for the resource type: + ``com.vmware.cis.tagging.Tag``. + :raise: :class:`com.vmware.vapi.std.errors_client.NotFound` + if the category for the given ``category_id`` does not exist in the + system. + :raise: :class:`com.vmware.vapi.std.errors_client.Unauthorized` + if you do not have the privilege to read the category. + """ + return self._invoke('list_tags_for_category', + { + 'category_id': category_id, + }) +
+
[docs] def add_to_used_by(self, + tag_id, + used_by_entity, + ): + """ + Adds the ``used_by_entity`` to the :attr:`TagModel.used_by` subscribers + :class:`set`. If the ``used_by_entity`` is already in the :class:`set`, + then this becomes a no-op. To invoke this method, you need the modify + :attr:`TagModel.used_by` privilege on the tag. + + :type tag_id: :class:`str` + :param tag_id: The identifier of the input tag. + The parameter must be an identifier for the resource type: + ``com.vmware.cis.tagging.Tag``. + :type used_by_entity: :class:`str` + :param used_by_entity: The name of the user to be added to the :attr:`TagModel.used_by` + :class:`set`. + :raise: :class:`com.vmware.vapi.std.errors_client.NotFound` + if the tag for the given ``tag_id`` does not exist in the system. + :raise: :class:`com.vmware.vapi.std.errors_client.Unauthorized` + if you do not have the privilege to add an entity to the + :attr:`TagModel.used_by` field. + """ + return self._invoke('add_to_used_by', + { + 'tag_id': tag_id, + 'used_by_entity': used_by_entity, + }) +
+
[docs] def remove_from_used_by(self, + tag_id, + used_by_entity, + ): + """ + Removes the ``used_by_entity`` from the :attr:`TagModel.used_by` + subscribers set. If the ``used_by_entity`` is not using this tag, then + this becomes a no-op. To invoke this method, you need modify + :attr:`TagModel.used_by` privilege on the tag. + + :type tag_id: :class:`str` + :param tag_id: The identifier of the input tag. + The parameter must be an identifier for the resource type: + ``com.vmware.cis.tagging.Tag``. + :type used_by_entity: :class:`str` + :param used_by_entity: The name of the user to be removed from the + :attr:`TagModel.used_by` :class:`set`. + :raise: :class:`com.vmware.vapi.std.errors_client.NotFound` + if the tag for the given ``tag_id`` does not exist in the system. + :raise: :class:`com.vmware.vapi.std.errors_client.Unauthorized` + if you do not have the privilege to remove an entity from the + :attr:`TagModel.used_by` field. + """ + return self._invoke('remove_from_used_by', + { + 'tag_id': tag_id, + 'used_by_entity': used_by_entity, + }) +
+
[docs] def revoke_propagating_permissions(self, + tag_id, + ): + """ + Revokes all propagating permissions on the given tag. You should then + attach a direct permission with tagging privileges on the given tag. To + invoke this method, you need tag related privileges (direct or + propagating) on the concerned tag. + + :type tag_id: :class:`str` + :param tag_id: The identifier of the input tag. + The parameter must be an identifier for the resource type: + ``com.vmware.cis.tagging.Tag``. + :raise: :class:`com.vmware.vapi.std.errors_client.NotFound` + if the tag for the given ``tag_id`` does not exist in the system. + :raise: :class:`com.vmware.vapi.std.errors_client.Unauthorized` + if you do not have the privilege to revoke propagating permissions + on the tag. + """ + return self._invoke('revoke_propagating_permissions', + { + 'tag_id': tag_id, + }) +
+
[docs]class TagAssociation(VapiInterface): + """ + The ``TagAssociation`` class provides methods to attach, detach, and query + tags. + """ + + + def __init__(self, config): + """ + :type config: :class:`vmware.vapi.bindings.stub.StubConfiguration` + :param config: Configuration to be used for creating the stub. + """ + VapiInterface.__init__(self, config, _TagAssociationStub) + + +
[docs] def attach(self, + tag_id, + object_id, + ): + """ + Attaches the given tag to the input object. To invoke this method, you + need the attach tag privilege on the tag and the read privilege on the + object. + + :type tag_id: :class:`str` + :param tag_id: The identifier of the input tag. + The parameter must be an identifier for the resource type: + ``com.vmware.cis.tagging.Tag``. + :type object_id: :class:`com.vmware.vapi.std_client.DynamicID` + :param object_id: The identifier of the input object. + :raise: :class:`com.vmware.vapi.std.errors_client.NotFound` + if the tag for the given ``tag_id`` does not exist in the system. + :raise: :class:`com.vmware.vapi.std.errors_client.InvalidArgument` + if the input tag is not eligible to be attached to this object or + if the ``object_id`` is not valid. + :raise: :class:`com.vmware.vapi.std.errors_client.Unauthorized` + if you do not have the privilege to attach the tag or do not have + the privilege to read the concerned object. The tag needs to pass + the cardinality and associability test in order to be eligible for + attachment. + """ + return self._invoke('attach', + { + 'tag_id': tag_id, + 'object_id': object_id, + }) +
+
[docs] def detach(self, + tag_id, + object_id, + ): + """ + Detaches the tag from the given object. To invoke this method, you need + the attach tag privilege on the tag and the read privilege on the + object. + + :type tag_id: :class:`str` + :param tag_id: The identifier of the input tag. + The parameter must be an identifier for the resource type: + ``com.vmware.cis.tagging.Tag``. + :type object_id: :class:`com.vmware.vapi.std_client.DynamicID` + :param object_id: The identifier of the input object. + :raise: :class:`com.vmware.vapi.std.errors_client.NotFound` + if the tag for the given ``tag_id`` does not exist in the system. + :raise: :class:`com.vmware.vapi.std.errors_client.Unauthorized` + if you do not have the privilege to detach the tag or do not have + the privilege to read the concerned object. + """ + return self._invoke('detach', + { + 'tag_id': tag_id, + 'object_id': object_id, + }) +
+
[docs] def list_attached_objects(self, + tag_id, + ): + """ + Fetches the :class:`list` of attached objects for the given tag. To + invoke this method, you need the read privilege on the input tag. Only + those objects for which you have read privileges will be returned. + + :type tag_id: :class:`str` + :param tag_id: The identifier of the input tag. + The parameter must be an identifier for the resource type: + ``com.vmware.cis.tagging.Tag``. + :rtype: :class:`list` of :class:`com.vmware.vapi.std_client.DynamicID` + :return: The :class:`list` of attached object identifiers. + :raise: :class:`com.vmware.vapi.std.errors_client.NotFound` + if the tag for the given ``tag_id`` does not exist in the system. + :raise: :class:`com.vmware.vapi.std.errors_client.Unauthorized` + if you do not have the privilege to read the tag. + """ + return self._invoke('list_attached_objects', + { + 'tag_id': tag_id, + }) +
+
[docs] def list_attached_tags(self, + object_id, + ): + """ + Fetches the :class:`list` of tags attached to the given object. To + invoke this method, you need the read privilege on the input object. + The :class:`list` will only contain those tags for which you have read + privileges. + + :type object_id: :class:`com.vmware.vapi.std_client.DynamicID` + :param object_id: The identifier of the input object. + :rtype: :class:`list` of :class:`str` + :return: The :class:`list` of all tag identifiers that correspond to the + tags attached to the given object. + The return value will contain identifiers for the resource type: + ``com.vmware.cis.tagging.Tag``. + :raise: :class:`com.vmware.vapi.std.errors_client.Unauthorized` + if you do not have the privilege to read the object. + """ + return self._invoke('list_attached_tags', + { + 'object_id': object_id, + }) +
+
[docs] def list_attachable_tags(self, + object_id, + ): + """ + Fetches the :class:`list` of attachable tags for the given object, + omitting the tags that have already been attached. Criteria for + attachability is calculated based on tagging cardinality + (:attr:`CategoryModel.cardinality`) and associability + (:attr:`CategoryModel.associable_types`) constructs. To invoke this + method, you need the read privilege on the input object. The + :class:`list` will only contain those tags for which you have read + privileges. + + :type object_id: :class:`com.vmware.vapi.std_client.DynamicID` + :param object_id: The identifier of the input object. + :rtype: :class:`list` of :class:`str` + :return: The :class:`list` of tag identifiers that are eligible to be + attached to the given object. + The return value will contain identifiers for the resource type: + ``com.vmware.cis.tagging.Tag``. + :raise: :class:`com.vmware.vapi.std.errors_client.Unauthorized` + if you do not have the privilege to read the object. + """ + return self._invoke('list_attachable_tags', + { + 'object_id': object_id, + }) +
+class _CategoryStub(ApiInterfaceStub): + def __init__(self, config): + # properties for create operation + create_input_type = type.StructType('operation-input', { + 'create_spec': type.ReferenceType(sys.modules[__name__], 'Category.CreateSpec'), + }) + create_error_dict = { + 'com.vmware.vapi.std.errors.already_exists': + type.ReferenceType(com.vmware.vapi.std.errors_client, 'AlreadyExists'), + 'com.vmware.vapi.std.errors.invalid_argument': + type.ReferenceType(com.vmware.vapi.std.errors_client, 'InvalidArgument'), + 'com.vmware.vapi.std.errors.unauthorized': + type.ReferenceType(com.vmware.vapi.std.errors_client, 'Unauthorized'), + + } + create_input_validator_list = [ + ] + create_output_validator_list = [ + ] + + # properties for get operation + get_input_type = type.StructType('operation-input', { + 'category_id': type.IdType(resource_types='com.vmware.cis.tagging.Category'), + }) + get_error_dict = { + 'com.vmware.vapi.std.errors.not_found': + type.ReferenceType(com.vmware.vapi.std.errors_client, 'NotFound'), + 'com.vmware.vapi.std.errors.unauthorized': + type.ReferenceType(com.vmware.vapi.std.errors_client, 'Unauthorized'), + + } + get_input_validator_list = [ + ] + get_output_validator_list = [ + ] + + # properties for update operation + update_input_type = type.StructType('operation-input', { + 'category_id': type.IdType(resource_types='com.vmware.cis.tagging.Category'), + 'update_spec': type.ReferenceType(sys.modules[__name__], 'Category.UpdateSpec'), + }) + update_error_dict = { + 'com.vmware.vapi.std.errors.already_exists': + type.ReferenceType(com.vmware.vapi.std.errors_client, 'AlreadyExists'), + 'com.vmware.vapi.std.errors.invalid_argument': + type.ReferenceType(com.vmware.vapi.std.errors_client, 'InvalidArgument'), + 'com.vmware.vapi.std.errors.not_found': + type.ReferenceType(com.vmware.vapi.std.errors_client, 'NotFound'), + 'com.vmware.vapi.std.errors.unauthorized': + type.ReferenceType(com.vmware.vapi.std.errors_client, 'Unauthorized'), + + } + update_input_validator_list = [ + ] + update_output_validator_list = [ + ] + + # properties for delete operation + delete_input_type = type.StructType('operation-input', { + 'category_id': type.IdType(resource_types='com.vmware.cis.tagging.Category'), + }) + delete_error_dict = { + 'com.vmware.vapi.std.errors.not_found': + type.ReferenceType(com.vmware.vapi.std.errors_client, 'NotFound'), + 'com.vmware.vapi.std.errors.unauthorized': + type.ReferenceType(com.vmware.vapi.std.errors_client, 'Unauthorized'), + + } + delete_input_validator_list = [ + ] + delete_output_validator_list = [ + ] + + # properties for list operation + list_input_type = type.StructType('operation-input', {}) + list_error_dict = {} + list_input_validator_list = [ + ] + list_output_validator_list = [ + ] + + # properties for list_used_categories operation + list_used_categories_input_type = type.StructType('operation-input', { + 'used_by_entity': type.StringType(), + }) + list_used_categories_error_dict = {} + list_used_categories_input_validator_list = [ + ] + list_used_categories_output_validator_list = [ + ] + + # properties for add_to_used_by operation + add_to_used_by_input_type = type.StructType('operation-input', { + 'category_id': type.IdType(resource_types='com.vmware.cis.tagging.Category'), + 'used_by_entity': type.StringType(), + }) + add_to_used_by_error_dict = { + 'com.vmware.vapi.std.errors.not_found': + type.ReferenceType(com.vmware.vapi.std.errors_client, 'NotFound'), + 'com.vmware.vapi.std.errors.unauthorized': + type.ReferenceType(com.vmware.vapi.std.errors_client, 'Unauthorized'), + + } + add_to_used_by_input_validator_list = [ + ] + add_to_used_by_output_validator_list = [ + ] + + # properties for remove_from_used_by operation + remove_from_used_by_input_type = type.StructType('operation-input', { + 'category_id': type.IdType(resource_types='com.vmware.cis.tagging.Category'), + 'used_by_entity': type.StringType(), + }) + remove_from_used_by_error_dict = { + 'com.vmware.vapi.std.errors.not_found': + type.ReferenceType(com.vmware.vapi.std.errors_client, 'NotFound'), + 'com.vmware.vapi.std.errors.unauthorized': + type.ReferenceType(com.vmware.vapi.std.errors_client, 'Unauthorized'), + + } + remove_from_used_by_input_validator_list = [ + ] + remove_from_used_by_output_validator_list = [ + ] + + # properties for revoke_propagating_permissions operation + revoke_propagating_permissions_input_type = type.StructType('operation-input', { + 'category_id': type.IdType(resource_types='com.vmware.cis.tagging.Category'), + }) + revoke_propagating_permissions_error_dict = { + 'com.vmware.vapi.std.errors.not_found': + type.ReferenceType(com.vmware.vapi.std.errors_client, 'NotFound'), + 'com.vmware.vapi.std.errors.unauthorized': + type.ReferenceType(com.vmware.vapi.std.errors_client, 'Unauthorized'), + + } + revoke_propagating_permissions_input_validator_list = [ + ] + revoke_propagating_permissions_output_validator_list = [ + ] + + operations = { + 'create': { + 'input_type': create_input_type, + 'output_type': type.IdType(resource_types='com.vmware.cis.tagging.Category'), + 'errors': create_error_dict, + 'input_validator_list': create_input_validator_list, + 'output_validator_list': create_output_validator_list, + }, + 'get': { + 'input_type': get_input_type, + 'output_type': type.ReferenceType(sys.modules[__name__], 'CategoryModel'), + 'errors': get_error_dict, + 'input_validator_list': get_input_validator_list, + 'output_validator_list': get_output_validator_list, + }, + 'update': { + 'input_type': update_input_type, + 'output_type': type.VoidType(), + 'errors': update_error_dict, + 'input_validator_list': update_input_validator_list, + 'output_validator_list': update_output_validator_list, + }, + 'delete': { + 'input_type': delete_input_type, + 'output_type': type.VoidType(), + 'errors': delete_error_dict, + 'input_validator_list': delete_input_validator_list, + 'output_validator_list': delete_output_validator_list, + }, + 'list': { + 'input_type': list_input_type, + 'output_type': type.ListType(type.IdType()), + 'errors': list_error_dict, + 'input_validator_list': list_input_validator_list, + 'output_validator_list': list_output_validator_list, + }, + 'list_used_categories': { + 'input_type': list_used_categories_input_type, + 'output_type': type.ListType(type.IdType()), + 'errors': list_used_categories_error_dict, + 'input_validator_list': list_used_categories_input_validator_list, + 'output_validator_list': list_used_categories_output_validator_list, + }, + 'add_to_used_by': { + 'input_type': add_to_used_by_input_type, + 'output_type': type.VoidType(), + 'errors': add_to_used_by_error_dict, + 'input_validator_list': add_to_used_by_input_validator_list, + 'output_validator_list': add_to_used_by_output_validator_list, + }, + 'remove_from_used_by': { + 'input_type': remove_from_used_by_input_type, + 'output_type': type.VoidType(), + 'errors': remove_from_used_by_error_dict, + 'input_validator_list': remove_from_used_by_input_validator_list, + 'output_validator_list': remove_from_used_by_output_validator_list, + }, + 'revoke_propagating_permissions': { + 'input_type': revoke_propagating_permissions_input_type, + 'output_type': type.VoidType(), + 'errors': revoke_propagating_permissions_error_dict, + 'input_validator_list': revoke_propagating_permissions_input_validator_list, + 'output_validator_list': revoke_propagating_permissions_output_validator_list, + }, + } + ApiInterfaceStub.__init__(self, iface_name='com.vmware.cis.tagging.category', + config=config, + operations=operations) +class _TagStub(ApiInterfaceStub): + def __init__(self, config): + # properties for create operation + create_input_type = type.StructType('operation-input', { + 'create_spec': type.ReferenceType(sys.modules[__name__], 'Tag.CreateSpec'), + }) + create_error_dict = { + 'com.vmware.vapi.std.errors.already_exists': + type.ReferenceType(com.vmware.vapi.std.errors_client, 'AlreadyExists'), + 'com.vmware.vapi.std.errors.invalid_argument': + type.ReferenceType(com.vmware.vapi.std.errors_client, 'InvalidArgument'), + 'com.vmware.vapi.std.errors.not_found': + type.ReferenceType(com.vmware.vapi.std.errors_client, 'NotFound'), + 'com.vmware.vapi.std.errors.unauthorized': + type.ReferenceType(com.vmware.vapi.std.errors_client, 'Unauthorized'), + + } + create_input_validator_list = [ + ] + create_output_validator_list = [ + ] + + # properties for get operation + get_input_type = type.StructType('operation-input', { + 'tag_id': type.IdType(resource_types='com.vmware.cis.tagging.Tag'), + }) + get_error_dict = { + 'com.vmware.vapi.std.errors.not_found': + type.ReferenceType(com.vmware.vapi.std.errors_client, 'NotFound'), + 'com.vmware.vapi.std.errors.unauthorized': + type.ReferenceType(com.vmware.vapi.std.errors_client, 'Unauthorized'), + + } + get_input_validator_list = [ + ] + get_output_validator_list = [ + ] + + # properties for update operation + update_input_type = type.StructType('operation-input', { + 'tag_id': type.IdType(resource_types='com.vmware.cis.tagging.Tag'), + 'update_spec': type.ReferenceType(sys.modules[__name__], 'Tag.UpdateSpec'), + }) + update_error_dict = { + 'com.vmware.vapi.std.errors.already_exists': + type.ReferenceType(com.vmware.vapi.std.errors_client, 'AlreadyExists'), + 'com.vmware.vapi.std.errors.invalid_argument': + type.ReferenceType(com.vmware.vapi.std.errors_client, 'InvalidArgument'), + 'com.vmware.vapi.std.errors.not_found': + type.ReferenceType(com.vmware.vapi.std.errors_client, 'NotFound'), + 'com.vmware.vapi.std.errors.unauthorized': + type.ReferenceType(com.vmware.vapi.std.errors_client, 'Unauthorized'), + + } + update_input_validator_list = [ + ] + update_output_validator_list = [ + ] + + # properties for delete operation + delete_input_type = type.StructType('operation-input', { + 'tag_id': type.IdType(resource_types='com.vmware.cis.tagging.Tag'), + }) + delete_error_dict = { + 'com.vmware.vapi.std.errors.not_found': + type.ReferenceType(com.vmware.vapi.std.errors_client, 'NotFound'), + 'com.vmware.vapi.std.errors.unauthorized': + type.ReferenceType(com.vmware.vapi.std.errors_client, 'Unauthorized'), + + } + delete_input_validator_list = [ + ] + delete_output_validator_list = [ + ] + + # properties for list operation + list_input_type = type.StructType('operation-input', {}) + list_error_dict = {} + list_input_validator_list = [ + ] + list_output_validator_list = [ + ] + + # properties for list_used_tags operation + list_used_tags_input_type = type.StructType('operation-input', { + 'used_by_entity': type.StringType(), + }) + list_used_tags_error_dict = {} + list_used_tags_input_validator_list = [ + ] + list_used_tags_output_validator_list = [ + ] + + # properties for list_tags_for_category operation + list_tags_for_category_input_type = type.StructType('operation-input', { + 'category_id': type.IdType(resource_types='com.vmware.cis.tagging.Category'), + }) + list_tags_for_category_error_dict = { + 'com.vmware.vapi.std.errors.not_found': + type.ReferenceType(com.vmware.vapi.std.errors_client, 'NotFound'), + 'com.vmware.vapi.std.errors.unauthorized': + type.ReferenceType(com.vmware.vapi.std.errors_client, 'Unauthorized'), + + } + list_tags_for_category_input_validator_list = [ + ] + list_tags_for_category_output_validator_list = [ + ] + + # properties for add_to_used_by operation + add_to_used_by_input_type = type.StructType('operation-input', { + 'tag_id': type.IdType(resource_types='com.vmware.cis.tagging.Tag'), + 'used_by_entity': type.StringType(), + }) + add_to_used_by_error_dict = { + 'com.vmware.vapi.std.errors.not_found': + type.ReferenceType(com.vmware.vapi.std.errors_client, 'NotFound'), + 'com.vmware.vapi.std.errors.unauthorized': + type.ReferenceType(com.vmware.vapi.std.errors_client, 'Unauthorized'), + + } + add_to_used_by_input_validator_list = [ + ] + add_to_used_by_output_validator_list = [ + ] + + # properties for remove_from_used_by operation + remove_from_used_by_input_type = type.StructType('operation-input', { + 'tag_id': type.IdType(resource_types='com.vmware.cis.tagging.Tag'), + 'used_by_entity': type.StringType(), + }) + remove_from_used_by_error_dict = { + 'com.vmware.vapi.std.errors.not_found': + type.ReferenceType(com.vmware.vapi.std.errors_client, 'NotFound'), + 'com.vmware.vapi.std.errors.unauthorized': + type.ReferenceType(com.vmware.vapi.std.errors_client, 'Unauthorized'), + + } + remove_from_used_by_input_validator_list = [ + ] + remove_from_used_by_output_validator_list = [ + ] + + # properties for revoke_propagating_permissions operation + revoke_propagating_permissions_input_type = type.StructType('operation-input', { + 'tag_id': type.IdType(resource_types='com.vmware.cis.tagging.Tag'), + }) + revoke_propagating_permissions_error_dict = { + 'com.vmware.vapi.std.errors.not_found': + type.ReferenceType(com.vmware.vapi.std.errors_client, 'NotFound'), + 'com.vmware.vapi.std.errors.unauthorized': + type.ReferenceType(com.vmware.vapi.std.errors_client, 'Unauthorized'), + + } + revoke_propagating_permissions_input_validator_list = [ + ] + revoke_propagating_permissions_output_validator_list = [ + ] + + operations = { + 'create': { + 'input_type': create_input_type, + 'output_type': type.IdType(resource_types='com.vmware.cis.tagging.Tag'), + 'errors': create_error_dict, + 'input_validator_list': create_input_validator_list, + 'output_validator_list': create_output_validator_list, + }, + 'get': { + 'input_type': get_input_type, + 'output_type': type.ReferenceType(sys.modules[__name__], 'TagModel'), + 'errors': get_error_dict, + 'input_validator_list': get_input_validator_list, + 'output_validator_list': get_output_validator_list, + }, + 'update': { + 'input_type': update_input_type, + 'output_type': type.VoidType(), + 'errors': update_error_dict, + 'input_validator_list': update_input_validator_list, + 'output_validator_list': update_output_validator_list, + }, + 'delete': { + 'input_type': delete_input_type, + 'output_type': type.VoidType(), + 'errors': delete_error_dict, + 'input_validator_list': delete_input_validator_list, + 'output_validator_list': delete_output_validator_list, + }, + 'list': { + 'input_type': list_input_type, + 'output_type': type.ListType(type.IdType()), + 'errors': list_error_dict, + 'input_validator_list': list_input_validator_list, + 'output_validator_list': list_output_validator_list, + }, + 'list_used_tags': { + 'input_type': list_used_tags_input_type, + 'output_type': type.ListType(type.IdType()), + 'errors': list_used_tags_error_dict, + 'input_validator_list': list_used_tags_input_validator_list, + 'output_validator_list': list_used_tags_output_validator_list, + }, + 'list_tags_for_category': { + 'input_type': list_tags_for_category_input_type, + 'output_type': type.ListType(type.IdType()), + 'errors': list_tags_for_category_error_dict, + 'input_validator_list': list_tags_for_category_input_validator_list, + 'output_validator_list': list_tags_for_category_output_validator_list, + }, + 'add_to_used_by': { + 'input_type': add_to_used_by_input_type, + 'output_type': type.VoidType(), + 'errors': add_to_used_by_error_dict, + 'input_validator_list': add_to_used_by_input_validator_list, + 'output_validator_list': add_to_used_by_output_validator_list, + }, + 'remove_from_used_by': { + 'input_type': remove_from_used_by_input_type, + 'output_type': type.VoidType(), + 'errors': remove_from_used_by_error_dict, + 'input_validator_list': remove_from_used_by_input_validator_list, + 'output_validator_list': remove_from_used_by_output_validator_list, + }, + 'revoke_propagating_permissions': { + 'input_type': revoke_propagating_permissions_input_type, + 'output_type': type.VoidType(), + 'errors': revoke_propagating_permissions_error_dict, + 'input_validator_list': revoke_propagating_permissions_input_validator_list, + 'output_validator_list': revoke_propagating_permissions_output_validator_list, + }, + } + ApiInterfaceStub.__init__(self, iface_name='com.vmware.cis.tagging.tag', + config=config, + operations=operations) +class _TagAssociationStub(ApiInterfaceStub): + def __init__(self, config): + # properties for attach operation + attach_input_type = type.StructType('operation-input', { + 'tag_id': type.IdType(resource_types='com.vmware.cis.tagging.Tag'), + 'object_id': type.ReferenceType(com.vmware.vapi.std_client, 'DynamicID'), + }) + attach_error_dict = { + 'com.vmware.vapi.std.errors.not_found': + type.ReferenceType(com.vmware.vapi.std.errors_client, 'NotFound'), + 'com.vmware.vapi.std.errors.invalid_argument': + type.ReferenceType(com.vmware.vapi.std.errors_client, 'InvalidArgument'), + 'com.vmware.vapi.std.errors.unauthorized': + type.ReferenceType(com.vmware.vapi.std.errors_client, 'Unauthorized'), + + } + attach_input_validator_list = [ + ] + attach_output_validator_list = [ + ] + + # properties for detach operation + detach_input_type = type.StructType('operation-input', { + 'tag_id': type.IdType(resource_types='com.vmware.cis.tagging.Tag'), + 'object_id': type.ReferenceType(com.vmware.vapi.std_client, 'DynamicID'), + }) + detach_error_dict = { + 'com.vmware.vapi.std.errors.not_found': + type.ReferenceType(com.vmware.vapi.std.errors_client, 'NotFound'), + 'com.vmware.vapi.std.errors.unauthorized': + type.ReferenceType(com.vmware.vapi.std.errors_client, 'Unauthorized'), + + } + detach_input_validator_list = [ + ] + detach_output_validator_list = [ + ] + + # properties for list_attached_objects operation + list_attached_objects_input_type = type.StructType('operation-input', { + 'tag_id': type.IdType(resource_types='com.vmware.cis.tagging.Tag'), + }) + list_attached_objects_error_dict = { + 'com.vmware.vapi.std.errors.not_found': + type.ReferenceType(com.vmware.vapi.std.errors_client, 'NotFound'), + 'com.vmware.vapi.std.errors.unauthorized': + type.ReferenceType(com.vmware.vapi.std.errors_client, 'Unauthorized'), + + } + list_attached_objects_input_validator_list = [ + ] + list_attached_objects_output_validator_list = [ + ] + + # properties for list_attached_tags operation + list_attached_tags_input_type = type.StructType('operation-input', { + 'object_id': type.ReferenceType(com.vmware.vapi.std_client, 'DynamicID'), + }) + list_attached_tags_error_dict = { + 'com.vmware.vapi.std.errors.unauthorized': + type.ReferenceType(com.vmware.vapi.std.errors_client, 'Unauthorized'), + + } + list_attached_tags_input_validator_list = [ + ] + list_attached_tags_output_validator_list = [ + ] + + # properties for list_attachable_tags operation + list_attachable_tags_input_type = type.StructType('operation-input', { + 'object_id': type.ReferenceType(com.vmware.vapi.std_client, 'DynamicID'), + }) + list_attachable_tags_error_dict = { + 'com.vmware.vapi.std.errors.unauthorized': + type.ReferenceType(com.vmware.vapi.std.errors_client, 'Unauthorized'), + + } + list_attachable_tags_input_validator_list = [ + ] + list_attachable_tags_output_validator_list = [ + ] + + operations = { + 'attach': { + 'input_type': attach_input_type, + 'output_type': type.VoidType(), + 'errors': attach_error_dict, + 'input_validator_list': attach_input_validator_list, + 'output_validator_list': attach_output_validator_list, + }, + 'detach': { + 'input_type': detach_input_type, + 'output_type': type.VoidType(), + 'errors': detach_error_dict, + 'input_validator_list': detach_input_validator_list, + 'output_validator_list': detach_output_validator_list, + }, + 'list_attached_objects': { + 'input_type': list_attached_objects_input_type, + 'output_type': type.ListType(type.ReferenceType(com.vmware.vapi.std_client, 'DynamicID')), + 'errors': list_attached_objects_error_dict, + 'input_validator_list': list_attached_objects_input_validator_list, + 'output_validator_list': list_attached_objects_output_validator_list, + }, + 'list_attached_tags': { + 'input_type': list_attached_tags_input_type, + 'output_type': type.ListType(type.IdType()), + 'errors': list_attached_tags_error_dict, + 'input_validator_list': list_attached_tags_input_validator_list, + 'output_validator_list': list_attached_tags_output_validator_list, + }, + 'list_attachable_tags': { + 'input_type': list_attachable_tags_input_type, + 'output_type': type.ListType(type.IdType()), + 'errors': list_attachable_tags_error_dict, + 'input_validator_list': list_attachable_tags_input_validator_list, + 'output_validator_list': list_attachable_tags_output_validator_list, + }, + } + ApiInterfaceStub.__init__(self, iface_name='com.vmware.cis.tagging.tag_association', + config=config, + operations=operations) +
+ +
+
+
+
+
+ + +
+
+
+
+ + + + \ No newline at end of file diff --git a/vsphere/6.0/_modules/com/vmware/cis_client.html b/vsphere/6.0/_modules/com/vmware/cis_client.html new file mode 100644 index 00000000..eb4b637e --- /dev/null +++ b/vsphere/6.0/_modules/com/vmware/cis_client.html @@ -0,0 +1,403 @@ + + + + + + + + + + com.vmware.cis_client — vCloud Suite SDK for Python 6.0.0 documentation + + + + + + + + + + + + + + +
+
+
+
+ +

Source code for com.vmware.cis_client

+#---------------------------------------------------------------------------
+# Copyright 2015 VMware, Inc.  All rights reserved.
+
+# AUTO GENERATED FILE -- DO NOT MODIFY!
+#
+# vAPI stub file for package com.vmware.cis.
+#---------------------------------------------------------------------------
+
+"""
+
+
+"""
+
+__author__ = 'VMware, Inc.'
+__docformat__ = 'restructuredtext en'
+
+import sys
+
+from vmware.vapi.bindings import type
+from vmware.vapi.bindings.converter import TypeConverter
+from vmware.vapi.bindings.enum import Enum
+from vmware.vapi.bindings.error import VapiError
+from vmware.vapi.bindings.struct import VapiStruct
+from vmware.vapi.bindings.stub import VapiInterface, ApiInterfaceStub
+from vmware.vapi.bindings.common import raise_core_exception
+from vmware.vapi.data.validator import UnionValidator, HasFieldsOfValidator
+from vmware.vapi.exception import CoreException
+import com.vmware.vapi.std.errors_client
+
+
+
[docs]class Session(VapiInterface): + """ + The ``Session`` class allows API clients to manage session tokens including + creating, deleting and obtaining information about sessions. + + + + * The :func:`Session.create` method creates session token in exchange for + another authentication token. + * The :func:`Session.delete` method invalidates a session token. + * The :func:`Session.get` retrieves information about a session token. + + + + The call to the :func:`Session.create` method is part of the overall + authentication process for API clients. For example, the sequence of steps + for establishing a session with SAML token is: + + * Connect to lookup service. + * Discover the secure token service (STS) endpoint URL. + * Connect to the secure token service to obtain a SAML token. + * Authenticate to the lookup service using the obtained SAML token. + * Discover the API endpoint URL from lookup service. + * Call the :func:`Session.create` method. The :func:`Session.create` call + must include the SAML token. + + + + See the programming guide and samples for additional information about + establishing API sessions. + + **Execution Context and Security Context** + + To use session based authentication a client should supply the session + token obtained through the :func:`Session.create` method. The client should + add the session token in the security context when using SDK classes. + Clients using the REST API should supply the session token as a HTTP + header. + + **Session Lifetime** + + A session begins with call to the :func:`Session.create` method to exchange + a SAML token for a API session token. A session ends under the following + circumstances: + + * Call to the :func:`Session.delete` method. + * The session expires. Session expiration may be caused by one of the + following situations: + + * Client inactivity - For a particular session identified by client + requests that specify the associated session ID, the lapsed time since the + last request exceeds the maximum interval between requests. + * Unconditional or absolute session expiration time: At the beginning of + the session, the session logic uses the SAML token and the system + configuration to calculate absolute expiration time. + + + + When a session ends, the authentication logic will reject any subsequent + client requests that specify that session. Any operations in progress will + continue to completion. + + **Error Handling** + + The :class:`Session` returns the following exceptions: + + * :class:`com.vmware.vapi.std.errors_client.Unauthenticated` exception for + any exceptions related to the request. + * :class:`com.vmware.vapi.std.errors_client.ServiceUnavailable` exception + for all exceptions caused by internal service failure. + """ + + + def __init__(self, config): + """ + :type config: :class:`vmware.vapi.bindings.stub.StubConfiguration` + :param config: Configuration to be used for creating the stub. + """ + VapiInterface.__init__(self, config, _SessionStub) + +
[docs] class Info(VapiStruct): + """ + Represents data associated with an API session. + + .. tip:: + The arguments are used to initialize data attributes with the same + names. + """ + + + + def __init__(self, + user=None, + created_time=None, + last_accessed_time=None, + ): + """ + :type user: :class:`str` + :param user: Fully qualified name of the end user that created the session, for + example Administrator\\\\@vsphere.local. A typical use case for + this information is in Graphical User Interfaces (GUI) or logging + systems to visualize the identity of the current user. + :type created_time: :class:`datetime.datetime` + :param created_time: Time when the session was created. + :type last_accessed_time: :class:`datetime.datetime` + :param last_accessed_time: Last time this session was used by passing the session key for + invoking an API. + """ + self.user = user + self.created_time = created_time + self.last_accessed_time = last_accessed_time + VapiStruct.__init__(self) +
+ Info._set_binding_type(type.StructType( + 'com.vmware.cis.session.info', { + 'user': type.StringType(), + 'created_time': type.DateTimeType(), + 'last_accessed_time': type.DateTimeType(), + }, + Info, + False, + None)) + + +
[docs] def create(self): + """ + Creates a session with the API. This is the equivalent of login. This + method exchanges user credentials supplied in the security context for + a session identifier that is to be used for authenticating subsequent + calls. To authenticate subsequent calls clients are expected to include + the session key. + + + :rtype: :class:`str` + :return: Newly created session identifier to be used for authenticating + further requests. + :raise: :class:`com.vmware.vapi.std.errors_client.Unauthenticated` + if the session creation fails due to request specific issues. Due + to the security nature of the API the details of the error are not + disclosed. + + Please check the following preconditions if using a SAML token to + authenticate: + + * the supplied token is delegate-able. + * the time of client and server system are synchronized. + * the token supplied is valid. + * if bearer tokens are used check that system configuration allows + the API endpoint to accept such tokens. + :raise: :class:`com.vmware.vapi.std.errors_client.ServiceUnavailable` + if session creation fails due to server specific issues, for + example connection to a back end component is failing. Due to the + security nature of this API further details will not be disclosed + in the exception. Please refer to component health information, + administrative logs and product specific documentation for possible + causes. + """ + return self._invoke('create', None) +
+
[docs] def delete(self): + """ + Terminates the validity of a session token. This is the equivalent of + log out. + + A session identifier is expected as part of the request. + + + :raise: :class:`com.vmware.vapi.std.errors_client.Unauthenticated` + if the session id is missing from the request or the corresponding + session object cannot be found. + :raise: :class:`com.vmware.vapi.std.errors_client.ServiceUnavailable` + if session deletion fails due to server specific issues, for + example connection to a back end component is failing. Due to the + security nature of this API further details will not be disclosed + in the exception. Please refer to component health information, + administrative logs and product specific documentation for possible + causes. + """ + return self._invoke('delete', None) +
+
[docs] def get(self): + """ + Returns information about the current session. This method expects a + valid session identifier to be supplied. + + A side effect of invoking this method may be a change to the session's + last accessed time to the current time if this is supported by the + session implementation. Invoking any other method in the API will also + update the session's last accessed time. + + This API is meant to serve the needs of various front end projects that + may want to display the name of the user. Examples of this include + various web based user interfaces and logging facilities. + + + :rtype: :class:`Session.Info` + :return: Information about the session. + :raise: :class:`com.vmware.vapi.std.errors_client.Unauthenticated` + if the session id is missing from the request or the corresponding + session object cannot be found. + :raise: :class:`com.vmware.vapi.std.errors_client.ServiceUnavailable` + if session retrieval fails due to server specific issues e.g. + connection to back end component is failing. Due to the security + nature of this API further details will not be disclosed in the + error. Please refer to component health information, administrative + logs and product specific documentation for possible causes. + """ + return self._invoke('get', None) +
+class _SessionStub(ApiInterfaceStub): + def __init__(self, config): + # properties for create operation + create_input_type = type.StructType('operation-input', {}) + create_error_dict = { + 'com.vmware.vapi.std.errors.unauthenticated': + type.ReferenceType(com.vmware.vapi.std.errors_client, 'Unauthenticated'), + 'com.vmware.vapi.std.errors.service_unavailable': + type.ReferenceType(com.vmware.vapi.std.errors_client, 'ServiceUnavailable'), + + } + create_input_validator_list = [ + ] + create_output_validator_list = [ + ] + + # properties for delete operation + delete_input_type = type.StructType('operation-input', {}) + delete_error_dict = { + 'com.vmware.vapi.std.errors.unauthenticated': + type.ReferenceType(com.vmware.vapi.std.errors_client, 'Unauthenticated'), + 'com.vmware.vapi.std.errors.service_unavailable': + type.ReferenceType(com.vmware.vapi.std.errors_client, 'ServiceUnavailable'), + + } + delete_input_validator_list = [ + ] + delete_output_validator_list = [ + ] + + # properties for get operation + get_input_type = type.StructType('operation-input', {}) + get_error_dict = { + 'com.vmware.vapi.std.errors.unauthenticated': + type.ReferenceType(com.vmware.vapi.std.errors_client, 'Unauthenticated'), + 'com.vmware.vapi.std.errors.service_unavailable': + type.ReferenceType(com.vmware.vapi.std.errors_client, 'ServiceUnavailable'), + + } + get_input_validator_list = [ + ] + get_output_validator_list = [ + ] + + operations = { + 'create': { + 'input_type': create_input_type, + 'output_type': type.SecretType(), + 'errors': create_error_dict, + 'input_validator_list': create_input_validator_list, + 'output_validator_list': create_output_validator_list, + }, + 'delete': { + 'input_type': delete_input_type, + 'output_type': type.VoidType(), + 'errors': delete_error_dict, + 'input_validator_list': delete_input_validator_list, + 'output_validator_list': delete_output_validator_list, + }, + 'get': { + 'input_type': get_input_type, + 'output_type': type.ReferenceType(sys.modules[__name__], 'Session.Info'), + 'errors': get_error_dict, + 'input_validator_list': get_input_validator_list, + 'output_validator_list': get_output_validator_list, + }, + } + ApiInterfaceStub.__init__(self, iface_name='com.vmware.cis.session', + config=config, + operations=operations) +
+ +
+
+
+
+
+ + +
+
+
+
+ + + + \ No newline at end of file diff --git a/vsphere/6.0/_modules/com/vmware/content/library/item/downloadsession_client.html b/vsphere/6.0/_modules/com/vmware/content/library/item/downloadsession_client.html new file mode 100644 index 00000000..92eaddf6 --- /dev/null +++ b/vsphere/6.0/_modules/com/vmware/content/library/item/downloadsession_client.html @@ -0,0 +1,502 @@ + + + + + + + + + + com.vmware.content.library.item.downloadsession_client — vCloud Suite SDK for Python 6.0.0 documentation + + + + + + + + + + + + + + +
+
+
+
+ +

Source code for com.vmware.content.library.item.downloadsession_client

+#---------------------------------------------------------------------------
+# Copyright 2015 VMware, Inc.  All rights reserved.
+
+# AUTO GENERATED FILE -- DO NOT MODIFY!
+#
+# vAPI stub file for package com.vmware.content.library.item.downloadsession.
+#---------------------------------------------------------------------------
+
+"""
+The Content Library Item Download Session module provides classes and classes
+for downloading files in a session.
+
+"""
+
+__author__ = 'VMware, Inc.'
+__docformat__ = 'restructuredtext en'
+
+import sys
+
+from vmware.vapi.bindings import type
+from vmware.vapi.bindings.converter import TypeConverter
+from vmware.vapi.bindings.enum import Enum
+from vmware.vapi.bindings.error import VapiError
+from vmware.vapi.bindings.struct import VapiStruct
+from vmware.vapi.bindings.stub import VapiInterface, ApiInterfaceStub
+from vmware.vapi.bindings.common import raise_core_exception
+from vmware.vapi.data.validator import UnionValidator, HasFieldsOfValidator
+from vmware.vapi.exception import CoreException
+import com.vmware.content.library.item_client
+import com.vmware.vapi.std_client
+import com.vmware.vapi.std.errors_client
+
+
+
[docs]class File(VapiInterface): + """ + The ``File`` class provides methods for accessing files within a download + session. + + After a download session is created against a library item, the ``File`` + class can be used to retrieve all downloadable content within the library + item. Since the content may not be available immediately in a downloadable + form on the server side, the client will have to prepare the file and wait + for the file status to become :attr:`File.PrepareStatus.PREPARED`. + + See :class:`com.vmware.content.library.item_client.DownloadSession`. + """ + + + def __init__(self, config): + """ + :type config: :class:`vmware.vapi.bindings.stub.StubConfiguration` + :param config: Configuration to be used for creating the stub. + """ + VapiInterface.__init__(self, config, _FileStub) + +
[docs] class PrepareStatus(Enum): + """ + The ``File.PrepareStatus`` class defines the state of the file in + preparation for download. + + .. note:: + This class represents an enumerated type in the interface language + definition. The class contains class attributes which represent the + values in the current version of the enumerated type. Newer versions of + the enumerated type may contain new values. To use new values of the + enumerated type in communication with a server that supports the newer + version of the API, you instantiate this class. See :ref:`enumerated + type description page <enumeration_description>`. + """ + UNPREPARED = None + """ + The file hasn't been requested for preparation. + + """ + PREPARE_REQUESTED = None + """ + A prepare has been requested, however the server hasn't started the + preparation yet. + + """ + PREPARING = None + """ + A prepare has been requested and the file is in the process of being + prepared. + + """ + PREPARED = None + """ + Prepare succeeded. The file is ready for download. + + """ + ERROR = None + """ + Prepare failed. + + """ + + def __init__(self, string): + """ + :type string: :class:`str` + :param string: String value for the :class:`PrepareStatus` instance. + """ + Enum.__init__(string) +
+ PrepareStatus.UNPREPARED = PrepareStatus('UNPREPARED') + PrepareStatus.PREPARE_REQUESTED = PrepareStatus('PREPARE_REQUESTED') + PrepareStatus.PREPARING = PrepareStatus('PREPARING') + PrepareStatus.PREPARED = PrepareStatus('PREPARED') + PrepareStatus.ERROR = PrepareStatus('ERROR') + PrepareStatus._set_binding_type(type.EnumType( + 'com.vmware.content.library.item.downloadsession.file.prepare_status', + PrepareStatus)) + +
[docs] class EndpointType(Enum): + """ + The ``File.EndpointType`` class defines the types of endpoints used to + download the file. + + .. note:: + This class represents an enumerated type in the interface language + definition. The class contains class attributes which represent the + values in the current version of the enumerated type. Newer versions of + the enumerated type may contain new values. To use new values of the + enumerated type in communication with a server that supports the newer + version of the API, you instantiate this class. See :ref:`enumerated + type description page <enumeration_description>`. + """ + HTTPS = None + """ + An https download endpoint. + + """ + DIRECT = None + """ + A direct download endpoint indicating the location of the file on storage. + The caller is responsible for retrieving the file from the storage location + directly. + + """ + + def __init__(self, string): + """ + :type string: :class:`str` + :param string: String value for the :class:`EndpointType` instance. + """ + Enum.__init__(string) +
+ EndpointType.HTTPS = EndpointType('HTTPS') + EndpointType.DIRECT = EndpointType('DIRECT') + EndpointType._set_binding_type(type.EnumType( + 'com.vmware.content.library.item.downloadsession.file.endpoint_type', + EndpointType)) + +
[docs] class Info(VapiStruct): + """ + The ``File.Info`` class defines the downloaded file. + + .. tip:: + The arguments are used to initialize data attributes with the same + names. + """ + + + + def __init__(self, + name=None, + size=None, + bytes_transferred=None, + status=None, + download_endpoint=None, + checksum_info=None, + error_message=None, + ): + """ + :type name: :class:`str` + :param name: The name of the file. + :type size: :class:`long` or ``None`` + :param size: The file size, in bytes. + This attribute may not be available immediately. It is guaranteed + to be set when the client finishes downloading the file. + :type bytes_transferred: :class:`long` + :param bytes_transferred: The number of bytes that have been transferred by the server so far + for making this file prepared for download. This value may stay at + zero till the client starts downloading the file. + :type status: :class:`File.PrepareStatus` + :param status: The preparation status (UNPREPARED, PREPARE_REQUESTED, PREPARING, + PREPARED, ERROR) of the file. + :type download_endpoint: :class:`com.vmware.content.library.item_client.TransferEndpoint` or ``None`` + :param download_endpoint: Endpoint at which the file is available for download. The value is + valid only when the :attr:`File.Info.status` is + :attr:`File.PrepareStatus.PREPARED`. + This attribute won't be set until the file status is + :attr:`File.PrepareStatus.PREPARED`. + :type checksum_info: :class:`com.vmware.content.library.item_client.File.ChecksumInfo` or ``None`` + :param checksum_info: The checksum information of the file. When the download is + complete, you can retrieve the checksum from the :func:`File.get` + method to verify the checksum for the downloaded file. + The checksum is always calculated for the downloaded file, but this + attribute won't be set until the download is complete. + :type error_message: :class:`com.vmware.vapi.std_client.LocalizableMessage` or ``None`` + :param error_message: Error message for a failed preparation when the prepare status is + :attr:`File.PrepareStatus.ERROR`. + This attribute won't be set unless there was an error with the file + transfer. + """ + self.name = name + self.size = size + self.bytes_transferred = bytes_transferred + self.status = status + self.download_endpoint = download_endpoint + self.checksum_info = checksum_info + self.error_message = error_message + VapiStruct.__init__(self) +
+ Info._set_binding_type(type.StructType( + 'com.vmware.content.library.item.downloadsession.file.info', { + 'name': type.StringType(), + 'size': type.OptionalType(type.IntegerType()), + 'bytes_transferred': type.IntegerType(), + 'status': type.ReferenceType(sys.modules[__name__], 'File.PrepareStatus'), + 'download_endpoint': type.OptionalType(type.ReferenceType(com.vmware.content.library.item_client, 'TransferEndpoint')), + 'checksum_info': type.OptionalType(type.ReferenceType(com.vmware.content.library.item_client, 'File.ChecksumInfo')), + 'error_message': type.OptionalType(type.ReferenceType(com.vmware.vapi.std_client, 'LocalizableMessage')), + }, + Info, + False, + None)) + + +
[docs] def list(self, + download_session_id, + ): + """ + Lists the information of all the files in the library item associated + with the download session. + + :type download_session_id: :class:`str` + :param download_session_id: Identifier of the download session. + The parameter must be an identifier for the resource type: + ``com.vmware.content.library.item.DownloadSession``. + :rtype: :class:`list` of :class:`File.Info` + :return: The :class:`list` of :class:`File.Info` instances. + :raise: :class:`com.vmware.vapi.std.errors_client.NotFound` + if the download session associated with ``download_session_id`` + doesn't exist. + :raise: :class:`com.vmware.vapi.std.errors_client.Unauthorized` + if you do not have all of the privileges described as follows: + + * The resource ``com.vmware.content.library.Item`` referenced by + the parameter ``libraryItemId`` requires ``System.Read``. + """ + return self._invoke('list', + { + 'download_session_id': download_session_id, + }) +
+
[docs] def prepare(self, + download_session_id, + file_name, + endpoint_type=None, + ): + """ + Requests a file to be prepared for download. + + :type download_session_id: :class:`str` + :param download_session_id: Identifier of the download session. + The parameter must be an identifier for the resource type: + ``com.vmware.content.library.item.DownloadSession``. + :type file_name: :class:`str` + :param file_name: Name of the file requested for download. + :type endpoint_type: :class:`File.EndpointType` or ``None`` + :param endpoint_type: Endpoint type request, one of HTTPS, DIRECT. This will determine + the type of the :attr:`File.Info.download_endpoint` that is + generated when the file is prepared. The + :attr:`File.EndpointType.DIRECT` is only available to users who + have the ContentLibrary.ReadStorage privilege. + If not specified the default is :attr:`File.EndpointType.HTTPS`. + :rtype: :class:`File.Info` + :return: File information containing the status of the request and the + download link to the file. + :raise: :class:`com.vmware.vapi.std.errors_client.NotFound` + if the download session does not exist. + :raise: :class:`com.vmware.vapi.std.errors_client.InvalidArgument` + if there is no file with the specified ``file_name``. + :raise: :class:`com.vmware.vapi.std.errors_client.Unauthorized` + if the the download session wasn't created with the + ContentLibrary.ReadStorage privilege and the caller requested a + :attr:`File.EndpointType.DIRECT` endpoint type. + """ + return self._invoke('prepare', + { + 'download_session_id': download_session_id, + 'file_name': file_name, + 'endpoint_type': endpoint_type, + }) +
+
[docs] def get(self, + download_session_id, + file_name, + ): + """ + Retrieves file download information for a specific file. + + :type download_session_id: :class:`str` + :param download_session_id: Identifier of the download session. + The parameter must be an identifier for the resource type: + ``com.vmware.content.library.item.DownloadSession``. + :type file_name: :class:`str` + :param file_name: Name of the file requested. + :rtype: :class:`File.Info` + :return: The :class:`File.Info` instance containing the status of the file + and its download link if available. + :raise: :class:`com.vmware.vapi.std.errors_client.NotFound` + if the download session associated with ``download_session_id`` + does not exist. + :raise: :class:`com.vmware.vapi.std.errors_client.InvalidArgument` + if there is no file with the specified ``file_name``. + :raise: :class:`com.vmware.vapi.std.errors_client.Unauthorized` + if you do not have all of the privileges described as follows: + + * The resource ``com.vmware.content.library.Item`` referenced by + the parameter ``libraryItemId`` requires ``System.Read``. + """ + return self._invoke('get', + { + 'download_session_id': download_session_id, + 'file_name': file_name, + }) +
+class _FileStub(ApiInterfaceStub): + def __init__(self, config): + # properties for list operation + list_input_type = type.StructType('operation-input', { + 'download_session_id': type.IdType(resource_types='com.vmware.content.library.item.DownloadSession'), + }) + list_error_dict = { + 'com.vmware.vapi.std.errors.not_found': + type.ReferenceType(com.vmware.vapi.std.errors_client, 'NotFound'), + + } + list_input_validator_list = [ + ] + list_output_validator_list = [ + ] + + # properties for prepare operation + prepare_input_type = type.StructType('operation-input', { + 'download_session_id': type.IdType(resource_types='com.vmware.content.library.item.DownloadSession'), + 'file_name': type.StringType(), + 'endpoint_type': type.OptionalType(type.ReferenceType(sys.modules[__name__], 'File.EndpointType')), + }) + prepare_error_dict = { + 'com.vmware.vapi.std.errors.not_found': + type.ReferenceType(com.vmware.vapi.std.errors_client, 'NotFound'), + 'com.vmware.vapi.std.errors.invalid_argument': + type.ReferenceType(com.vmware.vapi.std.errors_client, 'InvalidArgument'), + 'com.vmware.vapi.std.errors.unauthorized': + type.ReferenceType(com.vmware.vapi.std.errors_client, 'Unauthorized'), + + } + prepare_input_validator_list = [ + ] + prepare_output_validator_list = [ + ] + + # properties for get operation + get_input_type = type.StructType('operation-input', { + 'download_session_id': type.IdType(resource_types='com.vmware.content.library.item.DownloadSession'), + 'file_name': type.StringType(), + }) + get_error_dict = { + 'com.vmware.vapi.std.errors.not_found': + type.ReferenceType(com.vmware.vapi.std.errors_client, 'NotFound'), + 'com.vmware.vapi.std.errors.invalid_argument': + type.ReferenceType(com.vmware.vapi.std.errors_client, 'InvalidArgument'), + + } + get_input_validator_list = [ + ] + get_output_validator_list = [ + ] + + operations = { + 'list': { + 'input_type': list_input_type, + 'output_type': type.ListType(type.ReferenceType(sys.modules[__name__], 'File.Info')), + 'errors': list_error_dict, + 'input_validator_list': list_input_validator_list, + 'output_validator_list': list_output_validator_list, + }, + 'prepare': { + 'input_type': prepare_input_type, + 'output_type': type.ReferenceType(sys.modules[__name__], 'File.Info'), + 'errors': prepare_error_dict, + 'input_validator_list': prepare_input_validator_list, + 'output_validator_list': prepare_output_validator_list, + }, + 'get': { + 'input_type': get_input_type, + 'output_type': type.ReferenceType(sys.modules[__name__], 'File.Info'), + 'errors': get_error_dict, + 'input_validator_list': get_input_validator_list, + 'output_validator_list': get_output_validator_list, + }, + } + ApiInterfaceStub.__init__(self, iface_name='com.vmware.content.library.item.downloadsession.file', + config=config, + operations=operations) +
+ +
+
+
+
+
+ + +
+
+
+
+ + + + \ No newline at end of file diff --git a/vsphere/6.0/_modules/com/vmware/content/library/item/updatesession_client.html b/vsphere/6.0/_modules/com/vmware/content/library/item/updatesession_client.html new file mode 100644 index 00000000..897f9172 --- /dev/null +++ b/vsphere/6.0/_modules/com/vmware/content/library/item/updatesession_client.html @@ -0,0 +1,735 @@ + + + + + + + + + + com.vmware.content.library.item.updatesession_client — vCloud Suite SDK for Python 6.0.0 documentation + + + + + + + + + + + + + + +
+
+
+
+ +

Source code for com.vmware.content.library.item.updatesession_client

+#---------------------------------------------------------------------------
+# Copyright 2015 VMware, Inc.  All rights reserved.
+
+# AUTO GENERATED FILE -- DO NOT MODIFY!
+#
+# vAPI stub file for package com.vmware.content.library.item.updatesession.
+#---------------------------------------------------------------------------
+
+"""
+The Content Library Item Update Session module provides classes and classes for
+updating files in a session.
+
+"""
+
+__author__ = 'VMware, Inc.'
+__docformat__ = 'restructuredtext en'
+
+import sys
+
+from vmware.vapi.bindings import type
+from vmware.vapi.bindings.converter import TypeConverter
+from vmware.vapi.bindings.enum import Enum
+from vmware.vapi.bindings.error import VapiError
+from vmware.vapi.bindings.struct import VapiStruct
+from vmware.vapi.bindings.stub import VapiInterface, ApiInterfaceStub
+from vmware.vapi.bindings.common import raise_core_exception
+from vmware.vapi.data.validator import UnionValidator, HasFieldsOfValidator
+from vmware.vapi.exception import CoreException
+import com.vmware.content.library.item_client
+import com.vmware.vapi.std_client
+import com.vmware.vapi.std.errors_client
+
+
+
[docs]class File(VapiInterface): + """ + The ``File`` class provides methods for accessing files within an update + session. + + After an update session is created against a library item, the ``File`` + class can be used to make changes to the underlying library item metadata + as well as the content of the files. The following changes can be made: + + * deleting an existing file within the library item. This deletes both the + metadata and the content. + * updating an existing file with new content. + * adding a new file to the library item. + + + + The above changes are not applied or visible until the session is + completed. See + :class:`com.vmware.content.library.item_client.UpdateSession`. + """ + + + def __init__(self, config): + """ + :type config: :class:`vmware.vapi.bindings.stub.StubConfiguration` + :param config: Configuration to be used for creating the stub. + """ + VapiInterface.__init__(self, config, _FileStub) + +
[docs] class SourceType(Enum): + """ + The ``File.SourceType`` class defines how the file content is retrieved. + + .. note:: + This class represents an enumerated type in the interface language + definition. The class contains class attributes which represent the + values in the current version of the enumerated type. Newer versions of + the enumerated type may contain new values. To use new values of the + enumerated type in communication with a server that supports the newer + version of the API, you instantiate this class. See :ref:`enumerated + type description page <enumeration_description>`. + """ + NONE = None + """ + No source type has been requested. + + """ + PUSH = None + """ + The client is uploading content using HTTP(S) PUT requests. + + """ + PULL = None + """ + The server is pulling content from a URL. The URL scheme can be ``http``, + ``https``, ``file``, or ``ds``. + + """ + + def __init__(self, string): + """ + :type string: :class:`str` + :param string: String value for the :class:`SourceType` instance. + """ + Enum.__init__(string) +
+ SourceType.NONE = SourceType('NONE') + SourceType.PUSH = SourceType('PUSH') + SourceType.PULL = SourceType('PULL') + SourceType._set_binding_type(type.EnumType( + 'com.vmware.content.library.item.updatesession.file.source_type', + SourceType)) + +
[docs] class AddSpec(VapiStruct): + """ + The ``File.AddSpec`` class describes the properties of the file to be + uploaded. + + .. tip:: + The arguments are used to initialize data attributes with the same + names. + """ + + _validator_list = [ + UnionValidator( + 'source_type', + { + 'PULL' : [('source_endpoint', True)], + 'NONE' : [], + 'PUSH' : [], + } + ), + ] + + + def __init__(self, + name=None, + source_type=None, + source_endpoint=None, + size=None, + checksum_info=None, + ): + """ + :type name: :class:`str` + :param name: The name of the file being uploaded. + :type source_type: :class:`File.SourceType` + :param source_type: The source type (NONE, PUSH, PULL) from which the file content will + be retrieved. + :type source_endpoint: :class:`com.vmware.content.library.item_client.TransferEndpoint` + :param source_endpoint: Location from which the Content Library Service will fetch the + file, rather than requiring a client to upload the file. + This attribute is optional and it is only relevant when the value + of ``sourceType`` is :attr:`File.SourceType.PULL`. + :type size: :class:`long` or ``None`` + :param size: The file size, in bytes. + If specified the server will verify it received the correct size. + :type checksum_info: :class:`com.vmware.content.library.item_client.File.ChecksumInfo` or ``None`` + :param checksum_info: The checksum of the file. If specified, the server will verify the + checksum once the file is received. If there is a mismatch, the + upload will fail. + If not specified the server does not verify the checksum. + """ + self.name = name + self.source_type = source_type + self.source_endpoint = source_endpoint + self.size = size + self.checksum_info = checksum_info + VapiStruct.__init__(self) +
+ AddSpec._set_binding_type(type.StructType( + 'com.vmware.content.library.item.updatesession.file.add_spec', { + 'name': type.StringType(), + 'source_type': type.ReferenceType(sys.modules[__name__], 'File.SourceType'), + 'source_endpoint': type.OptionalType(type.ReferenceType(com.vmware.content.library.item_client, 'TransferEndpoint')), + 'size': type.OptionalType(type.IntegerType()), + 'checksum_info': type.OptionalType(type.ReferenceType(com.vmware.content.library.item_client, 'File.ChecksumInfo')), + }, + AddSpec, + False, + None)) + +
[docs] class Info(VapiStruct): + """ + The ``File.Info`` class defines the uploaded file. + + .. tip:: + The arguments are used to initialize data attributes with the same + names. + """ + + _validator_list = [ + UnionValidator( + 'source_type', + { + 'PULL' : [('source_endpoint', True)], + 'PUSH' : [('upload_endpoint', True)], + 'NONE' : [], + } + ), + ] + + + def __init__(self, + name=None, + source_type=None, + size=None, + checksum_info=None, + source_endpoint=None, + upload_endpoint=None, + bytes_transferred=None, + status=None, + error_message=None, + ): + """ + :type name: :class:`str` + :param name: The name of the file. + :type source_type: :class:`File.SourceType` + :param source_type: The source type (NONE, PUSH, PULL) from which the file is being + retrieved. This may be :attr:`File.SourceType.NONE` if the file is + not being changed. + :type size: :class:`long` or ``None`` + :param size: The file size, in bytes as received by the server. This attribute + is guaranteed to be set when the server has completely received the + file. + This attribute won't be set until the file status is + :attr:`com.vmware.content.library.item_client.TransferStatus.READY`. + :type checksum_info: :class:`com.vmware.content.library.item_client.File.ChecksumInfo` or ``None`` + :param checksum_info: The checksum information of the file received by the server. + If not specified the server does not verify the checksum. + :type source_endpoint: :class:`com.vmware.content.library.item_client.TransferEndpoint` + :param source_endpoint: A source endpoint from which to retrieve the file. + This attribute is optional and it is only relevant when the value + of ``sourceType`` is :attr:`File.SourceType.PULL`. + :type upload_endpoint: :class:`com.vmware.content.library.item_client.TransferEndpoint` + :param upload_endpoint: An upload endpoint to which the client can push the content. + This attribute is optional and it is only relevant when the value + of ``sourceType`` is :attr:`File.SourceType.PUSH`. + :type bytes_transferred: :class:`long` + :param bytes_transferred: The number of bytes of this file that have been received by the + server. + :type status: :class:`com.vmware.content.library.item_client.TransferStatus` + :param status: The transfer status (WAITING_FOR_TRANSFER, TRANSFERRING, READY, + VALIDATING, ERROR) of this file. + :type error_message: :class:`com.vmware.vapi.std_client.LocalizableMessage` or ``None`` + :param error_message: Details about the transfer error. + An error message is set if the status is + :attr:`com.vmware.content.library.item_client.TransferStatus.ERROR`. + """ + self.name = name + self.source_type = source_type + self.size = size + self.checksum_info = checksum_info + self.source_endpoint = source_endpoint + self.upload_endpoint = upload_endpoint + self.bytes_transferred = bytes_transferred + self.status = status + self.error_message = error_message + VapiStruct.__init__(self) +
+ Info._set_binding_type(type.StructType( + 'com.vmware.content.library.item.updatesession.file.info', { + 'name': type.StringType(), + 'source_type': type.ReferenceType(sys.modules[__name__], 'File.SourceType'), + 'size': type.OptionalType(type.IntegerType()), + 'checksum_info': type.OptionalType(type.ReferenceType(com.vmware.content.library.item_client, 'File.ChecksumInfo')), + 'source_endpoint': type.OptionalType(type.ReferenceType(com.vmware.content.library.item_client, 'TransferEndpoint')), + 'upload_endpoint': type.OptionalType(type.ReferenceType(com.vmware.content.library.item_client, 'TransferEndpoint')), + 'bytes_transferred': type.IntegerType(), + 'status': type.ReferenceType(com.vmware.content.library.item_client, 'TransferStatus'), + 'error_message': type.OptionalType(type.ReferenceType(com.vmware.vapi.std_client, 'LocalizableMessage')), + }, + Info, + False, + None)) + +
[docs] class ValidationError(VapiStruct): + """ + The ``File.ValidationError`` class defines the validation error of a file + in the session. + + .. tip:: + The arguments are used to initialize data attributes with the same + names. + """ + + + + def __init__(self, + name=None, + error_message=None, + ): + """ + :type name: :class:`str` + :param name: The name of the file. + :type error_message: :class:`com.vmware.vapi.std_client.LocalizableMessage` + :param error_message: A message indicating why the file was considered invalid. + """ + self.name = name + self.error_message = error_message + VapiStruct.__init__(self) +
+ ValidationError._set_binding_type(type.StructType( + 'com.vmware.content.library.item.updatesession.file.validation_error', { + 'name': type.StringType(), + 'error_message': type.ReferenceType(com.vmware.vapi.std_client, 'LocalizableMessage'), + }, + ValidationError, + False, + None)) + +
[docs] class ValidationResult(VapiStruct): + """ + The ``File.ValidationResult`` class defines the result of validating the + files in the session. + + .. tip:: + The arguments are used to initialize data attributes with the same + names. + """ + + + + def __init__(self, + has_errors=None, + missing_files=None, + invalid_files=None, + ): + """ + :type has_errors: :class:`bool` + :param has_errors: Whether the validation was succesful or not. In case of errors, the + :attr:`File.ValidationResult.missing_files` and + :attr:`File.ValidationResult.invalid_files` will contain at least + one entry. + :type missing_files: :class:`set` of :class:`str` + :param missing_files: A :class:`set` containing the names of the files that are required + but the client hasn't added. + :type invalid_files: :class:`list` of :class:`File.ValidationError` + :param invalid_files: A :class:`list` containing the files that have been identified as + invalid and details about the error. + """ + self.has_errors = has_errors + self.missing_files = missing_files + self.invalid_files = invalid_files + VapiStruct.__init__(self) +
+ ValidationResult._set_binding_type(type.StructType( + 'com.vmware.content.library.item.updatesession.file.validation_result', { + 'has_errors': type.BooleanType(), + 'missing_files': type.SetType(type.StringType()), + 'invalid_files': type.ListType(type.ReferenceType(sys.modules[__name__], 'File.ValidationError')), + }, + ValidationResult, + False, + None)) + + +
[docs] def validate(self, + update_session_id, + ): + """ + Validates the files in the update session with the referenced + identifier and ensures all necessary files are received. In the case + where a file is missing, this method will return its name in the + :attr:`File.ValidationResult.missing_files` set. The user can add the + missing files and try re-validating. For other type of errors, + :attr:`File.ValidationResult.invalid_files` will contain the list of + invalid files. + + :type update_session_id: :class:`str` + :param update_session_id: Identifier of the update session to validate. + The parameter must be an identifier for the resource type: + ``com.vmware.content.library.item.UpdateSession``. + :rtype: :class:`File.ValidationResult` + :return: A validation result containing missing files or invalid files and + the reason why they are invalid. + :raise: :class:`com.vmware.vapi.std.errors_client.NotFound` + if no update session with the given identifier exists. + :raise: :class:`com.vmware.vapi.std.errors_client.NotAllowedInCurrentState` + if the update session is not in the + :attr:`com.vmware.content.library.item_client.UpdateSessionModel.State.ACTIVE` + state, or if some of the files that will be uploaded by the client + aren't received correctly. + """ + return self._invoke('validate', + { + 'update_session_id': update_session_id, + }) +
+
[docs] def add(self, + update_session_id, + file_spec, + ): + """ + Requests file content to be changed (either created, or updated). + Depending on the source type of the file, this method will either + return an upload endpoint where the client can push the content, or the + server will pull from the provided source endpoint. If a file with the + same name already exists in this session, this method will be used to + update the content of the existing file. + + When importing a file directly from storage, where the source endpoint + is a file or datastore URI, you will need to have the + ContentLibrary.ReadStorage privilege on the library item. If the file + is located in the same directory as the library storage backing folder, + the server will move the file instead of copying it, thereby allowing + instantaneous import of files for efficient backup and restore + scenarios. In all other cases, a copy is performed rather than a move. + + :type update_session_id: :class:`str` + :param update_session_id: Identifier of the update session to be modified. + The parameter must be an identifier for the resource type: + ``com.vmware.content.library.item.UpdateSession``. + :type file_spec: :class:`File.AddSpec` + :param file_spec: Specification for the file that needs to be added or updated. This + includes whether the client wants to push the content or have the + server pull it. + :rtype: :class:`File.Info` + :return: An :class:`File.Info` class containing upload links as well as + server side state tracking the transfer of the file. + :raise: :class:`com.vmware.vapi.std.errors_client.InvalidArgument` + if the ``file_spec`` is invalid. + :raise: :class:`com.vmware.vapi.std.errors_client.NotFound` + if the update session doesn't exist. + :raise: :class:`com.vmware.vapi.std.errors_client.Unauthorized` + if the caller doesn't have ContentLibrary.ReadStorage privilege on + the library item of the update session and source type + :attr:`File.SourceType.PULL` is requested for a file or datastore + source endpoint (that is, not HTTP or HTTPs based endpoint). + """ + return self._invoke('add', + { + 'update_session_id': update_session_id, + 'file_spec': file_spec, + }) +
+
[docs] def remove(self, + update_session_id, + file_name, + ): + """ + Requests a file to be removed. The file will only be effectively + removed when the update session is completed. + + :type update_session_id: :class:`str` + :param update_session_id: Identifier of the update session. + The parameter must be an identifier for the resource type: + ``com.vmware.content.library.item.UpdateSession``. + :type file_name: :class:`str` + :param file_name: Name of the file to be removed. + :raise: :class:`com.vmware.vapi.std.errors_client.NotFound` + if the update session doesn't exist. + :raise: :class:`com.vmware.vapi.std.errors_client.InvalidArgument` + if the file doesn't exist in the library item associated with the + update session. + """ + return self._invoke('remove', + { + 'update_session_id': update_session_id, + 'file_name': file_name, + }) +
+
[docs] def list(self, + update_session_id, + ): + """ + Lists all files in the library item associated with the update session. + + :type update_session_id: :class:`str` + :param update_session_id: Identifier of the update session. + The parameter must be an identifier for the resource type: + ``com.vmware.content.library.item.UpdateSession``. + :rtype: :class:`list` of :class:`File.Info` + :return: The :class:`list` of the files in the library item associated with + the update session. This :class:`list` may be empty if the caller + has removed all the files as part of this session (in which case + completing the update session will result in an empty library + item). + :raise: :class:`com.vmware.vapi.std.errors_client.NotFound` + if the update session doesn't exist. + :raise: :class:`com.vmware.vapi.std.errors_client.Unauthorized` + if you do not have all of the privileges described as follows: + + * The resource ``com.vmware.content.library.Item`` referenced by + the parameter ``libraryItemId`` requires ``System.Read``. + """ + return self._invoke('list', + { + 'update_session_id': update_session_id, + }) +
+
[docs] def get(self, + update_session_id, + file_name, + ): + """ + Retrieves information about a specific file in the snapshot of the + library item at the time when the update session was created. + + :type update_session_id: :class:`str` + :param update_session_id: Identifier of the update session. + The parameter must be an identifier for the resource type: + ``com.vmware.content.library.item.UpdateSession``. + :type file_name: :class:`str` + :param file_name: Name of the file. + :rtype: :class:`File.Info` + :return: Information about the file. + :raise: :class:`com.vmware.vapi.std.errors_client.NotFound` + if the update session doesn't exist. + :raise: :class:`com.vmware.vapi.std.errors_client.InvalidArgument` + if the file doesn't exist in the library item associated with the + update session. + :raise: :class:`com.vmware.vapi.std.errors_client.Unauthorized` + if you do not have all of the privileges described as follows: + + * The resource ``com.vmware.content.library.Item`` referenced by + the parameter ``libraryItemId`` requires ``System.Read``. + """ + return self._invoke('get', + { + 'update_session_id': update_session_id, + 'file_name': file_name, + }) +
+class _FileStub(ApiInterfaceStub): + def __init__(self, config): + # properties for validate operation + validate_input_type = type.StructType('operation-input', { + 'update_session_id': type.IdType(resource_types='com.vmware.content.library.item.UpdateSession'), + }) + validate_error_dict = { + 'com.vmware.vapi.std.errors.not_found': + type.ReferenceType(com.vmware.vapi.std.errors_client, 'NotFound'), + 'com.vmware.vapi.std.errors.not_allowed_in_current_state': + type.ReferenceType(com.vmware.vapi.std.errors_client, 'NotAllowedInCurrentState'), + + } + validate_input_validator_list = [ + ] + validate_output_validator_list = [ + ] + + # properties for add operation + add_input_type = type.StructType('operation-input', { + 'update_session_id': type.IdType(resource_types='com.vmware.content.library.item.UpdateSession'), + 'file_spec': type.ReferenceType(sys.modules[__name__], 'File.AddSpec'), + }) + add_error_dict = { + 'com.vmware.vapi.std.errors.invalid_argument': + type.ReferenceType(com.vmware.vapi.std.errors_client, 'InvalidArgument'), + 'com.vmware.vapi.std.errors.not_found': + type.ReferenceType(com.vmware.vapi.std.errors_client, 'NotFound'), + 'com.vmware.vapi.std.errors.unauthorized': + type.ReferenceType(com.vmware.vapi.std.errors_client, 'Unauthorized'), + + } + add_input_validator_list = [ + ] + add_output_validator_list = [ + ] + + # properties for remove operation + remove_input_type = type.StructType('operation-input', { + 'update_session_id': type.IdType(resource_types='com.vmware.content.library.item.UpdateSession'), + 'file_name': type.StringType(), + }) + remove_error_dict = { + 'com.vmware.vapi.std.errors.not_found': + type.ReferenceType(com.vmware.vapi.std.errors_client, 'NotFound'), + 'com.vmware.vapi.std.errors.invalid_argument': + type.ReferenceType(com.vmware.vapi.std.errors_client, 'InvalidArgument'), + + } + remove_input_validator_list = [ + ] + remove_output_validator_list = [ + ] + + # properties for list operation + list_input_type = type.StructType('operation-input', { + 'update_session_id': type.IdType(resource_types='com.vmware.content.library.item.UpdateSession'), + }) + list_error_dict = { + 'com.vmware.vapi.std.errors.not_found': + type.ReferenceType(com.vmware.vapi.std.errors_client, 'NotFound'), + + } + list_input_validator_list = [ + ] + list_output_validator_list = [ + ] + + # properties for get operation + get_input_type = type.StructType('operation-input', { + 'update_session_id': type.IdType(resource_types='com.vmware.content.library.item.UpdateSession'), + 'file_name': type.StringType(), + }) + get_error_dict = { + 'com.vmware.vapi.std.errors.not_found': + type.ReferenceType(com.vmware.vapi.std.errors_client, 'NotFound'), + 'com.vmware.vapi.std.errors.invalid_argument': + type.ReferenceType(com.vmware.vapi.std.errors_client, 'InvalidArgument'), + + } + get_input_validator_list = [ + ] + get_output_validator_list = [ + ] + + operations = { + 'validate': { + 'input_type': validate_input_type, + 'output_type': type.ReferenceType(sys.modules[__name__], 'File.ValidationResult'), + 'errors': validate_error_dict, + 'input_validator_list': validate_input_validator_list, + 'output_validator_list': validate_output_validator_list, + }, + 'add': { + 'input_type': add_input_type, + 'output_type': type.ReferenceType(sys.modules[__name__], 'File.Info'), + 'errors': add_error_dict, + 'input_validator_list': add_input_validator_list, + 'output_validator_list': add_output_validator_list, + }, + 'remove': { + 'input_type': remove_input_type, + 'output_type': type.VoidType(), + 'errors': remove_error_dict, + 'input_validator_list': remove_input_validator_list, + 'output_validator_list': remove_output_validator_list, + }, + 'list': { + 'input_type': list_input_type, + 'output_type': type.ListType(type.ReferenceType(sys.modules[__name__], 'File.Info')), + 'errors': list_error_dict, + 'input_validator_list': list_input_validator_list, + 'output_validator_list': list_output_validator_list, + }, + 'get': { + 'input_type': get_input_type, + 'output_type': type.ReferenceType(sys.modules[__name__], 'File.Info'), + 'errors': get_error_dict, + 'input_validator_list': get_input_validator_list, + 'output_validator_list': get_output_validator_list, + }, + } + ApiInterfaceStub.__init__(self, iface_name='com.vmware.content.library.item.updatesession.file', + config=config, + operations=operations) +
+ +
+
+
+
+
+ + +
+
+
+
+ + + + \ No newline at end of file diff --git a/vsphere/6.0/_modules/com/vmware/content/library/item_client.html b/vsphere/6.0/_modules/com/vmware/content/library/item_client.html new file mode 100644 index 00000000..2618934d --- /dev/null +++ b/vsphere/6.0/_modules/com/vmware/content/library/item_client.html @@ -0,0 +1,1977 @@ + + + + + + + + + + com.vmware.content.library.item_client — vCloud Suite SDK for Python 6.0.0 documentation + + + + + + + + + + + + + + +
+
+
+
+ +

Source code for com.vmware.content.library.item_client

+#---------------------------------------------------------------------------
+# Copyright 2015 VMware, Inc.  All rights reserved.
+
+# AUTO GENERATED FILE -- DO NOT MODIFY!
+#
+# vAPI stub file for package com.vmware.content.library.item.
+#---------------------------------------------------------------------------
+
+"""
+The Content Library Item module provides classes and classes for managing files
+in a library item.
+
+"""
+
+__author__ = 'VMware, Inc.'
+__docformat__ = 'restructuredtext en'
+
+import sys
+
+from vmware.vapi.bindings import type
+from vmware.vapi.bindings.converter import TypeConverter
+from vmware.vapi.bindings.enum import Enum
+from vmware.vapi.bindings.error import VapiError
+from vmware.vapi.bindings.struct import VapiStruct
+from vmware.vapi.bindings.stub import VapiInterface, ApiInterfaceStub
+from vmware.vapi.bindings.common import raise_core_exception
+from vmware.vapi.data.validator import UnionValidator, HasFieldsOfValidator
+from vmware.vapi.exception import CoreException
+import com.vmware.vapi.std.errors_client
+import com.vmware.content.library_client
+import com.vmware.vapi.std_client
+
+
[docs]class TransferStatus(Enum): + """ + The ``TransferStatus`` class defines the transfer state of a file. + + .. note:: + This class represents an enumerated type in the interface language + definition. The class contains class attributes which represent the + values in the current version of the enumerated type. Newer versions of + the enumerated type may contain new values. To use new values of the + enumerated type in communication with a server that supports the newer + version of the API, you instantiate this class. See :ref:`enumerated + type description page <enumeration_description>`. + """ + WAITING_FOR_TRANSFER = None + """ + Indicates that a file has been defined for a library item and its content + needs to be uploaded. + + """ + TRANSFERRING = None + """ + Indicates that data is being transferred to the file. + + """ + READY = None + """ + Indicates that the file has been fully transferred and is ready to be used. + + """ + VALIDATING = None + """ + Indicates that the file is being validated (checksum, type adapters). + + """ + ERROR = None + """ + Indicates that there was an error transferring or validating the file. + + """ + + def __init__(self, string): + """ + :type string: :class:`str` + :param string: String value for the :class:`TransferStatus` instance. + """ + Enum.__init__(string) +
+TransferStatus.WAITING_FOR_TRANSFER = TransferStatus('WAITING_FOR_TRANSFER') +TransferStatus.TRANSFERRING = TransferStatus('TRANSFERRING') +TransferStatus.READY = TransferStatus('READY') +TransferStatus.VALIDATING = TransferStatus('VALIDATING') +TransferStatus.ERROR = TransferStatus('ERROR') +TransferStatus._set_binding_type(type.EnumType( + 'com.vmware.content.library.item.transfer_status', + TransferStatus)) + + + + +
[docs]class DownloadSessionModel(VapiStruct): + """ + The ``DownloadSessionModel`` class provides information on an active + :class:`DownloadSession` resource. + + .. tip:: + The arguments are used to initialize data attributes with the same + names. + """ + + + + def __init__(self, + id=None, + library_item_id=None, + library_item_content_version=None, + error_message=None, + client_progress=None, + state=None, + expiration_time=None, + ): + """ + :type id: :class:`str` + :param id: The identifier of this download session. + When clients pass a value of this class as a parameter, the + attribute must be an identifier for the resource type: + ``com.vmware.content.library.item.DownloadSession``. When methods + return a value of this class as a return value, the attribute will + be an identifier for the resource type: + ``com.vmware.content.library.item.DownloadSession``. + This attribute is not used for the ``create`` method. It will not + be present in the return value of the ``get`` or ``list`` methods. + It is not used for the ``update`` method. + :type library_item_id: :class:`str` + :param library_item_id: The identifier of the library item whose content is being + downloaded. + When clients pass a value of this class as a parameter, the + attribute must be an identifier for the resource type: + ``com.vmware.content.library.Item``. When methods return a value of + this class as a return value, the attribute will be an identifier + for the resource type: ``com.vmware.content.library.Item``. + This attribute must be provided for the ``create`` method. It will + always be present in the return value of the ``get`` or ``list`` + methods. It is not used for the ``update`` method. + :type library_item_content_version: :class:`str` + :param library_item_content_version: The content version of the library item whose content is being + downloaded. This value is the + :attr:`com.vmware.content.library_client.ItemModel.content_version` + at the time when the session is created for the library item. + This attribute is not used for the ``create`` method. It will + always be present in the return value of the ``get`` or ``list`` + methods. It is not used for the ``update`` method. + :type error_message: :class:`com.vmware.vapi.std_client.LocalizableMessage` + :param error_message: If the session is in the :attr:`DownloadSessionModel.State.ERROR` + status this property will have more details about the error. + This attribute is not used for the ``create`` method. It is + optional in the return value of the ``get`` or ``list`` methods. It + is not used for the ``update`` method. + :type client_progress: :class:`long` + :param client_progress: The progress that has been made with the download. This property is + to be updated by the client during the download process to indicate + the progress of its work in completing the download. The initial + progress is 0 until updated by the client. The maximum value is + 100, which indicates that the download is complete. + This attribute is not used for the ``create`` method. It will + always be present in the return value of the ``get`` or ``list`` + methods. It is optional for the ``update`` method. + :type state: :class:`DownloadSessionModel.State` + :param state: The current state (ACTIVE, CANCELED, ERROR) of the download + session. + This attribute is not used for the ``create`` method. It will + always be present in the return value of the ``get`` or ``list`` + methods. It is not used for the ``update`` method. + :type expiration_time: :class:`datetime.datetime` + :param expiration_time: Indicates the time after which the session will expire. The session + is guaranteed not to expire before this time. + This attribute is not used for the ``create`` method. It will + always be present in the return value of the ``get`` or ``list`` + methods. It is not used for the ``update`` method. + """ + self.id = id + self.library_item_id = library_item_id + self.library_item_content_version = library_item_content_version + self.error_message = error_message + self.client_progress = client_progress + self.state = state + self.expiration_time = expiration_time + VapiStruct.__init__(self) + +
[docs] class State(Enum): + """ + The state of the download session. + + .. note:: + This class represents an enumerated type in the interface language + definition. The class contains class attributes which represent the + values in the current version of the enumerated type. Newer versions of + the enumerated type may contain new values. To use new values of the + enumerated type in communication with a server that supports the newer + version of the API, you instantiate this class. See :ref:`enumerated + type description page <enumeration_description>`. + """ + ACTIVE = None + """ + The session is active. Individual files may be in the process of being + transferred and may become ready for download at different times. + + """ + CANCELED = None + """ + The session has been canceled. On-going downloads may fail. The session + will stay in this state until it is either deleted by the user or + automatically cleaned up by the Content Library Service. + + """ + ERROR = None + """ + Indicates there was an error during the session lifecycle. + + """ + + def __init__(self, string): + """ + :type string: :class:`str` + :param string: String value for the :class:`State` instance. + """ + Enum.__init__(string) +
+ State.ACTIVE = State('ACTIVE') + State.CANCELED = State('CANCELED') + State.ERROR = State('ERROR') + State._set_binding_type(type.EnumType( + 'com.vmware.content.library.item.download_session_model.state', + State))
+DownloadSessionModel._set_binding_type(type.StructType( + 'com.vmware.content.library.item.download_session_model', { + 'id': type.OptionalType(type.IdType()), + 'library_item_id': type.OptionalType(type.IdType()), + 'library_item_content_version': type.OptionalType(type.StringType()), + 'error_message': type.OptionalType(type.ReferenceType(com.vmware.vapi.std_client, 'LocalizableMessage')), + 'client_progress': type.OptionalType(type.IntegerType()), + 'state': type.OptionalType(type.ReferenceType(sys.modules[__name__], 'DownloadSessionModel.State')), + 'expiration_time': type.OptionalType(type.DateTimeType()), + }, + DownloadSessionModel, + True, + ["id"])) + + + +
[docs]class TransferEndpoint(VapiStruct): + """ + The ``TransferEndpoint`` class encapsulates a URI along with extra + information about it. + + .. tip:: + The arguments are used to initialize data attributes with the same + names. + """ + + + + def __init__(self, + uri=None, + ssl_certificate_thumbprint=None, + ): + """ + :type uri: :class:`str` + :param uri: Transfer endpoint URI. The supported URI schemes are: ``http``, + ``https``, ``file``, and ``ds``. + + An endpoint URI with the ``ds`` scheme specifies the location of + the file on the datastore. The format of the datastore URI is: + + * ds:///vmfs/volumes/uuid/path + + + + Some examples of valid file URI formats are: + + * file:///path + * file:///C:/path + * file://unc-server/path + + + + When the transfer endpoint is a file or datastore location, the + server can import the file directly from the storage backing + without the overhead of streaming over HTTP. + :type ssl_certificate_thumbprint: :class:`str` or ``None`` + :param ssl_certificate_thumbprint: Thumbprint of the expected SSL certificate for this endpoint. Only + used for HTTPS connections. The thumbprint is the SHA-1 hash of the + DER encoding of the remote endpoint's SSL certificate. If set, the + remote endpoint's SSL certificate is only accepted if it matches + this thumbprint, and no other certificate validation is performed. + If not specified, standard certificate validation is performed. + """ + self.uri = uri + self.ssl_certificate_thumbprint = ssl_certificate_thumbprint + VapiStruct.__init__(self) +
+TransferEndpoint._set_binding_type(type.StructType( + 'com.vmware.content.library.item.transfer_endpoint', { + 'uri': type.URIType(), + 'ssl_certificate_thumbprint': type.OptionalType(type.StringType()), + }, + TransferEndpoint, + False, + None)) + + + +
[docs]class UpdateSessionModel(VapiStruct): + """ + The ``UpdateSessionModel`` class provides information on an active + :class:`UpdateSession` resource. + + .. tip:: + The arguments are used to initialize data attributes with the same + names. + """ + + + + def __init__(self, + id=None, + library_item_id=None, + library_item_content_version=None, + error_message=None, + client_progress=None, + state=None, + expiration_time=None, + ): + """ + :type id: :class:`str` + :param id: The identifier of this update session. + When clients pass a value of this class as a parameter, the + attribute must be an identifier for the resource type: + ``com.vmware.content.library.item.UpdateSession``. When methods + return a value of this class as a return value, the attribute will + be an identifier for the resource type: + ``com.vmware.content.library.item.UpdateSession``. + This attribute is not used for the ``create`` method. It will not + be present in the return value of the ``get`` or ``list`` methods. + It is not used for the ``update`` method. + :type library_item_id: :class:`str` + :param library_item_id: The identifier of the library item to which content will be + uploaded or removed. + When clients pass a value of this class as a parameter, the + attribute must be an identifier for the resource type: + ``com.vmware.content.library.Item``. When methods return a value of + this class as a return value, the attribute will be an identifier + for the resource type: ``com.vmware.content.library.Item``. + This attribute must be provided for the ``create`` method. It will + always be present in the return value of the ``get`` or ``list`` + methods. It is not used for the ``update`` method. + :type library_item_content_version: :class:`str` + :param library_item_content_version: The content version of the library item whose content is being + modified. This value is the + :attr:`com.vmware.content.library_client.ItemModel.content_version` + at the time when the session is created for the library item. + This attribute is not used for the ``create`` method. It will + always be present in the return value of the ``get`` or ``list`` + methods. It is not used for the ``update`` method. + :type error_message: :class:`com.vmware.vapi.std_client.LocalizableMessage` + :param error_message: If the session is in the :attr:`UpdateSessionModel.State.ERROR` + status this property will have more details about the error. + This attribute is not used for the ``create`` method. It is + optional in the return value of the ``get`` or ``list`` methods. It + is not used for the ``update`` method. + :type client_progress: :class:`long` + :param client_progress: The progress that has been made with the upload. This property is + to be updated by the client during the upload process to indicate + the progress of its work in completing the upload. The initial + progress is 0 until updated by the client. The maximum value is + 100, which indicates that the update is complete. + This attribute is not used for the ``create`` method. It will + always be present in the return value of the ``get`` or ``list`` + methods. It is not used for the ``update`` method. + :type state: :class:`UpdateSessionModel.State` + :param state: The current state (ACTIVE, DONE, ERROR, CANCELED) of the update + session. + This attribute is not used for the ``create`` method. It will + always be present in the return value of the ``get`` or ``list`` + methods. It is not used for the ``update`` method. + :type expiration_time: :class:`datetime.datetime` + :param expiration_time: Indicates the time after which the session will expire. The session + is guaranteed not to expire earlier than this time. + This attribute is not used for the ``create`` method. It will + always be present in the return value of the ``get`` or ``list`` + methods. It is not used for the ``update`` method. + """ + self.id = id + self.library_item_id = library_item_id + self.library_item_content_version = library_item_content_version + self.error_message = error_message + self.client_progress = client_progress + self.state = state + self.expiration_time = expiration_time + VapiStruct.__init__(self) + +
[docs] class State(Enum): + """ + The state of an update session. + + .. note:: + This class represents an enumerated type in the interface language + definition. The class contains class attributes which represent the + values in the current version of the enumerated type. Newer versions of + the enumerated type may contain new values. To use new values of the + enumerated type in communication with a server that supports the newer + version of the API, you instantiate this class. See :ref:`enumerated + type description page <enumeration_description>`. + """ + ACTIVE = None + """ + The session is currently active. This is the initial state when the session + is created. Files may be uploaded by the client or pulled by the Content + Library Service at this stage. + + """ + DONE = None + """ + The session is done and all its effects are now visible. + + """ + ERROR = None + """ + There was an error during the session. + + """ + CANCELED = None + """ + The session has been canceled. + + """ + + def __init__(self, string): + """ + :type string: :class:`str` + :param string: String value for the :class:`State` instance. + """ + Enum.__init__(string) +
+ State.ACTIVE = State('ACTIVE') + State.DONE = State('DONE') + State.ERROR = State('ERROR') + State.CANCELED = State('CANCELED') + State._set_binding_type(type.EnumType( + 'com.vmware.content.library.item.update_session_model.state', + State))
+UpdateSessionModel._set_binding_type(type.StructType( + 'com.vmware.content.library.item.update_session_model', { + 'id': type.OptionalType(type.IdType()), + 'library_item_id': type.OptionalType(type.IdType()), + 'library_item_content_version': type.OptionalType(type.StringType()), + 'error_message': type.OptionalType(type.ReferenceType(com.vmware.vapi.std_client, 'LocalizableMessage')), + 'client_progress': type.OptionalType(type.IntegerType()), + 'state': type.OptionalType(type.ReferenceType(sys.modules[__name__], 'UpdateSessionModel.State')), + 'expiration_time': type.OptionalType(type.DateTimeType()), + }, + UpdateSessionModel, + True, + ["id"])) + + + +
[docs]class DownloadSession(VapiInterface): + """ + The ``DownloadSession`` class manipulates download sessions, which are used + to download content from the Content Library Service. + + A download session is an object that tracks the download of content (that + is, downloading content from the Content Library Service) and acts as a + lease to keep the download links available. + + The :class:`com.vmware.content.library.item.downloadsession_client.File` + class provides access to the download links. + """ + RESOURCE_TYPE = "com.vmware.content.library.item.DownloadSession" + """ + Resource type for a download session. + + """ + + def __init__(self, config): + """ + :type config: :class:`vmware.vapi.bindings.stub.StubConfiguration` + :param config: Configuration to be used for creating the stub. + """ + VapiInterface.__init__(self, config, _DownloadSessionStub) + + +
[docs] def create(self, + create_spec, + client_token=None, + ): + """ + Creates a new download session. + + :type client_token: :class:`str` or ``None`` + :param client_token: A unique token generated by the client for each creation request. + The token should be a universally unique identifier (UUID), for + example: ``b8a2a2e3-2314-43cd-a871-6ede0f429751``. This token can + be used to guarantee idempotent creation. + If not specified creation is not idempotent. + :type create_spec: :class:`DownloadSessionModel` + :param create_spec: Specification for the new download session to be created. + :rtype: :class:`str` + :return: Identifier of the new download session being created. + The return value will be an identifier for the resource type: + ``com.vmware.content.library.item.DownloadSession``. + :raise: :class:`com.vmware.vapi.std.errors_client.InvalidArgument` + if the session specification is not valid. + :raise: :class:`com.vmware.vapi.std.errors_client.InvalidArgument` + format. + :raise: :class:`com.vmware.vapi.std.errors_client.NotFound` + if the library item targeted by the download does not exist. + :raise: :class:`com.vmware.vapi.std.errors_client.Unauthorized` + if you do not have all of the privileges described as follows: + + * The resource ``com.vmware.content.library.Item`` referenced by + the attribute :attr:`DownloadSessionModel.library_item_id` requires + ``ContentLibrary.DownloadSession``. + """ + return self._invoke('create', + { + 'client_token': client_token, + 'create_spec': create_spec, + }) +
+
[docs] def get(self, + download_session_id, + ): + """ + Gets the download session with the specified identifier, including the + most up-to-date status information for the session. + + :type download_session_id: :class:`str` + :param download_session_id: Identifier of the download session to retrieve. + The parameter must be an identifier for the resource type: + ``com.vmware.content.library.item.DownloadSession``. + :rtype: :class:`DownloadSessionModel` + :return: The :class:`DownloadSessionModel` instance with the given + ``download_session_id``. + :raise: :class:`com.vmware.vapi.std.errors_client.NotFound` + if no download session with the given ``download_session_id`` + exists. + :raise: :class:`com.vmware.vapi.std.errors_client.Unauthorized` + if you do not have all of the privileges described as follows: + + * Method execution requires ``System.Anonymous``. + """ + return self._invoke('get', + { + 'download_session_id': download_session_id, + }) +
+
[docs] def list(self, + library_item_id=None, + ): + """ + Lists the identifiers of the download sessions created by the calling + user. Optionally may filter by library item. + + :type library_item_id: :class:`str` or ``None`` + :param library_item_id: Library item identifier on which to filter results. + The parameter must be an identifier for the resource type: + ``com.vmware.content.library.item.DownloadSession``. + If not specified all download session identifiers are listed. + :rtype: :class:`list` of :class:`str` + :return: The :class:`list` of identifiers of all download sessions created + by the calling user. + The return value will contain identifiers for the resource type: + ``com.vmware.content.library.item.DownloadSession``. + :raise: :class:`com.vmware.vapi.std.errors_client.NotFound` + if a library item identifier is given for an item which does not + exist. + :raise: :class:`com.vmware.vapi.std.errors_client.Unauthorized` + if you do not have all of the privileges described as follows: + + * The resource ``com.vmware.content.library.item.DownloadSession`` + referenced by the parameter ``library_item_id`` requires + ``ContentLibrary.DownloadSession``. + """ + return self._invoke('list', + { + 'library_item_id': library_item_id, + }) +
+
[docs] def keep_alive(self, + download_session_id, + progress=None, + ): + """ + Keeps a download session alive. This operation is allowed only if the + session is in the :attr:`DownloadSessionModel.State.ACTIVE` state. + + If there is no activity for a download session for a certain period of + time, the download session will expire. The download session expiration + timeout is configurable in the Content Library Service system + configuration. The default is five minutes. Invoking this method + enables a client to specifically extend the lifetime of an active + download session. + + :type download_session_id: :class:`str` + :param download_session_id: Identifier of the download session whose lifetime should be + extended. + The parameter must be an identifier for the resource type: + ``com.vmware.content.library.item.DownloadSession``. + :type progress: :class:`long` or ``None`` + :param progress: Optional update to the progress property of the session. If + specified, the new progress should be greater then the current + progress. See :attr:`DownloadSessionModel.client_progress`. + If not specified the progress is not updated. + :raise: :class:`com.vmware.vapi.std.errors_client.NotFound` + if no download session with the given identifier exists. + :raise: :class:`com.vmware.vapi.std.errors_client.NotAllowedInCurrentState` + if the download session is not in the + :attr:`DownloadSessionModel.State.ACTIVE` state. + :raise: :class:`com.vmware.vapi.std.errors_client.Unauthorized` + if you do not have all of the privileges described as follows: + + * Method execution requires ``System.Anonymous``. + """ + return self._invoke('keep_alive', + { + 'download_session_id': download_session_id, + 'progress': progress, + }) +
+
[docs] def cancel(self, + download_session_id, + ): + """ + Cancels the download session. This method will abort any ongoing + transfers and invalidate transfer urls that the client may be + downloading from. + + :type download_session_id: :class:`str` + :param download_session_id: Identifer of the download session that should be canceled. + The parameter must be an identifier for the resource type: + ``com.vmware.content.library.item.DownloadSession``. + :raise: :class:`com.vmware.vapi.std.errors_client.NotFound` + if no download session with the given identifier exists. + :raise: :class:`com.vmware.vapi.std.errors_client.NotAllowedInCurrentState` + if the download session is not in the + :attr:`DownloadSessionModel.State.ACTIVE` state. + :raise: :class:`com.vmware.vapi.std.errors_client.Unauthorized` + if you do not have all of the privileges described as follows: + + * Method execution requires ``System.Anonymous``. + """ + return self._invoke('cancel', + { + 'download_session_id': download_session_id, + }) +
+
[docs] def delete(self, + download_session_id, + ): + """ + Deletes a download session. This removes the session and all + information associated with it. + + Removing a download session leaves any current transfers for that + session in an indeterminate state (there is no guarantee that the + transfers will be able to complete). However there will no longer be a + means of inspecting the status of those downloads except by seeing the + effect on the library item. + + Download sessions for which there is no download activity or which are + complete will automatically be expired and then deleted after a period + of time. + + :type download_session_id: :class:`str` + :param download_session_id: Identifier of the download session to be deleted. + The parameter must be an identifier for the resource type: + ``com.vmware.content.library.item.DownloadSession``. + :raise: :class:`com.vmware.vapi.std.errors_client.NotFound` + if the download session does not exist. + :raise: :class:`com.vmware.vapi.std.errors_client.Unauthorized` + if you do not have all of the privileges described as follows: + + * Method execution requires ``System.Anonymous``. + """ + return self._invoke('delete', + { + 'download_session_id': download_session_id, + }) +
+
[docs] def fail(self, + download_session_id, + client_error_message, + ): + """ + Terminates the download session with a client specified error message. + + This is useful in transmitting client side failures (for example, not + being able to download a file) to the server side. + + :type download_session_id: :class:`str` + :param download_session_id: Identifier of the download session to fail. + The parameter must be an identifier for the resource type: + ``com.vmware.content.library.item.DownloadSession``. + :type client_error_message: :class:`str` + :param client_error_message: Client side error message. This can be useful in providing some + extra details about the client side failure. Note that the message + won't be translated to the user's locale. + :raise: :class:`com.vmware.vapi.std.errors_client.NotFound` + if the download session does not exist. + :raise: :class:`com.vmware.vapi.std.errors_client.NotAllowedInCurrentState` + if the download session is not in the + :attr:`DownloadSessionModel.State.ACTIVE` state. + :raise: :class:`com.vmware.vapi.std.errors_client.Unauthorized` + if you do not have all of the privileges described as follows: + + * Method execution requires ``System.Anonymous``. + """ + return self._invoke('fail', + { + 'download_session_id': download_session_id, + 'client_error_message': client_error_message, + }) +
+
[docs]class File(VapiInterface): + """ + The ``File`` class can be used to query for information on the files within + a library item. Files are objects which are added to a library item through + the :class:`UpdateSession` and + :class:`com.vmware.content.library.item.updatesession_client.File` classes. + """ + + + def __init__(self, config): + """ + :type config: :class:`vmware.vapi.bindings.stub.StubConfiguration` + :param config: Configuration to be used for creating the stub. + """ + VapiInterface.__init__(self, config, _FileStub) + +
[docs] class ChecksumAlgorithm(Enum): + """ + The ``File.ChecksumAlgorithm`` class defines the valid checksum algorithms. + + .. note:: + This class represents an enumerated type in the interface language + definition. The class contains class attributes which represent the + values in the current version of the enumerated type. Newer versions of + the enumerated type may contain new values. To use new values of the + enumerated type in communication with a server that supports the newer + version of the API, you instantiate this class. See :ref:`enumerated + type description page <enumeration_description>`. + """ + SHA1 = None + """ + Checksum algorithm: SHA-1 + + """ + MD5 = None + """ + Checksum algorithm: MD5 + + """ + + def __init__(self, string): + """ + :type string: :class:`str` + :param string: String value for the :class:`ChecksumAlgorithm` instance. + """ + Enum.__init__(string) +
+ ChecksumAlgorithm.SHA1 = ChecksumAlgorithm('SHA1') + ChecksumAlgorithm.MD5 = ChecksumAlgorithm('MD5') + ChecksumAlgorithm._set_binding_type(type.EnumType( + 'com.vmware.content.library.item.file.checksum_algorithm', + ChecksumAlgorithm)) + +
[docs] class ChecksumInfo(VapiStruct): + """ + Provides checksums for a :class:`File.Info` object. + + .. tip:: + The arguments are used to initialize data attributes with the same + names. + """ + + + + def __init__(self, + algorithm=None, + checksum=None, + ): + """ + :type algorithm: :class:`File.ChecksumAlgorithm` or ``None`` + :param algorithm: The checksum algorithm (SHA1, MD5) used to calculate the checksum. + If not specified the default checksum algorithm is + :attr:`File.ChecksumAlgorithm.SHA1`. + :type checksum: :class:`str` + :param checksum: The checksum value calculated with + :attr:`File.ChecksumInfo.algorithm`. + """ + self.algorithm = algorithm + self.checksum = checksum + VapiStruct.__init__(self) +
+ ChecksumInfo._set_binding_type(type.StructType( + 'com.vmware.content.library.item.file.checksum_info', { + 'algorithm': type.OptionalType(type.ReferenceType(sys.modules[__name__], 'File.ChecksumAlgorithm')), + 'checksum': type.StringType(), + }, + ChecksumInfo, + False, + None)) + +
[docs] class Info(VapiStruct): + """ + The ``File.Info`` class provides information about a file in Content + Library Service storage. + + A file is an actual stored object for a library item. An item will have + zero files initially, but one or more can be uploaded to the item. + + .. tip:: + The arguments are used to initialize data attributes with the same + names. + """ + + + + def __init__(self, + checksum_info=None, + name=None, + size=None, + cached=None, + version=None, + ): + """ + :type checksum_info: :class:`File.ChecksumInfo` or ``None`` + :param checksum_info: A checksum for validating the content of the file. + + This value can be used to verify that a transfer was completed + without errors. + A checksum cannot always be calculated, and the value will be None + if the file does not have content. + :type name: :class:`str` + :param name: The name of the file. + + This value will be unique within the library item for each file. It + cannot be an empty string. + :type size: :class:`long` + :param size: The file size, in bytes. The file size is the storage used and not + the uploaded or provisioned size. For example, when uploading a + disk to a datastore, the amount of storage that the disk consumes + may be different from the disk file size. When the file is not + cached, the size is 0. + :type cached: :class:`bool` + :param cached: Indicates whether the file is on disk or not. + :type version: :class:`str` + :param version: The version of this file; incremented when a new copy of the file + is uploaded. + """ + self.checksum_info = checksum_info + self.name = name + self.size = size + self.cached = cached + self.version = version + VapiStruct.__init__(self) +
+ Info._set_binding_type(type.StructType( + 'com.vmware.content.library.item.file.info', { + 'checksum_info': type.OptionalType(type.ReferenceType(sys.modules[__name__], 'File.ChecksumInfo')), + 'name': type.StringType(), + 'size': type.IntegerType(), + 'cached': type.BooleanType(), + 'version': type.StringType(), + }, + Info, + False, + None)) + + +
[docs] def get(self, + library_item_id, + name, + ): + """ + Retrieves the information for a single file in a library item by its + name. + + :type library_item_id: :class:`str` + :param library_item_id: Identifier of the library item whose file information should be + returned. + The parameter must be an identifier for the resource type: + ``com.vmware.content.library.Item``. + :type name: :class:`str` + :param name: Name of the file in the library item whose information should be + returned. + :rtype: :class:`File.Info` + :return: The :class:`File.Info` object with information on the specified + file. + :raise: :class:`com.vmware.vapi.std.errors_client.NotFound` + if ``library_item_id`` refers to a library item that does not + exist. + :raise: :class:`com.vmware.vapi.std.errors_client.NotFound` + if ``name`` refers to a file that does not exist in the library + item. + :raise: :class:`com.vmware.vapi.std.errors_client.Unauthorized` + if you do not have all of the privileges described as follows: + + * The resource ``com.vmware.content.library.Item`` referenced by + the parameter ``library_item_id`` requires ``System.Read``. + """ + return self._invoke('get', + { + 'library_item_id': library_item_id, + 'name': name, + }) +
+
[docs] def list(self, + library_item_id, + ): + """ + Lists all of the files that are stored within a given library item. + + :type library_item_id: :class:`str` + :param library_item_id: Identifier of the library item whose files should be listed. + The parameter must be an identifier for the resource type: + ``com.vmware.content.library.Item``. + :rtype: :class:`list` of :class:`File.Info` + :return: The :class:`list` of all of the files that are stored within the + given library item. + :raise: :class:`com.vmware.vapi.std.errors_client.NotFound` + if ``library_item_id`` refers to a library item that does not + exist. + :raise: :class:`com.vmware.vapi.std.errors_client.Unauthorized` + if you do not have all of the privileges described as follows: + + * The resource ``com.vmware.content.library.Item`` referenced by + the parameter ``library_item_id`` requires ``System.Read``. + """ + return self._invoke('list', + { + 'library_item_id': library_item_id, + }) +
+
[docs]class Storage(VapiInterface): + """ + ``Storage`` is a resource that represents a specific instance of a file + stored on a storage backing. Unlike :class:`File`, which is abstract, + storage represents concrete files on the various storage backings. A file + is only represented once in :class:`File`, but will be represented multiple + times (once for each storage backing) in ``Storage``. The ``Storage`` class + provides information on the storage backing and the specific location of + the file in that backing to privileged users who want direct access to the + file on the storage medium. + """ + + + def __init__(self, config): + """ + :type config: :class:`vmware.vapi.bindings.stub.StubConfiguration` + :param config: Configuration to be used for creating the stub. + """ + VapiInterface.__init__(self, config, _StorageStub) + +
[docs] class Info(VapiStruct): + """ + The ``Storage.Info`` class is the expanded form of :class:`File.Info` that + includes details about the storage backing for a file in a library item. + + .. tip:: + The arguments are used to initialize data attributes with the same + names. + """ + + + + def __init__(self, + storage_backing=None, + storage_uris=None, + checksum_info=None, + name=None, + size=None, + cached=None, + version=None, + ): + """ + :type storage_backing: :class:`com.vmware.content.library_client.StorageBacking` + :param storage_backing: The storage backing on which this object resides. + :type storage_uris: :class:`list` of :class:`str` + :param storage_uris: URIs that identify the file on the storage backing. + + These URIs may be specific to the backing and may need + interpretation by the client. A client that understands a URI + scheme in this list may use that URI to directly access the file on + the storage backing. This can provide high-performance support for + file manipulation. + :type checksum_info: :class:`File.ChecksumInfo` or ``None`` + :param checksum_info: A checksum for validating the content of the file. + + This value can be used to verify that a transfer was completed + without errors. + A checksum cannot always be calculated, and the value will be None + if the file does not have content. + :type name: :class:`str` + :param name: The name of the file. + + This value will be unique within the library item for each file. It + cannot be an empty string. + :type size: :class:`long` + :param size: The file size, in bytes. The file size is the storage used and not + the uploaded or provisioned size. For example, when uploading a + disk to a datastore, the amount of storage that the disk consumes + may be different from the disk file size. When the file is not + cached, the size is 0. + :type cached: :class:`bool` + :param cached: Indicates whether the file is on disk or not. + :type version: :class:`str` + :param version: The version of this file; incremented when a new copy of the file + is uploaded. + """ + self.storage_backing = storage_backing + self.storage_uris = storage_uris + self.checksum_info = checksum_info + self.name = name + self.size = size + self.cached = cached + self.version = version + VapiStruct.__init__(self) +
+ Info._set_binding_type(type.StructType( + 'com.vmware.content.library.item.storage.info', { + 'storage_backing': type.ReferenceType(com.vmware.content.library_client, 'StorageBacking'), + 'storage_uris': type.ListType(type.URIType()), + 'checksum_info': type.OptionalType(type.ReferenceType(sys.modules[__name__], 'File.ChecksumInfo')), + 'name': type.StringType(), + 'size': type.IntegerType(), + 'cached': type.BooleanType(), + 'version': type.StringType(), + }, + Info, + False, + None)) + + +
[docs] def get(self, + library_item_id, + file_name, + ): + """ + Retrieves the storage information for a specific file in a library + item. + + :type library_item_id: :class:`str` + :param library_item_id: Identifier of the library item whose storage information should be + retrieved. + The parameter must be an identifier for the resource type: + ``com.vmware.content.library.Item``. + :type file_name: :class:`str` + :param file_name: Name of the file for which the storage information should be + listed. + :rtype: :class:`list` of :class:`Storage.Info` + :return: The :class:`list` of all the storage items for the given file + within the given library item. + :raise: :class:`com.vmware.vapi.std.errors_client.NotFound` + if the specified library item does not exist. + :raise: :class:`com.vmware.vapi.std.errors_client.NotFound` + if the specified file does not exist in the given library item. + :raise: :class:`com.vmware.vapi.std.errors_client.Unauthorized` + if you do not have all of the privileges described as follows: + + * The resource ``com.vmware.content.library.Item`` referenced by + the parameter ``library_item_id`` requires + ``ContentLibrary.ReadStorage``. + """ + return self._invoke('get', + { + 'library_item_id': library_item_id, + 'file_name': file_name, + }) +
+
[docs] def list(self, + library_item_id, + ): + """ + Lists all storage items for a given library item. + + :type library_item_id: :class:`str` + :param library_item_id: Identifier of the library item whose storage information should be + listed. + The parameter must be an identifier for the resource type: + ``com.vmware.content.library.Item``. + :rtype: :class:`list` of :class:`Storage.Info` + :return: The :class:`list` of all storage items for a given library item. + :raise: :class:`com.vmware.vapi.std.errors_client.NotFound` + if the specified library item does not exist. + :raise: :class:`com.vmware.vapi.std.errors_client.Unauthorized` + if you do not have all of the privileges described as follows: + + * The resource ``com.vmware.content.library.Item`` referenced by + the parameter ``library_item_id`` requires + ``ContentLibrary.ReadStorage``. + """ + return self._invoke('list', + { + 'library_item_id': library_item_id, + }) +
+
[docs]class UpdateSession(VapiInterface): + """ + The ``UpdateSession`` class manipulates sessions that are used to upload + content into the Content Library Service, and/or to remove files from a + library item. + + An update session is a resource which tracks changes to content. An update + session is created with a set of files that are intended to be uploaded to + a specific :class:`com.vmware.content.library_client.ItemModel`, or removed + from an item. The session object can be used to track the uploads and + inspect the changes that are being made to the item by that upload. It can + also serve as a channel to check on the result of the upload, and status + messages such as errors and warnings for the upload. + + Modifications are not visible to other clients unless the session is + completed and all necessary files have been received. + + The management of the files within the session is done through the + :class:`com.vmware.content.library.item.updatesession_client.File` class. + """ + RESOURCE_TYPE = "com.vmware.content.library.item.UpdateSession" + """ + Resource type for an update session. + + """ + + def __init__(self, config): + """ + :type config: :class:`vmware.vapi.bindings.stub.StubConfiguration` + :param config: Configuration to be used for creating the stub. + """ + VapiInterface.__init__(self, config, _UpdateSessionStub) + + +
[docs] def create(self, + create_spec, + client_token=None, + ): + """ + Creates a new update session. An update session is used to make + modifications to a library item. Modifications are not visible to other + clients unless the session is completed and all necessary files have + been received. + + Content Library Service allows only one single update session to be + active for a specific library item. + + :type client_token: :class:`str` or ``None`` + :param client_token: Unique token generated by the client for each creation request. The + token should be a universally unique identifier (UUID), for + example: ``b8a2a2e3-2314-43cd-a871-6ede0f429751``. This token can + be used to guarantee idempotent creation. + If not specified creation is not idempotent. + :type create_spec: :class:`UpdateSessionModel` + :param create_spec: Specification for the new update session to be created. + :rtype: :class:`str` + :return: Identifier of the new update session being created. + The return value will be an identifier for the resource type: + ``com.vmware.content.library.item.UpdateSession``. + :raise: :class:`com.vmware.vapi.std.errors_client.InvalidArgument` + if the session specification is not valid. + :raise: :class:`com.vmware.vapi.std.errors_client.InvalidArgument` + if the ``client_token`` does not conform to the UUID format. + :raise: :class:`com.vmware.vapi.std.errors_client.InvalidElementType` + if the update session is being created on a subscribed library + item. + :raise: :class:`com.vmware.vapi.std.errors_client.NotFound` + if the item targeted for update does not exist. + :raise: :class:`com.vmware.vapi.std.errors_client.ResourceBusy` + if there is another update session on the same library item. + :raise: :class:`com.vmware.vapi.std.errors_client.Unauthorized` + if you do not have all of the privileges described as follows: + + * The resource ``com.vmware.content.library.Item`` referenced by + the attribute :attr:`UpdateSessionModel.library_item_id` requires + ``ContentLibrary.UpdateSession``. + """ + return self._invoke('create', + { + 'client_token': client_token, + 'create_spec': create_spec, + }) +
+
[docs] def get(self, + update_session_id, + ): + """ + Gets the update session with the specified identifier, including the + most up-to-date status information for the session. + + :type update_session_id: :class:`str` + :param update_session_id: Identifier of the update session to retrieve. + The parameter must be an identifier for the resource type: + ``com.vmware.content.library.item.UpdateSession``. + :rtype: :class:`UpdateSessionModel` + :return: The :class:`UpdateSessionModel` instance with the given + ``update_session_id``. + :raise: :class:`com.vmware.vapi.std.errors_client.NotFound` + if no update session with the given identifier exists. + :raise: :class:`com.vmware.vapi.std.errors_client.Unauthorized` + if you do not have all of the privileges described as follows: + + * Method execution requires ``System.Anonymous``. + """ + return self._invoke('get', + { + 'update_session_id': update_session_id, + }) +
+
[docs] def list(self, + library_item_id=None, + ): + """ + Lists the identifiers of the update session created by the calling + user. Optionally may filter by library item. + + :type library_item_id: :class:`str` or ``None`` + :param library_item_id: Optional library item identifier on which to filter results. + The parameter must be an identifier for the resource type: + ``com.vmware.content.library.item.UpdateSession``. + If not specified the results are not filtered. + :rtype: :class:`list` of :class:`str` + :return: The :class:`list` of identifiers of all update sessions created by + the calling user. + The return value will contain identifiers for the resource type: + ``com.vmware.content.library.item.UpdateSession``. + :raise: :class:`com.vmware.vapi.std.errors_client.NotFound` + if a library item identifier is given for an item which does not + exist. + :raise: :class:`com.vmware.vapi.std.errors_client.Unauthorized` + if you do not have all of the privileges described as follows: + + * The resource ``com.vmware.content.library.item.UpdateSession`` + referenced by the parameter ``library_item_id`` requires + ``ContentLibrary.UpdateSession``. + """ + return self._invoke('list', + { + 'library_item_id': library_item_id, + }) +
+
[docs] def complete(self, + update_session_id, + ): + """ + Completes the update session. This indicates that the client has + finished making all the changes required to the underlying library + item. If the client is pushing the content to the server, the library + item will be updated once this call returns. If the server is pulling + the content, the call may return before the changes become visible. In + that case, the client can track the session to know when the server is + done. + + This method requires the session to be in the + :attr:`UpdateSessionModel.State.ACTIVE` state. + + Depending on the type of the library item associated with this session, + a type adapter may be invoked to verify the validity of the files + uploaded. The user can explicitly validate the session before + completing the session by using the + :func:`com.vmware.content.library.item.updatesession_client.File.validate` + method. + + Modifications are not visible to other clients unless the session is + completed and all necessary files have been received. + + :type update_session_id: :class:`str` + :param update_session_id: Identifier of the update session that should be completed. + The parameter must be an identifier for the resource type: + ``com.vmware.content.library.item.UpdateSession``. + :raise: :class:`com.vmware.vapi.std.errors_client.NotFound` + if no update session with the given identifier exists. + :raise: :class:`com.vmware.vapi.std.errors_client.NotAllowedInCurrentState` + if the update session is not in the + :attr:`UpdateSessionModel.State.ACTIVE` state, or if some of the + files that will be uploaded by the client aren't received + correctly. + :raise: :class:`com.vmware.vapi.std.errors_client.Unauthorized` + if you do not have all of the privileges described as follows: + + * Method execution requires ``System.Anonymous``. + """ + return self._invoke('complete', + { + 'update_session_id': update_session_id, + }) +
+
[docs] def keep_alive(self, + update_session_id, + client_progress=None, + ): + """ + Keeps an update session alive. + + If there is no activity for an update session after a period of time, + the update session will expire, then be deleted. The update session + expiration timeout is configurable in the Content Library Service + system configuration. The default is five minutes. Invoking this method + enables a client to specifically extend the lifetime of the update + session. + + :type update_session_id: :class:`str` + :param update_session_id: Identifier of the update session whose lifetime should be extended. + The parameter must be an identifier for the resource type: + ``com.vmware.content.library.item.UpdateSession``. + :type client_progress: :class:`long` or ``None`` + :param client_progress: Optional update to the progress property of the session. If + specified, the new progress should be greater then the current + progress. See :attr:`UpdateSessionModel.client_progress`. + If not specified the progress is not updated. + :raise: :class:`com.vmware.vapi.std.errors_client.NotFound` + if no update session with the given identifier exists. + :raise: :class:`com.vmware.vapi.std.errors_client.NotAllowedInCurrentState` + if the update session is not in the + :attr:`UpdateSessionModel.State.ACTIVE` state. + :raise: :class:`com.vmware.vapi.std.errors_client.Unauthorized` + if you do not have all of the privileges described as follows: + + * Method execution requires ``System.Anonymous``. + """ + return self._invoke('keep_alive', + { + 'update_session_id': update_session_id, + 'client_progress': client_progress, + }) +
+
[docs] def cancel(self, + update_session_id, + ): + """ + Cancels the update session and deletes it. This method will free up any + temporary resources currently associated with the session. + + This method is not allowed if the session has been already completed. + + Cancelling an update session will cancel any in progress transfers + (either uploaded by the client or pulled by the server). Any content + that has been already received will be scheduled for deletion. + + :type update_session_id: :class:`str` + :param update_session_id: Identifier of the update session that should be canceled. + The parameter must be an identifier for the resource type: + ``com.vmware.content.library.item.UpdateSession``. + :raise: :class:`com.vmware.vapi.std.errors_client.NotFound` + if no update session with the given identifier exists. + :raise: :class:`com.vmware.vapi.std.errors_client.NotAllowedInCurrentState` + if the update session is not in the + :attr:`UpdateSessionModel.State.ACTIVE` state. + :raise: :class:`com.vmware.vapi.std.errors_client.Unauthorized` + if you do not have all of the privileges described as follows: + + * Method execution requires ``System.Anonymous``. + """ + return self._invoke('cancel', + { + 'update_session_id': update_session_id, + }) +
+
[docs] def fail(self, + update_session_id, + client_error_message, + ): + """ + Terminates the update session with a client specified error message. + + This is useful in transmitting client side failures (for example, not + being able to access a file) to the server side. + + :type update_session_id: :class:`str` + :param update_session_id: Identifier of the update session to fail. + The parameter must be an identifier for the resource type: + ``com.vmware.content.library.item.UpdateSession``. + :type client_error_message: :class:`str` + :param client_error_message: Client side error message. This can be useful in providing some + extra details about the client side failure. Note that the message + won't be translated to the user's locale. + :raise: :class:`com.vmware.vapi.std.errors_client.NotFound` + if the update session does not exist. + :raise: :class:`com.vmware.vapi.std.errors_client.NotAllowedInCurrentState` + if the update session is not in the + :attr:`UpdateSessionModel.State.ACTIVE` state. + :raise: :class:`com.vmware.vapi.std.errors_client.Unauthorized` + if you do not have all of the privileges described as follows: + + * Method execution requires ``System.Anonymous``. + """ + return self._invoke('fail', + { + 'update_session_id': update_session_id, + 'client_error_message': client_error_message, + }) +
+
[docs] def delete(self, + update_session_id, + ): + """ + Deletes an update session. This removes the session and all information + associated with it. + + Removing an update session leaves any current transfers for that + session in an indeterminate state (there is no guarantee that the + server will terminate the transfers, or that the transfers can be + completed). However there will no longer be a means of inspecting the + status of those uploads except by seeing the effect on the library + item. + + Update sessions for which there is no upload activity or which are + complete will automatically be deleted after a period of time. + + :type update_session_id: :class:`str` + :param update_session_id: Identifer of the update session to delete. + The parameter must be an identifier for the resource type: + ``com.vmware.content.library.item.UpdateSession``. + :raise: :class:`com.vmware.vapi.std.errors_client.NotAllowedInCurrentState` + if the update session is in the + :attr:`UpdateSessionModel.State.ACTIVE` state. + :raise: :class:`com.vmware.vapi.std.errors_client.Unauthorized` + if you do not have all of the privileges described as follows: + + * Method execution requires ``System.Anonymous``. + """ + return self._invoke('delete', + { + 'update_session_id': update_session_id, + }) +
+class _DownloadSessionStub(ApiInterfaceStub): + def __init__(self, config): + # properties for create operation + create_input_type = type.StructType('operation-input', { + 'client_token': type.OptionalType(type.StringType()), + 'create_spec': type.ReferenceType(sys.modules[__name__], 'DownloadSessionModel'), + }) + create_error_dict = { + 'com.vmware.vapi.std.errors.invalid_argument': + type.ReferenceType(com.vmware.vapi.std.errors_client, 'InvalidArgument'), + 'com.vmware.vapi.std.errors.not_found': + type.ReferenceType(com.vmware.vapi.std.errors_client, 'NotFound'), + + } + create_input_validator_list = [ + ] + create_output_validator_list = [ + ] + + # properties for get operation + get_input_type = type.StructType('operation-input', { + 'download_session_id': type.IdType(resource_types='com.vmware.content.library.item.DownloadSession'), + }) + get_error_dict = { + 'com.vmware.vapi.std.errors.not_found': + type.ReferenceType(com.vmware.vapi.std.errors_client, 'NotFound'), + + } + get_input_validator_list = [ + ] + get_output_validator_list = [ + ] + + # properties for list operation + list_input_type = type.StructType('operation-input', { + 'library_item_id': type.OptionalType(type.IdType()), + }) + list_error_dict = { + 'com.vmware.vapi.std.errors.not_found': + type.ReferenceType(com.vmware.vapi.std.errors_client, 'NotFound'), + + } + list_input_validator_list = [ + ] + list_output_validator_list = [ + ] + + # properties for keep_alive operation + keep_alive_input_type = type.StructType('operation-input', { + 'download_session_id': type.IdType(resource_types='com.vmware.content.library.item.DownloadSession'), + 'progress': type.OptionalType(type.IntegerType()), + }) + keep_alive_error_dict = { + 'com.vmware.vapi.std.errors.not_found': + type.ReferenceType(com.vmware.vapi.std.errors_client, 'NotFound'), + 'com.vmware.vapi.std.errors.not_allowed_in_current_state': + type.ReferenceType(com.vmware.vapi.std.errors_client, 'NotAllowedInCurrentState'), + + } + keep_alive_input_validator_list = [ + ] + keep_alive_output_validator_list = [ + ] + + # properties for cancel operation + cancel_input_type = type.StructType('operation-input', { + 'download_session_id': type.IdType(resource_types='com.vmware.content.library.item.DownloadSession'), + }) + cancel_error_dict = { + 'com.vmware.vapi.std.errors.not_found': + type.ReferenceType(com.vmware.vapi.std.errors_client, 'NotFound'), + 'com.vmware.vapi.std.errors.not_allowed_in_current_state': + type.ReferenceType(com.vmware.vapi.std.errors_client, 'NotAllowedInCurrentState'), + + } + cancel_input_validator_list = [ + ] + cancel_output_validator_list = [ + ] + + # properties for delete operation + delete_input_type = type.StructType('operation-input', { + 'download_session_id': type.IdType(resource_types='com.vmware.content.library.item.DownloadSession'), + }) + delete_error_dict = { + 'com.vmware.vapi.std.errors.not_found': + type.ReferenceType(com.vmware.vapi.std.errors_client, 'NotFound'), + + } + delete_input_validator_list = [ + ] + delete_output_validator_list = [ + ] + + # properties for fail operation + fail_input_type = type.StructType('operation-input', { + 'download_session_id': type.IdType(resource_types='com.vmware.content.library.item.DownloadSession'), + 'client_error_message': type.StringType(), + }) + fail_error_dict = { + 'com.vmware.vapi.std.errors.not_found': + type.ReferenceType(com.vmware.vapi.std.errors_client, 'NotFound'), + 'com.vmware.vapi.std.errors.not_allowed_in_current_state': + type.ReferenceType(com.vmware.vapi.std.errors_client, 'NotAllowedInCurrentState'), + + } + fail_input_validator_list = [ + ] + fail_output_validator_list = [ + ] + + operations = { + 'create': { + 'input_type': create_input_type, + 'output_type': type.IdType(resource_types='com.vmware.content.library.item.DownloadSession'), + 'errors': create_error_dict, + 'input_validator_list': create_input_validator_list, + 'output_validator_list': create_output_validator_list, + }, + 'get': { + 'input_type': get_input_type, + 'output_type': type.ReferenceType(sys.modules[__name__], 'DownloadSessionModel'), + 'errors': get_error_dict, + 'input_validator_list': get_input_validator_list, + 'output_validator_list': get_output_validator_list, + }, + 'list': { + 'input_type': list_input_type, + 'output_type': type.ListType(type.IdType()), + 'errors': list_error_dict, + 'input_validator_list': list_input_validator_list, + 'output_validator_list': list_output_validator_list, + }, + 'keep_alive': { + 'input_type': keep_alive_input_type, + 'output_type': type.VoidType(), + 'errors': keep_alive_error_dict, + 'input_validator_list': keep_alive_input_validator_list, + 'output_validator_list': keep_alive_output_validator_list, + }, + 'cancel': { + 'input_type': cancel_input_type, + 'output_type': type.VoidType(), + 'errors': cancel_error_dict, + 'input_validator_list': cancel_input_validator_list, + 'output_validator_list': cancel_output_validator_list, + }, + 'delete': { + 'input_type': delete_input_type, + 'output_type': type.VoidType(), + 'errors': delete_error_dict, + 'input_validator_list': delete_input_validator_list, + 'output_validator_list': delete_output_validator_list, + }, + 'fail': { + 'input_type': fail_input_type, + 'output_type': type.VoidType(), + 'errors': fail_error_dict, + 'input_validator_list': fail_input_validator_list, + 'output_validator_list': fail_output_validator_list, + }, + } + ApiInterfaceStub.__init__(self, iface_name='com.vmware.content.library.item.download_session', + config=config, + operations=operations) +class _FileStub(ApiInterfaceStub): + def __init__(self, config): + # properties for get operation + get_input_type = type.StructType('operation-input', { + 'library_item_id': type.IdType(resource_types='com.vmware.content.library.Item'), + 'name': type.StringType(), + }) + get_error_dict = { + 'com.vmware.vapi.std.errors.not_found': + type.ReferenceType(com.vmware.vapi.std.errors_client, 'NotFound'), + + } + get_input_validator_list = [ + ] + get_output_validator_list = [ + ] + + # properties for list operation + list_input_type = type.StructType('operation-input', { + 'library_item_id': type.IdType(resource_types='com.vmware.content.library.Item'), + }) + list_error_dict = { + 'com.vmware.vapi.std.errors.not_found': + type.ReferenceType(com.vmware.vapi.std.errors_client, 'NotFound'), + + } + list_input_validator_list = [ + ] + list_output_validator_list = [ + ] + + operations = { + 'get': { + 'input_type': get_input_type, + 'output_type': type.ReferenceType(sys.modules[__name__], 'File.Info'), + 'errors': get_error_dict, + 'input_validator_list': get_input_validator_list, + 'output_validator_list': get_output_validator_list, + }, + 'list': { + 'input_type': list_input_type, + 'output_type': type.ListType(type.ReferenceType(sys.modules[__name__], 'File.Info')), + 'errors': list_error_dict, + 'input_validator_list': list_input_validator_list, + 'output_validator_list': list_output_validator_list, + }, + } + ApiInterfaceStub.__init__(self, iface_name='com.vmware.content.library.item.file', + config=config, + operations=operations) +class _StorageStub(ApiInterfaceStub): + def __init__(self, config): + # properties for get operation + get_input_type = type.StructType('operation-input', { + 'library_item_id': type.IdType(resource_types='com.vmware.content.library.Item'), + 'file_name': type.StringType(), + }) + get_error_dict = { + 'com.vmware.vapi.std.errors.not_found': + type.ReferenceType(com.vmware.vapi.std.errors_client, 'NotFound'), + + } + get_input_validator_list = [ + ] + get_output_validator_list = [ + ] + + # properties for list operation + list_input_type = type.StructType('operation-input', { + 'library_item_id': type.IdType(resource_types='com.vmware.content.library.Item'), + }) + list_error_dict = { + 'com.vmware.vapi.std.errors.not_found': + type.ReferenceType(com.vmware.vapi.std.errors_client, 'NotFound'), + + } + list_input_validator_list = [ + ] + list_output_validator_list = [ + ] + + operations = { + 'get': { + 'input_type': get_input_type, + 'output_type': type.ListType(type.ReferenceType(sys.modules[__name__], 'Storage.Info')), + 'errors': get_error_dict, + 'input_validator_list': get_input_validator_list, + 'output_validator_list': get_output_validator_list, + }, + 'list': { + 'input_type': list_input_type, + 'output_type': type.ListType(type.ReferenceType(sys.modules[__name__], 'Storage.Info')), + 'errors': list_error_dict, + 'input_validator_list': list_input_validator_list, + 'output_validator_list': list_output_validator_list, + }, + } + ApiInterfaceStub.__init__(self, iface_name='com.vmware.content.library.item.storage', + config=config, + operations=operations) +class _UpdateSessionStub(ApiInterfaceStub): + def __init__(self, config): + # properties for create operation + create_input_type = type.StructType('operation-input', { + 'client_token': type.OptionalType(type.StringType()), + 'create_spec': type.ReferenceType(sys.modules[__name__], 'UpdateSessionModel'), + }) + create_error_dict = { + 'com.vmware.vapi.std.errors.invalid_argument': + type.ReferenceType(com.vmware.vapi.std.errors_client, 'InvalidArgument'), + 'com.vmware.vapi.std.errors.invalid_element_type': + type.ReferenceType(com.vmware.vapi.std.errors_client, 'InvalidElementType'), + 'com.vmware.vapi.std.errors.not_found': + type.ReferenceType(com.vmware.vapi.std.errors_client, 'NotFound'), + 'com.vmware.vapi.std.errors.resource_busy': + type.ReferenceType(com.vmware.vapi.std.errors_client, 'ResourceBusy'), + + } + create_input_validator_list = [ + ] + create_output_validator_list = [ + ] + + # properties for get operation + get_input_type = type.StructType('operation-input', { + 'update_session_id': type.IdType(resource_types='com.vmware.content.library.item.UpdateSession'), + }) + get_error_dict = { + 'com.vmware.vapi.std.errors.not_found': + type.ReferenceType(com.vmware.vapi.std.errors_client, 'NotFound'), + + } + get_input_validator_list = [ + ] + get_output_validator_list = [ + ] + + # properties for list operation + list_input_type = type.StructType('operation-input', { + 'library_item_id': type.OptionalType(type.IdType()), + }) + list_error_dict = { + 'com.vmware.vapi.std.errors.not_found': + type.ReferenceType(com.vmware.vapi.std.errors_client, 'NotFound'), + + } + list_input_validator_list = [ + ] + list_output_validator_list = [ + ] + + # properties for complete operation + complete_input_type = type.StructType('operation-input', { + 'update_session_id': type.IdType(resource_types='com.vmware.content.library.item.UpdateSession'), + }) + complete_error_dict = { + 'com.vmware.vapi.std.errors.not_found': + type.ReferenceType(com.vmware.vapi.std.errors_client, 'NotFound'), + 'com.vmware.vapi.std.errors.not_allowed_in_current_state': + type.ReferenceType(com.vmware.vapi.std.errors_client, 'NotAllowedInCurrentState'), + + } + complete_input_validator_list = [ + ] + complete_output_validator_list = [ + ] + + # properties for keep_alive operation + keep_alive_input_type = type.StructType('operation-input', { + 'update_session_id': type.IdType(resource_types='com.vmware.content.library.item.UpdateSession'), + 'client_progress': type.OptionalType(type.IntegerType()), + }) + keep_alive_error_dict = { + 'com.vmware.vapi.std.errors.not_found': + type.ReferenceType(com.vmware.vapi.std.errors_client, 'NotFound'), + 'com.vmware.vapi.std.errors.not_allowed_in_current_state': + type.ReferenceType(com.vmware.vapi.std.errors_client, 'NotAllowedInCurrentState'), + + } + keep_alive_input_validator_list = [ + ] + keep_alive_output_validator_list = [ + ] + + # properties for cancel operation + cancel_input_type = type.StructType('operation-input', { + 'update_session_id': type.IdType(resource_types='com.vmware.content.library.item.UpdateSession'), + }) + cancel_error_dict = { + 'com.vmware.vapi.std.errors.not_found': + type.ReferenceType(com.vmware.vapi.std.errors_client, 'NotFound'), + 'com.vmware.vapi.std.errors.not_allowed_in_current_state': + type.ReferenceType(com.vmware.vapi.std.errors_client, 'NotAllowedInCurrentState'), + + } + cancel_input_validator_list = [ + ] + cancel_output_validator_list = [ + ] + + # properties for fail operation + fail_input_type = type.StructType('operation-input', { + 'update_session_id': type.IdType(resource_types='com.vmware.content.library.item.UpdateSession'), + 'client_error_message': type.StringType(), + }) + fail_error_dict = { + 'com.vmware.vapi.std.errors.not_found': + type.ReferenceType(com.vmware.vapi.std.errors_client, 'NotFound'), + 'com.vmware.vapi.std.errors.not_allowed_in_current_state': + type.ReferenceType(com.vmware.vapi.std.errors_client, 'NotAllowedInCurrentState'), + + } + fail_input_validator_list = [ + ] + fail_output_validator_list = [ + ] + + # properties for delete operation + delete_input_type = type.StructType('operation-input', { + 'update_session_id': type.IdType(resource_types='com.vmware.content.library.item.UpdateSession'), + }) + delete_error_dict = { + 'com.vmware.vapi.std.errors.not_allowed_in_current_state': + type.ReferenceType(com.vmware.vapi.std.errors_client, 'NotAllowedInCurrentState'), + + } + delete_input_validator_list = [ + ] + delete_output_validator_list = [ + ] + + operations = { + 'create': { + 'input_type': create_input_type, + 'output_type': type.IdType(resource_types='com.vmware.content.library.item.UpdateSession'), + 'errors': create_error_dict, + 'input_validator_list': create_input_validator_list, + 'output_validator_list': create_output_validator_list, + }, + 'get': { + 'input_type': get_input_type, + 'output_type': type.ReferenceType(sys.modules[__name__], 'UpdateSessionModel'), + 'errors': get_error_dict, + 'input_validator_list': get_input_validator_list, + 'output_validator_list': get_output_validator_list, + }, + 'list': { + 'input_type': list_input_type, + 'output_type': type.ListType(type.IdType()), + 'errors': list_error_dict, + 'input_validator_list': list_input_validator_list, + 'output_validator_list': list_output_validator_list, + }, + 'complete': { + 'input_type': complete_input_type, + 'output_type': type.VoidType(), + 'errors': complete_error_dict, + 'input_validator_list': complete_input_validator_list, + 'output_validator_list': complete_output_validator_list, + }, + 'keep_alive': { + 'input_type': keep_alive_input_type, + 'output_type': type.VoidType(), + 'errors': keep_alive_error_dict, + 'input_validator_list': keep_alive_input_validator_list, + 'output_validator_list': keep_alive_output_validator_list, + }, + 'cancel': { + 'input_type': cancel_input_type, + 'output_type': type.VoidType(), + 'errors': cancel_error_dict, + 'input_validator_list': cancel_input_validator_list, + 'output_validator_list': cancel_output_validator_list, + }, + 'fail': { + 'input_type': fail_input_type, + 'output_type': type.VoidType(), + 'errors': fail_error_dict, + 'input_validator_list': fail_input_validator_list, + 'output_validator_list': fail_output_validator_list, + }, + 'delete': { + 'input_type': delete_input_type, + 'output_type': type.VoidType(), + 'errors': delete_error_dict, + 'input_validator_list': delete_input_validator_list, + 'output_validator_list': delete_output_validator_list, + }, + } + ApiInterfaceStub.__init__(self, iface_name='com.vmware.content.library.item.update_session', + config=config, + operations=operations) +
+ +
+
+
+
+
+ + +
+
+
+
+ + + + \ No newline at end of file diff --git a/vsphere/6.0/_modules/com/vmware/content/library_client.html b/vsphere/6.0/_modules/com/vmware/content/library_client.html new file mode 100644 index 00000000..21ac1440 --- /dev/null +++ b/vsphere/6.0/_modules/com/vmware/content/library_client.html @@ -0,0 +1,1484 @@ + + + + + + + + + + com.vmware.content.library_client — vCloud Suite SDK for Python 6.0.0 documentation + + + + + + + + + + + + + + +
+
+
+
+ +

Source code for com.vmware.content.library_client

+#---------------------------------------------------------------------------
+# Copyright 2015 VMware, Inc.  All rights reserved.
+
+# AUTO GENERATED FILE -- DO NOT MODIFY!
+#
+# vAPI stub file for package com.vmware.content.library.
+#---------------------------------------------------------------------------
+
+"""
+The Content Library module provides classes and classes for defining and
+managing the library's items, subscription, publication, and storage.
+
+"""
+
+__author__ = 'VMware, Inc.'
+__docformat__ = 'restructuredtext en'
+
+import sys
+
+from vmware.vapi.bindings import type
+from vmware.vapi.bindings.converter import TypeConverter
+from vmware.vapi.bindings.enum import Enum
+from vmware.vapi.bindings.error import VapiError
+from vmware.vapi.bindings.struct import VapiStruct
+from vmware.vapi.bindings.stub import VapiInterface, ApiInterfaceStub
+from vmware.vapi.bindings.common import raise_core_exception
+from vmware.vapi.data.validator import UnionValidator, HasFieldsOfValidator
+from vmware.vapi.exception import CoreException
+import com.vmware.vapi.std.errors_client
+
+
+
[docs]class ItemModel(VapiStruct): + """ + The ``ItemModel`` class represents a library item that has been stored in a + library. + + A ``ItemModel`` represents a single logical unit to be managed within a + :class:`com.vmware.content_client.LibraryModel`. Items contain the actual + content of a library, and their placement within a library determines + policies that affect that content such as publishing. + + A library item can have a specified type, indicated with the + :attr:`ItemModel.type` attribute. This property is associated with a + Content Library Service plugin that supports specific types and provides + additional services. The types available in a specific Content Library + Service can be queried using the :class:`com.vmware.content_client.Type` + class. Items of an unknown or unspecified type are treated generically. + Because subscribed library catalogs are synchronized as is, subscribing to + a remote Content Library Service effectively gives you a library with the + functionality of the remote service's type adapter plugins, even if they + are not installed locally. + + Items can be managed using the :class:`Item` class and, for items in + subscribed libraries, the :class:`SubscribedItem` class. + + .. tip:: + The arguments are used to initialize data attributes with the same + names. + """ + + + + def __init__(self, + id=None, + library_id=None, + content_version=None, + creation_time=None, + description=None, + last_modified_time=None, + last_sync_time=None, + metadata_version=None, + name=None, + cached=None, + size=None, + type=None, + version=None, + source_id=None, + ): + """ + :type id: :class:`str` + :param id: A unique identifier for this library item. + When clients pass a value of this class as a parameter, the + attribute must be an identifier for the resource type: + ``com.vmware.content.library.Item``. When methods return a value of + this class as a return value, the attribute will be an identifier + for the resource type: ``com.vmware.content.library.Item``. + This attribute is not used for the ``create`` method. It will not + be present in the return value of the ``get`` or ``list`` methods. + It is not used for the ``update`` method. + :type library_id: :class:`str` + :param library_id: The identifier of the + :class:`com.vmware.content_client.LibraryModel` to which this item + belongs. + When clients pass a value of this class as a parameter, the + attribute must be an identifier for the resource type: + ``com.vmware.content.Library``. When methods return a value of this + class as a return value, the attribute will be an identifier for + the resource type: ``com.vmware.content.Library``. + This attribute must be provided for the ``create`` method. It will + always be present in the return value of the ``get`` or ``list`` + methods. It is not used for the ``update`` method. + :type content_version: :class:`str` + :param content_version: The version of the file content list of this library item. + This attribute is not used for the ``create`` method. It will + always be present in the return value of the ``get`` or ``list`` + methods. It is not used for the ``update`` method. + :type creation_time: :class:`datetime.datetime` + :param creation_time: The date and time when this library item was created. + This attribute is not used for the ``create`` method. It will + always be present in the return value of the ``get`` or ``list`` + methods. It is not used for the ``update`` method. + :type description: :class:`str` + :param description: A human-readable description for this library item. + This attribute is optional for the ``create`` method. Leaving it + None during creation will result in an empty string value. It will + always be present in the result of a ``get`` or ``list`` method. It + is optional for the ``update`` method. Leaving it None during + update indicates that the description remains unchanged. + :type last_modified_time: :class:`datetime.datetime` + :param last_modified_time: The date and time when the metadata for this library item was last + changed. + + This attribute is affected by changes to the properties or file + content of this item. It is not modified by changes to the tags of + the item, or by changes to the library which owns this item. + This attribute is not used for the ``create`` method. It will + always be present in the return value of the ``get`` or ``list`` + methods. It is not used for the ``update`` method. + :type last_sync_time: :class:`datetime.datetime` + :param last_sync_time: The date and time when this library item was last synchronized. + + This attribute is updated every time a synchronization is triggered + on the library item, including when a synchronization is triggered + on the library to which this item belongs. The value is None for a + library item that belongs to a local library. + This attribute is not used for the ``create`` method. It is + optional in the return value of the ``get`` or ``list`` methods. It + is not used for the ``update`` method. + :type metadata_version: :class:`str` + :param metadata_version: A version number for the metadata of this library item. + + This value is incremented with each change to the metadata of this + item. Changes to name, description, and so on will increment this + value. The value is not incremented by changes to the content or + tags of the item or the library which owns it. + This attribute is not used for the ``create`` method. It will + always be present in the return value of the ``get`` or ``list`` + methods. It is not used for the ``update`` method. + :type name: :class:`str` + :param name: A human-readable name for this library item. + + The name may not be None or an empty string. The name does not have + to be unique, even within the same library. + This attribute must be provided for the ``create`` method. It will + always be present in the return value of the ``get`` or ``list`` + methods. It is optional for the ``update`` method. + :type cached: :class:`bool` + :param cached: The status that indicates whether the library item is on disk or + not. The library item is cached when all its files are on disk. + This attribute is not used for the ``create`` method. It will + always be present in the return value of the ``get`` or ``list`` + methods. It is not used for the ``update`` method. + :type size: :class:`long` + :param size: The library item size, in bytes. The size is the sum of the size + used on the storage backing for all the files in the item. When the + library item is not cached, the size is 0. + This attribute is not used for the ``create`` method. It is + optional in the return value of the ``get`` or ``list`` methods. It + is not used for the ``update`` method. + :type type: :class:`str` + :param type: An optional type identifier which indicates the type adapter plugin + to use. + + This attribute may be set to a non-empty string value that + corresponds to an identifier supported by a type adapter plugin + present in the Content Library Service. A type adapter plugin, if + present for the specified type, can provide additional information + and services around the item content. A type adapter can guide the + upload process by creating file entries that are in need of being + uploaded to complete an item. + + The types and plugins supported by the Content Library Service can + be queried using the :class:`com.vmware.content_client.Type` class. + This attribute is optional for the ``create`` and ``update`` + methods. During creation, if the type is left unspecified, or if + the type is specified but does not have a corresponding type + support plugin, then the type of the library item is considered to + be generic and all data is treated as generic files. During update, + if the type is not specified, then it is not updated. + :type version: :class:`str` + :param version: A version number that is updated on metadata changes. This value is + used to validate update requests to provide optimistic concurrency + of changes. + + This value represents a number that is incremented every time + library item properties, such as name or description, are changed. + It is not incremented by changes to the file content of the library + item, including adding or removing files. It is also not affected + by tagging the library item. + This attribute is not used for the ``create`` method. It will + always be present in the result of a ``get`` or ``list`` method. It + is optional for the ``update`` method. Leaving it None during + update indicates that you do not need to detect concurrent updates. + :type source_id: :class:`str` + :param source_id: The identifier of the :class:`ItemModel` to which this item is + synchronized to if the item belongs to a subscribed library. The + value is None for a library item that belongs to a local library. + When clients pass a value of this class as a parameter, the + attribute must be an identifier for the resource type: + ``com.vmware.content.library.Item``. When methods return a value of + this class as a return value, the attribute will be an identifier + for the resource type: ``com.vmware.content.library.Item``. + This attribute is not used for the ``create`` method. It is + optional in the return value of the ``get`` or ``list`` methods. It + is not used for the ``update`` method. + """ + self.id = id + self.library_id = library_id + self.content_version = content_version + self.creation_time = creation_time + self.description = description + self.last_modified_time = last_modified_time + self.last_sync_time = last_sync_time + self.metadata_version = metadata_version + self.name = name + self.cached = cached + self.size = size + self.type = type + self.version = version + self.source_id = source_id + VapiStruct.__init__(self) +
+ItemModel._set_binding_type(type.StructType( + 'com.vmware.content.library.item_model', { + 'id': type.OptionalType(type.IdType()), + 'library_id': type.OptionalType(type.IdType()), + 'content_version': type.OptionalType(type.StringType()), + 'creation_time': type.OptionalType(type.DateTimeType()), + 'description': type.OptionalType(type.StringType()), + 'last_modified_time': type.OptionalType(type.DateTimeType()), + 'last_sync_time': type.OptionalType(type.DateTimeType()), + 'metadata_version': type.OptionalType(type.StringType()), + 'name': type.OptionalType(type.StringType()), + 'cached': type.OptionalType(type.BooleanType()), + 'size': type.OptionalType(type.IntegerType()), + 'type': type.OptionalType(type.StringType()), + 'version': type.OptionalType(type.StringType()), + 'source_id': type.OptionalType(type.IdType()), + }, + ItemModel, + True, + ["id"])) + + + +
[docs]class PublishInfo(VapiStruct): + """ + The ``PublishInfo`` class defines how a local library is published publicly + for synchronization to other libraries. + + .. tip:: + The arguments are used to initialize data attributes with the same + names. + """ + + + + def __init__(self, + authentication_method=None, + published=None, + publish_url=None, + user_name=None, + password=None, + persist_json_enabled=None, + ): + """ + :type authentication_method: :class:`PublishInfo.AuthenticationMethod` + :param authentication_method: Indicates how a subscribed library should authenticate (BASIC, + NONE) to the published library endpoint. + This attribute must be provided for the ``create`` method. It will + always be present in the return value of the ``get`` or ``list`` + methods. It is optional for the ``update`` method. + :type published: :class:`bool` + :param published: Whether the local library is published. + This attribute must be provided for the ``create`` method. It will + always be present in the return value of the ``get`` or ``list`` + methods. It is optional for the ``update`` method. + :type publish_url: :class:`str` + :param publish_url: The URL to which the library metadata is published by the Content + Library Service. + + This value can be used to set the + :attr:`SubscriptionInfo.subscription_url` property when creating a + subscribed library. + This attribute is not used for the ``create`` method. It will + always be present in the return value of the ``get`` or ``list`` + methods. It is not used for the ``update`` method. + :type user_name: :class:`str` + :param user_name: The username to require for authentication. + This attribute is optional for the ``create`` and ``update`` + method. When the authentication is not required, the username can + be left None. When the authentication method is basic, the username + is ignored in the current release. It defaults to "vcsp". It is + preferable to leave this unset. If specified, it must be set to + "vcsp". + :type password: :class:`str` + :param password: The password to require for authentication. + This attribute is optional for the ``create`` method. When the + authentication method is + :attr:`PublishInfo.AuthenticationMethod.NONE`, the password can be + left None. When the authentication method is + :attr:`PublishInfo.AuthenticationMethod.BASIC`, the password should + be a non-empty string. This attribute is optional for the + ``update`` method. Leaving it None during update indicates that the + password is not changed. This attribute is not used for the ``get`` + or ``list`` method. + :type persist_json_enabled: :class:`bool` + :param persist_json_enabled: Whether library and library item metadata are persisted in storage + backing as json files. This flag only applies if the local library + is published and its storage backing type is + :attr:`StorageBacking.Type.OTHER`. + + Enabling json persistance allows you to synchronize a subscribed + library manually instead of over HTTP. You copy the local library + content and metadata to another storage backing manually and then + create a subscribed library referencing the location of the library + json file in the :attr:`SubscriptionInfo.subscription_url`. When + the subscribed library's :attr:`StorageBacking.storage_uri` matches + the subscription URL, files do not need to be copied to the + subscribed library. + This attribute is optional for the ``create`` method. It will + always be present in the return value of the ``get`` or ``list`` + methods. It is optional for the ``update`` method. + """ + self.authentication_method = authentication_method + self.published = published + self.publish_url = publish_url + self.user_name = user_name + self.password = password + self.persist_json_enabled = persist_json_enabled + VapiStruct.__init__(self) + +
[docs] class AuthenticationMethod(Enum): + """ + The ``PublishInfo.AuthenticationMethod`` class indicates how a subscribed + library should authenticate to the published library endpoint. + + .. note:: + This class represents an enumerated type in the interface language + definition. The class contains class attributes which represent the + values in the current version of the enumerated type. Newer versions of + the enumerated type may contain new values. To use new values of the + enumerated type in communication with a server that supports the newer + version of the API, you instantiate this class. See :ref:`enumerated + type description page <enumeration_description>`. + """ + BASIC = None + """ + Require HTTP Basic authentication matching a specified username and + password. + + """ + NONE = None + """ + Require no authentication. + + """ + + def __init__(self, string): + """ + :type string: :class:`str` + :param string: String value for the :class:`AuthenticationMethod` instance. + """ + Enum.__init__(string) +
+ AuthenticationMethod.BASIC = AuthenticationMethod('BASIC') + AuthenticationMethod.NONE = AuthenticationMethod('NONE') + AuthenticationMethod._set_binding_type(type.EnumType( + 'com.vmware.content.library.publish_info.authentication_method', + AuthenticationMethod))
+PublishInfo._set_binding_type(type.StructType( + 'com.vmware.content.library.publish_info', { + 'authentication_method': type.OptionalType(type.ReferenceType(sys.modules[__name__], 'PublishInfo.AuthenticationMethod')), + 'published': type.OptionalType(type.BooleanType()), + 'publish_url': type.OptionalType(type.URIType()), + 'user_name': type.OptionalType(type.StringType()), + 'password': type.OptionalType(type.SecretType()), + 'persist_json_enabled': type.OptionalType(type.BooleanType()), + }, + PublishInfo, + False, + None)) + + + +
[docs]class StorageBacking(VapiStruct): + """ + The ``StorageBacking`` class defines a storage location where content in a + library will be stored. The storage location can either be a Datastore or + Other type. + + .. tip:: + The arguments are used to initialize data attributes with the same + names. + """ + + _validator_list = [ + UnionValidator( + 'type', + { + 'DATASTORE' : [('datastore_id', False)], + 'OTHER' : [('storage_uri', False)], + } + ), + ] + + + def __init__(self, + type=None, + datastore_id=None, + storage_uri=None, + ): + """ + :type type: :class:`StorageBacking.Type` + :param type: Type (DATASTORE, OTHER) of :class:`StorageBacking`. + This attribute must be provided for the ``create`` method. It will + always be present in the return value of the ``get`` or ``list`` + methods. It is not used for the ``update`` method. + :type datastore_id: :class:`str` + :param datastore_id: Identifier for a :attr:`StorageBacking.Type.DATASTORE` type. + When clients pass a value of this class as a parameter, the + attribute must be an identifier for the resource type: + ``Datastore``. When methods return a value of this class as a + return value, the attribute will be an identifier for the resource + type: ``Datastore``. + This attribute is optional and it is only relevant when the value + of ``type`` is :attr:`StorageBacking.Type.DATASTORE`. + :type storage_uri: :class:`str` + :param storage_uri: URI for :attr:`StorageBacking.Type.OTHER` type. + + Some examples of accepted URI formats are: + + * file:///path + * file:///C:/path + * file://unc-server/path + This attribute is optional and it is only relevant when the value + of ``type`` is :attr:`StorageBacking.Type.OTHER`. + """ + self.type = type + self.datastore_id = datastore_id + self.storage_uri = storage_uri + VapiStruct.__init__(self) + +
[docs] class Type(Enum): + """ + The ``StorageBacking.Type`` class specifies the type of the + :class:`StorageBacking`. + + .. note:: + This class represents an enumerated type in the interface language + definition. The class contains class attributes which represent the + values in the current version of the enumerated type. Newer versions of + the enumerated type may contain new values. To use new values of the + enumerated type in communication with a server that supports the newer + version of the API, you instantiate this class. See :ref:`enumerated + type description page <enumeration_description>`. + """ + DATASTORE = None + """ + Datastore type. + + """ + OTHER = None + """ + File system path or NFS URL. + + """ + + def __init__(self, string): + """ + :type string: :class:`str` + :param string: String value for the :class:`Type` instance. + """ + Enum.__init__(string) +
+ Type.DATASTORE = Type('DATASTORE') + Type.OTHER = Type('OTHER') + Type._set_binding_type(type.EnumType( + 'com.vmware.content.library.storage_backing.type', + Type))
+StorageBacking._set_binding_type(type.StructType( + 'com.vmware.content.library.storage_backing', { + 'type': type.OptionalType(type.ReferenceType(sys.modules[__name__], 'StorageBacking.Type')), + 'datastore_id': type.OptionalType(type.IdType()), + 'storage_uri': type.OptionalType(type.URIType()), + }, + StorageBacking, + False, + None)) + + + +
[docs]class SubscriptionInfo(VapiStruct): + """ + The ``SubscriptionInfo`` class defines the subscription behavior for a + subscribed library. + + .. tip:: + The arguments are used to initialize data attributes with the same + names. + """ + + + + def __init__(self, + authentication_method=None, + automatic_sync_enabled=None, + on_demand=None, + password=None, + ssl_thumbprint=None, + subscription_url=None, + user_name=None, + ): + """ + :type authentication_method: :class:`SubscriptionInfo.AuthenticationMethod` + :param authentication_method: Indicate how the subscribed library should authenticate (BASIC, + NONE) with the published library endpoint. + This attribute must be provided for the ``create`` method. It will + always be present in the return value of the ``get`` or ``list`` + methods. It is optional for the ``update`` method. + :type automatic_sync_enabled: :class:`bool` + :param automatic_sync_enabled: Whether the library should participate in automatic library + synchronization. In order for automatic synchronization to happen, + the global + :attr:`com.vmware.content_client.ConfigurationModel.automatic_sync_enabled` + option must also be true. The subscription is still active even + when automatic synchronization is turned off, but synchronization + is only activated with an explicit call to + :func:`com.vmware.content_client.SubscribedLibrary.sync` or + :func:`SubscribedItem.sync`. In other words, manual synchronization + is still available even when automatic synchronization is disabled. + This attribute must be provided for the ``create`` method. It will + always be present in the return value of the ``get`` or ``list`` + methods. It is optional for the ``update`` method. + :type on_demand: :class:`bool` + :param on_demand: Indicates whether a library item's content will be synchronized + only on demand. + + If this is set to ``true``, then the library item's metadata will + be synchronized but the item's content (its files) will not be + synchronized. The Content Library Service will synchronize the + content upon request only. This can cause the first use of the + content to have a noticeable delay. + + Items without synchronized content can be forcefully synchronized + in advance using the :func:`SubscribedItem.sync` call with + ``forceSyncContent`` set to true. Once content has been + synchronized, the content can removed with the + :func:`SubscribedItem.evict` call. + + If this value is set to ``false``, all content will be synchronized + in advance. + This attribute must be provided for the ``create`` method. It will + always be present in the return value of the ``get`` or ``list`` + methods. It is optional for the ``update`` method. + :type password: :class:`str` + :param password: The password to use when authenticating. + + The password must be set when using a password-based authentication + method; empty strings are not allowed. + This attribute is optional for the ``create`` method. It will not + be present in the return value of the ``get`` or ``list`` methods. + It is optional for the ``update`` method. + :type ssl_thumbprint: :class:`str` + :param ssl_thumbprint: An optional SHA-1 hash of the SSL certificate for the remote + endpoint. + + If this value is defined the SSL certificate will be verified by + comparing it to the SSL thumbprint. The SSL certificate must verify + against the thumbprint. When specified, the standard certificate + chain validation behavior is not used. The certificate chain is + validated normally if this value is None. + This attribute is optional for the ``create`` method. It will not + be present in the return value of the ``get`` or ``list`` methods. + It is optional for the ``update`` method. + :type subscription_url: :class:`str` + :param subscription_url: The URL of the endpoint where the metadata for the remotely + published library is being served. The supported schemes are + ``http``, ``https``, and ``file``. This value can be the + :attr:`PublishInfo.publish_url` of the published library (for + example, https://server/path/lib.json). If the published library + has :attr:`PublishInfo.persist_json_enabled` turned on, this value + can be the file-based URL of the published library's json file (for + example, file:///path/lib.json). + This attribute must be provided for the ``create`` method. It will + always be present in the return value of the ``get`` or ``list`` + methods. It is optional for the ``update`` method. + :type user_name: :class:`str` + :param user_name: The username to use when authenticating. + + The username must be set when using a password-based authentication + method. Empty strings are allowed for usernames. + This attribute is optional for the ``create`` method. It is + optional in the return value of the ``get`` or ``list`` methods. It + is optional for the ``update`` method. + """ + self.authentication_method = authentication_method + self.automatic_sync_enabled = automatic_sync_enabled + self.on_demand = on_demand + self.password = password + self.ssl_thumbprint = ssl_thumbprint + self.subscription_url = subscription_url + self.user_name = user_name + VapiStruct.__init__(self) + +
[docs] class AuthenticationMethod(Enum): + """ + Indicate how the subscribed library should authenticate with the published + library endpoint. + + .. note:: + This class represents an enumerated type in the interface language + definition. The class contains class attributes which represent the + values in the current version of the enumerated type. Newer versions of + the enumerated type may contain new values. To use new values of the + enumerated type in communication with a server that supports the newer + version of the API, you instantiate this class. See :ref:`enumerated + type description page <enumeration_description>`. + """ + BASIC = None + """ + Require HTTP Basic authentication matching a specified username and + password. + + """ + NONE = None + """ + Require no authentication. + + """ + + def __init__(self, string): + """ + :type string: :class:`str` + :param string: String value for the :class:`AuthenticationMethod` instance. + """ + Enum.__init__(string) +
+ AuthenticationMethod.BASIC = AuthenticationMethod('BASIC') + AuthenticationMethod.NONE = AuthenticationMethod('NONE') + AuthenticationMethod._set_binding_type(type.EnumType( + 'com.vmware.content.library.subscription_info.authentication_method', + AuthenticationMethod))
+SubscriptionInfo._set_binding_type(type.StructType( + 'com.vmware.content.library.subscription_info', { + 'authentication_method': type.OptionalType(type.ReferenceType(sys.modules[__name__], 'SubscriptionInfo.AuthenticationMethod')), + 'automatic_sync_enabled': type.OptionalType(type.BooleanType()), + 'on_demand': type.OptionalType(type.BooleanType()), + 'password': type.OptionalType(type.SecretType()), + 'ssl_thumbprint': type.OptionalType(type.StringType()), + 'subscription_url': type.OptionalType(type.URIType()), + 'user_name': type.OptionalType(type.StringType()), + }, + SubscriptionInfo, + False, + None)) + + + +
[docs]class Item(VapiInterface): + """ + The ``Item`` class provides methods for managing library items. + """ + RESOURCE_TYPE = "com.vmware.content.library.Item" + """ + Resource type for item. + + """ + + def __init__(self, config): + """ + :type config: :class:`vmware.vapi.bindings.stub.StubConfiguration` + :param config: Configuration to be used for creating the stub. + """ + VapiInterface.__init__(self, config, _ItemStub) + +
[docs] class FindSpec(VapiStruct): + """ + The ``Item.FindSpec`` class specifies the properties that can be used as a + filter to find library items. When multiple attributes are specified, all + properties of the item must match the specification. + + .. tip:: + The arguments are used to initialize data attributes with the same + names. + """ + + + + def __init__(self, + name=None, + library_id=None, + source_id=None, + type=None, + cached=None, + ): + """ + :type name: :class:`str` or ``None`` + :param name: The name of the library item. The name is case-insensitive. See + :attr:`ItemModel.name`. + If not specified all library item names are searched. + :type library_id: :class:`str` or ``None`` + :param library_id: The identifier of the library containing the item. See + :attr:`ItemModel.library_id`. + When clients pass a value of this class as a parameter, the + attribute must be an identifier for the resource type: + ``com.vmware.content.Library``. When methods return a value of this + class as a return value, the attribute will be an identifier for + the resource type: ``com.vmware.content.Library``. + If not specified all libraries are searched. + :type source_id: :class:`str` or ``None`` + :param source_id: The identifier of the library item as reported by the publisher. + See :attr:`ItemModel.source_id`. + When clients pass a value of this class as a parameter, the + attribute must be an identifier for the resource type: + ``com.vmware.content.library.Item``. When methods return a value of + this class as a return value, the attribute will be an identifier + for the resource type: ``com.vmware.content.library.Item``. + If not specified all library items are searched. + :type type: :class:`str` or ``None`` + :param type: The type of the library item. The type is case-insensitive. See + :attr:`ItemModel.type`. + If not specified all types are searched. + :type cached: :class:`bool` or ``None`` + :param cached: Whether the item is cached. Possible values are 'true' or 'false'. + See :attr:`ItemModel.cached`. + If not specified all library items are searched. + """ + self.name = name + self.library_id = library_id + self.source_id = source_id + self.type = type + self.cached = cached + VapiStruct.__init__(self) +
+ FindSpec._set_binding_type(type.StructType( + 'com.vmware.content.library.item.find_spec', { + 'name': type.OptionalType(type.StringType()), + 'library_id': type.OptionalType(type.IdType()), + 'source_id': type.OptionalType(type.IdType()), + 'type': type.OptionalType(type.StringType()), + 'cached': type.OptionalType(type.BooleanType()), + }, + FindSpec, + False, + None)) + + +
[docs] def copy(self, + source_library_item_id, + destination_create_spec, + client_token=None, + ): + """ + Copies a library item. + + Copying a library item allows a duplicate to be made within the same or + different library. The copy occurs by first creating a new library + item, whose identifier is returned. The content of the library item is + then copied asynchronously. This copy can be tracked as a task. + + If the copy fails, Content Library Service will roll back the copy by + deleting any content that was already copied, and removing the new + library item. A failure during rollback may require manual cleanup by + an administrator. + + A library item cannot be copied into a subscribed library. + + :type client_token: :class:`str` or ``None`` + :param client_token: A unique token generated on the client for each copy request. The + token should be a universally unique identifier (UUID), for + example: ``b8a2a2e3-2314-43cd-a871-6ede0f429751``. This token can + be used to guarantee idempotent copy. + If not specified copy is not idempotent. + :type source_library_item_id: :class:`str` + :param source_library_item_id: Identifier of the existing library item from which the content will + be copied. + The parameter must be an identifier for the resource type: + ``com.vmware.content.library.Item``. + :type destination_create_spec: :class:`ItemModel` + :param destination_create_spec: Specification for the new library item to be created. + :rtype: :class:`str` + :return: The identifier of the new library item into which the content is + being copied. + The return value will be an identifier for the resource type: + ``com.vmware.content.library.Item``. + :raise: :class:`com.vmware.vapi.std.errors_client.NotFound` + if the library item with ``source_library_item_id`` does not exist, + or if the library referenced by the :attr:`ItemModel.library_id` + property of ``destination_create_spec`` does not exist. + :raise: :class:`com.vmware.vapi.std.errors_client.InvalidArgument` + if one of the following is true for the new library item: + + * name is empty + * name exceeds 80 characters + * description exceeds 1024 characters + :raise: :class:`com.vmware.vapi.std.errors_client.InvalidArgument` + if the ``client_token`` does not conform to the UUID format. + :raise: :class:`com.vmware.vapi.std.errors_client.InvalidElementType` + if the :attr:`ItemModel.library_id` property of + ``destination_create_spec`` refers to a subscribed library. + :raise: :class:`com.vmware.vapi.std.errors_client.ResourceInaccessible` + if the copy operation failed because the source or destination + library item is not accessible. + :raise: :class:`com.vmware.vapi.std.errors_client.Unauthorized` + if you do not have all of the privileges described as follows: + + * The resource ``com.vmware.content.library.Item`` referenced by + the parameter ``source_library_item_id`` requires ``System.Read``. + * The resource ``com.vmware.content.Library`` referenced by the + attribute :attr:`ItemModel.library_id` requires + ``ContentLibrary.AddLibraryItem``. + """ + return self._invoke('copy', + { + 'client_token': client_token, + 'source_library_item_id': source_library_item_id, + 'destination_create_spec': destination_create_spec, + }) +
+
[docs] def create(self, + create_spec, + client_token=None, + ): + """ + Creates a new library item. + + A new library item is created without any content. After creation, + content can be added through the + :class:`com.vmware.content.library.item_client.UpdateSession` and + :class:`com.vmware.content.library.item.updatesession_client.File` + classes. + + A library item cannot be created in a subscribed library. + + :type client_token: :class:`str` or ``None`` + :param client_token: A unique token generated on the client for each creation request. + The token should be a universally unique identifier (UUID), for + example: ``b8a2a2e3-2314-43cd-a871-6ede0f429751``. This token can + be used to guarantee idempotent creation. + If not specified creation is not idempotent. + :type create_spec: :class:`ItemModel` + :param create_spec: Specification that defines the properties of the new library item. + :rtype: :class:`str` + :return: Identifier of the new library item. + The return value will be an identifier for the resource type: + ``com.vmware.content.library.Item``. + :raise: :class:`com.vmware.vapi.std.errors_client.NotFound` + if the :attr:`ItemModel.library_id` property of ``create_spec`` + refers to a library that does not exist. + :raise: :class:`com.vmware.vapi.std.errors_client.InvalidArgument` + if one of the following is true for the new library item: + + * name is empty + * name exceeds 80 characters + * description exceeds 1024 characters + :raise: :class:`com.vmware.vapi.std.errors_client.InvalidArgument` + if the ``client_token`` does not conform to the UUID format. + :raise: :class:`com.vmware.vapi.std.errors_client.InvalidElementType` + if the :attr:`ItemModel.library_id` property of + ``destinationCreateSpec`` refers to a subscribed library. + :raise: :class:`com.vmware.vapi.std.errors_client.Unauthorized` + if you do not have all of the privileges described as follows: + + * The resource ``com.vmware.content.Library`` referenced by the + attribute :attr:`ItemModel.library_id` requires + ``ContentLibrary.AddLibraryItem``. + """ + return self._invoke('create', + { + 'client_token': client_token, + 'create_spec': create_spec, + }) +
+
[docs] def delete(self, + library_item_id, + ): + """ + Deletes a library item. + + This method will immediately remove the item from the library that owns + it. The content of the item will be asynchronously removed from the + storage backings. The content deletion can be tracked with a task. In + the event that the task fails, an administrator may need to manually + remove the files from the storage backing. + + This method cannot be used to delete a library item that is a member of + a subscribed library. Removing an item from a subscribed library + requires deleting the item from the original published local library + and syncing the subscribed library. + + :type library_item_id: :class:`str` + :param library_item_id: Identifier of the library item to delete. + The parameter must be an identifier for the resource type: + ``com.vmware.content.library.Item``. + :raise: :class:`com.vmware.vapi.std.errors_client.InvalidElementType` + if the library item with the given ``library_item_id`` is a member + of a subscribed library. + :raise: :class:`com.vmware.vapi.std.errors_client.NotFound` + if the library item with the specified ``library_item_id`` does not + exist. + :raise: :class:`com.vmware.vapi.std.errors_client.Unauthorized` + if you do not have all of the privileges described as follows: + + * The resource ``com.vmware.content.library.Item`` referenced by + the parameter ``library_item_id`` requires + ``ContentLibrary.DeleteLibraryItem``. + """ + return self._invoke('delete', + { + 'library_item_id': library_item_id, + }) +
+
[docs] def get(self, + library_item_id, + ): + """ + Returns the :class:`ItemModel` with the given identifier. + + :type library_item_id: :class:`str` + :param library_item_id: Identifier of the library item to return. + The parameter must be an identifier for the resource type: + ``com.vmware.content.library.Item``. + :rtype: :class:`ItemModel` + :return: The :class:`ItemModel` instance with the given ``library_item_id``. + :raise: :class:`com.vmware.vapi.std.errors_client.NotFound` + if no item with the given ``library_item_id`` exists. + :raise: :class:`com.vmware.vapi.std.errors_client.Unauthorized` + if you do not have all of the privileges described as follows: + + * The resource ``com.vmware.content.library.Item`` referenced by + the parameter ``library_item_id`` requires ``System.Read``. + """ + return self._invoke('get', + { + 'library_item_id': library_item_id, + }) +
+
[docs] def list(self, + library_id, + ): + """ + Returns the identifiers of all items in the given library. + + :type library_id: :class:`str` + :param library_id: Identifier of the library whose items should be returned. + The parameter must be an identifier for the resource type: + ``com.vmware.content.Library``. + :rtype: :class:`list` of :class:`str` + :return: The :class:`list` of identifiers of the items in the library + specified by ``library_id``. + The return value will contain identifiers for the resource type: + ``com.vmware.content.library.Item``. + :raise: :class:`com.vmware.vapi.std.errors_client.NotFound` + if the library associated with ``library_id`` does not exist. + :raise: :class:`com.vmware.vapi.std.errors_client.Unauthorized` + if you do not have all of the privileges described as follows: + + * The resource ``com.vmware.content.Library`` referenced by the + parameter ``library_id`` requires ``System.Read``. + """ + return self._invoke('list', + { + 'library_id': library_id, + }) +
+
[docs] def find(self, + spec, + ): + """ + Returns identifiers of all the visible (as determined by authorization + policy) library items matching the requested :class:`Item.FindSpec`. + + :type spec: :class:`Item.FindSpec` + :param spec: Specification describing what properties to filter on. + :rtype: :class:`list` of :class:`str` + :return: The :class:`list` of identifiers of all the visible library items + matching the given ``spec``. + The return value will contain identifiers for the resource type: + ``com.vmware.content.library.Item``. + :raise: :class:`com.vmware.vapi.std.errors_client.InvalidArgument` + if no properties are specified in the ``spec``. + :raise: :class:`com.vmware.vapi.std.errors_client.Unauthorized` + if you do not have all of the privileges described as follows: + + * Method execution requires ``System.Read``. + * The resource ``com.vmware.content.Library`` referenced by the + attribute :attr:`Item.FindSpec.library_id` requires + ``System.Read``. + """ + return self._invoke('find', + { + 'spec': spec, + }) +
+
[docs] def update(self, + library_item_id, + update_spec, + ): + """ + Updates the specified properties of a library item. + + This is an incremental update to the library item. Attributes that are + None in the update specification are left unchanged. + + This method cannot update a library item that is a member of a + subscribed library. Those items must be updated in the source published + library and synchronized to the subscribed library. + + :type library_item_id: :class:`str` + :param library_item_id: Identifier of the library item to update. + The parameter must be an identifier for the resource type: + ``com.vmware.content.library.Item``. + :type update_spec: :class:`ItemModel` + :param update_spec: Specification of the properties to set. + :raise: :class:`com.vmware.vapi.std.errors_client.NotFound` + if the library item specified by ``library_item_id`` does not + exist. + :raise: :class:`com.vmware.vapi.std.errors_client.InvalidElementType` + if the library item corresponding to ``library_item_id`` is a + member of a subscribed library. + :raise: :class:`com.vmware.vapi.std.errors_client.InvalidArgument` + if one of the following is true for the ``update_spec``: + + * name is empty + * name exceeds 80 characters + * description exceeds 1024 characters + * version is not equal to the current version of the library item + :raise: :class:`com.vmware.vapi.std.errors_client.Unauthorized` + if you do not have all of the privileges described as follows: + + * The resource ``com.vmware.content.library.Item`` referenced by + the parameter ``library_item_id`` requires + ``ContentLibrary.UpdateLibraryItem``. + """ + return self._invoke('update', + { + 'library_item_id': library_item_id, + 'update_spec': update_spec, + }) +
+
[docs]class SubscribedItem(VapiInterface): + """ + The ``SubscribedItem`` class manages the unique features of library items + that are members of a subscribed library. + """ + + + def __init__(self, config): + """ + :type config: :class:`vmware.vapi.bindings.stub.StubConfiguration` + :param config: Configuration to be used for creating the stub. + """ + VapiInterface.__init__(self, config, _SubscribedItemStub) + + +
[docs] def evict(self, + library_item_id, + ): + """ + Evicts the cached content of a library item in a subscribed library. + + This method allows the cached content of a library item to be removed + to free up storage capacity. This method will only work when a library + item is synchronized on-demand. When a library is not synchronized + on-demand, it always attempts to keep its cache up-to-date with the + published source. Evicting the library item will set + :attr:`ItemModel.cached` to false. + + :type library_item_id: :class:`str` + :param library_item_id: Identifier of the library item whose content should be evicted. + The parameter must be an identifier for the resource type: + ``com.vmware.content.library.Item``. + :raise: :class:`com.vmware.vapi.std.errors_client.NotFound` + if the library item specified by ``library_item_id`` does not + exist. + :raise: :class:`com.vmware.vapi.std.errors_client.InvalidElementType` + if the library item specified by ``library_item_id`` is not a + member of a subscribed library. + :raise: :class:`com.vmware.vapi.std.errors_client.InvalidElementConfiguration` + if the library item specified by ``library_item_id`` is a member of + a subscribed library that does not synchronize on-demand. + :raise: :class:`com.vmware.vapi.std.errors_client.Unauthorized` + if you do not have all of the privileges described as follows: + + * The resource ``com.vmware.content.library.Item`` referenced by + the parameter ``library_item_id`` requires + ``ContentLibrary.EvictLibraryItem``. + """ + return self._invoke('evict', + { + 'library_item_id': library_item_id, + }) +
+
[docs] def sync(self, + library_item_id, + force_sync_content, + ): + """ + Forces the synchronization of an individual library item in a + subscribed library. + + Synchronizing an individual item will update that item's metadata from + the remote source. If the source library item on the remote library has + been deleted, this method will delete the library item from the + subscribed library as well. + + The default behavior of the synchronization is determined by the + :class:`SubscriptionInfo` of the library which owns the library item. + + * If :attr:`SubscriptionInfo.on_demand` is true, then the file content + is not synchronized by default. In this case, only the library item + metadata is synchronized. The file content may still be forcefully + synchronized by passing true for the ``force_sync_content`` parameter. + * If :attr:`SubscriptionInfo.on_demand` is false, then this call will + always synchronize the file content. The ``force_sync_content`` + parameter is ignored when the subscription is not on-demand. + + When the file content has been synchronized, the + :attr:`ItemModel.cached` attribute will be true. + + This method will return immediately and create an asynchronous task to + perform the synchronization. + + :type library_item_id: :class:`str` + :param library_item_id: Identifier of the library item to synchronize. + The parameter must be an identifier for the resource type: + ``com.vmware.content.library.Item``. + :type force_sync_content: :class:`bool` + :param force_sync_content: Whether to synchronize file content as well as metadata. This + parameter applies only if the subscription is on-demand. + :raise: :class:`com.vmware.vapi.std.errors_client.NotFound` + if the library item specified by ``library_item_id`` could not be + found. + :raise: :class:`com.vmware.vapi.std.errors_client.InvalidElementType` + if the library item specified by ``library_item_id`` is not a + member of a subscribed library. + :raise: :class:`com.vmware.vapi.std.errors_client.Unauthorized` + if you do not have all of the privileges described as follows: + + * The resource ``com.vmware.content.library.Item`` referenced by + the parameter ``library_item_id`` requires + ``ContentLibrary.SyncLibraryItem``. + """ + return self._invoke('sync', + { + 'library_item_id': library_item_id, + 'force_sync_content': force_sync_content, + }) +
+class _ItemStub(ApiInterfaceStub): + def __init__(self, config): + # properties for copy operation + copy_input_type = type.StructType('operation-input', { + 'client_token': type.OptionalType(type.StringType()), + 'source_library_item_id': type.IdType(resource_types='com.vmware.content.library.Item'), + 'destination_create_spec': type.ReferenceType(sys.modules[__name__], 'ItemModel'), + }) + copy_error_dict = { + 'com.vmware.vapi.std.errors.not_found': + type.ReferenceType(com.vmware.vapi.std.errors_client, 'NotFound'), + 'com.vmware.vapi.std.errors.invalid_argument': + type.ReferenceType(com.vmware.vapi.std.errors_client, 'InvalidArgument'), + 'com.vmware.vapi.std.errors.invalid_element_type': + type.ReferenceType(com.vmware.vapi.std.errors_client, 'InvalidElementType'), + 'com.vmware.vapi.std.errors.resource_inaccessible': + type.ReferenceType(com.vmware.vapi.std.errors_client, 'ResourceInaccessible'), + + } + copy_input_validator_list = [ + ] + copy_output_validator_list = [ + ] + + # properties for create operation + create_input_type = type.StructType('operation-input', { + 'client_token': type.OptionalType(type.StringType()), + 'create_spec': type.ReferenceType(sys.modules[__name__], 'ItemModel'), + }) + create_error_dict = { + 'com.vmware.vapi.std.errors.not_found': + type.ReferenceType(com.vmware.vapi.std.errors_client, 'NotFound'), + 'com.vmware.vapi.std.errors.invalid_argument': + type.ReferenceType(com.vmware.vapi.std.errors_client, 'InvalidArgument'), + 'com.vmware.vapi.std.errors.invalid_element_type': + type.ReferenceType(com.vmware.vapi.std.errors_client, 'InvalidElementType'), + + } + create_input_validator_list = [ + ] + create_output_validator_list = [ + ] + + # properties for delete operation + delete_input_type = type.StructType('operation-input', { + 'library_item_id': type.IdType(resource_types='com.vmware.content.library.Item'), + }) + delete_error_dict = { + 'com.vmware.vapi.std.errors.invalid_element_type': + type.ReferenceType(com.vmware.vapi.std.errors_client, 'InvalidElementType'), + 'com.vmware.vapi.std.errors.not_found': + type.ReferenceType(com.vmware.vapi.std.errors_client, 'NotFound'), + + } + delete_input_validator_list = [ + ] + delete_output_validator_list = [ + ] + + # properties for get operation + get_input_type = type.StructType('operation-input', { + 'library_item_id': type.IdType(resource_types='com.vmware.content.library.Item'), + }) + get_error_dict = { + 'com.vmware.vapi.std.errors.not_found': + type.ReferenceType(com.vmware.vapi.std.errors_client, 'NotFound'), + + } + get_input_validator_list = [ + ] + get_output_validator_list = [ + ] + + # properties for list operation + list_input_type = type.StructType('operation-input', { + 'library_id': type.IdType(resource_types='com.vmware.content.Library'), + }) + list_error_dict = { + 'com.vmware.vapi.std.errors.not_found': + type.ReferenceType(com.vmware.vapi.std.errors_client, 'NotFound'), + + } + list_input_validator_list = [ + ] + list_output_validator_list = [ + ] + + # properties for find operation + find_input_type = type.StructType('operation-input', { + 'spec': type.ReferenceType(sys.modules[__name__], 'Item.FindSpec'), + }) + find_error_dict = { + 'com.vmware.vapi.std.errors.invalid_argument': + type.ReferenceType(com.vmware.vapi.std.errors_client, 'InvalidArgument'), + + } + find_input_validator_list = [ + ] + find_output_validator_list = [ + ] + + # properties for update operation + update_input_type = type.StructType('operation-input', { + 'library_item_id': type.IdType(resource_types='com.vmware.content.library.Item'), + 'update_spec': type.ReferenceType(sys.modules[__name__], 'ItemModel'), + }) + update_error_dict = { + 'com.vmware.vapi.std.errors.not_found': + type.ReferenceType(com.vmware.vapi.std.errors_client, 'NotFound'), + 'com.vmware.vapi.std.errors.invalid_element_type': + type.ReferenceType(com.vmware.vapi.std.errors_client, 'InvalidElementType'), + 'com.vmware.vapi.std.errors.invalid_argument': + type.ReferenceType(com.vmware.vapi.std.errors_client, 'InvalidArgument'), + + } + update_input_validator_list = [ + ] + update_output_validator_list = [ + ] + + operations = { + 'copy': { + 'input_type': copy_input_type, + 'output_type': type.IdType(resource_types='com.vmware.content.library.Item'), + 'errors': copy_error_dict, + 'input_validator_list': copy_input_validator_list, + 'output_validator_list': copy_output_validator_list, + }, + 'create': { + 'input_type': create_input_type, + 'output_type': type.IdType(resource_types='com.vmware.content.library.Item'), + 'errors': create_error_dict, + 'input_validator_list': create_input_validator_list, + 'output_validator_list': create_output_validator_list, + }, + 'delete': { + 'input_type': delete_input_type, + 'output_type': type.VoidType(), + 'errors': delete_error_dict, + 'input_validator_list': delete_input_validator_list, + 'output_validator_list': delete_output_validator_list, + }, + 'get': { + 'input_type': get_input_type, + 'output_type': type.ReferenceType(sys.modules[__name__], 'ItemModel'), + 'errors': get_error_dict, + 'input_validator_list': get_input_validator_list, + 'output_validator_list': get_output_validator_list, + }, + 'list': { + 'input_type': list_input_type, + 'output_type': type.ListType(type.IdType()), + 'errors': list_error_dict, + 'input_validator_list': list_input_validator_list, + 'output_validator_list': list_output_validator_list, + }, + 'find': { + 'input_type': find_input_type, + 'output_type': type.ListType(type.IdType()), + 'errors': find_error_dict, + 'input_validator_list': find_input_validator_list, + 'output_validator_list': find_output_validator_list, + }, + 'update': { + 'input_type': update_input_type, + 'output_type': type.VoidType(), + 'errors': update_error_dict, + 'input_validator_list': update_input_validator_list, + 'output_validator_list': update_output_validator_list, + }, + } + ApiInterfaceStub.__init__(self, iface_name='com.vmware.content.library.item', + config=config, + operations=operations) +class _SubscribedItemStub(ApiInterfaceStub): + def __init__(self, config): + # properties for evict operation + evict_input_type = type.StructType('operation-input', { + 'library_item_id': type.IdType(resource_types='com.vmware.content.library.Item'), + }) + evict_error_dict = { + 'com.vmware.vapi.std.errors.not_found': + type.ReferenceType(com.vmware.vapi.std.errors_client, 'NotFound'), + 'com.vmware.vapi.std.errors.invalid_element_type': + type.ReferenceType(com.vmware.vapi.std.errors_client, 'InvalidElementType'), + 'com.vmware.vapi.std.errors.invalid_element_configuration': + type.ReferenceType(com.vmware.vapi.std.errors_client, 'InvalidElementConfiguration'), + + } + evict_input_validator_list = [ + ] + evict_output_validator_list = [ + ] + + # properties for sync operation + sync_input_type = type.StructType('operation-input', { + 'library_item_id': type.IdType(resource_types='com.vmware.content.library.Item'), + 'force_sync_content': type.BooleanType(), + }) + sync_error_dict = { + 'com.vmware.vapi.std.errors.not_found': + type.ReferenceType(com.vmware.vapi.std.errors_client, 'NotFound'), + 'com.vmware.vapi.std.errors.invalid_element_type': + type.ReferenceType(com.vmware.vapi.std.errors_client, 'InvalidElementType'), + + } + sync_input_validator_list = [ + ] + sync_output_validator_list = [ + ] + + operations = { + 'evict': { + 'input_type': evict_input_type, + 'output_type': type.VoidType(), + 'errors': evict_error_dict, + 'input_validator_list': evict_input_validator_list, + 'output_validator_list': evict_output_validator_list, + }, + 'sync': { + 'input_type': sync_input_type, + 'output_type': type.VoidType(), + 'errors': sync_error_dict, + 'input_validator_list': sync_input_validator_list, + 'output_validator_list': sync_output_validator_list, + }, + } + ApiInterfaceStub.__init__(self, iface_name='com.vmware.content.library.subscribed_item', + config=config, + operations=operations) +
+ +
+
+
+
+
+ + +
+
+
+
+ + + + \ No newline at end of file diff --git a/vsphere/6.0/_modules/com/vmware/content_client.html b/vsphere/6.0/_modules/com/vmware/content_client.html new file mode 100644 index 00000000..a0aa964a --- /dev/null +++ b/vsphere/6.0/_modules/com/vmware/content_client.html @@ -0,0 +1,1833 @@ + + + + + + + + + + com.vmware.content_client — vCloud Suite SDK for Python 6.0.0 documentation + + + + + + + + + + + + + + +
+
+
+
+ +

Source code for com.vmware.content_client

+#---------------------------------------------------------------------------
+# Copyright 2015 VMware, Inc.  All rights reserved.
+
+# AUTO GENERATED FILE -- DO NOT MODIFY!
+#
+# vAPI stub file for package com.vmware.content.
+#---------------------------------------------------------------------------
+
+"""
+The Content module provides classes and classes for configuring global settings
+and permissions, and for managing libraries in the Content Library Service.
+
+"""
+
+__author__ = 'VMware, Inc.'
+__docformat__ = 'restructuredtext en'
+
+import sys
+
+from vmware.vapi.bindings import type
+from vmware.vapi.bindings.converter import TypeConverter
+from vmware.vapi.bindings.enum import Enum
+from vmware.vapi.bindings.error import VapiError
+from vmware.vapi.bindings.struct import VapiStruct
+from vmware.vapi.bindings.stub import VapiInterface, ApiInterfaceStub
+from vmware.vapi.bindings.common import raise_core_exception
+from vmware.vapi.data.validator import UnionValidator, HasFieldsOfValidator
+from vmware.vapi.exception import CoreException
+import com.vmware.vapi.std.errors_client
+import com.vmware.vapi.std_client
+import com.vmware.content.library_client
+
+
+
[docs]class ConfigurationModel(VapiStruct): + """ + The ``ConfigurationModel`` class defines the global settings of the Content + Library Service. + + .. tip:: + The arguments are used to initialize data attributes with the same + names. + """ + + + + def __init__(self, + automatic_sync_enabled=None, + automatic_sync_start_hour=None, + automatic_sync_stop_hour=None, + maximum_concurrent_item_syncs=None, + ): + """ + :type automatic_sync_enabled: :class:`bool` + :param automatic_sync_enabled: Whether automatic synchronization is enabled. + + When automatic synchronization is enabled, the Content Library + Service will automatically synchronize all subscribed libraries on + a daily basis. Subscribed libraries with the + :attr:`com.vmware.content.library_client.SubscriptionInfo.automatic_sync_enabled` + flag turned on will be synchronized every hour between + :attr:`ConfigurationModel.automatic_sync_start_hour` and + :attr:`ConfigurationModel.automatic_sync_stop_hour`. + This attribute is not used for the ``create`` method. It will + always be present in the return value of the ``get`` or ``list`` + methods. It is optional for the ``update`` method. + :type automatic_sync_start_hour: :class:`long` + :param automatic_sync_start_hour: The hour at which the automatic synchronization will start. This + value is between 0 (midnight) and 23 inclusive. + This attribute is not used for the ``create`` method. It will + always be present in the return value of the ``get`` or ``list`` + methods. It is optional for the ``update`` method. + :type automatic_sync_stop_hour: :class:`long` + :param automatic_sync_stop_hour: The hour at which the automatic synchronization will stop. Any + active synchronization operation will continue to run, however no + new synchronization operations will be triggered after the stop + hour. This value is between 0 (midnight) and 23 inclusive. + This attribute is not used for the ``create`` method. It will + always be present in the return value of the ``get`` or ``list`` + methods. It is optional for the ``update`` method. + :type maximum_concurrent_item_syncs: :class:`long` + :param maximum_concurrent_item_syncs: The maximum allowed number of library items to synchronize + concurrently from remote libraries. This must be a positive number. + The service may not be able to guarantee the requested concurrency + if there is no available capacity. + + This setting is global across all subscribed libraries. + This attribute is not used for the ``create`` method. It will + always be present in the return value of the ``get`` or ``list`` + methods. It is optional for the ``update`` method. + """ + self.automatic_sync_enabled = automatic_sync_enabled + self.automatic_sync_start_hour = automatic_sync_start_hour + self.automatic_sync_stop_hour = automatic_sync_stop_hour + self.maximum_concurrent_item_syncs = maximum_concurrent_item_syncs + VapiStruct.__init__(self) +
+ConfigurationModel._set_binding_type(type.StructType( + 'com.vmware.content.configuration_model', { + 'automatic_sync_enabled': type.OptionalType(type.BooleanType()), + 'automatic_sync_start_hour': type.OptionalType(type.IntegerType()), + 'automatic_sync_stop_hour': type.OptionalType(type.IntegerType()), + 'maximum_concurrent_item_syncs': type.OptionalType(type.IntegerType()), + }, + ConfigurationModel, + False, + None)) + + + +
[docs]class LibraryModel(VapiStruct): + """ + The :class:`LibraryModel` class represents a Content Library resource + model. + + A ``LibraryModel`` is a container for a set of items which represent a + usable set of files. The Content Library Service allows for multiple + libraries to be created with separate authorization and sharing policies. + + Each ``LibraryModel`` is a container for a set of + :class:`com.vmware.content.library_client.ItemModel` instances. Each item + is a logical object in a library, which may have multiple files. + + A ``LibraryModel`` may be local or subscribed. A local library has its + source of truth about items within this Content Library Service. Items may + be added to or removed from the library. A local library may also be + private or published. When published, the library is exposed by a network + endpoint and can be used by another Content Library Service for + synchronization. A private local library cannot be used for + synchronization. + + A subscribed library is a library which gets its source of truth from + another library that may be across a network in another Content Library + Service. A subscribed library may have a different name and metadata from + the library to which it subscribes, but the set of library items is always + the same as those in the source library. Library items cannot be manually + added to a subscribed library -- they can only be added by adding new items + to the source library. + + .. tip:: + The arguments are used to initialize data attributes with the same + names. + """ + + + + def __init__(self, + id=None, + creation_time=None, + description=None, + last_modified_time=None, + last_sync_time=None, + name=None, + storage_backings=None, + type=None, + version=None, + publish_info=None, + subscription_info=None, + server_guid=None, + ): + """ + :type id: :class:`str` + :param id: An identifier which uniquely identifies this ``LibraryModel``. + When clients pass a value of this class as a parameter, the + attribute must be an identifier for the resource type: + ``com.vmware.content.Library``. When methods return a value of this + class as a return value, the attribute will be an identifier for + the resource type: ``com.vmware.content.Library``. + This attribute is not used for the ``create`` method. It will not + be present in the return value of the ``get`` or ``list`` methods. + It is not used for the ``update`` method. + :type creation_time: :class:`datetime.datetime` + :param creation_time: The date and time when this library was created. + This attribute is not used for the ``create`` method. It will + always be present in the return value of the ``get`` or ``list`` + methods. It is not used for the ``update`` method. + :type description: :class:`str` + :param description: A human-readable description for this library. + This attribute is optional for the ``create`` method. Leaving it + None during creation will result in an empty string value. It will + always be present in the result of a ``get`` or ``list`` method. It + is optional for the ``update`` method. Leaving it None during + update indicates that the description should be left unchanged. + :type last_modified_time: :class:`datetime.datetime` + :param last_modified_time: The date and time when this library was last updated. + + This attribute is updated automatically when the library properties + are changed. This attribute is not affected by adding, removing, or + modifying a library item or its content within the library. Tagging + the library or syncing the subscribed library does not alter this + attribute. + This attribute is not used for the ``create`` method. It will + always be present in the return value of the ``get`` or ``list`` + methods. It is not used for the ``update`` method. + :type last_sync_time: :class:`datetime.datetime` + :param last_sync_time: The date and time when this library was last synchronized. + + This attribute applies only to subscribed libraries. It is updated + every time a synchronization is triggered on the library. The value + is None for a local library. + This attribute is not used for the ``create`` method. It is + optional in the return value of the ``get`` or ``list`` methods. It + is not used for the ``update`` method. + :type name: :class:`str` + :param name: The name of the library. + + A Library is identified by a human-readable name. Library names + cannot be undefined or an empty string. Names do not have to be + unique. + This attribute must be provided for the ``create`` method. It will + always be present in the return value of the ``get`` or ``list`` + methods. It is optional for the ``update`` method. + :type storage_backings: :class:`list` of :class:`com.vmware.content.library_client.StorageBacking` + :param storage_backings: The list of storage backings which are available for this library. + + A :class:`com.vmware.content.library_client.StorageBacking` defines + a storage location which can be used to store files for the library + items in this library. Multiple storage locations are not currently + supported but may become supported in future releases. + This attribute must be provided for the ``create`` method. It will + always be present in the return value of the ``get`` or ``list`` + methods. It is not used for the ``update`` method. + :type type: :class:`LibraryModel.LibraryType` + :param type: The type (LOCAL, SUBSCRIBED) of this library. + + This value can be used to determine what additional services and + information can be available for this library. + This attribute must be provided for the ``create`` method. It will + always be present in the return value of the ``get`` or ``list`` + methods. It is not used for the ``update`` method. + :type version: :class:`str` + :param version: A version number which is updated on metadata changes. This value + allows clients to detect concurrent updates and prevent accidental + clobbering of data. + + This value represents a number which is incremented every time + library properties, such as name or description, are changed. It is + not incremented by changes to a library item within the library, + including adding or removing items. It is also not affected by + tagging the library. + This attribute is not used for the ``create`` method. It will + always be present in the result of a ``get`` or ``list`` method. It + is optional for the ``update`` method. Leaving it None during + update indicates that you do not need to detect concurrent updates. + :type publish_info: :class:`com.vmware.content.library_client.PublishInfo` + :param publish_info: Defines how this library is published so that it can be subscribed + to by a remote subscribed library. + + The :class:`com.vmware.content.library_client.PublishInfo` defines + where and how the metadata for this local library is accessible. A + local library is only published publically if + :attr:`com.vmware.content.library_client.PublishInfo.published` is + ``true``. + This attribute is optional for the ``create`` and ``update`` + methods. If not specified during creation, the default is for the + library to not be published. If not specified during update, the + attribute is left unchanged. + :type subscription_info: :class:`com.vmware.content.library_client.SubscriptionInfo` + :param subscription_info: Defines the subscription behavior for this Library. + + The :class:`com.vmware.content.library_client.SubscriptionInfo` + defines how this subscribed library synchronizes to a remote + source. Setting the value will determine the remote source to which + the library synchronizes, and how. Changing the subscription will + result in synchronizing to a new source. If the new source differs + from the old one, the old library items and data will be lost. + Setting + :attr:`com.vmware.content.library_client.SubscriptionInfo.automatic_sync_enabled` + to false will halt subscription but will not remove existing cached + data. + This attribute is optional for the ``create`` and ``update`` + methods. If not specified during creation, a default will be + created without an active subscription. If not specified during + update, the attribute is left unchanged. + :type server_guid: :class:`str` + :param server_guid: The unique identifier of the vCenter server where the library + exists. + When clients pass a value of this class as a parameter, the + attribute must be an identifier for the resource type: + ``com.vmware.vcenter.VCenter``. When methods return a value of this + class as a return value, the attribute will be an identifier for + the resource type: ``com.vmware.vcenter.VCenter``. + This attribute is optional for the ``create`` method. It will + always be present in the return value of the ``get`` or ``list`` + methods. It is not used for the ``update`` method. + """ + self.id = id + self.creation_time = creation_time + self.description = description + self.last_modified_time = last_modified_time + self.last_sync_time = last_sync_time + self.name = name + self.storage_backings = storage_backings + self.type = type + self.version = version + self.publish_info = publish_info + self.subscription_info = subscription_info + self.server_guid = server_guid + VapiStruct.__init__(self) + +
[docs] class LibraryType(Enum): + """ + The ``LibraryModel.LibraryType`` class defines the type of a + :class:`LibraryModel`. + + The type of a library can be used to determine which additional services + can be performed with a library. + + .. note:: + This class represents an enumerated type in the interface language + definition. The class contains class attributes which represent the + values in the current version of the enumerated type. Newer versions of + the enumerated type may contain new values. To use new values of the + enumerated type in communication with a server that supports the newer + version of the API, you instantiate this class. See :ref:`enumerated + type description page <enumeration_description>`. + """ + LOCAL = None + """ + The library contents are defined and stored by the local Content Library + Service installation. + + A local library can be retrieved and managed via the :class:`LocalLibrary`. + + """ + SUBSCRIBED = None + """ + The library synchronizes its items and content from another published + library. + + A subscribed library can be retrieved and managed via the + :class:`SubscribedLibrary`. + + """ + + def __init__(self, string): + """ + :type string: :class:`str` + :param string: String value for the :class:`LibraryType` instance. + """ + Enum.__init__(string) +
+ LibraryType.LOCAL = LibraryType('LOCAL') + LibraryType.SUBSCRIBED = LibraryType('SUBSCRIBED') + LibraryType._set_binding_type(type.EnumType( + 'com.vmware.content.library_model.library_type', + LibraryType))
+LibraryModel._set_binding_type(type.StructType( + 'com.vmware.content.library_model', { + 'id': type.OptionalType(type.IdType()), + 'creation_time': type.OptionalType(type.DateTimeType()), + 'description': type.OptionalType(type.StringType()), + 'last_modified_time': type.OptionalType(type.DateTimeType()), + 'last_sync_time': type.OptionalType(type.DateTimeType()), + 'name': type.OptionalType(type.StringType()), + 'storage_backings': type.OptionalType(type.ListType(type.ReferenceType(com.vmware.content.library_client, 'StorageBacking'))), + 'type': type.OptionalType(type.ReferenceType(sys.modules[__name__], 'LibraryModel.LibraryType')), + 'version': type.OptionalType(type.StringType()), + 'publish_info': type.OptionalType(type.ReferenceType(com.vmware.content.library_client, 'PublishInfo')), + 'subscription_info': type.OptionalType(type.ReferenceType(com.vmware.content.library_client, 'SubscriptionInfo')), + 'server_guid': type.OptionalType(type.IdType()), + }, + LibraryModel, + True, + ["id"])) + + + +
[docs]class Configuration(VapiInterface): + """ + The ``Configuration`` class provides methods to configure the global + settings of the Content Library Service. + + The configuration settings are used by the Content Library Service to + control the behavior of various operations. + """ + + + def __init__(self, config): + """ + :type config: :class:`vmware.vapi.bindings.stub.StubConfiguration` + :param config: Configuration to be used for creating the stub. + """ + VapiInterface.__init__(self, config, _ConfigurationStub) + + +
[docs] def update(self, + model, + ): + """ + Updates the configuration. The update is incremental. Any attribute in + the :class:`ConfigurationModel` class that is None will not be + modified. Note that this update method doesn't guarantee an atomic + change of all the properties. In the case of a system crash or failure, + some of the properties could be left unchanged while others may be + updated. + + :type model: :class:`ConfigurationModel` + :param model: The :class:`ConfigurationModel` specifying the settings to update. + :raise: :class:`com.vmware.vapi.std.errors_client.InvalidArgument` + if one of the configuration properties is not within the proper + range. + :raise: :class:`com.vmware.vapi.std.errors_client.Unauthorized` + if you do not have all of the privileges described as follows: + + * Method execution requires ``ContentLibrary.UpdateConfiguration``. + """ + return self._invoke('update', + { + 'model': model, + }) +
+
[docs] def get(self): + """ + Retrieves the current configuration values. + + + :rtype: :class:`ConfigurationModel` + :return: The :class:`ConfigurationModel` instance representing the + configuration of the Content Library Service. + :raise: :class:`com.vmware.vapi.std.errors_client.Unauthorized` + if you do not have all of the privileges described as follows: + + * Method execution requires ``ContentLibrary.GetConfiguration``. + """ + return self._invoke('get', None) +
+
[docs]class Library(VapiInterface): + """ + The ``Library`` class provides methods to manage and find + :class:`LibraryModel` entities. + + The ``Library`` class provides support for generic functionality which can + be applied equally to all types of libraries. The functionality provided by + this class will not affect the properties specific to the type of library. + See also :class:`LocalLibrary` and :class:`SubscribedLibrary`. + """ + RESOURCE_TYPE = "com.vmware.content.Library" + """ + Resource type for library. + + """ + + def __init__(self, config): + """ + :type config: :class:`vmware.vapi.bindings.stub.StubConfiguration` + :param config: Configuration to be used for creating the stub. + """ + VapiInterface.__init__(self, config, _LibraryStub) + +
[docs] class FindSpec(VapiStruct): + """ + Specifies the properties that can be used as a filter to find libraries. + When multiple attributes are specified, all properties of the library must + match the specification. + + .. tip:: + The arguments are used to initialize data attributes with the same + names. + """ + + + + def __init__(self, + name=None, + type=None, + ): + """ + :type name: :class:`str` or ``None`` + :param name: Name of the library to search. The name is case-insensitive. See + :attr:`LibraryModel.name`. + If not specified any name will be searched. + :type type: :class:`LibraryModel.LibraryType` or ``None`` + :param type: Library type to search. See :attr:`LibraryModel.type`. + If not specified any library type will be searched. + """ + self.name = name + self.type = type + VapiStruct.__init__(self) +
+ FindSpec._set_binding_type(type.StructType( + 'com.vmware.content.library.find_spec', { + 'name': type.OptionalType(type.StringType()), + 'type': type.OptionalType(type.ReferenceType(sys.modules[__name__], 'LibraryModel.LibraryType')), + }, + FindSpec, + False, + None)) + + +
[docs] def get(self, + library_id, + ): + """ + Returns a given :class:`LibraryModel`. + + :type library_id: :class:`str` + :param library_id: Identifier of the library to return. + The parameter must be an identifier for the resource type: + ``com.vmware.content.Library``. + :rtype: :class:`LibraryModel` + :return: The :class:`LibraryModel` instance with the specified + ``library_id``. + :raise: :class:`com.vmware.vapi.std.errors_client.NotFound` + if the specified library does not exist. + :raise: :class:`com.vmware.vapi.std.errors_client.Unauthorized` + if you do not have all of the privileges described as follows: + + * The resource ``com.vmware.content.Library`` referenced by the + parameter ``library_id`` requires ``System.Read``. + """ + return self._invoke('get', + { + 'library_id': library_id, + }) +
+
[docs] def list(self): + """ + Returns the identifiers of all libraries of any type in the Content + Library. + + + :rtype: :class:`list` of :class:`str` + :return: The :class:`list` of all identifiers of all libraries in the + Content Library. + The return value will contain identifiers for the resource type: + ``com.vmware.content.Library``. + :raise: :class:`com.vmware.vapi.std.errors_client.Unauthorized` + if you do not have all of the privileges described as follows: + + * Method execution requires ``System.Read``. + """ + return self._invoke('list', None) +
+
[docs] def find(self, + spec, + ): + """ + Returns a list of all the visible (as determined by authorization + policy) libraries matching the requested :class:`Library.FindSpec`. + + :type spec: :class:`Library.FindSpec` + :param spec: Specification describing what properties to filter on. + :rtype: :class:`list` of :class:`str` + :return: The :class:`list` of identifiers of all the visible libraries + matching the given ``spec``. + The return value will contain identifiers for the resource type: + ``com.vmware.content.Library``. + :raise: :class:`com.vmware.vapi.std.errors_client.InvalidArgument` + if no properties are specified in the ``spec``. + :raise: :class:`com.vmware.vapi.std.errors_client.Unauthorized` + if you do not have all of the privileges described as follows: + + * Method execution requires ``System.Read``. + """ + return self._invoke('find', + { + 'spec': spec, + }) +
+
[docs] def update(self, + library_id, + update_spec, + ): + """ + Updates the properties of a library. + + This is an incremental update to the library. Any attribute in the + :class:`LibraryModel` class that is None will not be modified. + + This method will only update the common properties for all library + types. This will not, for example, update the + :attr:`LibraryModel.publish_info` of a local library, nor the + :attr:`LibraryModel.subscription_info` of a subscribed library. + Specific properties are updated in :func:`LocalLibrary.update` and + :func:`SubscribedLibrary.update`. + + :type library_id: :class:`str` + :param library_id: Identifier of the library to update. + The parameter must be an identifier for the resource type: + ``com.vmware.content.Library``. + :type update_spec: :class:`LibraryModel` + :param update_spec: Specification of the new property values to set on the library. + :raise: :class:`com.vmware.vapi.std.errors_client.NotFound` + if the library associated with ``library_id`` does not exist. + :raise: :class:`com.vmware.vapi.std.errors_client.InvalidArgument` + if the ``update_spec`` is not valid. + :raise: :class:`com.vmware.vapi.std.errors_client.InvalidArgument` + if the :attr:`LibraryModel.version` of ``update_spec`` is not equal + to the current version of the library. + :raise: :class:`com.vmware.vapi.std.errors_client.Unauthorized` + if you do not have all of the privileges described as follows: + + * The resource ``com.vmware.content.Library`` referenced by the + parameter ``library_id`` requires ``ContentLibrary.UpdateLibrary``. + """ + return self._invoke('update', + { + 'library_id': library_id, + 'update_spec': update_spec, + }) +
+
[docs]class LocalLibrary(VapiInterface): + """ + The ``LocalLibaray`` class manages local libraries. + + The ``LocalLibrary`` class provides support for creating and maintaining + local library instances. A local library may also use the :class:`Library` + class to manage general library functionality. + """ + + + def __init__(self, config): + """ + :type config: :class:`vmware.vapi.bindings.stub.StubConfiguration` + :param config: Configuration to be used for creating the stub. + """ + VapiInterface.__init__(self, config, _LocalLibraryStub) + + +
[docs] def create(self, + create_spec, + client_token=None, + ): + """ + Creates a new local library. + + :type client_token: :class:`str` or ``None`` + :param client_token: A unique token generated on the client for each creation request. + The token should be a universally unique identifier (UUID), for + example: ``b8a2a2e3-2314-43cd-a871-6ede0f429751``. This token can + be used to guarantee idempotent creation. + If not specified creation is not idempotent. + :type create_spec: :class:`LibraryModel` + :param create_spec: Specification for the new local library. + :rtype: :class:`str` + :return: Identifier of the newly created :class:`LibraryModel`. + The return value will be an identifier for the resource type: + ``com.vmware.content.Library``. + :raise: :class:`com.vmware.vapi.std.errors_client.InvalidArgument` + if the ``create_spec`` is not valid. + :raise: :class:`com.vmware.vapi.std.errors_client.InvalidArgument` + if the ``client_token`` does not conform to the UUID format. + :raise: :class:`com.vmware.vapi.std.errors_client.Unsupported` + if using multiple storage backings. + :raise: :class:`com.vmware.vapi.std.errors_client.Unauthorized` + if you do not have all of the privileges described as follows: + + * Method execution requires ``ContentLibrary.CreateLocalLibrary``. + """ + return self._invoke('create', + { + 'client_token': client_token, + 'create_spec': create_spec, + }) +
+
[docs] def delete(self, + library_id, + ): + """ + Deletes the specified local library. + + Deleting a local library will remove the entry immediately and begin an + asynchronous task to remove all cached content for the library. If the + asynchronous task fails, file content may remain on the storage + backing. This content will require manual removal. + + :type library_id: :class:`str` + :param library_id: Identifier of the local library to delete. + The parameter must be an identifier for the resource type: + ``com.vmware.content.Library``. + :raise: :class:`com.vmware.vapi.std.errors_client.InvalidElementType` + if the library specified by ``library_id`` is not a local library. + :raise: :class:`com.vmware.vapi.std.errors_client.NotFound` + if the library specified by ``library_id`` does not exist. + :raise: :class:`com.vmware.vapi.std.errors_client.Unauthorized` + if you do not have all of the privileges described as follows: + + * The resource ``com.vmware.content.Library`` referenced by the + parameter ``library_id`` requires + ``ContentLibrary.DeleteLocalLibrary``. + """ + return self._invoke('delete', + { + 'library_id': library_id, + }) +
+
[docs] def get(self, + library_id, + ): + """ + Returns a given local library. + + :type library_id: :class:`str` + :param library_id: Identifier of the local library to return. + The parameter must be an identifier for the resource type: + ``com.vmware.content.Library``. + :rtype: :class:`LibraryModel` + :return: The :class:`LibraryModel` instance associated with ``library_id``. + :raise: :class:`com.vmware.vapi.std.errors_client.NotFound` + if the library specified by ``library_id`` does not exist. + :raise: :class:`com.vmware.vapi.std.errors_client.InvalidElementType` + if the library specified by ``library_id`` is not a local library. + :raise: :class:`com.vmware.vapi.std.errors_client.Unauthorized` + if you do not have all of the privileges described as follows: + + * The resource ``com.vmware.content.Library`` referenced by the + parameter ``library_id`` requires ``System.Read``. + """ + return self._invoke('get', + { + 'library_id': library_id, + }) +
+
[docs] def list(self): + """ + Returns the identifiers of all local libraries in the Content Library. + + + :rtype: :class:`list` of :class:`str` + :return: The :class:`list` of identifiers of all local libraries in the + Content Library. + The return value will contain identifiers for the resource type: + ``com.vmware.content.Library``. + :raise: :class:`com.vmware.vapi.std.errors_client.Unauthorized` + if you do not have all of the privileges described as follows: + + * Method execution requires ``System.Read``. + """ + return self._invoke('list', None) +
+
[docs] def update(self, + library_id, + update_spec, + ): + """ + Updates the properties of a local library. + + This is an incremental update to the local library. Attributes that are + None in the update specification will be left unchanged. + + :type library_id: :class:`str` + :param library_id: Identifier of the local library to update. + The parameter must be an identifier for the resource type: + ``com.vmware.content.Library``. + :type update_spec: :class:`LibraryModel` + :param update_spec: Specification of the new property values to set on the local + library. + :raise: :class:`com.vmware.vapi.std.errors_client.NotFound` + if the library specified by ``library_id`` does not exist. + :raise: :class:`com.vmware.vapi.std.errors_client.InvalidElementType` + if the library specified by ``library_id`` is not a local library. + :raise: :class:`com.vmware.vapi.std.errors_client.InvalidArgument` + if the ``update_spec`` is not valid. + :raise: :class:`com.vmware.vapi.std.errors_client.InvalidArgument` + if the :attr:`LibraryModel.version` of ``update_spec`` is not equal + to the current version of the library. + :raise: :class:`com.vmware.vapi.std.errors_client.Unauthorized` + if you do not have all of the privileges described as follows: + + * The resource ``com.vmware.content.Library`` referenced by the + parameter ``library_id`` requires + ``ContentLibrary.UpdateLocalLibrary``. + """ + return self._invoke('update', + { + 'library_id': library_id, + 'update_spec': update_spec, + }) +
+
[docs]class SubscribedLibrary(VapiInterface): + """ + + """ + + + def __init__(self, config): + """ + :type config: :class:`vmware.vapi.bindings.stub.StubConfiguration` + :param config: Configuration to be used for creating the stub. + """ + VapiInterface.__init__(self, config, _SubscribedLibraryStub) + +
[docs] class ProbeResult(VapiStruct): + """ + The ``SubscribedLibrary.ProbeResult`` class defines the subscription + information probe result. This describes whether using a given subscription + URL is successful or if there are access problems, such as SSL errors. + + .. tip:: + The arguments are used to initialize data attributes with the same + names. + """ + + + + def __init__(self, + status=None, + ssl_thumbprint=None, + error_messages=None, + ): + """ + :type status: :class:`SubscribedLibrary.ProbeResult.Status` + :param status: The status of probe result. This will be one of SUCCESS, + INVALID_URL, TIMED_OUT, HOST_NOT_FOUND, RESOURCE_NOT_FOUND, + INVALID_CREDENTIALS, CERTIFICATE_ERROR, UNKNOWN_ERROR. + :type ssl_thumbprint: :class:`str` or ``None`` + :param ssl_thumbprint: The SSL thumbprint for the remote endpoint. + An SSL thumbprint is only returned if the host is secured with + SSL/TLS. + :type error_messages: :class:`list` of :class:`com.vmware.vapi.std_client.LocalizableMessage` + :param error_messages: If the probe result is in an error status, this attribute will + contain the detailed error messages. + """ + self.status = status + self.ssl_thumbprint = ssl_thumbprint + self.error_messages = error_messages + VapiStruct.__init__(self) + +
[docs] class Status(Enum): + """ + The ``SubscribedLibrary.ProbeResult.Status`` class defines the error status + constants for the probe result. + + .. note:: + This class represents an enumerated type in the interface language + definition. The class contains class attributes which represent the + values in the current version of the enumerated type. Newer versions of + the enumerated type may contain new values. To use new values of the + enumerated type in communication with a server that supports the newer + version of the API, you instantiate this class. See :ref:`enumerated + type description page <enumeration_description>`. + """ + SUCCESS = None + """ + Indicates that the probe was successful. + + """ + INVALID_URL = None + """ + Indicates that the supplied URL was not valid. + + """ + TIMED_OUT = None + """ + Indicates that the probe timed out while attempting to connect to the URL. + + """ + HOST_NOT_FOUND = None + """ + Indicates that the host in the URL could not be found. + + """ + RESOURCE_NOT_FOUND = None + """ + Indicates that the given resource at the URL was not found. + + """ + INVALID_CREDENTIALS = None + """ + Indicates that the connection was rejected due to invalid credentials. + + """ + CERTIFICATE_ERROR = None + """ + Indicates that the provided server certificate thumbprint in + :attr:`com.vmware.content.library_client.SubscriptionInfo.ssl_thumbprint` + is invalid. In this case, the returned null should be set in + :attr:`com.vmware.content.library_client.SubscriptionInfo.ssl_thumbprint`. + + """ + UNKNOWN_ERROR = None + """ + Indicates an unspecified error different from the other error cases defined + in :class:`SubscribedLibrary.ProbeResult.Status`. + + """ + + def __init__(self, string): + """ + :type string: :class:`str` + :param string: String value for the :class:`Status` instance. + """ + Enum.__init__(string) +
+ Status.SUCCESS = Status('SUCCESS') + Status.INVALID_URL = Status('INVALID_URL') + Status.TIMED_OUT = Status('TIMED_OUT') + Status.HOST_NOT_FOUND = Status('HOST_NOT_FOUND') + Status.RESOURCE_NOT_FOUND = Status('RESOURCE_NOT_FOUND') + Status.INVALID_CREDENTIALS = Status('INVALID_CREDENTIALS') + Status.CERTIFICATE_ERROR = Status('CERTIFICATE_ERROR') + Status.UNKNOWN_ERROR = Status('UNKNOWN_ERROR') + Status._set_binding_type(type.EnumType( + 'com.vmware.content.subscribed_library.probe_result.status', + Status))
+ ProbeResult._set_binding_type(type.StructType( + 'com.vmware.content.subscribed_library.probe_result', { + 'status': type.ReferenceType(sys.modules[__name__], 'SubscribedLibrary.ProbeResult.Status'), + 'ssl_thumbprint': type.OptionalType(type.StringType()), + 'error_messages': type.ListType(type.ReferenceType(com.vmware.vapi.std_client, 'LocalizableMessage')), + }, + ProbeResult, + False, + None)) + + +
[docs] def create(self, + create_spec, + client_token=None, + ): + """ + Creates a new subscribed library. + + Once created, the subscribed library will be empty. If the + :attr:`LibraryModel.subscription_info` property is set, the Content + Library Service will attempt to synchronize to the remote source. This + is an asynchronous operation so the content of the published library + may not immediately appear. + + :type client_token: :class:`str` or ``None`` + :param client_token: Unique token generated on the client for each creation request. The + token should be a universally unique identifier (UUID), for + example: ``b8a2a2e3-2314-43cd-a871-6ede0f429751``. This token can + be used to guarantee idempotent creation. + If not specified creation is not idempotent. + :type create_spec: :class:`LibraryModel` + :param create_spec: Specification for the new subscribed library. + :rtype: :class:`str` + :return: Identifier of the newly created subscribed library. + The return value will be an identifier for the resource type: + ``com.vmware.content.Library``. + :raise: :class:`com.vmware.vapi.std.errors_client.InvalidArgument` + if the ``create_spec`` is not valid. + :raise: :class:`com.vmware.vapi.std.errors_client.InvalidArgument` + if the ``client_token`` does not conform to the UUID format. + :raise: :class:`com.vmware.vapi.std.errors_client.Unsupported` + if using multiple storage backings. + :raise: :class:`com.vmware.vapi.std.errors_client.ResourceInaccessible` + if subscribing to a published library which cannot be accessed. + :raise: :class:`com.vmware.vapi.std.errors_client.Unauthorized` + if you do not have all of the privileges described as follows: + + * Method execution requires + ``ContentLibrary.CreateSubscribedLibrary``. + """ + return self._invoke('create', + { + 'client_token': client_token, + 'create_spec': create_spec, + }) +
+
[docs] def delete(self, + library_id, + ): + """ + Deletes the specified subscribed library. + + Deleting a subscribed library will remove the entry immediately and + begin an asynchronous task to remove all cached content for the + library. If the asynchronous task fails, file content may remain on the + storage backing. This content will require manual removal. + + :type library_id: :class:`str` + :param library_id: Identifier of the subscribed library to delete. + The parameter must be an identifier for the resource type: + ``com.vmware.content.Library``. + :raise: :class:`com.vmware.vapi.std.errors_client.InvalidElementType` + if the library referenced by ``library_id`` is not a subscribed + library. + :raise: :class:`com.vmware.vapi.std.errors_client.NotFound` + if the library referenced by ``library_id`` does not exist. + :raise: :class:`com.vmware.vapi.std.errors_client.Unauthorized` + if you do not have all of the privileges described as follows: + + * The resource ``com.vmware.content.Library`` referenced by the + parameter ``library_id`` requires + ``ContentLibrary.DeleteSubscribedLibrary``. + """ + return self._invoke('delete', + { + 'library_id': library_id, + }) +
+
[docs] def evict(self, + library_id, + ): + """ + Evicts the cached content of an on-demand subscribed library. + + This method allows the cached content of a subscribed library to be + removed to free up storage capacity. This method will only work when a + subscribed library is synchronized on-demand. + + :type library_id: :class:`str` + :param library_id: Identifier of the subscribed library whose content should be + evicted. + The parameter must be an identifier for the resource type: + ``com.vmware.content.Library``. + :raise: :class:`com.vmware.vapi.std.errors_client.NotFound` + if the library specified by ``library_id`` does not exist. + :raise: :class:`com.vmware.vapi.std.errors_client.InvalidElementType` + if the library specified by ``library_id`` is not a subscribed + library. + :raise: :class:`com.vmware.vapi.std.errors_client.NotAllowedInCurrentState` + if the library specified by ``library_id`` does not synchronize + on-demand. + :raise: :class:`com.vmware.vapi.std.errors_client.Unauthorized` + if you do not have all of the privileges described as follows: + + * The resource ``com.vmware.content.Library`` referenced by the + parameter ``library_id`` requires + ``ContentLibrary.EvictSubscribedLibrary``. + """ + return self._invoke('evict', + { + 'library_id': library_id, + }) +
+
[docs] def get(self, + library_id, + ): + """ + Returns a given subscribed library. + + :type library_id: :class:`str` + :param library_id: Identifier of the subscribed library to return. + The parameter must be an identifier for the resource type: + ``com.vmware.content.Library``. + :rtype: :class:`LibraryModel` + :return: The :class:`LibraryModel` instance that corresponds to + ``library_id``. + :raise: :class:`com.vmware.vapi.std.errors_client.NotFound` + if the library associated with ``library_id`` does not exist. + :raise: :class:`com.vmware.vapi.std.errors_client.InvalidElementType` + if the library associated with ``library_id`` is not a subscribed + library. + :raise: :class:`com.vmware.vapi.std.errors_client.Unauthorized` + if you do not have all of the privileges described as follows: + + * The resource ``com.vmware.content.Library`` referenced by the + parameter ``library_id`` requires ``System.Read``. + """ + return self._invoke('get', + { + 'library_id': library_id, + }) +
+
[docs] def list(self): + """ + Returns the identifiers of all subscribed libraries in the Content + Library. + + + :rtype: :class:`list` of :class:`str` + :return: The :class:`list` of identifiers of all subscribed libraries in the + Content Library. + The return value will contain identifiers for the resource type: + ``com.vmware.content.Library``. + :raise: :class:`com.vmware.vapi.std.errors_client.Unauthorized` + if you do not have all of the privileges described as follows: + + * Method execution requires ``System.Read``. + """ + return self._invoke('list', None) +
+
[docs] def sync(self, + library_id, + ): + """ + Forces the synchronization of the subscribed library. + + Synchronizing a subscribed library forcefully with this method will + perform the same synchronization behavior as would run periodically for + the library. The + :attr:`com.vmware.content.library_client.SubscriptionInfo.on_demand` + setting is respected. Calling this method on a library that is already + in the process of synchronizing will have no effect. + + :type library_id: :class:`str` + :param library_id: Identifier of the subscribed library to synchronize. + The parameter must be an identifier for the resource type: + ``com.vmware.content.Library``. + :raise: :class:`com.vmware.vapi.std.errors_client.NotFound` + if the library specified by ``library_id`` does not exist. + :raise: :class:`com.vmware.vapi.std.errors_client.InvalidElementType` + if the library specified by ``library_id`` is not a subscribed + library. + :raise: :class:`com.vmware.vapi.std.errors_client.InvalidArgument` + if some parameter in the subscribed library subscription info is + invalid. + :raise: :class:`com.vmware.vapi.std.errors_client.ResourceInaccessible` + if the published library cannot be contacted or found. + :raise: :class:`com.vmware.vapi.std.errors_client.Unauthorized` + if you do not have all of the privileges described as follows: + + * The resource ``com.vmware.content.Library`` referenced by the + parameter ``library_id`` requires ``ContentLibrary.SyncLibrary``. + """ + return self._invoke('sync', + { + 'library_id': library_id, + }) +
+
[docs] def update(self, + library_id, + update_spec, + ): + """ + Updates the properties of a subscribed library. + + This is an incremental update to the subscribed library. Attributes + that are None in the update specification will be left unchanged. + + :type library_id: :class:`str` + :param library_id: Identifier of the subscribed library to update. + The parameter must be an identifier for the resource type: + ``com.vmware.content.Library``. + :type update_spec: :class:`LibraryModel` + :param update_spec: Specification of the new property values to set on the subscribed + library. + :raise: :class:`com.vmware.vapi.std.errors_client.NotFound` + if the library specified by ``library_id`` does not exist. + :raise: :class:`com.vmware.vapi.std.errors_client.InvalidElementType` + if the library specified by ``library_id`` is not a subscribed + library. + :raise: :class:`com.vmware.vapi.std.errors_client.InvalidArgument` + if the ``update_spec`` is not valid. + :raise: :class:`com.vmware.vapi.std.errors_client.InvalidArgument` + if the :attr:`LibraryModel.version` of ``update_spec`` is not equal + to the current version of the library. + :raise: :class:`com.vmware.vapi.std.errors_client.ResourceInaccessible` + if the subscription info is being updated but the published library + cannot be contacted or found. + :raise: :class:`com.vmware.vapi.std.errors_client.Unauthorized` + if you do not have all of the privileges described as follows: + + * The resource ``com.vmware.content.Library`` referenced by the + parameter ``library_id`` requires + ``ContentLibrary.UpdateSubscribedLibrary``. + """ + return self._invoke('update', + { + 'library_id': library_id, + 'update_spec': update_spec, + }) +
+
[docs] def probe(self, + subscription_info, + ): + """ + Probes remote library subscription information, including URL, SSL + certificate and password. The resulting + :class:`SubscribedLibrary.ProbeResult` class describes whether or not + the subscription configuration is successful. + + :type subscription_info: :class:`com.vmware.content.library_client.SubscriptionInfo` + :param subscription_info: The subscription info to be probed. + :rtype: :class:`SubscribedLibrary.ProbeResult` + :return: The subscription info probe result. + :raise: :class:`com.vmware.vapi.std.errors_client.Unauthorized` + if you do not have all of the privileges described as follows: + + * Method execution requires ``ContentLibrary.ProbeSubscription``. + """ + return self._invoke('probe', + { + 'subscription_info': subscription_info, + }) +
+
[docs]class Type(VapiInterface): + """ + The ``Type`` class exposes the + :class:`com.vmware.content.library_client.ItemModel` types that this + Content Library Service supports. + + A library item has an optional type which can be specified with the + :attr:`com.vmware.content.library_client.ItemModel.type` attribute. For + items with a type that is supported by a plugin, the Content Library + Service may understand the files which are part of the library item and can + produce metadata for the item. + + In other cases, uploads may require a process in which one upload implies + subsequent uploads. For example, an Open Virtualization Format (OVF) + package is composed of an OVF descriptor file and the associated virtual + disk files. Uploading an OVF descriptor can enable the Content Library + Service to understand that the complete OVF package requires additional + disk files, and it can set up the transfers for the disks automatically by + adding the file entries for the disks when the OVF descriptor is uploaded. + + When a type is not supported by a plugin, or the type is not specified, the + Content Library Service can handle a library item in a default way, without + adding metadata to the item or guiding the upload process. + """ + + + def __init__(self, config): + """ + :type config: :class:`vmware.vapi.bindings.stub.StubConfiguration` + :param config: Configuration to be used for creating the stub. + """ + VapiInterface.__init__(self, config, _TypeStub) + +
[docs] class Info(VapiStruct): + """ + The ``Type.Info`` class describes support for a specific type of data in an + :class:`com.vmware.content.library_client.ItemModel`. The ``Type.Info`` can + be queried through the :class:`Type` class. Type support describes plugins + in the Content Library which can provide metadata on library items and help + manage the transfer process by adding dependent files when a current file + is added. + + .. tip:: + The arguments are used to initialize data attributes with the same + names. + """ + + + + def __init__(self, + description=None, + name=None, + type=None, + vendor=None, + version=None, + ): + """ + :type description: :class:`str` + :param description: A description of the type support offered by the plugin. + :type name: :class:`str` + :param name: The name of the plugin which provides the type support. + :type type: :class:`str` + :param type: The type which the plugin supports. + + To upload a library item of the type supported by the plugin, the + :attr:`com.vmware.content.library_client.ItemModel.type` attribute + of the item should be set to this value. + :type vendor: :class:`str` + :param vendor: The name of the vendor who created the type support plugin. + :type version: :class:`str` + :param version: The version number of the type support plugin. + """ + self.description = description + self.name = name + self.type = type + self.vendor = vendor + self.version = version + VapiStruct.__init__(self) +
+ Info._set_binding_type(type.StructType( + 'com.vmware.content.type.info', { + 'description': type.StringType(), + 'name': type.StringType(), + 'type': type.StringType(), + 'vendor': type.StringType(), + 'version': type.StringType(), + }, + Info, + False, + None)) + + +
[docs] def list(self): + """ + Returns a :class:`list` of :class:`Type.Info` instances which describe + the type support plugins in this Content Library. + + + :rtype: :class:`list` of :class:`Type.Info` + :return: The :class:`list` of :class:`Type.Info` instances which describe + the type support plugins in this Content Library. + :raise: :class:`com.vmware.vapi.std.errors_client.Unauthorized` + if you do not have all of the privileges described as follows: + + * Method execution requires ``ContentLibrary.TypeIntrospection``. + """ + return self._invoke('list', None) +
+class _ConfigurationStub(ApiInterfaceStub): + def __init__(self, config): + # properties for update operation + update_input_type = type.StructType('operation-input', { + 'model': type.ReferenceType(sys.modules[__name__], 'ConfigurationModel'), + }) + update_error_dict = { + 'com.vmware.vapi.std.errors.invalid_argument': + type.ReferenceType(com.vmware.vapi.std.errors_client, 'InvalidArgument'), + + } + update_input_validator_list = [ + ] + update_output_validator_list = [ + ] + + # properties for get operation + get_input_type = type.StructType('operation-input', {}) + get_error_dict = {} + get_input_validator_list = [ + ] + get_output_validator_list = [ + ] + + operations = { + 'update': { + 'input_type': update_input_type, + 'output_type': type.VoidType(), + 'errors': update_error_dict, + 'input_validator_list': update_input_validator_list, + 'output_validator_list': update_output_validator_list, + }, + 'get': { + 'input_type': get_input_type, + 'output_type': type.ReferenceType(sys.modules[__name__], 'ConfigurationModel'), + 'errors': get_error_dict, + 'input_validator_list': get_input_validator_list, + 'output_validator_list': get_output_validator_list, + }, + } + ApiInterfaceStub.__init__(self, iface_name='com.vmware.content.configuration', + config=config, + operations=operations) +class _LibraryStub(ApiInterfaceStub): + def __init__(self, config): + # properties for get operation + get_input_type = type.StructType('operation-input', { + 'library_id': type.IdType(resource_types='com.vmware.content.Library'), + }) + get_error_dict = { + 'com.vmware.vapi.std.errors.not_found': + type.ReferenceType(com.vmware.vapi.std.errors_client, 'NotFound'), + + } + get_input_validator_list = [ + ] + get_output_validator_list = [ + ] + + # properties for list operation + list_input_type = type.StructType('operation-input', {}) + list_error_dict = {} + list_input_validator_list = [ + ] + list_output_validator_list = [ + ] + + # properties for find operation + find_input_type = type.StructType('operation-input', { + 'spec': type.ReferenceType(sys.modules[__name__], 'Library.FindSpec'), + }) + find_error_dict = { + 'com.vmware.vapi.std.errors.invalid_argument': + type.ReferenceType(com.vmware.vapi.std.errors_client, 'InvalidArgument'), + + } + find_input_validator_list = [ + ] + find_output_validator_list = [ + ] + + # properties for update operation + update_input_type = type.StructType('operation-input', { + 'library_id': type.IdType(resource_types='com.vmware.content.Library'), + 'update_spec': type.ReferenceType(sys.modules[__name__], 'LibraryModel'), + }) + update_error_dict = { + 'com.vmware.vapi.std.errors.not_found': + type.ReferenceType(com.vmware.vapi.std.errors_client, 'NotFound'), + 'com.vmware.vapi.std.errors.invalid_argument': + type.ReferenceType(com.vmware.vapi.std.errors_client, 'InvalidArgument'), + + } + update_input_validator_list = [ + ] + update_output_validator_list = [ + ] + + operations = { + 'get': { + 'input_type': get_input_type, + 'output_type': type.ReferenceType(sys.modules[__name__], 'LibraryModel'), + 'errors': get_error_dict, + 'input_validator_list': get_input_validator_list, + 'output_validator_list': get_output_validator_list, + }, + 'list': { + 'input_type': list_input_type, + 'output_type': type.ListType(type.IdType()), + 'errors': list_error_dict, + 'input_validator_list': list_input_validator_list, + 'output_validator_list': list_output_validator_list, + }, + 'find': { + 'input_type': find_input_type, + 'output_type': type.ListType(type.IdType()), + 'errors': find_error_dict, + 'input_validator_list': find_input_validator_list, + 'output_validator_list': find_output_validator_list, + }, + 'update': { + 'input_type': update_input_type, + 'output_type': type.VoidType(), + 'errors': update_error_dict, + 'input_validator_list': update_input_validator_list, + 'output_validator_list': update_output_validator_list, + }, + } + ApiInterfaceStub.__init__(self, iface_name='com.vmware.content.library', + config=config, + operations=operations) +class _LocalLibraryStub(ApiInterfaceStub): + def __init__(self, config): + # properties for create operation + create_input_type = type.StructType('operation-input', { + 'client_token': type.OptionalType(type.StringType()), + 'create_spec': type.ReferenceType(sys.modules[__name__], 'LibraryModel'), + }) + create_error_dict = { + 'com.vmware.vapi.std.errors.invalid_argument': + type.ReferenceType(com.vmware.vapi.std.errors_client, 'InvalidArgument'), + 'com.vmware.vapi.std.errors.unsupported': + type.ReferenceType(com.vmware.vapi.std.errors_client, 'Unsupported'), + + } + create_input_validator_list = [ + ] + create_output_validator_list = [ + ] + + # properties for delete operation + delete_input_type = type.StructType('operation-input', { + 'library_id': type.IdType(resource_types='com.vmware.content.Library'), + }) + delete_error_dict = { + 'com.vmware.vapi.std.errors.invalid_element_type': + type.ReferenceType(com.vmware.vapi.std.errors_client, 'InvalidElementType'), + 'com.vmware.vapi.std.errors.not_found': + type.ReferenceType(com.vmware.vapi.std.errors_client, 'NotFound'), + + } + delete_input_validator_list = [ + ] + delete_output_validator_list = [ + ] + + # properties for get operation + get_input_type = type.StructType('operation-input', { + 'library_id': type.IdType(resource_types='com.vmware.content.Library'), + }) + get_error_dict = { + 'com.vmware.vapi.std.errors.not_found': + type.ReferenceType(com.vmware.vapi.std.errors_client, 'NotFound'), + 'com.vmware.vapi.std.errors.invalid_element_type': + type.ReferenceType(com.vmware.vapi.std.errors_client, 'InvalidElementType'), + + } + get_input_validator_list = [ + ] + get_output_validator_list = [ + ] + + # properties for list operation + list_input_type = type.StructType('operation-input', {}) + list_error_dict = {} + list_input_validator_list = [ + ] + list_output_validator_list = [ + ] + + # properties for update operation + update_input_type = type.StructType('operation-input', { + 'library_id': type.IdType(resource_types='com.vmware.content.Library'), + 'update_spec': type.ReferenceType(sys.modules[__name__], 'LibraryModel'), + }) + update_error_dict = { + 'com.vmware.vapi.std.errors.not_found': + type.ReferenceType(com.vmware.vapi.std.errors_client, 'NotFound'), + 'com.vmware.vapi.std.errors.invalid_element_type': + type.ReferenceType(com.vmware.vapi.std.errors_client, 'InvalidElementType'), + 'com.vmware.vapi.std.errors.invalid_argument': + type.ReferenceType(com.vmware.vapi.std.errors_client, 'InvalidArgument'), + + } + update_input_validator_list = [ + ] + update_output_validator_list = [ + ] + + operations = { + 'create': { + 'input_type': create_input_type, + 'output_type': type.IdType(resource_types='com.vmware.content.Library'), + 'errors': create_error_dict, + 'input_validator_list': create_input_validator_list, + 'output_validator_list': create_output_validator_list, + }, + 'delete': { + 'input_type': delete_input_type, + 'output_type': type.VoidType(), + 'errors': delete_error_dict, + 'input_validator_list': delete_input_validator_list, + 'output_validator_list': delete_output_validator_list, + }, + 'get': { + 'input_type': get_input_type, + 'output_type': type.ReferenceType(sys.modules[__name__], 'LibraryModel'), + 'errors': get_error_dict, + 'input_validator_list': get_input_validator_list, + 'output_validator_list': get_output_validator_list, + }, + 'list': { + 'input_type': list_input_type, + 'output_type': type.ListType(type.IdType()), + 'errors': list_error_dict, + 'input_validator_list': list_input_validator_list, + 'output_validator_list': list_output_validator_list, + }, + 'update': { + 'input_type': update_input_type, + 'output_type': type.VoidType(), + 'errors': update_error_dict, + 'input_validator_list': update_input_validator_list, + 'output_validator_list': update_output_validator_list, + }, + } + ApiInterfaceStub.__init__(self, iface_name='com.vmware.content.local_library', + config=config, + operations=operations) +class _SubscribedLibraryStub(ApiInterfaceStub): + def __init__(self, config): + # properties for create operation + create_input_type = type.StructType('operation-input', { + 'client_token': type.OptionalType(type.StringType()), + 'create_spec': type.ReferenceType(sys.modules[__name__], 'LibraryModel'), + }) + create_error_dict = { + 'com.vmware.vapi.std.errors.invalid_argument': + type.ReferenceType(com.vmware.vapi.std.errors_client, 'InvalidArgument'), + 'com.vmware.vapi.std.errors.unsupported': + type.ReferenceType(com.vmware.vapi.std.errors_client, 'Unsupported'), + 'com.vmware.vapi.std.errors.resource_inaccessible': + type.ReferenceType(com.vmware.vapi.std.errors_client, 'ResourceInaccessible'), + + } + create_input_validator_list = [ + ] + create_output_validator_list = [ + ] + + # properties for delete operation + delete_input_type = type.StructType('operation-input', { + 'library_id': type.IdType(resource_types='com.vmware.content.Library'), + }) + delete_error_dict = { + 'com.vmware.vapi.std.errors.invalid_element_type': + type.ReferenceType(com.vmware.vapi.std.errors_client, 'InvalidElementType'), + 'com.vmware.vapi.std.errors.not_found': + type.ReferenceType(com.vmware.vapi.std.errors_client, 'NotFound'), + + } + delete_input_validator_list = [ + ] + delete_output_validator_list = [ + ] + + # properties for evict operation + evict_input_type = type.StructType('operation-input', { + 'library_id': type.IdType(resource_types='com.vmware.content.Library'), + }) + evict_error_dict = { + 'com.vmware.vapi.std.errors.not_found': + type.ReferenceType(com.vmware.vapi.std.errors_client, 'NotFound'), + 'com.vmware.vapi.std.errors.invalid_element_type': + type.ReferenceType(com.vmware.vapi.std.errors_client, 'InvalidElementType'), + 'com.vmware.vapi.std.errors.not_allowed_in_current_state': + type.ReferenceType(com.vmware.vapi.std.errors_client, 'NotAllowedInCurrentState'), + + } + evict_input_validator_list = [ + ] + evict_output_validator_list = [ + ] + + # properties for get operation + get_input_type = type.StructType('operation-input', { + 'library_id': type.IdType(resource_types='com.vmware.content.Library'), + }) + get_error_dict = { + 'com.vmware.vapi.std.errors.not_found': + type.ReferenceType(com.vmware.vapi.std.errors_client, 'NotFound'), + 'com.vmware.vapi.std.errors.invalid_element_type': + type.ReferenceType(com.vmware.vapi.std.errors_client, 'InvalidElementType'), + + } + get_input_validator_list = [ + ] + get_output_validator_list = [ + ] + + # properties for list operation + list_input_type = type.StructType('operation-input', {}) + list_error_dict = {} + list_input_validator_list = [ + ] + list_output_validator_list = [ + ] + + # properties for sync operation + sync_input_type = type.StructType('operation-input', { + 'library_id': type.IdType(resource_types='com.vmware.content.Library'), + }) + sync_error_dict = { + 'com.vmware.vapi.std.errors.not_found': + type.ReferenceType(com.vmware.vapi.std.errors_client, 'NotFound'), + 'com.vmware.vapi.std.errors.invalid_element_type': + type.ReferenceType(com.vmware.vapi.std.errors_client, 'InvalidElementType'), + 'com.vmware.vapi.std.errors.invalid_argument': + type.ReferenceType(com.vmware.vapi.std.errors_client, 'InvalidArgument'), + 'com.vmware.vapi.std.errors.resource_inaccessible': + type.ReferenceType(com.vmware.vapi.std.errors_client, 'ResourceInaccessible'), + + } + sync_input_validator_list = [ + ] + sync_output_validator_list = [ + ] + + # properties for update operation + update_input_type = type.StructType('operation-input', { + 'library_id': type.IdType(resource_types='com.vmware.content.Library'), + 'update_spec': type.ReferenceType(sys.modules[__name__], 'LibraryModel'), + }) + update_error_dict = { + 'com.vmware.vapi.std.errors.not_found': + type.ReferenceType(com.vmware.vapi.std.errors_client, 'NotFound'), + 'com.vmware.vapi.std.errors.invalid_element_type': + type.ReferenceType(com.vmware.vapi.std.errors_client, 'InvalidElementType'), + 'com.vmware.vapi.std.errors.invalid_argument': + type.ReferenceType(com.vmware.vapi.std.errors_client, 'InvalidArgument'), + 'com.vmware.vapi.std.errors.resource_inaccessible': + type.ReferenceType(com.vmware.vapi.std.errors_client, 'ResourceInaccessible'), + + } + update_input_validator_list = [ + ] + update_output_validator_list = [ + ] + + # properties for probe operation + probe_input_type = type.StructType('operation-input', { + 'subscription_info': type.ReferenceType(com.vmware.content.library_client, 'SubscriptionInfo'), + }) + probe_error_dict = {} + probe_input_validator_list = [ + ] + probe_output_validator_list = [ + ] + + operations = { + 'create': { + 'input_type': create_input_type, + 'output_type': type.IdType(resource_types='com.vmware.content.Library'), + 'errors': create_error_dict, + 'input_validator_list': create_input_validator_list, + 'output_validator_list': create_output_validator_list, + }, + 'delete': { + 'input_type': delete_input_type, + 'output_type': type.VoidType(), + 'errors': delete_error_dict, + 'input_validator_list': delete_input_validator_list, + 'output_validator_list': delete_output_validator_list, + }, + 'evict': { + 'input_type': evict_input_type, + 'output_type': type.VoidType(), + 'errors': evict_error_dict, + 'input_validator_list': evict_input_validator_list, + 'output_validator_list': evict_output_validator_list, + }, + 'get': { + 'input_type': get_input_type, + 'output_type': type.ReferenceType(sys.modules[__name__], 'LibraryModel'), + 'errors': get_error_dict, + 'input_validator_list': get_input_validator_list, + 'output_validator_list': get_output_validator_list, + }, + 'list': { + 'input_type': list_input_type, + 'output_type': type.ListType(type.IdType()), + 'errors': list_error_dict, + 'input_validator_list': list_input_validator_list, + 'output_validator_list': list_output_validator_list, + }, + 'sync': { + 'input_type': sync_input_type, + 'output_type': type.VoidType(), + 'errors': sync_error_dict, + 'input_validator_list': sync_input_validator_list, + 'output_validator_list': sync_output_validator_list, + }, + 'update': { + 'input_type': update_input_type, + 'output_type': type.VoidType(), + 'errors': update_error_dict, + 'input_validator_list': update_input_validator_list, + 'output_validator_list': update_output_validator_list, + }, + 'probe': { + 'input_type': probe_input_type, + 'output_type': type.ReferenceType(sys.modules[__name__], 'SubscribedLibrary.ProbeResult'), + 'errors': probe_error_dict, + 'input_validator_list': probe_input_validator_list, + 'output_validator_list': probe_output_validator_list, + }, + } + ApiInterfaceStub.__init__(self, iface_name='com.vmware.content.subscribed_library', + config=config, + operations=operations) +class _TypeStub(ApiInterfaceStub): + def __init__(self, config): + # properties for list operation + list_input_type = type.StructType('operation-input', {}) + list_error_dict = {} + list_input_validator_list = [ + ] + list_output_validator_list = [ + ] + + operations = { + 'list': { + 'input_type': list_input_type, + 'output_type': type.ListType(type.ReferenceType(sys.modules[__name__], 'Type.Info')), + 'errors': list_error_dict, + 'input_validator_list': list_input_validator_list, + 'output_validator_list': list_output_validator_list, + }, + } + ApiInterfaceStub.__init__(self, iface_name='com.vmware.content.type', + config=config, + operations=operations) +
+ +
+
+
+
+
+ + +
+
+
+
+ + + + \ No newline at end of file diff --git a/vsphere/6.0/_modules/com/vmware/vapi/metadata/authentication/service_client.html b/vsphere/6.0/_modules/com/vmware/vapi/metadata/authentication/service_client.html new file mode 100644 index 00000000..e44120b5 --- /dev/null +++ b/vsphere/6.0/_modules/com/vmware/vapi/metadata/authentication/service_client.html @@ -0,0 +1,261 @@ + + + + + + + + + + com.vmware.vapi.metadata.authentication.service_client — vCloud Suite SDK for Python 6.0.0 documentation + + + + + + + + + + + + + + +
+
+
+
+ +

Source code for com.vmware.vapi.metadata.authentication.service_client

+#---------------------------------------------------------------------------
+# Copyright 2014 VMware, Inc.  All rights reserved.
+
+# AUTO GENERATED FILE -- DO NOT MODIFY!
+#
+# vAPI stub file for package com.vmware.vapi.metadata.authentication.service.
+#---------------------------------------------------------------------------
+
+"""
+The ``com.vmware.vapi.metadata.authentication.service_client`` module provides
+classes to retrieve authentication information for operation elements.
+
+"""
+
+__author__ = 'VMware, Inc.'
+__docformat__ = 'restructuredtext en'
+
+import sys
+
+from vmware.vapi.bindings import type
+from vmware.vapi.bindings.converter import TypeConverter
+from vmware.vapi.bindings.enum import Enum
+from vmware.vapi.bindings.error import VapiError
+from vmware.vapi.bindings.struct import VapiStruct
+from vmware.vapi.bindings.stub import VapiInterface, ApiInterfaceStub
+from vmware.vapi.bindings.common import raise_core_exception
+from vmware.vapi.data.validator import UnionValidator, HasFieldsOfValidator
+from vmware.vapi.exception import CoreException
+import com.vmware.vapi.std.errors_client
+import com.vmware.vapi.metadata.authentication_client
+
+
+
[docs]class Operation(VapiInterface): + """ + The ``Operation`` class provides methods to retrieve authentication + information of an operation element. + + An operation element is said to contain authentication information if + authentication schemes are specified in the authentication definition file. + """ + RESOURCE_TYPE = "com.vmware.vapi.operation" + """ + Resource type for operation. + + """ + + def __init__(self, config): + """ + :type config: :class:`vmware.vapi.bindings.stub.StubConfiguration` + :param config: Configuration to be used for creating the stub. + """ + VapiInterface.__init__(self, config, _OperationStub) + + +
[docs] def list(self, + service_id, + ): + """ + Returns the identifiers for the operation elements contained in the + service element corresponding to ``service_id`` that have + authentication information. + + :type service_id: :class:`str` + :param service_id: Identifier of the service element. + The parameter must be an identifier for the resource type: + ``com.vmware.vapi.service``. + :rtype: :class:`list` of :class:`str` + :return: List of identifiers for the operation elements contained in the + service element that have authentication information. + The return value will contain identifiers for the resource type: + ``com.vmware.vapi.operation``. + :raise: :class:`com.vmware.vapi.std.errors_client.NotFound` + if the service element associated with ``service_id`` does not have + any operation elements that have authentication information. + """ + return self._invoke('list', + { + 'service_id': service_id, + }) +
+
[docs] def get(self, + service_id, + operation_id, + ): + """ + Retrieves the authentication information about an operation element + corresponding to ``operation_id`` contained in the service element + corresponding to ``service_id``. + + :type service_id: :class:`str` + :param service_id: Identifier of the service element. + The parameter must be an identifier for the resource type: + ``com.vmware.vapi.service``. + :type operation_id: :class:`str` + :param operation_id: Identifier of the operation element. + The parameter must be an identifier for the resource type: + ``com.vmware.vapi.operation``. + :rtype: :class:`com.vmware.vapi.metadata.authentication_client.OperationInfo` + :return: The + :class:`com.vmware.vapi.metadata.authentication_client.OperationInfo` + instance that corresponds to ``operation_id``. + :raise: :class:`com.vmware.vapi.std.errors_client.NotFound` + if the service element associated with ``service_id`` does not + exist. + :raise: :class:`com.vmware.vapi.std.errors_client.NotFound` + if the operation element associated with ``operation_id`` does not + exist. + :raise: :class:`com.vmware.vapi.std.errors_client.NotFound` + if the operation element associated with ``operation_id`` does not + have any authentication information. + """ + return self._invoke('get', + { + 'service_id': service_id, + 'operation_id': operation_id, + }) +
+class _OperationStub(ApiInterfaceStub): + def __init__(self, config): + # properties for list operation + list_input_type = type.StructType('operation-input', { + 'service_id': type.IdType(resource_types='com.vmware.vapi.service'), + }) + list_error_dict = { + 'com.vmware.vapi.std.errors.not_found': + type.ReferenceType(com.vmware.vapi.std.errors_client, 'NotFound'), + + } + list_input_validator_list = [ + ] + list_output_validator_list = [ + ] + + # properties for get operation + get_input_type = type.StructType('operation-input', { + 'service_id': type.IdType(resource_types='com.vmware.vapi.service'), + 'operation_id': type.IdType(resource_types='com.vmware.vapi.operation'), + }) + get_error_dict = { + 'com.vmware.vapi.std.errors.not_found': + type.ReferenceType(com.vmware.vapi.std.errors_client, 'NotFound'), + + } + get_input_validator_list = [ + ] + get_output_validator_list = [ + ] + + operations = { + 'list': { + 'input_type': list_input_type, + 'output_type': type.ListType(type.IdType()), + 'errors': list_error_dict, + 'input_validator_list': list_input_validator_list, + 'output_validator_list': list_output_validator_list, + }, + 'get': { + 'input_type': get_input_type, + 'output_type': type.ReferenceType(com.vmware.vapi.metadata.authentication_client, 'OperationInfo'), + 'errors': get_error_dict, + 'input_validator_list': get_input_validator_list, + 'output_validator_list': get_output_validator_list, + }, + } + ApiInterfaceStub.__init__(self, iface_name='com.vmware.vapi.metadata.authentication.service.operation', + config=config, + operations=operations) +
+ +
+
+
+
+
+ + +
+
+
+
+ + + + \ No newline at end of file diff --git a/vsphere/6.0/_modules/com/vmware/vapi/metadata/authentication_client.html b/vsphere/6.0/_modules/com/vmware/vapi/metadata/authentication_client.html new file mode 100644 index 00000000..c19fd867 --- /dev/null +++ b/vsphere/6.0/_modules/com/vmware/vapi/metadata/authentication_client.html @@ -0,0 +1,1299 @@ + + + + + + + + + + com.vmware.vapi.metadata.authentication_client — vCloud Suite SDK for Python 6.0.0 documentation + + + + + + + + + + + + + + +
+
+
+
+ +

Source code for com.vmware.vapi.metadata.authentication_client

+#---------------------------------------------------------------------------
+# Copyright 2014 VMware, Inc.  All rights reserved.
+
+# AUTO GENERATED FILE -- DO NOT MODIFY!
+#
+# vAPI stub file for package com.vmware.vapi.metadata.authentication.
+#---------------------------------------------------------------------------
+
+"""
+The ``com.vmware.vapi.metadata.authentication_client`` module provides classes
+that expose authentication information for operation elements across all the
+service elements. 
+
+To calculate the effective authentication information for an operation element,
+you should first see if there is an authentication scheme specified for the
+operation element. If it is not specified, then authentication scheme for the
+service element that contains this operation element is used. If it is not
+specified for the service element as well, then the authentication scheme for
+the package element that contains this service element is used.
+
+"""
+
+__author__ = 'VMware, Inc.'
+__docformat__ = 'restructuredtext en'
+
+import sys
+
+from vmware.vapi.bindings import type
+from vmware.vapi.bindings.converter import TypeConverter
+from vmware.vapi.bindings.enum import Enum
+from vmware.vapi.bindings.error import VapiError
+from vmware.vapi.bindings.struct import VapiStruct
+from vmware.vapi.bindings.stub import VapiInterface, ApiInterfaceStub
+from vmware.vapi.bindings.common import raise_core_exception
+from vmware.vapi.data.validator import UnionValidator, HasFieldsOfValidator
+from vmware.vapi.exception import CoreException
+import com.vmware.vapi.std.errors_client
+import com.vmware.vapi.metadata_client
+
+
+
[docs]class AuthenticationInfo(VapiStruct): + """ + The ``AuthenticationInfo`` class describes the authentication information. + Authentication information could be specified for a package element, + service elenent or an operation element. + + Using the authentication scheme information, a client invoking an API call + from any class can figure out what kind of credentials are needed for that + API call. + + .. tip:: + The arguments are used to initialize data attributes with the same + names. + """ + + _validator_list = [ + UnionValidator( + 'scheme_type', + { + 'SESSION_AWARE' : [('session_manager', True)], + 'SESSIONLESS' : [], + } + ), + ] + + + def __init__(self, + scheme_type=None, + session_manager=None, + scheme=None, + ): + """ + :type scheme_type: :class:`AuthenticationInfo.SchemeType` + :param scheme_type: The type of the authentication scheme. + :type session_manager: :class:`str` + :param session_manager: In a session aware authentication scheme, a session manager is + required that supports ``create``, ``delete`` and ``keepAlive`` + methods. The fully qualified class name of the session manager is + provided in :attr:`AuthenticationInfo.session_manager` attribute. + This class is responsible for handling sessions. + This attribute is optional and it is only relevant when the value + of ``schemeType`` is + :attr:`AuthenticationInfo.SchemeType.SESSION_AWARE`. + :type scheme: :class:`str` + :param scheme: String identifier of the authentication scheme. + + Following are the supported authentication schemes by the + infrastructure: + + * The identifier ``com.vmware.vapi.std.security.saml_hok_token`` + for SAML holder of key token based authentication mechanism. + * The identifier ``com.vmware.vapi.std.security.bearer_token`` for + SAML bearer token based authentication mechanism. + * The identifier ``com.vmware.vapi.std.security.session_id`` for + session based authentication mechanism. + * The identifier ``com.vmware.vapi.std.security.user_pass`` for + username and password based authentication mechanism. + """ + self.scheme_type = scheme_type + self.session_manager = session_manager + self.scheme = scheme + VapiStruct.__init__(self) + +
[docs] class SchemeType(Enum): + """ + The ``AuthenticationInfo.SchemeType`` class provides class attributes for + the set of valid authentication scheme types. + + .. note:: + This class represents an enumerated type in the interface language + definition. The class contains class attributes which represent the + values in the current version of the enumerated type. Newer versions of + the enumerated type may contain new values. To use new values of the + enumerated type in communication with a server that supports the newer + version of the API, you instantiate this class. See :ref:`enumerated + type description page <enumeration_description>`. + """ + SESSIONLESS = None + """ + Indicates that the scheme is a session less authentication scheme, the user + is authenticated on every method. There is no explicit session + establishment. + + """ + SESSION_AWARE = None + """ + Indicates that the scheme is a session aware authentication scheme. It + requires an explicit login before executing a method and logout when a + session terminates. A class might choose to have a session aware scheme if + it wants to associate some state corresponding to the user until the user + logs out or if it wants to mitigate the cost of authenticating the user on + every method. + + """ + + def __init__(self, string): + """ + :type string: :class:`str` + :param string: String value for the :class:`SchemeType` instance. + """ + Enum.__init__(string) +
+ SchemeType.SESSIONLESS = SchemeType('SESSIONLESS') + SchemeType.SESSION_AWARE = SchemeType('SESSION_AWARE') + SchemeType._set_binding_type(type.EnumType( + 'com.vmware.vapi.metadata.authentication.authentication_info.scheme_type', + SchemeType))
+AuthenticationInfo._set_binding_type(type.StructType( + 'com.vmware.vapi.metadata.authentication.authentication_info', { + 'scheme_type': type.ReferenceType(sys.modules[__name__], 'AuthenticationInfo.SchemeType'), + 'session_manager': type.OptionalType(type.StringType()), + 'scheme': type.StringType(), + }, + AuthenticationInfo, + False, + None)) + + + +
[docs]class ComponentData(VapiStruct): + """ + The ``ComponentData`` class contains the authentication information of the + component along with its fingerprint. + + .. tip:: + The arguments are used to initialize data attributes with the same + names. + """ + + + + def __init__(self, + info=None, + fingerprint=None, + ): + """ + :type info: :class:`ComponentInfo` + :param info: Authentication information of the component. This includes + information about all the modules in the component. + :type fingerprint: :class:`str` + :param fingerprint: Fingerprint of the metadata of the component. + + Authentication information could change when there is an + infrastructure update. Since the data present in + :attr:`ComponentData.info` could be quite large, ``fingerprint`` + provides a convenient way to check if the data for a particular + component is updated. + + You should store the fingerprint associated with a component. After + an update, by invoking the :func:`Component.fingerprint` method, + you can retrieve the new fingerprint for the component. If the new + fingerprint and the previously stored fingerprint do not match, + clients can then use the :func:`Component.get` to retrieve the new + authentication information for the component. + """ + self.info = info + self.fingerprint = fingerprint + VapiStruct.__init__(self) +
+ComponentData._set_binding_type(type.StructType( + 'com.vmware.vapi.metadata.authentication.component_data', { + 'info': type.ReferenceType(sys.modules[__name__], 'ComponentInfo'), + 'fingerprint': type.StringType(), + }, + ComponentData, + False, + None)) + + + +
[docs]class ComponentInfo(VapiStruct): + """ + The ``ComponentInfo`` class contains authentication information of a + component element. + + For an explanation of authentication information contained within component + elements, see :class:`Component`. + + .. tip:: + The arguments are used to initialize data attributes with the same + names. + """ + + + + def __init__(self, + packages=None, + ): + """ + :type packages: :class:`dict` of :class:`str` and :class:`PackageInfo` + :param packages: Authentication information of all the package elements. The key in + the :class:`dict` is the identifier of the package element and the + value in the :class:`dict` is the authentication information for + the package element. + + For an explanation of authentication information containment within + package elements, see :class:`Package`. + When clients pass a value of this class as a parameter, the key in + the attribute :class:`dict` must be an identifier for the resource + type: ``com.vmware.vapi.package``. When methods return a value of + this class as a return value, the key in the attribute + :class:`dict` will be an identifier for the resource type: + ``com.vmware.vapi.package``. + """ + self.packages = packages + VapiStruct.__init__(self) +
+ComponentInfo._set_binding_type(type.StructType( + 'com.vmware.vapi.metadata.authentication.component_info', { + 'packages': type.MapType(type.IdType(), type.ReferenceType(sys.modules[__name__], 'PackageInfo')), + }, + ComponentInfo, + False, + None)) + + + +
[docs]class OperationInfo(VapiStruct): + """ + The ``OperationInfo`` class contains authentication information of an + operation element. + + .. tip:: + The arguments are used to initialize data attributes with the same + names. + """ + + + + def __init__(self, + schemes=None, + ): + """ + :type schemes: :class:`list` of :class:`AuthenticationInfo` + :param schemes: List of authentication schemes used by an operation element. The + authentication scheme specified on the service element + corresponding to this operation element is ignored. + """ + self.schemes = schemes + VapiStruct.__init__(self) +
+OperationInfo._set_binding_type(type.StructType( + 'com.vmware.vapi.metadata.authentication.operation_info', { + 'schemes': type.ListType(type.ReferenceType(sys.modules[__name__], 'AuthenticationInfo')), + }, + OperationInfo, + False, + None)) + + + +
[docs]class PackageInfo(VapiStruct): + """ + The ``PackageInfo`` class contains authentication information of a package + element. + + For an explanation of authentication information contained within package + elements, see :class:`Package`. + + .. tip:: + The arguments are used to initialize data attributes with the same + names. + """ + + + + def __init__(self, + schemes=None, + services=None, + ): + """ + :type schemes: :class:`list` of :class:`AuthenticationInfo` + :param schemes: List of authentication schemes to be used for all the operation + elements contained in this package element. If a particular service + or operation element has no explicit authentications defined in the + authentication defintion file, these authentication schemes are + used for authenticating the user. + :type services: :class:`dict` of :class:`str` and :class:`ServiceInfo` + :param services: Information about all service elements contained in this package + element that contain authentication information. The key in the + :class:`dict` is the identifier of the service element and the + value in the :class:`dict` is the authentication information for + the service element. + + For an explanation of authentication information containment within + service elements, see :class:`Service`. + When clients pass a value of this class as a parameter, the key in + the attribute :class:`dict` must be an identifier for the resource + type: ``com.vmware.vapi.service``. When methods return a value of + this class as a return value, the key in the attribute + :class:`dict` will be an identifier for the resource type: + ``com.vmware.vapi.service``. + """ + self.schemes = schemes + self.services = services + VapiStruct.__init__(self) +
+PackageInfo._set_binding_type(type.StructType( + 'com.vmware.vapi.metadata.authentication.package_info', { + 'schemes': type.ListType(type.ReferenceType(sys.modules[__name__], 'AuthenticationInfo')), + 'services': type.MapType(type.IdType(), type.ReferenceType(sys.modules[__name__], 'ServiceInfo')), + }, + PackageInfo, + False, + None)) + + + +
[docs]class ServiceInfo(VapiStruct): + """ + The ``ServiceInfo`` class contains authentication information of a service + element. + + For an explanation of authentication information contained within service + elements, see :class:`Service`. + + .. tip:: + The arguments are used to initialize data attributes with the same + names. + """ + + + + def __init__(self, + schemes=None, + operations=None, + ): + """ + :type schemes: :class:`list` of :class:`AuthenticationInfo` + :param schemes: List of authentication schemes to be used for all the operation + elements contained in this service element. The authentication + scheme specified on the package element corresponding to this + service element is ignored. + :type operations: :class:`dict` of :class:`str` and :class:`OperationInfo` + :param operations: Information about all operation elements contained in this service + element that contain authentication information. The key in the + :class:`dict` is the identifier of the operation element and the + value in the :class:`dict` is the authentication information for + the operation element. + + For an explanation of containment of authentication information + within operation elements, see + :class:`com.vmware.vapi.metadata.authentication.service_client.Operation`. + When clients pass a value of this class as a parameter, the key in + the attribute :class:`dict` must be an identifier for the resource + type: ``com.vmware.vapi.operation``. When methods return a value of + this class as a return value, the key in the attribute + :class:`dict` will be an identifier for the resource type: + ``com.vmware.vapi.operation``. + """ + self.schemes = schemes + self.operations = operations + VapiStruct.__init__(self) +
+ServiceInfo._set_binding_type(type.StructType( + 'com.vmware.vapi.metadata.authentication.service_info', { + 'schemes': type.ListType(type.ReferenceType(sys.modules[__name__], 'AuthenticationInfo')), + 'operations': type.MapType(type.IdType(), type.ReferenceType(sys.modules[__name__], 'OperationInfo')), + }, + ServiceInfo, + False, + None)) + + + +
[docs]class Component(VapiInterface): + """ + The ``Component`` class provides methods to retrieve authentication + information of a component element. + + A component element is said to contain authentication information if any + one of package elements contained in it has authentication information. + """ + RESOURCE_TYPE = "com.vmware.vapi.component" + """ + Resource type for component. + + """ + + def __init__(self, config): + """ + :type config: :class:`vmware.vapi.bindings.stub.StubConfiguration` + :param config: Configuration to be used for creating the stub. + """ + VapiInterface.__init__(self, config, _ComponentStub) + + +
[docs] def list(self): + """ + Returns the identifiers for the component elements that have + authentication information. + + + :rtype: :class:`list` of :class:`str` + :return: The list of identifiers for the component elements that have + authentication information. + The return value will contain identifiers for the resource type: + ``com.vmware.vapi.component``. + """ + return self._invoke('list', None) +
+
[docs] def get(self, + component_id, + ): + """ + Retrieves authentication information about the component element + corresponding to ``component_id``. + + The :class:`ComponentData` contains the authentication information + about the component element and it's fingerprint. It contains + information about all the package elements that belong to this + component element. + + :type component_id: :class:`str` + :param component_id: Identifier of the component element. + The parameter must be an identifier for the resource type: + ``com.vmware.vapi.component``. + :rtype: :class:`ComponentData` + :return: The :class:`ComponentData` instance that corresponds to + ``component_id`` + :raise: :class:`com.vmware.vapi.std.errors_client.NotFound` + if the component element associated with ``component_id`` does not + have any authentication information. + """ + return self._invoke('get', + { + 'component_id': component_id, + }) +
+
[docs] def fingerprint(self, + component_id, + ): + """ + Retrieves the fingerprint computed from the authentication metadata of + the component element corresponding to ``component_id``. + + The fingerprint provides clients an efficient way to check if the + metadata for a particular component has been modified on the server. + The client can do this by comparing the result of this operation with + the fingerprint returned in the result of :func:`Component.get`. + + :type component_id: :class:`str` + :param component_id: Identifier of the component element. + The parameter must be an identifier for the resource type: + ``com.vmware.vapi.component``. + :rtype: :class:`str` + :return: The fingerprint computed from the authentication metadata of the + component. + :raise: :class:`com.vmware.vapi.std.errors_client.NotFound` + if the component element associated with ``component_id`` does not + have any authentication information. + """ + return self._invoke('fingerprint', + { + 'component_id': component_id, + }) +
+
[docs]class Package(VapiInterface): + """ + The ``Package`` class provides methods to retrieve authentication + information of a package element. + + A package element is said to contain authentication information if there is + a default authentication assigned to all service elements contained in the + package element or if one of the service element contained in this package + element has authentication information. + """ + RESOURCE_TYPE = "com.vmware.vapi.package" + """ + Resource type for package. + + """ + + def __init__(self, config): + """ + :type config: :class:`vmware.vapi.bindings.stub.StubConfiguration` + :param config: Configuration to be used for creating the stub. + """ + VapiInterface.__init__(self, config, _PackageStub) + + +
[docs] def list(self): + """ + Returns the identifiers for the package elements that have + authentication information. + + + :rtype: :class:`list` of :class:`str` + :return: The list of identifiers for the package elements that have + authentication information. + The return value will contain identifiers for the resource type: + ``com.vmware.vapi.package``. + """ + return self._invoke('list', None) +
+
[docs] def get(self, + package_id, + ): + """ + Retrieves authentication information about the package element + corresponding to ``package_id``. + + :type package_id: :class:`str` + :param package_id: Identifier of the package element. + The parameter must be an identifier for the resource type: + ``com.vmware.vapi.package``. + :rtype: :class:`PackageInfo` + :return: The :class:`PackageInfo` instance that corresponds to + ``package_id`` + :raise: :class:`com.vmware.vapi.std.errors_client.NotFound` + if the package element associated with ``package_id`` does not have + any authentication information. + """ + return self._invoke('get', + { + 'package_id': package_id, + }) +
+
[docs]class Service(VapiInterface): + """ + The ``Service`` class provides methods to retrieve authentication + information of a service element. + + A service element is said to contain authentication information if there is + a default authentication assigned to all operation elements contained in a + service element or if one of the operation elements contained in this + service element has authentication information. + """ + RESOURCE_TYPE = "com.vmware.vapi.service" + """ + Resource type for service. + + """ + + def __init__(self, config): + """ + :type config: :class:`vmware.vapi.bindings.stub.StubConfiguration` + :param config: Configuration to be used for creating the stub. + """ + VapiInterface.__init__(self, config, _ServiceStub) + + +
[docs] def list(self): + """ + Returns the identifiers for the service elements that have + authentication information. + + + :rtype: :class:`list` of :class:`str` + :return: The list of identifiers for the service elements that have + authentication information. + The return value will contain identifiers for the resource type: + ``com.vmware.vapi.service``. + """ + return self._invoke('list', None) +
+
[docs] def get(self, + service_id, + ): + """ + Retrieves authentication information about the service element + corresponding to ``service_id``. + + :type service_id: :class:`str` + :param service_id: Identifier of the service element. + The parameter must be an identifier for the resource type: + ``com.vmware.vapi.service``. + :rtype: :class:`ServiceInfo` + :return: The :class:`ServiceInfo` instance that corresponds to + ``service_id`` + :raise: :class:`com.vmware.vapi.std.errors_client.NotFound` + if the service element associated with ``service_id`` does not have + any authentication information. + """ + return self._invoke('get', + { + 'service_id': service_id, + }) +
+
[docs]class Source(VapiInterface): + """ + The ``Source`` class provides methods to manage the sources of + authentication metadata information. + + The interface definition language infrastructure provides tools to generate + various kinds of metadata in JSON format from the interface definition + files and additional properties files. One of the generated files contains + authentication information. The generated file can be registered as a + source of metadata. + + The authentication file contains all the data present in the interface + definition files. Each authentication file contains data about one + component element. When a authentication file is added as a source, each + source contributes only one component element's metadata. + + Authentication metadata can also be discovered from a remote server that + supports the authentication metadata classes (see + :mod:`com.vmware.vapi.metadata.authentication_client`). Since multiple + components can be registered with a single metadata server, when a remote + server is registered as a source, that source can contribute more than one + component. + """ + RESOURCE_TYPE = "com.vmware.vapi.metadata.authentication.source" + """ + Resource type for metadata source. + + """ + + def __init__(self, config): + """ + :type config: :class:`vmware.vapi.bindings.stub.StubConfiguration` + :param config: Configuration to be used for creating the stub. + """ + VapiInterface.__init__(self, config, _SourceStub) + +
[docs] class Info(VapiStruct): + """ + The ``Source.Info`` class contains the metadata source information. + + .. tip:: + The arguments are used to initialize data attributes with the same + names. + """ + + _validator_list = [ + UnionValidator( + 'type', + { + 'FILE' : [('filepath', True)], + 'REMOTE' : [('address', True)], + } + ), + ] + + + def __init__(self, + description=None, + type=None, + filepath=None, + address=None, + ): + """ + :type description: :class:`str` + :param description: English language human readable description of the source. + :type type: :class:`com.vmware.vapi.metadata_client.SourceType` + :param type: Type of the metadata source. + :type filepath: :class:`str` + :param filepath: Absolute file path of the authentication metadata file that has the + authentication information about one component element. The + ``filePath`` is the path to the file in the server's filesystem. + This attribute is optional and it is only relevant when the value + of ``type`` is null. + :type address: :class:`str` + :param address: Connection information for the remote server. This must be in the + format http(s)://IP:port/namespace. + + The remote server must support the classes in the + :mod:`com.vmware.vapi.metadata.authentication_client` module. It + must expose authentication information of one or more components. + This attribute is optional and it is only relevant when the value + of ``type`` is null. + """ + self.description = description + self.type = type + self.filepath = filepath + self.address = address + VapiStruct.__init__(self) +
+ Info._set_binding_type(type.StructType( + 'com.vmware.vapi.metadata.authentication.source.info', { + 'description': type.StringType(), + 'type': type.ReferenceType(com.vmware.vapi.metadata_client, 'SourceType'), + 'filepath': type.OptionalType(type.StringType()), + 'address': type.OptionalType(type.URIType()), + }, + Info, + False, + None)) + +
[docs] class CreateSpec(VapiStruct): + """ + The ``Source.CreateSpec`` class contains the registration information of a + authentication source. + + .. tip:: + The arguments are used to initialize data attributes with the same + names. + """ + + _validator_list = [ + UnionValidator( + 'type', + { + 'FILE' : [('filepath', True)], + 'REMOTE' : [('address', True)], + } + ), + ] + + + def __init__(self, + description=None, + type=None, + filepath=None, + address=None, + ): + """ + :type description: :class:`str` + :param description: English language human readable description of the source. + :type type: :class:`com.vmware.vapi.metadata_client.SourceType` + :param type: Type of the metadata source. + :type filepath: :class:`str` + :param filepath: Absolute file path of the metamodel metadata file that has the + metamodel information about one component element. + This attribute is optional and it is only relevant when the value + of ``type`` is + :attr:`com.vmware.vapi.metadata_client.SourceType.FILE`. + :type address: :class:`str` + :param address: Connection information of the remote server. This should be of the + format http(s)://IP:port/namespace. + + The remote server should contain the classes in + :mod:`com.vmware.vapi.metadata.metamodel_client` module. It could + expose metamodel information of one or more components. + This attribute is optional and it is only relevant when the value + of ``type`` is + :attr:`com.vmware.vapi.metadata_client.SourceType.REMOTE`. + """ + self.description = description + self.type = type + self.filepath = filepath + self.address = address + VapiStruct.__init__(self) +
+ CreateSpec._set_binding_type(type.StructType( + 'com.vmware.vapi.metadata.authentication.source.create_spec', { + 'description': type.StringType(), + 'type': type.ReferenceType(com.vmware.vapi.metadata_client, 'SourceType'), + 'filepath': type.OptionalType(type.StringType()), + 'address': type.OptionalType(type.URIType()), + }, + CreateSpec, + False, + None)) + + +
[docs] def create(self, + source_id, + spec, + ): + """ + Creates a new metadata source. Once the server validates the + registration information of the metadata source, the authentication + metadata is retrieved from the source. This populates elements in all + the classes defined in + :mod:`com.vmware.vapi.metadata.authentication_client` module. + + :type source_id: :class:`str` + :param source_id: metadata source identifier. + The parameter must be an identifier for the resource type: + ``com.vmware.vapi.metadata.authentication.source``. + :type spec: :class:`Source.CreateSpec` + :param spec: create specification. + :raise: :class:`com.vmware.vapi.std.errors_client.AlreadyExists` + if the metadata source identifier is already registered with the + infrastructure. + :raise: :class:`com.vmware.vapi.std.errors_client.InvalidArgument` + if the type of the source specified in null is invalid. + :raise: :class:`com.vmware.vapi.std.errors_client.InvalidArgument` + if the file specified in null is not a valid JSON file or if the + format of the authentication metadata in the JSON file is invalid. + :raise: :class:`com.vmware.vapi.std.errors_client.InvalidArgument` + if the URI specified in null is unreachable or if there is a + transport protocol or message protocol mismatch between the client + and the server or if the remote server do not have classes present + in :mod:`com.vmware.vapi.metadata.authentication_client` module. + :raise: :class:`com.vmware.vapi.std.errors_client.NotFound` + if the file specified in null does not exist. + """ + return self._invoke('create', + { + 'source_id': source_id, + 'spec': spec, + }) +
+
[docs] def delete(self, + source_id, + ): + """ + Deletes an existing authentication metadata source from the + infrastructure. + + :type source_id: :class:`str` + :param source_id: Identifier of the metadata source. + The parameter must be an identifier for the resource type: + ``com.vmware.vapi.metadata.authentication.source``. + :raise: :class:`com.vmware.vapi.std.errors_client.NotFound` + if the metadata source identifier is not found. + """ + return self._invoke('delete', + { + 'source_id': source_id, + }) +
+
[docs] def get(self, + source_id, + ): + """ + Retrieves information about the metadata source corresponding to + ``source_id``. + + :type source_id: :class:`str` + :param source_id: Identifier of the metadata source. + The parameter must be an identifier for the resource type: + ``com.vmware.vapi.metadata.authentication.source``. + :rtype: :class:`Source.Info` + :return: The :class:`Source.Info` instance that corresponds to ``source_id`` + :raise: :class:`com.vmware.vapi.std.errors_client.NotFound` + if the metadata source associated with ``source_id`` is not found. + """ + return self._invoke('get', + { + 'source_id': source_id, + }) +
+
[docs] def list(self): + """ + Returns the identifiers of the metadata sources currently registered + with the infrastructure. + + + :rtype: :class:`list` of :class:`str` + :return: The list of identifiers for metadata sources currently registered. + The return value will contain identifiers for the resource type: + ``com.vmware.vapi.metadata.authentication.source``. + """ + return self._invoke('list', None) +
+
[docs] def reload(self, + source_id=None, + ): + """ + Reloads the authentication metadata from all the metadata sources or of + a particular metadata source if ``source_id`` is specified. + + :type source_id: :class:`str` or ``None`` + :param source_id: Identifier of the metadata source. + The parameter must be an identifier for the resource type: + ``com.vmware.vapi.metadata.authentication.source``. + If unspecified, all the metadata sources are reloaded. + :raise: :class:`com.vmware.vapi.std.errors_client.NotFound` + if the metadata source associated with ``source_id`` is not found. + """ + return self._invoke('reload', + { + 'source_id': source_id, + }) +
+
[docs] def fingerprint(self, + source_id=None, + ): + """ + Returns the aggregate fingerprint of metadata from all the metadata + sources or from a particular metadata source if ``source_id`` is + specified. + + :type source_id: :class:`str` or ``None`` + :param source_id: Identifier of the metadata source. + The parameter must be an identifier for the resource type: + ``com.vmware.vapi.metadata.authentication.source``. + If unspecified, the fingerprint of all the metadata sources is + returned. + :rtype: :class:`str` + :return: Aggregate fingerprint of all the metadata sources or of a + particular metadata source. + :raise: :class:`com.vmware.vapi.std.errors_client.NotFound` + if the metadata source associated with ``source_id`` is not found. + """ + return self._invoke('fingerprint', + { + 'source_id': source_id, + }) +
+class _ComponentStub(ApiInterfaceStub): + def __init__(self, config): + # properties for list operation + list_input_type = type.StructType('operation-input', {}) + list_error_dict = {} + list_input_validator_list = [ + ] + list_output_validator_list = [ + ] + + # properties for get operation + get_input_type = type.StructType('operation-input', { + 'component_id': type.IdType(resource_types='com.vmware.vapi.component'), + }) + get_error_dict = { + 'com.vmware.vapi.std.errors.not_found': + type.ReferenceType(com.vmware.vapi.std.errors_client, 'NotFound'), + + } + get_input_validator_list = [ + ] + get_output_validator_list = [ + ] + + # properties for fingerprint operation + fingerprint_input_type = type.StructType('operation-input', { + 'component_id': type.IdType(resource_types='com.vmware.vapi.component'), + }) + fingerprint_error_dict = { + 'com.vmware.vapi.std.errors.not_found': + type.ReferenceType(com.vmware.vapi.std.errors_client, 'NotFound'), + + } + fingerprint_input_validator_list = [ + ] + fingerprint_output_validator_list = [ + ] + + operations = { + 'list': { + 'input_type': list_input_type, + 'output_type': type.ListType(type.IdType()), + 'errors': list_error_dict, + 'input_validator_list': list_input_validator_list, + 'output_validator_list': list_output_validator_list, + }, + 'get': { + 'input_type': get_input_type, + 'output_type': type.ReferenceType(sys.modules[__name__], 'ComponentData'), + 'errors': get_error_dict, + 'input_validator_list': get_input_validator_list, + 'output_validator_list': get_output_validator_list, + }, + 'fingerprint': { + 'input_type': fingerprint_input_type, + 'output_type': type.StringType(), + 'errors': fingerprint_error_dict, + 'input_validator_list': fingerprint_input_validator_list, + 'output_validator_list': fingerprint_output_validator_list, + }, + } + ApiInterfaceStub.__init__(self, iface_name='com.vmware.vapi.metadata.authentication.component', + config=config, + operations=operations) +class _PackageStub(ApiInterfaceStub): + def __init__(self, config): + # properties for list operation + list_input_type = type.StructType('operation-input', {}) + list_error_dict = {} + list_input_validator_list = [ + ] + list_output_validator_list = [ + ] + + # properties for get operation + get_input_type = type.StructType('operation-input', { + 'package_id': type.IdType(resource_types='com.vmware.vapi.package'), + }) + get_error_dict = { + 'com.vmware.vapi.std.errors.not_found': + type.ReferenceType(com.vmware.vapi.std.errors_client, 'NotFound'), + + } + get_input_validator_list = [ + ] + get_output_validator_list = [ + ] + + operations = { + 'list': { + 'input_type': list_input_type, + 'output_type': type.ListType(type.IdType()), + 'errors': list_error_dict, + 'input_validator_list': list_input_validator_list, + 'output_validator_list': list_output_validator_list, + }, + 'get': { + 'input_type': get_input_type, + 'output_type': type.ReferenceType(sys.modules[__name__], 'PackageInfo'), + 'errors': get_error_dict, + 'input_validator_list': get_input_validator_list, + 'output_validator_list': get_output_validator_list, + }, + } + ApiInterfaceStub.__init__(self, iface_name='com.vmware.vapi.metadata.authentication.package', + config=config, + operations=operations) +class _ServiceStub(ApiInterfaceStub): + def __init__(self, config): + # properties for list operation + list_input_type = type.StructType('operation-input', {}) + list_error_dict = {} + list_input_validator_list = [ + ] + list_output_validator_list = [ + ] + + # properties for get operation + get_input_type = type.StructType('operation-input', { + 'service_id': type.IdType(resource_types='com.vmware.vapi.service'), + }) + get_error_dict = { + 'com.vmware.vapi.std.errors.not_found': + type.ReferenceType(com.vmware.vapi.std.errors_client, 'NotFound'), + + } + get_input_validator_list = [ + ] + get_output_validator_list = [ + ] + + operations = { + 'list': { + 'input_type': list_input_type, + 'output_type': type.ListType(type.IdType()), + 'errors': list_error_dict, + 'input_validator_list': list_input_validator_list, + 'output_validator_list': list_output_validator_list, + }, + 'get': { + 'input_type': get_input_type, + 'output_type': type.ReferenceType(sys.modules[__name__], 'ServiceInfo'), + 'errors': get_error_dict, + 'input_validator_list': get_input_validator_list, + 'output_validator_list': get_output_validator_list, + }, + } + ApiInterfaceStub.__init__(self, iface_name='com.vmware.vapi.metadata.authentication.service', + config=config, + operations=operations) +class _SourceStub(ApiInterfaceStub): + def __init__(self, config): + # properties for create operation + create_input_type = type.StructType('operation-input', { + 'source_id': type.IdType(resource_types='com.vmware.vapi.metadata.authentication.source'), + 'spec': type.ReferenceType(sys.modules[__name__], 'Source.CreateSpec'), + }) + create_error_dict = { + 'com.vmware.vapi.std.errors.already_exists': + type.ReferenceType(com.vmware.vapi.std.errors_client, 'AlreadyExists'), + 'com.vmware.vapi.std.errors.invalid_argument': + type.ReferenceType(com.vmware.vapi.std.errors_client, 'InvalidArgument'), + 'com.vmware.vapi.std.errors.not_found': + type.ReferenceType(com.vmware.vapi.std.errors_client, 'NotFound'), + + } + create_input_validator_list = [ + ] + create_output_validator_list = [ + ] + + # properties for delete operation + delete_input_type = type.StructType('operation-input', { + 'source_id': type.IdType(resource_types='com.vmware.vapi.metadata.authentication.source'), + }) + delete_error_dict = { + 'com.vmware.vapi.std.errors.not_found': + type.ReferenceType(com.vmware.vapi.std.errors_client, 'NotFound'), + + } + delete_input_validator_list = [ + ] + delete_output_validator_list = [ + ] + + # properties for get operation + get_input_type = type.StructType('operation-input', { + 'source_id': type.IdType(resource_types='com.vmware.vapi.metadata.authentication.source'), + }) + get_error_dict = { + 'com.vmware.vapi.std.errors.not_found': + type.ReferenceType(com.vmware.vapi.std.errors_client, 'NotFound'), + + } + get_input_validator_list = [ + ] + get_output_validator_list = [ + ] + + # properties for list operation + list_input_type = type.StructType('operation-input', {}) + list_error_dict = {} + list_input_validator_list = [ + ] + list_output_validator_list = [ + ] + + # properties for reload operation + reload_input_type = type.StructType('operation-input', { + 'source_id': type.OptionalType(type.IdType()), + }) + reload_error_dict = { + 'com.vmware.vapi.std.errors.not_found': + type.ReferenceType(com.vmware.vapi.std.errors_client, 'NotFound'), + + } + reload_input_validator_list = [ + ] + reload_output_validator_list = [ + ] + + # properties for fingerprint operation + fingerprint_input_type = type.StructType('operation-input', { + 'source_id': type.OptionalType(type.IdType()), + }) + fingerprint_error_dict = { + 'com.vmware.vapi.std.errors.not_found': + type.ReferenceType(com.vmware.vapi.std.errors_client, 'NotFound'), + + } + fingerprint_input_validator_list = [ + ] + fingerprint_output_validator_list = [ + ] + + operations = { + 'create': { + 'input_type': create_input_type, + 'output_type': type.VoidType(), + 'errors': create_error_dict, + 'input_validator_list': create_input_validator_list, + 'output_validator_list': create_output_validator_list, + }, + 'delete': { + 'input_type': delete_input_type, + 'output_type': type.VoidType(), + 'errors': delete_error_dict, + 'input_validator_list': delete_input_validator_list, + 'output_validator_list': delete_output_validator_list, + }, + 'get': { + 'input_type': get_input_type, + 'output_type': type.ReferenceType(sys.modules[__name__], 'Source.Info'), + 'errors': get_error_dict, + 'input_validator_list': get_input_validator_list, + 'output_validator_list': get_output_validator_list, + }, + 'list': { + 'input_type': list_input_type, + 'output_type': type.ListType(type.IdType()), + 'errors': list_error_dict, + 'input_validator_list': list_input_validator_list, + 'output_validator_list': list_output_validator_list, + }, + 'reload': { + 'input_type': reload_input_type, + 'output_type': type.VoidType(), + 'errors': reload_error_dict, + 'input_validator_list': reload_input_validator_list, + 'output_validator_list': reload_output_validator_list, + }, + 'fingerprint': { + 'input_type': fingerprint_input_type, + 'output_type': type.StringType(), + 'errors': fingerprint_error_dict, + 'input_validator_list': fingerprint_input_validator_list, + 'output_validator_list': fingerprint_output_validator_list, + }, + } + ApiInterfaceStub.__init__(self, iface_name='com.vmware.vapi.metadata.authentication.source', + config=config, + operations=operations) +
+ +
+
+
+
+
+ + +
+
+
+
+ + + + \ No newline at end of file diff --git a/vsphere/6.0/_modules/com/vmware/vapi/metadata/cli_client.html b/vsphere/6.0/_modules/com/vmware/vapi/metadata/cli_client.html new file mode 100644 index 00000000..b2bebcef --- /dev/null +++ b/vsphere/6.0/_modules/com/vmware/vapi/metadata/cli_client.html @@ -0,0 +1,1241 @@ + + + + + + + + + + com.vmware.vapi.metadata.cli_client — vCloud Suite SDK for Python 6.0.0 documentation + + + + + + + + + + + + + + +
+
+
+
+ +

Source code for com.vmware.vapi.metadata.cli_client

+#---------------------------------------------------------------------------
+# Copyright 2014 VMware, Inc.  All rights reserved.
+
+# AUTO GENERATED FILE -- DO NOT MODIFY!
+#
+# vAPI stub file for package com.vmware.vapi.metadata.cli.
+#---------------------------------------------------------------------------
+
+"""
+The ``com.vmware.vapi.metadata.cli_client`` module provides classes that expose
+all the information required to display namespace or command help, execute a
+command and display it's result.
+
+"""
+
+__author__ = 'VMware, Inc.'
+__docformat__ = 'restructuredtext en'
+
+import sys
+
+from vmware.vapi.bindings import type
+from vmware.vapi.bindings.converter import TypeConverter
+from vmware.vapi.bindings.enum import Enum
+from vmware.vapi.bindings.error import VapiError
+from vmware.vapi.bindings.struct import VapiStruct
+from vmware.vapi.bindings.stub import VapiInterface, ApiInterfaceStub
+from vmware.vapi.bindings.common import raise_core_exception
+from vmware.vapi.data.validator import UnionValidator, HasFieldsOfValidator
+from vmware.vapi.exception import CoreException
+import com.vmware.vapi.std.errors_client
+import com.vmware.vapi.metadata_client
+
+
+
[docs]class Command(VapiInterface): + """ + The ``Command`` class provides methods to get information about command + line interface (CLI) commands. + """ + + + def __init__(self, config): + """ + :type config: :class:`vmware.vapi.bindings.stub.StubConfiguration` + :param config: Configuration to be used for creating the stub. + """ + VapiInterface.__init__(self, config, _CommandStub) + +
[docs] class FormatterType(Enum): + """ + The ``Command.FormatterType`` class defines supported CLI output formatter + types. See :attr:`Command.Info.formatter`. + + .. note:: + This class represents an enumerated type in the interface language + definition. The class contains class attributes which represent the + values in the current version of the enumerated type. Newer versions of + the enumerated type may contain new values. To use new values of the + enumerated type in communication with a server that supports the newer + version of the API, you instantiate this class. See :ref:`enumerated + type description page <enumeration_description>`. + """ + SIMPLE = None + """ + Displays command output as it is. + + """ + TABLE = None + """ + Displays command output in table format. + + """ + JSON = None + """ + Displays command output in JSON format. + + """ + XML = None + """ + Displays command output in XML format. + + """ + CSV = None + """ + Displays command output in CSV format. + + """ + HTML = None + """ + Displays command output in HTML format. + + """ + + def __init__(self, string): + """ + :type string: :class:`str` + :param string: String value for the :class:`FormatterType` instance. + """ + Enum.__init__(string) +
+ FormatterType.SIMPLE = FormatterType('SIMPLE') + FormatterType.TABLE = FormatterType('TABLE') + FormatterType.JSON = FormatterType('JSON') + FormatterType.XML = FormatterType('XML') + FormatterType.CSV = FormatterType('CSV') + FormatterType.HTML = FormatterType('HTML') + FormatterType._set_binding_type(type.EnumType( + 'com.vmware.vapi.metadata.cli.command.formatter_type', + FormatterType)) + +
[docs] class GenericType(Enum): + """ + The ``Command.GenericType`` class defines generic types supported by + ``Command`` class. See :attr:`Command.OptionInfo.generic`. + + .. note:: + This class represents an enumerated type in the interface language + definition. The class contains class attributes which represent the + values in the current version of the enumerated type. Newer versions of + the enumerated type may contain new values. To use new values of the + enumerated type in communication with a server that supports the newer + version of the API, you instantiate this class. See :ref:`enumerated + type description page <enumeration_description>`. + """ + NONE = None + """ + Default case. + + """ + OPTIONAL = None + """ + Input parameter is an optional. + + """ + LIST = None + """ + Input parameter is a list. + + """ + + def __init__(self, string): + """ + :type string: :class:`str` + :param string: String value for the :class:`GenericType` instance. + """ + Enum.__init__(string) +
+ GenericType.NONE = GenericType('NONE') + GenericType.OPTIONAL = GenericType('OPTIONAL') + GenericType.LIST = GenericType('LIST') + GenericType._set_binding_type(type.EnumType( + 'com.vmware.vapi.metadata.cli.command.generic_type', + GenericType)) + +
[docs] class OutputFieldInfo(VapiStruct): + """ + The ``Command.OutputFieldInfo`` class describes the name used by the CLI to + display a single attribute of a class element in the interface definition + language. + + .. tip:: + The arguments are used to initialize data attributes with the same + names. + """ + + + + def __init__(self, + field_name=None, + display_name=None, + ): + """ + :type field_name: :class:`str` + :param field_name: Name of the attribute. + :type display_name: :class:`str` + :param display_name: Name used by the CLI to display the attribute. + """ + self.field_name = field_name + self.display_name = display_name + VapiStruct.__init__(self) +
+ OutputFieldInfo._set_binding_type(type.StructType( + 'com.vmware.vapi.metadata.cli.command.output_field_info', { + 'field_name': type.StringType(), + 'display_name': type.StringType(), + }, + OutputFieldInfo, + False, + None)) + +
[docs] class OutputInfo(VapiStruct): + """ + The ``Command.OutputInfo`` class describes the names used by the CLI to + display the attributes of a class element in the interface definition + language as well as the order in which the attributes will be displayed. + + .. tip:: + The arguments are used to initialize data attributes with the same + names. + """ + + + + def __init__(self, + structure_id=None, + output_fields=None, + ): + """ + :type structure_id: :class:`str` + :param structure_id: Name of the class. + When clients pass a value of this class as a parameter, the + attribute must be an identifier for the resource type: + ``com.vmware.vapi.structure``. When methods return a value of this + class as a return value, the attribute will be an identifier for + the resource type: ``com.vmware.vapi.structure``. + :type output_fields: :class:`list` of :class:`Command.OutputFieldInfo` + :param output_fields: The order in which the attributes of the class will be displayed by + the CLI as well as the names used to display the attributes. + """ + self.structure_id = structure_id + self.output_fields = output_fields + VapiStruct.__init__(self) +
+ OutputInfo._set_binding_type(type.StructType( + 'com.vmware.vapi.metadata.cli.command.output_info', { + 'structure_id': type.IdType(resource_types='com.vmware.vapi.structure'), + 'output_fields': type.ListType(type.ReferenceType(sys.modules[__name__], 'Command.OutputFieldInfo')), + }, + OutputInfo, + False, + None)) + +
[docs] class OptionInfo(VapiStruct): + """ + The ``Command.OptionInfo`` class describes information about a specific + input option of a command. + + .. tip:: + The arguments are used to initialize data attributes with the same + names. + """ + + + + def __init__(self, + long_option=None, + short_option=None, + field_name=None, + description=None, + type=None, + generic=None, + ): + """ + :type long_option: :class:`str` + :param long_option: The long option name of the parameter as used by the user. + :type short_option: :class:`str` or ``None`` + :param short_option: The single character value option name. + If not present, there's no single character option for the + parameter. + :type field_name: :class:`str` + :param field_name: The fully qualified name of the option referred to by the operation + element in :attr:`Command.Info.operation_id`. + :type description: :class:`str` + :param description: The description of the option to be displayed to the user when they + request usage information for a CLI command. + :type type: :class:`str` + :param type: The type of option. This is used to display information about what + kind of data is expected (string, number, boolean, etc.) for the + option when they request usage information for a CLI command. For + class this stores the fully qualified class id. + :type generic: :class:`Command.GenericType` + :param generic: This is used to tell the user whether the option is required or + optional, or whether they can specify the option multiple times. + """ + self.long_option = long_option + self.short_option = short_option + self.field_name = field_name + self.description = description + self.type = type + self.generic = generic + VapiStruct.__init__(self) +
+ OptionInfo._set_binding_type(type.StructType( + 'com.vmware.vapi.metadata.cli.command.option_info', { + 'long_option': type.StringType(), + 'short_option': type.OptionalType(type.StringType()), + 'field_name': type.StringType(), + 'description': type.StringType(), + 'type': type.StringType(), + 'generic': type.ReferenceType(sys.modules[__name__], 'Command.GenericType'), + }, + OptionInfo, + False, + None)) + +
[docs] class Identity(VapiStruct): + """ + The ``Command.Identity`` class uniquely identifies a command in the CLI + commands tree. + + .. tip:: + The arguments are used to initialize data attributes with the same + names. + """ + + + + def __init__(self, + path=None, + name=None, + ): + """ + :type path: :class:`str` + :param path: The dot-separated path of the namespace containing the command in + the CLI command tree. + :type name: :class:`str` + :param name: Name of the command. + """ + self.path = path + self.name = name + VapiStruct.__init__(self) +
+ Identity._set_binding_type(type.StructType( + 'com.vmware.vapi.metadata.cli.command.identity', { + 'path': type.StringType(), + 'name': type.StringType(), + }, + Identity, + False, + None)) + +
[docs] class Info(VapiStruct): + """ + The ``Command.Info`` class contains information about a command. It + includes the identity of the command, a description, information about the + class and method that implement the command, and CLI-specific information + for the command. + + .. tip:: + The arguments are used to initialize data attributes with the same + names. + """ + + + + def __init__(self, + identity=None, + description=None, + service_id=None, + operation_id=None, + options=None, + formatter=None, + output_field_list=None, + ): + """ + :type identity: :class:`Command.Identity` + :param identity: Basic command identity. + :type description: :class:`str` + :param description: The text description displayed to the user in help output. + :type service_id: :class:`str` + :param service_id: The service identifier that contains the operations for this CLI + command. + When clients pass a value of this class as a parameter, the + attribute must be an identifier for the resource type: + ``com.vmware.vapi.service``. When methods return a value of this + class as a return value, the attribute will be an identifier for + the resource type: ``com.vmware.vapi.service``. + :type operation_id: :class:`str` + :param operation_id: The operation identifier corresponding to this CLI command. + When clients pass a value of this class as a parameter, the + attribute must be an identifier for the resource type: + ``com.vmware.vapi.operation``. When methods return a value of this + class as a return value, the attribute will be an identifier for + the resource type: ``com.vmware.vapi.operation``. + :type options: :class:`list` of :class:`Command.OptionInfo` + :param options: The input for this command. + :type formatter: :class:`Command.FormatterType` or ``None`` + :param formatter: The formatter to use when displaying the output of this command. + If not present, client can choose a default output formatter. + :type output_field_list: :class:`list` of :class:`Command.OutputInfo` + :param output_field_list: List of output structure name and output field info. + """ + self.identity = identity + self.description = description + self.service_id = service_id + self.operation_id = operation_id + self.options = options + self.formatter = formatter + self.output_field_list = output_field_list + VapiStruct.__init__(self) +
+ Info._set_binding_type(type.StructType( + 'com.vmware.vapi.metadata.cli.command.info', { + 'identity': type.ReferenceType(sys.modules[__name__], 'Command.Identity'), + 'description': type.StringType(), + 'service_id': type.IdType(resource_types='com.vmware.vapi.service'), + 'operation_id': type.IdType(resource_types='com.vmware.vapi.operation'), + 'options': type.ListType(type.ReferenceType(sys.modules[__name__], 'Command.OptionInfo')), + 'formatter': type.OptionalType(type.ReferenceType(sys.modules[__name__], 'Command.FormatterType')), + 'output_field_list': type.ListType(type.ReferenceType(sys.modules[__name__], 'Command.OutputInfo')), + }, + Info, + False, + None)) + + +
[docs] def list(self, + path=None, + ): + """ + Returns the identifiers of all commands, or commands in a specific + namespace. + + :type path: :class:`str` or ``None`` + :param path: The dot-separated path of the namespace for which command + identifiers should be returned. + If None identifiers of all commands registered with the + infrastructure will be returned. + :rtype: :class:`list` of :class:`Command.Identity` + :return: Identifiers of the requested commands. + :raise: :class:`com.vmware.vapi.std.errors_client.NotFound` + if a namespace corresponding to ``path`` doesn't exist. + """ + return self._invoke('list', + { + 'path': path, + }) +
+
[docs] def get(self, + identity, + ): + """ + Retrieves information about a command including information about how + to execute that command. + + :type identity: :class:`Command.Identity` + :param identity: Identifier of the command for which to retreive information. + :rtype: :class:`Command.Info` + :return: Information about the command including information about how to + execute that command. + :raise: :class:`com.vmware.vapi.std.errors_client.NotFound` + if a command corresponding to ``identity`` doesn't exist. + """ + return self._invoke('get', + { + 'identity': identity, + }) +
+
[docs] def fingerprint(self): + """ + Returns the aggregate fingerprint of all the command metadata from all + the metadata sources. + + The fingerprint provides clients an efficient way to check if the + metadata for commands has been modified on the server. + + + :rtype: :class:`str` + :return: Fingerprint of all the command metadata present on the server. + """ + return self._invoke('fingerprint', None) +
+
[docs]class Namespace(VapiInterface): + """ + The ``Namespace`` class provides methods to get information about command + line interface (CLI) namespaces. + """ + + + def __init__(self, config): + """ + :type config: :class:`vmware.vapi.bindings.stub.StubConfiguration` + :param config: Configuration to be used for creating the stub. + """ + VapiInterface.__init__(self, config, _NamespaceStub) + +
[docs] class Identity(VapiStruct): + """ + The ``Namespace.Identity`` class uniquely identifies a namespace in the CLI + namespace tree. + + .. tip:: + The arguments are used to initialize data attributes with the same + names. + """ + + + + def __init__(self, + path=None, + name=None, + ): + """ + :type path: :class:`str` + :param path: The dot-separated path of the namespace containing the namespace in + the CLI node tree. For top-level namespace this will be empty. + :type name: :class:`str` + :param name: The name displayed to the user for this namespace. + """ + self.path = path + self.name = name + VapiStruct.__init__(self) +
+ Identity._set_binding_type(type.StructType( + 'com.vmware.vapi.metadata.cli.namespace.identity', { + 'path': type.StringType(), + 'name': type.StringType(), + }, + Identity, + False, + None)) + +
[docs] class Info(VapiStruct): + """ + The ``Namespace.Info`` class contains information about a namespace. It + includes the identity of the namespace, a description, information children + namespaces. + + .. tip:: + The arguments are used to initialize data attributes with the same + names. + """ + + + + def __init__(self, + identity=None, + description=None, + children=None, + ): + """ + :type identity: :class:`Namespace.Identity` + :param identity: Basic namespace identity. + :type description: :class:`str` + :param description: The text description displayed to the user in help output. + :type children: :class:`list` of :class:`Namespace.Identity` + :param children: The children of this namespace in the tree of CLI namespaces. + """ + self.identity = identity + self.description = description + self.children = children + VapiStruct.__init__(self) +
+ Info._set_binding_type(type.StructType( + 'com.vmware.vapi.metadata.cli.namespace.info', { + 'identity': type.ReferenceType(sys.modules[__name__], 'Namespace.Identity'), + 'description': type.StringType(), + 'children': type.ListType(type.ReferenceType(sys.modules[__name__], 'Namespace.Identity')), + }, + Info, + False, + None)) + + +
[docs] def list(self): + """ + Returns the identifiers of all namespaces registered with the + infrastructure. + + + :rtype: :class:`list` of :class:`Namespace.Identity` + :return: Identifiers of all the namespaces. + """ + return self._invoke('list', None) +
+
[docs] def get(self, + identity, + ): + """ + Retreives information about a namespace including information about + children of that namespace. + + :type identity: :class:`Namespace.Identity` + :param identity: Identifier of the namespace for which to retreive information. + :rtype: :class:`Namespace.Info` + :return: Information about the namespace including information about child + of that namespace. + :raise: :class:`com.vmware.vapi.std.errors_client.NotFound` + if a namespace corresponding to ``identity`` doesn't exist. + """ + return self._invoke('get', + { + 'identity': identity, + }) +
+
[docs] def fingerprint(self): + """ + Returns the aggregate fingerprint of all the namespace metadata from + all the metadata sources. + + The fingerprint provides clients an efficient way to check if the + metadata for namespaces has been modified on the server. + + + :rtype: :class:`str` + :return: Fingerprint of all the namespace metadata present on the server. + """ + return self._invoke('fingerprint', None) +
+
[docs]class Source(VapiInterface): + """ + The ``Source`` class provides methods to manage the sources of command line + interface (CLI) metadata information. + + The interface definition language infrastructure provides tools to generate + various kinds of metadata in JSON format from the interface definition + files and additional properties files. One of the generated files contains + CLI information. + + A CLI metadata file contains information about one component element. When + a CLI metadata file is added as a source, each source contributes only one + component element's metadata. + + CLI metadata can also be discovered from a remote server that supports the + CLI metadata services (see :mod:`com.vmware.vapi.metadata.cli_client`) + module. Since multiple components can be registered with a single metadata + server, when a remote server is registered as a source, that source can + contribute more than one component. + """ + + + def __init__(self, config): + """ + :type config: :class:`vmware.vapi.bindings.stub.StubConfiguration` + :param config: Configuration to be used for creating the stub. + """ + VapiInterface.__init__(self, config, _SourceStub) + +
[docs] class Info(VapiStruct): + """ + The ``Source.Info`` class contains the metadata source information. + + .. tip:: + The arguments are used to initialize data attributes with the same + names. + """ + + _validator_list = [ + UnionValidator( + 'type', + { + 'FILE' : [('filepath', True)], + 'REMOTE' : [('address', True)], + } + ), + ] + + + def __init__(self, + description=None, + type=None, + filepath=None, + address=None, + ): + """ + :type description: :class:`str` + :param description: English language human readable description of the source. + :type type: :class:`com.vmware.vapi.metadata_client.SourceType` + :param type: The type (FILE, REMOTE) of the metadata source. + :type filepath: :class:`str` + :param filepath: Absolute file path of the CLI metadata file that has the CLI + information about one component. The ``filepath`` is the path to + the file in the server's filesystem. + This attribute is optional and it is only relevant when the value + of ``type`` is null. + :type address: :class:`str` + :param address: Connection information for the remote server. This should be in the + format http(s)://IP:port/namespace. + + The remote server must contain the classes in the + :mod:`com.vmware.vapi.metadata.cli_client` module. It must expose + CLI information of one or more components. + This attribute is optional and it is only relevant when the value + of ``type`` is null. + """ + self.description = description + self.type = type + self.filepath = filepath + self.address = address + VapiStruct.__init__(self) +
+ Info._set_binding_type(type.StructType( + 'com.vmware.vapi.metadata.cli.source.info', { + 'description': type.StringType(), + 'type': type.ReferenceType(com.vmware.vapi.metadata_client, 'SourceType'), + 'filepath': type.OptionalType(type.StringType()), + 'address': type.OptionalType(type.URIType()), + }, + Info, + False, + None)) + +
[docs] class CreateSpec(VapiStruct): + """ + The ``Source.CreateSpec`` class contains the registration information of a + CLI source. + + .. tip:: + The arguments are used to initialize data attributes with the same + names. + """ + + _validator_list = [ + UnionValidator( + 'type', + { + 'FILE' : [('filepath', True)], + 'REMOTE' : [('address', True)], + } + ), + ] + + + def __init__(self, + description=None, + type=None, + filepath=None, + address=None, + ): + """ + :type description: :class:`str` + :param description: English language human readable description of the source. + :type type: :class:`com.vmware.vapi.metadata_client.SourceType` + :param type: Type of the metadata source. + :type filepath: :class:`str` + :param filepath: Absolute file path of the metamodel metadata file that has the + metamodel information about one component element. + This attribute is optional and it is only relevant when the value + of ``type`` is + :attr:`com.vmware.vapi.metadata_client.SourceType.FILE`. + :type address: :class:`str` + :param address: Connection information of the remote server. This should be of the + format http(s)://IP:port/namespace. + + The remote server should contain the classes in + :mod:`com.vmware.vapi.metadata.metamodel_client` module. It could + expose metamodel information of one or more components. + This attribute is optional and it is only relevant when the value + of ``type`` is + :attr:`com.vmware.vapi.metadata_client.SourceType.REMOTE`. + """ + self.description = description + self.type = type + self.filepath = filepath + self.address = address + VapiStruct.__init__(self) +
+ CreateSpec._set_binding_type(type.StructType( + 'com.vmware.vapi.metadata.cli.source.create_spec', { + 'description': type.StringType(), + 'type': type.ReferenceType(com.vmware.vapi.metadata_client, 'SourceType'), + 'filepath': type.OptionalType(type.StringType()), + 'address': type.OptionalType(type.URIType()), + }, + CreateSpec, + False, + None)) + + +
[docs] def create(self, + source_id, + spec, + ): + """ + Creates a new metadata source. Once the server validates the + registration information of the metadata source, the CLI metadata is + retrieved from the source. This populates elements in all the classes + defined in :mod:`com.vmware.vapi.metadata.cli_client` module. + + :type source_id: :class:`str` + :param source_id: metadata source identifier. + The parameter must be an identifier for the resource type: + ``com.vmware.vapi.metadata.source``. + :type spec: :class:`Source.CreateSpec` + :param spec: create specification. + :raise: :class:`com.vmware.vapi.std.errors_client.AlreadyExists` + If the metadata source identifier is already registered with the + infrastructure. + :raise: :class:`com.vmware.vapi.std.errors_client.InvalidArgument` + If type of the source specified in null is invalid. + :raise: :class:`com.vmware.vapi.std.errors_client.InvalidArgument` + If the file specified in null is not a valid JSON file or if the + format of the CLI metadata in the JSON file is invalid. + :raise: :class:`com.vmware.vapi.std.errors_client.InvalidArgument` + If the URI specified in null is unreachable or if there is a + transport protocol or message protocol mismatch between the client + and the server or if the remote server do not have classes present + in :mod:`com.vmware.vapi.metadata.cli_client` module. + :raise: :class:`com.vmware.vapi.std.errors_client.NotFound` + If the file specified in null does not exist. + """ + return self._invoke('create', + { + 'source_id': source_id, + 'spec': spec, + }) +
+
[docs] def delete(self, + source_id, + ): + """ + Deletes an existing CLI metadata source from the infrastructure. + + :type source_id: :class:`str` + :param source_id: Identifier of the metadata source. + The parameter must be an identifier for the resource type: + ``com.vmware.vapi.metadata.source``. + :raise: :class:`com.vmware.vapi.std.errors_client.NotFound` + If the metadata source identifier is not found. + """ + return self._invoke('delete', + { + 'source_id': source_id, + }) +
+
[docs] def get(self, + source_id, + ): + """ + Retrieves information about the metadata source corresponding to + ``source_id``. + + :type source_id: :class:`str` + :param source_id: Identifier of the metadata source. + The parameter must be an identifier for the resource type: + ``com.vmware.vapi.metadata.source``. + :rtype: :class:`Source.Info` + :return: The :class:`Source.Info` instance that corresponds to ``source_id`` + :raise: :class:`com.vmware.vapi.std.errors_client.NotFound` + If the metadata source identifier is not found. + """ + return self._invoke('get', + { + 'source_id': source_id, + }) +
+
[docs] def list(self): + """ + Returns the identifiers of the metadata sources currently registered + with the infrastructure. + + + :rtype: :class:`list` of :class:`str` + :return: The list of identifiers for metadata sources currently registered. + The return value will contain identifiers for the resource type: + ``com.vmware.vapi.metadata.source``. + """ + return self._invoke('list', None) +
+
[docs] def reload(self, + source_id=None, + ): + """ + Reloads the CLI metadata from all the metadata sources or of a + particular metadata source if ``source_id`` is specified. + + :type source_id: :class:`str` or ``None`` + :param source_id: Identifier of the metadata source. + The parameter must be an identifier for the resource type: + ``com.vmware.vapi.metadata.source``. + If unspecified, all the metadata sources are reloaded. + :raise: :class:`com.vmware.vapi.std.errors_client.NotFound` + If the metadata source identifier is not found. + """ + return self._invoke('reload', + { + 'source_id': source_id, + }) +
+
[docs] def fingerprint(self, + source_id=None, + ): + """ + Returns the aggregate fingerprint of metadata from all the metadata + sources or from a particular metadata source if ``source_id`` is + specified. + + :type source_id: :class:`str` or ``None`` + :param source_id: Identifier of the metadata source. + The parameter must be an identifier for the resource type: + ``com.vmware.vapi.metadata.source``. + If unspecified, the fingerprint of all the metadata sources is + returned. + :rtype: :class:`str` + :return: Aggregate fingerprint of all the metadata sources or of a + particular metadata source. + :raise: :class:`com.vmware.vapi.std.errors_client.NotFound` + If the metadata source identifier is not found. + """ + return self._invoke('fingerprint', + { + 'source_id': source_id, + }) +
+class _CommandStub(ApiInterfaceStub): + def __init__(self, config): + # properties for list operation + list_input_type = type.StructType('operation-input', { + 'path': type.OptionalType(type.StringType()), + }) + list_error_dict = { + 'com.vmware.vapi.std.errors.not_found': + type.ReferenceType(com.vmware.vapi.std.errors_client, 'NotFound'), + + } + list_input_validator_list = [ + ] + list_output_validator_list = [ + ] + + # properties for get operation + get_input_type = type.StructType('operation-input', { + 'identity': type.ReferenceType(sys.modules[__name__], 'Command.Identity'), + }) + get_error_dict = { + 'com.vmware.vapi.std.errors.not_found': + type.ReferenceType(com.vmware.vapi.std.errors_client, 'NotFound'), + + } + get_input_validator_list = [ + ] + get_output_validator_list = [ + ] + + # properties for fingerprint operation + fingerprint_input_type = type.StructType('operation-input', {}) + fingerprint_error_dict = {} + fingerprint_input_validator_list = [ + ] + fingerprint_output_validator_list = [ + ] + + operations = { + 'list': { + 'input_type': list_input_type, + 'output_type': type.ListType(type.ReferenceType(sys.modules[__name__], 'Command.Identity')), + 'errors': list_error_dict, + 'input_validator_list': list_input_validator_list, + 'output_validator_list': list_output_validator_list, + }, + 'get': { + 'input_type': get_input_type, + 'output_type': type.ReferenceType(sys.modules[__name__], 'Command.Info'), + 'errors': get_error_dict, + 'input_validator_list': get_input_validator_list, + 'output_validator_list': get_output_validator_list, + }, + 'fingerprint': { + 'input_type': fingerprint_input_type, + 'output_type': type.StringType(), + 'errors': fingerprint_error_dict, + 'input_validator_list': fingerprint_input_validator_list, + 'output_validator_list': fingerprint_output_validator_list, + }, + } + ApiInterfaceStub.__init__(self, iface_name='com.vmware.vapi.metadata.cli.command', + config=config, + operations=operations) +class _NamespaceStub(ApiInterfaceStub): + def __init__(self, config): + # properties for list operation + list_input_type = type.StructType('operation-input', {}) + list_error_dict = {} + list_input_validator_list = [ + ] + list_output_validator_list = [ + ] + + # properties for get operation + get_input_type = type.StructType('operation-input', { + 'identity': type.ReferenceType(sys.modules[__name__], 'Namespace.Identity'), + }) + get_error_dict = { + 'com.vmware.vapi.std.errors.not_found': + type.ReferenceType(com.vmware.vapi.std.errors_client, 'NotFound'), + + } + get_input_validator_list = [ + ] + get_output_validator_list = [ + ] + + # properties for fingerprint operation + fingerprint_input_type = type.StructType('operation-input', {}) + fingerprint_error_dict = {} + fingerprint_input_validator_list = [ + ] + fingerprint_output_validator_list = [ + ] + + operations = { + 'list': { + 'input_type': list_input_type, + 'output_type': type.ListType(type.ReferenceType(sys.modules[__name__], 'Namespace.Identity')), + 'errors': list_error_dict, + 'input_validator_list': list_input_validator_list, + 'output_validator_list': list_output_validator_list, + }, + 'get': { + 'input_type': get_input_type, + 'output_type': type.ReferenceType(sys.modules[__name__], 'Namespace.Info'), + 'errors': get_error_dict, + 'input_validator_list': get_input_validator_list, + 'output_validator_list': get_output_validator_list, + }, + 'fingerprint': { + 'input_type': fingerprint_input_type, + 'output_type': type.StringType(), + 'errors': fingerprint_error_dict, + 'input_validator_list': fingerprint_input_validator_list, + 'output_validator_list': fingerprint_output_validator_list, + }, + } + ApiInterfaceStub.__init__(self, iface_name='com.vmware.vapi.metadata.cli.namespace', + config=config, + operations=operations) +class _SourceStub(ApiInterfaceStub): + def __init__(self, config): + # properties for create operation + create_input_type = type.StructType('operation-input', { + 'source_id': type.IdType(resource_types='com.vmware.vapi.metadata.source'), + 'spec': type.ReferenceType(sys.modules[__name__], 'Source.CreateSpec'), + }) + create_error_dict = { + 'com.vmware.vapi.std.errors.already_exists': + type.ReferenceType(com.vmware.vapi.std.errors_client, 'AlreadyExists'), + 'com.vmware.vapi.std.errors.invalid_argument': + type.ReferenceType(com.vmware.vapi.std.errors_client, 'InvalidArgument'), + 'com.vmware.vapi.std.errors.not_found': + type.ReferenceType(com.vmware.vapi.std.errors_client, 'NotFound'), + + } + create_input_validator_list = [ + ] + create_output_validator_list = [ + ] + + # properties for delete operation + delete_input_type = type.StructType('operation-input', { + 'source_id': type.IdType(resource_types='com.vmware.vapi.metadata.source'), + }) + delete_error_dict = { + 'com.vmware.vapi.std.errors.not_found': + type.ReferenceType(com.vmware.vapi.std.errors_client, 'NotFound'), + + } + delete_input_validator_list = [ + ] + delete_output_validator_list = [ + ] + + # properties for get operation + get_input_type = type.StructType('operation-input', { + 'source_id': type.IdType(resource_types='com.vmware.vapi.metadata.source'), + }) + get_error_dict = { + 'com.vmware.vapi.std.errors.not_found': + type.ReferenceType(com.vmware.vapi.std.errors_client, 'NotFound'), + + } + get_input_validator_list = [ + ] + get_output_validator_list = [ + ] + + # properties for list operation + list_input_type = type.StructType('operation-input', {}) + list_error_dict = {} + list_input_validator_list = [ + ] + list_output_validator_list = [ + ] + + # properties for reload operation + reload_input_type = type.StructType('operation-input', { + 'source_id': type.OptionalType(type.IdType()), + }) + reload_error_dict = { + 'com.vmware.vapi.std.errors.not_found': + type.ReferenceType(com.vmware.vapi.std.errors_client, 'NotFound'), + + } + reload_input_validator_list = [ + ] + reload_output_validator_list = [ + ] + + # properties for fingerprint operation + fingerprint_input_type = type.StructType('operation-input', { + 'source_id': type.OptionalType(type.IdType()), + }) + fingerprint_error_dict = { + 'com.vmware.vapi.std.errors.not_found': + type.ReferenceType(com.vmware.vapi.std.errors_client, 'NotFound'), + + } + fingerprint_input_validator_list = [ + ] + fingerprint_output_validator_list = [ + ] + + operations = { + 'create': { + 'input_type': create_input_type, + 'output_type': type.VoidType(), + 'errors': create_error_dict, + 'input_validator_list': create_input_validator_list, + 'output_validator_list': create_output_validator_list, + }, + 'delete': { + 'input_type': delete_input_type, + 'output_type': type.VoidType(), + 'errors': delete_error_dict, + 'input_validator_list': delete_input_validator_list, + 'output_validator_list': delete_output_validator_list, + }, + 'get': { + 'input_type': get_input_type, + 'output_type': type.ReferenceType(sys.modules[__name__], 'Source.Info'), + 'errors': get_error_dict, + 'input_validator_list': get_input_validator_list, + 'output_validator_list': get_output_validator_list, + }, + 'list': { + 'input_type': list_input_type, + 'output_type': type.ListType(type.IdType()), + 'errors': list_error_dict, + 'input_validator_list': list_input_validator_list, + 'output_validator_list': list_output_validator_list, + }, + 'reload': { + 'input_type': reload_input_type, + 'output_type': type.VoidType(), + 'errors': reload_error_dict, + 'input_validator_list': reload_input_validator_list, + 'output_validator_list': reload_output_validator_list, + }, + 'fingerprint': { + 'input_type': fingerprint_input_type, + 'output_type': type.StringType(), + 'errors': fingerprint_error_dict, + 'input_validator_list': fingerprint_input_validator_list, + 'output_validator_list': fingerprint_output_validator_list, + }, + } + ApiInterfaceStub.__init__(self, iface_name='com.vmware.vapi.metadata.cli.source', + config=config, + operations=operations) +
+ +
+
+
+
+
+ + +
+
+
+
+ + + + \ No newline at end of file diff --git a/vsphere/6.0/_modules/com/vmware/vapi/metadata/metamodel/resource_client.html b/vsphere/6.0/_modules/com/vmware/vapi/metadata/metamodel/resource_client.html new file mode 100644 index 00000000..97b650b7 --- /dev/null +++ b/vsphere/6.0/_modules/com/vmware/vapi/metadata/metamodel/resource_client.html @@ -0,0 +1,205 @@ + + + + + + + + + + com.vmware.vapi.metadata.metamodel.resource_client — vCloud Suite SDK for Python 6.0.0 documentation + + + + + + + + + + + + + + +
+
+
+
+ +

Source code for com.vmware.vapi.metadata.metamodel.resource_client

+#---------------------------------------------------------------------------
+# Copyright 2014 VMware, Inc.  All rights reserved.
+
+# AUTO GENERATED FILE -- DO NOT MODIFY!
+#
+# vAPI stub file for package com.vmware.vapi.metadata.metamodel.resource.
+#---------------------------------------------------------------------------
+
+"""
+The ``com.vmware.vapi.metadata.metamodel.resource_client`` module provides
+classes to retrieve metamodel information for resource types.
+
+"""
+
+__author__ = 'VMware, Inc.'
+__docformat__ = 'restructuredtext en'
+
+import sys
+
+from vmware.vapi.bindings import type
+from vmware.vapi.bindings.converter import TypeConverter
+from vmware.vapi.bindings.enum import Enum
+from vmware.vapi.bindings.error import VapiError
+from vmware.vapi.bindings.struct import VapiStruct
+from vmware.vapi.bindings.stub import VapiInterface, ApiInterfaceStub
+from vmware.vapi.bindings.common import raise_core_exception
+from vmware.vapi.data.validator import UnionValidator, HasFieldsOfValidator
+from vmware.vapi.exception import CoreException
+import com.vmware.vapi.std.errors_client
+
+
+
[docs]class Model(VapiInterface): + """ + The ``Model`` class provides methods to retrieve information about models. + + A structure is used as a model if it is used for persisting data about an + entity. Some of the fields in the model structure are also used for + creating indexes for querying. + + One or more services can operate on the same resource type. One or more + services can provide the model structure for an entity of this resource + type. Using ``Model`` class you can retrieve the list of all the structure + elements that are model structures for a given resource type. + """ + + + def __init__(self, config): + """ + :type config: :class:`vmware.vapi.bindings.stub.StubConfiguration` + :param config: Configuration to be used for creating the stub. + """ + VapiInterface.__init__(self, config, _ModelStub) + + +
[docs] def list(self, + resource_id, + ): + """ + Returns the set of identifiers for the structure elements that are + models for the resource type corresponding to ``resource_id``. + + The :class:`com.vmware.vapi.metadata.metamodel_client.Structure` class + provides methods to retrieve more details about the structure elements + corresponding to the identifiers returned by this method. + + :type resource_id: :class:`str` + :param resource_id: Identifier of the resource type. + The parameter must be an identifier for the resource type: + ``com.vmware.vapi.resource``. + :rtype: :class:`set` of :class:`str` + :return: The set of identifiers for the models that are associated with the + resource type in ``resource_id``. + The return value will contain identifiers for the resource type: + ``com.vmware.vapi.structure``. + :raise: :class:`com.vmware.vapi.std.errors_client.NotFound` + if the resource type associated with ``resource_id`` does not + exist. + """ + return self._invoke('list', + { + 'resource_id': resource_id, + }) +
+class _ModelStub(ApiInterfaceStub): + def __init__(self, config): + # properties for list operation + list_input_type = type.StructType('operation-input', { + 'resource_id': type.IdType(resource_types='com.vmware.vapi.resource'), + }) + list_error_dict = { + 'com.vmware.vapi.std.errors.not_found': + type.ReferenceType(com.vmware.vapi.std.errors_client, 'NotFound'), + + } + list_input_validator_list = [ + ] + list_output_validator_list = [ + ] + + operations = { + 'list': { + 'input_type': list_input_type, + 'output_type': type.SetType(type.IdType()), + 'errors': list_error_dict, + 'input_validator_list': list_input_validator_list, + 'output_validator_list': list_output_validator_list, + }, + } + ApiInterfaceStub.__init__(self, iface_name='com.vmware.vapi.metadata.metamodel.resource.model', + config=config, + operations=operations) +
+ +
+
+
+
+
+ + +
+
+
+
+ + + + \ No newline at end of file diff --git a/vsphere/6.0/_modules/com/vmware/vapi/metadata/metamodel/service_client.html b/vsphere/6.0/_modules/com/vmware/vapi/metadata/metamodel/service_client.html new file mode 100644 index 00000000..0a02899a --- /dev/null +++ b/vsphere/6.0/_modules/com/vmware/vapi/metadata/metamodel/service_client.html @@ -0,0 +1,254 @@ + + + + + + + + + + com.vmware.vapi.metadata.metamodel.service_client — vCloud Suite SDK for Python 6.0.0 documentation + + + + + + + + + + + + + + +
+
+
+
+ +

Source code for com.vmware.vapi.metadata.metamodel.service_client

+#---------------------------------------------------------------------------
+# Copyright 2014 VMware, Inc.  All rights reserved.
+
+# AUTO GENERATED FILE -- DO NOT MODIFY!
+#
+# vAPI stub file for package com.vmware.vapi.metadata.metamodel.service.
+#---------------------------------------------------------------------------
+
+"""
+
+
+"""
+
+__author__ = 'VMware, Inc.'
+__docformat__ = 'restructuredtext en'
+
+import sys
+
+from vmware.vapi.bindings import type
+from vmware.vapi.bindings.converter import TypeConverter
+from vmware.vapi.bindings.enum import Enum
+from vmware.vapi.bindings.error import VapiError
+from vmware.vapi.bindings.struct import VapiStruct
+from vmware.vapi.bindings.stub import VapiInterface, ApiInterfaceStub
+from vmware.vapi.bindings.common import raise_core_exception
+from vmware.vapi.data.validator import UnionValidator, HasFieldsOfValidator
+from vmware.vapi.exception import CoreException
+import com.vmware.vapi.std.errors_client
+import com.vmware.vapi.metadata.metamodel_client
+
+
+
[docs]class Operation(VapiInterface): + """ + The ``Operation`` class provides methods to retrieve metamodel information + of an operation element in the interface definition language. + """ + RESOURCE_TYPE = "com.vmware.vapi.operation" + """ + Resource type for operation element. + + """ + + def __init__(self, config): + """ + :type config: :class:`vmware.vapi.bindings.stub.StubConfiguration` + :param config: Configuration to be used for creating the stub. + """ + VapiInterface.__init__(self, config, _OperationStub) + + +
[docs] def list(self, + service_id, + ): + """ + Returns the identifiers for the operation elements that are defined in + the scope of ``service_id``. + + :type service_id: :class:`str` + :param service_id: Identifier of the service element. + The parameter must be an identifier for the resource type: + ``com.vmware.vapi.service``. + :rtype: :class:`list` of :class:`str` + :return: The list of identifiers for the operation elements that are defined + in the scope of ``service_id``. + The return value will contain identifiers for the resource type: + ``com.vmware.vapi.operation``. + :raise: :class:`com.vmware.vapi.std.errors_client.NotFound` + if the service element associated with ``service_id`` does not + exist in any of the package elements. + """ + return self._invoke('list', + { + 'service_id': service_id, + }) +
+
[docs] def get(self, + service_id, + operation_id, + ): + """ + Retrieves the metamodel information about an operation element + corresponding to ``operation_id`` contained in the service element + corresponding to ``service_id``. + + :type service_id: :class:`str` + :param service_id: Identifier of the service element. + The parameter must be an identifier for the resource type: + ``com.vmware.vapi.service``. + :type operation_id: :class:`str` + :param operation_id: Identifier of the operation element. + The parameter must be an identifier for the resource type: + ``com.vmware.vapi.operation``. + :rtype: :class:`com.vmware.vapi.metadata.metamodel_client.OperationInfo` + :return: The + :class:`com.vmware.vapi.metadata.metamodel_client.OperationInfo` + instance that corresponds to ``operation_id`` defined in scope + ``service_id``. + :raise: :class:`com.vmware.vapi.std.errors_client.NotFound` + if the service element associated with ``service_id`` does not + exist in any of the package elements. + :raise: :class:`com.vmware.vapi.std.errors_client.NotFound` + if the operation element associated with ``operation_id`` does not + exist in the service element. + """ + return self._invoke('get', + { + 'service_id': service_id, + 'operation_id': operation_id, + }) +
+class _OperationStub(ApiInterfaceStub): + def __init__(self, config): + # properties for list operation + list_input_type = type.StructType('operation-input', { + 'service_id': type.IdType(resource_types='com.vmware.vapi.service'), + }) + list_error_dict = { + 'com.vmware.vapi.std.errors.not_found': + type.ReferenceType(com.vmware.vapi.std.errors_client, 'NotFound'), + + } + list_input_validator_list = [ + ] + list_output_validator_list = [ + ] + + # properties for get operation + get_input_type = type.StructType('operation-input', { + 'service_id': type.IdType(resource_types='com.vmware.vapi.service'), + 'operation_id': type.IdType(resource_types='com.vmware.vapi.operation'), + }) + get_error_dict = { + 'com.vmware.vapi.std.errors.not_found': + type.ReferenceType(com.vmware.vapi.std.errors_client, 'NotFound'), + + } + get_input_validator_list = [ + ] + get_output_validator_list = [ + ] + + operations = { + 'list': { + 'input_type': list_input_type, + 'output_type': type.ListType(type.IdType()), + 'errors': list_error_dict, + 'input_validator_list': list_input_validator_list, + 'output_validator_list': list_output_validator_list, + }, + 'get': { + 'input_type': get_input_type, + 'output_type': type.ReferenceType(com.vmware.vapi.metadata.metamodel_client, 'OperationInfo'), + 'errors': get_error_dict, + 'input_validator_list': get_input_validator_list, + 'output_validator_list': get_output_validator_list, + }, + } + ApiInterfaceStub.__init__(self, iface_name='com.vmware.vapi.metadata.metamodel.service.operation', + config=config, + operations=operations) +
+ +
+
+
+
+
+ + +
+
+
+
+ + + + \ No newline at end of file diff --git a/vsphere/6.0/_modules/com/vmware/vapi/metadata/metamodel_client.html b/vsphere/6.0/_modules/com/vmware/vapi/metadata/metamodel_client.html new file mode 100644 index 00000000..ae00bcd2 --- /dev/null +++ b/vsphere/6.0/_modules/com/vmware/vapi/metadata/metamodel_client.html @@ -0,0 +1,3009 @@ + + + + + + + + + + com.vmware.vapi.metadata.metamodel_client — vCloud Suite SDK for Python 6.0.0 documentation + + + + + + + + + + + + + + +
+
+
+
+ +

Source code for com.vmware.vapi.metadata.metamodel_client

+#---------------------------------------------------------------------------
+# Copyright 2014 VMware, Inc.  All rights reserved.
+
+# AUTO GENERATED FILE -- DO NOT MODIFY!
+#
+# vAPI stub file for package com.vmware.vapi.metadata.metamodel.
+#---------------------------------------------------------------------------
+
+"""
+The ``com.vmware.vapi.metadata.metamodel_client`` module provides classes that
+expose all the information present in the interface definition language (IDL)
+specification. 
+
+Metamodel metadata is organized into an hierarchy of elements. The main
+elements are: 
+
+* Enumeration: An enumeration element that has a list of enumeration value
+  elements.
+* Constant: A constant element has a name and a value.
+* Structure: A structure element can have field elements, constant elements and
+  enumeration elements.
+* Operation: An operation has a list of parameter elements, result element and
+  error elements.
+* Service: A service is a collection of operation elements, structure elements,
+  enumerated elements and constant elements.
+* Package: A package is a collection of service elements, structure elements
+  and enumeration elements.
+* Component: A component is a collection of package elements.
+
+The ``com.vmware.vapi.metadata.metamodel_client`` module has classes that
+enables two styles of client applications: 
+
+* A client can retrieve the exact pieces of information it requires using the
+  various granularities the API supports (that is :class:`Component`,
+  :class:`Package`, :class:`Service`, :class:`Structure`, :class:`Enumeration`
+  and :class:`com.vmware.vapi.metadata.metamodel.service_client.Operation`). In
+  this case, it doesn't cache any information locally and always invokes methods
+  to get the metamodel information it requires.
+* A client can retrieve all the metamodel information in fewer method
+  invocations using the :class:`Component` class and cache the output locally. It
+  can then poll on the fingerprint information exposed by the :class:`Component`
+  class to monitor changes in API definition.
+
+"""
+
+__author__ = 'VMware, Inc.'
+__docformat__ = 'restructuredtext en'
+
+import sys
+
+from vmware.vapi.bindings import type
+from vmware.vapi.bindings.converter import TypeConverter
+from vmware.vapi.bindings.enum import Enum
+from vmware.vapi.bindings.error import VapiError
+from vmware.vapi.bindings.struct import VapiStruct
+from vmware.vapi.bindings.stub import VapiInterface, ApiInterfaceStub
+from vmware.vapi.bindings.common import raise_core_exception
+from vmware.vapi.data.validator import UnionValidator, HasFieldsOfValidator
+from vmware.vapi.exception import CoreException
+import com.vmware.vapi.std.errors_client
+import com.vmware.vapi.metadata_client
+
+
+
[docs]class ComponentData(VapiStruct): + """ + The ``ComponentData`` class contains the metamodel metadata information of + a component element along with its fingerprint. + + .. tip:: + The arguments are used to initialize data attributes with the same + names. + """ + + + + def __init__(self, + info=None, + fingerprint=None, + ): + """ + :type info: :class:`ComponentInfo` + :param info: Metamodel information of the component element. This includes + information about all the package elements contained in this + component element. + + The metamodel information about a component could be quite large if + there are a lot of package elements contained in this component. + :type fingerprint: :class:`str` + :param fingerprint: Fingerprint of the metamodel metadata of the component component. + + Metamodel information could change when there is an infrastructure + update and new functionality is added to an existing component. + + Since the data present in :attr:`ComponentData.info` could be quite + large, ``fingerprint`` provides a convenient way to check if the + data for a particular component is updated. + + You should store the fingerprint associated with a component. After + an update, by invoking the :func:`Component.fingerprint` method, + you can retrieve the new fingerprint for the component. If the new + fingerprint and the previously stored fingerprint do not match, + clients can use the :func:`Component.get` to retrieve the new + metamodel information for the component. + """ + self.info = info + self.fingerprint = fingerprint + VapiStruct.__init__(self) +
+ComponentData._set_binding_type(type.StructType( + 'com.vmware.vapi.metadata.metamodel.component_data', { + 'info': type.ReferenceType(sys.modules[__name__], 'ComponentInfo'), + 'fingerprint': type.StringType(), + }, + ComponentData, + False, + None)) + + + +
[docs]class ComponentInfo(VapiStruct): + """ + The ``ComponentInfo`` class contains metamodel metadata information about a + component element. + + .. tip:: + The arguments are used to initialize data attributes with the same + names. + """ + + + + def __init__(self, + name=None, + packages=None, + metadata=None, + documentation=None, + ): + """ + :type name: :class:`str` + :param name: Dot separated name of the component element. The segments in the + name reflect the organization of the APIs. The format of each + segment is lower case with underscores. Each underscore represents + a word boundary. If there are acronyms in the word, the + capitalization is preserved. This format makes it easy to translate + the segment into a different naming convention. + :type packages: :class:`dict` of :class:`str` and :class:`PackageInfo` + :param packages: Metamodel metadata information of all the package elements + contained in the component element. The key in the :class:`dict` is + the identifier of the package element and the value in the + :class:`dict` is the metamodel information of the package element. + When clients pass a value of this class as a parameter, the key in + the attribute :class:`dict` must be an identifier for the resource + type: ``com.vmware.vapi.package``. When methods return a value of + this class as a return value, the key in the attribute + :class:`dict` will be an identifier for the resource type: + ``com.vmware.vapi.package``. + :type metadata: :class:`dict` of :class:`str` and :class:`ElementMap` + :param metadata: Generic metadata for the component element. The key in the + :class:`dict` is the name of the metadata element and the value is + the data associated with that metadata element. + + The :class:`MetadataIdentifier` contains possible string values for + keys in the :class:`dict`. + :type documentation: :class:`str` + :param documentation: English language documentation for a component. It can contain HTML + markup and documentation tags (similar to Javadoc tags). The first + sentence of the package documentation is a complete sentence that + identifies the component by name and summarizes the purpose of the + component. + """ + self.name = name + self.packages = packages + self.metadata = metadata + self.documentation = documentation + VapiStruct.__init__(self) +
+ComponentInfo._set_binding_type(type.StructType( + 'com.vmware.vapi.metadata.metamodel.component_info', { + 'name': type.StringType(), + 'packages': type.MapType(type.IdType(), type.ReferenceType(sys.modules[__name__], 'PackageInfo')), + 'metadata': type.MapType(type.StringType(), type.ReferenceType(sys.modules[__name__], 'ElementMap')), + 'documentation': type.StringType(), + }, + ComponentInfo, + False, + None)) + + + +
[docs]class ConstantInfo(VapiStruct): + """ + The ``ConstantInfo`` class contains metamodel information of the constant + elements. + + .. tip:: + The arguments are used to initialize data attributes with the same + names. + """ + + + + def __init__(self, + type=None, + value=None, + documentation=None, + ): + """ + :type type: :class:`Type` + :param type: Type of the constant element. + :type value: :class:`ConstantValue` + :param value: Value of the constant element. + :type documentation: :class:`str` + :param documentation: English language documentation for the constant element. It can + contain HTML markup and documentation tags (similar to Javadoc + tags). + """ + self.type = type + self.value = value + self.documentation = documentation + VapiStruct.__init__(self) +
+ConstantInfo._set_binding_type(type.StructType( + 'com.vmware.vapi.metadata.metamodel.constant_info', { + 'type': type.ReferenceType(sys.modules[__name__], 'Type'), + 'value': type.ReferenceType(sys.modules[__name__], 'ConstantValue'), + 'documentation': type.StringType(), + }, + ConstantInfo, + False, + None)) + + + +
[docs]class ConstantValue(VapiStruct): + """ + The ``ConstantValue`` class contains the metamodel information of the + constant element. + + .. tip:: + The arguments are used to initialize data attributes with the same + names. + """ + + _validator_list = [ + UnionValidator( + 'category', + { + 'PRIMITIVE' : [('primitive_value', True)], + 'LIST' : [('list_value', True)], + } + ), + ] + + + def __init__(self, + category=None, + primitive_value=None, + list_value=None, + ): + """ + :type category: :class:`ConstantValue.Category` + :param category: Category of the type of constant value. + :type primitive_value: :class:`PrimitiveValue` + :param primitive_value: Primitive value of the constant element. + This attribute is optional and it is only relevant when the value + of ``category`` is :attr:`ConstantValue.Category.PRIMITIVE`. + :type list_value: :class:`list` of :class:`PrimitiveValue` + :param list_value: List value of the constant element. + This attribute is optional and it is only relevant when the value + of ``category`` is :attr:`ConstantValue.Category.LIST`. + """ + self.category = category + self.primitive_value = primitive_value + self.list_value = list_value + VapiStruct.__init__(self) + +
[docs] class Category(Enum): + """ + The ``ConstantValue.Category`` class defines class attributes for the valid + kinds of values. + + .. note:: + This class represents an enumerated type in the interface language + definition. The class contains class attributes which represent the + values in the current version of the enumerated type. Newer versions of + the enumerated type may contain new values. To use new values of the + enumerated type in communication with a server that supports the newer + version of the API, you instantiate this class. See :ref:`enumerated + type description page <enumeration_description>`. + """ + PRIMITIVE = None + """ + Indicates the type of constant value is primitive. + + """ + LIST = None + """ + Indicates the type of constant value is a list. + + """ + + def __init__(self, string): + """ + :type string: :class:`str` + :param string: String value for the :class:`Category` instance. + """ + Enum.__init__(string) +
+ Category.PRIMITIVE = Category('PRIMITIVE') + Category.LIST = Category('LIST') + Category._set_binding_type(type.EnumType( + 'com.vmware.vapi.metadata.metamodel.constant_value.category', + Category))
+ConstantValue._set_binding_type(type.StructType( + 'com.vmware.vapi.metadata.metamodel.constant_value', { + 'category': type.ReferenceType(sys.modules[__name__], 'ConstantValue.Category'), + 'primitive_value': type.OptionalType(type.ReferenceType(sys.modules[__name__], 'PrimitiveValue')), + 'list_value': type.OptionalType(type.ListType(type.ReferenceType(sys.modules[__name__], 'PrimitiveValue'))), + }, + ConstantValue, + False, + None)) + + + +
[docs]class ElementMap(VapiStruct): + """ + The ``ElementMap`` class contains the metadata elements. + + One of the sources for metadata is the annotations present in the interface + definition language. When an annotation is represented in the + ``ElementMap``, ``ElementMap`` describes the data specified in the + arguments for the annotation. + + For example, in ``\\\\@UnionCase(tag="tag", value="SELECT")``, ElementMap + describes the keyword arguments tag and value. + + .. tip:: + The arguments are used to initialize data attributes with the same + names. + """ + + + + def __init__(self, + elements=None, + ): + """ + :type elements: :class:`dict` of :class:`str` and :class:`ElementValue` + :param elements: Metamodel information of the metadata elements. The key parameter + of the :class:`dict` is the identifier for the element and the + value corresponds to the element value. + """ + self.elements = elements + VapiStruct.__init__(self) +
+ElementMap._set_binding_type(type.StructType( + 'com.vmware.vapi.metadata.metamodel.element_map', { + 'elements': type.MapType(type.StringType(), type.ReferenceType(sys.modules[__name__], 'ElementValue')), + }, + ElementMap, + False, + None)) + + + +
[docs]class ElementValue(VapiStruct): + """ + The ``ElementValue`` class describes the value of the metadata element. + + .. tip:: + The arguments are used to initialize data attributes with the same + names. + """ + + _validator_list = [ + UnionValidator( + 'type', + { + 'LONG' : [('long_value', True)], + 'STRING' : [('string_value', True)], + 'STRING_LIST' : [('list_value', True)], + 'STRUCTURE_REFERENCE' : [('structure_id', True)], + 'STRUCTURE_REFERENCE_LIST' : [('structure_ids', True)], + } + ), + ] + + + def __init__(self, + type=None, + long_value=None, + string_value=None, + list_value=None, + structure_id=None, + structure_ids=None, + ): + """ + :type type: :class:`ElementValue.Type` + :param type: Type of the value. + :type long_value: :class:`long` + :param long_value: Long value of the metadata element. + This attribute is optional and it is only relevant when the value + of ``type`` is :attr:`ElementValue.Type.LONG`. + :type string_value: :class:`str` + :param string_value: String value of the metadata element. + This attribute is optional and it is only relevant when the value + of ``type`` is :attr:`ElementValue.Type.STRING`. + :type list_value: :class:`list` of :class:`str` + :param list_value: List of strings value of the metadata element. + This attribute is optional and it is only relevant when the value + of ``type`` is :attr:`ElementValue.Type.STRING_LIST`. + :type structure_id: :class:`str` + :param structure_id: Identifier of the structure element. + When clients pass a value of this class as a parameter, the + attribute must be an identifier for the resource type: + ``com.vmware.vapi.structure``. When methods return a value of this + class as a return value, the attribute will be an identifier for + the resource type: ``com.vmware.vapi.structure``. + This attribute is optional and it is only relevant when the value + of ``type`` is :attr:`ElementValue.Type.STRUCTURE_REFERENCE`. + :type structure_ids: :class:`list` of :class:`str` + :param structure_ids: List of identifiers of the structure elements. + When clients pass a value of this class as a parameter, the + attribute must contain identifiers for the resource type: + ``com.vmware.vapi.structure``. When methods return a value of this + class as a return value, the attribute will contain identifiers for + the resource type: ``com.vmware.vapi.structure``. + This attribute is optional and it is only relevant when the value + of ``type`` is :attr:`ElementValue.Type.STRUCTURE_REFERENCE_LIST`. + """ + self.type = type + self.long_value = long_value + self.string_value = string_value + self.list_value = list_value + self.structure_id = structure_id + self.structure_ids = structure_ids + VapiStruct.__init__(self) + +
[docs] class Type(Enum): + """ + The ``ElementValue.Type`` class defines the valid types for values in + metadata elements. + + .. note:: + This class represents an enumerated type in the interface language + definition. The class contains class attributes which represent the + values in the current version of the enumerated type. Newer versions of + the enumerated type may contain new values. To use new values of the + enumerated type in communication with a server that supports the newer + version of the API, you instantiate this class. See :ref:`enumerated + type description page <enumeration_description>`. + """ + LONG = None + """ + Indicates the type of the value is a long (64 bit signed integer). + + """ + STRING = None + """ + Indicates the type of the value is a string (a variable length sequence of + characters). The encoding is UTF-8. + + """ + STRING_LIST = None + """ + Indicates the type of the value is a list of strings. + + """ + STRUCTURE_REFERENCE = None + """ + Indicates the type of the value is an identifier for a structure element. + + """ + STRUCTURE_REFERENCE_LIST = None + """ + Indicates the type of the value is a list of identifiers for a structure + element. + + """ + + def __init__(self, string): + """ + :type string: :class:`str` + :param string: String value for the :class:`Type` instance. + """ + Enum.__init__(string) +
+ Type.LONG = Type('LONG') + Type.STRING = Type('STRING') + Type.STRING_LIST = Type('STRING_LIST') + Type.STRUCTURE_REFERENCE = Type('STRUCTURE_REFERENCE') + Type.STRUCTURE_REFERENCE_LIST = Type('STRUCTURE_REFERENCE_LIST') + Type._set_binding_type(type.EnumType( + 'com.vmware.vapi.metadata.metamodel.element_value.type', + Type))
+ElementValue._set_binding_type(type.StructType( + 'com.vmware.vapi.metadata.metamodel.element_value', { + 'type': type.ReferenceType(sys.modules[__name__], 'ElementValue.Type'), + 'long_value': type.OptionalType(type.IntegerType()), + 'string_value': type.OptionalType(type.StringType()), + 'list_value': type.OptionalType(type.ListType(type.StringType())), + 'structure_id': type.OptionalType(type.IdType()), + 'structure_ids': type.OptionalType(type.ListType(type.IdType())), + }, + ElementValue, + False, + None)) + + + +
[docs]class EnumerationInfo(VapiStruct): + """ + The ``EnumerationInfo`` class contains the metamodel information of an + enumeration element. + + .. tip:: + The arguments are used to initialize data attributes with the same + names. + """ + + + + def __init__(self, + name=None, + values=None, + metadata=None, + documentation=None, + ): + """ + :type name: :class:`str` + :param name: Dot separated name of the enumeration element. The segments in the + name reflect the organization of the APIs. The format of each + segment is lower case with underscores. Each underscore represents + a word boundary. If there are acronyms in the word, the + capitalization is preserved. This format makes it easy to translate + the segment into a different naming convention. + :type values: :class:`list` of :class:`EnumerationValueInfo` + :param values: Metamodel information of all the enumeration value elements + contained in this enumeration element. The order of the enumeration + value elements in the list is same as the order in which they are + defined in the interface definition file. + :type metadata: :class:`dict` of :class:`str` and :class:`ElementMap` + :param metadata: Generic metadata elements for an enumeration element. The key in + the :class:`dict` is the name of the metadata element and the value + is the data associated with that metadata element. + + The :class:`MetadataIdentifier` contains possible string values for + keys in the :class:`dict`. + :type documentation: :class:`str` + :param documentation: English language documentation for an enumeration element. It can + contain HTML markup and Javadoc tags. The first sentence of the + enumeration documentation is a complete sentence that identifies + the enumeration by name and summarizes the purpose of the + enumeration. The documentation describes the context in which the + enumeration is used. + + The documentation also contains references to the context in which + the enumeration is used. But if the enumeration is used in many + contexts, the references may not be present. + """ + self.name = name + self.values = values + self.metadata = metadata + self.documentation = documentation + VapiStruct.__init__(self) +
+EnumerationInfo._set_binding_type(type.StructType( + 'com.vmware.vapi.metadata.metamodel.enumeration_info', { + 'name': type.StringType(), + 'values': type.ListType(type.ReferenceType(sys.modules[__name__], 'EnumerationValueInfo')), + 'metadata': type.MapType(type.StringType(), type.ReferenceType(sys.modules[__name__], 'ElementMap')), + 'documentation': type.StringType(), + }, + EnumerationInfo, + False, + None)) + + + +
[docs]class EnumerationValueInfo(VapiStruct): + """ + The ``EnumerationValueInfo`` class describes the class attribute in the + class. + + .. tip:: + The arguments are used to initialize data attributes with the same + names. + """ + + + + def __init__(self, + value=None, + metadata=None, + documentation=None, + ): + """ + :type value: :class:`str` + :param value: Value in the enumerated type. All the characters in the string are + capitalized. + :type metadata: :class:`dict` of :class:`str` and :class:`ElementMap` + :param metadata: Additional metadata for enumeration value in the enumerated type. + The key in the :class:`dict` is the name of the metadata element + and the value is the data associated with that metadata element. + + The :class:`MetadataIdentifier` contains possible string values for + keys in the :class:`dict`. + :type documentation: :class:`str` + :param documentation: English language documentation for an enumeration value. It can + contain HTML markup and documentation tags (similar to Javadoc + tags). The first statement will be a noun or verb phrase that + describes the purpose of the enumeration value. + """ + self.value = value + self.metadata = metadata + self.documentation = documentation + VapiStruct.__init__(self) +
+EnumerationValueInfo._set_binding_type(type.StructType( + 'com.vmware.vapi.metadata.metamodel.enumeration_value_info', { + 'value': type.StringType(), + 'metadata': type.MapType(type.StringType(), type.ReferenceType(sys.modules[__name__], 'ElementMap')), + 'documentation': type.StringType(), + }, + EnumerationValueInfo, + False, + None)) + + + +
[docs]class ErrorInfo(VapiStruct): + """ + The ``ErrorInfo`` class contains the metadata information about the error + elements contained in an operation element. + + .. tip:: + The arguments are used to initialize data attributes with the same + names. + """ + + + + def __init__(self, + structure_id=None, + documentation=None, + ): + """ + :type structure_id: :class:`str` + :param structure_id: Identifier for the structure element corresponding to the error + that is being reported by the operation. + When clients pass a value of this class as a parameter, the + attribute must be an identifier for the resource type: + ``com.vmware.vapi.structure``. When methods return a value of this + class as a return value, the attribute will be an identifier for + the resource type: ``com.vmware.vapi.structure``. + :type documentation: :class:`str` + :param documentation: The English language documentation for the service element. It can + contain HTML markup and Javadoc tags. + """ + self.structure_id = structure_id + self.documentation = documentation + VapiStruct.__init__(self) +
+ErrorInfo._set_binding_type(type.StructType( + 'com.vmware.vapi.metadata.metamodel.error_info', { + 'structure_id': type.IdType(resource_types='com.vmware.vapi.structure'), + 'documentation': type.StringType(), + }, + ErrorInfo, + False, + None)) + + + +
[docs]class FieldInfo(VapiStruct): + """ + The ``FieldInfo`` class contains metamodel information of a field element + contained in a structure element. + + .. tip:: + The arguments are used to initialize data attributes with the same + names. + """ + + + + def __init__(self, + name=None, + type=None, + metadata=None, + documentation=None, + ): + """ + :type name: :class:`str` + :param name: Name of the field element in a canonical format. The format is + lower case with underscores. Each underscore represents a word + boundary. If there are acronyms in the word, the capitalization is + preserved. This format makes it easy to translate the segment into + a different naming convention. + :type type: :class:`Type` + :param type: Type information. + :type metadata: :class:`dict` of :class:`str` and :class:`ElementMap` + :param metadata: Generic metadata elements for the field element. The key in the + :class:`dict` is the name of the metadata element and the value is + the data associated with that metadata element. + + The :class:`MetadataIdentifier` contains possible string values for + keys in the :class:`dict`. + :type documentation: :class:`str` + :param documentation: English language documentation for the service element. It can + contain HTML markup and Javadoc tags. + """ + self.name = name + self.type = type + self.metadata = metadata + self.documentation = documentation + VapiStruct.__init__(self) +
+FieldInfo._set_binding_type(type.StructType( + 'com.vmware.vapi.metadata.metamodel.field_info', { + 'name': type.StringType(), + 'type': type.ReferenceType(sys.modules[__name__], 'Type'), + 'metadata': type.MapType(type.StringType(), type.ReferenceType(sys.modules[__name__], 'ElementMap')), + 'documentation': type.StringType(), + }, + FieldInfo, + False, + None)) + + + +
[docs]class GenericInstantiation(VapiStruct): + """ + The ``GenericInstantiation`` class describes the type information of a + typed element when the type is an instantiation of one of the generic types + provided by the infrastructure. + + .. tip:: + The arguments are used to initialize data attributes with the same + names. + """ + + _validator_list = [ + UnionValidator( + 'generic_type', + { + 'LIST' : [('element_type', True)], + 'OPTIONAL' : [('element_type', True)], + 'SET' : [('element_type', True)], + 'MAP' : [('map_key_type', True), ('map_value_type', True)], + } + ), + ] + + + def __init__(self, + generic_type=None, + element_type=None, + map_key_type=None, + map_value_type=None, + ): + """ + :type generic_type: :class:`GenericInstantiation.GenericType` + :param generic_type: The generic type that is being instantiated. + :type element_type: :class:`Type` + :param element_type: Type of the element parameter if the generic type instantiation is + a :attr:`GenericInstantiation.GenericType.LIST`, + :attr:`GenericInstantiation.GenericType.OPTIONAL` or + :attr:`GenericInstantiation.GenericType.SET`. + This attribute is optional and it is only relevant when the value + of ``genericType`` is one of + :attr:`GenericInstantiation.GenericType.LIST`, + :attr:`GenericInstantiation.GenericType.OPTIONAL`, or + :attr:`GenericInstantiation.GenericType.SET`. + :type map_key_type: :class:`Type` + :param map_key_type: Type of the key parameter of the map generic type instantiation. + The map generic type has a key parameter and value parameter. The + type of the value parameter is described by + :attr:`GenericInstantiation.map_value_type`.. + This attribute is optional and it is only relevant when the value + of ``genericType`` is :attr:`GenericInstantiation.GenericType.MAP`. + :type map_value_type: :class:`Type` + :param map_value_type: Type of the value parameter of the map generic type instantiation. + The map generic type has a key parameter and value parameter. The + type of the key parameter is described by + :attr:`GenericInstantiation.map_key_type`.. + This attribute is optional and it is only relevant when the value + of ``genericType`` is :attr:`GenericInstantiation.GenericType.MAP`. + """ + self.generic_type = generic_type + self.element_type = element_type + self.map_key_type = map_key_type + self.map_value_type = map_value_type + VapiStruct.__init__(self) + +
[docs] class GenericType(Enum): + """ + The ``GenericInstantiation.GenericType`` class provides class attributes + for each of the generic types provided by the infrastructure. + + .. note:: + This class represents an enumerated type in the interface language + definition. The class contains class attributes which represent the + values in the current version of the enumerated type. Newer versions of + the enumerated type may contain new values. To use new values of the + enumerated type in communication with a server that supports the newer + version of the API, you instantiate this class. See :ref:`enumerated + type description page <enumeration_description>`. + """ + LIST = None + """ + Indicates the generic type is a list. + + """ + MAP = None + """ + Indicates the generic type is a map. + + """ + OPTIONAL = None + """ + Indicates the generic type is an optional. + + """ + SET = None + """ + Indicates the generic type is a set. + + """ + + def __init__(self, string): + """ + :type string: :class:`str` + :param string: String value for the :class:`GenericType` instance. + """ + Enum.__init__(string) +
+ GenericType.LIST = GenericType('LIST') + GenericType.MAP = GenericType('MAP') + GenericType.OPTIONAL = GenericType('OPTIONAL') + GenericType.SET = GenericType('SET') + GenericType._set_binding_type(type.EnumType( + 'com.vmware.vapi.metadata.metamodel.generic_instantiation.generic_type', + GenericType))
+GenericInstantiation._set_binding_type(type.StructType( + 'com.vmware.vapi.metadata.metamodel.generic_instantiation', { + 'generic_type': type.ReferenceType(sys.modules[__name__], 'GenericInstantiation.GenericType'), + 'element_type': type.OptionalType(type.ReferenceType(sys.modules[__name__], 'Type')), + 'map_key_type': type.OptionalType(type.ReferenceType(sys.modules[__name__], 'Type')), + 'map_value_type': type.OptionalType(type.ReferenceType(sys.modules[__name__], 'Type')), + }, + GenericInstantiation, + False, + None)) + + + +
[docs]class OperationInfo(VapiStruct): + """ + The ``OperationInfo`` class contains metamodel information of an operation + element. + + .. tip:: + The arguments are used to initialize data attributes with the same + names. + """ + + + + def __init__(self, + name=None, + params=None, + output=None, + errors=None, + metadata=None, + documentation=None, + ): + """ + :type name: :class:`str` + :param name: Name of the operation element in a canonical format. The format is + lower case with underscores. Each underscore represents a word + boundary. If there are acronyms in the word, the capitalization is + preserved. This format makes it easy to translate the segment into + a different naming convention. + :type params: :class:`list` of :class:`FieldInfo` + :param params: Metamodel information for the parameter elements. The order of the + parameters elements in the list is same as the order of the + parameters declared in the interface definition file. + :type output: :class:`OperationResultInfo` + :param output: Metamodel type for the output element. + :type errors: :class:`list` of :class:`ErrorInfo` + :param errors: List of error elements that might be reported by the operation + element. If the operation reports the same error for more than one + reason, the list contains the error element associated with the + error more than once with different documentation elements. + :type metadata: :class:`dict` of :class:`str` and :class:`ElementMap` + :param metadata: Generic metadata elements for the operation element. The key in the + :class:`dict` is the name of the metadata element and the value is + the data associated with that metadata element. + + The :class:`MetadataIdentifier` contains possible string values for + key in the :class:`dict`. + :type documentation: :class:`str` + :param documentation: English language documentation for the service element. It can + contain HTML markup and Javadoc tags. + """ + self.name = name + self.params = params + self.output = output + self.errors = errors + self.metadata = metadata + self.documentation = documentation + VapiStruct.__init__(self) +
+OperationInfo._set_binding_type(type.StructType( + 'com.vmware.vapi.metadata.metamodel.operation_info', { + 'name': type.StringType(), + 'params': type.ListType(type.ReferenceType(sys.modules[__name__], 'FieldInfo')), + 'output': type.ReferenceType(sys.modules[__name__], 'OperationResultInfo'), + 'errors': type.ListType(type.ReferenceType(sys.modules[__name__], 'ErrorInfo')), + 'metadata': type.MapType(type.StringType(), type.ReferenceType(sys.modules[__name__], 'ElementMap')), + 'documentation': type.StringType(), + }, + OperationInfo, + False, + None)) + + + +
[docs]class OperationResultInfo(VapiStruct): + """ + The ``OperationResultInfo`` class contains the metamodel information of an + operation result element. + + An operation accepts a list of parameters and returns a result or an error. + The ``OperationResultInfo`` describes the result element of an operation. + + .. tip:: + The arguments are used to initialize data attributes with the same + names. + """ + + + + def __init__(self, + type=None, + metadata=None, + documentation=None, + ): + """ + :type type: :class:`Type` + :param type: Type information of the operation result element. + :type metadata: :class:`dict` of :class:`str` and :class:`ElementMap` + :param metadata: Generic metadata elements for the service element. The key in the + :class:`dict` is the name of the metadata element and the value is + the data associated with that metadata element. + + The :class:`MetadataIdentifier` contains possible string values for + keys in the :class:`dict`. + :type documentation: :class:`str` + :param documentation: English language documentation for the operation result element. It + can contain HTML markup and Javadoc tags. + """ + self.type = type + self.metadata = metadata + self.documentation = documentation + VapiStruct.__init__(self) +
+OperationResultInfo._set_binding_type(type.StructType( + 'com.vmware.vapi.metadata.metamodel.operation_result_info', { + 'type': type.ReferenceType(sys.modules[__name__], 'Type'), + 'metadata': type.MapType(type.StringType(), type.ReferenceType(sys.modules[__name__], 'ElementMap')), + 'documentation': type.StringType(), + }, + OperationResultInfo, + False, + None)) + + + +
[docs]class PackageInfo(VapiStruct): + """ + The ``PackageInfo`` class contains the metamodel information of all the + service elements, structure elements and enumeration elements contained in + the package element. + + .. tip:: + The arguments are used to initialize data attributes with the same + names. + """ + + + + def __init__(self, + name=None, + structures=None, + enumerations=None, + services=None, + metadata=None, + documentation=None, + ): + """ + :type name: :class:`str` + :param name: Dot separated name of the package element. The segments in the name + reflect the organization of the APIs. The format of each segment is + lower case with underscores. Each underscore represents a word + boundary. If there are acronyms in the word, the capitalization is + preserved. This format makes it easy to translate the segment into + a different naming convention. + :type structures: :class:`dict` of :class:`str` and :class:`StructureInfo` + :param structures: Metamodel information of all the structure elements contained in + the package element. The key in the :class:`dict` is the identifier + of the structure element and the value in the :class:`dict` is the + metamodel information for the structure element. + + This does not include the structure elements contained in the + service elements that are contained in this package element. + When clients pass a value of this class as a parameter, the key in + the attribute :class:`dict` must be an identifier for the resource + type: ``com.vmware.vapi.structure``. When methods return a value of + this class as a return value, the key in the attribute + :class:`dict` will be an identifier for the resource type: + ``com.vmware.vapi.structure``. + :type enumerations: :class:`dict` of :class:`str` and :class:`EnumerationInfo` + :param enumerations: Metamodel information of all the enumeration elements contained in + the package element. The key in the :class:`dict` is the identifier + of the enumeration element and the value in the :class:`dict` is + the metamodel information for the enumeration element. + + This does not include the enumeration elements that are contained + in the service elements of this package element or structure + elements of this package element. + When clients pass a value of this class as a parameter, the key in + the attribute :class:`dict` must be an identifier for the resource + type: ``com.vmware.vapi.enumeration``. When methods return a value + of this class as a return value, the key in the attribute + :class:`dict` will be an identifier for the resource type: + ``com.vmware.vapi.enumeration``. + :type services: :class:`dict` of :class:`str` and :class:`ServiceInfo` + :param services: Metamodel information of all the service elements contained in the + package element. The key in the :class:`dict` is the identifier of + the service element and the value in the :class:`dict` is the + metamodel information for the service element. + When clients pass a value of this class as a parameter, the key in + the attribute :class:`dict` must be an identifier for the resource + type: ``com.vmware.vapi.service``. When methods return a value of + this class as a return value, the key in the attribute + :class:`dict` will be an identifier for the resource type: + ``com.vmware.vapi.service``. + :type metadata: :class:`dict` of :class:`str` and :class:`ElementMap` + :param metadata: Generic metadata elements for the package element. The key in the + :class:`dict` is the name of the metadata element and the value is + the data associated with that metadata element. + + The :class:`MetadataIdentifier` contains possible string values for + keys in the :class:`dict`. + :type documentation: :class:`str` + :param documentation: English language documentation for a package. It can contain HTML + markup and Javadoc tags. The first sentence of the package + documentation is a complete sentence that identifies the package by + name and summarizes the purpose of the package. + + The primary purpose of a package documentation is to provide + high-level context that will provide a framework in which the users + can put the detail about the package contents. + """ + self.name = name + self.structures = structures + self.enumerations = enumerations + self.services = services + self.metadata = metadata + self.documentation = documentation + VapiStruct.__init__(self) +
+PackageInfo._set_binding_type(type.StructType( + 'com.vmware.vapi.metadata.metamodel.package_info', { + 'name': type.StringType(), + 'structures': type.MapType(type.IdType(), type.ReferenceType(sys.modules[__name__], 'StructureInfo')), + 'enumerations': type.MapType(type.IdType(), type.ReferenceType(sys.modules[__name__], 'EnumerationInfo')), + 'services': type.MapType(type.IdType(), type.ReferenceType(sys.modules[__name__], 'ServiceInfo')), + 'metadata': type.MapType(type.StringType(), type.ReferenceType(sys.modules[__name__], 'ElementMap')), + 'documentation': type.StringType(), + }, + PackageInfo, + False, + None)) + + + +
[docs]class PrimitiveValue(VapiStruct): + """ + The ``PrimitiveValue`` class contains value of the constant element. + + .. tip:: + The arguments are used to initialize data attributes with the same + names. + """ + + _validator_list = [ + UnionValidator( + 'type', + { + 'BOOLEAN' : [('boolean_value', True)], + 'DOUBLE' : [('double_value', True)], + 'LONG' : [('long_value', True)], + 'STRING' : [('string_value', True)], + } + ), + ] + + + def __init__(self, + type=None, + boolean_value=None, + double_value=None, + long_value=None, + string_value=None, + ): + """ + :type type: :class:`PrimitiveValue.Type` + :param type: Type of the constant value. + :type boolean_value: :class:`bool` + :param boolean_value: Boolean value of the constant. + This attribute is optional and it is only relevant when the value + of ``type`` is :attr:`PrimitiveValue.Type.BOOLEAN`. + :type double_value: :class:`float` + :param double_value: Double value of the constant. + This attribute is optional and it is only relevant when the value + of ``type`` is :attr:`PrimitiveValue.Type.DOUBLE`. + :type long_value: :class:`long` + :param long_value: Long value of the constant. + This attribute is optional and it is only relevant when the value + of ``type`` is :attr:`PrimitiveValue.Type.LONG`. + :type string_value: :class:`str` + :param string_value: String value of the constant. + This attribute is optional and it is only relevant when the value + of ``type`` is :attr:`PrimitiveValue.Type.STRING`. + """ + self.type = type + self.boolean_value = boolean_value + self.double_value = double_value + self.long_value = long_value + self.string_value = string_value + VapiStruct.__init__(self) + +
[docs] class Type(Enum): + """ + The ``PrimitiveValue.Type`` class defines the valid types for values in + constant elements. + + .. note:: + This class represents an enumerated type in the interface language + definition. The class contains class attributes which represent the + values in the current version of the enumerated type. Newer versions of + the enumerated type may contain new values. To use new values of the + enumerated type in communication with a server that supports the newer + version of the API, you instantiate this class. See :ref:`enumerated + type description page <enumeration_description>`. + """ + BOOLEAN = None + """ + Indicates the value is a boolean (true or false). + + """ + DOUBLE = None + """ + Indicates the value is a double (64 bit floating number). + + """ + LONG = None + """ + Indicates the value is a long (64 bit signed integer). + + """ + STRING = None + """ + Indicates the value is a string (a variable length sequence of characters). + The encoding is UTF8. + + """ + + def __init__(self, string): + """ + :type string: :class:`str` + :param string: String value for the :class:`Type` instance. + """ + Enum.__init__(string) +
+ Type.BOOLEAN = Type('BOOLEAN') + Type.DOUBLE = Type('DOUBLE') + Type.LONG = Type('LONG') + Type.STRING = Type('STRING') + Type._set_binding_type(type.EnumType( + 'com.vmware.vapi.metadata.metamodel.primitive_value.type', + Type))
+PrimitiveValue._set_binding_type(type.StructType( + 'com.vmware.vapi.metadata.metamodel.primitive_value', { + 'type': type.ReferenceType(sys.modules[__name__], 'PrimitiveValue.Type'), + 'boolean_value': type.OptionalType(type.BooleanType()), + 'double_value': type.OptionalType(type.DoubleType()), + 'long_value': type.OptionalType(type.IntegerType()), + 'string_value': type.OptionalType(type.StringType()), + }, + PrimitiveValue, + False, + None)) + + + +
[docs]class ServiceInfo(VapiStruct): + """ + The ``ServiceInfo`` class contains the metamodel information of all the + operation elements, structure elements and enumeration elements containted + in a service element. + + .. tip:: + The arguments are used to initialize data attributes with the same + names. + """ + + + + def __init__(self, + name=None, + operations=None, + structures=None, + enumerations=None, + constants=None, + metadata=None, + documentation=None, + ): + """ + :type name: :class:`str` + :param name: Dot separated name of the service element. The segments in the name + reflect the organization of the APIs. The format of each segment is + lower case with underscores. Each underscore represents a word + boundary. If there are acronyms in the word, the capitalization is + preserved. This format makes it easy to translate the segment into + a different naming convention. + :type operations: :class:`dict` of :class:`str` and :class:`OperationInfo` + :param operations: Metamodel information of all the operation elements contained in + the service element. The key in the :class:`dict` is the identifier + of the operation element and the value in the :class:`dict` is the + metamodel information for the operation element. + When clients pass a value of this class as a parameter, the key in + the attribute :class:`dict` must be an identifier for the resource + type: ``com.vmware.vapi.operation``. When methods return a value of + this class as a return value, the key in the attribute + :class:`dict` will be an identifier for the resource type: + ``com.vmware.vapi.operation``. + :type structures: :class:`dict` of :class:`str` and :class:`StructureInfo` + :param structures: Metamodel information of all the structure elements contained in + the service element. The key in the :class:`dict` is the identifier + of the structure element and the value in the :class:`dict` is the + metamodel information for the structure element. + When clients pass a value of this class as a parameter, the key in + the attribute :class:`dict` must be an identifier for the resource + type: ``com.vmware.vapi.structure``. When methods return a value of + this class as a return value, the key in the attribute + :class:`dict` will be an identifier for the resource type: + ``com.vmware.vapi.structure``. + :type enumerations: :class:`dict` of :class:`str` and :class:`EnumerationInfo` + :param enumerations: Metamodel information of all the enumeration elements contained in + the service element. The key in the :class:`dict` is the identifier + of the enumeration element and the value in the :class:`dict` is + the metamodel information for the enumeration element. + When clients pass a value of this class as a parameter, the key in + the attribute :class:`dict` must be an identifier for the resource + type: ``com.vmware.vapi.enumeration``. When methods return a value + of this class as a return value, the key in the attribute + :class:`dict` will be an identifier for the resource type: + ``com.vmware.vapi.enumeration``. + :type constants: :class:`dict` of :class:`str` and :class:`ConstantInfo` + :param constants: Metamodel information of all the constant elements contained in the + service element. The key in the :class:`dict` is the name of the + constant element and the value in the :class:`dict` is the + metamodel information for the contant element. + :type metadata: :class:`dict` of :class:`str` and :class:`ElementMap` + :param metadata: Generic metadata elements for the service element. The key in the + :class:`dict` is the name of the metadata element and the value is + the data associated with that metadata element. + + The :class:`MetadataIdentifier` contains possible string values for + keys in the :class:`dict`. + :type documentation: :class:`str` + :param documentation: English language documentation for the service element. It can + contain HTML markup and Javadoc tags. The first sentence of the + service documentation is a complete sentence that identifies the + service by name and summarizes the purpose of the service. The + remaining part of the documentation provides a summary of how to + use the operations defined in the service. + """ + self.name = name + self.operations = operations + self.structures = structures + self.enumerations = enumerations + self.constants = constants + self.metadata = metadata + self.documentation = documentation + VapiStruct.__init__(self) +
+ServiceInfo._set_binding_type(type.StructType( + 'com.vmware.vapi.metadata.metamodel.service_info', { + 'name': type.StringType(), + 'operations': type.MapType(type.IdType(), type.ReferenceType(sys.modules[__name__], 'OperationInfo')), + 'structures': type.MapType(type.IdType(), type.ReferenceType(sys.modules[__name__], 'StructureInfo')), + 'enumerations': type.MapType(type.IdType(), type.ReferenceType(sys.modules[__name__], 'EnumerationInfo')), + 'constants': type.MapType(type.StringType(), type.ReferenceType(sys.modules[__name__], 'ConstantInfo')), + 'metadata': type.MapType(type.StringType(), type.ReferenceType(sys.modules[__name__], 'ElementMap')), + 'documentation': type.StringType(), + }, + ServiceInfo, + False, + None)) + + + +
[docs]class StructureInfo(VapiStruct): + """ + The ``StructureInfo`` class contains the metamodel information of all the + field elements, constant elements and enumeration elements contained in the + structure element. + + In the interface definition language, API designers have the ability to + include all the fields from one structure to another structure. This is + done by using an annotation ``\\\\@Include`` on the structure in which we + want to add the fields. If this annotation is present, the list of fields + in the ``StructureInfo`` will also contain the fields that are being + included. The annotation information is also retained in the + :attr:`StructureInfo.metadata` element as well. + + .. tip:: + The arguments are used to initialize data attributes with the same + names. + """ + + + + def __init__(self, + name=None, + type=None, + enumerations=None, + constants=None, + fields=None, + metadata=None, + documentation=None, + ): + """ + :type name: :class:`str` + :param name: Dot separated name of the structure element. The segments in the + name reflect the organization of the APIs. The format of each + segment is lower case with underscores. Each underscore represents + a word boundary. If there are acronyms in the word, the + capitalization is preserved. This format makes it easy to translate + the segment into a different naming convention. + :type type: :class:`StructureInfo.Type` + :param type: Type of the structure. + :type enumerations: :class:`dict` of :class:`str` and :class:`EnumerationInfo` + :param enumerations: Metamodel information of all the enumeration elements contained in + the structure element. The key in the :class:`dict` is the + identifier of the enumeration element and the value is the + metamodel information of the enumeration element. + When clients pass a value of this class as a parameter, the key in + the attribute :class:`dict` must be an identifier for the resource + type: ``com.vmware.vapi.enumeration``. When methods return a value + of this class as a return value, the key in the attribute + :class:`dict` will be an identifier for the resource type: + ``com.vmware.vapi.enumeration``. + :type constants: :class:`dict` of :class:`str` and :class:`ConstantInfo` + :param constants: Metamodel information of all the constant elements contained in the + structure element. The key in the :class:`dict` is the name of the + constant element and the value in the :class:`dict` is the + metamodel information for the constant element. + :type fields: :class:`list` of :class:`FieldInfo` + :param fields: Metamodel information of all the field elements. The order of the + field elements in the list matches the order in which the fields + are defined in the service. + :type metadata: :class:`dict` of :class:`str` and :class:`ElementMap` + :param metadata: Generic metadata elements for the structure element. The key in the + :class:`dict` is the name of the metadata element and the value is + the data associated with that metadata element. + + The :class:`MetadataIdentifier` contains possible string values for + keys in the :class:`dict`. + :type documentation: :class:`str` + :param documentation: English language documentation for a structure element. It can + contain HTML markup and Javadoc tags. The first sentence of the + structure documentation is a complete sentence that identifies the + structure by name and summarizes the purpose of the structure. + """ + self.name = name + self.type = type + self.enumerations = enumerations + self.constants = constants + self.fields = fields + self.metadata = metadata + self.documentation = documentation + VapiStruct.__init__(self) + +
[docs] class Type(Enum): + """ + The ``StructureInfo.Type`` class defines the kind of this structure + element. In the interface definition language, structure element and error + element have similar characteristics. The difference is that only error + elements can be used to describe the exceptions of an operation element. + + .. note:: + This class represents an enumerated type in the interface language + definition. The class contains class attributes which represent the + values in the current version of the enumerated type. Newer versions of + the enumerated type may contain new values. To use new values of the + enumerated type in communication with a server that supports the newer + version of the API, you instantiate this class. See :ref:`enumerated + type description page <enumeration_description>`. + """ + STRUCTURE = None + """ + If the type is a structure element. + + """ + ERROR = None + """ + If the type is an error element. + + """ + + def __init__(self, string): + """ + :type string: :class:`str` + :param string: String value for the :class:`Type` instance. + """ + Enum.__init__(string) +
+ Type.STRUCTURE = Type('STRUCTURE') + Type.ERROR = Type('ERROR') + Type._set_binding_type(type.EnumType( + 'com.vmware.vapi.metadata.metamodel.structure_info.type', + Type))
+StructureInfo._set_binding_type(type.StructType( + 'com.vmware.vapi.metadata.metamodel.structure_info', { + 'name': type.StringType(), + 'type': type.ReferenceType(sys.modules[__name__], 'StructureInfo.Type'), + 'enumerations': type.MapType(type.IdType(), type.ReferenceType(sys.modules[__name__], 'EnumerationInfo')), + 'constants': type.MapType(type.StringType(), type.ReferenceType(sys.modules[__name__], 'ConstantInfo')), + 'fields': type.ListType(type.ReferenceType(sys.modules[__name__], 'FieldInfo')), + 'metadata': type.MapType(type.StringType(), type.ReferenceType(sys.modules[__name__], 'ElementMap')), + 'documentation': type.StringType(), + }, + StructureInfo, + False, + None)) + + + +
[docs]class Type(VapiStruct): + """ + The ``Type`` class describes the type information of a typed element in the + interface definiton language. The following elements in the metamodel are + typed: + + * Field element in a structure element. See :attr:`StructureInfo.fields` + * Parameter element in an operation element. See + :attr:`OperationInfo.params` + * Result element in an operation element. See :attr:`OperationInfo.output` + + The type could be one of the three following categories: + + * Built-in types: These are types present in the interface definition + language type system. They are provided by the infrastructure. + * User defined named type: API designers can create custom types and use + them for the typed elements. These types have a unique identifier. + * Generic type instantiation: The language infrastructure also provides + generic types such as list, map, set and so on. An instantiation of one of + these generic types could also be used for the typed elements. + + .. tip:: + The arguments are used to initialize data attributes with the same + names. + """ + + _validator_list = [ + UnionValidator( + 'category', + { + 'BUILTIN' : [('builtin_type', True)], + 'USER_DEFINED' : [('user_defined_type', True)], + 'GENERIC' : [('generic_instantiation', True)], + } + ), + ] + + + def __init__(self, + category=None, + builtin_type=None, + user_defined_type=None, + generic_instantiation=None, + ): + """ + :type category: :class:`Type.Category` + :param category: Category of this type. + :type builtin_type: :class:`Type.BuiltinType` + :param builtin_type: Category of the built-in type. + This attribute is optional and it is only relevant when the value + of ``category`` is :attr:`Type.Category.BUILTIN`. + :type user_defined_type: :class:`UserDefinedType` + :param user_defined_type: Identifier and type of the user defined type. + This attribute is optional and it is only relevant when the value + of ``category`` is :attr:`Type.Category.USER_DEFINED`. + :type generic_instantiation: :class:`GenericInstantiation` + :param generic_instantiation: Instantiation of one of the generic types available in the + interface definition language. + This attribute is optional and it is only relevant when the value + of ``category`` is :attr:`Type.Category.GENERIC`. + """ + self.category = category + self.builtin_type = builtin_type + self.user_defined_type = user_defined_type + self.generic_instantiation = generic_instantiation + VapiStruct.__init__(self) + +
[docs] class Category(Enum): + """ + The ``Type.Category`` class provides class attribute for each category of + the type. + + .. note:: + This class represents an enumerated type in the interface language + definition. The class contains class attributes which represent the + values in the current version of the enumerated type. Newer versions of + the enumerated type may contain new values. To use new values of the + enumerated type in communication with a server that supports the newer + version of the API, you instantiate this class. See :ref:`enumerated + type description page <enumeration_description>`. + """ + BUILTIN = None + """ + The type is one of the built-in types specified in + :class:`Type.BuiltinType` + + """ + USER_DEFINED = None + """ + The type is one of the user defined named types. + + """ + GENERIC = None + """ + The type is an instantiation of one of the generic types. + + """ + + def __init__(self, string): + """ + :type string: :class:`str` + :param string: String value for the :class:`Category` instance. + """ + Enum.__init__(string) +
+ Category.BUILTIN = Category('BUILTIN') + Category.USER_DEFINED = Category('USER_DEFINED') + Category.GENERIC = Category('GENERIC') + Category._set_binding_type(type.EnumType( + 'com.vmware.vapi.metadata.metamodel.type.category', + Category)) +
[docs] class BuiltinType(Enum): + """ + The ``Type.BuiltinType`` class provides class attribute for each of the + built-in types present in the interface definition language type system. + + .. note:: + This class represents an enumerated type in the interface language + definition. The class contains class attributes which represent the + values in the current version of the enumerated type. Newer versions of + the enumerated type may contain new values. To use new values of the + enumerated type in communication with a server that supports the newer + version of the API, you instantiate this class. See :ref:`enumerated + type description page <enumeration_description>`. + """ + VOID = None + """ + The built-in type is a void. The value is None. + + """ + BOOLEAN = None + """ + The built-in type is a boolean. The value is true or false. + + """ + LONG = None + """ + The built-in type is a long. The value is a 64 bit signed integer. + + """ + DOUBLE = None + """ + The built-in type is a double. The value is a 64 bit floating point number. + + """ + STRING = None + """ + The built-in type is a string. The value is a variable-length sequence of + zero or more unicode characters. + + """ + BINARY = None + """ + The built-in type is a binary. The value is a variable-length sequence of + zero or more bytes. + + """ + SECRET = None + """ + The built-in type is a secret. The value is a variable-length sequence of + zero or more unicode characters. The value contains sensitive data that + should not be printed or displayed anywhere. + + """ + DATE_TIME = None + """ + The built-in type is a datetime. The value should be in the UTC timezone + and the precision is milliseconds. + + """ + ID = None + """ + The built-in type is an ID. The value represents an identifier for a + resource. + + """ + URI = None + """ + The built-in type is an URI. The value follows the IRI specification in RFC + 3987. + + """ + ANY_ERROR = None + """ + The built-in type is an arbitrary exception type. This is used if the value + of a typed element can be one of any user defined named type which is an + exception. + + """ + DYNAMIC_STRUCTURE = None + """ + The built-in type is a dynamic structure. This is used if the value of a + typed element can be one of any user defined named type. + + """ + OPAQUE = None + """ + The built-in type is an opaque. This is used if the value of a typed + element could be of any type and the actual type will be known only during + the execution of the API. This is mostly used in infrastructure classes. + + """ + + def __init__(self, string): + """ + :type string: :class:`str` + :param string: String value for the :class:`BuiltinType` instance. + """ + Enum.__init__(string) +
+ BuiltinType.VOID = BuiltinType('VOID') + BuiltinType.BOOLEAN = BuiltinType('BOOLEAN') + BuiltinType.LONG = BuiltinType('LONG') + BuiltinType.DOUBLE = BuiltinType('DOUBLE') + BuiltinType.STRING = BuiltinType('STRING') + BuiltinType.BINARY = BuiltinType('BINARY') + BuiltinType.SECRET = BuiltinType('SECRET') + BuiltinType.DATE_TIME = BuiltinType('DATE_TIME') + BuiltinType.ID = BuiltinType('ID') + BuiltinType.URI = BuiltinType('URI') + BuiltinType.ANY_ERROR = BuiltinType('ANY_ERROR') + BuiltinType.DYNAMIC_STRUCTURE = BuiltinType('DYNAMIC_STRUCTURE') + BuiltinType.OPAQUE = BuiltinType('OPAQUE') + BuiltinType._set_binding_type(type.EnumType( + 'com.vmware.vapi.metadata.metamodel.type.builtin_type', + BuiltinType))
+Type._set_binding_type(type.StructType( + 'com.vmware.vapi.metadata.metamodel.type', { + 'category': type.ReferenceType(sys.modules[__name__], 'Type.Category'), + 'builtin_type': type.OptionalType(type.ReferenceType(sys.modules[__name__], 'Type.BuiltinType')), + 'user_defined_type': type.OptionalType(type.ReferenceType(sys.modules[__name__], 'UserDefinedType')), + 'generic_instantiation': type.OptionalType(type.ReferenceType(sys.modules[__name__], 'GenericInstantiation')), + }, + Type, + False, + None)) + + + +
[docs]class UserDefinedType(VapiStruct): + """ + The ``UserDefinedType`` class contains the metamodel type information of a + typed element whose type is a user defined named type. + + .. tip:: + The arguments are used to initialize data attributes with the same + names. + """ + + + + def __init__(self, + resource_type=None, + resource_id=None, + ): + """ + :type resource_type: :class:`str` + :param resource_type: Category of the user defined named type. The named type could be a + structure element or an enumeration element. + When clients pass a value of this class as a parameter, the + attribute must be one of ``com.vmware.vapi.structure`` or + ``com.vmware.vapi.enumeration``. When methods return a value of + this class as a return value, the attribute will be one of + ``com.vmware.vapi.structure`` or ``com.vmware.vapi.enumeration``. + :type resource_id: :class:`str` + :param resource_id: Identifier of the user defined named type. + When clients pass a value of this class as a parameter, the + attribute must be an identifier for one of these resource types: + ``com.vmware.vapi.structure`` or ``com.vmware.vapi.enumeration``. + When methods return a value of this class as a return value, the + attribute will be an identifier for one of these resource types: + ``com.vmware.vapi.structure`` or ``com.vmware.vapi.enumeration``. + """ + self.resource_type = resource_type + self.resource_id = resource_id + VapiStruct.__init__(self) +
+UserDefinedType._set_binding_type(type.StructType( + 'com.vmware.vapi.metadata.metamodel.user_defined_type', { + 'resource_type': type.StringType(), + 'resource_id': type.IdType(resource_types=["com.vmware.vapi.structure", "com.vmware.vapi.enumeration"], resource_type_field_name="resource_type"), + }, + UserDefinedType, + False, + None)) + + + +
[docs]class Component(VapiInterface): + """ + The ``Component`` class providers methods to retrieve metamodel information + of a component element. + + A component defines a set of functionality that is deployed together and + versioned together. For example, all the classes that belong to VMware + Content Library are part of a single component. A component element + describes a component. A component element contains one or more package + elements. + + The methods for package elements are provided by class :class:`Package`. + """ + RESOURCE_TYPE = "com.vmware.vapi.component" + """ + Resource type for component. + + """ + + def __init__(self, config): + """ + :type config: :class:`vmware.vapi.bindings.stub.StubConfiguration` + :param config: Configuration to be used for creating the stub. + """ + VapiInterface.__init__(self, config, _ComponentStub) + + +
[docs] def list(self): + """ + Returns the identifiers for the component elements that are registered + with the infrastructure. + + + :rtype: :class:`list` of :class:`str` + :return: The list of identifiers for the component elements that are + registered with the infrastructure. + The return value will contain identifiers for the resource type: + ``com.vmware.vapi.component``. + """ + return self._invoke('list', None) +
+
[docs] def get(self, + component_id, + ): + """ + Retrieves metamodel information about the component element + corresponding to ``component_id``. + + The :class:`ComponentData` contains the metamodel information about the + component and it's fingerprint. It contains information about all the + package elements that are contained in this component element. + + :type component_id: :class:`str` + :param component_id: Identifier of the component element. + The parameter must be an identifier for the resource type: + ``com.vmware.vapi.component``. + :rtype: :class:`ComponentData` + :return: The :class:`ComponentData` instance that corresponds to + ``component_id``. + :raise: :class:`com.vmware.vapi.std.errors_client.NotFound` + if the component element associated with ``component_id`` is not + registered with the infrastructure. + """ + return self._invoke('get', + { + 'component_id': component_id, + }) +
+
[docs] def fingerprint(self, + component_id, + ): + """ + Retrieves the fingerprint computed from the metamodel metadata of the + component element corresponding to ``component_id``. + + The fingerprint provides clients an efficient way to check if the + metadata for a particular component element has been modified on the + server. The client can do this by comparing the result of this + operation with the fingerprint returned in the result of + :func:`Component.get`. + + :type component_id: :class:`str` + :param component_id: Identifier of the component element. + The parameter must be an identifier for the resource type: + ``com.vmware.vapi.component``. + :rtype: :class:`str` + :return: The fingerprint computed from the metamodel metadata of the + component element. + :raise: :class:`com.vmware.vapi.std.errors_client.NotFound` + if the component element associated with ``component_id`` is not + registered with the infrastructure. + """ + return self._invoke('fingerprint', + { + 'component_id': component_id, + }) +
+
[docs]class Enumeration(VapiInterface): + """ + The ``Enumeration`` class provides methods to retrieve metamodel + information about an enumeration element in the interface definition + language. + + The ``Enumeration`` has a list of enumeration value elements. + """ + RESOURCE_TYPE = "com.vmware.vapi.enumeration" + """ + Resource type for enumeration. + + """ + + def __init__(self, config): + """ + :type config: :class:`vmware.vapi.bindings.stub.StubConfiguration` + :param config: Configuration to be used for creating the stub. + """ + VapiInterface.__init__(self, config, _EnumerationStub) + + +
[docs] def list(self): + """ + Returns the identifiers for the enumeration elements that are contained + in all the package elements, service elements and structure elements. + + + :rtype: :class:`list` of :class:`str` + :return: The list of identifiers for the enumeration elements. + The return value will contain identifiers for the resource type: + ``com.vmware.vapi.enumeration``. + """ + return self._invoke('list', None) +
+
[docs] def get(self, + enumeration_id, + ): + """ + Retrieves information about the enumeration element corresponding to + ``enumeration_id``. + + The :class:`EnumerationInfo` contains the metamodel information about + the enumeration value element contained in the enumeration element. + + :type enumeration_id: :class:`str` + :param enumeration_id: Identifier of the enumeration element. + The parameter must be an identifier for the resource type: + ``com.vmware.vapi.enumeration``. + :rtype: :class:`EnumerationInfo` + :return: The :class:`EnumerationInfo` instance that corresponds to + ``enumeration_id`` + :raise: :class:`com.vmware.vapi.std.errors_client.NotFound` + if the enumeration element associated with ``enumeration_id`` is + not contained in any of the package elements, service elements and + structure elements. + """ + return self._invoke('get', + { + 'enumeration_id': enumeration_id, + }) +
+
[docs]class MetadataIdentifier(VapiInterface): + """ + The ``MetadataIdentifier`` class provides string constants that can be used + as identifiers for the metadata elements. + + Most of the types in :mod:`com.vmware.vapi.metadata.metamodel_client` + package has a metadata field whose type is ``Map<String, ElementMap>``. + :class:`MetadataIdentifier` contains the identifiers used in the keys of + the above Map type. + """ + CANONICAL_NAME = "CanonicalName" + """ + Identifier representing the CanonicalName metadata. + + """ + COMPONENT = "Component" + """ + Identifier representing the Component metadata. + + """ + CREATE = "Create" + """ + Identifier representing the Create metadata. + + """ + CRUD = "Crud" + """ + Identifier representing the Crud metadata. + + """ + HAS_FIELDS_OF = "HasFieldsOf" + """ + Identifier representing the HasFieldsOf metadata. + + """ + INCLUDABLE = "Includable" + """ + Identifier representing the Includable metadata. + + """ + INCLUDE = "Include" + """ + Identifier representing the Include metadata. + + """ + IS_ONE_OF = "IsOneOf" + """ + Identifier representing the IsOneOf metadata. + + """ + MODEL = "Model" + """ + Identifier representing the Model metadata. + + """ + READ = "Read" + """ + Identifier representing the Read metadata. + + """ + RESOURCE = "Resource" + """ + Identifier representing the Resource metadata. + + """ + UNION_CASE = "UnionCase" + """ + Identifier representing the UnionCase metadata. + + """ + UNION_TAG = "UnionTag" + """ + Identifier representing the UnionTag metadata. + + """ + UPDATE = "Update" + """ + Identifier representing the Update metadata. + + """ + + def __init__(self, config): + """ + :type config: :class:`vmware.vapi.bindings.stub.StubConfiguration` + :param config: Configuration to be used for creating the stub. + """ + VapiInterface.__init__(self, config, _MetadataIdentifierStub) + +
+
[docs]class Package(VapiInterface): + """ + The ``Package`` class provides methods to retrieve metamodel information + about a package element in the interface definition language. + + A package is a logical grouping of services, structures and enumerations. A + package element describes the package. It contains the service elements, + structure elements and enumeration elements that are grouped together. + """ + RESOURCE_TYPE = "com.vmware.vapi.package" + """ + Resource type for package. + + """ + + def __init__(self, config): + """ + :type config: :class:`vmware.vapi.bindings.stub.StubConfiguration` + :param config: Configuration to be used for creating the stub. + """ + VapiInterface.__init__(self, config, _PackageStub) + + +
[docs] def list(self): + """ + Returns the identifiers for the packages elements that are contained in + all the registered component elements. + + + :rtype: :class:`list` of :class:`str` + :return: The list of identifiers for the package elements that are contained + in all the registered component elements. + The return value will contain identifiers for the resource type: + ``com.vmware.vapi.package``. + """ + return self._invoke('list', None) +
+
[docs] def get(self, + package_id, + ): + """ + Retrieves information about the package element corresponding to + ``packagetId``. + + :type package_id: :class:`str` + :param package_id: Identifier of the package element. + The parameter must be an identifier for the resource type: + ``com.vmware.vapi.package``. + :rtype: :class:`PackageInfo` + :return: The :class:`PackageInfo` instance that corresponds to + ``package_id``. + :raise: :class:`com.vmware.vapi.std.errors_client.NotFound` + if the package element associated with ``package_id`` does not + exist. + """ + return self._invoke('get', + { + 'package_id': package_id, + }) +
+
[docs]class Resource(VapiInterface): + """ + The :class:`Resource` class provides methods to retrieve information about + resource types. + + A service is a logical grouping of operations that operate on an entity. + Each entity is identifier by a namespace (or resource type) and an unique + identifier. + """ + RESOURCE_TYPE = "com.vmware.vapi.resource" + """ + Resource type for resource. + + """ + + def __init__(self, config): + """ + :type config: :class:`vmware.vapi.bindings.stub.StubConfiguration` + :param config: Configuration to be used for creating the stub. + """ + VapiInterface.__init__(self, config, _ResourceStub) + + +
[docs] def list(self): + """ + Returns the set of resource types present across all the service + elements contained in all the package elements. + + + :rtype: :class:`set` of :class:`str` + :return: Set of resource types + The return value will contain identifiers for the resource type: + ``com.vmware.vapi.resource``. + """ + return self._invoke('list', None) +
+
[docs]class Service(VapiInterface): + """ + The ``Service`` class provides methods to retrieve metamodel information + about a service element in the interface definition language. + + A service is a logical grouping of operations that operate on some entity. + A service element describes a service. It contains operation elements that + describe the operations grouped in the service. It also contains structure + elements and enumeration elements corresponding to the structures and + enumerations defined in the service. + """ + RESOURCE_TYPE = "com.vmware.vapi.service" + """ + Resource type for service. + + """ + + def __init__(self, config): + """ + :type config: :class:`vmware.vapi.bindings.stub.StubConfiguration` + :param config: Configuration to be used for creating the stub. + """ + VapiInterface.__init__(self, config, _ServiceStub) + + +
[docs] def list(self): + """ + Returns the identifiers for the service elements that are currently + registered with the infrastructure. + + The list of service elements is an aggregate list of all the service + elements contained in all the package elements. + + + :rtype: :class:`list` of :class:`str` + :return: The list of identifiers for the service elements that are currently + registered with the infrastructure. + The return value will contain identifiers for the resource type: + ``com.vmware.vapi.service``. + """ + return self._invoke('list', None) +
+
[docs] def get(self, + service_id, + ): + """ + Retrieves information about the service element corresponding to + ``service_id``. + + The :class:`ServiceInfo` contains the metamodel information for the + operation elements, structure elements and enumeration elements + contained in the service element. + + :type service_id: :class:`str` + :param service_id: Identifier of the service element. + The parameter must be an identifier for the resource type: + ``com.vmware.vapi.service``. + :rtype: :class:`ServiceInfo` + :return: The :class:`ServiceInfo` instance that corresponds to + ``service_id`` + :raise: :class:`com.vmware.vapi.std.errors_client.NotFound` + if the service element associated with ``service_id`` is not + registered with the infrastructure. + """ + return self._invoke('get', + { + 'service_id': service_id, + }) +
+
[docs]class Source(VapiInterface): + """ + The ``Source`` class provides methods to manage the sources of metamodel + metadata information. + + The interface definition language infrastructure provides tools to generate + various kinds of metadata in JSON format from the interface definition + files and additional properties files. One of the generated files contains + metamodel information. The generated file can be registered as a source of + metadata. + + The metamodel file contains all the data present in the interface + definition files. Each metamodel file contains data about one component + element. When a metamodel file is added as a source, each source + contributes only one component element's metadata. + + Metamodel metadata can also be discovered from a remote server that + supports the metamodel metadata classes (see + :mod:`com.vmware.vapi.metadata.metamodel_client`). Since multiple + components can be registered with a single metadata server, when a remote + server is registered as a source, that source can contribute more than one + component. + """ + RESOURCE_TYPE = "com.vmware.vapi.metadata.metamodel.source" + """ + Resource type for metadata source. + + """ + + def __init__(self, config): + """ + :type config: :class:`vmware.vapi.bindings.stub.StubConfiguration` + :param config: Configuration to be used for creating the stub. + """ + VapiInterface.__init__(self, config, _SourceStub) + +
[docs] class Info(VapiStruct): + """ + The ``Source.Info`` class contains the metadata source information. + + .. tip:: + The arguments are used to initialize data attributes with the same + names. + """ + + _validator_list = [ + UnionValidator( + 'type', + { + 'FILE' : [('filepath', True)], + 'REMOTE' : [('address', True)], + } + ), + ] + + + def __init__(self, + description=None, + type=None, + filepath=None, + address=None, + ): + """ + :type description: :class:`str` + :param description: English language human readable description of the source. + :type type: :class:`com.vmware.vapi.metadata_client.SourceType` + :param type: Type of the metadata source. + :type filepath: :class:`str` + :param filepath: Absolute file path of the metamodel metadata file that has the + metamodel information about one component element. The ``filePath`` + is the path to the file in the server's filesystem. + This attribute is optional and it is only relevant when the value + of ``type`` is null. + :type address: :class:`str` + :param address: Connection information for the remote server. This must be in the + format http(s)://IP:port/namespace. + + The remote server must support the classes in the + :mod:`com.vmware.vapi.metadata.metamodel_client` module. It must + expose metamodel information of one or more components. + This attribute is optional and it is only relevant when the value + of ``type`` is null. + """ + self.description = description + self.type = type + self.filepath = filepath + self.address = address + VapiStruct.__init__(self) +
+ Info._set_binding_type(type.StructType( + 'com.vmware.vapi.metadata.metamodel.source.info', { + 'description': type.StringType(), + 'type': type.ReferenceType(com.vmware.vapi.metadata_client, 'SourceType'), + 'filepath': type.OptionalType(type.StringType()), + 'address': type.OptionalType(type.URIType()), + }, + Info, + False, + None)) + +
[docs] class CreateSpec(VapiStruct): + """ + The ``Source.CreateSpec`` class contains the registration information of a + metamodel source. + + .. tip:: + The arguments are used to initialize data attributes with the same + names. + """ + + _validator_list = [ + UnionValidator( + 'type', + { + 'FILE' : [('filepath', True)], + 'REMOTE' : [('address', True)], + } + ), + ] + + + def __init__(self, + description=None, + type=None, + filepath=None, + address=None, + ): + """ + :type description: :class:`str` + :param description: English language human readable description of the source. + :type type: :class:`com.vmware.vapi.metadata_client.SourceType` + :param type: Type of the metadata source. + :type filepath: :class:`str` + :param filepath: Absolute file path of the metamodel metadata file that has the + metamodel information about one component element. + This attribute is optional and it is only relevant when the value + of ``type`` is + :attr:`com.vmware.vapi.metadata_client.SourceType.FILE`. + :type address: :class:`str` + :param address: Connection information of the remote server. This should be of the + format http(s)://IP:port/namespace. + + The remote server should contain the classes in + :mod:`com.vmware.vapi.metadata.metamodel_client` module. It could + expose metamodel information of one or more components. + This attribute is optional and it is only relevant when the value + of ``type`` is + :attr:`com.vmware.vapi.metadata_client.SourceType.REMOTE`. + """ + self.description = description + self.type = type + self.filepath = filepath + self.address = address + VapiStruct.__init__(self) +
+ CreateSpec._set_binding_type(type.StructType( + 'com.vmware.vapi.metadata.metamodel.source.create_spec', { + 'description': type.StringType(), + 'type': type.ReferenceType(com.vmware.vapi.metadata_client, 'SourceType'), + 'filepath': type.OptionalType(type.StringType()), + 'address': type.OptionalType(type.URIType()), + }, + CreateSpec, + False, + None)) + + +
[docs] def create(self, + source_id, + spec, + ): + """ + Creates a new metadata source. Once the server validates the + registration information of the metadata source, the metamodel metadata + is retrieved from the source. This populates elements in all the + classes defined in :mod:`com.vmware.vapi.metadata.metamodel_client` + module. + + :type source_id: :class:`str` + :param source_id: metadata source identifier. + The parameter must be an identifier for the resource type: + ``com.vmware.vapi.metadata.metamodel.source``. + :type spec: :class:`Source.CreateSpec` + :param spec: create specification. + :raise: :class:`com.vmware.vapi.std.errors_client.AlreadyExists` + if the metadata source identifier is already registered with the + infrastructure. + :raise: :class:`com.vmware.vapi.std.errors_client.InvalidArgument` + if the type of the source specified in null is invalid. + :raise: :class:`com.vmware.vapi.std.errors_client.InvalidArgument` + if the file specified in null is not a valid JSON file or if the + format of the metamodel metadata in the JSON file is invalid. + :raise: :class:`com.vmware.vapi.std.errors_client.InvalidArgument` + if the URI specified in null is unreachable or if there is a + transport protocol or message protocol mismatch between the client + and the server or if the remote server do not have classes present + in :mod:`com.vmware.vapi.metadata.metamodel_client` module. + :raise: :class:`com.vmware.vapi.std.errors_client.NotFound` + if the file specified in null does not exist. + """ + return self._invoke('create', + { + 'source_id': source_id, + 'spec': spec, + }) +
+
[docs] def delete(self, + source_id, + ): + """ + Deletes an existing metamodel metadata source from the infrastructure. + + :type source_id: :class:`str` + :param source_id: Identifier of the metadata source. + The parameter must be an identifier for the resource type: + ``com.vmware.vapi.metadata.metamodel.source``. + :raise: :class:`com.vmware.vapi.std.errors_client.NotFound` + if the metadata source associated with ``source_id`` is not found. + """ + return self._invoke('delete', + { + 'source_id': source_id, + }) +
+
[docs] def get(self, + source_id, + ): + """ + Retrieves information about the metadata source corresponding to + ``source_id``. + + :type source_id: :class:`str` + :param source_id: Identifier of the metadata source. + The parameter must be an identifier for the resource type: + ``com.vmware.vapi.metadata.metamodel.source``. + :rtype: :class:`Source.Info` + :return: The :class:`Source.Info` instance that corresponds to ``source_id`` + :raise: :class:`com.vmware.vapi.std.errors_client.NotFound` + if the metadata source associated with ``source_id`` is not found. + """ + return self._invoke('get', + { + 'source_id': source_id, + }) +
+
[docs] def list(self): + """ + Returns the identifiers of the metadata sources currently registered + with the infrastructure. + + + :rtype: :class:`list` of :class:`str` + :return: The list of identifiers for metadata sources currently registered. + The return value will contain identifiers for the resource type: + ``com.vmware.vapi.metadata.metamodel.source``. + """ + return self._invoke('list', None) +
+
[docs] def reload(self, + source_id=None, + ): + """ + Reloads the metamodel metadata from all the metadata sources or of a + particular metadata source if ``source_id`` is specified. + + :type source_id: :class:`str` or ``None`` + :param source_id: Identifier of the metadata source. + The parameter must be an identifier for the resource type: + ``com.vmware.vapi.metadata.metamodel.source``. + If unspecified, all the metadata sources are reloaded. + :raise: :class:`com.vmware.vapi.std.errors_client.NotFound` + if the metadata source associated with ``source_id`` is not found. + """ + return self._invoke('reload', + { + 'source_id': source_id, + }) +
+
[docs] def fingerprint(self, + source_id=None, + ): + """ + Returns the aggregate fingerprint of metadata from all the metadata + sources or from a particular metadata source if ``source_id`` is + specified. + + :type source_id: :class:`str` or ``None`` + :param source_id: Identifier of the metadata source. + The parameter must be an identifier for the resource type: + ``com.vmware.vapi.metadata.metamodel.source``. + If unspecified, the fingerprint of all the metadata sources is + returned. + :rtype: :class:`str` + :return: Aggregate fingerprint of all the metadata sources or of a + particular metadata source. + :raise: :class:`com.vmware.vapi.std.errors_client.NotFound` + if the metadata source associated with ``source_id`` is not found. + """ + return self._invoke('fingerprint', + { + 'source_id': source_id, + }) +
+
[docs]class Structure(VapiInterface): + """ + The ``Structure`` class providers methods to retrieve metamodel information + about a structure element in the interface definition language. + """ + RESOURCE_TYPE = "com.vmware.vapi.structure" + """ + Resource type for structure. + + """ + + def __init__(self, config): + """ + :type config: :class:`vmware.vapi.bindings.stub.StubConfiguration` + :param config: Configuration to be used for creating the stub. + """ + VapiInterface.__init__(self, config, _StructureStub) + + +
[docs] def list(self): + """ + Returns the identifiers for the structure elements that are contained + in all the package elements and service elements. + + + :rtype: :class:`list` of :class:`str` + :return: The list of identifiers for the structure elements. + The return value will contain identifiers for the resource type: + ``com.vmware.vapi.structure``. + """ + return self._invoke('list', None) +
+
[docs] def get(self, + structure_id, + ): + """ + Retrieves information about the structure element corresponding to + ``structure_id``. + + The :class:`StructureInfo` contains the metamodel information about the + structure element. It contains information about all the field elements + and enumeration elements contained in this structure element. + + :type structure_id: :class:`str` + :param structure_id: Identifier of the structure element. + The parameter must be an identifier for the resource type: + ``com.vmware.vapi.structure``. + :rtype: :class:`StructureInfo` + :return: The :class:`StructureInfo` instance that corresponds to + ``structure_id``. + :raise: :class:`com.vmware.vapi.std.errors_client.NotFound` + if the structure element associated with ``structure_id`` is not + contained in any of the package elements or service elements. + """ + return self._invoke('get', + { + 'structure_id': structure_id, + }) +
+class _ComponentStub(ApiInterfaceStub): + def __init__(self, config): + # properties for list operation + list_input_type = type.StructType('operation-input', {}) + list_error_dict = {} + list_input_validator_list = [ + ] + list_output_validator_list = [ + ] + + # properties for get operation + get_input_type = type.StructType('operation-input', { + 'component_id': type.IdType(resource_types='com.vmware.vapi.component'), + }) + get_error_dict = { + 'com.vmware.vapi.std.errors.not_found': + type.ReferenceType(com.vmware.vapi.std.errors_client, 'NotFound'), + + } + get_input_validator_list = [ + ] + get_output_validator_list = [ + ] + + # properties for fingerprint operation + fingerprint_input_type = type.StructType('operation-input', { + 'component_id': type.IdType(resource_types='com.vmware.vapi.component'), + }) + fingerprint_error_dict = { + 'com.vmware.vapi.std.errors.not_found': + type.ReferenceType(com.vmware.vapi.std.errors_client, 'NotFound'), + + } + fingerprint_input_validator_list = [ + ] + fingerprint_output_validator_list = [ + ] + + operations = { + 'list': { + 'input_type': list_input_type, + 'output_type': type.ListType(type.IdType()), + 'errors': list_error_dict, + 'input_validator_list': list_input_validator_list, + 'output_validator_list': list_output_validator_list, + }, + 'get': { + 'input_type': get_input_type, + 'output_type': type.ReferenceType(sys.modules[__name__], 'ComponentData'), + 'errors': get_error_dict, + 'input_validator_list': get_input_validator_list, + 'output_validator_list': get_output_validator_list, + }, + 'fingerprint': { + 'input_type': fingerprint_input_type, + 'output_type': type.StringType(), + 'errors': fingerprint_error_dict, + 'input_validator_list': fingerprint_input_validator_list, + 'output_validator_list': fingerprint_output_validator_list, + }, + } + ApiInterfaceStub.__init__(self, iface_name='com.vmware.vapi.metadata.metamodel.component', + config=config, + operations=operations) +class _EnumerationStub(ApiInterfaceStub): + def __init__(self, config): + # properties for list operation + list_input_type = type.StructType('operation-input', {}) + list_error_dict = {} + list_input_validator_list = [ + ] + list_output_validator_list = [ + ] + + # properties for get operation + get_input_type = type.StructType('operation-input', { + 'enumeration_id': type.IdType(resource_types='com.vmware.vapi.enumeration'), + }) + get_error_dict = { + 'com.vmware.vapi.std.errors.not_found': + type.ReferenceType(com.vmware.vapi.std.errors_client, 'NotFound'), + + } + get_input_validator_list = [ + ] + get_output_validator_list = [ + ] + + operations = { + 'list': { + 'input_type': list_input_type, + 'output_type': type.ListType(type.IdType()), + 'errors': list_error_dict, + 'input_validator_list': list_input_validator_list, + 'output_validator_list': list_output_validator_list, + }, + 'get': { + 'input_type': get_input_type, + 'output_type': type.ReferenceType(sys.modules[__name__], 'EnumerationInfo'), + 'errors': get_error_dict, + 'input_validator_list': get_input_validator_list, + 'output_validator_list': get_output_validator_list, + }, + } + ApiInterfaceStub.__init__(self, iface_name='com.vmware.vapi.metadata.metamodel.enumeration', + config=config, + operations=operations) +class _MetadataIdentifierStub(ApiInterfaceStub): + def __init__(self, config): + operations = { + } + ApiInterfaceStub.__init__(self, iface_name='com.vmware.vapi.metadata.metamodel.metadata_identifier', + config=config, + operations=operations) +class _PackageStub(ApiInterfaceStub): + def __init__(self, config): + # properties for list operation + list_input_type = type.StructType('operation-input', {}) + list_error_dict = {} + list_input_validator_list = [ + ] + list_output_validator_list = [ + ] + + # properties for get operation + get_input_type = type.StructType('operation-input', { + 'package_id': type.IdType(resource_types='com.vmware.vapi.package'), + }) + get_error_dict = { + 'com.vmware.vapi.std.errors.not_found': + type.ReferenceType(com.vmware.vapi.std.errors_client, 'NotFound'), + + } + get_input_validator_list = [ + ] + get_output_validator_list = [ + ] + + operations = { + 'list': { + 'input_type': list_input_type, + 'output_type': type.ListType(type.IdType()), + 'errors': list_error_dict, + 'input_validator_list': list_input_validator_list, + 'output_validator_list': list_output_validator_list, + }, + 'get': { + 'input_type': get_input_type, + 'output_type': type.ReferenceType(sys.modules[__name__], 'PackageInfo'), + 'errors': get_error_dict, + 'input_validator_list': get_input_validator_list, + 'output_validator_list': get_output_validator_list, + }, + } + ApiInterfaceStub.__init__(self, iface_name='com.vmware.vapi.metadata.metamodel.package', + config=config, + operations=operations) +class _ResourceStub(ApiInterfaceStub): + def __init__(self, config): + # properties for list operation + list_input_type = type.StructType('operation-input', {}) + list_error_dict = {} + list_input_validator_list = [ + ] + list_output_validator_list = [ + ] + + operations = { + 'list': { + 'input_type': list_input_type, + 'output_type': type.SetType(type.IdType()), + 'errors': list_error_dict, + 'input_validator_list': list_input_validator_list, + 'output_validator_list': list_output_validator_list, + }, + } + ApiInterfaceStub.__init__(self, iface_name='com.vmware.vapi.metadata.metamodel.resource', + config=config, + operations=operations) +class _ServiceStub(ApiInterfaceStub): + def __init__(self, config): + # properties for list operation + list_input_type = type.StructType('operation-input', {}) + list_error_dict = {} + list_input_validator_list = [ + ] + list_output_validator_list = [ + ] + + # properties for get operation + get_input_type = type.StructType('operation-input', { + 'service_id': type.IdType(resource_types='com.vmware.vapi.service'), + }) + get_error_dict = { + 'com.vmware.vapi.std.errors.not_found': + type.ReferenceType(com.vmware.vapi.std.errors_client, 'NotFound'), + + } + get_input_validator_list = [ + ] + get_output_validator_list = [ + ] + + operations = { + 'list': { + 'input_type': list_input_type, + 'output_type': type.ListType(type.IdType()), + 'errors': list_error_dict, + 'input_validator_list': list_input_validator_list, + 'output_validator_list': list_output_validator_list, + }, + 'get': { + 'input_type': get_input_type, + 'output_type': type.ReferenceType(sys.modules[__name__], 'ServiceInfo'), + 'errors': get_error_dict, + 'input_validator_list': get_input_validator_list, + 'output_validator_list': get_output_validator_list, + }, + } + ApiInterfaceStub.__init__(self, iface_name='com.vmware.vapi.metadata.metamodel.service', + config=config, + operations=operations) +class _SourceStub(ApiInterfaceStub): + def __init__(self, config): + # properties for create operation + create_input_type = type.StructType('operation-input', { + 'source_id': type.IdType(resource_types='com.vmware.vapi.metadata.metamodel.source'), + 'spec': type.ReferenceType(sys.modules[__name__], 'Source.CreateSpec'), + }) + create_error_dict = { + 'com.vmware.vapi.std.errors.already_exists': + type.ReferenceType(com.vmware.vapi.std.errors_client, 'AlreadyExists'), + 'com.vmware.vapi.std.errors.invalid_argument': + type.ReferenceType(com.vmware.vapi.std.errors_client, 'InvalidArgument'), + 'com.vmware.vapi.std.errors.not_found': + type.ReferenceType(com.vmware.vapi.std.errors_client, 'NotFound'), + + } + create_input_validator_list = [ + ] + create_output_validator_list = [ + ] + + # properties for delete operation + delete_input_type = type.StructType('operation-input', { + 'source_id': type.IdType(resource_types='com.vmware.vapi.metadata.metamodel.source'), + }) + delete_error_dict = { + 'com.vmware.vapi.std.errors.not_found': + type.ReferenceType(com.vmware.vapi.std.errors_client, 'NotFound'), + + } + delete_input_validator_list = [ + ] + delete_output_validator_list = [ + ] + + # properties for get operation + get_input_type = type.StructType('operation-input', { + 'source_id': type.IdType(resource_types='com.vmware.vapi.metadata.metamodel.source'), + }) + get_error_dict = { + 'com.vmware.vapi.std.errors.not_found': + type.ReferenceType(com.vmware.vapi.std.errors_client, 'NotFound'), + + } + get_input_validator_list = [ + ] + get_output_validator_list = [ + ] + + # properties for list operation + list_input_type = type.StructType('operation-input', {}) + list_error_dict = {} + list_input_validator_list = [ + ] + list_output_validator_list = [ + ] + + # properties for reload operation + reload_input_type = type.StructType('operation-input', { + 'source_id': type.OptionalType(type.IdType()), + }) + reload_error_dict = { + 'com.vmware.vapi.std.errors.not_found': + type.ReferenceType(com.vmware.vapi.std.errors_client, 'NotFound'), + + } + reload_input_validator_list = [ + ] + reload_output_validator_list = [ + ] + + # properties for fingerprint operation + fingerprint_input_type = type.StructType('operation-input', { + 'source_id': type.OptionalType(type.IdType()), + }) + fingerprint_error_dict = { + 'com.vmware.vapi.std.errors.not_found': + type.ReferenceType(com.vmware.vapi.std.errors_client, 'NotFound'), + + } + fingerprint_input_validator_list = [ + ] + fingerprint_output_validator_list = [ + ] + + operations = { + 'create': { + 'input_type': create_input_type, + 'output_type': type.VoidType(), + 'errors': create_error_dict, + 'input_validator_list': create_input_validator_list, + 'output_validator_list': create_output_validator_list, + }, + 'delete': { + 'input_type': delete_input_type, + 'output_type': type.VoidType(), + 'errors': delete_error_dict, + 'input_validator_list': delete_input_validator_list, + 'output_validator_list': delete_output_validator_list, + }, + 'get': { + 'input_type': get_input_type, + 'output_type': type.ReferenceType(sys.modules[__name__], 'Source.Info'), + 'errors': get_error_dict, + 'input_validator_list': get_input_validator_list, + 'output_validator_list': get_output_validator_list, + }, + 'list': { + 'input_type': list_input_type, + 'output_type': type.ListType(type.IdType()), + 'errors': list_error_dict, + 'input_validator_list': list_input_validator_list, + 'output_validator_list': list_output_validator_list, + }, + 'reload': { + 'input_type': reload_input_type, + 'output_type': type.VoidType(), + 'errors': reload_error_dict, + 'input_validator_list': reload_input_validator_list, + 'output_validator_list': reload_output_validator_list, + }, + 'fingerprint': { + 'input_type': fingerprint_input_type, + 'output_type': type.StringType(), + 'errors': fingerprint_error_dict, + 'input_validator_list': fingerprint_input_validator_list, + 'output_validator_list': fingerprint_output_validator_list, + }, + } + ApiInterfaceStub.__init__(self, iface_name='com.vmware.vapi.metadata.metamodel.source', + config=config, + operations=operations) +class _StructureStub(ApiInterfaceStub): + def __init__(self, config): + # properties for list operation + list_input_type = type.StructType('operation-input', {}) + list_error_dict = {} + list_input_validator_list = [ + ] + list_output_validator_list = [ + ] + + # properties for get operation + get_input_type = type.StructType('operation-input', { + 'structure_id': type.IdType(resource_types='com.vmware.vapi.structure'), + }) + get_error_dict = { + 'com.vmware.vapi.std.errors.not_found': + type.ReferenceType(com.vmware.vapi.std.errors_client, 'NotFound'), + + } + get_input_validator_list = [ + ] + get_output_validator_list = [ + ] + + operations = { + 'list': { + 'input_type': list_input_type, + 'output_type': type.ListType(type.IdType()), + 'errors': list_error_dict, + 'input_validator_list': list_input_validator_list, + 'output_validator_list': list_output_validator_list, + }, + 'get': { + 'input_type': get_input_type, + 'output_type': type.ReferenceType(sys.modules[__name__], 'StructureInfo'), + 'errors': get_error_dict, + 'input_validator_list': get_input_validator_list, + 'output_validator_list': get_output_validator_list, + }, + } + ApiInterfaceStub.__init__(self, iface_name='com.vmware.vapi.metadata.metamodel.structure', + config=config, + operations=operations) +
+ +
+
+
+
+
+ + +
+
+
+
+ + + + \ No newline at end of file diff --git a/vsphere/6.0/_modules/com/vmware/vapi/metadata/privilege/service_client.html b/vsphere/6.0/_modules/com/vmware/vapi/metadata/privilege/service_client.html new file mode 100644 index 00000000..0ad8d4bf --- /dev/null +++ b/vsphere/6.0/_modules/com/vmware/vapi/metadata/privilege/service_client.html @@ -0,0 +1,263 @@ + + + + + + + + + + com.vmware.vapi.metadata.privilege.service_client — vCloud Suite SDK for Python 6.0.0 documentation + + + + + + + + + + + + + + +
+
+
+
+ +

Source code for com.vmware.vapi.metadata.privilege.service_client

+#---------------------------------------------------------------------------
+# Copyright 2014 VMware, Inc.  All rights reserved.
+
+# AUTO GENERATED FILE -- DO NOT MODIFY!
+#
+# vAPI stub file for package com.vmware.vapi.metadata.privilege.service.
+#---------------------------------------------------------------------------
+
+"""
+The ``com.vmware.vapi.metadata.privilege.service_client`` module provides
+classes to retrieve privilege information for operation elements.
+
+"""
+
+__author__ = 'VMware, Inc.'
+__docformat__ = 'restructuredtext en'
+
+import sys
+
+from vmware.vapi.bindings import type
+from vmware.vapi.bindings.converter import TypeConverter
+from vmware.vapi.bindings.enum import Enum
+from vmware.vapi.bindings.error import VapiError
+from vmware.vapi.bindings.struct import VapiStruct
+from vmware.vapi.bindings.stub import VapiInterface, ApiInterfaceStub
+from vmware.vapi.bindings.common import raise_core_exception
+from vmware.vapi.data.validator import UnionValidator, HasFieldsOfValidator
+from vmware.vapi.exception import CoreException
+import com.vmware.vapi.std.errors_client
+import com.vmware.vapi.metadata.privilege_client
+
+
+
[docs]class Operation(VapiInterface): + """ + The ``Operation`` class provides methods to retrieve privilege information + of an operation element. + + An operation element is said to contain privilege information if there are + any privileges assigned to the operation element or if one of the parameter + elements contained in it has privileges assigned in privilege definition + file. + """ + RESOURCE_TYPE = "com.vmware.vapi.operation" + """ + Resource type for operation. + + """ + + def __init__(self, config): + """ + :type config: :class:`vmware.vapi.bindings.stub.StubConfiguration` + :param config: Configuration to be used for creating the stub. + """ + VapiInterface.__init__(self, config, _OperationStub) + + +
[docs] def list(self, + service_id, + ): + """ + Returns the identifiers for the operation elements contained in the + service element corresponding to ``service_id`` that have privilege + information. + + :type service_id: :class:`str` + :param service_id: Identifier of the service element. + The parameter must be an identifier for the resource type: + ``com.vmware.vapi.service``. + :rtype: :class:`list` of :class:`str` + :return: List of identifiers for the operation elements contained in the + service element that have privilege information. + The return value will contain identifiers for the resource type: + ``com.vmware.vapi.operation``. + :raise: :class:`com.vmware.vapi.std.errors_client.NotFound` + if the service element associated with ``service_id`` does not have + any operation elements that have privilege information. + """ + return self._invoke('list', + { + 'service_id': service_id, + }) +
+
[docs] def get(self, + service_id, + operation_id, + ): + """ + Retrieves the privilege information about an operation element + corresponding to ``operation_id`` contained in the service element + corresponding to ``service_id``. + + :type service_id: :class:`str` + :param service_id: Identifier of the service element. + The parameter must be an identifier for the resource type: + ``com.vmware.vapi.service``. + :type operation_id: :class:`str` + :param operation_id: Identifier of the operation element. + The parameter must be an identifier for the resource type: + ``com.vmware.vapi.operation``. + :rtype: :class:`com.vmware.vapi.metadata.privilege_client.OperationInfo` + :return: The + :class:`com.vmware.vapi.metadata.privilege_client.OperationInfo` + instance that corresponds to ``operation_id``. + :raise: :class:`com.vmware.vapi.std.errors_client.NotFound` + if the service element associated with ``service_id`` does not + exist. + :raise: :class:`com.vmware.vapi.std.errors_client.NotFound` + if the operation element associated with ``operation_id`` does not + exist. + :raise: :class:`com.vmware.vapi.std.errors_client.NotFound` + if the operation element associated with ``operation_id`` does not + have any privilege information. + """ + return self._invoke('get', + { + 'service_id': service_id, + 'operation_id': operation_id, + }) +
+class _OperationStub(ApiInterfaceStub): + def __init__(self, config): + # properties for list operation + list_input_type = type.StructType('operation-input', { + 'service_id': type.IdType(resource_types='com.vmware.vapi.service'), + }) + list_error_dict = { + 'com.vmware.vapi.std.errors.not_found': + type.ReferenceType(com.vmware.vapi.std.errors_client, 'NotFound'), + + } + list_input_validator_list = [ + ] + list_output_validator_list = [ + ] + + # properties for get operation + get_input_type = type.StructType('operation-input', { + 'service_id': type.IdType(resource_types='com.vmware.vapi.service'), + 'operation_id': type.IdType(resource_types='com.vmware.vapi.operation'), + }) + get_error_dict = { + 'com.vmware.vapi.std.errors.not_found': + type.ReferenceType(com.vmware.vapi.std.errors_client, 'NotFound'), + + } + get_input_validator_list = [ + ] + get_output_validator_list = [ + ] + + operations = { + 'list': { + 'input_type': list_input_type, + 'output_type': type.ListType(type.IdType()), + 'errors': list_error_dict, + 'input_validator_list': list_input_validator_list, + 'output_validator_list': list_output_validator_list, + }, + 'get': { + 'input_type': get_input_type, + 'output_type': type.ReferenceType(com.vmware.vapi.metadata.privilege_client, 'OperationInfo'), + 'errors': get_error_dict, + 'input_validator_list': get_input_validator_list, + 'output_validator_list': get_output_validator_list, + }, + } + ApiInterfaceStub.__init__(self, iface_name='com.vmware.vapi.metadata.privilege.service.operation', + config=config, + operations=operations) +
+ +
+
+
+
+
+ + +
+
+
+
+ + + + \ No newline at end of file diff --git a/vsphere/6.0/_modules/com/vmware/vapi/metadata/privilege_client.html b/vsphere/6.0/_modules/com/vmware/vapi/metadata/privilege_client.html new file mode 100644 index 00000000..70a31ee4 --- /dev/null +++ b/vsphere/6.0/_modules/com/vmware/vapi/metadata/privilege_client.html @@ -0,0 +1,1223 @@ + + + + + + + + + + com.vmware.vapi.metadata.privilege_client — vCloud Suite SDK for Python 6.0.0 documentation + + + + + + + + + + + + + + +
+
+
+
+ +

Source code for com.vmware.vapi.metadata.privilege_client

+#---------------------------------------------------------------------------
+# Copyright 2014 VMware, Inc.  All rights reserved.
+
+# AUTO GENERATED FILE -- DO NOT MODIFY!
+#
+# vAPI stub file for package com.vmware.vapi.metadata.privilege.
+#---------------------------------------------------------------------------
+
+"""
+The ``com.vmware.vapi.metadata.privilege_client`` module provides classes that
+expose privilege information for operation elements across all the service
+elements. 
+
+An entity has a unique identifier and a resource type. An entity can either be
+present in one of the parameter elements or if a parameter is a structure
+element, it could also be present in one of the field elements. 
+
+Privileges can be assigned to either operation elements or entities used in the
+operation element. A list of privileges can also be applied on a package
+element. This list of privileges would be used as a default for all the
+operation elements and the entities that do not have any defined privileges.
+
+"""
+
+__author__ = 'VMware, Inc.'
+__docformat__ = 'restructuredtext en'
+
+import sys
+
+from vmware.vapi.bindings import type
+from vmware.vapi.bindings.converter import TypeConverter
+from vmware.vapi.bindings.enum import Enum
+from vmware.vapi.bindings.error import VapiError
+from vmware.vapi.bindings.struct import VapiStruct
+from vmware.vapi.bindings.stub import VapiInterface, ApiInterfaceStub
+from vmware.vapi.bindings.common import raise_core_exception
+from vmware.vapi.data.validator import UnionValidator, HasFieldsOfValidator
+from vmware.vapi.exception import CoreException
+import com.vmware.vapi.std.errors_client
+import com.vmware.vapi.metadata_client
+
+
+
[docs]class ComponentData(VapiStruct): + """ + The ``ComponentData`` class contains the privilege information of the + component along with its fingerprint. + + .. tip:: + The arguments are used to initialize data attributes with the same + names. + """ + + + + def __init__(self, + info=None, + fingerprint=None, + ): + """ + :type info: :class:`ComponentInfo` + :param info: Privilege information of the component. This includes information + about all the modules in the component. + :type fingerprint: :class:`str` + :param fingerprint: Fingerprint of the metadata of the component. + + Privilege information could change when there is an infrastructure + update. Since the data present in :attr:`ComponentData.info` could + be quite large, ``fingerprint`` provides a convenient way to check + if the data for a particular component is updated. + + You should store the fingerprint associated with a component. After + an update, by invoking the :func:`Component.fingerprint` method, + you can retrieve the new fingerprint for the component. If the new + fingerprint and the previously stored fingerprint do not match, + clients can then use the :func:`Component.get` to retrieve the new + privilege information for the component. + """ + self.info = info + self.fingerprint = fingerprint + VapiStruct.__init__(self) +
+ComponentData._set_binding_type(type.StructType( + 'com.vmware.vapi.metadata.privilege.component_data', { + 'info': type.ReferenceType(sys.modules[__name__], 'ComponentInfo'), + 'fingerprint': type.StringType(), + }, + ComponentData, + False, + None)) + + + +
[docs]class ComponentInfo(VapiStruct): + """ + The ``ComponentInfo`` class contains the privilege information of a + component element. + + For an explanation of privilege information contained within component + elements, see :class:`Component`. + + .. tip:: + The arguments are used to initialize data attributes with the same + names. + """ + + + + def __init__(self, + packages=None, + ): + """ + :type packages: :class:`dict` of :class:`str` and :class:`PackageInfo` + :param packages: Privilege information of all the package elements. The key in the + :class:`dict` is the identifier of the package element and the + value in the :class:`dict` is the privilege information for the + package element. + + For an explanation of privilege information containment within + package elements, see :class:`Package`. + When clients pass a value of this class as a parameter, the key in + the attribute :class:`dict` must be an identifier for the resource + type: ``com.vmware.vapi.package``. When methods return a value of + this class as a return value, the key in the attribute + :class:`dict` will be an identifier for the resource type: + ``com.vmware.vapi.package``. + """ + self.packages = packages + VapiStruct.__init__(self) +
+ComponentInfo._set_binding_type(type.StructType( + 'com.vmware.vapi.metadata.privilege.component_info', { + 'packages': type.MapType(type.IdType(), type.ReferenceType(sys.modules[__name__], 'PackageInfo')), + }, + ComponentInfo, + False, + None)) + + + +
[docs]class OperationInfo(VapiStruct): + """ + The ``OperationInfo`` class contains privilege information of an operation + element. + + For an explanation of containment within operation elements, see + :class:`com.vmware.vapi.metadata.privilege.service_client.Operation`. + + .. tip:: + The arguments are used to initialize data attributes with the same + names. + """ + + + + def __init__(self, + privileges=None, + privilege_info=None, + ): + """ + :type privileges: :class:`list` of :class:`str` + :param privileges: List of all privileges assigned to the operation element. + :type privilege_info: :class:`list` of :class:`PrivilegeInfo` + :param privilege_info: Privilege information of all the parameter elements of the + operation element. For an explanation of containment of privilege + information within parameter elements, see :class:`PrivilegeInfo`. + """ + self.privileges = privileges + self.privilege_info = privilege_info + VapiStruct.__init__(self) +
+OperationInfo._set_binding_type(type.StructType( + 'com.vmware.vapi.metadata.privilege.operation_info', { + 'privileges': type.ListType(type.StringType()), + 'privilege_info': type.ListType(type.ReferenceType(sys.modules[__name__], 'PrivilegeInfo')), + }, + OperationInfo, + False, + None)) + + + +
[docs]class PackageInfo(VapiStruct): + """ + The ``PackageInfo`` class contains the privilege information of a package + element. + + For an explanation of privilege information contained within package + elements, see :class:`Package`. + + .. tip:: + The arguments are used to initialize data attributes with the same + names. + """ + + + + def __init__(self, + privileges=None, + services=None, + ): + """ + :type privileges: :class:`list` of :class:`str` + :param privileges: List of default privileges to be used for all the operations + present in this package. If a particular operation element has no + explicit privileges defined in the privilege definition file, these + privileges are used for enforcing authorization. + :type services: :class:`dict` of :class:`str` and :class:`ServiceInfo` + :param services: Information about all service elements contained in this package + element that contain privilege information. The key in the + :class:`dict` is the identifier of the service element and the + value in the :class:`dict` is the privilege information for the + service element. For an explanation of privilege information + containment within service elements, see :class:`Service`. + When clients pass a value of this class as a parameter, the key in + the attribute :class:`dict` must be an identifier for the resource + type: ``com.vmware.vapi.service``. When methods return a value of + this class as a return value, the key in the attribute + :class:`dict` will be an identifier for the resource type: + ``com.vmware.vapi.service``. + """ + self.privileges = privileges + self.services = services + VapiStruct.__init__(self) +
+PackageInfo._set_binding_type(type.StructType( + 'com.vmware.vapi.metadata.privilege.package_info', { + 'privileges': type.ListType(type.StringType()), + 'services': type.MapType(type.IdType(), type.ReferenceType(sys.modules[__name__], 'ServiceInfo')), + }, + PackageInfo, + False, + None)) + + + +
[docs]class PrivilegeInfo(VapiStruct): + """ + The ``PrivilegeInfo`` class contains the privilege information for a + parameter element in an operation element. + + .. tip:: + The arguments are used to initialize data attributes with the same + names. + """ + + + + def __init__(self, + property_path=None, + privileges=None, + ): + """ + :type property_path: :class:`str` + :param property_path: The ``propertyPath`` points to an entity that is used in the + operation element. An entity can either be present in one of the + parameter elements or if a parameter is a structure element, it + could also be present in one of the field elements. + + If the privilege is assigned to an entity used in the parameter, + ``propertyPath`` will just contain the name of the parameter field. + If the privilege is assigned to an entity in one of the field + elements of a parameter element that is a structure element, then + ``propertyPath`` will contain a path to the field element starting + from the parameter name. + :type privileges: :class:`list` of :class:`str` + :param privileges: List of privileges assigned to the entity that is being referred by + :attr:`PrivilegeInfo.property_path`. + """ + self.property_path = property_path + self.privileges = privileges + VapiStruct.__init__(self) +
+PrivilegeInfo._set_binding_type(type.StructType( + 'com.vmware.vapi.metadata.privilege.privilege_info', { + 'property_path': type.StringType(), + 'privileges': type.ListType(type.StringType()), + }, + PrivilegeInfo, + False, + None)) + + + +
[docs]class ServiceInfo(VapiStruct): + """ + The ``ServiceInfo`` class contains privilege information of a service + element. + + For an explanation of privilege information contained within service + elements, see :class:`Service`. + + .. tip:: + The arguments are used to initialize data attributes with the same + names. + """ + + + + def __init__(self, + operations=None, + ): + """ + :type operations: :class:`dict` of :class:`str` and :class:`OperationInfo` + :param operations: Information about all operation elements contained in this service + element that contain privilege information. The key in the + :class:`dict` is the identifier of the operation element and the + value in the :class:`dict` is the privilege information for the + operation element. + + For an explanation of containment of privilege information within + operation elements, see + :class:`com.vmware.vapi.metadata.privilege.service_client.Operation`. + When clients pass a value of this class as a parameter, the key in + the attribute :class:`dict` must be an identifier for the resource + type: ``com.vmware.vapi.operation``. When methods return a value of + this class as a return value, the key in the attribute + :class:`dict` will be an identifier for the resource type: + ``com.vmware.vapi.operation``. + """ + self.operations = operations + VapiStruct.__init__(self) +
+ServiceInfo._set_binding_type(type.StructType( + 'com.vmware.vapi.metadata.privilege.service_info', { + 'operations': type.MapType(type.IdType(), type.ReferenceType(sys.modules[__name__], 'OperationInfo')), + }, + ServiceInfo, + False, + None)) + + + +
[docs]class Component(VapiInterface): + """ + The ``Component`` class provides methods to retrieve privilege information + of a component element. + + A component element is said to contain privilege information if any one of + package elements in it contains privilege information. + """ + RESOURCE_TYPE = "com.vmware.vapi.component" + """ + Resource type for vAPI component. + + """ + + def __init__(self, config): + """ + :type config: :class:`vmware.vapi.bindings.stub.StubConfiguration` + :param config: Configuration to be used for creating the stub. + """ + VapiInterface.__init__(self, config, _ComponentStub) + + +
[docs] def list(self): + """ + Returns the identifiers for the component elements that have privilege + information. + + + :rtype: :class:`list` of :class:`str` + :return: The list of identifiers for the component elements that have + privilege information. + The return value will contain identifiers for the resource type: + ``com.vmware.vapi.component``. + """ + return self._invoke('list', None) +
+
[docs] def get(self, + component_id, + ): + """ + Retrieves privilege information about the component element + corresponding to ``component_id``. + + The :class:`ComponentData` contains the privilege information about the + component element and its fingerprint. It contains information about + all the package elements that belong to this component element. + + :type component_id: :class:`str` + :param component_id: Identifier of the component element. + The parameter must be an identifier for the resource type: + ``com.vmware.vapi.component``. + :rtype: :class:`ComponentData` + :return: The :class:`ComponentData` instance that corresponds to + ``component_id`` + :raise: :class:`com.vmware.vapi.std.errors_client.NotFound` + if the component element associated with ``component_id`` does not + have any privilege information. + """ + return self._invoke('get', + { + 'component_id': component_id, + }) +
+
[docs] def fingerprint(self, + component_id, + ): + """ + Retrieves the fingerprint computed from the privilege metadata of the + component element corresponding to ``component_id``. + + The fingerprint provides clients an efficient way to check if the + metadata for a particular component has been modified on the server. + The client can do this by comparing the result of this operation with + the fingerprint returned in the result of :func:`Component.get`. + + :type component_id: :class:`str` + :param component_id: Identifier of the component element. + The parameter must be an identifier for the resource type: + ``com.vmware.vapi.component``. + :rtype: :class:`str` + :return: The fingerprint computed from the privilege metadata of the + component. + :raise: :class:`com.vmware.vapi.std.errors_client.NotFound` + if the component element associated with ``component_id`` does not + have any privilege information. + """ + return self._invoke('fingerprint', + { + 'component_id': component_id, + }) +
+
[docs]class Package(VapiInterface): + """ + The ``Package`` class provides methods to retrieve privilege information of + a package element. + + A package element is said to contain privilege information if there is a + default privilege assigned to all service elements contained in the package + element or if one of the operation elements contained in one of the service + elements in this package element has privilege information. + """ + RESOURCE_TYPE = "com.vmware.vapi.package" + """ + Resource type for package. + + """ + + def __init__(self, config): + """ + :type config: :class:`vmware.vapi.bindings.stub.StubConfiguration` + :param config: Configuration to be used for creating the stub. + """ + VapiInterface.__init__(self, config, _PackageStub) + + +
[docs] def list(self): + """ + Returns the identifiers for the package elements that have privilege + information. + + + :rtype: :class:`list` of :class:`str` + :return: The list of identifiers for the package elements that have + privilege information. + The return value will contain identifiers for the resource type: + ``com.vmware.vapi.package``. + """ + return self._invoke('list', None) +
+
[docs] def get(self, + package_id, + ): + """ + Retrieves privilege information about the package element corresponding + to ``package_id``. + + :type package_id: :class:`str` + :param package_id: Identifier of the package element. + The parameter must be an identifier for the resource type: + ``com.vmware.vapi.package``. + :rtype: :class:`PackageInfo` + :return: The :class:`PackageInfo` instance that corresponds to + ``package_id`` + :raise: :class:`com.vmware.vapi.std.errors_client.NotFound` + if the package element associated with ``package_id`` does not have + any privilege information. + """ + return self._invoke('get', + { + 'package_id': package_id, + }) +
+
[docs]class Service(VapiInterface): + """ + The ``Service`` class provides methods to retrieve privilege information of + a service element. + + A service element is said to contain privilege information if one of the + operation elements contained in this service element has privilege + information. + """ + RESOURCE_TYPE = "com.vmware.vapi.service" + """ + Resource type for service. + + """ + + def __init__(self, config): + """ + :type config: :class:`vmware.vapi.bindings.stub.StubConfiguration` + :param config: Configuration to be used for creating the stub. + """ + VapiInterface.__init__(self, config, _ServiceStub) + + +
[docs] def list(self): + """ + Returns the identifiers for the service elements that have privilege + information. + + + :rtype: :class:`list` of :class:`str` + :return: The list of identifiers for the service elements that have + privilege information. + The return value will contain identifiers for the resource type: + ``com.vmware.vapi.service``. + """ + return self._invoke('list', None) +
+
[docs] def get(self, + service_id, + ): + """ + Retrieves privilege information about the service element corresponding + to ``service_id``. + + :type service_id: :class:`str` + :param service_id: Identifier of the service element. + The parameter must be an identifier for the resource type: + ``com.vmware.vapi.service``. + :rtype: :class:`ServiceInfo` + :return: The :class:`ServiceInfo` instance that corresponds to + ``service_id`` + :raise: :class:`com.vmware.vapi.std.errors_client.NotFound` + if the service element associated with ``service_id`` does not have + any privilege information. + """ + return self._invoke('get', + { + 'service_id': service_id, + }) +
+
[docs]class Source(VapiInterface): + """ + The ``Source`` class provides methods to manage the sources of privilege + metadata information. + + The interface definition language infrastructure provides tools to generate + various kinds of metadata in JSON format from the interface definition + files and additional properties files. One of the generated files contains + privilege information. The generated file can be registered as a source of + metadata. + + The privilege file contains all the data present in the interface + definition files. Each privilege file contains data about one component + element. When a privilege file is added as a source, each source + contributes only one component element's metadata. + + Privilege metadata can also be discovered from a remote server that + supports the privilege metadata classes (see + :mod:`com.vmware.vapi.metadata.privilege_client`). Since multiple + components can be registered with a single metadata server, when a remote + server is registered as a source, that source can contribute more than one + component. + """ + RESOURCE_TYPE = "com.vmware.vapi.metadata.privilege.source" + """ + Resource type for metadata source. + + """ + + def __init__(self, config): + """ + :type config: :class:`vmware.vapi.bindings.stub.StubConfiguration` + :param config: Configuration to be used for creating the stub. + """ + VapiInterface.__init__(self, config, _SourceStub) + +
[docs] class Info(VapiStruct): + """ + The ``Source.Info`` class contains the metadata source information. + + .. tip:: + The arguments are used to initialize data attributes with the same + names. + """ + + _validator_list = [ + UnionValidator( + 'type', + { + 'FILE' : [('filepath', True)], + 'REMOTE' : [('address', True)], + } + ), + ] + + + def __init__(self, + description=None, + type=None, + filepath=None, + address=None, + ): + """ + :type description: :class:`str` + :param description: English language human readable description of the source. + :type type: :class:`com.vmware.vapi.metadata_client.SourceType` + :param type: Type of the metadata source. + :type filepath: :class:`str` + :param filepath: Absolute file path of the privilege metadata file that has the + privilege information about one component element. The ``filePath`` + is the path to the file in the server's filesystem. + This attribute is optional and it is only relevant when the value + of ``type`` is null. + :type address: :class:`str` + :param address: Connection information for the remote server. This must be in the + format http(s)://IP:port/namespace. + + The remote server must support the classes in the + :mod:`com.vmware.vapi.metadata.privilege_client` module. It must + expose privilege information of one or more components. + This attribute is optional and it is only relevant when the value + of ``type`` is null. + """ + self.description = description + self.type = type + self.filepath = filepath + self.address = address + VapiStruct.__init__(self) +
+ Info._set_binding_type(type.StructType( + 'com.vmware.vapi.metadata.privilege.source.info', { + 'description': type.StringType(), + 'type': type.ReferenceType(com.vmware.vapi.metadata_client, 'SourceType'), + 'filepath': type.OptionalType(type.StringType()), + 'address': type.OptionalType(type.URIType()), + }, + Info, + False, + None)) + +
[docs] class CreateSpec(VapiStruct): + """ + The ``Source.CreateSpec`` class contains the registration information of a + privilege source. + + .. tip:: + The arguments are used to initialize data attributes with the same + names. + """ + + _validator_list = [ + UnionValidator( + 'type', + { + 'FILE' : [('filepath', True)], + 'REMOTE' : [('address', True)], + } + ), + ] + + + def __init__(self, + description=None, + type=None, + filepath=None, + address=None, + ): + """ + :type description: :class:`str` + :param description: English language human readable description of the source. + :type type: :class:`com.vmware.vapi.metadata_client.SourceType` + :param type: Type of the metadata source. + :type filepath: :class:`str` + :param filepath: Absolute file path of the metamodel metadata file that has the + metamodel information about one component element. + This attribute is optional and it is only relevant when the value + of ``type`` is + :attr:`com.vmware.vapi.metadata_client.SourceType.FILE`. + :type address: :class:`str` + :param address: Connection information of the remote server. This should be of the + format http(s)://IP:port/namespace. + + The remote server should contain the classes in + :mod:`com.vmware.vapi.metadata.metamodel_client` module. It could + expose metamodel information of one or more components. + This attribute is optional and it is only relevant when the value + of ``type`` is + :attr:`com.vmware.vapi.metadata_client.SourceType.REMOTE`. + """ + self.description = description + self.type = type + self.filepath = filepath + self.address = address + VapiStruct.__init__(self) +
+ CreateSpec._set_binding_type(type.StructType( + 'com.vmware.vapi.metadata.privilege.source.create_spec', { + 'description': type.StringType(), + 'type': type.ReferenceType(com.vmware.vapi.metadata_client, 'SourceType'), + 'filepath': type.OptionalType(type.StringType()), + 'address': type.OptionalType(type.URIType()), + }, + CreateSpec, + False, + None)) + + +
[docs] def create(self, + source_id, + spec, + ): + """ + Creates a new metadata source. Once the server validates the + registration information of the metadata source, the privilege metadata + is retrieved from the source. This populates elements in all the + classes defined in :mod:`com.vmware.vapi.metadata.privilege_client` + module. + + :type source_id: :class:`str` + :param source_id: metadata source identifier. + The parameter must be an identifier for the resource type: + ``com.vmware.vapi.metadata.privilege.source``. + :type spec: :class:`Source.CreateSpec` + :param spec: create specification. + :raise: :class:`com.vmware.vapi.std.errors_client.AlreadyExists` + if the metadata source identifier is already registered with the + infrastructure. + :raise: :class:`com.vmware.vapi.std.errors_client.InvalidArgument` + if the type of the source specified in null is invalid. + :raise: :class:`com.vmware.vapi.std.errors_client.InvalidArgument` + if the file specified in null is not a valid JSON file or if the + format of the privilege metadata in the JSON file is invalid. + :raise: :class:`com.vmware.vapi.std.errors_client.InvalidArgument` + if the URI specified in null is unreachable or if there is a + transport protocol or message protocol mismatch between the client + and the server or if the remote server do not have classes present + in :mod:`com.vmware.vapi.metadata.privilege_client` module. + :raise: :class:`com.vmware.vapi.std.errors_client.NotFound` + if the file specified in null does not exist. + """ + return self._invoke('create', + { + 'source_id': source_id, + 'spec': spec, + }) +
+
[docs] def delete(self, + source_id, + ): + """ + Deletes an existing privilege metadata source from the infrastructure. + + :type source_id: :class:`str` + :param source_id: Identifier of the metadata source. + The parameter must be an identifier for the resource type: + ``com.vmware.vapi.metadata.privilege.source``. + :raise: :class:`com.vmware.vapi.std.errors_client.NotFound` + if the metadata source associated with ``source_id`` is not found. + """ + return self._invoke('delete', + { + 'source_id': source_id, + }) +
+
[docs] def get(self, + source_id, + ): + """ + Retrieves information about the metadata source corresponding to + ``source_id``. + + :type source_id: :class:`str` + :param source_id: Identifier of the metadata source. + The parameter must be an identifier for the resource type: + ``com.vmware.vapi.metadata.privilege.source``. + :rtype: :class:`Source.Info` + :return: The :class:`Source.Info` instance that corresponds to ``source_id`` + :raise: :class:`com.vmware.vapi.std.errors_client.NotFound` + if the metadata source associated with ``source_id`` is not found. + """ + return self._invoke('get', + { + 'source_id': source_id, + }) +
+
[docs] def list(self): + """ + Returns the identifiers of the metadata sources currently registered + with the infrastructure. + + + :rtype: :class:`list` of :class:`str` + :return: The list of identifiers for metadata sources currently registered. + The return value will contain identifiers for the resource type: + ``com.vmware.vapi.metadata.privilege.source``. + """ + return self._invoke('list', None) +
+
[docs] def reload(self, + source_id=None, + ): + """ + Reloads the privilege metadata from all the metadata sources or of a + particular metadata source if ``source_id`` is specified. + + :type source_id: :class:`str` or ``None`` + :param source_id: Identifier of the metadata source. + The parameter must be an identifier for the resource type: + ``com.vmware.vapi.metadata.privilege.source``. + If unspecified, all the metadata sources are reloaded. + :raise: :class:`com.vmware.vapi.std.errors_client.NotFound` + if the metadata source associated with ``source_id`` is not found. + """ + return self._invoke('reload', + { + 'source_id': source_id, + }) +
+
[docs] def fingerprint(self, + source_id=None, + ): + """ + Returns the aggregate fingerprint of metadata from all the metadata + sources or from a particular metadata source if ``source_id`` is + specified. + + :type source_id: :class:`str` or ``None`` + :param source_id: Identifier of the metadata source. + The parameter must be an identifier for the resource type: + ``com.vmware.vapi.metadata.privilege.source``. + If unspecified, the fingerprint of all the metadata sources is + returned. + :rtype: :class:`str` + :return: Aggregate fingerprint of all the metadata sources or of a + particular metadata source. + :raise: :class:`com.vmware.vapi.std.errors_client.NotFound` + if the metadata source associated with ``source_id`` is not found. + """ + return self._invoke('fingerprint', + { + 'source_id': source_id, + }) +
+class _ComponentStub(ApiInterfaceStub): + def __init__(self, config): + # properties for list operation + list_input_type = type.StructType('operation-input', {}) + list_error_dict = {} + list_input_validator_list = [ + ] + list_output_validator_list = [ + ] + + # properties for get operation + get_input_type = type.StructType('operation-input', { + 'component_id': type.IdType(resource_types='com.vmware.vapi.component'), + }) + get_error_dict = { + 'com.vmware.vapi.std.errors.not_found': + type.ReferenceType(com.vmware.vapi.std.errors_client, 'NotFound'), + + } + get_input_validator_list = [ + ] + get_output_validator_list = [ + ] + + # properties for fingerprint operation + fingerprint_input_type = type.StructType('operation-input', { + 'component_id': type.IdType(resource_types='com.vmware.vapi.component'), + }) + fingerprint_error_dict = { + 'com.vmware.vapi.std.errors.not_found': + type.ReferenceType(com.vmware.vapi.std.errors_client, 'NotFound'), + + } + fingerprint_input_validator_list = [ + ] + fingerprint_output_validator_list = [ + ] + + operations = { + 'list': { + 'input_type': list_input_type, + 'output_type': type.ListType(type.IdType()), + 'errors': list_error_dict, + 'input_validator_list': list_input_validator_list, + 'output_validator_list': list_output_validator_list, + }, + 'get': { + 'input_type': get_input_type, + 'output_type': type.ReferenceType(sys.modules[__name__], 'ComponentData'), + 'errors': get_error_dict, + 'input_validator_list': get_input_validator_list, + 'output_validator_list': get_output_validator_list, + }, + 'fingerprint': { + 'input_type': fingerprint_input_type, + 'output_type': type.StringType(), + 'errors': fingerprint_error_dict, + 'input_validator_list': fingerprint_input_validator_list, + 'output_validator_list': fingerprint_output_validator_list, + }, + } + ApiInterfaceStub.__init__(self, iface_name='com.vmware.vapi.metadata.privilege.component', + config=config, + operations=operations) +class _PackageStub(ApiInterfaceStub): + def __init__(self, config): + # properties for list operation + list_input_type = type.StructType('operation-input', {}) + list_error_dict = {} + list_input_validator_list = [ + ] + list_output_validator_list = [ + ] + + # properties for get operation + get_input_type = type.StructType('operation-input', { + 'package_id': type.IdType(resource_types='com.vmware.vapi.package'), + }) + get_error_dict = { + 'com.vmware.vapi.std.errors.not_found': + type.ReferenceType(com.vmware.vapi.std.errors_client, 'NotFound'), + + } + get_input_validator_list = [ + ] + get_output_validator_list = [ + ] + + operations = { + 'list': { + 'input_type': list_input_type, + 'output_type': type.ListType(type.IdType()), + 'errors': list_error_dict, + 'input_validator_list': list_input_validator_list, + 'output_validator_list': list_output_validator_list, + }, + 'get': { + 'input_type': get_input_type, + 'output_type': type.ReferenceType(sys.modules[__name__], 'PackageInfo'), + 'errors': get_error_dict, + 'input_validator_list': get_input_validator_list, + 'output_validator_list': get_output_validator_list, + }, + } + ApiInterfaceStub.__init__(self, iface_name='com.vmware.vapi.metadata.privilege.package', + config=config, + operations=operations) +class _ServiceStub(ApiInterfaceStub): + def __init__(self, config): + # properties for list operation + list_input_type = type.StructType('operation-input', {}) + list_error_dict = {} + list_input_validator_list = [ + ] + list_output_validator_list = [ + ] + + # properties for get operation + get_input_type = type.StructType('operation-input', { + 'service_id': type.IdType(resource_types='com.vmware.vapi.service'), + }) + get_error_dict = { + 'com.vmware.vapi.std.errors.not_found': + type.ReferenceType(com.vmware.vapi.std.errors_client, 'NotFound'), + + } + get_input_validator_list = [ + ] + get_output_validator_list = [ + ] + + operations = { + 'list': { + 'input_type': list_input_type, + 'output_type': type.ListType(type.IdType()), + 'errors': list_error_dict, + 'input_validator_list': list_input_validator_list, + 'output_validator_list': list_output_validator_list, + }, + 'get': { + 'input_type': get_input_type, + 'output_type': type.ReferenceType(sys.modules[__name__], 'ServiceInfo'), + 'errors': get_error_dict, + 'input_validator_list': get_input_validator_list, + 'output_validator_list': get_output_validator_list, + }, + } + ApiInterfaceStub.__init__(self, iface_name='com.vmware.vapi.metadata.privilege.service', + config=config, + operations=operations) +class _SourceStub(ApiInterfaceStub): + def __init__(self, config): + # properties for create operation + create_input_type = type.StructType('operation-input', { + 'source_id': type.IdType(resource_types='com.vmware.vapi.metadata.privilege.source'), + 'spec': type.ReferenceType(sys.modules[__name__], 'Source.CreateSpec'), + }) + create_error_dict = { + 'com.vmware.vapi.std.errors.already_exists': + type.ReferenceType(com.vmware.vapi.std.errors_client, 'AlreadyExists'), + 'com.vmware.vapi.std.errors.invalid_argument': + type.ReferenceType(com.vmware.vapi.std.errors_client, 'InvalidArgument'), + 'com.vmware.vapi.std.errors.not_found': + type.ReferenceType(com.vmware.vapi.std.errors_client, 'NotFound'), + + } + create_input_validator_list = [ + ] + create_output_validator_list = [ + ] + + # properties for delete operation + delete_input_type = type.StructType('operation-input', { + 'source_id': type.IdType(resource_types='com.vmware.vapi.metadata.privilege.source'), + }) + delete_error_dict = { + 'com.vmware.vapi.std.errors.not_found': + type.ReferenceType(com.vmware.vapi.std.errors_client, 'NotFound'), + + } + delete_input_validator_list = [ + ] + delete_output_validator_list = [ + ] + + # properties for get operation + get_input_type = type.StructType('operation-input', { + 'source_id': type.IdType(resource_types='com.vmware.vapi.metadata.privilege.source'), + }) + get_error_dict = { + 'com.vmware.vapi.std.errors.not_found': + type.ReferenceType(com.vmware.vapi.std.errors_client, 'NotFound'), + + } + get_input_validator_list = [ + ] + get_output_validator_list = [ + ] + + # properties for list operation + list_input_type = type.StructType('operation-input', {}) + list_error_dict = {} + list_input_validator_list = [ + ] + list_output_validator_list = [ + ] + + # properties for reload operation + reload_input_type = type.StructType('operation-input', { + 'source_id': type.OptionalType(type.IdType()), + }) + reload_error_dict = { + 'com.vmware.vapi.std.errors.not_found': + type.ReferenceType(com.vmware.vapi.std.errors_client, 'NotFound'), + + } + reload_input_validator_list = [ + ] + reload_output_validator_list = [ + ] + + # properties for fingerprint operation + fingerprint_input_type = type.StructType('operation-input', { + 'source_id': type.OptionalType(type.IdType()), + }) + fingerprint_error_dict = { + 'com.vmware.vapi.std.errors.not_found': + type.ReferenceType(com.vmware.vapi.std.errors_client, 'NotFound'), + + } + fingerprint_input_validator_list = [ + ] + fingerprint_output_validator_list = [ + ] + + operations = { + 'create': { + 'input_type': create_input_type, + 'output_type': type.VoidType(), + 'errors': create_error_dict, + 'input_validator_list': create_input_validator_list, + 'output_validator_list': create_output_validator_list, + }, + 'delete': { + 'input_type': delete_input_type, + 'output_type': type.VoidType(), + 'errors': delete_error_dict, + 'input_validator_list': delete_input_validator_list, + 'output_validator_list': delete_output_validator_list, + }, + 'get': { + 'input_type': get_input_type, + 'output_type': type.ReferenceType(sys.modules[__name__], 'Source.Info'), + 'errors': get_error_dict, + 'input_validator_list': get_input_validator_list, + 'output_validator_list': get_output_validator_list, + }, + 'list': { + 'input_type': list_input_type, + 'output_type': type.ListType(type.IdType()), + 'errors': list_error_dict, + 'input_validator_list': list_input_validator_list, + 'output_validator_list': list_output_validator_list, + }, + 'reload': { + 'input_type': reload_input_type, + 'output_type': type.VoidType(), + 'errors': reload_error_dict, + 'input_validator_list': reload_input_validator_list, + 'output_validator_list': reload_output_validator_list, + }, + 'fingerprint': { + 'input_type': fingerprint_input_type, + 'output_type': type.StringType(), + 'errors': fingerprint_error_dict, + 'input_validator_list': fingerprint_input_validator_list, + 'output_validator_list': fingerprint_output_validator_list, + }, + } + ApiInterfaceStub.__init__(self, iface_name='com.vmware.vapi.metadata.privilege.source', + config=config, + operations=operations) +
+ +
+
+
+
+
+ + +
+
+
+
+ + + + \ No newline at end of file diff --git a/vsphere/6.0/_modules/com/vmware/vapi/metadata_client.html b/vsphere/6.0/_modules/com/vmware/vapi/metadata_client.html new file mode 100644 index 00000000..37de0c70 --- /dev/null +++ b/vsphere/6.0/_modules/com/vmware/vapi/metadata_client.html @@ -0,0 +1,295 @@ + + + + + + + + + + com.vmware.vapi.metadata_client — vCloud Suite SDK for Python 6.0.0 documentation + + + + + + + + + + + + + + +
+
+
+
+ +

Source code for com.vmware.vapi.metadata_client

+#---------------------------------------------------------------------------
+# Copyright 2014 VMware, Inc.  All rights reserved.
+
+# AUTO GENERATED FILE -- DO NOT MODIFY!
+#
+# vAPI stub file for package com.vmware.vapi.metadata.
+#---------------------------------------------------------------------------
+
+"""
+The :mod:`com.vmware.vapi.metadata_client` module provides metadata classes.
+These are classes that provide different facets of API information. Clients can
+use these classes to: 
+
+* Discover APIs available in the infrastructure.
+* Fetch metadata that can be used to build presentation layers like CLI, REST,
+  etc.
+* Fetch authentication and authorization metadata.
+
+"""
+
+__author__ = 'VMware, Inc.'
+__docformat__ = 'restructuredtext en'
+
+import sys
+
+from vmware.vapi.bindings import type
+from vmware.vapi.bindings.converter import TypeConverter
+from vmware.vapi.bindings.enum import Enum
+from vmware.vapi.bindings.error import VapiError
+from vmware.vapi.bindings.struct import VapiStruct
+from vmware.vapi.bindings.stub import VapiInterface, ApiInterfaceStub
+from vmware.vapi.bindings.common import raise_core_exception
+from vmware.vapi.data.validator import UnionValidator, HasFieldsOfValidator
+from vmware.vapi.exception import CoreException
+
+
[docs]class SourceType(Enum): + """ + The ``SourceType`` class defines the types of sources for API metadata. You + specify the type of source when adding a metadata source to a metadata + service. + + .. note:: + This class represents an enumerated type in the interface language + definition. The class contains class attributes which represent the + values in the current version of the enumerated type. Newer versions of + the enumerated type may contain new values. To use new values of the + enumerated type in communication with a server that supports the newer + version of the API, you instantiate this class. See :ref:`enumerated + type description page <enumeration_description>`. + """ + FILE = None + """ + Indicates the metadata source is a JSON file. + + """ + REMOTE = None + """ + Indicates the metadata source is a remote server. + + """ + + def __init__(self, string): + """ + :type string: :class:`str` + :param string: String value for the :class:`SourceType` instance. + """ + Enum.__init__(string) +
+SourceType.FILE = SourceType('FILE') +SourceType.REMOTE = SourceType('REMOTE') +SourceType._set_binding_type(type.EnumType( + 'com.vmware.vapi.metadata.source_type', + SourceType)) + + + + +
[docs]class SourceCreateSpec(VapiStruct): + """ + The ``SourceCreateSpec`` class contains the registration information for a + metadata source. + + .. tip:: + The arguments are used to initialize data attributes with the same + names. + """ + + _validator_list = [ + UnionValidator( + 'type', + { + 'FILE' : [('filepath', True)], + 'REMOTE' : [('address', True)], + } + ), + ] + + + def __init__(self, + description=None, + type=None, + filepath=None, + address=None, + ): + """ + :type description: :class:`str` + :param description: English language human readable description of the source. + :type type: :class:`SourceType` + :param type: Type of the metadata source. + :type filepath: :class:`str` + :param filepath: Absolute file path of the metamodel metadata file that has the + metamodel information about one component element. + This attribute is optional and it is only relevant when the value + of ``type`` is :attr:`SourceType.FILE`. + :type address: :class:`str` + :param address: Connection information of the remote server. This should be of the + format http(s)://IP:port/namespace. + + The remote server should contain the classes in + :mod:`com.vmware.vapi.metadata.metamodel_client` module. It could + expose metamodel information of one or more components. + This attribute is optional and it is only relevant when the value + of ``type`` is :attr:`SourceType.REMOTE`. + """ + self.description = description + self.type = type + self.filepath = filepath + self.address = address + VapiStruct.__init__(self) +
+SourceCreateSpec._set_binding_type(type.StructType( + 'com.vmware.vapi.metadata.source_create_spec', { + 'description': type.StringType(), + 'type': type.ReferenceType(sys.modules[__name__], 'SourceType'), + 'filepath': type.OptionalType(type.StringType()), + 'address': type.OptionalType(type.URIType()), + }, + SourceCreateSpec, + False, + None)) + + + +
[docs]class SourceInfo(VapiStruct): + """ + Metadata source info + + .. tip:: + The arguments are used to initialize data attributes with the same + names. + """ + + _validator_list = [ + UnionValidator( + 'type', + { + 'FILE' : [('file_name', True)], + 'REMOTE' : [('remote_addr', True), ('msg_protocol', True)], + } + ), + ] + + + def __init__(self, + type=None, + file_name=None, + remote_addr=None, + msg_protocol=None, + ): + """ + :type type: :class:`SourceType` + :param type: Type of the metadata source + :type file_name: :class:`str` + :param file_name: Name of the metadata source file + This attribute is optional and it is only relevant when the value + of ``type`` is :attr:`SourceType.FILE`. + :type remote_addr: :class:`str` + :param remote_addr: Address of the remote metadata source + This attribute is optional and it is only relevant when the value + of ``type`` is :attr:`SourceType.REMOTE`. + :type msg_protocol: :class:`str` + :param msg_protocol: Message protocol to be used + This attribute is optional and it is only relevant when the value + of ``type`` is :attr:`SourceType.REMOTE`. + """ + self.type = type + self.file_name = file_name + self.remote_addr = remote_addr + self.msg_protocol = msg_protocol + VapiStruct.__init__(self) +
+SourceInfo._set_binding_type(type.StructType( + 'com.vmware.vapi.metadata.source_info', { + 'type': type.ReferenceType(sys.modules[__name__], 'SourceType'), + 'file_name': type.OptionalType(type.StringType()), + 'remote_addr': type.OptionalType(type.StringType()), + 'msg_protocol': type.OptionalType(type.StringType()), + }, + SourceInfo, + False, + None)) +
+ +
+
+
+
+
+ + +
+
+
+
+ + + + \ No newline at end of file diff --git a/vsphere/6.0/_modules/com/vmware/vapi/std/errors_client.html b/vsphere/6.0/_modules/com/vmware/vapi/std/errors_client.html new file mode 100644 index 00000000..d86654e9 --- /dev/null +++ b/vsphere/6.0/_modules/com/vmware/vapi/std/errors_client.html @@ -0,0 +1,2142 @@ + + + + + + + + + + com.vmware.vapi.std.errors_client — vCloud Suite SDK for Python 6.0.0 documentation + + + + + + + + + + + + + + +
+
+
+
+ +

Source code for com.vmware.vapi.std.errors_client

+#---------------------------------------------------------------------------
+# Copyright 2014 VMware, Inc.  All rights reserved.
+
+# AUTO GENERATED FILE -- DO NOT MODIFY!
+#
+# vAPI stub file for package com.vmware.vapi.std.errors.
+#---------------------------------------------------------------------------
+
+"""
+The ``com.vmware.vapi.std.errors_client`` module provides the standard
+exceptions that can be included in the list of exceptions in the specification
+of methods to indicate that the method might report those exceptions. It also
+provides some classes intended to be used as payload to provide additional
+information about those exceptions.
+
+"""
+
+__author__ = 'VMware, Inc.'
+__docformat__ = 'restructuredtext en'
+
+import sys
+
+from vmware.vapi.bindings import type
+from vmware.vapi.bindings.converter import TypeConverter
+from vmware.vapi.bindings.enum import Enum
+from vmware.vapi.bindings.error import VapiError
+from vmware.vapi.bindings.struct import VapiStruct
+from vmware.vapi.bindings.stub import VapiInterface, ApiInterfaceStub
+from vmware.vapi.bindings.common import raise_core_exception
+from vmware.vapi.data.validator import UnionValidator, HasFieldsOfValidator
+from vmware.vapi.exception import CoreException
+import com.vmware.vapi.std_client
+
+
+
[docs]class ArgumentLocations(VapiStruct): + """ + The ``ArgumentLocations`` class describes which part(s) of the input to the + method caused the exception. + + Some types of exceptions are caused by the value of one of the inputs to + the method, possibly due to an interaction with other inputs to the method. + This class is intended to be used as the payload to identify those inputs + when the method reports exceptions like :class:`InvalidArgument` or + :class:`NotFound`. See :attr:`Error.data`. + + .. tip:: + The arguments are used to initialize data attributes with the same + names. + """ + + + + def __init__(self, + primary=None, + secondary=None, + ): + """ + :type primary: :class:`str` + :param primary: String describing the location of the input that triggered the + exception. + :type secondary: :class:`list` of :class:`str` + :param secondary: :class:`list` (possibly empty) of strings describing the locations + of other inputs that caused the the primary input to trigger the + exception. + """ + self.primary = primary + self.secondary = secondary + VapiStruct.__init__(self) +
+ArgumentLocations._set_binding_type(type.StructType( + 'com.vmware.vapi.std.errors.argument_locations', { + 'primary': type.StringType(), + 'secondary': type.ListType(type.StringType()), + }, + ArgumentLocations, + False, + None)) + + + +
[docs]class FileLocations(VapiStruct): + """ + The ``FileLocations`` class identifies the file(s) that caused the method + to report the exception. + + Some types of exceptions are caused by a problem with one or more files. + This class is intended to be used as the payload to identify those files + when the method reports exceptions like :class:`NotFound`. See + :attr:`Error.data`. + + .. tip:: + The arguments are used to initialize data attributes with the same + names. + """ + + + + def __init__(self, + primary=None, + secondary=None, + ): + """ + :type primary: :class:`str` + :param primary: String identifying the file that triggered the exception. + :type secondary: :class:`list` of :class:`str` + :param secondary: :class:`list` (possibly empty) of strings identifying other files + that caused the primary file to trigger the exception. + """ + self.primary = primary + self.secondary = secondary + VapiStruct.__init__(self) +
+FileLocations._set_binding_type(type.StructType( + 'com.vmware.vapi.std.errors.file_locations', { + 'primary': type.StringType(), + 'secondary': type.ListType(type.StringType()), + }, + FileLocations, + False, + None)) + + + +
[docs]class TransientIndication(VapiStruct): + """ + The ``TransientIndication`` class indicates whether or not the exception is + transient. + + Some types of exceptions are transient in certain situtations and not + transient in other situtations. This exception payload can be used to + indicate to clients whether a particular exception is transient. See + :attr:`Error.data`. + + .. tip:: + The arguments are used to initialize data attributes with the same + names. + """ + + + + def __init__(self, + is_transient=None, + ): + """ + :type is_transient: :class:`bool` + :param is_transient: Indicates that the exception this class is attached to is + transient. + """ + self.is_transient = is_transient + VapiStruct.__init__(self) +
+TransientIndication._set_binding_type(type.StructType( + 'com.vmware.vapi.std.errors.transient_indication', { + 'is_transient': type.BooleanType(), + }, + TransientIndication, + False, + None)) + + + +
[docs]class Error(VapiError): + """ + The ``Error`` exception describes theattributes common to all standard + exceptions. + + This exception serves two purposes: + + #. It is the exception that clients in many programming languages can catch + to handle all standard exceptions. Typically those clients will display one + or more of the localizable messages from :attr:`Error.messages` to a human. + #. It is the exception that methods can report when they need to report + some exception, but the exception doesn't fit into any other standard + exception, and in fact the only reasonable way for a client to react to the + exception is to display the message(s) to a human. + + .. tip:: + The arguments are used to initialize data attributes with the same + names. + """ + + _qualname = 'Error' + + def __init__(self, + messages=None, + data=None, + ): + """ + :type messages: :class:`list` of :class:`com.vmware.vapi.std_client.LocalizableMessage` + :param messages: Stack of one or more localizable messages for human exception + consumers. + + The message at the top of the stack (first in the list) describes + the exception from the perspective of the method the client + invoked. Each subsequent message in the stack describes the "cause" + of the prior message. + :type data: :class:`vmware.vapi.struct.VapiStruct` or ``None`` + :param data: Data to facilitate clients responding to the method reporting a + standard exception to indicating that it was unable to complete + successfully. + + Methods may provide data that clients can use when responding to + exceptions. Since the data that clients need may be specific to the + context of the method reporting the exception, different methods + that report the same exception may provide different data in the + exception. The documentation for each each method will describe + what, if any, data it provides for each exception it reports. The + :class:`ArgumentLocations`, :class:`FileLocations`, and + :class:`TransientIndication` classes are intended as possible + values for this attribute. + :class:`com.vmware.vapi.std_client.DynamicID` may also be useful as + a value for this attribute (although that is not its primary + purpose). Some classes may provide their own specific classes for + use as the value of this attribute when reporting exceptions from + their methods. + Some methods will not set this attribute when reporting exceptions. + """ + + self.messages = messages + self.data = data + VapiError.__init__(self) +
+Error._set_binding_type(type.ErrorType( + 'com.vmware.vapi.std.errors.error', { + 'messages': type.ListType(type.ReferenceType(com.vmware.vapi.std_client, 'LocalizableMessage')), + 'data': type.OptionalType(type.DynamicStructType('vmware.vapi.dynamic_struct', {}, VapiStruct)), + }, + Error)) + + + +
[docs]class Unsupported(Error): + """ + The ``Unsupported`` exception indicates that the method is not supported by + the class. + + Examples: + + * Trying to hot-plug a CPU when the current configuration of the VM does + not support hot-plugging of CPUs. + * Trying to change the memory size to a value that is not within the + acceptable guest memory bounds supported by the virtual machine's host. + + .. tip:: + The arguments are used to initialize data attributes with the same + names. + """ + + _qualname = 'Unsupported' + + def __init__(self, + messages=None, + data=None, + ): + """ + :type messages: :class:`list` of :class:`com.vmware.vapi.std_client.LocalizableMessage` + :param messages: Stack of one or more localizable messages for human exception + consumers. + + The message at the top of the stack (first in the list) describes + the exception from the perspective of the method the client + invoked. Each subsequent message in the stack describes the "cause" + of the prior message. + :type data: :class:`vmware.vapi.struct.VapiStruct` or ``None`` + :param data: Data to facilitate clients responding to the method reporting a + standard exception to indicating that it was unable to complete + successfully. + + Methods may provide data that clients can use when responding to + exceptions. Since the data that clients need may be specific to the + context of the method reporting the exception, different methods + that report the same exception may provide different data in the + exception. The documentation for each each method will describe + what, if any, data it provides for each exception it reports. The + :class:`ArgumentLocations`, :class:`FileLocations`, and + :class:`TransientIndication` classes are intended as possible + values for this attribute. + :class:`com.vmware.vapi.std_client.DynamicID` may also be useful as + a value for this attribute (although that is not its primary + purpose). Some classes may provide their own specific classes for + use as the value of this attribute when reporting exceptions from + their methods. + Some methods will not set this attribute when reporting exceptions. + """ + + Error.__init__( + self, + messages=messages, + data=data, + ) +
+Unsupported._set_binding_type(type.ErrorType( + 'com.vmware.vapi.std.errors.unsupported', { + 'messages': type.ListType(type.ReferenceType(com.vmware.vapi.std_client, 'LocalizableMessage')), + 'data': type.OptionalType(type.DynamicStructType('vmware.vapi.dynamic_struct', {}, VapiStruct)), + }, + Unsupported)) + + + +
[docs]class UnexpectedInput(Error): + """ + The ``UnexpectedInput`` exception indicates that the request contained a + parameter or attribute whose name is not known by the server. + + Every method expects parameters with known names. Some of those parameters + may be (or contain) classes, and the method expects those classes to + contain attributes with known names. If the method receives parameters or + attributes with names that is does not expect, this exception may be + reported. + + This exception can be reported by the API infrastructure for any method, + but it is specific to the API infrastructure, and should never be reported + by the implementation of any method. + + Examples: + + * A client using stubs generated from the interface specification for + version2 of a class invokes the method passing one or more parameters that + were added in version2, but they are communicating with a server that only + supports version1 of the class. + * A client provides an unexpected parameter or attribute name when invoking + the method using a dynamic interface (for example REST). + + .. tip:: + The arguments are used to initialize data attributes with the same + names. + """ + + _qualname = 'UnexpectedInput' + + def __init__(self, + messages=None, + data=None, + ): + """ + :type messages: :class:`list` of :class:`com.vmware.vapi.std_client.LocalizableMessage` + :param messages: Stack of one or more localizable messages for human exception + consumers. + + The message at the top of the stack (first in the list) describes + the exception from the perspective of the method the client + invoked. Each subsequent message in the stack describes the "cause" + of the prior message. + :type data: :class:`vmware.vapi.struct.VapiStruct` or ``None`` + :param data: Data to facilitate clients responding to the method reporting a + standard exception to indicating that it was unable to complete + successfully. + + Methods may provide data that clients can use when responding to + exceptions. Since the data that clients need may be specific to the + context of the method reporting the exception, different methods + that report the same exception may provide different data in the + exception. The documentation for each each method will describe + what, if any, data it provides for each exception it reports. The + :class:`ArgumentLocations`, :class:`FileLocations`, and + :class:`TransientIndication` classes are intended as possible + values for this attribute. + :class:`com.vmware.vapi.std_client.DynamicID` may also be useful as + a value for this attribute (although that is not its primary + purpose). Some classes may provide their own specific classes for + use as the value of this attribute when reporting exceptions from + their methods. + Some methods will not set this attribute when reporting exceptions. + """ + + Error.__init__( + self, + messages=messages, + data=data, + ) +
+UnexpectedInput._set_binding_type(type.ErrorType( + 'com.vmware.vapi.std.errors.unexpected_input', { + 'messages': type.ListType(type.ReferenceType(com.vmware.vapi.std_client, 'LocalizableMessage')), + 'data': type.OptionalType(type.DynamicStructType('vmware.vapi.dynamic_struct', {}, VapiStruct)), + }, + UnexpectedInput)) + + + +
[docs]class Unauthorized(Error): + """ + The ``Unauthorized`` exception indicates that the user is not authorized to + perform the method. + + API requests may include a security context containing user credentials. + For example, the user credentials could be a SAML token, a user name and + password, or the session identifier for a previously established session. + Invoking the method may require that the user identified by those + credentials has particular privileges on the method or on one or more + resource identifiers passed to the method. + + Examples: + + * The method requires that the user have one or more privileges on the + method, but the user identified by the credentials in the security context + does not have the required privileges. + * The method requires that the user have one or more privileges on a + resource identifier passed to the method, but the user identified by the + credentials in the security context does not have the required privileges. + + + + + + Counterexamples: + + * The SAML token in the request's security context has expired. A + :class:`Unauthenticated` exception would be used instead. + * The user name and password in the request's security context are invalid. + The :class:`Unauthenticated` exception would be used instead. + * The session identifier in the request's security context identifies a + session that has expired. The :class:`Unauthenticated` exception would be + used instead. + + + + For security reasons, the :attr:`Error.data` attribute in this exception is + None, and the :attr:`Error.messages` attribute in this exception does not + disclose why the user is not authorized to perform the method. For example + the messages would not disclose which privilege the user did not have or + which resource identifier the user did not have the required privilege to + access. The API documentation should indicate what privileges are required. + + .. tip:: + The arguments are used to initialize data attributes with the same + names. + """ + + _qualname = 'Unauthorized' + + def __init__(self, + messages=None, + data=None, + ): + """ + :type messages: :class:`list` of :class:`com.vmware.vapi.std_client.LocalizableMessage` + :param messages: Stack of one or more localizable messages for human exception + consumers. + + The message at the top of the stack (first in the list) describes + the exception from the perspective of the method the client + invoked. Each subsequent message in the stack describes the "cause" + of the prior message. + :type data: :class:`vmware.vapi.struct.VapiStruct` or ``None`` + :param data: Data to facilitate clients responding to the method reporting a + standard exception to indicating that it was unable to complete + successfully. + + Methods may provide data that clients can use when responding to + exceptions. Since the data that clients need may be specific to the + context of the method reporting the exception, different methods + that report the same exception may provide different data in the + exception. The documentation for each each method will describe + what, if any, data it provides for each exception it reports. The + :class:`ArgumentLocations`, :class:`FileLocations`, and + :class:`TransientIndication` classes are intended as possible + values for this attribute. + :class:`com.vmware.vapi.std_client.DynamicID` may also be useful as + a value for this attribute (although that is not its primary + purpose). Some classes may provide their own specific classes for + use as the value of this attribute when reporting exceptions from + their methods. + Some methods will not set this attribute when reporting exceptions. + """ + + Error.__init__( + self, + messages=messages, + data=data, + ) +
+Unauthorized._set_binding_type(type.ErrorType( + 'com.vmware.vapi.std.errors.unauthorized', { + 'messages': type.ListType(type.ReferenceType(com.vmware.vapi.std_client, 'LocalizableMessage')), + 'data': type.OptionalType(type.DynamicStructType('vmware.vapi.dynamic_struct', {}, VapiStruct)), + }, + Unauthorized)) + + + +
[docs]class Unauthenticated(Error): + """ + The ``Unauthenticated`` exception indicates that the method requires + authentication and the user is not authenticated. + + API requests may include a security context containing user credentials. + For example, the user credentials could be a SAML token, a user name and + password, or the session identifier for a previously established session. + + Examples: + + * The SAML token in the request's security context has expired. + * The user name and password in the request's security context are invalid. + * The session identifier in the request's security context identifies a + session that has expired. + + Counterexamples: + + * The user is authenticated but isn't authorized to perform the requested + method. The :class:`Unauthorized` exception would be used instead. + + + + For security reasons, the :attr:`Error.data` attribute in this exception is + None, and the :attr:`Error.messages` attribute in this exception does not + disclose which part of the security context is correct or incorrect. For + example the messages would not disclose whether a username or a password is + valid or invalid, but only that a combination of username and password is + invalid. + + .. tip:: + The arguments are used to initialize data attributes with the same + names. + """ + + _qualname = 'Unauthenticated' + + def __init__(self, + messages=None, + data=None, + ): + """ + :type messages: :class:`list` of :class:`com.vmware.vapi.std_client.LocalizableMessage` + :param messages: Stack of one or more localizable messages for human exception + consumers. + + The message at the top of the stack (first in the list) describes + the exception from the perspective of the method the client + invoked. Each subsequent message in the stack describes the "cause" + of the prior message. + :type data: :class:`vmware.vapi.struct.VapiStruct` or ``None`` + :param data: Data to facilitate clients responding to the method reporting a + standard exception to indicating that it was unable to complete + successfully. + + Methods may provide data that clients can use when responding to + exceptions. Since the data that clients need may be specific to the + context of the method reporting the exception, different methods + that report the same exception may provide different data in the + exception. The documentation for each each method will describe + what, if any, data it provides for each exception it reports. The + :class:`ArgumentLocations`, :class:`FileLocations`, and + :class:`TransientIndication` classes are intended as possible + values for this attribute. + :class:`com.vmware.vapi.std_client.DynamicID` may also be useful as + a value for this attribute (although that is not its primary + purpose). Some classes may provide their own specific classes for + use as the value of this attribute when reporting exceptions from + their methods. + Some methods will not set this attribute when reporting exceptions. + """ + + Error.__init__( + self, + messages=messages, + data=data, + ) +
+Unauthenticated._set_binding_type(type.ErrorType( + 'com.vmware.vapi.std.errors.unauthenticated', { + 'messages': type.ListType(type.ReferenceType(com.vmware.vapi.std_client, 'LocalizableMessage')), + 'data': type.OptionalType(type.DynamicStructType('vmware.vapi.dynamic_struct', {}, VapiStruct)), + }, + Unauthenticated)) + + + +
[docs]class UnableToAllocateResource(Error): + """ + The ``UnableToAllocateResource`` exception indicates that the method failed + because it was unable to allocate or acquire a required resource. + + Examples: + + * Trying to power on a virtual machine when there are not enough licenses + to do so. + * Trying to power on a virtual machine that would violate a resource usage + policy. + + + + Counterexamples: + + * Trying to power off a virtual machine that is in the process of being + powered on. A :class:`ResourceBusy` exception would be used instead. + * Trying to remove a VMFS datastore when the is a virtual machine + registered on any host attached to the datastore. The + :class:`ResourceInUse` exception would be used instead. + * Trying to add a virtual switch if the physical network adapter being + bridged is already in use. The :class:`ResourceInUse` exception would be + used instead. + * Attempt to invoke some method on a virtual machine when the virtual + machine's configuration file is not accessible (for example due to a + storage APD condition). The :class:`ResourceInaccessible` exception would + be used instead. + + .. tip:: + The arguments are used to initialize data attributes with the same + names. + """ + + _qualname = 'UnableToAllocateResource' + + def __init__(self, + messages=None, + data=None, + ): + """ + :type messages: :class:`list` of :class:`com.vmware.vapi.std_client.LocalizableMessage` + :param messages: Stack of one or more localizable messages for human exception + consumers. + + The message at the top of the stack (first in the list) describes + the exception from the perspective of the method the client + invoked. Each subsequent message in the stack describes the "cause" + of the prior message. + :type data: :class:`vmware.vapi.struct.VapiStruct` or ``None`` + :param data: Data to facilitate clients responding to the method reporting a + standard exception to indicating that it was unable to complete + successfully. + + Methods may provide data that clients can use when responding to + exceptions. Since the data that clients need may be specific to the + context of the method reporting the exception, different methods + that report the same exception may provide different data in the + exception. The documentation for each each method will describe + what, if any, data it provides for each exception it reports. The + :class:`ArgumentLocations`, :class:`FileLocations`, and + :class:`TransientIndication` classes are intended as possible + values for this attribute. + :class:`com.vmware.vapi.std_client.DynamicID` may also be useful as + a value for this attribute (although that is not its primary + purpose). Some classes may provide their own specific classes for + use as the value of this attribute when reporting exceptions from + their methods. + Some methods will not set this attribute when reporting exceptions. + """ + + Error.__init__( + self, + messages=messages, + data=data, + ) +
+UnableToAllocateResource._set_binding_type(type.ErrorType( + 'com.vmware.vapi.std.errors.unable_to_allocate_resource', { + 'messages': type.ListType(type.ReferenceType(com.vmware.vapi.std_client, 'LocalizableMessage')), + 'data': type.OptionalType(type.DynamicStructType('vmware.vapi.dynamic_struct', {}, VapiStruct)), + }, + UnableToAllocateResource)) + + + +
[docs]class TimedOut(Error): + """ + The ``TimedOut`` exception indicates that the method did not complete + within the allowed amount of time. The allowed amount of time might be: + + * provided by the client as an input parameter. + * a fixed limit of the class implementation that is a documented part of + the contract of the class. + * a configurable limit used by the implementation of the class. + * a dynamic limit computed by the implementation of the class. + + The method may or may not complete after the ``TimedOut`` exception was + reported. + + Examples: + + * The method was unable to complete within the timeout duration specified + by a parameter of the method. + + + + Counterexamples: + + * A server implementation that puts requests into a queue before + dispatching them might delete a request from the queue if it doesn't get + dispatched within *n* minutes. The :class:`ServiceUnavailable` exception + would be used instead. + + .. tip:: + The arguments are used to initialize data attributes with the same + names. + """ + + _qualname = 'TimedOut' + + def __init__(self, + messages=None, + data=None, + ): + """ + :type messages: :class:`list` of :class:`com.vmware.vapi.std_client.LocalizableMessage` + :param messages: Stack of one or more localizable messages for human exception + consumers. + + The message at the top of the stack (first in the list) describes + the exception from the perspective of the method the client + invoked. Each subsequent message in the stack describes the "cause" + of the prior message. + :type data: :class:`vmware.vapi.struct.VapiStruct` or ``None`` + :param data: Data to facilitate clients responding to the method reporting a + standard exception to indicating that it was unable to complete + successfully. + + Methods may provide data that clients can use when responding to + exceptions. Since the data that clients need may be specific to the + context of the method reporting the exception, different methods + that report the same exception may provide different data in the + exception. The documentation for each each method will describe + what, if any, data it provides for each exception it reports. The + :class:`ArgumentLocations`, :class:`FileLocations`, and + :class:`TransientIndication` classes are intended as possible + values for this attribute. + :class:`com.vmware.vapi.std_client.DynamicID` may also be useful as + a value for this attribute (although that is not its primary + purpose). Some classes may provide their own specific classes for + use as the value of this attribute when reporting exceptions from + their methods. + Some methods will not set this attribute when reporting exceptions. + """ + + Error.__init__( + self, + messages=messages, + data=data, + ) +
+TimedOut._set_binding_type(type.ErrorType( + 'com.vmware.vapi.std.errors.timed_out', { + 'messages': type.ListType(type.ReferenceType(com.vmware.vapi.std_client, 'LocalizableMessage')), + 'data': type.OptionalType(type.DynamicStructType('vmware.vapi.dynamic_struct', {}, VapiStruct)), + }, + TimedOut)) + + + +
[docs]class ServiceUnavailable(Error): + """ + The ``ServiceUnavailable`` exception indicates that the class is + unavailable. + + Examples: + + * Attempt to invoke a method when the server is too busy. + * Attempt to invoke a method when the server is undergoing maintenance. + * An method fails to contact VMware Tools running inside the virtual + machine. + + + + Counterexamples: + + * A client provides an invalid service or operation identifier when + invoking the method using a dynamic interface (for example REST). The + :class:`OperationNotFound` exception would be used instead. + * A client invokes the method from the class, but that class has not been + installed. The :class:`OperationNotFound` exception would be used instead. + + .. tip:: + The arguments are used to initialize data attributes with the same + names. + """ + + _qualname = 'ServiceUnavailable' + + def __init__(self, + messages=None, + data=None, + ): + """ + :type messages: :class:`list` of :class:`com.vmware.vapi.std_client.LocalizableMessage` + :param messages: Stack of one or more localizable messages for human exception + consumers. + + The message at the top of the stack (first in the list) describes + the exception from the perspective of the method the client + invoked. Each subsequent message in the stack describes the "cause" + of the prior message. + :type data: :class:`vmware.vapi.struct.VapiStruct` or ``None`` + :param data: Data to facilitate clients responding to the method reporting a + standard exception to indicating that it was unable to complete + successfully. + + Methods may provide data that clients can use when responding to + exceptions. Since the data that clients need may be specific to the + context of the method reporting the exception, different methods + that report the same exception may provide different data in the + exception. The documentation for each each method will describe + what, if any, data it provides for each exception it reports. The + :class:`ArgumentLocations`, :class:`FileLocations`, and + :class:`TransientIndication` classes are intended as possible + values for this attribute. + :class:`com.vmware.vapi.std_client.DynamicID` may also be useful as + a value for this attribute (although that is not its primary + purpose). Some classes may provide their own specific classes for + use as the value of this attribute when reporting exceptions from + their methods. + Some methods will not set this attribute when reporting exceptions. + """ + + Error.__init__( + self, + messages=messages, + data=data, + ) +
+ServiceUnavailable._set_binding_type(type.ErrorType( + 'com.vmware.vapi.std.errors.service_unavailable', { + 'messages': type.ListType(type.ReferenceType(com.vmware.vapi.std_client, 'LocalizableMessage')), + 'data': type.OptionalType(type.DynamicStructType('vmware.vapi.dynamic_struct', {}, VapiStruct)), + }, + ServiceUnavailable)) + + + +
[docs]class ResourceInaccessible(Error): + """ + The ``ResourceInaccessible`` exception indicates that the method could not + be completed because an entity is not accessible. + + Examples: + + * Attempt to invoke some method on a virtual machine when the virtual + machine's configuration file is not accessible (for example due to a + storage APD condition). + + + + Counterexamples: + + * Attempt to invoke some method when the server is too busy. The + :class:`ServiceUnavailable` exception would be used instead. + * Attempt to invoke some method when the server is undergoing maintenance. + The :class:`ServiceUnavailable` exception would be used instead. + * Some method fails to contact VMware Tools running inside the virtual + machine. The :class:`ServiceUnavailable` exception would be used instead. + + .. tip:: + The arguments are used to initialize data attributes with the same + names. + """ + + _qualname = 'ResourceInaccessible' + + def __init__(self, + messages=None, + data=None, + ): + """ + :type messages: :class:`list` of :class:`com.vmware.vapi.std_client.LocalizableMessage` + :param messages: Stack of one or more localizable messages for human exception + consumers. + + The message at the top of the stack (first in the list) describes + the exception from the perspective of the method the client + invoked. Each subsequent message in the stack describes the "cause" + of the prior message. + :type data: :class:`vmware.vapi.struct.VapiStruct` or ``None`` + :param data: Data to facilitate clients responding to the method reporting a + standard exception to indicating that it was unable to complete + successfully. + + Methods may provide data that clients can use when responding to + exceptions. Since the data that clients need may be specific to the + context of the method reporting the exception, different methods + that report the same exception may provide different data in the + exception. The documentation for each each method will describe + what, if any, data it provides for each exception it reports. The + :class:`ArgumentLocations`, :class:`FileLocations`, and + :class:`TransientIndication` classes are intended as possible + values for this attribute. + :class:`com.vmware.vapi.std_client.DynamicID` may also be useful as + a value for this attribute (although that is not its primary + purpose). Some classes may provide their own specific classes for + use as the value of this attribute when reporting exceptions from + their methods. + Some methods will not set this attribute when reporting exceptions. + """ + + Error.__init__( + self, + messages=messages, + data=data, + ) +
+ResourceInaccessible._set_binding_type(type.ErrorType( + 'com.vmware.vapi.std.errors.resource_inaccessible', { + 'messages': type.ListType(type.ReferenceType(com.vmware.vapi.std_client, 'LocalizableMessage')), + 'data': type.OptionalType(type.DynamicStructType('vmware.vapi.dynamic_struct', {}, VapiStruct)), + }, + ResourceInaccessible)) + + + +
[docs]class ResourceInUse(Error): + """ + The ``ResourceInUse`` exception indicates that the method could not be + completed because a resource is in use. + + Examples: + + * Trying to remove a VMFS datastore when the is a virtual machine + registered on any host attached to the datastore. + * Trying to add a virtual switch if the physical network adapter being + bridged is already in use. + + + + Counterexamples: + + * Trying to power off a virtual machine that is in the process of being + powered on. The :class:`ResourceBusy` exception would be used instead. + + .. tip:: + The arguments are used to initialize data attributes with the same + names. + """ + + _qualname = 'ResourceInUse' + + def __init__(self, + messages=None, + data=None, + ): + """ + :type messages: :class:`list` of :class:`com.vmware.vapi.std_client.LocalizableMessage` + :param messages: Stack of one or more localizable messages for human exception + consumers. + + The message at the top of the stack (first in the list) describes + the exception from the perspective of the method the client + invoked. Each subsequent message in the stack describes the "cause" + of the prior message. + :type data: :class:`vmware.vapi.struct.VapiStruct` or ``None`` + :param data: Data to facilitate clients responding to the method reporting a + standard exception to indicating that it was unable to complete + successfully. + + Methods may provide data that clients can use when responding to + exceptions. Since the data that clients need may be specific to the + context of the method reporting the exception, different methods + that report the same exception may provide different data in the + exception. The documentation for each each method will describe + what, if any, data it provides for each exception it reports. The + :class:`ArgumentLocations`, :class:`FileLocations`, and + :class:`TransientIndication` classes are intended as possible + values for this attribute. + :class:`com.vmware.vapi.std_client.DynamicID` may also be useful as + a value for this attribute (although that is not its primary + purpose). Some classes may provide their own specific classes for + use as the value of this attribute when reporting exceptions from + their methods. + Some methods will not set this attribute when reporting exceptions. + """ + + Error.__init__( + self, + messages=messages, + data=data, + ) +
+ResourceInUse._set_binding_type(type.ErrorType( + 'com.vmware.vapi.std.errors.resource_in_use', { + 'messages': type.ListType(type.ReferenceType(com.vmware.vapi.std_client, 'LocalizableMessage')), + 'data': type.OptionalType(type.DynamicStructType('vmware.vapi.dynamic_struct', {}, VapiStruct)), + }, + ResourceInUse)) + + + +
[docs]class ResourceBusy(Error): + """ + The ``ResourceBusy`` exception indicates that the method could not be + completed because a resource it needs is busy. + + Examples: + + * Trying to power off a virtual machine that is in the process of being + powered on. + + + + Counterexamples: + + * Trying to remove a VMFS datastore when there is a virtual machine + registered on any host attached to the datastore. The + :class:`ResourceInUse` exception would be used instead. + + .. tip:: + The arguments are used to initialize data attributes with the same + names. + """ + + _qualname = 'ResourceBusy' + + def __init__(self, + messages=None, + data=None, + ): + """ + :type messages: :class:`list` of :class:`com.vmware.vapi.std_client.LocalizableMessage` + :param messages: Stack of one or more localizable messages for human exception + consumers. + + The message at the top of the stack (first in the list) describes + the exception from the perspective of the method the client + invoked. Each subsequent message in the stack describes the "cause" + of the prior message. + :type data: :class:`vmware.vapi.struct.VapiStruct` or ``None`` + :param data: Data to facilitate clients responding to the method reporting a + standard exception to indicating that it was unable to complete + successfully. + + Methods may provide data that clients can use when responding to + exceptions. Since the data that clients need may be specific to the + context of the method reporting the exception, different methods + that report the same exception may provide different data in the + exception. The documentation for each each method will describe + what, if any, data it provides for each exception it reports. The + :class:`ArgumentLocations`, :class:`FileLocations`, and + :class:`TransientIndication` classes are intended as possible + values for this attribute. + :class:`com.vmware.vapi.std_client.DynamicID` may also be useful as + a value for this attribute (although that is not its primary + purpose). Some classes may provide their own specific classes for + use as the value of this attribute when reporting exceptions from + their methods. + Some methods will not set this attribute when reporting exceptions. + """ + + Error.__init__( + self, + messages=messages, + data=data, + ) +
+ResourceBusy._set_binding_type(type.ErrorType( + 'com.vmware.vapi.std.errors.resource_busy', { + 'messages': type.ListType(type.ReferenceType(com.vmware.vapi.std_client, 'LocalizableMessage')), + 'data': type.OptionalType(type.DynamicStructType('vmware.vapi.dynamic_struct', {}, VapiStruct)), + }, + ResourceBusy)) + + + +
[docs]class OperationNotFound(Error): + """ + The ``OperationNotFound`` exception indicates that the method specified in + the request could not be found. + + Every API request specifies a service identifier and an operation + identifier along with the parameters. If the API infrastructure is unable + to find the requested class or method it reports this exception. + + This exception can be reported by the API infrastructure for any method, + but it is specific to the API infrastructure, and should never be reported + by the implementation of any method. + + Examples: + + * A client provides an invalid service or operation identifier when + invoking the method using a dynamic interface (for example REST). + * A client invokes the method from a class, but that class has not been + installed. + + + + Counterexamples: + + * A client invokes a task scheduling method, but provides an invalid + service identifier or operation identifier. The :class:`NotFound` exception + would be used instead. + + .. tip:: + The arguments are used to initialize data attributes with the same + names. + """ + + _qualname = 'OperationNotFound' + + def __init__(self, + messages=None, + data=None, + ): + """ + :type messages: :class:`list` of :class:`com.vmware.vapi.std_client.LocalizableMessage` + :param messages: Stack of one or more localizable messages for human exception + consumers. + + The message at the top of the stack (first in the list) describes + the exception from the perspective of the method the client + invoked. Each subsequent message in the stack describes the "cause" + of the prior message. + :type data: :class:`vmware.vapi.struct.VapiStruct` or ``None`` + :param data: Data to facilitate clients responding to the method reporting a + standard exception to indicating that it was unable to complete + successfully. + + Methods may provide data that clients can use when responding to + exceptions. Since the data that clients need may be specific to the + context of the method reporting the exception, different methods + that report the same exception may provide different data in the + exception. The documentation for each each method will describe + what, if any, data it provides for each exception it reports. The + :class:`ArgumentLocations`, :class:`FileLocations`, and + :class:`TransientIndication` classes are intended as possible + values for this attribute. + :class:`com.vmware.vapi.std_client.DynamicID` may also be useful as + a value for this attribute (although that is not its primary + purpose). Some classes may provide their own specific classes for + use as the value of this attribute when reporting exceptions from + their methods. + Some methods will not set this attribute when reporting exceptions. + """ + + Error.__init__( + self, + messages=messages, + data=data, + ) +
+OperationNotFound._set_binding_type(type.ErrorType( + 'com.vmware.vapi.std.errors.operation_not_found', { + 'messages': type.ListType(type.ReferenceType(com.vmware.vapi.std_client, 'LocalizableMessage')), + 'data': type.OptionalType(type.DynamicStructType('vmware.vapi.dynamic_struct', {}, VapiStruct)), + }, + OperationNotFound)) + + + +
[docs]class NotFound(Error): + """ + The ``NotFound`` exception indicates that a specified element could not be + found. + + Examples: + + * Invoke the method to retrieve information about a virtual machine, + passing an id that does not identify an existing virtual machine. + * Invoke the method to modify the configuration of a virtual nic, passing + an id that does not identify an existing virtual nic in the specified + virtual machine. + * Invoke the method to remove a vswitch, passing an id that does not + identify an existing vswitch. + + .. tip:: + The arguments are used to initialize data attributes with the same + names. + """ + + _qualname = 'NotFound' + + def __init__(self, + messages=None, + data=None, + ): + """ + :type messages: :class:`list` of :class:`com.vmware.vapi.std_client.LocalizableMessage` + :param messages: Stack of one or more localizable messages for human exception + consumers. + + The message at the top of the stack (first in the list) describes + the exception from the perspective of the method the client + invoked. Each subsequent message in the stack describes the "cause" + of the prior message. + :type data: :class:`vmware.vapi.struct.VapiStruct` or ``None`` + :param data: Data to facilitate clients responding to the method reporting a + standard exception to indicating that it was unable to complete + successfully. + + Methods may provide data that clients can use when responding to + exceptions. Since the data that clients need may be specific to the + context of the method reporting the exception, different methods + that report the same exception may provide different data in the + exception. The documentation for each each method will describe + what, if any, data it provides for each exception it reports. The + :class:`ArgumentLocations`, :class:`FileLocations`, and + :class:`TransientIndication` classes are intended as possible + values for this attribute. + :class:`com.vmware.vapi.std_client.DynamicID` may also be useful as + a value for this attribute (although that is not its primary + purpose). Some classes may provide their own specific classes for + use as the value of this attribute when reporting exceptions from + their methods. + Some methods will not set this attribute when reporting exceptions. + """ + + Error.__init__( + self, + messages=messages, + data=data, + ) +
+NotFound._set_binding_type(type.ErrorType( + 'com.vmware.vapi.std.errors.not_found', { + 'messages': type.ListType(type.ReferenceType(com.vmware.vapi.std_client, 'LocalizableMessage')), + 'data': type.OptionalType(type.DynamicStructType('vmware.vapi.dynamic_struct', {}, VapiStruct)), + }, + NotFound)) + + + +
[docs]class NotAllowedInCurrentState(Error): + """ + The ``NotAllowedInCurrentState`` exception indicates that the requested + method is not allowed with a resource or service in its current state. This + could be because the method is performing a configuration change that is + not allowed in the current state or because method itself is not allowed in + the current state. + + Examples: + + * Trying to add a virtual device that cannot be hot plugged to a running + virtual machine. + * Trying to upgrade the virtual hardware version for a suspended virtual + machine. + * Trying to power off, reset, or suspend a virtual machine that is not + powered on. + + + + Counterexamples: + + * Trying to power off a virtual machine that is in the process of being + powered on. The :class:`ResourceBusy` exception would be used instead. + + .. tip:: + The arguments are used to initialize data attributes with the same + names. + """ + + _qualname = 'NotAllowedInCurrentState' + + def __init__(self, + messages=None, + data=None, + ): + """ + :type messages: :class:`list` of :class:`com.vmware.vapi.std_client.LocalizableMessage` + :param messages: Stack of one or more localizable messages for human exception + consumers. + + The message at the top of the stack (first in the list) describes + the exception from the perspective of the method the client + invoked. Each subsequent message in the stack describes the "cause" + of the prior message. + :type data: :class:`vmware.vapi.struct.VapiStruct` or ``None`` + :param data: Data to facilitate clients responding to the method reporting a + standard exception to indicating that it was unable to complete + successfully. + + Methods may provide data that clients can use when responding to + exceptions. Since the data that clients need may be specific to the + context of the method reporting the exception, different methods + that report the same exception may provide different data in the + exception. The documentation for each each method will describe + what, if any, data it provides for each exception it reports. The + :class:`ArgumentLocations`, :class:`FileLocations`, and + :class:`TransientIndication` classes are intended as possible + values for this attribute. + :class:`com.vmware.vapi.std_client.DynamicID` may also be useful as + a value for this attribute (although that is not its primary + purpose). Some classes may provide their own specific classes for + use as the value of this attribute when reporting exceptions from + their methods. + Some methods will not set this attribute when reporting exceptions. + """ + + Error.__init__( + self, + messages=messages, + data=data, + ) +
+NotAllowedInCurrentState._set_binding_type(type.ErrorType( + 'com.vmware.vapi.std.errors.not_allowed_in_current_state', { + 'messages': type.ListType(type.ReferenceType(com.vmware.vapi.std_client, 'LocalizableMessage')), + 'data': type.OptionalType(type.DynamicStructType('vmware.vapi.dynamic_struct', {}, VapiStruct)), + }, + NotAllowedInCurrentState)) + + + +
[docs]class InvalidRequest(Error): + """ + The ``InvalidRequest`` exception indicates that the request is malformed in + such a way that the server is unable to process it. + + Examples: + + * The XML in a SOAP request is not well-formed so the server cannot parse + the request. + * The XML in a SOAP request is well-formed but does not match the structure + required by the SOAP specification. + * A JSON-RPC request is not valid JSON. + * The JSON sent in a JSON-RPC request is not a valid JSON-RPC Request + object. + * The Request object from a JSON-RPC request does not match the structure + required by the API infrastructure. + + + + Counterexamples: + + * The parameter has a value that is not with the required range. The + :class:`InvalidArgument` exception would be used instead. + * The name of the method specified in the request doesn't not match any + known method. The :class:`NotFound` exception would be used instead. + + + + Some transport protocols (for example JSON-RPC) include their own mechanism + for reporting these kinds of errors, and the API infrastructure for a + programming language may expose the errors using a language specific + mechanism, so this exception might not be used. + + .. tip:: + The arguments are used to initialize data attributes with the same + names. + """ + + _qualname = 'InvalidRequest' + + def __init__(self, + messages=None, + data=None, + ): + """ + :type messages: :class:`list` of :class:`com.vmware.vapi.std_client.LocalizableMessage` + :param messages: Stack of one or more localizable messages for human exception + consumers. + + The message at the top of the stack (first in the list) describes + the exception from the perspective of the method the client + invoked. Each subsequent message in the stack describes the "cause" + of the prior message. + :type data: :class:`vmware.vapi.struct.VapiStruct` or ``None`` + :param data: Data to facilitate clients responding to the method reporting a + standard exception to indicating that it was unable to complete + successfully. + + Methods may provide data that clients can use when responding to + exceptions. Since the data that clients need may be specific to the + context of the method reporting the exception, different methods + that report the same exception may provide different data in the + exception. The documentation for each each method will describe + what, if any, data it provides for each exception it reports. The + :class:`ArgumentLocations`, :class:`FileLocations`, and + :class:`TransientIndication` classes are intended as possible + values for this attribute. + :class:`com.vmware.vapi.std_client.DynamicID` may also be useful as + a value for this attribute (although that is not its primary + purpose). Some classes may provide their own specific classes for + use as the value of this attribute when reporting exceptions from + their methods. + Some methods will not set this attribute when reporting exceptions. + """ + + Error.__init__( + self, + messages=messages, + data=data, + ) +
+InvalidRequest._set_binding_type(type.ErrorType( + 'com.vmware.vapi.std.errors.invalid_request', { + 'messages': type.ListType(type.ReferenceType(com.vmware.vapi.std_client, 'LocalizableMessage')), + 'data': type.OptionalType(type.DynamicStructType('vmware.vapi.dynamic_struct', {}, VapiStruct)), + }, + InvalidRequest)) + + + +
[docs]class InvalidElementType(Error): + """ + The ``InvalidElementType`` exception indicates that the server was unable + to fulfil the request because an element of a specific type cannot be a + member of particular group. + + This exception could be reported, for example, if an attempt is made to put + an element into the wrong type of container. + + Examples: + + * Attempt to put a virtual machine into a folder that can only contain + hosts. + * Attempt to attach a SCSI virtual disk to an IDE port. + + Counterexamples: + + * A parameter has a value that is not of the expected type. The + :class:`InvalidArgument` exception would be used instead. + + .. tip:: + The arguments are used to initialize data attributes with the same + names. + """ + + _qualname = 'InvalidElementType' + + def __init__(self, + messages=None, + data=None, + ): + """ + :type messages: :class:`list` of :class:`com.vmware.vapi.std_client.LocalizableMessage` + :param messages: Stack of one or more localizable messages for human exception + consumers. + + The message at the top of the stack (first in the list) describes + the exception from the perspective of the method the client + invoked. Each subsequent message in the stack describes the "cause" + of the prior message. + :type data: :class:`vmware.vapi.struct.VapiStruct` or ``None`` + :param data: Data to facilitate clients responding to the method reporting a + standard exception to indicating that it was unable to complete + successfully. + + Methods may provide data that clients can use when responding to + exceptions. Since the data that clients need may be specific to the + context of the method reporting the exception, different methods + that report the same exception may provide different data in the + exception. The documentation for each each method will describe + what, if any, data it provides for each exception it reports. The + :class:`ArgumentLocations`, :class:`FileLocations`, and + :class:`TransientIndication` classes are intended as possible + values for this attribute. + :class:`com.vmware.vapi.std_client.DynamicID` may also be useful as + a value for this attribute (although that is not its primary + purpose). Some classes may provide their own specific classes for + use as the value of this attribute when reporting exceptions from + their methods. + Some methods will not set this attribute when reporting exceptions. + """ + + Error.__init__( + self, + messages=messages, + data=data, + ) +
+InvalidElementType._set_binding_type(type.ErrorType( + 'com.vmware.vapi.std.errors.invalid_element_type', { + 'messages': type.ListType(type.ReferenceType(com.vmware.vapi.std_client, 'LocalizableMessage')), + 'data': type.OptionalType(type.DynamicStructType('vmware.vapi.dynamic_struct', {}, VapiStruct)), + }, + InvalidElementType)) + + + +
[docs]class InvalidElementConfiguration(Error): + """ + The ``InvalidElementConfiguration`` exception indicates that an attempt to + modify the configuration of an element or a group containing the element + failed due to the configuraton of the element. A typical case is when the + method is am attempt to change the group membership of the element fails, + in which case a configuration change on the element may allow the group + membership change to succeed. + + Examples: + + * Attempt to move a host with a fault tolerant virtual machine out of a + cluster (i.e. make the host a standalone host). + * Attempt to remove a host from a DRS cluster without putting the host into + maintenance mode. + + .. tip:: + The arguments are used to initialize data attributes with the same + names. + """ + + _qualname = 'InvalidElementConfiguration' + + def __init__(self, + messages=None, + data=None, + ): + """ + :type messages: :class:`list` of :class:`com.vmware.vapi.std_client.LocalizableMessage` + :param messages: Stack of one or more localizable messages for human exception + consumers. + + The message at the top of the stack (first in the list) describes + the exception from the perspective of the method the client + invoked. Each subsequent message in the stack describes the "cause" + of the prior message. + :type data: :class:`vmware.vapi.struct.VapiStruct` or ``None`` + :param data: Data to facilitate clients responding to the method reporting a + standard exception to indicating that it was unable to complete + successfully. + + Methods may provide data that clients can use when responding to + exceptions. Since the data that clients need may be specific to the + context of the method reporting the exception, different methods + that report the same exception may provide different data in the + exception. The documentation for each each method will describe + what, if any, data it provides for each exception it reports. The + :class:`ArgumentLocations`, :class:`FileLocations`, and + :class:`TransientIndication` classes are intended as possible + values for this attribute. + :class:`com.vmware.vapi.std_client.DynamicID` may also be useful as + a value for this attribute (although that is not its primary + purpose). Some classes may provide their own specific classes for + use as the value of this attribute when reporting exceptions from + their methods. + Some methods will not set this attribute when reporting exceptions. + """ + + Error.__init__( + self, + messages=messages, + data=data, + ) +
+InvalidElementConfiguration._set_binding_type(type.ErrorType( + 'com.vmware.vapi.std.errors.invalid_element_configuration', { + 'messages': type.ListType(type.ReferenceType(com.vmware.vapi.std_client, 'LocalizableMessage')), + 'data': type.OptionalType(type.DynamicStructType('vmware.vapi.dynamic_struct', {}, VapiStruct)), + }, + InvalidElementConfiguration)) + + + +
[docs]class InvalidArgument(Error): + """ + The ``InvalidArgument`` exception indicates that the values received for + one or more parameters are not acceptable. + + This exception is reported by the API infrastructure, so it could occur in + response to the invocation of any method. It may also be reported as the + return value of method-specific validation. + + Examples: + + * A parameter has a value that is not of the expected type. + * A parameter has a value that is not in the required range. + * A parameter has a value that is not one of the specifically allowed + strings. + * One attribute of a class is the tag for a tagged union, and has a + specific value but another attribute of the class that is required to be + specified when the tag has that value is not specified, or another + attribute of the class that is required to be unspecified when the tag has + that value is specified. + + + + Counterexamples: + + * Trying to create a new tag in tag category when a tag with the specified + name already exists the tag category. The :class:`AlreadyExists` exception + would be used instead. + * Invoke the method to retrieve information about a virtual machine, + passing an id that does not identify an existing virtual machine. The + :class:`NotFound` exception would be used instead. + * Attempt to put a virtual machine into a folder that can only contain + hosts. The :class:`InvalidElementType` exception would be used instead. + * Attempt to attach a SCSI virtual disk to an IDE port. The + :class:`InvalidElementType` exception would be used instead. + + .. tip:: + The arguments are used to initialize data attributes with the same + names. + """ + + _qualname = 'InvalidArgument' + + def __init__(self, + messages=None, + data=None, + ): + """ + :type messages: :class:`list` of :class:`com.vmware.vapi.std_client.LocalizableMessage` + :param messages: Stack of one or more localizable messages for human exception + consumers. + + The message at the top of the stack (first in the list) describes + the exception from the perspective of the method the client + invoked. Each subsequent message in the stack describes the "cause" + of the prior message. + :type data: :class:`vmware.vapi.struct.VapiStruct` or ``None`` + :param data: Data to facilitate clients responding to the method reporting a + standard exception to indicating that it was unable to complete + successfully. + + Methods may provide data that clients can use when responding to + exceptions. Since the data that clients need may be specific to the + context of the method reporting the exception, different methods + that report the same exception may provide different data in the + exception. The documentation for each each method will describe + what, if any, data it provides for each exception it reports. The + :class:`ArgumentLocations`, :class:`FileLocations`, and + :class:`TransientIndication` classes are intended as possible + values for this attribute. + :class:`com.vmware.vapi.std_client.DynamicID` may also be useful as + a value for this attribute (although that is not its primary + purpose). Some classes may provide their own specific classes for + use as the value of this attribute when reporting exceptions from + their methods. + Some methods will not set this attribute when reporting exceptions. + """ + + Error.__init__( + self, + messages=messages, + data=data, + ) +
+InvalidArgument._set_binding_type(type.ErrorType( + 'com.vmware.vapi.std.errors.invalid_argument', { + 'messages': type.ListType(type.ReferenceType(com.vmware.vapi.std_client, 'LocalizableMessage')), + 'data': type.OptionalType(type.DynamicStructType('vmware.vapi.dynamic_struct', {}, VapiStruct)), + }, + InvalidArgument)) + + + +
[docs]class InternalServerError(Error): + """ + The ``InternalServerError`` exception indicates that the server encounters + an unexpected condition that prevented it from fulfilling the request. + + This exception is reported by the API infrastructure, so it could occur in + response to the invocation of any method. + + Examples: + + * The method returns a value whose type doesn't match the type type the + method says it should return. + * The method reports an exception that is not included in the list of + exceptions the method says that it can report. + + .. tip:: + The arguments are used to initialize data attributes with the same + names. + """ + + _qualname = 'InternalServerError' + + def __init__(self, + messages=None, + data=None, + ): + """ + :type messages: :class:`list` of :class:`com.vmware.vapi.std_client.LocalizableMessage` + :param messages: Stack of one or more localizable messages for human exception + consumers. + + The message at the top of the stack (first in the list) describes + the exception from the perspective of the method the client + invoked. Each subsequent message in the stack describes the "cause" + of the prior message. + :type data: :class:`vmware.vapi.struct.VapiStruct` or ``None`` + :param data: Data to facilitate clients responding to the method reporting a + standard exception to indicating that it was unable to complete + successfully. + + Methods may provide data that clients can use when responding to + exceptions. Since the data that clients need may be specific to the + context of the method reporting the exception, different methods + that report the same exception may provide different data in the + exception. The documentation for each each method will describe + what, if any, data it provides for each exception it reports. The + :class:`ArgumentLocations`, :class:`FileLocations`, and + :class:`TransientIndication` classes are intended as possible + values for this attribute. + :class:`com.vmware.vapi.std_client.DynamicID` may also be useful as + a value for this attribute (although that is not its primary + purpose). Some classes may provide their own specific classes for + use as the value of this attribute when reporting exceptions from + their methods. + Some methods will not set this attribute when reporting exceptions. + """ + + Error.__init__( + self, + messages=messages, + data=data, + ) +
+InternalServerError._set_binding_type(type.ErrorType( + 'com.vmware.vapi.std.errors.internal_server_error', { + 'messages': type.ListType(type.ReferenceType(com.vmware.vapi.std_client, 'LocalizableMessage')), + 'data': type.OptionalType(type.DynamicStructType('vmware.vapi.dynamic_struct', {}, VapiStruct)), + }, + InternalServerError)) + + + +
[docs]class FeatureInUse(Error): + """ + The ``FeatureInUse`` exception indicates that an action cannot be completed + because a feature is in use. + + Examples: + + * Trying to disable snapshots on a virtual machine which has a snapshot. + * Trying to downgrade a license that has licensed features that are in use. + + .. tip:: + The arguments are used to initialize data attributes with the same + names. + """ + + _qualname = 'FeatureInUse' + + def __init__(self, + messages=None, + data=None, + ): + """ + :type messages: :class:`list` of :class:`com.vmware.vapi.std_client.LocalizableMessage` + :param messages: Stack of one or more localizable messages for human exception + consumers. + + The message at the top of the stack (first in the list) describes + the exception from the perspective of the method the client + invoked. Each subsequent message in the stack describes the "cause" + of the prior message. + :type data: :class:`vmware.vapi.struct.VapiStruct` or ``None`` + :param data: Data to facilitate clients responding to the method reporting a + standard exception to indicating that it was unable to complete + successfully. + + Methods may provide data that clients can use when responding to + exceptions. Since the data that clients need may be specific to the + context of the method reporting the exception, different methods + that report the same exception may provide different data in the + exception. The documentation for each each method will describe + what, if any, data it provides for each exception it reports. The + :class:`ArgumentLocations`, :class:`FileLocations`, and + :class:`TransientIndication` classes are intended as possible + values for this attribute. + :class:`com.vmware.vapi.std_client.DynamicID` may also be useful as + a value for this attribute (although that is not its primary + purpose). Some classes may provide their own specific classes for + use as the value of this attribute when reporting exceptions from + their methods. + Some methods will not set this attribute when reporting exceptions. + """ + + Error.__init__( + self, + messages=messages, + data=data, + ) +
+FeatureInUse._set_binding_type(type.ErrorType( + 'com.vmware.vapi.std.errors.feature_in_use', { + 'messages': type.ListType(type.ReferenceType(com.vmware.vapi.std_client, 'LocalizableMessage')), + 'data': type.OptionalType(type.DynamicStructType('vmware.vapi.dynamic_struct', {}, VapiStruct)), + }, + FeatureInUse)) + + + +
[docs]class ConcurrentChange(Error): + """ + The ``ConcurrentChange`` exception indicates that a data structure, entity, + or resource has been modified since some earlier point in time. Typically + this happens when the client is doing the *write* portion of a + read-modify-write sequence and indicates that it wants the server to notify + it if the data in the server has changed after it did the *read*, so that + it can avoid overwriting that change inadvertantly. + + .. tip:: + The arguments are used to initialize data attributes with the same + names. + """ + + _qualname = 'ConcurrentChange' + + def __init__(self, + messages=None, + data=None, + ): + """ + :type messages: :class:`list` of :class:`com.vmware.vapi.std_client.LocalizableMessage` + :param messages: Stack of one or more localizable messages for human exception + consumers. + + The message at the top of the stack (first in the list) describes + the exception from the perspective of the method the client + invoked. Each subsequent message in the stack describes the "cause" + of the prior message. + :type data: :class:`vmware.vapi.struct.VapiStruct` or ``None`` + :param data: Data to facilitate clients responding to the method reporting a + standard exception to indicating that it was unable to complete + successfully. + + Methods may provide data that clients can use when responding to + exceptions. Since the data that clients need may be specific to the + context of the method reporting the exception, different methods + that report the same exception may provide different data in the + exception. The documentation for each each method will describe + what, if any, data it provides for each exception it reports. The + :class:`ArgumentLocations`, :class:`FileLocations`, and + :class:`TransientIndication` classes are intended as possible + values for this attribute. + :class:`com.vmware.vapi.std_client.DynamicID` may also be useful as + a value for this attribute (although that is not its primary + purpose). Some classes may provide their own specific classes for + use as the value of this attribute when reporting exceptions from + their methods. + Some methods will not set this attribute when reporting exceptions. + """ + + Error.__init__( + self, + messages=messages, + data=data, + ) +
+ConcurrentChange._set_binding_type(type.ErrorType( + 'com.vmware.vapi.std.errors.concurrent_change', { + 'messages': type.ListType(type.ReferenceType(com.vmware.vapi.std_client, 'LocalizableMessage')), + 'data': type.OptionalType(type.DynamicStructType('vmware.vapi.dynamic_struct', {}, VapiStruct)), + }, + ConcurrentChange)) + + + +
[docs]class Canceled(Error): + """ + The ``Canceled`` exception indicates that the method canceled itself in + response to an explicit request to do so. Methods being "canceled" for + other reasons (for example the client connection was closed, a time out + occured, or due to excessive resource consumption) should not report this + exception. + + Examples: + + * A user is monitoring the progress of the method in a GUI and sees that it + is likely to take longer than he is willing to wait and clicks the cancel + button. + * A user invokes the method using a command-line tool and decides that she + didn't really want to invoke that method, and presses CTRL-c. + + + + Counterexamples: + + * The client's connection to the server was closed. Reporting an exception + is pointless since the client will not receive the error response because + the connection has been closed. + * The request is taking longer than some amount of time. The + :class:`TimedOut` exception would be reported if the time was specified as + part of the input or is documented in the API contract. + + .. tip:: + The arguments are used to initialize data attributes with the same + names. + """ + + _qualname = 'Canceled' + + def __init__(self, + messages=None, + data=None, + ): + """ + :type messages: :class:`list` of :class:`com.vmware.vapi.std_client.LocalizableMessage` + :param messages: Stack of one or more localizable messages for human exception + consumers. + + The message at the top of the stack (first in the list) describes + the exception from the perspective of the method the client + invoked. Each subsequent message in the stack describes the "cause" + of the prior message. + :type data: :class:`vmware.vapi.struct.VapiStruct` or ``None`` + :param data: Data to facilitate clients responding to the method reporting a + standard exception to indicating that it was unable to complete + successfully. + + Methods may provide data that clients can use when responding to + exceptions. Since the data that clients need may be specific to the + context of the method reporting the exception, different methods + that report the same exception may provide different data in the + exception. The documentation for each each method will describe + what, if any, data it provides for each exception it reports. The + :class:`ArgumentLocations`, :class:`FileLocations`, and + :class:`TransientIndication` classes are intended as possible + values for this attribute. + :class:`com.vmware.vapi.std_client.DynamicID` may also be useful as + a value for this attribute (although that is not its primary + purpose). Some classes may provide their own specific classes for + use as the value of this attribute when reporting exceptions from + their methods. + Some methods will not set this attribute when reporting exceptions. + """ + + Error.__init__( + self, + messages=messages, + data=data, + ) +
+Canceled._set_binding_type(type.ErrorType( + 'com.vmware.vapi.std.errors.canceled', { + 'messages': type.ListType(type.ReferenceType(com.vmware.vapi.std_client, 'LocalizableMessage')), + 'data': type.OptionalType(type.DynamicStructType('vmware.vapi.dynamic_struct', {}, VapiStruct)), + }, + Canceled)) + + + +
[docs]class AlreadyInDesiredState(Error): + """ + The ``AlreadyInDesiredState`` exception indicates that an attempt to change + the state of a resource or service had no effect because the resource or + service is already in the desired state. + + Examples: + + * Trying to power on a virtual machine that is already powered on. + + .. tip:: + The arguments are used to initialize data attributes with the same + names. + """ + + _qualname = 'AlreadyInDesiredState' + + def __init__(self, + messages=None, + data=None, + ): + """ + :type messages: :class:`list` of :class:`com.vmware.vapi.std_client.LocalizableMessage` + :param messages: Stack of one or more localizable messages for human exception + consumers. + + The message at the top of the stack (first in the list) describes + the exception from the perspective of the method the client + invoked. Each subsequent message in the stack describes the "cause" + of the prior message. + :type data: :class:`vmware.vapi.struct.VapiStruct` or ``None`` + :param data: Data to facilitate clients responding to the method reporting a + standard exception to indicating that it was unable to complete + successfully. + + Methods may provide data that clients can use when responding to + exceptions. Since the data that clients need may be specific to the + context of the method reporting the exception, different methods + that report the same exception may provide different data in the + exception. The documentation for each each method will describe + what, if any, data it provides for each exception it reports. The + :class:`ArgumentLocations`, :class:`FileLocations`, and + :class:`TransientIndication` classes are intended as possible + values for this attribute. + :class:`com.vmware.vapi.std_client.DynamicID` may also be useful as + a value for this attribute (although that is not its primary + purpose). Some classes may provide their own specific classes for + use as the value of this attribute when reporting exceptions from + their methods. + Some methods will not set this attribute when reporting exceptions. + """ + + Error.__init__( + self, + messages=messages, + data=data, + ) +
+AlreadyInDesiredState._set_binding_type(type.ErrorType( + 'com.vmware.vapi.std.errors.already_in_desired_state', { + 'messages': type.ListType(type.ReferenceType(com.vmware.vapi.std_client, 'LocalizableMessage')), + 'data': type.OptionalType(type.DynamicStructType('vmware.vapi.dynamic_struct', {}, VapiStruct)), + }, + AlreadyInDesiredState)) + + + +
[docs]class AlreadyExists(Error): + """ + The ``AlreadyExists`` exception indicates that an attempt was made to + create an entity but the entity already exists. Typically the entity has a + name or identifier that is required to be unique in some context, but there + is already an entity with that name or identifier in that context. + + Examples: + + * Trying to create a new tag category when a tag category with the + specified name already exists. + * Trying to create a new tag in tag category when a tag with the specified + name already exists the tag category. + * Trying to create a LUN with a specific UUID on a node (for replication + purposes) when a LUN with that UUID already exists on the node. + * Trying to create a file in a directory or move or copy a file to a + directory when a file with that name already exists in the directory. + + .. tip:: + The arguments are used to initialize data attributes with the same + names. + """ + + _qualname = 'AlreadyExists' + + def __init__(self, + messages=None, + data=None, + ): + """ + :type messages: :class:`list` of :class:`com.vmware.vapi.std_client.LocalizableMessage` + :param messages: Stack of one or more localizable messages for human exception + consumers. + + The message at the top of the stack (first in the list) describes + the exception from the perspective of the method the client + invoked. Each subsequent message in the stack describes the "cause" + of the prior message. + :type data: :class:`vmware.vapi.struct.VapiStruct` or ``None`` + :param data: Data to facilitate clients responding to the method reporting a + standard exception to indicating that it was unable to complete + successfully. + + Methods may provide data that clients can use when responding to + exceptions. Since the data that clients need may be specific to the + context of the method reporting the exception, different methods + that report the same exception may provide different data in the + exception. The documentation for each each method will describe + what, if any, data it provides for each exception it reports. The + :class:`ArgumentLocations`, :class:`FileLocations`, and + :class:`TransientIndication` classes are intended as possible + values for this attribute. + :class:`com.vmware.vapi.std_client.DynamicID` may also be useful as + a value for this attribute (although that is not its primary + purpose). Some classes may provide their own specific classes for + use as the value of this attribute when reporting exceptions from + their methods. + Some methods will not set this attribute when reporting exceptions. + """ + + Error.__init__( + self, + messages=messages, + data=data, + ) +
+AlreadyExists._set_binding_type(type.ErrorType( + 'com.vmware.vapi.std.errors.already_exists', { + 'messages': type.ListType(type.ReferenceType(com.vmware.vapi.std_client, 'LocalizableMessage')), + 'data': type.OptionalType(type.DynamicStructType('vmware.vapi.dynamic_struct', {}, VapiStruct)), + }, + AlreadyExists)) +
+ +
+
+
+
+
+ + +
+
+
+
+ + + + \ No newline at end of file diff --git a/vsphere/6.0/_modules/com/vmware/vapi/std_client.html b/vsphere/6.0/_modules/com/vmware/vapi/std_client.html new file mode 100644 index 00000000..9d455776 --- /dev/null +++ b/vsphere/6.0/_modules/com/vmware/vapi/std_client.html @@ -0,0 +1,353 @@ + + + + + + + + + + com.vmware.vapi.std_client — vCloud Suite SDK for Python 6.0.0 documentation + + + + + + + + + + + + + + +
+
+
+
+ +

Source code for com.vmware.vapi.std_client

+#---------------------------------------------------------------------------
+# Copyright 2014 VMware, Inc.  All rights reserved.
+
+# AUTO GENERATED FILE -- DO NOT MODIFY!
+#
+# vAPI stub file for package com.vmware.vapi.std.
+#---------------------------------------------------------------------------
+
+"""
+The ``com.vmware.vapi.std_client`` module provides standard types that can be
+used in the interface specification of any class.
+
+"""
+
+__author__ = 'VMware, Inc.'
+__docformat__ = 'restructuredtext en'
+
+import sys
+
+from vmware.vapi.bindings import type
+from vmware.vapi.bindings.converter import TypeConverter
+from vmware.vapi.bindings.enum import Enum
+from vmware.vapi.bindings.error import VapiError
+from vmware.vapi.bindings.struct import VapiStruct
+from vmware.vapi.bindings.stub import VapiInterface, ApiInterfaceStub
+from vmware.vapi.bindings.common import raise_core_exception
+from vmware.vapi.data.validator import UnionValidator, HasFieldsOfValidator
+from vmware.vapi.exception import CoreException
+
+
+
[docs]class AuthenticationScheme(VapiStruct): + """ + The :class:`AuthenticationScheme` class defines constants for + authentication scheme identifiers for authentication mechanisms present in + the vAPI infrastructure shipped by VMware. + + A third party extension can define and implements it's own authentication + mechanism and define a constant in a different IDL file. + + .. tip:: + The arguments are used to initialize data attributes with the same + names. + """ + NO_AUTHENTICATION = "com.vmware.vapi.std.security.no_authentication" + """ + Indicates that the request doesn't need any authentication. + + """ + SAML_BEARER_TOKEN = "com.vmware.vapi.std.security.saml_bearer_token" + """ + Indicates that the security context in a request is using a SAML bearer token + based authentication scheme. + + In this scheme, the following pieces of information has to be passed in the + SecurityContext structure in the execution context of the request: + + * The scheme identifier: com.vmware.vapi.std.security.saml_bearer_token + * The token itself + + + + Sample security context in JSON format that matches the specification: ``{ + 'schemeId': 'com.vmware.vapi.std.security.saml_bearer_token', + 'token': 'the token itself' + }`` vAPI runtime provide convenient factory methods that take SAML bearer token + and to create the security context that conforms to the above mentioned format. + + """ + SAML_HOK_TOKEN = "com.vmware.vapi.std.security.saml_hok_token" + """ + Indicates that the security context in a request is using a SAML holder-of-key + token based authentication scheme. + + In this scheme, the following pieces of information has to be passed in the + SecurityContext structure in the execution context of the request: + + * The scheme identifier: com.vmware.vapi.std.security.saml_hok_token + * Signature of the request: This includes - algorithm used for signing the + request, SAML holder of key token and signature digest + * Request timestamp: This includes the ``created`` and ``expires`` timestamp of + the request. The timestamp should match the following format - + YYYY-MM-DDThh:mm:ss.sssZ (e.g. 1878-03-03T19:20:30.451Z). + + + + Sample security context in JSON format that matches the specification: ``{ + 'schemeId': 'com.vmware.vapi.std.security.saml_hok_token', + 'signature': { + 'alg': 'RS256', + 'samlToken': ..., + 'value': ...,``, 'timestamp': { 'created': '2012-10-26T12:24:18.941Z', + 'expires': '2012-10-26T12:44:18.941Z', } } } vAPI runtime provide convenient + factory methods that take SAML holder of key token and private key to create + the security context that conforms to the above mentioned format. + + """ + SESSION_ID = "com.vmware.vapi.std.security.session_id" + """ + Indicates that the security context in a request is using a session identifier + based authentication scheme. + + In this scheme, the following pieces of information has to be passed in the + SecurityContext structure in the execution context of the request: + + * The scheme identifier - com.vmware.vapi.std.security.session_id + * Valid session identifier - This is usually returned by a login method of a + session manager interface for a particular vAPI service of this authentication + scheme + + Sample security context in JSON format that matches the specification: ``{ + 'schemeId': 'com.vmware.vapi.std.security.session_id', + 'sessionId': ...., + }`` vAPI runtime provides convenient factory methods that take session + identifier as input parameter and create a security context that conforms to + the above format. + + """ + USER_PASSWORD = "com.vmware.vapi.std.security.user_password" + """ + Indicates that the security context in a request is using username/password + based authentication scheme. + + In this scheme, the following pieces of information has to be passed in the + SecurityContext structure in the execution context of the request: + + * The scheme identifier - com.vmware.vapi.std.security.user_password + * Username + * Password + + + + Sample security context in JSON format that matches the specification: ``{ + 'schemeId': 'com.vmware.vapi.std.security.user_password', + 'userName': ...., + 'password': ... + }`` + vAPI runtime provides convenient factory methods that take username and + password as input parameters and create a security context that conforms to the + above format. + + """ + + + def __init__(self, + ): + """ + """ + VapiStruct.__init__(self) +
+AuthenticationScheme._set_binding_type(type.StructType( + 'com.vmware.vapi.std.authentication_scheme', { + }, + AuthenticationScheme, + False, + None)) + + + +
[docs]class DynamicID(VapiStruct): + """ + The ``DynamicID`` class represents an identifier for a resource of an + arbitrary type. + + .. tip:: + The arguments are used to initialize data attributes with the same + names. + """ + + + + def __init__(self, + type=None, + id=None, + ): + """ + :type type: :class:`str` + :param type: The type of resource being identified (for example + ``com.acme.Person``). + + Classes that contain methods for creating and deleting resources + typically contain a class attribute specifying the resource type + for the resources being created and deleted. The API metamodel + metadata classes include a class that allows retrieving all the + known resource types. + :type id: :class:`str` + :param id: The identifier for a resource whose type is specified by + :attr:`DynamicID.type`. + When clients pass a value of this class as a parameter, the + attribute ``type`` must contain the actual resource type. When + methods return a value of this class as a return value, the + attribute ``type`` will contain the actual resource type. + """ + self.type = type + self.id = id + VapiStruct.__init__(self) +
+DynamicID._set_binding_type(type.StructType( + 'com.vmware.vapi.std.dynamic_ID', { + 'type': type.StringType(), + 'id': type.IdType(resource_types=[], resource_type_field_name="type"), + }, + DynamicID, + False, + None)) + + + +
[docs]class LocalizableMessage(VapiStruct): + """ + The ``LocalizableMessage`` class represents a localizable string or message + template. Classes include one or more localizable message templates in the + exceptions they report so that clients can display diagnostic messages in + the native language of the user. Classes can include localizable strings in + the data returned from methods to allow clients to display localized status + information in the native language of the user. + + .. tip:: + The arguments are used to initialize data attributes with the same + names. + """ + + + + def __init__(self, + id=None, + default_message=None, + args=None, + ): + """ + :type id: :class:`str` + :param id: Unique identifier of the localizable string or message template. + + This identifier is typically used to retrieve a locale-specific + string or message template from a message catalog. + :type default_message: :class:`str` + :param default_message: The value of this localizable string or message template in the + ``en_US`` (English) locale. If :attr:`LocalizableMessage.id` refers + to a message template, the default message will contain the + substituted arguments. This value can be used by clients that do + not need to display strings and messages in the native language of + the user. It could also be used as a fallback if a client is unable + to access the appropriate message catalog. + :type args: :class:`list` of :class:`str` + :param args: Arguments to be substituted into a message template. + """ + self.id = id + self.default_message = default_message + self.args = args + VapiStruct.__init__(self) +
+LocalizableMessage._set_binding_type(type.StructType( + 'com.vmware.vapi.std.localizable_message', { + 'id': type.StringType(), + 'default_message': type.StringType(), + 'args': type.ListType(type.StringType()), + }, + LocalizableMessage, + False, + None)) +
+ +
+
+
+
+
+ + +
+
+
+
+ + + + \ No newline at end of file diff --git a/vsphere/6.0/_modules/com/vmware/vapi/vcenter_client.html b/vsphere/6.0/_modules/com/vmware/vapi/vcenter_client.html new file mode 100644 index 00000000..494067c4 --- /dev/null +++ b/vsphere/6.0/_modules/com/vmware/vapi/vcenter_client.html @@ -0,0 +1,200 @@ + + + + + + + + + + com.vmware.vapi.vcenter_client — vCloud Suite SDK for Python 6.0.0 documentation + + + + + + + + + + + + + + +
+
+
+
+ +

Source code for com.vmware.vapi.vcenter_client

+#---------------------------------------------------------------------------
+# Copyright 2015 VMware, Inc.  All rights reserved.
+
+# AUTO GENERATED FILE -- DO NOT MODIFY!
+#
+# vAPI stub file for package com.vmware.vapi.vcenter.
+#---------------------------------------------------------------------------
+
+"""
+
+
+"""
+
+__author__ = 'VMware, Inc.'
+__docformat__ = 'restructuredtext en'
+
+import sys
+
+from vmware.vapi.bindings import type
+from vmware.vapi.bindings.converter import TypeConverter
+from vmware.vapi.bindings.enum import Enum
+from vmware.vapi.bindings.error import VapiError
+from vmware.vapi.bindings.struct import VapiStruct
+from vmware.vapi.bindings.stub import VapiInterface, ApiInterfaceStub
+from vmware.vapi.bindings.common import raise_core_exception
+from vmware.vapi.data.validator import UnionValidator, HasFieldsOfValidator
+from vmware.vapi.exception import CoreException
+import com.vmware.vapi.std.errors_client
+
+
+
[docs]class Activation(VapiInterface): + """ + The VMODL2 for the activation functionality. + """ + + + def __init__(self, config): + """ + :type config: :class:`vmware.vapi.bindings.stub.StubConfiguration` + :param config: Configuration to be used for creating the stub. + """ + VapiInterface.__init__(self, config, _ActivationStub) + + +
[docs] def cancel(self, + activation_id, + ): + """ + Sends a request to cancel the task associated with the provided + activationId. + + :type activation_id: :class:`str` + :param activation_id: the activationId associated with a VC task that will be canceled. + The parameter must be an identifier for the resource type: + ``com.vmware.Activation``. + :raise: :class:`com.vmware.vapi.std.errors_client.NotFound` + if a VC task with the given activationId was not found. + :raise: :class:`com.vmware.vapi.std.errors_client.NotAllowedInCurrentState` + if the VC task associated with the given activationId is not + cancelable. + :raise: :class:`com.vmware.vapi.std.errors_client.Unauthorized` + if the user is not authorized to cancel the task. + :raise: :class:`com.vmware.vapi.std.errors_client.Unauthenticated` + if the user is not authenticated. + """ + return self._invoke('cancel', + { + 'activation_id': activation_id, + }) +
+class _ActivationStub(ApiInterfaceStub): + def __init__(self, config): + # properties for cancel operation + cancel_input_type = type.StructType('operation-input', { + 'activation_id': type.IdType(resource_types='com.vmware.Activation'), + }) + cancel_error_dict = { + 'com.vmware.vapi.std.errors.not_found': + type.ReferenceType(com.vmware.vapi.std.errors_client, 'NotFound'), + 'com.vmware.vapi.std.errors.not_allowed_in_current_state': + type.ReferenceType(com.vmware.vapi.std.errors_client, 'NotAllowedInCurrentState'), + 'com.vmware.vapi.std.errors.unauthorized': + type.ReferenceType(com.vmware.vapi.std.errors_client, 'Unauthorized'), + 'com.vmware.vapi.std.errors.unauthenticated': + type.ReferenceType(com.vmware.vapi.std.errors_client, 'Unauthenticated'), + 'com.vmware.vapi.std.errors.service_unavailable': + type.ReferenceType(com.vmware.vapi.std.errors_client, 'ServiceUnavailable'), + + } + cancel_input_validator_list = [ + ] + cancel_output_validator_list = [ + ] + + operations = { + 'cancel': { + 'input_type': cancel_input_type, + 'output_type': type.VoidType(), + 'errors': cancel_error_dict, + 'input_validator_list': cancel_input_validator_list, + 'output_validator_list': cancel_output_validator_list, + }, + } + ApiInterfaceStub.__init__(self, iface_name='com.vmware.vapi.vcenter.activation', + config=config, + operations=operations) +
+ +
+
+
+
+
+ + +
+
+
+
+ + + + \ No newline at end of file diff --git a/vsphere/6.0/_modules/com/vmware/vcenter/inventory_client.html b/vsphere/6.0/_modules/com/vmware/vcenter/inventory_client.html new file mode 100644 index 00000000..685ebe33 --- /dev/null +++ b/vsphere/6.0/_modules/com/vmware/vcenter/inventory_client.html @@ -0,0 +1,349 @@ + + + + + + + + + + com.vmware.vcenter.inventory_client — vCloud Suite SDK for Python 6.0.0 documentation + + + + + + + + + + + + + + +
+
+
+
+ +

Source code for com.vmware.vcenter.inventory_client

+#---------------------------------------------------------------------------
+# Copyright 2015 VMware, Inc.  All rights reserved.
+
+# AUTO GENERATED FILE -- DO NOT MODIFY!
+#
+# vAPI stub file for package com.vmware.vcenter.inventory.
+#---------------------------------------------------------------------------
+
+"""
+The ``com.vmware.vcenter.inventory_client`` component provides methods and
+classes for retrieving vCenter datastore and network information for a given
+:class:`list` of identifiers.
+
+"""
+
+__author__ = 'VMware, Inc.'
+__docformat__ = 'restructuredtext en'
+
+import sys
+
+from vmware.vapi.bindings import type
+from vmware.vapi.bindings.converter import TypeConverter
+from vmware.vapi.bindings.enum import Enum
+from vmware.vapi.bindings.error import VapiError
+from vmware.vapi.bindings.struct import VapiStruct
+from vmware.vapi.bindings.stub import VapiInterface, ApiInterfaceStub
+from vmware.vapi.bindings.common import raise_core_exception
+from vmware.vapi.data.validator import UnionValidator, HasFieldsOfValidator
+from vmware.vapi.exception import CoreException
+import com.vmware.vapi.std.errors_client
+
+
+
[docs]class Datastore(VapiInterface): + """ + The ``Datastore`` class provides methods to retrieve information about + datastores. + """ + + + def __init__(self, config): + """ + :type config: :class:`vmware.vapi.bindings.stub.StubConfiguration` + :param config: Configuration to be used for creating the stub. + """ + VapiInterface.__init__(self, config, _DatastoreStub) + +
[docs] class Info(VapiStruct): + """ + The ``Datastore.Info`` class contains information about a datastore. + + .. tip:: + The arguments are used to initialize data attributes with the same + names. + """ + + + + def __init__(self, + type=None, + ): + """ + :type type: :class:`str` + :param type: Type of the datastore. + When clients pass a value of this class as a parameter, the + attribute must be one of ``Datastore`` or ``StoragePod``. When + methods return a value of this class as a return value, the + attribute will be one of ``Datastore`` or ``StoragePod``. + """ + self.type = type + VapiStruct.__init__(self) +
+ Info._set_binding_type(type.StructType( + 'com.vmware.vcenter.inventory.datastore.info', { + 'type': type.StringType(), + }, + Info, + False, + None)) + + +
[docs] def find(self, + datastores, + ): + """ + Returns datastore information for the specified datastores. The key in + the return value :class:`dict` is the datastore identifier and the + value in the :class:`dict` is the datastore information. + + :type datastores: :class:`list` of :class:`str` + :param datastores: Identifiers of the datastores for which information will be + returned. + The parameter must contain identifiers for the resource type: + ``Datastore``. + :rtype: :class:`dict` of :class:`str` and (:class:`Datastore.Info` or ``None``) + :return: Datastore information for the specified datastores. The key in the + return value :class:`dict` is the datastore identifier and the + value in the :class:`dict` is the datastore information. + The key in the return value :class:`dict` will be an identifier for + the resource type: ``Datastore``. + :raise: :class:`com.vmware.vapi.std.errors_client.NotFound` + if no datastore can be found for one or more of the datastore + identifiers in ``datastores`` + :raise: :class:`com.vmware.vapi.std.errors_client.Unauthorized` + if you do not have all of the privileges described as follows: + + * Method execution requires ``System.Read``. + * The resource ``Datastore`` referenced by the parameter + ``datastores`` requires ``System.Read``. + """ + return self._invoke('find', + { + 'datastores': datastores, + }) +
+
[docs]class Network(VapiInterface): + """ + The ``Network`` class provides methods to retrieve information about + vCenter Server networks. + """ + + + def __init__(self, config): + """ + :type config: :class:`vmware.vapi.bindings.stub.StubConfiguration` + :param config: Configuration to be used for creating the stub. + """ + VapiInterface.__init__(self, config, _NetworkStub) + +
[docs] class Info(VapiStruct): + """ + The ``Network.Info`` class contains information about a vCenter Server + network. + + .. tip:: + The arguments are used to initialize data attributes with the same + names. + """ + + + + def __init__(self, + type=None, + ): + """ + :type type: :class:`str` + :param type: Type of the vCenter Server network. + When clients pass a value of this class as a parameter, the + attribute must be one of ``Network``, + ``DistributedVirtualPortgroup``, or ``OpaqueNetwork``. When methods + return a value of this class as a return value, the attribute will + be one of ``Network``, ``DistributedVirtualPortgroup``, or + ``OpaqueNetwork``. + """ + self.type = type + VapiStruct.__init__(self) +
+ Info._set_binding_type(type.StructType( + 'com.vmware.vcenter.inventory.network.info', { + 'type': type.StringType(), + }, + Info, + False, + None)) + + +
[docs] def find(self, + networks, + ): + """ + Returns network information for the specified vCenter Server networks. + The key in the return value :class:`dict` is the network identifier and + the value in the :class:`dict` is the network information. + + :type networks: :class:`list` of :class:`str` + :param networks: Identifiers of the vCenter Server networks for which information + will be returned. + The parameter must contain identifiers for the resource type: + ``Network``. + :rtype: :class:`dict` of :class:`str` and (:class:`Network.Info` or ``None``) + :return: Network information for the specified vCenter Server networks. The + key in the return value :class:`dict` is the network identifier and + the value in the :class:`dict` is the network information. + The key in the return value :class:`dict` will be an identifier for + the resource type: ``Network``. + :raise: :class:`com.vmware.vapi.std.errors_client.NotFound` + if no datastore can be found for one or more of the vCenter Server + network identifiers in ``networks`` + :raise: :class:`com.vmware.vapi.std.errors_client.Unauthorized` + if you do not have all of the privileges described as follows: + + * Method execution requires ``System.Read``. + * The resource ``Network`` referenced by the parameter ``networks`` + requires ``System.Read``. + """ + return self._invoke('find', + { + 'networks': networks, + }) +
+class _DatastoreStub(ApiInterfaceStub): + def __init__(self, config): + # properties for find operation + find_input_type = type.StructType('operation-input', { + 'datastores': type.ListType(type.IdType()), + }) + find_error_dict = { + 'com.vmware.vapi.std.errors.not_found': + type.ReferenceType(com.vmware.vapi.std.errors_client, 'NotFound'), + + } + find_input_validator_list = [ + ] + find_output_validator_list = [ + ] + + operations = { + 'find': { + 'input_type': find_input_type, + 'output_type': type.MapType(type.IdType(), type.OptionalType(type.ReferenceType(sys.modules[__name__], 'Datastore.Info'))), + 'errors': find_error_dict, + 'input_validator_list': find_input_validator_list, + 'output_validator_list': find_output_validator_list, + }, + } + ApiInterfaceStub.__init__(self, iface_name='com.vmware.vcenter.inventory.datastore', + config=config, + operations=operations) +class _NetworkStub(ApiInterfaceStub): + def __init__(self, config): + # properties for find operation + find_input_type = type.StructType('operation-input', { + 'networks': type.ListType(type.IdType()), + }) + find_error_dict = { + 'com.vmware.vapi.std.errors.not_found': + type.ReferenceType(com.vmware.vapi.std.errors_client, 'NotFound'), + + } + find_input_validator_list = [ + ] + find_output_validator_list = [ + ] + + operations = { + 'find': { + 'input_type': find_input_type, + 'output_type': type.MapType(type.IdType(), type.OptionalType(type.ReferenceType(sys.modules[__name__], 'Network.Info'))), + 'errors': find_error_dict, + 'input_validator_list': find_input_validator_list, + 'output_validator_list': find_output_validator_list, + }, + } + ApiInterfaceStub.__init__(self, iface_name='com.vmware.vcenter.inventory.network', + config=config, + operations=operations) +
+ +
+
+
+
+
+ + +
+
+
+
+ + + + \ No newline at end of file diff --git a/vsphere/6.0/_modules/com/vmware/vcenter/ovf_client.html b/vsphere/6.0/_modules/com/vmware/vcenter/ovf_client.html new file mode 100644 index 00000000..9bdd04d6 --- /dev/null +++ b/vsphere/6.0/_modules/com/vmware/vcenter/ovf_client.html @@ -0,0 +1,3191 @@ + + + + + + + + + + com.vmware.vcenter.ovf_client — vCloud Suite SDK for Python 6.0.0 documentation + + + + + + + + + + + + + + +
+
+
+
+ +

Source code for com.vmware.vcenter.ovf_client

+#---------------------------------------------------------------------------
+# Copyright 2015 VMware, Inc.  All rights reserved.
+
+# AUTO GENERATED FILE -- DO NOT MODIFY!
+#
+# vAPI stub file for package com.vmware.vcenter.ovf.
+#---------------------------------------------------------------------------
+
+"""
+The ``com.vmware.vcenter.ovf_client`` module provides services to capture and
+deploy Open Virtualization Format (OVF) packages to and from the content
+library. 
+
+It provides the ability to deploy OVF packages from the content library with
+support for advanced network topologies, network services, creating virtual
+appliances and virtual machines in hosts, resource pools or clusters. It also
+provides the ability to export virtual appliances and virtual machines from
+hosts, resource pools or clusters as OVF packages to the content library.
+
+"""
+
+__author__ = 'VMware, Inc.'
+__docformat__ = 'restructuredtext en'
+
+import sys
+
+from vmware.vapi.bindings import type
+from vmware.vapi.bindings.converter import TypeConverter
+from vmware.vapi.bindings.enum import Enum
+from vmware.vapi.bindings.error import VapiError
+from vmware.vapi.bindings.struct import VapiStruct
+from vmware.vapi.bindings.stub import VapiInterface, ApiInterfaceStub
+from vmware.vapi.bindings.common import raise_core_exception
+from vmware.vapi.data.validator import UnionValidator, HasFieldsOfValidator
+from vmware.vapi.exception import CoreException
+import com.vmware.vapi.std_client
+import com.vmware.vapi.std.errors_client
+
+
[docs]class DiskProvisioningType(Enum): + """ + The ``DiskProvisioningType`` class defines the virtual disk provisioning + types that can be set for a disk on the target platform. + + .. note:: + This class represents an enumerated type in the interface language + definition. The class contains class attributes which represent the + values in the current version of the enumerated type. Newer versions of + the enumerated type may contain new values. To use new values of the + enumerated type in communication with a server that supports the newer + version of the API, you instantiate this class. See :ref:`enumerated + type description page <enumeration_description>`. + """ + thin = None + """ + A thin provisioned virtual disk has space allocated and zeroed on demand as + the space is used. + + """ + thick = None + """ + A thick provisioned virtual disk has all space allocated at creation time + and the space is zeroed on demand as the space is used. + + """ + eagerZeroedThick = None + """ + An eager zeroed thick provisioned virtual disk has all space allocated and + wiped clean of any previous contents on the physical media at creation + time. + + Disks specified as eager zeroed thick may take longer time to create than + disks specified with the other disk provisioning types. + + """ + + def __init__(self, string): + """ + :type string: :class:`str` + :param string: String value for the :class:`DiskProvisioningType` instance. + """ + Enum.__init__(string) +
+DiskProvisioningType.thin = DiskProvisioningType('thin') +DiskProvisioningType.thick = DiskProvisioningType('thick') +DiskProvisioningType.eagerZeroedThick = DiskProvisioningType('eagerZeroedThick') +DiskProvisioningType._set_binding_type(type.EnumType( + 'com.vmware.vcenter.ovf.disk_provisioning_type', + DiskProvisioningType)) + + + + +
[docs]class CertificateParams(VapiStruct): + """ + The ``CertificateParams`` class contains information about the public key + certificate used to sign the OVF package. This class will only be returned + if the OVF package is signed. + + See :func:`LibraryItem.deploy` and :func:`LibraryItem.filter`. + + .. tip:: + The arguments are used to initialize data attributes with the same + names. + """ + + + + def __init__(self, + issuer=None, + subject=None, + is_valid=None, + is_self_signed=None, + x509=None, + type=None, + ): + """ + :type issuer: :class:`str` + :param issuer: Certificate issuer. For example: /C=US/ST=California/L=Palo + Alto/O=VMware, Inc. + This attribute is not used in the input parameters when deploying + an OVF package. This attribute will always be present in the result + when retrieving information about an OVF package. + :type subject: :class:`str` + :param subject: Certificate subject. For example: + /C=US/ST=Massachusetts/L=Hopkinton/O=EMC Corporation/OU=EMC + Avamar/CN=EMC Corporation. + This attribute is not used in the input parameters when deploying + an OVF package. This attribute will always be present in the result + when retrieving information about an OVF package. + :type is_valid: :class:`bool` + :param is_valid: Is the certificate chain validated. + This attribute is not used in the input parameters when deploying + an OVF package. This attribute will always be present in the result + when retrieving information about an OVF package. + :type is_self_signed: :class:`bool` + :param is_self_signed: Is the certificate self-signed. + This attribute is not used in the input parameters when deploying + an OVF package. This attribute will always be present in the result + when retrieving information about an OVF package. + :type x509: :class:`str` + :param x509: The X509 representation of the certificate. + This attribute is not used in the input parameters when deploying + an OVF package. This attribute will always be present in the result + when retrieving information about an OVF package. + :type type: :class:`str` + :param type: Unique identifier describing the type of the OVF parameters. The + value is the name of the OVF parameters class. + This attribute must be provided in the input parameters when + deploying an OVF package. This attribute will always be present in + the result when retrieving information about an OVF package. + """ + self.issuer = issuer + self.subject = subject + self.is_valid = is_valid + self.is_self_signed = is_self_signed + self.x509 = x509 + self.type = type + VapiStruct.__init__(self) +
+CertificateParams._set_binding_type(type.StructType( + 'com.vmware.vcenter.ovf.certificate_params', { + 'issuer': type.OptionalType(type.StringType()), + 'subject': type.OptionalType(type.StringType()), + 'is_valid': type.OptionalType(type.BooleanType()), + 'is_self_signed': type.OptionalType(type.BooleanType()), + 'x509': type.OptionalType(type.StringType()), + 'type': type.OptionalType(type.StringType()), + }, + CertificateParams, + False, + None)) + + + +
[docs]class DeploymentOption(VapiStruct): + """ + The ``DeploymentOption`` class contains the information about a deployment + option as defined in the OVF specification. + + This corresponds to the ovf:Configuration element of the + ovf:DeploymentOptionSection in the specification. The + ovf:DeploymentOptionSection specifies a discrete set of intended resource + allocation configurations. This class represents one item from that set. + + See :func:`LibraryItem.deploy` and :func:`LibraryItem.filter`. + + .. tip:: + The arguments are used to initialize data attributes with the same + names. + """ + + + + def __init__(self, + key=None, + label=None, + description=None, + default_choice=None, + ): + """ + :type key: :class:`str` + :param key: The key of the deployment option, corresponding to the ovf:id + attribute in the OVF descriptor. + This attribute is not used in the input parameters when deploying + an OVF package. This attribute will always be present in the result + when retrieving information about an OVF package. + :type label: :class:`str` + :param label: A localizable label for the deployment option. + This attribute is not used in the input parameters when deploying + an OVF package. This attribute will always be present in the result + when retrieving information about an OVF package. + :type description: :class:`str` + :param description: A localizable description for the deployment option. + This attribute is not used in the input parameters when deploying + an OVF package. This attribute will always be present in the result + when retrieving information about an OVF package. + :type default_choice: :class:`bool` + :param default_choice: A :class:`bool` flag indicates whether this deployment option is + the default choice. + This attribute is not used in the input parameters when deploying + an OVF package. This attribute is optional in the result when + retrieving information about an OVF package. If None or false, it + is not the default. + """ + self.key = key + self.label = label + self.description = description + self.default_choice = default_choice + VapiStruct.__init__(self) +
+DeploymentOption._set_binding_type(type.StructType( + 'com.vmware.vcenter.ovf.deployment_option', { + 'key': type.OptionalType(type.StringType()), + 'label': type.OptionalType(type.StringType()), + 'description': type.OptionalType(type.StringType()), + 'default_choice': type.OptionalType(type.BooleanType()), + }, + DeploymentOption, + False, + None)) + + + +
[docs]class DeploymentOptionParams(VapiStruct): + """ + The ``DeploymentOptionParams`` class describes the possible deployment + options as well as the choice provided by the user. + + This information based on the ovf:DeploymentOptionSection. + + See :func:`LibraryItem.deploy` and :func:`LibraryItem.filter`. + + .. tip:: + The arguments are used to initialize data attributes with the same + names. + """ + + + + def __init__(self, + deployment_options=None, + selected_key=None, + type=None, + ): + """ + :type deployment_options: :class:`list` of :class:`DeploymentOption` + :param deployment_options: :class:`list` of deployment options. This attribute corresponds to + the ovf:Configuration elements of the ovf:DeploymentOptionSection + in the specification. It is a discrete set of intended resource + allocation configurations from which one can be selected. + This attribute is not used in the input parameters when deploying + an OVF package. This attribute will always be present in the result + when retrieving information about an OVF package. + :type selected_key: :class:`str` + :param selected_key: The selected deployment option. Identifies the + :class:`DeploymentOption` in the list in the ``deploymentOptions`` + attribute with a matching value in the :attr:`DeploymentOption.key` + attribute. + This attribute is optional in the input parameters when deploying + an OVF package. If None the server will use the default deployment + configuration, usually it's the first one in + :attr:`DeploymentOptionParams.deployment_options` :class:`list`. + This attribute is optional in the result when retrieving + information about an OVF package. The value will be set only if it + is specified with the optional ovf:default attribute. + :type type: :class:`str` + :param type: Unique identifier describing the type of the OVF parameters. The + value is the name of the OVF parameters class. + This attribute must be provided in the input parameters when + deploying an OVF package. This attribute will always be present in + the result when retrieving information about an OVF package. + """ + self.deployment_options = deployment_options + self.selected_key = selected_key + self.type = type + VapiStruct.__init__(self) +
+DeploymentOptionParams._set_binding_type(type.StructType( + 'com.vmware.vcenter.ovf.deployment_option_params', { + 'deployment_options': type.OptionalType(type.ListType(type.ReferenceType(sys.modules[__name__], 'DeploymentOption'))), + 'selected_key': type.OptionalType(type.StringType()), + 'type': type.OptionalType(type.StringType()), + }, + DeploymentOptionParams, + False, + None)) + + + +
[docs]class ExtraConfig(VapiStruct): + """ + The ``ExtraConfig`` class contains the information about a vmw:ExtraConfig + element which can be used to specify configuration settings that are + transferred directly to the ``.vmx`` file. The behavior of the + vmw:ExtraConfig element is similar to the ``extraConfig`` property of the + ``VirtualMachineConfigSpec`` object in the VMware vSphere API. Thus, the + same restrictions apply, such as you cannot set values that could otherwise + be set with other properties in the ``VirtualMachineConfigSpec`` object. + See the VMware vSphere API reference for details on this. + + vmw:ExtraConfig elements may occur as direct child elements of a + VirtualHardwareSection, or as child elements of individual virtual hardware + items. + + See :func:`LibraryItem.deploy` and :func:`LibraryItem.filter`. + + .. tip:: + The arguments are used to initialize data attributes with the same + names. + """ + + + + def __init__(self, + key=None, + value=None, + virtual_system_id=None, + ): + """ + :type key: :class:`str` + :param key: The key of the ExtraConfig element. + This attribute must be provided in the input parameters when + deploying an OVF package. This attribute will always be present in + the result when retrieving information about an OVF package. + :type value: :class:`str` + :param value: The value of the ExtraConfig element. + This attribute must be provided in the input parameters when + deploying an OVF package. This attribute will always be present in + the result when retrieving information about an OVF package. + :type virtual_system_id: :class:`str` + :param virtual_system_id: The identifier of the virtual system containing the vmw:ExtraConfig + element. + This attribute is not used in the input parameters when deploying + an OVF package. This attribute will always be present in the result + when retrieving information about an OVF package. + """ + self.key = key + self.value = value + self.virtual_system_id = virtual_system_id + VapiStruct.__init__(self) +
+ExtraConfig._set_binding_type(type.StructType( + 'com.vmware.vcenter.ovf.extra_config', { + 'key': type.OptionalType(type.StringType()), + 'value': type.OptionalType(type.StringType()), + 'virtual_system_id': type.OptionalType(type.StringType()), + }, + ExtraConfig, + False, + None)) + + + +
[docs]class ExtraConfigParams(VapiStruct): + """ + The ``ExtraConfigParams`` class contains the parameters with information + about the vmw:ExtraConfig elements in an OVF package. + + vmw:ExtraConfig elements can be used to specify configuration settings that + are transferred directly to the ``.vmx`` file. + + The behavior of the vmw:ExtraConfig element is similar to the + ``extraConfig`` property of the ``VirtualMachineConfigSpec`` object in the + VMware vSphere API. Thus, the same restrictions apply, such as you cannot + set values that could otherwise be set with other properties in the + ``VirtualMachineConfigSpec`` object. See the VMware vSphere API reference + for details on this. + + See :func:`LibraryItem.deploy` and :func:`LibraryItem.filter`. + + .. tip:: + The arguments are used to initialize data attributes with the same + names. + """ + + + + def __init__(self, + extra_configs=None, + exclude_keys=None, + include_keys=None, + type=None, + ): + """ + :type extra_configs: :class:`list` of :class:`ExtraConfig` + :param extra_configs: :class:`list` of vmw:ExtraConfig elements in the OVF package. + This attribute is optional in the input parameters when deploying + an OVF package. If None there are no extra configuration elements + to use for this OVF package deployment. This attribute will always + be present in the result when retrieving information about an OVF + package. It will be an empty :class:`list` if there are no extra + configuration elements in the OVF package. + :type exclude_keys: :class:`list` of :class:`str` + :param exclude_keys: Specifies which extra configuration items in the :class:`list` in + the ``extraConfigs`` ``field`` should be ignored during deployment. + + If set, the given keys for extra configurations will be ignored + during deployment. The key is defined in the + :attr:`ExtraConfig.key` attribute. + This attribute is optional in the input parameters when deploying + an OVF package. It is an error to set both this and + :attr:`ExtraConfigParams.include_keys`. This attribute is optional + in the result when retrieving information about an OVF package. It + is an error to set both this and + :attr:`ExtraConfigParams.include_keys`. + :type include_keys: :class:`list` of :class:`str` + :param include_keys: Specifies which extra configuration items in the :class:`list` in + the ``extraConfigs`` ``field`` should be included during + deployment. + + If set, all but the given keys for extra configurations will be + ignored during deployment. The key is defined in the + :attr:`ExtraConfig.key` attribute. + This attribute is optional in the input parameters when deploying + an OVF package. It is an error to set both this and + :attr:`ExtraConfigParams.exclude_keys`. This attribute is optional + in the result when retrieving information about an OVF package. It + is an error to set both this and + :attr:`ExtraConfigParams.exclude_keys`. + :type type: :class:`str` + :param type: Unique identifier describing the type of the OVF parameters. The + value is the name of the OVF parameters class. + This attribute must be provided in the input parameters when + deploying an OVF package. This attribute will always be present in + the result when retrieving information about an OVF package. + """ + self.extra_configs = extra_configs + self.exclude_keys = exclude_keys + self.include_keys = include_keys + self.type = type + VapiStruct.__init__(self) +
+ExtraConfigParams._set_binding_type(type.StructType( + 'com.vmware.vcenter.ovf.extra_config_params', { + 'extra_configs': type.OptionalType(type.ListType(type.ReferenceType(sys.modules[__name__], 'ExtraConfig'))), + 'exclude_keys': type.OptionalType(type.ListType(type.StringType())), + 'include_keys': type.OptionalType(type.ListType(type.StringType())), + 'type': type.OptionalType(type.StringType()), + }, + ExtraConfigParams, + False, + None)) + + + +
[docs]class IpAllocationParams(VapiStruct): + """ + The ``IpAllocationParams`` class specifies how IP addresses are allocated + to OVF properties. In particular, it informs the deployment platform + whether the guest supports IPv4, IPv6, or both. It also specifies whether + the IP addresses can be obtained through DHCP or through the properties + provided in the OVF environment. + + Ovf Property elements are exposed to the guest software through the OVF + environment. Each Property element exposed in the OVF environment shall be + constructed from the value of the ovf:key attribute. A Property element + contains a key/value pair, it may optionally specify type qualifiers using + the ovf:qualifiers attribute with multiple qualifiers separated by commas. + + The settings in ``IpAllocationParams`` class are global to a deployment. + Thus, if a virtual machine is part of a virtual appliance, then its + settings are ignored and the settings for the virtual appliance is used. + + This information is based on the vmw:IpAssignmentSection in OVF package. + + See :func:`LibraryItem.deploy` and :func:`LibraryItem.filter`. + + .. tip:: + The arguments are used to initialize data attributes with the same + names. + """ + + + + def __init__(self, + supported_allocation_scheme=None, + supported_ip_allocation_policy=None, + ip_allocation_policy=None, + supported_ip_protocol=None, + ip_protocol=None, + type=None, + ): + """ + :type supported_allocation_scheme: :class:`list` of :class:`IpAllocationParams.IpAllocationScheme` + :param supported_allocation_scheme: Specifies the IP allocation schemes supported by the guest + software. This attribute defines the valid values for the IP + allocation policy. This setting is often configured by the virtual + appliance template author or OVF package author to reflect what the + guest software supports, and the IP allocation policy is configured + at deployment time. See + :attr:`IpAllocationParams.ip_allocation_policy`. + This attribute is not used in the input parameters when deploying + an OVF package. This attribute will always be present in the result + when retrieving information about an OVF package. + :type supported_ip_allocation_policy: :class:`list` of :class:`IpAllocationParams.IpAllocationPolicy` + :param supported_ip_allocation_policy: Specifies the IP allocation policies supported. The set of valid + options for the policy is based on the capabilities of the virtual + appliance software, as specified by the + :attr:`IpAllocationParams.supported_allocation_scheme` attribute. + This attribute is not used in the input parameters when deploying + an OVF package. This attribute will always be present in the result + when retrieving information about an OVF package. + :type ip_allocation_policy: :class:`IpAllocationParams.IpAllocationPolicy` + :param ip_allocation_policy: Specifies how IP allocation is done through an IP Pool. This is + typically specified by the deployer. + This attribute is optional in the input parameters when deploying + an OVF package. If None there is no IP allocation policy. This + attribute will always be present in the result when retrieving + information about an OVF package. + :type supported_ip_protocol: :class:`list` of :class:`IpAllocationParams.IpProtocol` + :param supported_ip_protocol: Specifies the IP protocols supported by the guest. + This attribute is not used in the input parameters when deploying + an OVF package. This attribute will always be present in the result + when retrieving information about an OVF package. + :type ip_protocol: :class:`IpAllocationParams.IpProtocol` + :param ip_protocol: Specifies the chosen IP protocol for this deployment. This must be + one of the IP protocols supported by the guest software. See + :attr:`IpAllocationParams.supported_ip_protocol`. + This attribute is optional in the input parameters when deploying + an OVF package. If None there is no IP protocol chosen. This + attribute will always be present in the result when retrieving + information about an OVF package. + :type type: :class:`str` + :param type: Unique identifier describing the type of the OVF parameters. The + value is the name of the OVF parameters class. + This attribute must be provided in the input parameters when + deploying an OVF package. This attribute will always be present in + the result when retrieving information about an OVF package. + """ + self.supported_allocation_scheme = supported_allocation_scheme + self.supported_ip_allocation_policy = supported_ip_allocation_policy + self.ip_allocation_policy = ip_allocation_policy + self.supported_ip_protocol = supported_ip_protocol + self.ip_protocol = ip_protocol + self.type = type + VapiStruct.__init__(self) + +
[docs] class IpAllocationPolicy(Enum): + """ + The ``IpAllocationParams.IpAllocationPolicy`` class defines the possible IP + allocation policy for a deployment. + + .. note:: + This class represents an enumerated type in the interface language + definition. The class contains class attributes which represent the + values in the current version of the enumerated type. Newer versions of + the enumerated type may contain new values. To use new values of the + enumerated type in communication with a server that supports the newer + version of the API, you instantiate this class. See :ref:`enumerated + type description page <enumeration_description>`. + """ + DHCP = None + """ + Specifies that DHCP will be used to allocate IP addresses. + + """ + TRANSIENT_IPPOOL = None + """ + Specifies that IP addresses are allocated from an IP pool. The IP addresses + are allocated when needed, typically at power-on, and deallocated during + power-off. There is no guarantee that a property will receive same IP + address when restarted. + + """ + STATIC_MANUAL = None + """ + Specifies that IP addresses are configured manually upon deployment, and + will be kept until reconfigured or the virtual appliance destroyed. This + ensures that a property gets a consistent IP for its lifetime. + + """ + STATIC_IPPOOL = None + """ + Specifies that IP addresses are allocated from the range managed by an IP + pool. The IP addresses are allocated at first power-on, and remain + allocated at power-off. This ensures that a virtual appliance gets a + consistent IP for its life-time. + + """ + + def __init__(self, string): + """ + :type string: :class:`str` + :param string: String value for the :class:`IpAllocationPolicy` instance. + """ + Enum.__init__(string) +
+ IpAllocationPolicy.DHCP = IpAllocationPolicy('DHCP') + IpAllocationPolicy.TRANSIENT_IPPOOL = IpAllocationPolicy('TRANSIENT_IPPOOL') + IpAllocationPolicy.STATIC_MANUAL = IpAllocationPolicy('STATIC_MANUAL') + IpAllocationPolicy.STATIC_IPPOOL = IpAllocationPolicy('STATIC_IPPOOL') + IpAllocationPolicy._set_binding_type(type.EnumType( + 'com.vmware.vcenter.ovf.ip_allocation_params.ip_allocation_policy', + IpAllocationPolicy)) +
[docs] class IpAllocationScheme(Enum): + """ + The ``IpAllocationParams.IpAllocationScheme`` class defines the possible IP + allocation schemes that can be supported by the guest software. + + .. note:: + This class represents an enumerated type in the interface language + definition. The class contains class attributes which represent the + values in the current version of the enumerated type. Newer versions of + the enumerated type may contain new values. To use new values of the + enumerated type in communication with a server that supports the newer + version of the API, you instantiate this class. See :ref:`enumerated + type description page <enumeration_description>`. + """ + DHCP = None + """ + It supports DHCP to acquire IP configuration. + + """ + OVF_ENVIRONMENT = None + """ + It supports setting the IP configuration through the properties provided in + the OVF environment. + + """ + + def __init__(self, string): + """ + :type string: :class:`str` + :param string: String value for the :class:`IpAllocationScheme` instance. + """ + Enum.__init__(string) +
+ IpAllocationScheme.DHCP = IpAllocationScheme('DHCP') + IpAllocationScheme.OVF_ENVIRONMENT = IpAllocationScheme('OVF_ENVIRONMENT') + IpAllocationScheme._set_binding_type(type.EnumType( + 'com.vmware.vcenter.ovf.ip_allocation_params.ip_allocation_scheme', + IpAllocationScheme)) +
[docs] class IpProtocol(Enum): + """ + The ``IpAllocationParams.IpProtocol`` class defines the IP protocols + supported by the guest software. + + .. note:: + This class represents an enumerated type in the interface language + definition. The class contains class attributes which represent the + values in the current version of the enumerated type. Newer versions of + the enumerated type may contain new values. To use new values of the + enumerated type in communication with a server that supports the newer + version of the API, you instantiate this class. See :ref:`enumerated + type description page <enumeration_description>`. + """ + IPV4 = None + """ + It supports the IPv4 protocol. + + """ + IPV6 = None + """ + It supports the IPv6 protocol. + + """ + + def __init__(self, string): + """ + :type string: :class:`str` + :param string: String value for the :class:`IpProtocol` instance. + """ + Enum.__init__(string) +
+ IpProtocol.IPV4 = IpProtocol('IPV4') + IpProtocol.IPV6 = IpProtocol('IPV6') + IpProtocol._set_binding_type(type.EnumType( + 'com.vmware.vcenter.ovf.ip_allocation_params.ip_protocol', + IpProtocol))
+IpAllocationParams._set_binding_type(type.StructType( + 'com.vmware.vcenter.ovf.ip_allocation_params', { + 'supported_allocation_scheme': type.OptionalType(type.ListType(type.ReferenceType(sys.modules[__name__], 'IpAllocationParams.IpAllocationScheme'))), + 'supported_ip_allocation_policy': type.OptionalType(type.ListType(type.ReferenceType(sys.modules[__name__], 'IpAllocationParams.IpAllocationPolicy'))), + 'ip_allocation_policy': type.OptionalType(type.ReferenceType(sys.modules[__name__], 'IpAllocationParams.IpAllocationPolicy')), + 'supported_ip_protocol': type.OptionalType(type.ListType(type.ReferenceType(sys.modules[__name__], 'IpAllocationParams.IpProtocol'))), + 'ip_protocol': type.OptionalType(type.ReferenceType(sys.modules[__name__], 'IpAllocationParams.IpProtocol')), + 'type': type.OptionalType(type.StringType()), + }, + IpAllocationParams, + False, + None)) + + + +
[docs]class OvfMessage(VapiStruct): + """ + The ``OvfMessage`` class describes a base OVF handling error message + related to accessing, validating, deploying, or exporting an OVF package. + + These messages fall into different categories defined in + :class:`OvfMessage.Category`: + + .. tip:: + The arguments are used to initialize data attributes with the same + names. + """ + + _validator_list = [ + UnionValidator( + 'category', + { + 'VALIDATION' : [('issues', True)], + 'INPUT' : [('name', True), ('value', True), ('message', True)], + 'SERVER' : [('error', True)], + } + ), + ] + + + def __init__(self, + category=None, + issues=None, + name=None, + value=None, + message=None, + error=None, + ): + """ + :type category: :class:`OvfMessage.Category` + :param category: The message category. + :type issues: :class:`list` of :class:`ParseIssue` + :param issues: :class:`list` of parse issues (see :class:`ParseIssue`). + This attribute is optional and it is only relevant when the value + of ``category`` is :attr:`OvfMessage.Category.VALIDATION`. + :type name: :class:`str` + :param name: The name of input parameter. + This attribute is optional and it is only relevant when the value + of ``category`` is :attr:`OvfMessage.Category.INPUT`. + :type value: :class:`str` + :param value: The value of input parameter. + This attribute is optional and it is only relevant when the value + of ``category`` is :attr:`OvfMessage.Category.INPUT`. + :type message: :class:`com.vmware.vapi.std_client.LocalizableMessage` + :param message: A localizable message. + This attribute is optional and it is only relevant when the value + of ``category`` is :attr:`OvfMessage.Category.INPUT`. + :type error: :class:`vmware.vapi.struct.VapiStruct` + :param error: Represents a server + :class:`com.vmware.vapi.std.errors_client.Error`. + When clients pass a value of this class as a parameter, the + attribute must contain all the attributes defined in + :class:`com.vmware.vapi.std.errors_client.Error`. When methods + return a value of this class as a return value, the attribute will + contain all the attributes defined in + :class:`com.vmware.vapi.std.errors_client.Error`. + This attribute is optional and it is only relevant when the value + of ``category`` is :attr:`OvfMessage.Category.SERVER`. + """ + self.category = category + self.issues = issues + self.name = name + self.value = value + self.message = message + self.error = error + VapiStruct.__init__(self) + +
[docs] class Category(Enum): + """ + The ``OvfMessage.Category`` class defines the categories of messages (see + :class:`OvfMessage`). + + .. note:: + This class represents an enumerated type in the interface language + definition. The class contains class attributes which represent the + values in the current version of the enumerated type. Newer versions of + the enumerated type may contain new values. To use new values of the + enumerated type in communication with a server that supports the newer + version of the API, you instantiate this class. See :ref:`enumerated + type description page <enumeration_description>`. + """ + VALIDATION = None + """ + The OVF descriptor is invalid, for example, syntax errors or schema errors. + + """ + INPUT = None + """ + The user provided input parameters are invalid. + + """ + SERVER = None + """ + Server error. + + """ + + def __init__(self, string): + """ + :type string: :class:`str` + :param string: String value for the :class:`Category` instance. + """ + Enum.__init__(string) +
+ Category.VALIDATION = Category('VALIDATION') + Category.INPUT = Category('INPUT') + Category.SERVER = Category('SERVER') + Category._set_binding_type(type.EnumType( + 'com.vmware.vcenter.ovf.ovf_message.category', + Category))
+OvfMessage._set_binding_type(type.StructType( + 'com.vmware.vcenter.ovf.ovf_message', { + 'category': type.ReferenceType(sys.modules[__name__], 'OvfMessage.Category'), + 'issues': type.OptionalType(type.ListType(type.ReferenceType(sys.modules[__name__], 'ParseIssue'))), + 'name': type.OptionalType(type.StringType()), + 'value': type.OptionalType(type.StringType()), + 'message': type.OptionalType(type.ReferenceType(com.vmware.vapi.std_client, 'LocalizableMessage')), + 'error': type.OptionalType(type.DynamicStructType('vmware.vapi.dynamic_struct', {}, VapiStruct, [type.ReferenceType(com.vmware.vapi.std.errors_client, 'Error')])), + }, + OvfMessage, + False, + None)) + + + +
[docs]class ParseIssue(VapiStruct): + """ + The ``ParseIssue`` class contains the information about the issue found + when parsing an OVF package during deployment or exporting an OVF package + including: + + * Parsing and validation error on OVF descriptor (which is an XML + document), manifest and certificate files. + * OVF descriptor generating and device error. + * Unexpected server error. + + .. tip:: + The arguments are used to initialize data attributes with the same + names. + """ + + + + def __init__(self, + category=None, + file=None, + line_number=None, + column_number=None, + message=None, + ): + """ + :type category: :class:`ParseIssue.Category` + :param category: The category of the parse issue. + :type file: :class:`str` + :param file: The name of the file in which the parse issue was found. + :type line_number: :class:`long` + :param line_number: The line number of the line in the file (see + :attr:`ParseIssue.file`) where the parse issue was found (or -1 if + not applicable). + :type column_number: :class:`long` + :param column_number: The position in the line (see :attr:`ParseIssue.line_number`) (or + -1 if not applicable). + :type message: :class:`com.vmware.vapi.std_client.LocalizableMessage` + :param message: A localizable message describing the parse issue. + """ + self.category = category + self.file = file + self.line_number = line_number + self.column_number = column_number + self.message = message + VapiStruct.__init__(self) + +
[docs] class Category(Enum): + """ + The ``ParseIssue.Category`` class defines the categories of issues that can + be found when parsing files inside an OVF package (see :class:`ParseIssue`) + including OVF descriptor (which is an XML document), manifest and + certificate files, or exporting an OVF package. + + .. note:: + This class represents an enumerated type in the interface language + definition. The class contains class attributes which represent the + values in the current version of the enumerated type. Newer versions of + the enumerated type may contain new values. To use new values of the + enumerated type in communication with a server that supports the newer + version of the API, you instantiate this class. See :ref:`enumerated + type description page <enumeration_description>`. + """ + VALUE_ILLEGAL = None + """ + Illegal value error. For example, the value is malformed, not a number, or + outside of the given range, and so on. + + """ + ATTRIBUTE_REQUIRED = None + """ + Required attribute error. It indicates that a required attribute is missing + from an element in the OVF descriptor. + + """ + ATTRIBUTE_ILLEGAL = None + """ + Illegal attribute error. It indicates that an illegal attribute is set for + an element in the OVF descriptor. For example, empty disks do not use + format, parentRef, and populatedSize attributes, if these attributes are + present in an empty disk element then will get this pasrse issue. + + """ + ELEMENT_REQUIRED = None + """ + Required element error. It indicates that a required element is missing + from the OVF descriptor. + + """ + ELEMENT_ILLEGAL = None + """ + Illegal element error. It indicates that an element is present in a + location which is not allowed, or found multiple elements but only one is + allowed at the location in the OVF descriptor. + + """ + ELEMENT_UNKNOWN = None + """ + Unknown element error. It indicates that an element is unsupported when + parsing an OVF descriptor. + + """ + SECTION_UNKNOWN = None + """ + Section unknown error. It indicates that a section is unsupported when + parsing an OVF descriptor. + + """ + SECTION_RESTRICTION = None + """ + Section restriction error. It indicates that a section appears in place in + the OVF descriptor where it is not allowed, a section appears fewer times + than is required, or a section appears more times than is allowed. + + """ + PARSE_ERROR = None + """ + OVF package parsing error, including: + + * OVF descriptor parsing errors, for example, syntax errors or schema + errors. + * Manifest file parsing and verification errors. + * Certificate file parsing and verification errors. + + """ + GENERATE_ERROR = None + """ + OVF descriptor (which is an XML document) generating error, for example, + well-formedness errors as well as unexpected processing conditions. + + """ + VALIDATION_ERROR = None + """ + An issue with the manifest and signing. + + """ + EXPORT_ERROR = None + """ + Issue during OVF export, for example, malformed deviceId, controller not + found, or file backing for a device not found. + + """ + INTERNAL_ERROR = None + """ + Server encountered an unexpected error which prevented it from fulfilling + the request. + + """ + + def __init__(self, string): + """ + :type string: :class:`str` + :param string: String value for the :class:`Category` instance. + """ + Enum.__init__(string) +
+ Category.VALUE_ILLEGAL = Category('VALUE_ILLEGAL') + Category.ATTRIBUTE_REQUIRED = Category('ATTRIBUTE_REQUIRED') + Category.ATTRIBUTE_ILLEGAL = Category('ATTRIBUTE_ILLEGAL') + Category.ELEMENT_REQUIRED = Category('ELEMENT_REQUIRED') + Category.ELEMENT_ILLEGAL = Category('ELEMENT_ILLEGAL') + Category.ELEMENT_UNKNOWN = Category('ELEMENT_UNKNOWN') + Category.SECTION_UNKNOWN = Category('SECTION_UNKNOWN') + Category.SECTION_RESTRICTION = Category('SECTION_RESTRICTION') + Category.PARSE_ERROR = Category('PARSE_ERROR') + Category.GENERATE_ERROR = Category('GENERATE_ERROR') + Category.VALIDATION_ERROR = Category('VALIDATION_ERROR') + Category.EXPORT_ERROR = Category('EXPORT_ERROR') + Category.INTERNAL_ERROR = Category('INTERNAL_ERROR') + Category._set_binding_type(type.EnumType( + 'com.vmware.vcenter.ovf.parse_issue.category', + Category))
+ParseIssue._set_binding_type(type.StructType( + 'com.vmware.vcenter.ovf.parse_issue', { + 'category': type.ReferenceType(sys.modules[__name__], 'ParseIssue.Category'), + 'file': type.StringType(), + 'line_number': type.IntegerType(), + 'column_number': type.IntegerType(), + 'message': type.ReferenceType(com.vmware.vapi.std_client, 'LocalizableMessage'), + }, + ParseIssue, + False, + None)) + + + +
[docs]class OvfError(VapiStruct): + """ + The ``OvfError`` class describes an error related to accessing, validating, + deploying, or exporting an OVF package. + + .. tip:: + The arguments are used to initialize data attributes with the same + names. + """ + + _validator_list = [ + UnionValidator( + 'category', + { + 'VALIDATION' : [('issues', True)], + 'INPUT' : [('name', True), ('value', True), ('message', True)], + 'SERVER' : [('error', True)], + } + ), + ] + + + def __init__(self, + category=None, + issues=None, + name=None, + value=None, + message=None, + error=None, + ): + """ + :type category: :class:`OvfMessage.Category` + :param category: The message category. + :type issues: :class:`list` of :class:`ParseIssue` + :param issues: :class:`list` of parse issues (see :class:`ParseIssue`). + This attribute is optional and it is only relevant when the value + of ``category`` is :attr:`OvfMessage.Category.VALIDATION`. + :type name: :class:`str` + :param name: The name of input parameter. + This attribute is optional and it is only relevant when the value + of ``category`` is :attr:`OvfMessage.Category.INPUT`. + :type value: :class:`str` + :param value: The value of input parameter. + This attribute is optional and it is only relevant when the value + of ``category`` is :attr:`OvfMessage.Category.INPUT`. + :type message: :class:`com.vmware.vapi.std_client.LocalizableMessage` + :param message: A localizable message. + This attribute is optional and it is only relevant when the value + of ``category`` is :attr:`OvfMessage.Category.INPUT`. + :type error: :class:`vmware.vapi.struct.VapiStruct` + :param error: Represents a server + :class:`com.vmware.vapi.std.errors_client.Error`. + When clients pass a value of this class as a parameter, the + attribute must contain all the attributes defined in + :class:`com.vmware.vapi.std.errors_client.Error`. When methods + return a value of this class as a return value, the attribute will + contain all the attributes defined in + :class:`com.vmware.vapi.std.errors_client.Error`. + This attribute is optional and it is only relevant when the value + of ``category`` is :attr:`OvfMessage.Category.SERVER`. + """ + self.category = category + self.issues = issues + self.name = name + self.value = value + self.message = message + self.error = error + VapiStruct.__init__(self) +
+OvfError._set_binding_type(type.StructType( + 'com.vmware.vcenter.ovf.ovf_error', { + 'category': type.ReferenceType(sys.modules[__name__], 'OvfMessage.Category'), + 'issues': type.OptionalType(type.ListType(type.ReferenceType(sys.modules[__name__], 'ParseIssue'))), + 'name': type.OptionalType(type.StringType()), + 'value': type.OptionalType(type.StringType()), + 'message': type.OptionalType(type.ReferenceType(com.vmware.vapi.std_client, 'LocalizableMessage')), + 'error': type.OptionalType(type.DynamicStructType('vmware.vapi.dynamic_struct', {}, VapiStruct, [type.ReferenceType(com.vmware.vapi.std.errors_client, 'Error')])), + }, + OvfError, + False, + None)) + + + +
[docs]class OvfWarning(VapiStruct): + """ + The ``OvfWarning`` class describes a warning related to accessing, + validating, deploying, or exporting an OVF package. + + .. tip:: + The arguments are used to initialize data attributes with the same + names. + """ + + _validator_list = [ + UnionValidator( + 'category', + { + 'VALIDATION' : [('issues', True)], + 'INPUT' : [('name', True), ('value', True), ('message', True)], + 'SERVER' : [('error', True)], + } + ), + ] + + + def __init__(self, + category=None, + issues=None, + name=None, + value=None, + message=None, + error=None, + ): + """ + :type category: :class:`OvfMessage.Category` + :param category: The message category. + :type issues: :class:`list` of :class:`ParseIssue` + :param issues: :class:`list` of parse issues (see :class:`ParseIssue`). + This attribute is optional and it is only relevant when the value + of ``category`` is :attr:`OvfMessage.Category.VALIDATION`. + :type name: :class:`str` + :param name: The name of input parameter. + This attribute is optional and it is only relevant when the value + of ``category`` is :attr:`OvfMessage.Category.INPUT`. + :type value: :class:`str` + :param value: The value of input parameter. + This attribute is optional and it is only relevant when the value + of ``category`` is :attr:`OvfMessage.Category.INPUT`. + :type message: :class:`com.vmware.vapi.std_client.LocalizableMessage` + :param message: A localizable message. + This attribute is optional and it is only relevant when the value + of ``category`` is :attr:`OvfMessage.Category.INPUT`. + :type error: :class:`vmware.vapi.struct.VapiStruct` + :param error: Represents a server + :class:`com.vmware.vapi.std.errors_client.Error`. + When clients pass a value of this class as a parameter, the + attribute must contain all the attributes defined in + :class:`com.vmware.vapi.std.errors_client.Error`. When methods + return a value of this class as a return value, the attribute will + contain all the attributes defined in + :class:`com.vmware.vapi.std.errors_client.Error`. + This attribute is optional and it is only relevant when the value + of ``category`` is :attr:`OvfMessage.Category.SERVER`. + """ + self.category = category + self.issues = issues + self.name = name + self.value = value + self.message = message + self.error = error + VapiStruct.__init__(self) +
+OvfWarning._set_binding_type(type.StructType( + 'com.vmware.vcenter.ovf.ovf_warning', { + 'category': type.ReferenceType(sys.modules[__name__], 'OvfMessage.Category'), + 'issues': type.OptionalType(type.ListType(type.ReferenceType(sys.modules[__name__], 'ParseIssue'))), + 'name': type.OptionalType(type.StringType()), + 'value': type.OptionalType(type.StringType()), + 'message': type.OptionalType(type.ReferenceType(com.vmware.vapi.std_client, 'LocalizableMessage')), + 'error': type.OptionalType(type.DynamicStructType('vmware.vapi.dynamic_struct', {}, VapiStruct, [type.ReferenceType(com.vmware.vapi.std.errors_client, 'Error')])), + }, + OvfWarning, + False, + None)) + + + +
[docs]class OvfInfo(VapiStruct): + """ + The ``OvfInfo`` class contains informational messages related to accessing, + validating, deploying, or exporting an OVF package. + + .. tip:: + The arguments are used to initialize data attributes with the same + names. + """ + + + + def __init__(self, + messages=None, + ): + """ + :type messages: :class:`list` of :class:`com.vmware.vapi.std_client.LocalizableMessage` + :param messages: A :class:`list` of localizable messages (see + :class:`com.vmware.vapi.std_client.LocalizableMessage`). + """ + self.messages = messages + VapiStruct.__init__(self) +
+OvfInfo._set_binding_type(type.StructType( + 'com.vmware.vcenter.ovf.ovf_info', { + 'messages': type.ListType(type.ReferenceType(com.vmware.vapi.std_client, 'LocalizableMessage')), + }, + OvfInfo, + False, + None)) + + + +
[docs]class OvfParams(VapiStruct): + """ + The ``OvfParams`` class defines the common attributes for all OVF + deployment parameters. OVF parameters serve several purposes: + + * Describe information about a given OVF package. + * Describe default deployment configuration. + * Describe possible deployment values based on the deployment environment. + * Provide deployment-specific configuration. + + Each OVF parameters class specifies a particular configurable aspect of OVF + deployment. An aspect has both a query-model and a deploy-model. The + query-model is used when the OVF package is queried, and the deploy-model + is used when deploying an OVF package. + + Most OVF parameter classes provide both informational and deployment + parameters. However, some are purely informational (for example, download + size) and some are purely deployment parameters (for example, the flag to + indicate whether registration as a vCenter extension is accepted). + + See :func:`LibraryItem.deploy` and :func:`LibraryItem.filter`. + + .. tip:: + The arguments are used to initialize data attributes with the same + names. + """ + + + + def __init__(self, + type=None, + ): + """ + :type type: :class:`str` + :param type: Unique identifier describing the type of the OVF parameters. The + value is the name of the OVF parameters class. + This attribute must be provided in the input parameters when + deploying an OVF package. This attribute will always be present in + the result when retrieving information about an OVF package. + """ + self.type = type + VapiStruct.__init__(self) +
+OvfParams._set_binding_type(type.StructType( + 'com.vmware.vcenter.ovf.ovf_params', { + 'type': type.OptionalType(type.StringType()), + }, + OvfParams, + False, + None)) + + + +
[docs]class Property(VapiStruct): + """ + The ``Property`` class contains the information about a property in an OVF + package. + + A property is uniquely identified by its [classid.]id[.instanceid] + fully-qualified name (see :attr:`Property.class_id`, :attr:`Property.id`, + and :attr:`Property.instance_id`). If multiple properties in an OVF package + have the same fully-qualified name, then the property is excluded and + cannot be set. We do warn about this during import. + + See :func:`LibraryItem.deploy` and :func:`LibraryItem.filter`. + + .. tip:: + The arguments are used to initialize data attributes with the same + names. + """ + + + + def __init__(self, + class_id=None, + id=None, + instance_id=None, + category=None, + ui_optional=None, + label=None, + description=None, + type=None, + value=None, + ): + """ + :type class_id: :class:`str` + :param class_id: The classId of this OVF property. + This attribute is not used in the input parameters when deploying + an OVF package. This attribute will always be present in the result + when retrieving information about an OVF package. + :type id: :class:`str` + :param id: The identifier of this OVF property. + This attribute must be provided in the input parameters when + deploying an OVF package. This attribute will always be present in + the result when retrieving information about an OVF package. + :type instance_id: :class:`str` + :param instance_id: The instanceId of this OVF property. + This attribute is not used in the input parameters when deploying + an OVF package. This attribute will always be present in the result + when retrieving information about an OVF package. + :type category: :class:`str` + :param category: If this is set to a non-empty string, this property starts a new + category. + This attribute is not used in the input parameters when deploying + an OVF package. This attribute is optional in the result when + retrieving information about an OVF package. If None, the property + is in the same category as the previous item, otherwise, it starts + a new category. + :type ui_optional: :class:`bool` + :param ui_optional: Whether a category is UI optional. This is only used if this + property starts a new category (see :attr:`Property.category`). + + The value is stored in an optional attribute vmw:uioptional to the + ovf:Category element. The default value is false. If this value is + true, the properties within this category are optional. The UI + renders this as a group with a check box, and the group is grayed + out until the check box is selected. When the check box is + selected, the input values are read and used in deployment. If + properties within the same category specify conflicting values the + default is used. Only implemented in vSphere Web Client 5.1 and + later as of Nov 2012. + This attribute is not used in the input parameters when deploying + an OVF package. This attribute is optional in the result when + retrieving information about an OVF package. + :type label: :class:`str` + :param label: The display name of this OVF property. + This attribute is not used in the input parameters when deploying + an OVF package. This attribute will always be present in the result + when retrieving information about an OVF package. + :type description: :class:`str` + :param description: A description of this OVF property. + This attribute is not used in the input parameters when deploying + an OVF package. This attribute is optional in the result when + retrieving information about an OVF package. + :type type: :class:`str` + :param type: The type of this OVF property. Refer to the configuration of a + virtual appliance/virtual machine for the valid values. + This attribute is not used in the input parameters when deploying + an OVF package. This attribute will always be present in the result + when retrieving information about an OVF package. + :type value: :class:`str` + :param value: The OVF property value. This contains the default value from + ovf:defaultValue if ovf:value is not present when read. + This attribute must be provided in the input parameters when + deploying an OVF package. This attribute will always be present in + the result when retrieving information about an OVF package. + """ + self.class_id = class_id + self.id = id + self.instance_id = instance_id + self.category = category + self.ui_optional = ui_optional + self.label = label + self.description = description + self.type = type + self.value = value + VapiStruct.__init__(self) +
+Property._set_binding_type(type.StructType( + 'com.vmware.vcenter.ovf.property', { + 'class_id': type.OptionalType(type.StringType()), + 'id': type.OptionalType(type.StringType()), + 'instance_id': type.OptionalType(type.StringType()), + 'category': type.OptionalType(type.StringType()), + 'ui_optional': type.OptionalType(type.BooleanType()), + 'label': type.OptionalType(type.StringType()), + 'description': type.OptionalType(type.StringType()), + 'type': type.OptionalType(type.StringType()), + 'value': type.OptionalType(type.StringType()), + }, + Property, + False, + None)) + + + +
[docs]class PropertyParams(VapiStruct): + """ + The ``PropertyParams`` class contains a :class:`list` of OVF properties + that can be configured when the OVF package is deployed. + + This is based on the ovf:ProductSection. + + See :func:`LibraryItem.deploy` and :func:`LibraryItem.filter`. + + .. tip:: + The arguments are used to initialize data attributes with the same + names. + """ + + + + def __init__(self, + properties=None, + type=None, + ): + """ + :type properties: :class:`list` of :class:`Property` + :param properties: :class:`list` of OVF properties. + This attribute is optional in the input parameters when deploying + an OVF package. This attribute will always be present in the result + when retrieving information about an OVF package. + :type type: :class:`str` + :param type: Unique identifier describing the type of the OVF parameters. The + value is the name of the OVF parameters class. + This attribute must be provided in the input parameters when + deploying an OVF package. This attribute will always be present in + the result when retrieving information about an OVF package. + """ + self.properties = properties + self.type = type + VapiStruct.__init__(self) +
+PropertyParams._set_binding_type(type.StructType( + 'com.vmware.vcenter.ovf.property_params', { + 'properties': type.OptionalType(type.ListType(type.ReferenceType(sys.modules[__name__], 'Property'))), + 'type': type.OptionalType(type.StringType()), + }, + PropertyParams, + False, + None)) + + + +
[docs]class ScaleOutGroup(VapiStruct): + """ + The ``ScaleOutGroup`` class contains information about a scale-out group. + + It allows a virtual system collection to contain a set of children that are + homogeneous with respect to a prototypical virtual system or virtual system + collection. It shall cause the deployment function to replicate the + prototype a number of times, thus allowing the number of instantiated + virtual systems to be configured dynamically at deployment time. + + This is based on the ovf2:ScaleOutSection. + + See :func:`LibraryItem.deploy` and :func:`LibraryItem.filter`. + + .. tip:: + The arguments are used to initialize data attributes with the same + names. + """ + + + + def __init__(self, + id=None, + description=None, + instance_count=None, + minimum_instance_count=None, + maximum_instance_count=None, + ): + """ + :type id: :class:`str` + :param id: The identifier of the scale-out group. + This attribute must be provided in the input parameters when + deploying an OVF package. This attribute will always be present in + the result when retrieving information about an OVF package. + :type description: :class:`str` + :param description: The description of the scale-out group. + This attribute is not used in the input parameters when deploying + an OVF package. This attribute will always be present in the result + when retrieving information about an OVF package. + :type instance_count: :class:`long` + :param instance_count: The scaling factor to use. It defines the number of replicas of the + prototypical virtual system or virtual system collection. + This attribute must be provided in the input parameters when + deploying an OVF package. This attribute will always be present in + the result when retrieving information about an OVF package. + :type minimum_instance_count: :class:`long` + :param minimum_instance_count: The minimum scaling factor. + This attribute is not used in the input parameters when deploying + an OVF package. This attribute will always be present in the result + when retrieving information about an OVF package. This will be 1 if + there is no explicit limit. + :type maximum_instance_count: :class:`long` + :param maximum_instance_count: The maximum scaling factor. + This attribute is not used in the input parameters when deploying + an OVF package. This attribute is optional in the result when + retrieving information about an OVF package. This will be None if + there is no explicit limit. + """ + self.id = id + self.description = description + self.instance_count = instance_count + self.minimum_instance_count = minimum_instance_count + self.maximum_instance_count = maximum_instance_count + VapiStruct.__init__(self) +
+ScaleOutGroup._set_binding_type(type.StructType( + 'com.vmware.vcenter.ovf.scale_out_group', { + 'id': type.OptionalType(type.StringType()), + 'description': type.OptionalType(type.StringType()), + 'instance_count': type.OptionalType(type.IntegerType()), + 'minimum_instance_count': type.OptionalType(type.IntegerType()), + 'maximum_instance_count': type.OptionalType(type.IntegerType()), + }, + ScaleOutGroup, + False, + None)) + + + +
[docs]class ScaleOutParams(VapiStruct): + """ + The ``ScaleOutParams`` class contains information about the scale-out + groups described in the OVF package. + + When deploying an OVF package, a deployment specific instance count can be + specified (see :attr:`ScaleOutGroup.instance_count`. + + This is based on the ovf2:ScaleOutSection. + + See :func:`LibraryItem.deploy` and :func:`LibraryItem.filter`. + + .. tip:: + The arguments are used to initialize data attributes with the same + names. + """ + + + + def __init__(self, + groups=None, + type=None, + ): + """ + :type groups: :class:`list` of :class:`ScaleOutGroup` + :param groups: The :class:`list` of scale-out groups. + This attribute is optional in the input parameters when deploying + an OVF package. If None there are no scale-out groups. This + attribute will always be present in the result when retrieving + information about an OVF package. + :type type: :class:`str` + :param type: Unique identifier describing the type of the OVF parameters. The + value is the name of the OVF parameters class. + This attribute must be provided in the input parameters when + deploying an OVF package. This attribute will always be present in + the result when retrieving information about an OVF package. + """ + self.groups = groups + self.type = type + VapiStruct.__init__(self) +
+ScaleOutParams._set_binding_type(type.StructType( + 'com.vmware.vcenter.ovf.scale_out_params', { + 'groups': type.OptionalType(type.ListType(type.ReferenceType(sys.modules[__name__], 'ScaleOutGroup'))), + 'type': type.OptionalType(type.StringType()), + }, + ScaleOutParams, + False, + None)) + + + +
[docs]class SizeParams(VapiStruct): + """ + The ``SizeParams`` class contains estimates of the download and deployment + sizes. + + This information is based on the file references and the ovf:DiskSection in + the OVF descriptor. + + See :func:`LibraryItem.deploy` and :func:`LibraryItem.filter`. + + .. tip:: + The arguments are used to initialize data attributes with the same + names. + """ + + + + def __init__(self, + approximate_download_size=None, + approximate_flat_deployment_size=None, + approximate_sparse_deployment_size=None, + variable_disk_size=None, + type=None, + ): + """ + :type approximate_download_size: :class:`long` + :param approximate_download_size: A best guess as to the total amount of data that must be + transferred to download the OVF package. + + This may be inaccurate due to disk compression etc. + This attribute is not used in the input parameters when deploying + an OVF package. This attribute is optional in the result when + retrieving information about an OVF package. It will be None if + there is insufficient information to provide a proper estimate. + :type approximate_flat_deployment_size: :class:`long` + :param approximate_flat_deployment_size: A best guess as to the total amount of space required to deploy the + OVF package if using flat disks. + This attribute is not used in the input parameters when deploying + an OVF package. This attribute is optional in the result when + retrieving information about an OVF package. It will be None if + there is insufficient information to provide a proper estimate. + :type approximate_sparse_deployment_size: :class:`long` + :param approximate_sparse_deployment_size: A best guess as to the total amount of space required to deploy the + OVF package using sparse disks. + This attribute is not used in the input parameters when deploying + an OVF package. This attribute is optional in the result when + retrieving information about an OVF package. It will be None if + there is insufficient information to provide a proper estimate. + :type variable_disk_size: :class:`bool` + :param variable_disk_size: Whether the OVF uses variable disk sizes. + + For empty disks, rather than specifying a fixed virtual disk + capacity, the capacity may be given using a reference to a + ovf:Property element in a ovf:ProductSection element in OVF + package. + This attribute is not used in the input parameters when deploying + an OVF package. This attribute is optional in the result when + retrieving information about an OVF package. If None or false, the + OVF does not use variable disk sizes. + :type type: :class:`str` + :param type: Unique identifier describing the type of the OVF parameters. The + value is the name of the OVF parameters class. + This attribute must be provided in the input parameters when + deploying an OVF package. This attribute will always be present in + the result when retrieving information about an OVF package. + """ + self.approximate_download_size = approximate_download_size + self.approximate_flat_deployment_size = approximate_flat_deployment_size + self.approximate_sparse_deployment_size = approximate_sparse_deployment_size + self.variable_disk_size = variable_disk_size + self.type = type + VapiStruct.__init__(self) +
+SizeParams._set_binding_type(type.StructType( + 'com.vmware.vcenter.ovf.size_params', { + 'approximate_download_size': type.OptionalType(type.IntegerType()), + 'approximate_flat_deployment_size': type.OptionalType(type.IntegerType()), + 'approximate_sparse_deployment_size': type.OptionalType(type.IntegerType()), + 'variable_disk_size': type.OptionalType(type.BooleanType()), + 'type': type.OptionalType(type.StringType()), + }, + SizeParams, + False, + None)) + + + +
[docs]class UnknownSection(VapiStruct): + """ + The ``UnknownSection`` class contains information about an unknown section + in an OVF package. + + .. tip:: + The arguments are used to initialize data attributes with the same + names. + """ + + + + def __init__(self, + tag=None, + info=None, + ): + """ + :type tag: :class:`str` + :param tag: A namespace-qualified tag in the form ``{ns}tag``. + :type info: :class:`str` + :param info: The description of the Info element. + """ + self.tag = tag + self.info = info + VapiStruct.__init__(self) +
+UnknownSection._set_binding_type(type.StructType( + 'com.vmware.vcenter.ovf.unknown_section', { + 'tag': type.StringType(), + 'info': type.StringType(), + }, + UnknownSection, + False, + None)) + + + +
[docs]class UnknownSectionParams(VapiStruct): + """ + The ``UnknownSectionParams`` class contains a :class:`list` of unknown, + non-required sections. + + See :func:`LibraryItem.deploy` and :func:`LibraryItem.filter`. + + .. tip:: + The arguments are used to initialize data attributes with the same + names. + """ + + + + def __init__(self, + unknown_sections=None, + type=None, + ): + """ + :type unknown_sections: :class:`list` of :class:`UnknownSection` + :param unknown_sections: :class:`list` of unknown, non-required sections. + This attribute is not used in the input parameters when deploying + an OVF package. This attribute will always be present in the result + when retrieving information about an OVF package. + :type type: :class:`str` + :param type: Unique identifier describing the type of the OVF parameters. The + value is the name of the OVF parameters class. + This attribute must be provided in the input parameters when + deploying an OVF package. This attribute will always be present in + the result when retrieving information about an OVF package. + """ + self.unknown_sections = unknown_sections + self.type = type + VapiStruct.__init__(self) +
+UnknownSectionParams._set_binding_type(type.StructType( + 'com.vmware.vcenter.ovf.unknown_section_params', { + 'unknown_sections': type.OptionalType(type.ListType(type.ReferenceType(sys.modules[__name__], 'UnknownSection'))), + 'type': type.OptionalType(type.StringType()), + }, + UnknownSectionParams, + False, + None)) + + + +
[docs]class VcenterExtensionParams(VapiStruct): + """ + The ``VcenterExtensionParams`` class specifies that the OVF package should + be registered as a vCenter extension. The virtual machine or virtual + appliance will gain unrestricted access to the vCenter Server APIs. It must + be connected to a network with connectivity to the vCenter server. + + See :func:`LibraryItem.deploy` and :func:`LibraryItem.filter`. + + .. tip:: + The arguments are used to initialize data attributes with the same + names. + """ + + + + def __init__(self, + required=None, + registration_accepted=None, + type=None, + ): + """ + :type required: :class:`bool` + :param required: Whether registration as a vCenter extension is required. + This attribute is not used in the input parameters when deploying + an OVF package. This attribute will always be present in the result + when retrieving information about an OVF package. + :type registration_accepted: :class:`bool` + :param registration_accepted: Whether registration as a vCenter extension is accepted. + + If registration as a vCenter extension is required (see + :attr:`VcenterExtensionParams.required`), this must be set to true + during deployment. Defaults to false when returned from server. + This attribute must be provided in the input parameters when + deploying an OVF package. This attribute will always be present in + the result when retrieving information about an OVF package. + :type type: :class:`str` + :param type: Unique identifier describing the type of the OVF parameters. The + value is the name of the OVF parameters class. + This attribute must be provided in the input parameters when + deploying an OVF package. This attribute will always be present in + the result when retrieving information about an OVF package. + """ + self.required = required + self.registration_accepted = registration_accepted + self.type = type + VapiStruct.__init__(self) +
+VcenterExtensionParams._set_binding_type(type.StructType( + 'com.vmware.vcenter.ovf.vcenter_extension_params', { + 'required': type.OptionalType(type.BooleanType()), + 'registration_accepted': type.OptionalType(type.BooleanType()), + 'type': type.OptionalType(type.StringType()), + }, + VcenterExtensionParams, + False, + None)) + + + +
[docs]class ExportFlag(VapiInterface): + """ + The ``ExportFlag`` class provides methods for retrieving information about + the export flags supported by the server. Export flags can be specified in + a :class:`LibraryItem.CreateSpec` to customize an OVF export. + """ + + + def __init__(self, config): + """ + :type config: :class:`vmware.vapi.bindings.stub.StubConfiguration` + :param config: Configuration to be used for creating the stub. + """ + VapiInterface.__init__(self, config, _ExportFlagStub) + +
[docs] class Info(VapiStruct): + """ + The ``ExportFlag.Info`` class describes an export flag supported by the + server. + + .. tip:: + The arguments are used to initialize data attributes with the same + names. + """ + + + + def __init__(self, + option=None, + description=None, + ): + """ + :type option: :class:`str` + :param option: The name of the export flag that is supported by the server. + :type description: :class:`com.vmware.vapi.std_client.LocalizableMessage` + :param description: Localizable description of the export flag. + """ + self.option = option + self.description = description + VapiStruct.__init__(self) +
+ Info._set_binding_type(type.StructType( + 'com.vmware.vcenter.ovf.export_flag.info', { + 'option': type.StringType(), + 'description': type.ReferenceType(com.vmware.vapi.std_client, 'LocalizableMessage'), + }, + Info, + False, + None)) + + +
[docs] def list(self): + """ + Returns information about the supported export flags by the server. + + The supported flags are: + + PRESERVE_MAC + Include MAC addresses for network adapters. + EXTRA_CONFIG + Include extra configuration in OVF export. + + + Future server versions might support additional flags. + + + :rtype: :class:`list` of :class:`ExportFlag.Info` + :return: A :class:`list` of supported export flags. + :raise: :class:`com.vmware.vapi.std.errors_client.Unauthorized` + if you do not have all of the privileges described as follows: + + * Method execution requires ``System.Read``. + """ + return self._invoke('list', None) +
+
[docs]class ImportFlag(VapiInterface): + """ + The ``ImportFlag`` class provides methods for retrieving information about + the import flags supported by the deployment platform. Import flags can be + specified in a :class:`LibraryItem.ResourcePoolDeploymentSpec` to customize + an OVF deployment. + """ + + + def __init__(self, config): + """ + :type config: :class:`vmware.vapi.bindings.stub.StubConfiguration` + :param config: Configuration to be used for creating the stub. + """ + VapiInterface.__init__(self, config, _ImportFlagStub) + +
[docs] class Info(VapiStruct): + """ + The ``ImportFlag.Info`` class describes an import flag supported by the + deployment platform. + + .. tip:: + The arguments are used to initialize data attributes with the same + names. + """ + + + + def __init__(self, + option=None, + description=None, + ): + """ + :type option: :class:`str` + :param option: The name of the import flag that is supported by the deployment + platform. + :type description: :class:`com.vmware.vapi.std_client.LocalizableMessage` + :param description: Localizable description of the import flag. + """ + self.option = option + self.description = description + VapiStruct.__init__(self) +
+ Info._set_binding_type(type.StructType( + 'com.vmware.vcenter.ovf.import_flag.info', { + 'option': type.StringType(), + 'description': type.ReferenceType(com.vmware.vapi.std_client, 'LocalizableMessage'), + }, + Info, + False, + None)) + + +
[docs] def list(self, + rp, + ): + """ + Returns information about the import flags supported by the deployment + platform. + + The supported flags are: + + LAX + Lax mode parsing of the OVF descriptor. + + + Future server versions might support additional flags. + + :type rp: :class:`str` + :param rp: The identifier of resource pool target for retrieving the import + flag(s). + The parameter must be an identifier for the resource type: + ``ResourcePool``. + :rtype: :class:`list` of :class:`ImportFlag.Info` + :return: A :class:`list` of supported import flags. + :raise: :class:`com.vmware.vapi.std.errors_client.NotFound` + If the resource pool associated with ``rp`` does not exist. + :raise: :class:`com.vmware.vapi.std.errors_client.Unauthorized` + if you do not have all of the privileges described as follows: + + * Method execution requires ``System.Read``. + * The resource ``ResourcePool`` referenced by the parameter ``rp`` + requires ``System.Read``. + """ + return self._invoke('list', + { + 'rp': rp, + }) +
+
[docs]class LibraryItem(VapiInterface): + """ + The ``LibraryItem`` class provides methods to deploy virtual machines and + virtual appliances from library items containing Open Virtualization Format + (OVF) packages in content library, as well as methods to create library + items in content library from virtual machines and virtual appliances. + + To deploy a virtual machine or a virtual appliance from a library item: + + #. Create a :class:`LibraryItem.DeploymentTarget` to specify the target + deployment type and target deployment designation. + #. Create a :class:`LibraryItem.ResourcePoolDeploymentSpec` to specify the + parameters for the target deployment. + #. Use the ``deploy`` method with the created target and parameter + specifications, along with the identifier of the specified source content + library item. See :func:`LibraryItem.deploy`. + + + + + + To create a library item in content library from a virtual machine or + virtual appliance: + + #. Create a :class:`LibraryItem.DeployableIdentity` to specify the source + virtual machine or virtual appliance to be used as the OVF template source. + #. Create a :class:`LibraryItem.CreateTarget` to specify the target library + and library item. + #. Create a :class:`LibraryItem.CreateSpec` to specify the settings for the + OVF package to be created. + #. Use the ``create`` method with the created target and parameter + specifications, along with the specified source entity. See + :func:`LibraryItem.create`. + + + """ + DEPLOYABLE = ["VirtualMachine", "VirtualApp"] + """ + The types of resources that can be created by deploying an OVF package and can + be captured to create a library item using the ``LibraryItem`` class. + + """ + + def __init__(self, config): + """ + :type config: :class:`vmware.vapi.bindings.stub.StubConfiguration` + :param config: Configuration to be used for creating the stub. + """ + VapiInterface.__init__(self, config, _LibraryItemStub) + +
[docs] class DeployableIdentity(VapiStruct): + """ + The ``LibraryItem.DeployableIdentity`` class describes the resource created + by a deployment, or the source resource from which library item can be + created, by specifying its resource type and resource identifier. + + .. tip:: + The arguments are used to initialize data attributes with the same + names. + """ + + + + def __init__(self, + type=None, + id=None, + ): + """ + :type type: :class:`str` + :param type: Type of the deployable resource. + When clients pass a value of this class as a parameter, the + attribute must be one of ``VirtualMachine`` or ``VirtualApp``. When + methods return a value of this class as a return value, the + attribute will be one of ``VirtualMachine`` or ``VirtualApp``. + :type id: :class:`str` + :param id: Identifier of the deployable resource. + When clients pass a value of this class as a parameter, the + attribute ``type`` must contain the actual resource type. When + methods return a value of this class as a return value, the + attribute ``type`` will contain the actual resource type. + """ + self.type = type + self.id = id + VapiStruct.__init__(self) +
+ DeployableIdentity._set_binding_type(type.StructType( + 'com.vmware.vcenter.ovf.library_item.deployable_identity', { + 'type': type.StringType(), + 'id': type.IdType(resource_types=[], resource_type_field_name="type"), + }, + DeployableIdentity, + False, + None)) + +
[docs] class ResourcePoolDeploymentSpec(VapiStruct): + """ + The ``LibraryItem.ResourcePoolDeploymentSpec`` class defines the deployment + parameters that can be specified for the ``deploy`` method where the + deployment target is a resource pool. See :func:`LibraryItem.deploy`. + + .. tip:: + The arguments are used to initialize data attributes with the same + names. + """ + + + + def __init__(self, + name=None, + annotation=None, + accept_all_eula=None, + network_mappings=None, + storage_mappings=None, + storage_provisioning=None, + storage_profile_id=None, + locale=None, + flags=None, + additional_parameters=None, + default_datastore_id=None, + ): + """ + :type name: :class:`str` or ``None`` + :param name: Name assigned to the deployed target virtual machine or virtual + appliance. + If None, the server will use the name from the OVF package. + :type annotation: :class:`str` or ``None`` + :param annotation: Annotation assigned to the deployed target virtual machine or + virtual appliance. + If None, the server will use the annotation from the OVF package. + :type accept_all_eula: :class:`bool` + :param accept_all_eula: Whether to accept all End User License Agreements. See + :attr:`LibraryItem.OvfSummary.eulas`. + :type network_mappings: (:class:`dict` of :class:`str` and :class:`str`) or ``None`` + :param network_mappings: Specification of the target network to use for sections of type + ovf:NetworkSection in the OVF descriptor. The key in the + :class:`dict` is the section identifier of the ovf:NetworkSection + section in the OVF descriptor and the value is the target network + to be used for deployment. + When clients pass a value of this class as a parameter, the value + in the attribute :class:`dict` must be an identifier for the + resource type: ``Network``. When methods return a value of this + class as a return value, the value in the attribute :class:`dict` + will be an identifier for the resource type: ``Network``. + If None, the server will choose a network mapping. + :type storage_mappings: (:class:`dict` of :class:`str` and :class:`LibraryItem.StorageGroupMapping`) or ``None`` + :param storage_mappings: Specification of the target storage to use for sections of type + vmw:StorageGroupSection in the OVF descriptor. The key in the + :class:`dict` is the section identifier of the + ovf:StorageGroupSection section in the OVF descriptor and the value + is the target storage specification to be used for deployment. See + :class:`LibraryItem.StorageGroupMapping`. + If None, the server will choose a storage mapping. + :type storage_provisioning: :class:`DiskProvisioningType` or ``None`` + :param storage_provisioning: Default storage provisioning type to use for all sections of type + vmw:StorageSection in the OVF descriptor. + If None, the server will choose the provisioning type. + :type storage_profile_id: :class:`str` or ``None`` + :param storage_profile_id: Default storage profile to use for all sections of type + vmw:StorageSection in the OVF descriptor. + When clients pass a value of this class as a parameter, the + attribute must be an identifier for the resource type: + ``StorageProfile``. When methods return a value of this class as a + return value, the attribute will be an identifier for the resource + type: ``StorageProfile``. + If None, the server will choose the default profile. + :type locale: :class:`str` or ``None`` + :param locale: The locale to use for parsing the OVF descriptor. + If None, the server locale will be used. + :type flags: :class:`list` of :class:`str` or ``None`` + :param flags: Flags to be use for deployment. The supported flag values can be + obtained using :func:`ImportFlag.list`. + If None, no flags will be used. + :type additional_parameters: :class:`list` of :class:`vmware.vapi.struct.VapiStruct` or ``None`` + :param additional_parameters: Additional OVF parameters that may be needed for the deployment. + Additional OVF parameters may be required by the OVF descriptor of + the OVF package in the library item. Examples of OVF parameters + that can be specified through this attribute include, but are not + limited to: + + * :class:`DeploymentOptionParams` + * :class:`ExtraConfigParams` + * :class:`IpAllocationParams` + * :class:`PropertyParams` + * :class:`ScaleOutParams` + * :class:`VcenterExtensionParams` + When clients pass a value of this class as a parameter, the + attribute must contain all the attributes defined in + :class:`OvfParams`. When methods return a value of this class as a + return value, the attribute will contain all the attributes defined + in :class:`OvfParams`. + If None, the server will choose default settings for all parameters + necessary for the ``deploy`` method. See + :func:`LibraryItem.deploy`. + :type default_datastore_id: :class:`str` or ``None`` + :param default_datastore_id: Default datastore to use for all sections of type + vmw:StorageSection in the OVF descriptor. + When clients pass a value of this class as a parameter, the + attribute must be an identifier for the resource type: + ``Datastore``. When methods return a value of this class as a + return value, the attribute will be an identifier for the resource + type: ``Datastore``. + If None, the server will choose the default datastore. + """ + self.name = name + self.annotation = annotation + self.accept_all_eula = accept_all_eula + self.network_mappings = network_mappings + self.storage_mappings = storage_mappings + self.storage_provisioning = storage_provisioning + self.storage_profile_id = storage_profile_id + self.locale = locale + self.flags = flags + self.additional_parameters = additional_parameters + self.default_datastore_id = default_datastore_id + VapiStruct.__init__(self, { + 'accept_all_EULA': 'accept_all_eula', + }) +
+ ResourcePoolDeploymentSpec._set_binding_type(type.StructType( + 'com.vmware.vcenter.ovf.library_item.resource_pool_deployment_spec', { + 'name': type.OptionalType(type.StringType()), + 'annotation': type.OptionalType(type.StringType()), + 'accept_all_EULA': type.BooleanType(), + 'network_mappings': type.OptionalType(type.MapType(type.StringType(), type.IdType())), + 'storage_mappings': type.OptionalType(type.MapType(type.StringType(), type.ReferenceType(sys.modules[__name__], 'LibraryItem.StorageGroupMapping'))), + 'storage_provisioning': type.OptionalType(type.ReferenceType(sys.modules[__name__], 'DiskProvisioningType')), + 'storage_profile_id': type.OptionalType(type.IdType()), + 'locale': type.OptionalType(type.StringType()), + 'flags': type.OptionalType(type.ListType(type.StringType())), + 'additional_parameters': type.OptionalType(type.ListType(type.DynamicStructType('vmware.vapi.dynamic_struct', {}, VapiStruct, [type.ReferenceType(sys.modules[__name__], 'OvfParams')]))), + 'default_datastore_id': type.OptionalType(type.IdType()), + }, + ResourcePoolDeploymentSpec, + False, + None)) + +
[docs] class StorageGroupMapping(VapiStruct): + """ + The ``LibraryItem.StorageGroupMapping`` class defines the storage + deployment target and storage provisioning type for a section of type + vmw:StorageGroupSection in the OVF descriptor. + + .. tip:: + The arguments are used to initialize data attributes with the same + names. + """ + + _validator_list = [ + UnionValidator( + 'type', + { + 'DATASTORE' : [('datastore_id', True)], + 'STORAGE_PROFILE' : [('storage_profile_id', True)], + } + ), + ] + + + def __init__(self, + type=None, + datastore_id=None, + storage_profile_id=None, + provisioning=None, + ): + """ + :type type: :class:`LibraryItem.StorageGroupMapping.Type` + :param type: Type of storage deployment target to use for the + vmw:StorageGroupSection section. The specified value must be + :attr:`LibraryItem.StorageGroupMapping.Type.DATASTORE` or + :attr:`LibraryItem.StorageGroupMapping.Type.STORAGE_PROFILE`. + :type datastore_id: :class:`str` + :param datastore_id: Target datastore to be used for the storage group. + When clients pass a value of this class as a parameter, the + attribute must be an identifier for the resource type: + ``Datastore``. When methods return a value of this class as a + return value, the attribute will be an identifier for the resource + type: ``Datastore``. + This attribute is optional and it is only relevant when the value + of ``type`` is + :attr:`LibraryItem.StorageGroupMapping.Type.DATASTORE`. + :type storage_profile_id: :class:`str` + :param storage_profile_id: Target storage profile to be used for the storage group. + When clients pass a value of this class as a parameter, the + attribute must be an identifier for the resource type: + ``StorageProfile``. When methods return a value of this class as a + return value, the attribute will be an identifier for the resource + type: ``StorageProfile``. + This attribute is optional and it is only relevant when the value + of ``type`` is + :attr:`LibraryItem.StorageGroupMapping.Type.STORAGE_PROFILE`. + :type provisioning: :class:`DiskProvisioningType` or ``None`` + :param provisioning: Target provisioning type to use for the storage group. + If None, + :attr:`LibraryItem.ResourcePoolDeploymentSpec.storage_provisioning` + will be used. + """ + self.type = type + self.datastore_id = datastore_id + self.storage_profile_id = storage_profile_id + self.provisioning = provisioning + VapiStruct.__init__(self) + +
[docs] class Type(Enum): + """ + The ``LibraryItem.StorageGroupMapping.Type`` class defines the supported + types of storage targets for sections of type vmw:StroageGroupSection in + the OVF descriptor. + + .. note:: + This class represents an enumerated type in the interface language + definition. The class contains class attributes which represent the + values in the current version of the enumerated type. Newer versions of + the enumerated type may contain new values. To use new values of the + enumerated type in communication with a server that supports the newer + version of the API, you instantiate this class. See :ref:`enumerated + type description page <enumeration_description>`. + """ + DATASTORE = None + """ + Storage deployment target is a datastore. + + """ + STORAGE_PROFILE = None + """ + Storage deployment target is a storage profile. + + """ + + def __init__(self, string): + """ + :type string: :class:`str` + :param string: String value for the :class:`Type` instance. + """ + Enum.__init__(string) +
+ Type.DATASTORE = Type('DATASTORE') + Type.STORAGE_PROFILE = Type('STORAGE_PROFILE') + Type._set_binding_type(type.EnumType( + 'com.vmware.vcenter.ovf.library_item.storage_group_mapping.type', + Type))
+ StorageGroupMapping._set_binding_type(type.StructType( + 'com.vmware.vcenter.ovf.library_item.storage_group_mapping', { + 'type': type.ReferenceType(sys.modules[__name__], 'LibraryItem.StorageGroupMapping.Type'), + 'datastore_id': type.OptionalType(type.IdType()), + 'storage_profile_id': type.OptionalType(type.IdType()), + 'provisioning': type.OptionalType(type.ReferenceType(sys.modules[__name__], 'DiskProvisioningType')), + }, + StorageGroupMapping, + False, + None)) + +
[docs] class ResultInfo(VapiStruct): + """ + The ``LibraryItem.ResultInfo`` class defines the information returned along + with the result of a ``create`` or ``deploy`` method to describe errors, + warnings, and informational messages produced by the server. + + .. tip:: + The arguments are used to initialize data attributes with the same + names. + """ + + + + def __init__(self, + errors=None, + warnings=None, + information=None, + ): + """ + :type errors: :class:`list` of :class:`OvfError` + :param errors: List of errors. Errors would have prevented the ``create`` or + ``deploy`` method from completing successfully. + :type warnings: :class:`list` of :class:`OvfWarning` + :param warnings: List of warnings. Warnings would not have prevented the ``create`` + or ``deploy`` method from completing successfully. But there might + be issues that warrant attention. + :type information: :class:`list` of :class:`OvfInfo` + :param information: List of information messages. For example, a non-required parameter + was ignored. + """ + self.errors = errors + self.warnings = warnings + self.information = information + VapiStruct.__init__(self) +
+ ResultInfo._set_binding_type(type.StructType( + 'com.vmware.vcenter.ovf.library_item.result_info', { + 'errors': type.ListType(type.ReferenceType(sys.modules[__name__], 'OvfError')), + 'warnings': type.ListType(type.ReferenceType(sys.modules[__name__], 'OvfWarning')), + 'information': type.ListType(type.ReferenceType(sys.modules[__name__], 'OvfInfo')), + }, + ResultInfo, + False, + None)) + +
[docs] class DeploymentResult(VapiStruct): + """ + The ``LibraryItem.DeploymentResult`` class defines the result of the + ``deploy`` method. See :func:`LibraryItem.deploy`. + + .. tip:: + The arguments are used to initialize data attributes with the same + names. + """ + + + + def __init__(self, + succeeded=None, + resource_id=None, + error=None, + ): + """ + :type succeeded: :class:`bool` + :param succeeded: Whether the ``deploy`` method completed successfully. + :type resource_id: :class:`LibraryItem.DeployableIdentity` or ``None`` + :param resource_id: Identifier of the deployed resource entity. + If None, the ``deploy`` method failed and + :attr:`LibraryItem.DeploymentResult.error` will describe the + error(s) that caused the failure. + :type error: :class:`LibraryItem.ResultInfo` or ``None`` + :param error: Errors, warnings, and informational messages produced by the + ``deploy`` method. + If None, no errors, warnings, or informational messages were + reported by the ``deploy`` method. + """ + self.succeeded = succeeded + self.resource_id = resource_id + self.error = error + VapiStruct.__init__(self) +
+ DeploymentResult._set_binding_type(type.StructType( + 'com.vmware.vcenter.ovf.library_item.deployment_result', { + 'succeeded': type.BooleanType(), + 'resource_id': type.OptionalType(type.ReferenceType(sys.modules[__name__], 'LibraryItem.DeployableIdentity')), + 'error': type.OptionalType(type.ReferenceType(sys.modules[__name__], 'LibraryItem.ResultInfo')), + }, + DeploymentResult, + False, + None)) + +
[docs] class DeploymentTarget(VapiStruct): + """ + The ``LibraryItem.DeploymentTarget`` class describes the location (target) + where a virtual machine or virtual appliance should be deployed. It is used + in the ``deploy`` and ``filter`` methods. See :func:`LibraryItem.deploy` + and :func:`LibraryItem.filter`. + + .. tip:: + The arguments are used to initialize data attributes with the same + names. + """ + + + + def __init__(self, + resource_pool_id=None, + host_id=None, + folder_id=None, + ): + """ + :type resource_pool_id: :class:`str` + :param resource_pool_id: Identifier of the resource pool to which the virtual machine or + virtual appliance should be attached. + When clients pass a value of this class as a parameter, the + attribute must be an identifier for the resource type: + ``ResourcePool``. When methods return a value of this class as a + return value, the attribute will be an identifier for the resource + type: ``ResourcePool``. + :type host_id: :class:`str` or ``None`` + :param host_id: Identifier of the target host on which the virtual machine or + virtual appliance will run. The target host must be a member of the + cluster that contains the resource pool identified by + :attr:`LibraryItem.DeploymentTarget.resource_pool_id`. + When clients pass a value of this class as a parameter, the + attribute must be an identifier for the resource type: + ``HostSystem``. When methods return a value of this class as a + return value, the attribute will be an identifier for the resource + type: ``HostSystem``. + If None, the server will automatically select a target host from + the resource pool if + :attr:`LibraryItem.DeploymentTarget.resource_pool_id` is a + stand-alone host or a cluster with Distributed Resource Scheduling + (DRS) enabled. + :type folder_id: :class:`str` or ``None`` + :param folder_id: Identifier of the vCenter folder that should contain the virtual + machine or virtual appliance. The folder must be virtual machine + folder. + When clients pass a value of this class as a parameter, the + attribute must be an identifier for the resource type: ``Folder``. + When methods return a value of this class as a return value, the + attribute will be an identifier for the resource type: ``Folder``. + If None, the server will choose the deployment folder. + """ + self.resource_pool_id = resource_pool_id + self.host_id = host_id + self.folder_id = folder_id + VapiStruct.__init__(self) +
+ DeploymentTarget._set_binding_type(type.StructType( + 'com.vmware.vcenter.ovf.library_item.deployment_target', { + 'resource_pool_id': type.IdType(resource_types='ResourcePool'), + 'host_id': type.OptionalType(type.IdType()), + 'folder_id': type.OptionalType(type.IdType()), + }, + DeploymentTarget, + False, + None)) + +
[docs] class OvfSummary(VapiStruct): + """ + The ``LibraryItem.OvfSummary`` class defines the result of the ``filter`` + method. See :func:`LibraryItem.filter`. The attributes in the class + describe parameterizable information in the OVF descriptor, with respect to + a deployment target, for the ``deploy`` method. See + :func:`LibraryItem.deploy`. + + .. tip:: + The arguments are used to initialize data attributes with the same + names. + """ + + + + def __init__(self, + name=None, + annotation=None, + eulas=None, + networks=None, + storage_groups=None, + additional_params=None, + ): + """ + :type name: :class:`str` or ``None`` + :param name: Default name for the virtual machine or virtual appliance. + If None, the OVF descriptor did not specify a name. + :type annotation: :class:`str` or ``None`` + :param annotation: Default annotation for the virtual machine or virtual appliance. + If None, the OVF descriptor did not specify an annotation. + :type eulas: :class:`list` of :class:`str` + :param eulas: :class:`list` of End User License Agreements specified in the OVF + descriptor. All end user license agreements must be accepted in + order for the ``deploy`` method to succeed. See + :attr:`LibraryItem.ResourcePoolDeploymentSpec.accept_all_eula`. + :type networks: :class:`list` of :class:`str` or ``None`` + :param networks: :class:`list` of section identifiers for sections of type + ovf:NetworkSection in the OVF descriptor. These identifiers can be + used as keys in + :attr:`LibraryItem.ResourcePoolDeploymentSpec.network_mappings`. + If None, the OVF descriptor did not specify any networks. + :type storage_groups: :class:`list` of :class:`str` or ``None`` + :param storage_groups: :class:`list` of section identifiers for sections of type + vmw:StorageGroupSection in the OVF descriptor. These identifiers + can be used as keys in + :attr:`LibraryItem.ResourcePoolDeploymentSpec.storage_mappings`. + If None, the OVF descriptor did not specify any storage groups. + :type additional_params: :class:`list` of :class:`vmware.vapi.struct.VapiStruct` or ``None`` + :param additional_params: List of additional OVF parameters which can be specified for the + deployment target. These OVF parameters can be inspected, + optionally modified, and used as values in + :attr:`LibraryItem.ResourcePoolDeploymentSpec.additional_parameters` + for the ``deploy`` method. + When clients pass a value of this class as a parameter, the + attribute must contain all the attributes defined in + :class:`OvfParams`. When methods return a value of this class as a + return value, the attribute will contain all the attributes defined + in :class:`OvfParams`. + If None, the OVF descriptor does not require addtional parameters + or does not have additional parameters suitable for the deployment + target. + """ + self.name = name + self.annotation = annotation + self.eulas = eulas + self.networks = networks + self.storage_groups = storage_groups + self.additional_params = additional_params + VapiStruct.__init__(self, { + 'EULAs': 'eulas', + }) +
+ OvfSummary._set_binding_type(type.StructType( + 'com.vmware.vcenter.ovf.library_item.ovf_summary', { + 'name': type.OptionalType(type.StringType()), + 'annotation': type.OptionalType(type.StringType()), + 'EULAs': type.ListType(type.StringType()), + 'networks': type.OptionalType(type.ListType(type.StringType())), + 'storage_groups': type.OptionalType(type.ListType(type.StringType())), + 'additional_params': type.OptionalType(type.ListType(type.DynamicStructType('vmware.vapi.dynamic_struct', {}, VapiStruct, [type.ReferenceType(sys.modules[__name__], 'OvfParams')]))), + }, + OvfSummary, + False, + None)) + +
[docs] class CreateTarget(VapiStruct): + """ + The ``LibraryItem.CreateTarget`` class specifies the target library item + when capturing a virtual machine or virtual appliance as an OVF package in + a library item in a content library. The target can be an existing library + item, which will be updated, creating a new version, or it can be a newly + created library item in a specified library. See + :func:`LibraryItem.create`. + + .. tip:: + The arguments are used to initialize data attributes with the same + names. + """ + + + + def __init__(self, + library_id=None, + library_item_id=None, + ): + """ + :type library_id: :class:`str` or ``None`` + :param library_id: Identifier of the library in which a new library item should be + created. This attribute is not used if the ``libraryItemId`` + attribute is specified. + When clients pass a value of this class as a parameter, the + attribute must be an identifier for the resource type: + ``com.vmware.content.Library``. When methods return a value of this + class as a return value, the attribute will be an identifier for + the resource type: ``com.vmware.content.Library``. + If None, the ``libraryItemId`` attribute must be specified. + :type library_item_id: :class:`str` or ``None`` + :param library_item_id: Identifier of the library item that should be should be updated. + When clients pass a value of this class as a parameter, the + attribute must be an identifier for the resource type: + ``com.vmware.content.library.Item``. When methods return a value of + this class as a return value, the attribute will be an identifier + for the resource type: ``com.vmware.content.library.Item``. + If None, a new library item will be created. The ``libraryId`` + attribute must be specified if this attribute is None. + """ + self.library_id = library_id + self.library_item_id = library_item_id + VapiStruct.__init__(self) +
+ CreateTarget._set_binding_type(type.StructType( + 'com.vmware.vcenter.ovf.library_item.create_target', { + 'library_id': type.OptionalType(type.IdType()), + 'library_item_id': type.OptionalType(type.IdType()), + }, + CreateTarget, + False, + None)) + +
[docs] class CreateSpec(VapiStruct): + """ + The ``LibraryItem.CreateSpec`` class defines the information used to create + or update a library item containing an OVF package. + + .. tip:: + The arguments are used to initialize data attributes with the same + names. + """ + + + + def __init__(self, + name=None, + description=None, + flags=None, + ): + """ + :type name: :class:`str` or ``None`` + :param name: Name to use in the OVF descriptor stored in the library item. + If None, the server will use source's current name. + :type description: :class:`str` or ``None`` + :param description: Description to use in the OVF descriptor stored in the library + item. + If None, the server will use source's current annotation. + :type flags: :class:`list` of :class:`str` or ``None`` + :param flags: Flags to use for OVF package creation. The supported flags can be + obtained using :func:`ExportFlag.list`. + If None, no flags will be used. + """ + self.name = name + self.description = description + self.flags = flags + VapiStruct.__init__(self) +
+ CreateSpec._set_binding_type(type.StructType( + 'com.vmware.vcenter.ovf.library_item.create_spec', { + 'name': type.OptionalType(type.StringType()), + 'description': type.OptionalType(type.StringType()), + 'flags': type.OptionalType(type.ListType(type.StringType())), + }, + CreateSpec, + False, + None)) + +
[docs] class CreateResult(VapiStruct): + """ + The ``LibraryItem.CreateResult`` class defines the result of the ``create`` + method. See :func:`LibraryItem.create`. + + .. tip:: + The arguments are used to initialize data attributes with the same + names. + """ + + + + def __init__(self, + succeeded=None, + ovf_library_item_id=None, + error=None, + ): + """ + :type succeeded: :class:`bool` + :param succeeded: Whether the ``create`` method completed successfully. + :type ovf_library_item_id: :class:`str` or ``None`` + :param ovf_library_item_id: Identifier of the created or updated library item. + When clients pass a value of this class as a parameter, the + attribute must be an identifier for the resource type: + ``com.vmware.content.library.Item``. When methods return a value of + this class as a return value, the attribute will be an identifier + for the resource type: ``com.vmware.content.library.Item``. + If None, the ``create`` method failed and + :attr:`LibraryItem.CreateResult.error` will describe the error(s) + that caused the failure. + :type error: :class:`LibraryItem.ResultInfo` or ``None`` + :param error: Errors, warnings, and informational messages produced by the + ``create`` method. + If None, no errors, warnings, or informational messages were + reported by the ``create`` method. + """ + self.succeeded = succeeded + self.ovf_library_item_id = ovf_library_item_id + self.error = error + VapiStruct.__init__(self) +
+ CreateResult._set_binding_type(type.StructType( + 'com.vmware.vcenter.ovf.library_item.create_result', { + 'succeeded': type.BooleanType(), + 'ovf_library_item_id': type.OptionalType(type.IdType()), + 'error': type.OptionalType(type.ReferenceType(sys.modules[__name__], 'LibraryItem.ResultInfo')), + }, + CreateResult, + False, + None)) + + +
[docs] def deploy(self, + ovf_library_item_id, + target, + deployment_spec, + client_token=None, + ): + """ + Deploys an OVF package stored in content library to a newly created + virtual machine or virtual appliance. + + This method deploys an OVF package which is stored in the library item + specified by ``ovf_library_item_id``. It uses the deployment + specification in ``deployment_spec`` to deploy the OVF package to the + location specified by ``target``. + + :type client_token: :class:`str` or ``None`` + :param client_token: Client-generated token used to retry a request if the client fails + to get a response from the server. If the original request + succeeded, the result of that request will be returned, otherwise + the operation will be retried. + If None, the server will create a token. + :type ovf_library_item_id: :class:`str` + :param ovf_library_item_id: Identifier of the content library item containing the OVF package + to be deployed. + The parameter must be an identifier for the resource type: + ``com.vmware.content.library.Item``. + :type target: :class:`LibraryItem.DeploymentTarget` + :param target: Specification of the deployment target. + :type deployment_spec: :class:`LibraryItem.ResourcePoolDeploymentSpec` + :param deployment_spec: Specification of how the OVF package should be deployed to the + target. + :rtype: :class:`LibraryItem.DeploymentResult` + :return: Information about the success or failure of the method, along with + the details of the result or failure. + :raise: :class:`com.vmware.vapi.std.errors_client.InvalidArgument` + if ``target`` contains invalid arguments. + :raise: :class:`com.vmware.vapi.std.errors_client.InvalidArgument` + if ``deployment_spec`` contains invalid arguments or has attributes + that are inconsistent with ``target``. + :raise: :class:`com.vmware.vapi.std.errors_client.NotFound` + if the library item specified by ``ovf_library_item_id`` does not + exist. + :raise: :class:`com.vmware.vapi.std.errors_client.NotFound` + if any resource specified by a attribute of the + :class:`LibraryItem.DeploymentTarget` class, specified by + ``target``, does not exist. + :raise: :class:`com.vmware.vapi.std.errors_client.ResourceInaccessible` + if there was an error accessing the OVF package stored in the + library item specified by ``ovf_library_item_id``. + :raise: :class:`com.vmware.vapi.std.errors_client.Unauthorized` + if you do not have all of the privileges described as follows : + + * Method execution requires VirtualMachine.Config.AddNewDisk if the + OVF descriptor has a disk drive (type 17) section. + * Method execution requires VirtualMachine.Config.AdvancedConfig if + the OVF descriptor has an ExtraConfig section. + * Method execution requires Extension.Register for specified + resource group if the OVF descriptor has a vServiceDependency + section. + * Method execution requires Network.Assign for target network if + specified. + * Method execution requires Datastore.AllocateSpace for target + datastore if specified. + :raise: :class:`com.vmware.vapi.std.errors_client.Unauthorized` + if you do not have all of the privileges described as follows: + + * Method execution requires ``System.Read``. + * The resource ``com.vmware.content.library.Item`` referenced by + the parameter ``ovf_library_item_id`` requires ``System.Read``. + * The resource ``HostSystem`` referenced by the attribute + :attr:`LibraryItem.DeploymentTarget.host_id` requires + ``System.Read``. + * The resource ``Network`` referenced by the :class:`dict` value of + attribute + :attr:`LibraryItem.ResourcePoolDeploymentSpec.network_mappings` + requires ``System.Read``. + * The resource ``StorageProfile`` referenced by the attribute + :attr:`LibraryItem.ResourcePoolDeploymentSpec.storage_profile_id` + requires ``System.Read``. + * The resource ``Datastore`` referenced by the attribute + :attr:`LibraryItem.ResourcePoolDeploymentSpec.default_datastore_id` + requires ``System.Read``. + * The resource ``ResourcePool`` referenced by the attribute + :attr:`LibraryItem.DeploymentTarget.resource_pool_id` requires + ``VApp.Import``. + * The resource ``Folder`` referenced by the attribute + :attr:`LibraryItem.DeploymentTarget.folder_id` requires + ``VApp.Import``. + """ + return self._invoke('deploy', + { + 'client_token': client_token, + 'ovf_library_item_id': ovf_library_item_id, + 'target': target, + 'deployment_spec': deployment_spec, + }) +
+
[docs] def filter(self, + ovf_library_item_id, + target, + ): + """ + Queries an OVF package stored in content library to retrieve + information to use when deploying the package. See + :func:`LibraryItem.deploy`. + + This method retrieves information from the descriptor of the OVF + package stored in the library item specified by + ``ovf_library_item_id``. The information returned by the method can be + used to populate the deployment specification (see + :class:`LibraryItem.ResourcePoolDeploymentSpec` when deploying the OVF + package to the deployment target specified by ``target``. + + :type ovf_library_item_id: :class:`str` + :param ovf_library_item_id: Identifier of the content library item containing the OVF package + to query. + The parameter must be an identifier for the resource type: + ``com.vmware.content.library.Item``. + :type target: :class:`LibraryItem.DeploymentTarget` + :param target: Specification of the deployment target. + :rtype: :class:`LibraryItem.OvfSummary` + :return: Information that can be used to populate the deployment + specification (see :class:`LibraryItem.ResourcePoolDeploymentSpec`) + when deploying the OVF package to the deployment target specified + by ``target``. + :raise: :class:`com.vmware.vapi.std.errors_client.InvalidArgument` + if ``target`` contains invalid arguments. + :raise: :class:`com.vmware.vapi.std.errors_client.NotFound` + if the library item specified by ``ovf_library_item_id`` does not + exist. + :raise: :class:`com.vmware.vapi.std.errors_client.NotFound` + if any resource specified by a attribute of the + :class:`LibraryItem.DeploymentTarget` class, specified by + ``target``, does not exist. + :raise: :class:`com.vmware.vapi.std.errors_client.ResourceInaccessible` + if there was an error accessing the OVF package at the specified + ``ovf_library_item_id``. + :raise: :class:`com.vmware.vapi.std.errors_client.Unauthorized` + if you do not have all of the privileges described as follows: + + * Method execution requires ``System.Read``. + * The resource ``com.vmware.content.library.Item`` referenced by + the parameter ``ovf_library_item_id`` requires ``System.Read``. + * The resource ``ResourcePool`` referenced by the attribute + :attr:`LibraryItem.DeploymentTarget.resource_pool_id` requires + ``System.Read``. + * The resource ``HostSystem`` referenced by the attribute + :attr:`LibraryItem.DeploymentTarget.host_id` requires + ``System.Read``. + * The resource ``Folder`` referenced by the attribute + :attr:`LibraryItem.DeploymentTarget.folder_id` requires + ``System.Read``. + """ + return self._invoke('filter', + { + 'ovf_library_item_id': ovf_library_item_id, + 'target': target, + }) +
+
[docs] def create(self, + source, + target, + create_spec, + client_token=None, + ): + """ + Creates a library item in content library from a virtual machine or + virtual appliance. + + This method creates a library item in content library whose content is + an OVF package derived from a source virtual machine or virtual + appliance, using the supplied create specification. The OVF package may + be stored as in a newly created library item or in an in an existing + library item. For an existing library item whose content is updated by + this method, the original content is overwritten. + + :type client_token: :class:`str` or ``None`` + :param client_token: Client-generated token used to retry a request if the client fails + to get a response from the server. If the original request + succeeded, the result of that request will be returned, otherwise + the operation will be retried. + If None, the server will create a token. + :type source: :class:`LibraryItem.DeployableIdentity` + :param source: Identifier of the virtual machine or virtual appliance to use as + the source. + :type target: :class:`LibraryItem.CreateTarget` + :param target: Specification of the target content library and library item. + :type create_spec: :class:`LibraryItem.CreateSpec` + :param create_spec: Information used to create the OVF package from the source virtual + machine or virtual appliance. + :rtype: :class:`LibraryItem.CreateResult` + :return: Information about the success or failure of the method, along with + the details of the result or failure. + :raise: :class:`com.vmware.vapi.std.errors_client.InvalidArgument` + if ``create_spec`` contains invalid arguments. + :raise: :class:`com.vmware.vapi.std.errors_client.InvalidArgument` + if ``source`` describes an unexpected resource type. + :raise: :class:`com.vmware.vapi.std.errors_client.NotFound` + if the virtual machine or virtual appliance specified by ``source`` + does not exist. + :raise: :class:`com.vmware.vapi.std.errors_client.NotFound` + if the library or library item specified by ``target`` does not + exist. + :raise: :class:`com.vmware.vapi.std.errors_client.NotAllowedInCurrentState` + if the operation cannot be performed because of the specified + virtual machine or virtual appliance's current state. For example, + if the virtual machine configuration information is not available, + or if the virtual appliance is running. + :raise: :class:`com.vmware.vapi.std.errors_client.ResourceInaccessible` + if there was an error accessing a file from the source virtual + machine or virtual appliance. + :raise: :class:`com.vmware.vapi.std.errors_client.ResourceBusy` + if the specified virtual machine or virtual appliance is busy. + :raise: :class:`com.vmware.vapi.std.errors_client.Unauthorized` + if you do not have all of the privileges described as follows: + + * Method execution requires ``System.Read``. + * The attribute :attr:`LibraryItem.DeployableIdentity.id` requires + ``VApp.Export``. + * The resource ``com.vmware.content.Library`` referenced by the + attribute :attr:`LibraryItem.CreateTarget.library_id` requires + ``ContentLibrary.AddLibraryItem``. + * The resource ``com.vmware.content.library.Item`` referenced by + the attribute :attr:`LibraryItem.CreateTarget.library_item_id` + requires ``System.Read``. + """ + return self._invoke('create', + { + 'client_token': client_token, + 'source': source, + 'target': target, + 'create_spec': create_spec, + }) +
+class _ExportFlagStub(ApiInterfaceStub): + def __init__(self, config): + # properties for list operation + list_input_type = type.StructType('operation-input', {}) + list_error_dict = {} + list_input_validator_list = [ + ] + list_output_validator_list = [ + ] + + operations = { + 'list': { + 'input_type': list_input_type, + 'output_type': type.ListType(type.ReferenceType(sys.modules[__name__], 'ExportFlag.Info')), + 'errors': list_error_dict, + 'input_validator_list': list_input_validator_list, + 'output_validator_list': list_output_validator_list, + }, + } + ApiInterfaceStub.__init__(self, iface_name='com.vmware.vcenter.ovf.export_flag', + config=config, + operations=operations) +class _ImportFlagStub(ApiInterfaceStub): + def __init__(self, config): + # properties for list operation + list_input_type = type.StructType('operation-input', { + 'rp': type.IdType(resource_types='ResourcePool'), + }) + list_error_dict = { + 'com.vmware.vapi.std.errors.not_found': + type.ReferenceType(com.vmware.vapi.std.errors_client, 'NotFound'), + + } + list_input_validator_list = [ + ] + list_output_validator_list = [ + ] + + operations = { + 'list': { + 'input_type': list_input_type, + 'output_type': type.ListType(type.ReferenceType(sys.modules[__name__], 'ImportFlag.Info')), + 'errors': list_error_dict, + 'input_validator_list': list_input_validator_list, + 'output_validator_list': list_output_validator_list, + }, + } + ApiInterfaceStub.__init__(self, iface_name='com.vmware.vcenter.ovf.import_flag', + config=config, + operations=operations) +class _LibraryItemStub(ApiInterfaceStub): + def __init__(self, config): + # properties for deploy operation + deploy_input_type = type.StructType('operation-input', { + 'client_token': type.OptionalType(type.StringType()), + 'ovf_library_item_id': type.IdType(resource_types='com.vmware.content.library.Item'), + 'target': type.ReferenceType(sys.modules[__name__], 'LibraryItem.DeploymentTarget'), + 'deployment_spec': type.ReferenceType(sys.modules[__name__], 'LibraryItem.ResourcePoolDeploymentSpec'), + }) + deploy_error_dict = { + 'com.vmware.vapi.std.errors.invalid_argument': + type.ReferenceType(com.vmware.vapi.std.errors_client, 'InvalidArgument'), + 'com.vmware.vapi.std.errors.not_found': + type.ReferenceType(com.vmware.vapi.std.errors_client, 'NotFound'), + 'com.vmware.vapi.std.errors.resource_inaccessible': + type.ReferenceType(com.vmware.vapi.std.errors_client, 'ResourceInaccessible'), + 'com.vmware.vapi.std.errors.unauthorized': + type.ReferenceType(com.vmware.vapi.std.errors_client, 'Unauthorized'), + + } + deploy_input_validator_list = [ + HasFieldsOfValidator() + ] + deploy_output_validator_list = [ + ] + + # properties for filter operation + filter_input_type = type.StructType('operation-input', { + 'ovf_library_item_id': type.IdType(resource_types='com.vmware.content.library.Item'), + 'target': type.ReferenceType(sys.modules[__name__], 'LibraryItem.DeploymentTarget'), + }) + filter_error_dict = { + 'com.vmware.vapi.std.errors.invalid_argument': + type.ReferenceType(com.vmware.vapi.std.errors_client, 'InvalidArgument'), + 'com.vmware.vapi.std.errors.not_found': + type.ReferenceType(com.vmware.vapi.std.errors_client, 'NotFound'), + 'com.vmware.vapi.std.errors.resource_inaccessible': + type.ReferenceType(com.vmware.vapi.std.errors_client, 'ResourceInaccessible'), + + } + filter_input_validator_list = [ + ] + filter_output_validator_list = [ + HasFieldsOfValidator() + ] + + # properties for create operation + create_input_type = type.StructType('operation-input', { + 'client_token': type.OptionalType(type.StringType()), + 'source': type.ReferenceType(sys.modules[__name__], 'LibraryItem.DeployableIdentity'), + 'target': type.ReferenceType(sys.modules[__name__], 'LibraryItem.CreateTarget'), + 'create_spec': type.ReferenceType(sys.modules[__name__], 'LibraryItem.CreateSpec'), + }) + create_error_dict = { + 'com.vmware.vapi.std.errors.invalid_argument': + type.ReferenceType(com.vmware.vapi.std.errors_client, 'InvalidArgument'), + 'com.vmware.vapi.std.errors.not_found': + type.ReferenceType(com.vmware.vapi.std.errors_client, 'NotFound'), + 'com.vmware.vapi.std.errors.not_allowed_in_current_state': + type.ReferenceType(com.vmware.vapi.std.errors_client, 'NotAllowedInCurrentState'), + 'com.vmware.vapi.std.errors.resource_inaccessible': + type.ReferenceType(com.vmware.vapi.std.errors_client, 'ResourceInaccessible'), + 'com.vmware.vapi.std.errors.resource_busy': + type.ReferenceType(com.vmware.vapi.std.errors_client, 'ResourceBusy'), + + } + create_input_validator_list = [ + ] + create_output_validator_list = [ + ] + + operations = { + 'deploy': { + 'input_type': deploy_input_type, + 'output_type': type.ReferenceType(sys.modules[__name__], 'LibraryItem.DeploymentResult'), + 'errors': deploy_error_dict, + 'input_validator_list': deploy_input_validator_list, + 'output_validator_list': deploy_output_validator_list, + }, + 'filter': { + 'input_type': filter_input_type, + 'output_type': type.ReferenceType(sys.modules[__name__], 'LibraryItem.OvfSummary'), + 'errors': filter_error_dict, + 'input_validator_list': filter_input_validator_list, + 'output_validator_list': filter_output_validator_list, + }, + 'create': { + 'input_type': create_input_type, + 'output_type': type.ReferenceType(sys.modules[__name__], 'LibraryItem.CreateResult'), + 'errors': create_error_dict, + 'input_validator_list': create_input_validator_list, + 'output_validator_list': create_output_validator_list, + }, + } + ApiInterfaceStub.__init__(self, iface_name='com.vmware.vcenter.ovf.library_item', + config=config, + operations=operations) +
+ +
+
+
+
+
+ + +
+
+
+
+ + + + \ No newline at end of file diff --git a/vsphere/6.0/_modules/index.html b/vsphere/6.0/_modules/index.html new file mode 100644 index 00000000..9c02c059 --- /dev/null +++ b/vsphere/6.0/_modules/index.html @@ -0,0 +1,190 @@ + + + + + + + + + + Overview: module code — vCloud Suite SDK for Python 6.0.0 documentation + + + + + + + + + + + + + +
+
+
+
+ +

All modules for which code is available

+ + +
+
+
+
+
+ + +
+
+
+
+ + + + \ No newline at end of file diff --git a/vsphere/6.0/_modules/vmware/vapi/bindings/common.html b/vsphere/6.0/_modules/vmware/vapi/bindings/common.html new file mode 100644 index 00000000..0ded16d7 --- /dev/null +++ b/vsphere/6.0/_modules/vmware/vapi/bindings/common.html @@ -0,0 +1,144 @@ + + + + + + + + + + vmware.vapi.bindings.common — vCloud Suite SDK for Python 6.0.0 documentation + + + + + + + + + + + + + + +
+
+
+
+ +

Source code for vmware.vapi.bindings.common

+"""
+Bindings common module that contains common code for skeletons and stubs
+"""
+__author__ = 'VMware, Inc.'
+__copyright__ = 'Copyright 2013-2014 VMware, Inc.  All rights reserved. -- VMware Confidential'
+
+
+from vmware.vapi.exception import CoreException
+
+
+
[docs]def raise_core_exception(msg_list): + """ + Create and raise a CoreException from a list of messages + + :type msg_list: :class:`vmware.vapi.message.Message` + :param msg_list: List of messages + + :raise: CoreException if msg list is not empty + """ + exception = None + if msg_list: + for msg in reversed(msg_list): + if exception: + exception = CoreException(msg, cause=exception) + else: + exception = CoreException(msg) + if exception is not None: + raise exception # pylint: disable-msg=E0702 + +
+
[docs]class NameToTypeResolver(object): + """ + Helper class that resolves a fully qualified canonical type name to a type + descriptor. The type name can be a structure name or an error name. + """ + def __init__(self, type_map): + """ + Initialize NameToTypeResolver + + :type type_map: :class:`dict` of :class:`str` and :class:`VapiStruct` + :param type_map: Type map that contains the canonical names and the + references to the binding classes for these types. + """ + self._type_map = type_map + +
[docs] def resolve(self, name): + """ + Type name to be resolved + """ + return self._type_map.get(name)
+
+ +
+
+
+
+
+ + +
+
+
+
+ + + + \ No newline at end of file diff --git a/vsphere/6.0/_modules/vmware/vapi/bindings/converter.html b/vsphere/6.0/_modules/vmware/vapi/bindings/converter.html new file mode 100644 index 00000000..ecabf581 --- /dev/null +++ b/vsphere/6.0/_modules/vmware/vapi/bindings/converter.html @@ -0,0 +1,846 @@ + + + + + + + + + + vmware.vapi.bindings.converter — vCloud Suite SDK for Python 6.0.0 documentation + + + + + + + + + + + + + + +
+
+
+
+ +

Source code for vmware.vapi.bindings.converter

+"""
+Type converter to/from vAPI runtime data model to Python native data model
+"""
+__author__ = 'VMware, Inc.'
+__copyright__ = 'Copyright 2012-2014 VMware, Inc.  All rights reserved. -- VMware Confidential'
+
+import logging
+import six
+
+from vmware.vapi.exception import CoreException
+from vmware.vapi.bindings.type import (
+    BindingTypeVisitor, OptionalType, MAP_KEY_FIELD,
+    MAP_VALUE_FIELD)
+from vmware.vapi.bindings.enum import Enum
+from vmware.vapi.bindings.error import (VapiError, UnresolvedError)
+from vmware.vapi.bindings.struct import VapiStruct
+from vmware.vapi.bindings.datetime_helper import DateTimeConverter
+from vmware.vapi.bindings.uri_helper import URIValidator
+from vmware.vapi.lib.converter import Converter
+from vmware.vapi.data.value import DataValue, StructValue
+from vmware.vapi.l10n.runtime import message_factory
+
+logger = logging.getLogger(__name__)
+
+
+
[docs]class PythonToVapiVisitor(BindingTypeVisitor): # pylint: disable=W0223 + """ + Visitor to convert from Python native value to vAPI DataValue + """ + def __init__(self, value): + """ + Initialize PythonToVapiVisitor + + :type value: :class:`object` + :param value: Native python value + """ + self._in_value = value + self._out_value = None + self._dispatch_map = { + 'VoidType': self.visit_void, + 'IntegerType': self.visit_primitive, + 'DoubleType': self.visit_primitive, + 'StringType': self.visit_primitive, + 'SecretType': self.visit_primitive, + 'BooleanType': self.visit_primitive, + 'BlobType': self.visit_primitive, + 'OptionalType': self.visit_optional, + 'ListType': self.visit_list, + 'SetType': self.visit_set, + 'MapType': self.visit_map, + 'StructType': self.visit_struct, + 'ErrorType': self.visit_error, + 'ReferenceType': self.visit_reference, + 'OpaqueType': self.visit_opaque, + 'DynamicStructType': self.visit_dynamic_struct, + 'AnyErrorType': self.visit_any_error, + 'DateTimeType': self.visit_date_time, + 'URIType': self.visit_uri, + 'EnumType': self.visit_enum, + 'IdType': self.visit_primitive, + } + BindingTypeVisitor.__init__(self) + +
[docs] def visit(self, typ): + class_name = typ.__class__.__name__ + method = self._dispatch_map[class_name] + method(typ) +
+
[docs] def get_out_value(self): + """ + Returns the vAPI DataValue converted from the Python native value + + :rtype: :class:`vmware.vapi.data.value.DataValue` + :return: vAPI DataValue + """ + return self._out_value +
+
[docs] def visit_primitive(self, typ): + """ + Visit a primitive type python value + + :type typ: :class:`vmware.vapi.binding.type.BindingType` + :param typ: Binding type of the value + """ + self._out_value = typ.definition.new_value(self._in_value) +
+
[docs] def visit_void(self, typ): + """ + Visit a void value (i.e. None) + + :type typ: :class:`vmware.vapi.binding.type.VoidType` + :param typ: Binding type of the value + """ + if self._in_value is not None: + msg = message_factory.get_message( + 'vapi.bindings.typeconverter.voiddef.expect.null', + type(self._in_value).__name__) + logger.debug(msg) + raise CoreException(msg) + self._out_value = typ.definition.new_value() +
+
[docs] def visit_opaque(self, typ): + """ + Visit an opaque value. Don't do any conversion. + + :type typ: :class:`vmware.vapi.binding.type.OpaqueType` + :param typ: Binding type of the value + """ + if not isinstance(self._in_value, DataValue): + msg = message_factory.get_message( + 'vapi.bindings.typeconverter.unexpected.python.type', + DataValue.__name__, type(self._in_value).__name__) + logger.debug(msg) + raise CoreException(msg) + self._out_value = self._in_value +
+
[docs] def visit_list(self, typ): + """ + Visit a list value + + :type typ: :class:`vmware.vapi.binding.type.ListType` + :param typ: Binding type of the value + """ + in_value = self._in_value + out_value = typ.definition.new_value() + elt_typ = typ.element_type + for elt_value in in_value: + self._in_value = elt_value + self.visit(elt_typ) + out_value.add(self._out_value) + self._in_value = in_value + self._out_value = out_value +
+
[docs] def visit_set(self, typ): + """ + Visit a python set + + :type typ: :class:`vmware.vapi.binding.type.SetType` + :param typ: Binding type of the value + """ + if not isinstance(self._in_value, set) and not isinstance(self._in_value, frozenset): + msg = message_factory.get_message( + 'vapi.bindings.typeconverter.invalid', + 'set', type(self._in_value)) + logger.debug(msg) + raise CoreException(msg) + self.visit_list(typ) +
+
[docs] def visit_map(self, typ): + """ + Visit a python dict + + :type typ: :class:`vmware.vapi.binding.type.MapType` + :param typ: Binding type of the value + """ + in_value = self._in_value + out_value = typ.definition.new_value() + struct_def = typ.definition.element_type + for k, v in six.iteritems(in_value): + struct_val = struct_def.new_value() + self._in_value = k + self.visit(typ.key_type) + struct_val.set_field(MAP_KEY_FIELD, self._out_value) + self._in_value = v + self.visit(typ.value_type) + struct_val.set_field(MAP_VALUE_FIELD, self._out_value) + out_value.add(struct_val) + self._in_value = in_value + self._out_value = out_value +
+ def _visit_vapi_struct(self, typ): + """ + Visit an instance of VapiStruct class + + :type typ: :class:`vmware.vapi.binding.type.StructType` + :param typ: Binding type of the value + :rtype: :class:`vmware.vapi.data.value.DataValue` + :return: vAPI Data value + """ + in_value = self._in_value + out_value = typ.definition.new_value() + field_names = typ.get_field_names() + for field in field_names: + try: + self._in_value = in_value.get_field(field) + # If self._in_value is None and field type is not + # optional, raise an error + field_type = typ.get_field(field) + if (not isinstance(field_type, OptionalType) and + self._in_value is None): + raise AttributeError + except AttributeError: + msg = message_factory.get_message( + 'vapi.bindings.typeconverter.struct.missing.field', + field, typ.name) + logger.debug(msg) + raise CoreException(msg) + + try: + self.visit(typ.get_field(field)) + except Exception as e: + msg = message_factory.get_message( + 'vapi.bindings.typeconverter.struct.invalid.field', + field, typ.name) + logger.debug(msg) + raise CoreException(msg, e) + out_value.set_field(field, self._out_value) + self._in_value = in_value + self._out_value = out_value + + def _visit_python_dict(self, typ): + """ + Visit an instance of Python native dictionary + + :type typ: :class:`vmware.vapi.binding.type.StructType` + :param typ: Binding type of the value + :rtype: :class:`vmware.vapi.data.value.DataValue` + :return: vAPI Data value + """ + in_value = self._in_value + out_value = typ.definition.new_value() + field_names = typ.get_field_names() + for field in field_names: + try: + self._in_value = in_value[field] + except KeyError: + msg = message_factory.get_message( + 'vapi.bindings.typeconverter.dict.missing.key', + field) + logger.debug(msg) + raise CoreException(msg) + self.visit(typ.get_field(field)) + out_value.set_field(field, self._out_value) + self._in_value = in_value + self._out_value = out_value + +
[docs] def visit_struct(self, typ): + """ + Visit a struct value + + :type typ: :class:`vmware.vapi.binding.type.StructType` + :param typ: Binding type of the value + """ + if isinstance(self._in_value, VapiStruct): + self._visit_vapi_struct(typ) + # Validating the constraints in the struct value + # before sending it over the wire. The validation does + # not happen during initialization of VapiStruct or + # StructValue + self._in_value.validate_struct_value(self._out_value) + + elif isinstance(self._in_value, dict): + self._visit_python_dict(typ) + else: + msg = message_factory.get_message( + 'vapi.bindings.typeconverter.unexpected.struct.type', + type(self._in_value).__name__) + logger.debug(msg) + raise CoreException(msg) +
+
[docs] def visit_error(self, typ): + """ + Visit an error value + + :type typ: :class:`vmware.vapi.binding.type.ErrorType` + :param typ: Binding type of the value + """ + if isinstance(self._in_value, VapiError): + self._visit_vapi_struct(typ) + else: + msg = message_factory.get_message( + 'vapi.bindings.typeconverter.unexpected.error.type', + type(self._in_value).__name__) + logger.debug(msg) + raise CoreException(msg) +
+
[docs] def visit_dynamic_struct(self, typ): + """ + Visit any struct value + + :type typ: :class:`vmware.vapi.binding.type.DynamicStructType` + :param typ: Binding type of the value + """ + if self._in_value.__class__.__name__ == 'VapiStruct': + self._out_value = self._in_value.get_struct_value() + elif self._in_value.__class__.__name__ == 'VapiError': + self._out_value = self._in_value.get_error_value() + elif isinstance(self._in_value, VapiStruct): + self._visit_vapi_struct(self._in_value.get_binding_type()) + elif isinstance(self._in_value, StructValue): + self._out_value = self._in_value + else: + msg = message_factory.get_message( + 'vapi.bindings.typeconverter.unexpected.python.type', + StructValue.__name__, type(self._in_value).__name__) + logger.debug(msg) + raise CoreException(msg) +
+
[docs] def visit_any_error(self, typ): + """ + Visit any error value + + :type typ: :class:`vmware.vapi.binding.type.AnyErrorType` + :param typ: Binding type of the value + """ + if isinstance(self._in_value, UnresolvedError): + self._out_value = self._in_value.get_error_value() + elif isinstance(self._in_value, VapiError): + self._visit_vapi_struct(self._in_value.get_binding_type()) + else: + + msg = message_factory.get_message( + 'vapi.bindings.typeconverter.unexpected.python.type', + VapiError.__name__, type(self._in_value).__name__) + logger.debug(msg) + raise CoreException(msg) +
+
[docs] def visit_optional(self, typ): + """ + Visit an optional value + + :type typ: :class:`vmware.vapi.binding.type.OptionalType` + :param typ: Binding type of the value + """ + if self._in_value is None: + self._out_value = typ.definition.new_value() + else: + self.visit(typ.element_type) + self._out_value = typ.definition.new_value(self._out_value) +
+
[docs] def visit_date_time(self, typ): + """ + Visit a datetime value + + :type typ: :class:`vmware.vapi.binding.type.DateTimeType` + :param typ: Binding type of the value + """ + dt_str = DateTimeConverter.convert_from_datetime(self._in_value) + self._out_value = typ.definition.new_value(dt_str) +
+
[docs] def visit_uri(self, typ): + """ + Visit an URI value + + :type typ: :class:`vmware.vapi.binding.type.UriType` + :param typ: Binding type of the value + """ + URIValidator.validate(self._in_value) + self._out_value = typ.definition.new_value(self._in_value) +
+
[docs] def visit_reference(self, typ): + """ + Visit a reference type + + :type typ: :class:`vmware.vapi.binding.type.ReferenceType` + :param typ: Binding type of the value + """ + self.visit(typ.resolved_type) +
+
[docs] def visit_enum(self, typ): + """ + Visit a enum type python value + + :type typ: :class:`vmware.vapi.binding.type.EnumType` + :param typ: Binding type of the value + """ + if not isinstance(self._in_value, Enum): + # TODO: Verify if the value is instance of actual binding + # class + msg = message_factory.get_message( + 'vapi.bindings.typeconverter.unexpected.python.type', + Enum, type(self._in_value)) + logger.debug(msg) + raise CoreException(msg) + # Convert from vmware.vapi.bindings.Enum instance to string value + enum_string_value = str(self._in_value) + self._out_value = typ.definition.new_value(enum_string_value) + +
+
[docs]class VapiToPythonVisitor(BindingTypeVisitor): # pylint: disable=W0223 + """ + Visitor to convert from vAPI DataValue to Python native value + """ + def __init__(self, value, resolver): + """ + Initialize VapiToPythonVisitor + + :type value: :class:`vmware.vapi.data.value.DataValue` + :param value: vAPI DataValue to be converted + :type resolver: :class:`vmware.vapi.bindings.common.NameToTypeResolver` or + ``None`` + :param resolver: Type resolver + """ + self._in_value = value + self._resolver = resolver + self._out_value = None + self._dispatch_map = { + 'VoidType': self.visit_void, + 'IntegerType': self.visit_primitive, + 'DoubleType': self.visit_primitive, + 'StringType': self.visit_string, + 'SecretType': self.visit_primitive, + 'BooleanType': self.visit_primitive, + 'BlobType': self.visit_primitive, + 'OptionalType': self.visit_optional, + 'ListType': self.visit_list, + 'SetType': self.visit_set, + 'MapType': self.visit_map, + 'StructType': self.visit_struct, + 'ErrorType': self.visit_error, + 'ReferenceType': self.visit_reference, + 'OpaqueType': self.visit_opaque, + 'DynamicStructType': self.visit_dynamic_struct, + 'AnyErrorType': self.visit_any_error, + 'DateTimeType': self.visit_date_time, + 'URIType': self.visit_uri, + 'EnumType': self.visit_enum, + 'IdType': self.visit_primitive, + } + BindingTypeVisitor.__init__(self) + +
[docs] def visit(self, typ): + class_name = typ.__class__.__name__ + method = self._dispatch_map[class_name] + method(typ) +
+
[docs] def get_out_value(self): + """ + Returns the Python native value converted from the vAPI DataValue + + :rtype: :class:`object` + :return: Native python value + """ + return self._out_value +
+
[docs] def visit_primitive(self, typ): # pylint: disable=W0613 + """ + Visit one of the primitive DataValues + + :type typ: :class:`vmware.vapi.binding.type.BindingType` + :param typ: Binding type of the value + """ + self._out_value = self._in_value.value +
+
[docs] def visit_void(self, typ): + """ + Since there is no VoidValue, just return None + + :type typ: :class:`vmware.vapi.binding.type.VoidType` + :param typ: Binding type of the value + """ + self._out_value = None +
+
[docs] def visit_string(self, typ): + """ + Visit StringValue + + :type typ: :class:`vmware.vapi.binding.type.StringType` + :param typ: Binding type of the value + """ + try: + self._out_value = str(self._in_value.value) + except UnicodeError: + self._out_value = self._in_value.value +
+
[docs] def visit_opaque(self, typ): + """ + Since there is no OpaqueValue, don't do any conversion + + :type typ: :class:`vmware.vapi.binding.type.OpaqueType` + :param typ: Binding type of the value + """ + self._out_value = self._in_value +
+ def _visit_list_element(self, value, typ): + """ + Visit a ListValue element + + :type value: :class:`vmware.vapi.data.value.DataValue` + :param value: element value + :type typ: :class:`vmware.vapi.binding.type.ListType` + :param typ: Binding type of the element + """ + self._in_value = value + self.visit(typ) + return self._out_value + +
[docs] def visit_list(self, typ): + """ + Visit a ListValue + + :type typ: :class:`vmware.vapi.binding.type.ListType` + :param typ: Binding type of the value + """ + elt_typ = typ.element_type + in_value = self._in_value + self._out_value = [self._visit_list_element(elt_value, elt_typ) + for elt_value in in_value] + self._in_value = in_value +
+
[docs] def visit_set(self, typ): + """ + Visit a List Value. This ListValue must represent a set i.e. there must not be any duplicate elements + + :type typ: :class:`vmware.vapi.binding.type.SetType` + :param typ: Binding type of the value + """ + elt_typ = typ.element_type + in_value = self._in_value + out_value = set() + for elt_value in in_value: + elt = self._visit_list_element(elt_value, elt_typ) + if elt in out_value: + msg = message_factory.get_message( + 'vapi.bindings.typeconverter.set.duplicate.element', + elt) + logger.debug(msg) + raise CoreException(msg) + out_value.add(elt) + self._out_value = out_value + self._in_value = in_value +
+
[docs] def visit_map(self, typ): + """ + Visit a List Value. This ListValue must represent a map. Each element + of the ListValue is a StructValue with two fields, namely 'key' and 'value'. + The 'key' field represents the key of the map and the 'value' field + represents the value of the map. Also, since this represents a map, there + should not be duplicate keys. + + :type typ: :class:`vmware.vapi.binding.type.MapType` + :param typ: Binding type of the value + """ + in_value = self._in_value + key_typ = typ.key_type + value_typ = typ.value_type + out_value = {} + for elt_value in in_value: + key = self._visit_struct_field(elt_value.get_field(MAP_KEY_FIELD), + key_typ) + if key in out_value: + msg = message_factory.get_message( + 'vapi.bindings.typeconverter.map.duplicate.key', + key) + logger.debug(msg) + raise CoreException(msg) + value = self._visit_struct_field(elt_value.get_field(MAP_VALUE_FIELD), + value_typ) + out_value[key] = value + self._out_value = out_value + self._in_value = in_value +
+ def _visit_struct_field(self, value, typ): + """ + Visit a field of a StructValue + + :type value: :class:`vmware.vapi.data.value.DataValue` + :param value: field value + :type typ: :class:`vmware.vapi.binding.type.StructType` + :param typ: Binding type of the struct field + """ + self._in_value = value + self.visit(typ) + return self._out_value + +
[docs] def visit_struct(self, typ): + """ + Visit StructValue + + :type typ: :class:`vmware.vapi.binding.type.StructType` + :param typ: Binding type of the value + """ + in_value = self._in_value + out_value = {} + typ_field_names = typ.get_field_names() + value_field_names = in_value.get_field_names() + + for field_name in typ_field_names: + pep_name = Converter.canonical_to_pep(field_name) + field_type = typ.get_field(field_name) + # When the request is converted from DataValue to Native value + # on the server side: + # - if the client - server version matches: we wont hit this case + # - if new client talks to old server, runtime would have + # raised InvalidArgument error if there are unexpected optional + # fields + # - if old client talks to new server, runtime adds the missing + # optional fields, so we wont hit this case + # + # When the response is converted from DataValue to Native value + # on the client side: + # - if the client - server version matches: we wont hit this case + # - if new client talks to old server, client bindings should + # tolerate the absence of expected optional properties. So, + # we have to set it to None! + # - if old client talks to new server, we will visit all the known + # fields here and the unexpected fields are added to the VapiStruct + # object + if (isinstance(field_type, OptionalType) and + not in_value.has_field(field_name)): + out_value[pep_name] = None + else: + out_value[pep_name] = self._visit_struct_field( + in_value.get_field(field_name), field_type) + self._in_value = in_value + + struct_class = typ.binding_class + if struct_class is not None: + struct_class.validate_struct_value(self._in_value) + self._out_value = struct_class(**out_value) + + # Fields present in struct value but not in struct binding type. + unexpected_field_names = set(value_field_names) - set(typ_field_names) + if unexpected_field_names: + unexpected_fields = {} + for field_name in unexpected_field_names: + unexpected_fields[field_name] = in_value.get_field(field_name) + self._out_value._set_unexpected_fields(unexpected_fields) # pylint: disable=E1103,W0212 + else: + self._out_value = out_value +
+
[docs] def visit_dynamic_struct(self, typ): + """ + Visit StructValue to convert it into the base VapiStruct + + :type typ: :class:`vmware.vapi.binding.type.DynamicStructType` + :param typ: Binding type of the value + """ + self._out_value = VapiStruct(struct_value=self._in_value) +
+
[docs] def visit_any_error(self, typ): + """ + Visit ErrorValue to convert it into the base VapiError + + :type typ: :class:`vmware.vapi.binding.type.AnyErrorType` + :param typ: Binding type of the value + """ + typ = self._resolver and self._resolver.resolve(self._in_value.name) + if typ is None: + self._out_value = UnresolvedError({}, self._in_value) + else: + typ.accept(self) +
+
[docs] def visit_error(self, typ): + """ + Visit ErrorValue + + :type typ: :class:`vmware.vapi.binding.type.ErrorType` + :param typ: Binding type of the value + """ + self.visit_struct(typ) +
+
[docs] def visit_optional(self, typ): + """ + Visit OptionalValue + + :type typ: :class:`vmware.vapi.binding.type.OptionalType` + :param typ: Binding type of the value + """ + if self._in_value.is_set(): + self._in_value = self._in_value.value + self.visit(typ.element_type) + else: + self._out_value = None +
+
[docs] def visit_date_time(self, typ): + """ + Visit a datetime value + + :type typ: :class:`vmware.vapi.binding.type.DateTimeType` + :param typ: Binding type of the value + """ + self._out_value = DateTimeConverter.convert_to_datetime( + self._in_value.value) +
+
[docs] def visit_uri(self, typ): + """ + Visit an URI value + + :type typ: :class:`vmware.vapi.binding.type.UriType` + :param typ: Binding type of the value + """ + uri_string = self._in_value.value + URIValidator.validate(uri_string) + self._out_value = uri_string +
+
[docs] def visit_enum(self, typ): + """ + Visit an Enum value + + :type typ: :class:`vmware.vapi.binding.type.EnumType` + :param typ: Binding type of the value + """ + enum_string = self._in_value.value + if typ.binding_class: + try: + self._out_value = getattr(typ.binding_class, enum_string) + except AttributeError: + self._out_value = typ.binding_class(enum_string) + else: + self._out_value = Enum(enum_string) +
+
[docs] def visit_reference(self, typ): + """ + Visit a reference type + + :type typ: :class:`vmware.vapi.binding.type.ReferenceType` + :param typ: Binding type of the value + """ + self.visit(typ.resolved_type) + +
+
[docs]class TypeConverter(object): + """ + Converter class that converts values from vAPI data model to Python native + data model + """ + + @staticmethod +
[docs] def convert_to_python(vapi_val, binding_type, resolver=None): + """ + Converts vAPI DataValue to Python native value + + :type vapi_val: :class:`vmware.vapi.data.value.DataValue` + :param vapi_val: vAPI DataValue to be converted + :type binding_type: :class:`vmware.vapi.bindings.type.BindingType` + :param binding_type: BindingType for the value + :type resolver: :class:`vmware.vapi.bindings.common.NameToTypeResolver` or + ``None`` + :param resolver: Type resolver + :rtype: :class:`object` + :return: Python native value + """ + visitor = VapiToPythonVisitor(vapi_val, resolver) + binding_type.accept(visitor) + return visitor.get_out_value() +
+ @staticmethod +
[docs] def convert_to_vapi(py_val, binding_type): + """ + Converts Python native value to vAPI DataValue + + :type py_val: :class:`object` + :param py_val: Python native value to be converted + :type binding_type: :class:`vmware.vapi.bindings.type.BindingType` + :param binding_type: BindingType for the value + :rtype: :class:`vmware.vapi.data.value.DataValue` + :return: vAPI DataValue + """ + visitor = PythonToVapiVisitor(py_val) + binding_type.accept(visitor) + return visitor.get_out_value()
+
+ +
+
+
+
+
+ + +
+
+
+
+ + + + \ No newline at end of file diff --git a/vsphere/6.0/_modules/vmware/vapi/bindings/datetime_helper.html b/vsphere/6.0/_modules/vmware/vapi/bindings/datetime_helper.html new file mode 100644 index 00000000..bc4dd851 --- /dev/null +++ b/vsphere/6.0/_modules/vmware/vapi/bindings/datetime_helper.html @@ -0,0 +1,280 @@ + + + + + + + + + + vmware.vapi.bindings.datetime_helper — vCloud Suite SDK for Python 6.0.0 documentation + + + + + + + + + + + + + + +
+
+
+
+ +

Source code for vmware.vapi.bindings.datetime_helper

+"""
+Utility library for converting to/from datetime objects in Python Bindings
+"""
+__author__ = 'VMware, Inc'
+__copyright__ = 'Copyright 2012-2014 VMware, Inc.  All rights reserved. -- VMware Confidential'
+
+import logging
+import re
+from datetime import datetime, tzinfo, timedelta
+
+from vmware.vapi.l10n.runtime import message_factory
+from vmware.vapi.exception import CoreException
+
+logger = logging.getLogger(__name__)
+
+
+
[docs]class DateTimeConverter(object): + """ + Helper class to convert to/from Python datetime strings to + datetime objects. + + Datetime is represented as :class:`vmware.vapi.data.value.StringValue` in the + vAPI Runtime. Datetime is a primitive string that follows a subset of + ISO 8601. DateTime string represents a complete date plus hours, minutes, + seconds and a decimal fraction of a second: + + YYYY-MM-DDThh:mm:ss.sssZ (e.g. 1878-03-03T19:20:30.000Z) + where: + YYYY = four-digit year (years BC are not supported; + 0001 = 1 AD is the first valid year, + 0000 = 1 BC is not allowed) + MM = two-digit month (01=January, ..., 12=December) + DD = two-digit day of month (01 through 31) + "T" = separator; appears literally in the string + hh = two digits of hour (00 through 23; 24 NOT allowed; + am/pm NOT allowed) + mm = two digits of minute (00 through 59) + ss = two digits of second (00 through 59) + sss = exactly three digits representing milliseconds + "Z" = UTC time zone designator; appears literally in the string + """ + _dt_pattern = \ + '(\\d{4})-(\\d{2})-(\\d{2})T(\\d{2}):(\\d{2}):(\\d{2}).(\\d{3})Z' + _dt_expr = re.compile(_dt_pattern) + + @staticmethod +
[docs] def convert_to_datetime(datetime_str): + """ + Parse ISO 8601 date time from string. + + :type datetime_str: :class:`str` + :param datetime_str: Datetime in string representation that is in + YYYY-MM-DDThh:mm:ss.sssZ format + :rtype: :class:`datetime.datetime` + :return: Datetime object + """ + datetime_val = None + match = DateTimeConverter._dt_expr.match(datetime_str) + if not match or len(datetime_str) > 24: + msg = message_factory.get_message( + 'vapi.bindings.typeconverter.datetime.deserialize.invalid.format', + datetime_str, DateTimeConverter._dt_pattern) + logger.debug(msg) + raise CoreException(msg) + + year = int(match.group(1)) + month = int(match.group(2)) + if month < 1 or month > 12: + msg = message_factory.get_message( + 'vapi.bindings.typeconverter.datetime.deserialize.month.invalid', + datetime_str) + logger.debug(msg) + raise CoreException(msg) + + day = int(match.group(3)) + if day < 1 or day > 31: + msg = message_factory.get_message( + 'vapi.bindings.typeconverter.datetime.deserialize.day.invalid', + datetime_str) + logger.debug(msg) + raise CoreException(msg) + + hour = int(match.group(4)) + if hour > 23: + msg = message_factory.get_message( + 'vapi.bindings.typeconverter.datetime.deserialize.hour.invalid', + datetime_str) + logger.debug(msg) + raise CoreException(msg) + + minute = int(match.group(5)) + if minute > 59: + msg = message_factory.get_message( + 'vapi.bindings.typeconverter.datetime.deserialize.minute.invalid', + datetime_str) + logger.debug(msg) + raise CoreException(msg) + + second = int(match.group(6)) + if second > 59: + msg = message_factory.get_message( + 'vapi.bindings.typeconverter.datetime.deserialize.second.invalid', + datetime_str) + logger.debug(msg) + raise CoreException(msg) + + # Convert from millisecond to microsecond precision + microsecond = int('%s000' % match.group(7)) + try: + datetime_val = datetime(year=year, month=month, day=day, hour=hour, + minute=minute, second=second, + microsecond=microsecond) + except Exception as err: + msg = message_factory.get_message( + 'vapi.bindings.typeconverter.datetime.deserialize.invalid.time', + datetime_str, str(err)) + logger.error(msg) + raise CoreException(msg) + + return datetime_val +
+ @staticmethod +
[docs] def convert_from_datetime(datetime_obj): + """ + Convert from Python native datetime object to the datetime format in + vAPI Runtime i.e. YYYY-MM-DDThh:mm:ss.sssZ. + + datetime objects returned by datetime.now() or datetime.utcnow() does + not contain any timezone information. The caller to this method should + only pass datetime objects that have time in UTC timezone. + + datetime objects have microsecond precision but the vAPI datetime + string format has millisecond precision. The method will truncate the + microsecond to millisecond and won't do any rounding of the value. + + :type datetime_obj: :class:`datetime.datetime` + :param datetime_obj: Datetime object with UTC time + :rtype: :class:`str` + :return: String representation of the input datetime object + """ + if datetime_obj.tzinfo: + # If tzinfo object is present, it should be in UTC timezone + # i.e. timedelta is 0 + if datetime_obj.tzinfo.utcoffset(datetime_obj) != timedelta(0): + msg = message_factory.get_message( + 'vapi.bindings.typeconverter.datetime.serialize.invalid.tz', + str(datetime_obj)) + logger.error(msg) + raise CoreException(msg) + + # Since it is UTC timezone, replacing it with None + # the output of isoformat() does not match vAPI runtime datetime string + # format if tzinfo is present in the datetime object + datetime_obj = datetime_obj.replace(tzinfo=None) + + iso_str = datetime_obj.isoformat() + if datetime_obj.microsecond: + # datetime prints microseconds, reducing precision to milliseconds + iso_str = iso_str[:-3] + else: + # Python .isoformat does not print microsecond if it is 0 + iso_str = '%s.000' % iso_str + return '%sZ' % iso_str # Adding Z to indicate it is UTC timezone + +
+
[docs]class UTC(tzinfo): + """ + tzinfo class for UTC timezone + """ + # pylint: disable=W0613 +
[docs] def utcoffset(self, dt): + return timedelta(0) +
+
[docs] def tzname(self, dt): + return 'UTC' +
+
[docs] def dst(self, dt): + return timedelta(0) + +
+
[docs]def convert_to_utc(dt): + """ + Convert a given datetime object to UTC timezone + """ + if dt: + return dt.astimezone(UTC())
+
+ +
+
+
+
+
+ + +
+
+
+
+ + + + \ No newline at end of file diff --git a/vsphere/6.0/_modules/vmware/vapi/bindings/enum.html b/vsphere/6.0/_modules/vmware/vapi/bindings/enum.html new file mode 100644 index 00000000..522883cc --- /dev/null +++ b/vsphere/6.0/_modules/vmware/vapi/bindings/enum.html @@ -0,0 +1,133 @@ + + + + + + + + + + vmware.vapi.bindings.enum — vCloud Suite SDK for Python 6.0.0 documentation + + + + + + + + + + + + + + +
+
+
+
+ +

Source code for vmware.vapi.bindings.enum

+"""
+Bindings data classes
+"""
+
+__author__ = 'VMware, Inc.'
+__copyright__ = 'Copyright 2012 VMware, Inc.  All rights reserved. -- VMware Confidential'
+
+
+# Disabling the pylint complaint about badly implemented container
+# as we don't need __setitem__, __delitem__ and __getitem__
+
[docs]class Enum(str): # pylint: disable=R0924 + """ + Representation of IDL Enum in python language bindings + """ + _binding_type = None + + @classmethod + def _set_binding_type(cls, binding_type): + """ + Set the underlying BindingType for this VapiStruct. + + :type binding_type: :class:`vmware.vapi.data.value.BindingType` + :param binding_type: BindingType for this VapiStruct + """ + cls._binding_type = binding_type + + @classmethod +
[docs] def get_binding_type(cls): + """ + Returns the corresponding BindingType for the VapiStruct class + + :rtype: :class:`vmware.vapi.data.value.BindingType` + :return: BindingType for this VapiStruct + """ + return getattr(cls, '_binding_type', None) +
+ def __repr__(self): + class_name = self.__class__.__name__ + return '%s(string=%s)' % (class_name, str.__repr__(self))
+
+ +
+
+
+
+
+ + +
+
+
+
+ + + + \ No newline at end of file diff --git a/vsphere/6.0/_modules/vmware/vapi/bindings/error.html b/vsphere/6.0/_modules/vmware/vapi/bindings/error.html new file mode 100644 index 00000000..470fa63e --- /dev/null +++ b/vsphere/6.0/_modules/vmware/vapi/bindings/error.html @@ -0,0 +1,137 @@ + + + + + + + + + + vmware.vapi.bindings.error — vCloud Suite SDK for Python 6.0.0 documentation + + + + + + + + + + + + + + +
+
+
+
+ +

Source code for vmware.vapi.bindings.error

+"""
+Error classes and factory
+"""
+__author__ = 'VMware, Inc.'
+__copyright__ = 'Copyright 2012 VMware, Inc.  All rights reserved. -- VMware Confidential'
+
+from vmware.vapi.bindings.struct import VapiStruct
+
+
+
[docs]class VapiError(VapiStruct, Exception): + """ + Representation of VMODL Error in python language bindings + """ + def __init__(self, mappings=None, error_value=None): + """ + Initialize VapiError + + :type mappings: :class:`dict` or :class:`None` + :param mappings: A mapping for all field names whose IDL name does + not match PEP8 standard name + :type error_value: :class:`vmware.vapi.data.value.ErrorValue` or + :class:`None` + :param error_value: ErrorValue to be used for VapiError + """ + VapiStruct.__init__(self, mappings=mappings, struct_value=error_value) + Exception.__init__(self) + +
[docs] def get_error_value(self): + """ + Returns the corresponding ErrorValue for the VapiError class + + :rtype: :class:`vmware.vapi.data.value.ErrorValue` + :return: ErrorValue for this VapiError + """ + return self.get_struct_value() + +
+
[docs]class UnresolvedError(VapiError): + """ + VapiError which represents a VMODL2 error that was reported but couldn't + be resolved + """ + pass
+
+ +
+
+
+
+
+ + +
+
+
+
+ + + + \ No newline at end of file diff --git a/vsphere/6.0/_modules/vmware/vapi/bindings/skeleton.html b/vsphere/6.0/_modules/vmware/vapi/bindings/skeleton.html new file mode 100644 index 00000000..8756d1b7 --- /dev/null +++ b/vsphere/6.0/_modules/vmware/vapi/bindings/skeleton.html @@ -0,0 +1,386 @@ + + + + + + + + + + vmware.vapi.bindings.skeleton — vCloud Suite SDK for Python 6.0.0 documentation + + + + + + + + + + + + + + +
+
+
+
+ +

Source code for vmware.vapi.bindings.skeleton

+"""
+Skeleton helper classes
+"""
+__author__ = 'VMware, Inc.'
+__copyright__ = 'Copyright 2011-2014 VMware, Inc.  All rights reserved. -- VMware Confidential'
+
+
+import sys
+import threading
+import logging
+import six
+
+from vmware.vapi.core import ApiInterface, MethodIdentifier
+from vmware.vapi.core import InterfaceDefinition, MethodResult, MethodDefinition
+from vmware.vapi.core import InterfaceIdentifier
+from vmware.vapi.bindings.error import VapiError
+from vmware.vapi.bindings.converter import TypeConverter
+from vmware.vapi.bindings.common import NameToTypeResolver
+from vmware.vapi.bindings.type import (
+    ListType, OptionalType, ReferenceType, StructType, DynamicStructType)
+from vmware.vapi.exception import CoreException
+from vmware.vapi.lib.converter import Converter
+from vmware.vapi.lib.std import make_error_value_from_msgs, make_std_error_def
+from vmware.vapi.l10n.runtime import message_factory
+
+# TLS object to store the execution context of a request
+TLS = threading.local()
+TLS.ctx = None
+
+logger = logging.getLogger(__name__)
+
+
+
[docs]class ApiInterfaceSkeleton(ApiInterface): + """ + Skeleton class for :class:`ApiInterface`. This class implements the + :class:`ApiInterface` interface. + """ + + # XXX These error definitions should be eliminated when we figure out + # where/how to get the error definitions used by the local provider + _internal_server_error_def = make_std_error_def( + 'com.vmware.vapi.std.errors.internal_server_error') + _invalid_argument_def = make_std_error_def( + 'com.vmware.vapi.std.errors.invalid_argument') + _unexpected_input_def = make_std_error_def( + 'com.vmware.vapi.std.errors.unexpected_input') + + def __init__(self, iface_name, impl, operations, error_types): + """ + Initialize the ApiInterface skeleton class + + :type iface_name: :class:`str` + :param iface_name: Interface name + :type impl: :class:`VapiInterface` + :param impl: Class that implements this interface + :type operations: :class:`dict` + :param operations: Description of the operations in this service + :type error_types: :class:`list` of :class:`vmware.vapi.bindings.type.ErrorType` + :param error_types: error types to be registered in this configuration + """ + self._operations = operations + self._iface_id = InterfaceIdentifier(iface_name) + operation_ids = [MethodIdentifier(self._iface_id, operation_name) + for operation_name in six.iterkeys(self._operations)] + self._iface_def = InterfaceDefinition(self._iface_id, + operation_ids) + self._impl = impl + error_types = error_types or [] + self._resolver = NameToTypeResolver( + dict([(e.definition.name, e) for e in error_types])) + ApiInterface.__init__(self) + + @staticmethod + def _pepify_args(meth_args): + """ + Converts all the keys of given keyword arguments into PEP8 standard + names + + :type meth_args: :class:`dict` + :param meth_args: The keyword arguments to be converted + :rtype: :class:`dict` + :return: The converted keyword arguments + """ + new_args = {} + for k, v in six.iteritems(meth_args): + new_args[Converter.canonical_to_pep(k)] = v + return new_args + + @classmethod +
[docs] def check_for_unknown_fields(cls, value_type, value): + """ + Check if the StructValues inside the input DataValue has any + unknown fields + + :type value_type: :class:`vmware.vapi.bindings.type.BindingType` + :param value_type: Binding Type + :type value: :class:`vmware.vapi.data.value.DataValue` + :param value: DataValue + :rtype: :class:`vmware.vapi.data.value.ErrorValue` or ``None`` + :return: ErrorValue describing the unknown fields or None if no + unknown fields were found + """ + if isinstance(value_type, ReferenceType): + value_type = value_type.resolved_type + + if isinstance(value_type, DynamicStructType): + pass + elif isinstance(value_type, StructType): + expected_field_names = value_type.get_field_names() + actual_field_names = value.get_field_names() + unexpected_fields = set(actual_field_names) - set(expected_field_names) + if unexpected_fields: + msg = message_factory.get_message( + 'vapi.data.structure.field.unexpected', + repr(unexpected_fields), value.name) + logger.debug(msg) + return make_error_value_from_msgs(cls._unexpected_input_def, + msg) + for field in expected_field_names: + field_value = value.get_field(field) + field_type = value_type.get_field(field) + return ApiInterfaceSkeleton.check_for_unknown_fields( + field_type, field_value) + elif isinstance(value_type, ListType): + element_type = value_type.element_type + if (isinstance(element_type, ListType) or + isinstance(element_type, OptionalType) or + isinstance(element_type, StructType) or + isinstance(element_type, ReferenceType)): + for element in value: + return ApiInterfaceSkeleton.check_for_unknown_fields( + element_type, element) + elif isinstance(value_type, OptionalType): + if value.is_set(): + return ApiInterfaceSkeleton.check_for_unknown_fields( + value_type.element_type, value.value) + return None +
+
[docs] def get_identifier(self): + return self._iface_id +
+
[docs] def get_definition(self): + return self._iface_def +
+
[docs] def get_method_definition(self, method_id): + opInfo = self._operations.get(method_id.get_name()) + errors_defs = [e.definition for e in opInfo['errors']] + if self._internal_server_error_def not in errors_defs: + errors_defs.append(self._internal_server_error_def) + if self._invalid_argument_def not in errors_defs: + errors_defs.append(self._invalid_argument_def) + if self._unexpected_input_def not in errors_defs: + errors_defs.append(self._unexpected_input_def) + return MethodDefinition(method_id, + opInfo['input_type'].definition, + opInfo['output_type'].definition, + errors_defs) +
+
[docs] def invoke(self, ctx, method_id, input_value): + """ + Invokes the specified method using the execution context and + the input provided + + :type ctx: :class:`vmware.vapi.core.ExecutionContext` + :param ctx: Execution context for this method + :type input_value: :class:`vmware.vapi.data.value.StructValue` + :param input_value: Method input parameters + + :rtype: :class:`vmware.vapi.core.MethodResult` + :return: Result of the method invocation + """ + opInfo = self._operations.get(method_id.get_name()) + + # Set execution context in the TLS object of the impl + TLS.ctx = ctx + + try: + # input validators + validators = opInfo['input_validator_list'] + input_type = opInfo['input_type'] + for validator in validators: + msg_list = validator.validate(input_value, input_type) + if msg_list: + error_value = make_error_value_from_msgs( + self._invalid_argument_def, *msg_list) + return MethodResult(error=error_value) + error_value = ApiInterfaceSkeleton.check_for_unknown_fields( + input_type, input_value) + if error_value: + return MethodResult(error=error_value) + + try: + meth_args = TypeConverter.convert_to_python( + input_value, binding_type=input_type, + resolver=self._resolver) + except CoreException as e: + error_value = make_error_value_from_msgs( + self._invalid_argument_def, *e.messages) + return MethodResult(error=error_value) + + meth_args = ApiInterfaceSkeleton._pepify_args(meth_args) + method_name = Converter.canonical_to_pep(method_id.get_name()) + method = getattr(self._impl, method_name) + meth_output = method(**meth_args) + + output_type = opInfo['output_type'] + output = TypeConverter.convert_to_vapi(meth_output, + output_type) + # output validators + validators = opInfo['output_validator_list'] + for validator in validators: + msg_list = validator.validate(output, output_type) + if msg_list: + error_value = make_error_value_from_msgs( + self._internal_server_error_def, *msg_list) + return MethodResult(error=error_value) + result = MethodResult(output=output) + except CoreException as e: + logger.exception("Error in invoking %s - %s", + str(method_id), e) + error_value = make_error_value_from_msgs( + self._internal_server_error_def, + *e.messages) + result = MethodResult(error=error_value) + except VapiError as e: + exc_info = sys.exc_info() + error_type = e.__class__.get_binding_type() + try: + error = TypeConverter.convert_to_vapi(e, error_type) + except CoreException as ce: + logger.error('Failed to convert %s to error type %s because %s', + e, error_type.name, + ' because '.join((e.def_msg for e in ce.messages)), + exc_info=exc_info) + raise + result = MethodResult(error=error) + finally: + # Reset the execution context after the operation + TLS.ctx = None + + return result + +
+
[docs]class VapiInterface(object): + """ + vAPI Interface class is used by the python server side bindings. This + encapsulates the :class:`vmware.vapi.bindings.skeleton.ApiInterfaceSkeleton` class. + """ + def __init__(self, api_interface, error_types=None): + """ + Initialize the VapiInterface class + + :type api_interface: :class:`vmware.vapi.bindings.skeleton.ApiInterfaceSkeleton` + :param api_interface: Api Interface skeleton class for this interface + :type error_types: :class:`list` of :class:`vmware.vapi.bindings.type.ErrorType` + :param error_types: error types to be registered in this configuration + """ + self._api_interface = api_interface(self, error_types=error_types) + + @property +
[docs] def api_interface(self): + """ + Returns the ApiInterfaceSkeleton instance. Local Provider uses this + method to discover the ApiInterface so that it can route method calls + for the methods implemented by this interface. + + :rtype: :class:`vmware.vapi.bindings.skeleton.ApiInterfaceSkeleton` + :return: Api Interface skeleton class for this interface + """ + return self._api_interface +
+ @property +
[docs] def execution_context(self): + """ + Returns the execution context of a method invocation + + :rtype: :class:`vmware.vapi.core.ExecutionContext` + :return: Execution context of a method invocation + """ + return TLS.ctx + +
+
[docs]class VapiFilter(logging.Filter): + """ + This is a filter that injects request context into the log + """ +
[docs] def filter(self, record): + if TLS.ctx is not None: + record.op_id = TLS.ctx.application_context.get('opId') + else: + record.op_id = None + return True
+
+ +
+
+
+
+
+ + +
+
+
+
+ + + + \ No newline at end of file diff --git a/vsphere/6.0/_modules/vmware/vapi/bindings/struct.html b/vsphere/6.0/_modules/vmware/vapi/bindings/struct.html new file mode 100644 index 00000000..f7eb248a --- /dev/null +++ b/vsphere/6.0/_modules/vmware/vapi/bindings/struct.html @@ -0,0 +1,405 @@ + + + + + + + + + + vmware.vapi.bindings.struct — vCloud Suite SDK for Python 6.0.0 documentation + + + + + + + + + + + + + + +
+
+
+
+ +

Source code for vmware.vapi.bindings.struct

+"""
+Bindings data classes
+"""
+
+__author__ = 'VMware, Inc.'
+__copyright__ = 'Copyright 2013-2014 VMware, Inc.  All rights reserved. -- VMware Confidential'
+
+import six
+import sys
+
+from vmware.vapi.bindings.common import raise_core_exception
+
+
+# TODO: Split this into static and dynamic structures.
+
[docs]class VapiStruct(object): + """ + Representation of IDL Structure in python language bindings + """ + _validator_list = None + + def __init__(self, mappings=None, struct_value=None): + """ + Initialize VapiStruct + + :type mappings: :class:`dict` or :class:`None` + :param mappings: A mapping for all field names whose IDL name does + not match PEP8 standard name + :type struct_value: :class:`vmware.vapi.data.value.StructValue` + :param struct_value: StructValue to be used for VapiStruct or :class:`None` + """ + self._mappings = mappings + # fields will either be in native form or in unknown + # fields + self._unexpected_fields = None + self._struct_value = struct_value + +
[docs] def get_field(self, attr): + """ + Returns the struct field value + + :type attr: :class:`str` + :param attr: Field name as defined in IDL + :rtype: :class:`object` + :return: Field value + """ + if self._mappings and attr in self._mappings: + return getattr(self, self._mappings[attr]) + else: + return getattr(self, attr) +
+ @classmethod +
[docs] def validate_struct_value(cls, struct_value): + """ + Validate if the given struct value satisfies all + the constraints of this VapiStruct. + + :type struct_value: :class:`vmware.vapi.data.value.StructValue` + :param struct_value: StructValue to be validated + :type validators: :class:`list` of :class:`vmware.vapi.data.validator.Validator` + :param validators: List of validators + :raise :class:`vmware.vapi.exception.CoreException` if a constraint is + not satisfied + """ + if cls._validator_list: + for validator in cls._validator_list: + msg_list = validator.validate(struct_value, None) + raise_core_exception(msg_list) +
+
[docs] def validate_constraints(self): + """ + Validate if the current VapiStruct instance satisfies all the + constraints of this VapiStruct type. + + :raise :class:`vmware.vapi.exception.CoreException` if a constraint is + not satisfied + """ + struct_value = self.get_struct_value() + self.validate_struct_value(struct_value) +
+ @classmethod +
[docs] def get_binding_type(cls): + """ + Returns the corresponding BindingType for the VapiStruct class + + :rtype: :class:`vmware.vapi.bindings.type.BindingType` + :return: BindingType for this VapiStruct + """ + return getattr(cls, '_binding_type', None) +
+ @classmethod + def _set_binding_type(cls, binding_type): + """ + Set the underlying BindingType for this VapiStruct. + + :type binding_type: :class:`vmware.vapi.bindings.type.BindingType` + :param binding_type: BindingType for this VapiStruct + """ + cls._binding_type = binding_type + +
[docs] def get_struct_value(self): + """ + Returns the corresponding StructValue for the VapiStruct class + + :rtype: :class:`vmware.vapi.data.value.StructValue` + :return: StructValue for this VapiStruct + """ + # For dynamic structures + if self._struct_value: + return self._struct_value + else: + # For static structures + from vmware.vapi.bindings.converter import TypeConverter + struct_value = TypeConverter.convert_to_vapi(self, self._binding_type) + unexpected_fields = self._unexpected_fields or {} + for k, v in six.iteritems(unexpected_fields): + struct_value.set_field(k, v) + return struct_value +
+ def _set_unexpected_fields(self, unexpected_fields=None): + """ + Set the underlying StructValue for this VapiStruct. This is + an internal method and should only be used by vAPI runtime. + + :type unexpected_fields: :class:`dict` of :class:`str` and + :class:`vmware.vapi.data.value.DataValue` or :class:`None` + :param struct_value: StructValue for this VapiStruct + """ + self._unexpected_fields = unexpected_fields + +
[docs] def convert_to(self, cls): + """ + Convert the underlying StructValue to an instance of the provided class + if possible. Conversion will be possible if the StructValue contains + all the fields expected by the provided class and the type of the value + in each fields matches the type of the field expected by the provided + class. + + :type cls: :class:`vmware.vapi.data.value.StructValue` + :param cls: The type to convert to + :rtype: :class:'vmware.vapi.bindings.struct.VapiStruct' + :return: The converted value + """ + from vmware.vapi.bindings.converter import TypeConverter + + return TypeConverter.convert_to_python(self.get_struct_value(), + cls.get_binding_type()) +
+ def _get_attrs(self): + """ + Returns the attributes of the vAPI structure object + + :rtype: :class:`list` of :class:`str` + :return: List of attributes of this object + """ + # Using getmembers in inspect to return all the attributes + # of this object. And later filter those to get only the + # public data attributes + return [k for k in six.iterkeys(vars(self)) + if not k.startswith('_')] + + def __eq__(self, other): + for attr in self._get_attrs(): + if getattr(self, attr) != getattr(other, attr): + return False + return True + + def __ne__(self, other): + return not (self == other) + + def __repr__(self): + class_name = self.__class__.__name__ + attrs = self._get_attrs() + result = ', '.join( + ['%s=%s' % (attr, repr(getattr(self, attr))) + for attr in attrs]) + return '%s(%s)' % (class_name, result) + + def __str__(self): + attrs = self._get_attrs() + result = ', '.join( + ['%s : %s' % (attr, str(getattr(self, attr))) + for attr in attrs]) + return '{%s}' % result + + def __hash__(self): + return str(self).__hash__() + +
+
[docs]class PrettyPrinter(object): + """ + Helper class to Pretty print VapiStruct objects + """ + def __init__(self, stream=sys.stdout, indent=2): + """ + Initialize PrettyPrinter + + :type stream: :class:`object` + :param stream: A stream object that implements File protocol's + write operation + :type indent: :class:`int` + :param indent: Indentation to be used for new lines + """ + self._stream = stream + self._indent = indent + +
[docs] def pprint(self, value, level=0): + """ + Print a vAPI native struct value + + :type value: :class:`vmware.vapi.bindings.struct.VapiStruct` + :param value: VapiStruct to be pretty printed + :type level: :class:`int` + :param level: Indentation level + """ + self._pprint_struct(value, level + self._indent) +
+ def _print_level(self, value, level, newline=True): + """ + Print data at a given identation level + + :type value: :class:`str` + :param value: String to be printed + :type level: :class:`int` + :param level: Indentation level + :type newline: :class:`bool` + :param newline: If true, prints a new line after the data. If false, + only prints the data + """ + if level: + self._stream.write(' ' * level + value) + else: + self._stream.write(value) + if newline: + self._stream.write('\n') + + def _process_value(self, value, level=0): + """ + Process a value + + :type value: :class:`object` + :param value: Value to be processed + :type level: :class:`int` + :param level: Indentation level + """ + if isinstance(value, VapiStruct): + self._pprint_struct(value, level + self._indent) + elif isinstance(value, dict): + self._pprint_dict(value, level + self._indent) + elif isinstance(value, list): + self._pprint_list(value, level + self._indent) + elif isinstance(value, six.string_types): + self._print_level("'%s'," % value, 0) + elif isinstance(value, six.integer_types): + self._print_level('%s,' % value, 0) + elif value is None: + self._print_level('None,', 0) + else: + self._print_level('%s,' % value, level) + + def _pprint_struct(self, value, level=0): + """ + Pretty print a struct + + :type value: :class:`vmware.vapi.bindings.struct.VapiStruct` + :param value: Value to be processed + :type level: :class:`int` + :param level: Indentation level + """ + class_name = value.__class__.__name__ + self._print_level(class_name + '(', 0) + for k in sorted(value._get_attrs()): # pylint: disable=W0212 + v = getattr(value, k) + self._print_level('%s=' % k, level, False) + self._process_value(v, level) + self._print_level('),', level - self._indent) + + def _pprint_dict(self, value, level=0): + """ + Pretty print a dictionary + + :type value: :class:`dict` + :param value: Value to be processed + :type level: :class:`int` + :param level: Indentation level + """ + if not value: + self._print_level('{},', 0) + return + self._print_level('{', 0) + for k in sorted(value.keys()): + self._print_level("'%s':" % k, level, False) + self._process_value(value[k], level) + self._print_level('},', level - self._indent) + + def _pprint_list(self, value, level=0): + """ + Pretty print a list + + :type value: :class:`list` + :param value: Value to be processed + :type level: :class:`int` + :param level: Indentation level + """ + if not value: + self._print_level('[],', 0) + return + self._print_level('[', 0) + for v in value: + self._print_level('', level, False) + self._process_value(v, level) + self._print_level('],', level - self._indent)
+
+ +
+
+
+
+
+ + +
+
+
+
+ + + + \ No newline at end of file diff --git a/vsphere/6.0/_modules/vmware/vapi/bindings/stub.html b/vsphere/6.0/_modules/vmware/vapi/bindings/stub.html new file mode 100644 index 00000000..1aa6ae46 --- /dev/null +++ b/vsphere/6.0/_modules/vmware/vapi/bindings/stub.html @@ -0,0 +1,367 @@ + + + + + + + + + + vmware.vapi.bindings.stub — vCloud Suite SDK for Python 6.0.0 documentation + + + + + + + + + + + + + + +
+
+
+
+ +

Source code for vmware.vapi.bindings.stub

+"""
+Stub helper classes
+"""
+
+__author__ = 'VMware, Inc.'
+__copyright__ = 'Copyright 2011-2014 VMware, Inc.  All rights reserved. -- VMware Confidential'
+
+
+import logging
+import six
+
+from vmware.vapi.core import MethodIdentifier, InterfaceDefinition, MethodDefinition
+from vmware.vapi.core import InterfaceIdentifier, ApiInterface
+from vmware.vapi.bindings.converter import TypeConverter
+from vmware.vapi.bindings.error import UnresolvedError
+from vmware.vapi.bindings.common import (
+    raise_core_exception, NameToTypeResolver)
+from vmware.vapi.lib.converter import Converter
+
+logger = logging.getLogger(__name__)
+
+
+
[docs]class StubConfiguration(object): + """ + Configuration data for vAPI stub classes + + :type connector: :class:`vmware.vapi.protocol.client.connector.Connector` + :ivar connector: Connection to be used to talk to the remote ApiProvider + """ + def __init__(self, connector, *error_types): + """ + Initialize the stub configuration + + :type connector: :class:`vmware.vapi.protocol.client.connector.Connector` + :param connector: Connection to be used to talk to the remote + ApiProvider + :type error_types: :class:`list` of :class:`vmware.vapi.bindings.type.ErrorType` + :param error_types: error types to be registered in this configuration + """ + if connector is None: + raise TypeError('Input parameter connector is None') + self._connector = connector + self._resolver = NameToTypeResolver( + dict([(e.definition.name, e) for e in error_types])) + + @property +
[docs] def connector(self): + """ + :rtype: :class:`vmware.vapi.protocol.client.connector.Connector` + :return: Connection to be used to talk to the remote ApiProvider + """ + return self._connector +
+ @property +
[docs] def resolver(self): + """ + Type resolver that can resolve canonical names to its binding types + + :rtype: :class:`vmware.vapi.bindings.common.NameToTypeResolver` + :return: Type resolver + """ + return self._resolver + + +# We don't need all the methods in ApiMethod in the stub. +# So disabling method not implemented pylint error
+
[docs]class ApiInterfaceStub(ApiInterface): # pylint: disable=W0223 + """ + Stub class for Api Interface + """ + def __init__(self, iface_name, config, operations): + """ + Initialize the ApiMethod skeleton object + + :type iface_name: :class:`str` + :param iface_name: Interface name + :type config: :class:`StubConfiguration` + :param config: Configuration data for vAPI stubs + :type operations: :class:`dict` + :param operations: Dictionary of operation name to operation information + """ + self._iface_id = InterfaceIdentifier(iface_name) + self._config = config + self._operations = operations + self._api_provider = config.connector.get_api_provider() + ApiInterface.__init__(self) + +
[docs] def get_identifier(self): + """ + Returns interface identifier + + :rtype: :class:`InterfaceIdentifier` + :return: Interface identifier + """ + return self._iface_id +
+
[docs] def get_definition(self): + """ + Returns interface definition + + :rtype: :class:`InterfaceDefinition` + :return: Interface definition + """ + operations = [MethodIdentifier(self._iface_id, operation_name) + for operation_name in six.iterkeys(self._operations)] + return InterfaceDefinition(self._iface_id, operations) +
+
[docs] def get_method_definition(self, method_id): + opInfo = self._operations.get(method_id.get_name()) + errors_defs = [e.definition for e in six.itervalues(opInfo.get('errors'))] + return MethodDefinition(method_id, + opInfo.get('input_type').definition, + opInfo.get('output_type').definition, + errors_defs) +
+
[docs] def invoke(self, ctx, method_id, input_value): + """ + Invokes the specified method using the execution context and + the input provided + + :type ctx: :class:`vmware.vapi.core.ExecutionContext` + :param ctx: Execution context for this method + :type method_id: :class:`vmware.vapi.core.MethodIdentifier` + :param method_id: Method identifier + :type input_value: :class:`vmware.vapi.data.value.StructValue` + :param input_value: Method input parameters + + :rtype: :class:`vmware.vapi.core.MethodResult` + :return: Result of the method invocation + """ + return self._api_provider.invoke(self._iface_id.get_name(), + method_id.get_name(), + input_value, + ctx) +
+
[docs] def native_invoke(self, ctx, method_name, kwargs): + """ + Invokes the method corresponding to the given method name + with the kwargs. + + In this method, python native values are converted to vAPI runtime values, + operation is invoked and the result are converted back to python native + values + + :type method_name: :class:`str` + :param method_name: Method name + :type kwargs: :class:`dict` + :param kwargs: arguments to be passed to the method + :rtype: :class:`object` + :return: Method result + """ + opInfo = self._operations.get(method_name) + if opInfo is None: + raise Exception('Could not find %s method in %s interface' % + (method_name, str(self._iface_id))) + + # Convert input + input_type = opInfo['input_type'] + data_val = TypeConverter.convert_to_vapi(kwargs, input_type) + + # Validate input + validators = opInfo['input_validator_list'] + for validator in validators: + msg_list = validator.validate(data_val, input_type) + raise_core_exception(msg_list) + + # Invoke + method_id = MethodIdentifier(self._iface_id, method_name) + method_result = self.invoke(ctx, method_id, data_val) + + # Validate output + if method_result.success(): + validators = opInfo['output_validator_list'] + output_type = opInfo['output_type'] + for validator in validators: + msg_list = validator.validate(method_result.output, output_type) + raise_core_exception(msg_list) + + # Convert output + return TypeConverter.convert_to_python(method_result.output, + output_type, + self._config.resolver) + else: + # Convert error + errors = opInfo['errors'] + error_type = errors.get(method_result.error.name) + if error_type is None: + error_type = self._config.resolver.resolve(method_result.error.name) + if error_type is None: + logger.warning('Unable to convert unexpected vAPI error %s ' + + 'to native Python exception', + method_result.error.name) + vapi_error = UnresolvedError({}, method_result) + raise vapi_error + raise TypeConverter.convert_to_python(method_result.error, # pylint: disable=E0702 + error_type, + self._config.resolver) + +
+
[docs]class VapiInterface(object): + """ + vAPI Interface class is used by the python client side bindings. This + encapsulates the ApiInterfaceStub instance + """ + def __init__(self, config, api_interface): + """ + Initialize VapiInterface object + + :type config: :class:`StubConfiguration` + :param config: Configuration data for vAPI stubs + :type api_interface: :class:`ApiInterfaceStub` + :param api_interface: Instance of ApiInterfaceStub class that can + execute the ApiMethods + """ + if config is None: + raise TypeError('Input parameter config is None') + if isinstance(config, StubConfiguration): + self._config = config + else: + raise TypeError('Input parameter config is not a StubConfiguration') + self._api_interface = api_interface(self._config) + + def _invoke(self, _method_name, kwargs): + """ + Invokes the ApiMethod corresponding to the given method name + with the kwargs + + :type _method_name: :class:`str` + :param _method_name: Method name + :type kwargs: :class:`dict` of :class:`str` and :class:`object` or :class:`None` + :param kwargs: arguments to be passed to the method + :return: Method result + """ + kwargs = kwargs or {} + # Argument name is _method_name to make sure it doesn't collide + # with actual parameter names of the method + ctx = self._config.connector.new_context() + return self._api_interface.native_invoke(ctx, _method_name, kwargs) + +
+
[docs]class StubFactory(object): + """ + Factory for client-side vAPI stubs + """ + def __init__(self, config): + """ + Initialize the stub factory + + :type config: :class:`StubConfiguration` + :param config: Configuration data for vAPI stubs + """ + if config is None: + raise TypeError('Input parameter config is None') + if not isinstance(config, StubConfiguration): + raise TypeError('Input parameter config is not a StubConfiguration') + self._config = config + +
[docs] def create_stub(self, service_name): + """ + Create a stub corresponding to the specified service name + + :type service_name: :class:`str` + :param service_name: Name of the service + + :rtype: :class:`VapiInterface` + :return: The stub correspoding to the specified service name + """ + path_split = service_name.split('.') + module_name = '%s_client' % '.'.join(path_split[:-1]) + class_name = Converter.underscore_to_capwords(path_split[-1]) + module = __import__(module_name, globals(), locals(), class_name) + cls = getattr(module, class_name) + return cls(self._config)
+
+ +
+
+
+
+
+ + +
+
+
+
+ + + + \ No newline at end of file diff --git a/vsphere/6.0/_modules/vmware/vapi/bindings/type.html b/vsphere/6.0/_modules/vmware/vapi/bindings/type.html new file mode 100644 index 00000000..042298be --- /dev/null +++ b/vsphere/6.0/_modules/vmware/vapi/bindings/type.html @@ -0,0 +1,1065 @@ + + + + + + + + + + vmware.vapi.bindings.type — vCloud Suite SDK for Python 6.0.0 documentation + + + + + + + + + + + + + + +
+
+
+
+ +

Source code for vmware.vapi.bindings.type

+"""
+Representation of an IDL type for the use of the Python language bindings.
+"""
+__author__ = 'VMware, Inc.'
+__copyright__ = 'Copyright 2012-2014 VMware, Inc.  All rights reserved. -- VMware Confidential'
+
+import six
+
+from vmware.vapi.data.definition import (
+    IntegerDefinition, DoubleDefinition, BooleanDefinition, StringDefinition,
+    BlobDefinition, VoidDefinition, OpaqueDefinition, ListDefinition,
+    StructDefinition, OptionalDefinition, SecretDefinition, StructRefDefinition,
+    ErrorDefinition, ReferenceResolver, DynamicStructDefinition,
+    AnyErrorDefinition)
+from vmware.vapi.lib.visitor import VapiVisitor
+from vmware.vapi.lib.constants import MAP_ENTRY
+
+MAP_KEY_FIELD = 'key'
+MAP_VALUE_FIELD = 'value'
+
+
+
[docs]class BindingType(object): + """ + Representation of an IDL type for the use of the Python language bindings + + :type definition: :class:`vmware.vapi.data.definition.DataDefinition` + :param definition: Data definition corresponding to this binding type + """ + def __init__(self): + self._definition = None + +
[docs] def accept(self, visitor): + """ + Applies a visitor to this BindingType + + :type visitor: :class:`BindingTypeVisitor` + :param visitor: visitor operating on the BindingType + """ + visitor.visit(self) +
+ @property +
[docs] def definition(self): + """ + Generate the data defintion corresponding to this binding type + """ + # This will make sure that we only generate the definition once + # for every instance of binding type + if self._definition is None: + self._definition = TypeUtil.convert_to_data_definition(self) + return self._definition + +
+
[docs]class VoidType(BindingType): + """ + Representation of void IDL type in Python Binding + """ + def __init__(self): + BindingType.__init__(self) + +
+
[docs]class IntegerType(BindingType): + """ + Representation of integer IDL Type in Python Binding + """ + def __init__(self): + BindingType.__init__(self) + +
+
[docs]class DoubleType(BindingType): + """ + Representation of float IDL Type in Python Binding + """ + def __init__(self): + BindingType.__init__(self) + +
+
[docs]class StringType(BindingType): + """ + Representation of string IDL Type in Python Binding + """ + def __init__(self): + BindingType.__init__(self) + +
+
[docs]class SecretType(BindingType): + """ + Representation of @secret IDL annotation in Python Binding. @secret + annotation can only be applied to strings. + """ + def __init__(self): + BindingType.__init__(self) + +
+
[docs]class BooleanType(BindingType): + """ + Representation of boolean IDL Type in Python Binding + """ + def __init__(self): + BindingType.__init__(self) + +
+
[docs]class BlobType(BindingType): + """ + Representation of binary IDL Type in Python Binding + """ + def __init__(self): + BindingType.__init__(self) + +
+
[docs]class OptionalType(BindingType): + """ + Representation of optional IDL annotation in Python Binding + + :type element_type: :class:`BindingType` + :ivar element_type: element type + """ + def __init__(self, element_type): + if not isinstance(element_type, BindingType): + raise TypeError('Expected an instance of BindingType as' + + 'element_type parameter of OptionalType()') + self._element_type = element_type + BindingType.__init__(self) + + @property +
[docs] def element_type(self): + """ + Return the element type of this ListType + + :rtype: :class:`BindingType` + :return: element type + """ + return self._element_type + +
+
[docs]class ListType(BindingType): + """ + Representation of List IDL type in Python Binding + + :type element_type: :class:`BindingType` + :ivar element_type: element type + """ + def __init__(self, element_type): + if not isinstance(element_type, BindingType): + raise TypeError('Expected an instance of BindingType as' + + 'element_type parameter of ListType()') + self._element_type = element_type + BindingType.__init__(self) + + @property +
[docs] def element_type(self): + """ + Return the element type of this ListType + + :rtype: :class:`BindingType` + :return: element type + """ + return self._element_type + +
+
[docs]class SetType(BindingType): + """ + Representation of Set IDL type in Python Binding + + :type element_type: :class:`BindingType` + :ivar element_type: element type + """ + def __init__(self, element_type): + if not isinstance(element_type, BindingType): + raise TypeError('Expected an instance of BindingType as' + + 'element_type parameter of SetType()') + self._element_type = element_type + BindingType.__init__(self) + + @property +
[docs] def element_type(self): + """ + Return the element type of this SetType + + :rtype: :class:`BindingType` + :return: element type + """ + return self._element_type + +
+
[docs]class MapType(BindingType): + """ + Representation of Map IDL type in Python Binding + + :type key_type: :class:`BindingType` + :ivar key_type: map key type + :type value_type: :class:`BindingType` + :ivar value_type: map value type + """ + def __init__(self, key_type, value_type): + if not isinstance(key_type, BindingType) or not isinstance(value_type, BindingType): + raise TypeError('Expected an instance of BindingType for' + + 'key_type and value_type parameters of MapType()') + self._key_type = key_type + self._value_type = value_type + BindingType.__init__(self) + + @property +
[docs] def key_type(self): + """ + Return the key type of this MapType + + :rtype: :class:`BindingType` + :return: key type + """ + return self._key_type +
+ @property +
[docs] def value_type(self): + """ + Return the value type of this MapType + + :rtype: :class:`BindingType` + :return: value type + """ + return self._value_type + +
+
[docs]class StructType(BindingType): + """ + Representation of Structure IDL type in Python Binding + + :type name: :class:`str` + :ivar name: Name of the structure + :type binding_class: :class:`vmware.vapi.bindings.struct.VapiStruct` + :ivar binding_class: Reference to the Python native class corresponding + to this structure + :type is_model: :class:`bool` + :ivar is_model: True if the structure is marked as Model, False otherwise + :type model_keys: :class:`list` of :class:`str` or :class:`None` + :ivar model_keys: List of model keys for the structure if it is marked as Model + """ + def __init__(self, name, fields, binding_class=None, is_model=False, model_keys=None): + if not isinstance(name, six.string_types): + raise TypeError('Structure name should be a string') + if not isinstance(fields, dict): + raise TypeError('Expected a dict instance in StructType') + for field_name, binding_type in six.iteritems(fields): + if not isinstance(binding_type, BindingType): + raise TypeError('Type of the field %s in StructType should ' + + 'be a BindingType' % field_name) + self._name = name + self._binding_class = binding_class + self._field_map = fields + self._is_model = is_model + self._model_keys = model_keys + BindingType.__init__(self) + + @property +
[docs] def name(self): + """ + Returns the name of the StructType + + :rtype: :class:`str` + :return: Name of the StructType + """ + return self._name +
+ @property +
[docs] def binding_class(self): + """ + Returns the reference to the Python native class + corresponding to this structure + + :rtype: :class:`vmware.vapi.bindings.struct.VapiStruct` + :return: Reference to the python native class + """ + return self._binding_class +
+ @property +
[docs] def is_model(self): + """ + Check if the Struct is marked as model + + :rtype: :class:`bool` + :return: True if the Struct is marked as model, False otherwise + """ + return self._is_model +
+ @property +
[docs] def model_keys(self): + """ + Returns list of model keys for the Struct if it is marked as model + + :rtype: :class:`list` of :class:`str` or None + :return: List of model keys for the Struct if it is marked as model + """ + return self._model_keys +
+
[docs] def get_field_names(self): + """ + Returns the list of field names present in this StructType + + :rtype: :class:`list` of :class:`str` + :return: List of field names + """ + return list(self._field_map.keys()) +
+
[docs] def get_field(self, field_name): + """ + Returns the BindingType of the argument + + :type field_name: :class:`str` + :param field_name: Field name + :rtype: :class:`BindingType` + :return: BindingType of the field specified + """ + return self._field_map.get(field_name) + +
+
[docs]class ErrorType(StructType): + """ + Representation of Error IDL type in Python Binding + + :type definition: :class:`vmware.vapi.data.ErrorDefinition` + :ivar definition: type representation in the API runtime + :type name: :class:`str` + :ivar name: Name of the structure + :type binding_class: :class:`vmware.vapi.bindings.error.VapiError` + :ivar binding_class: Reference to the Python native class corresponding + to this error + """ + def __init__(self, name, fields, binding_class=None): + StructType.__init__(self, name, fields, binding_class) + +
+
[docs]class ReferenceType(BindingType): + """ + Reference type to resolve references lazily. + + :type resolved_type: :class:`StructType` or :class:`EnumType` + :ivar resolved_type: Resolved reference type + """ + def __init__(self, context, type_name): + """ + Initialize ReferenceType + + :type context: :class:`module` + :param context: Module reference that has the type + :type type_name: :class:`str` + :param type_name: Fully qualified name of the type reference. i.e. + if the type Bar is nested inside type Foo, it would be Foo.Bar + """ + self._type_name = type_name + self._context = context + self._resolved_type = None + BindingType.__init__(self) + + def _resolve(self): + """ + Resolves the struct or enum reference + """ + tokens = self._type_name.split('.') + target = self._context + # Get the required reference by walking down the fully qualified name + for token in tokens: + target = getattr(target, token) + self._resolved_type = target.get_binding_type() + + @property +
[docs] def resolved_type(self): + """ + Returns the resolved struct type or enum type + + :rtype: :class:`StructType` or + :class:`EnumType` + :return: Resolved struct type or enum type + """ + if self._resolved_type is None: + self._resolve() + return self._resolved_type + +
+
[docs]class OpaqueType(BindingType): + """ + Representation of Opaque IDL annotation in Python Binding + """ + def __init__(self): + BindingType.__init__(self) + +
+
[docs]class DynamicStructType(StructType): + """ + Representation of StructValue IDL annotation in Python Binding + + :type has_fields_of_type: :class:`ReferenceType` + :ivar has_fields_of_type: List of reference types whose fields need to be + present in the StructValue for this DynamicStruct type + """ + def __init__(self, name, fields, binding_class=None, has_fields_of_type=None): + """ + Initialize DynamicStructType + + :type name: :class:`str` + :param name: Name of the Structure + :type fields: :class:`dict` of :class:`str` and :class:`BindingType` + :param fields: Map of field name and field binding type + :type binding_class: :class:`vmware.vapi.data.definition.DataDefinition` + :param binding_class: Data definition for this type + :type has_fields_of_type: :class:`ReferenceType` + :param has_fields_of_type: List of reference types whose fields need to + be present in the StructValue for this DynamicStruct type + """ + StructType.__init__(self, name, fields, binding_class) + self._has_fields_of_type = has_fields_of_type + + @property +
[docs] def has_fields_of_type(self): + """ + Returns the has_fields_of_type + + :rtype :class:`ReferenceType` + :return List of reference types whose fields need to be present in the + StructValue for this DynamicStruct type + """ + return self._has_fields_of_type + +
+
[docs]class AnyErrorType(BindingType): + """ + Representation of Exception type in Python Binding + """ + def __init__(self): + """ + Initialize AnyErrorType + """ + BindingType.__init__(self) + +
+
[docs]class DateTimeType(BindingType): + """ + Representation of datetime IDL Type in Python Binding + """ + def __init__(self): + BindingType.__init__(self) + +
+
[docs]class URIType(BindingType): + """ + Representation of URI IDL Type in Python Binding + """ + def __init__(self): + BindingType.__init__(self) + +
+
[docs]class EnumType(BindingType): + """ + Representation of enum IDL Type in Python Binding + + :type name: :class:`str` + :ivar name: Name of the enum + :type binding_class: :class:`vmware.vapi.bindings.struct.VapiStruct` + :ivar binding_class: Reference to the Python native class corresponding + to this structure + """ + def __init__(self, name, binding_class): + BindingType.__init__(self) + self._name = name + self._binding_class = binding_class + + @property +
[docs] def name(self): + """ + Returns the name of the EnumType + + :rtype: :class:`str` + :return: Name of the EnumType + """ + return self._name +
+ @property +
[docs] def binding_class(self): + """ + Returns the reference to the Python native class + corresponding to this structure + """ + return self._binding_class + +
+
[docs]class IdType(BindingType): + """ + Representation of ID IDL type in Python Binding + + :type resolved_types: :class:`list` of :class:`str` or :class:`str` or + :class:`None` + :ivar resolved_types: Resource type(s) for the ID + :type resource_type_field_name: :class:`str` or :class:`None` + :ivar resource_type_field_name: Name of the field specifying the resource + type + """ + def __init__(self, resource_types=None, resource_type_field_name=None): + BindingType.__init__(self) + self._resource_types = resource_types + self._resource_type_field_name = resource_type_field_name + + @property +
[docs] def resource_types(self): + """ + Returns the Resource type(s) for the ID field + + :rtype: :class:`list` of :class:`str` or :class:`str` or :class:`None` + :return: Resource type(s) for the ID + """ + return self._resource_types +
+ @property +
[docs] def resource_type_field_name(self): + """ + Returns the name of the field specifying the resource type + + :rtype: :class:`str` + :return: Name of the field specifying the resource type + """ + return self._resource_type_field_name + +
+
[docs]class BindingTypeVisitor(VapiVisitor): # pylint: disable=R0922 + """ + Base no-op implementation of a BindingType visitor + """ + def __init__(self): + """ + Initialize BindingTypeVisitor + """ + VapiVisitor.__init__(self, 'Type') + +
[docs] def visit_void(self, typ): + """ + Visit a void value (i.e. None) + + :type typ: :class:`VoidType` + :param typ: Binding type of the value + """ + raise NotImplementedError +
+
[docs] def visit_integer(self, typ): + """ + Visit an integer value + + :type typ: :class:`IntegerType` + :param typ: Binding type of the value + """ + raise NotImplementedError +
+
[docs] def visit_double(self, typ): + """ + Visit a double value + + :type typ: :class:`DoubleType` + :param typ: Binding type of the value + """ + raise NotImplementedError +
+
[docs] def visit_string(self, typ): + """ + Visit a string value + + :type typ: :class:`StringType` + :param typ: Binding type of the value + """ + raise NotImplementedError +
+
[docs] def visit_boolean(self, typ): + """ + Visit a boolean value + + :type typ: :class:`BooleanType` + :param typ: Binding type of the value + """ + raise NotImplementedError +
+
[docs] def visit_blob(self, typ): + """ + Visit a blob value + + :type typ: :class:`BlobType` + :param typ: Binding type of the value + """ + raise NotImplementedError +
+
[docs] def visit_optional(self, typ): + """ + Visit an optional value + + :type typ: :class:`OptionalType` + :param typ: Binding type of the value + """ + raise NotImplementedError +
+
[docs] def visit_list(self, typ): + """ + Visit a list value + + :type typ: :class:`ListType` + :param typ: Binding type of the value + """ + raise NotImplementedError +
+
[docs] def visit_struct(self, typ): + """ + Visit a struct value + + :type typ: :class:`StructType` + :param typ: Binding type of the value + """ + raise NotImplementedError +
+
[docs] def visit_dynamic_struct(self, typ): + """ + Visit a struct value + + :type typ: :class:`DynamicStructType` + :param typ: Binding type of the value + """ + raise NotImplementedError +
+
[docs] def visit_any_error(self, typ): + """ + Visit an error value + + :type typ: :class:`AnyErrorType` + :param typ: Binding type of the value + """ + raise NotImplementedError +
+
[docs] def visit_opaque(self, typ): + """ + Visit an opaque value. + + :type typ: :class:`OpaqueType` + :param typ: Binding type of the value + """ + raise NotImplementedError +
+
[docs] def visit_secret(self, typ): + """ + Visit a secret value + + :type typ: :class:`SecretType` + :param typ: Binding type of the value + """ + raise NotImplementedError +
+
[docs] def visit_date_time(self, typ): + """ + Visit a datetime value + + :type typ: :class:`DateTimeType` + :param typ: Binding type of the value + """ + raise NotImplementedError +
+
[docs] def visit_uri(self, typ): + """ + Visit an URI value + + :type typ: :class:`URIType` + :param typ: Binding type of the value + """ + raise NotImplementedError +
+
[docs] def visit_enum(self, typ): + """ + Visit a enum value + + :type typ: :class:`EnumType` + :param typ: Binding type of the value + """ + raise NotImplementedError +
+
[docs] def visit_error(self, typ): + """ + Visit an error type + + :type typ: :class:`ErrorType` + :param typ: Binding type of the value + """ + raise NotImplementedError +
+
[docs] def visit_reference(self, typ): + """ + Visit a reference type + + :type typ: :class:`ReferenceType` + :param typ: Binding type of the value + """ + raise NotImplementedError +
+
[docs] def visit_id(self, typ): + """ + Visit a ID value + + :type typ: :class:`IdType` + :param typ: Binding type of the value + """ + raise NotImplementedError + +
+
[docs]class DataDefinitionBuilder(BindingTypeVisitor): + """ + Builds DataDefinition by visiting a BindingType + """ + def __init__(self, ctx, seen_structures): + """ + Initialize DataDefinitionBuilder + + :type ctx: :class:`vmware.vapi.data.definition.ReferenceResolver` + :param ctx: Data definition reference resolver object + :type seen_structures: :class:`list` or :class:`str` + :param seen_structures: List of structures seen + """ + BindingTypeVisitor.__init__(self) + self._ctx = ctx + self._seen_structures = seen_structures + self._out_value = None + +
[docs] def get_out_value(self): + """ + Returns the data definition + + :rtype: :class:`vmware.vapi.data.definition.DataDefinition` + :return: Data definition + """ + return self._out_value +
+
[docs] def visit_void(self, typ): + """ + Visit a void value (i.e. None) + + :type typ: :class:`VoidType` + :param typ: Binding type of the value + """ + self._out_value = VoidDefinition() +
+
[docs] def visit_integer(self, typ): + """ + Visit an integer value + + :type typ: :class:`IntegerType` + :param typ: Binding type of the value + """ + self._out_value = IntegerDefinition() +
+
[docs] def visit_double(self, typ): + """ + Visit a double value + + :type typ: :class:`DoubleType` + :param typ: Binding type of the value + """ + self._out_value = DoubleDefinition() +
+
[docs] def visit_string(self, typ): + """ + Visit a string value + + :type typ: :class:`StringType` + :param typ: Binding type of the value + """ + self._out_value = StringDefinition() +
+
[docs] def visit_boolean(self, typ): + """ + Visit a boolean value + + :type typ: :class:`BooleanType` + :param typ: Binding type of the value + """ + self._out_value = BooleanDefinition() +
+
[docs] def visit_blob(self, typ): + """ + Visit a blob value + + :type typ: :class:`BlobType` + :param typ: Binding type of the value + """ + self._out_value = BlobDefinition() +
+
[docs] def visit_optional(self, typ): + """ + Visit an optional value + + :type typ: :class:`OptionalType` + :param typ: Binding type of the value + """ + typ.element_type.accept(self) + element_def = self._out_value + self._out_value = OptionalDefinition(element_def) +
+
[docs] def visit_list(self, typ): + """ + Visit a list value + + :type typ: :class:`ListType` + :param typ: Binding type of the value + """ + typ.element_type.accept(self) + element_def = self._out_value + self._out_value = ListDefinition(element_def) +
+
[docs] def visit_set(self, typ): + """ + Visit a set value + + :type typ: :class:`SetType` + :param typ: Binding type of the value + """ + typ.element_type.accept(self) + element_def = self._out_value + self._out_value = ListDefinition(element_def) +
+
[docs] def visit_map(self, typ): + """ + Visit a map value + + :type typ: :class:`MapType` + :param typ: Binding type of the value + """ + field_defs = [] + typ.key_type.accept(self) + key_def = self._out_value + field_defs.append((MAP_KEY_FIELD, key_def)) + typ.value_type.accept(self) + value_def = self._out_value + + field_defs.append((MAP_VALUE_FIELD, value_def)) + element_def = StructDefinition(MAP_ENTRY, field_defs) + self._out_value = ListDefinition(element_def) +
+
[docs] def visit_struct(self, typ): + """ + Visit a struct value + + :type typ: :class:`StructType` + :param typ: Binding type of the value + """ + if typ.name in self._seen_structures: + self._out_value = StructRefDefinition(typ.name) + self._ctx.add_reference(self._out_value) + else: + self._seen_structures.append(typ.name) + field_defs = [] + for field_name in typ.get_field_names(): + field_type = typ.get_field(field_name) + field_type.accept(self) + field_defs.append((field_name, self._out_value)) + self._out_value = StructDefinition(typ.name, field_defs) + self._ctx.add_definition(self._out_value) +
+
[docs] def visit_dynamic_struct(self, typ): + """ + Visit a struct value + + :type typ: :class:`DynamicStructType` + :param typ: Binding type of the value + """ + self._out_value = DynamicStructDefinition() +
+
[docs] def visit_any_error(self, typ): + """ + Visit an error value + + :type typ: :class:`AnyErrorType` + :param typ: Binding type of the value + """ + self._out_value = AnyErrorDefinition() +
+
[docs] def visit_opaque(self, typ): + """ + Visit an opaque value. + + :type typ: :class:`OpaqueType` + :param typ: Binding type of the value + """ + self._out_value = OpaqueDefinition() +
+
[docs] def visit_secret(self, typ): + """ + Visit a secret value + + :type typ: :class:`SecretType` + :param typ: Binding type of the value + """ + self._out_value = SecretDefinition() +
+
[docs] def visit_date_time(self, typ): + """ + Visit a datetime value + + :type typ: :class:`DateTimeType` + :param typ: Binding type of the value + """ + self._out_value = StringDefinition() +
+
[docs] def visit_uri(self, typ): + """ + Visit an URI value + + :type typ: :class:`URIType` + :param typ: Binding type of the value + """ + self._out_value = StringDefinition() +
+
[docs] def visit_enum(self, typ): + """ + Visit a enum value + + :type typ: :class:`EnumType` + :param typ: Binding type of the value + """ + self._out_value = StringDefinition() +
+
[docs] def visit_reference(self, typ): + """ + Visit a reference type + + :type typ: :class:`ReferenceType` + :param typ: Binding type of the value + """ + typ.resolved_type.accept(self) +
+
[docs] def visit_error(self, typ): + """ + Visit an error type + + :type typ: :class:`ErrorType` + :param typ: Binding type of the value + """ + field_defs = [] + for field_name in typ.get_field_names(): + field_type = typ.get_field(field_name) + field_type.accept(self) + field_defs.append((field_name, self._out_value)) + self._out_value = ErrorDefinition(typ.name, field_defs) +
+
[docs] def visit_id(self, typ): + """ + Visit a ID value + + :type typ: :class:`IdType` + :param typ: Binding type of the value + """ + self._out_value = StringDefinition() + +
+
[docs]class TypeUtil(object): + """ + Converts a BindingType object to DataDefinition object + """ + + @staticmethod +
[docs] def convert_to_data_definition(binding_type): + """ + Converts a BindingType object to DataDefinition object + + :type binding_type: :class:`BindingType` + :param binding_type: Binding type + :rtype: :class:`vmware.vapi.data.definition.DataDefinition` + :return: DataDefinition + """ + ctx = ReferenceResolver() + seen_structures = [] + visitor = DataDefinitionBuilder(ctx, seen_structures) + binding_type.accept(visitor) + ctx.resolve() + return visitor.get_out_value()
+
+ +
+
+
+
+
+ + +
+
+
+
+ + + + \ No newline at end of file diff --git a/vsphere/6.0/_modules/vmware/vapi/bindings/uri_helper.html b/vsphere/6.0/_modules/vmware/vapi/bindings/uri_helper.html new file mode 100644 index 00000000..c8157b2f --- /dev/null +++ b/vsphere/6.0/_modules/vmware/vapi/bindings/uri_helper.html @@ -0,0 +1,219 @@ + + + + + + + + + + vmware.vapi.bindings.uri_helper — vCloud Suite SDK for Python 6.0.0 documentation + + + + + + + + + + + + + + +
+
+
+
+ +

Source code for vmware.vapi.bindings.uri_helper

+"""
+Utility library for validating IRI that conform to RFC 3987
+"""
+__author__ = 'VMware, Inc'
+__copyright__ = 'Copyright 2012-2013 VMware, Inc.  All rights reserved. -- VMware Confidential'
+
+import logging
+import re
+import ast
+
+from vmware.vapi.exception import CoreException
+from vmware.vapi.l10n.runtime import message_factory
+
+logger = logging.getLogger(__name__)
+
+
+
[docs]class URIValidator(object): + """ + Helper class for validation of IRI's + """ + # The regex is taken from RFC 3987 (IRI) + # Note 1: RFC 3987 (IRI) uses HEXDIG + # HEXDIG is specified in RFC 2234 is [0-9][A-F] + # RFC 2396 allows HEXDIG to be [0-9][A-F][a-f] + # So, in this regex, HEXDIG uses the RFC 2396 standard + _rules = ( + ('IRI_reference', r"(?:{IRI}|{irelative_ref})"), + ('IRI', r"{absolute_IRI}(?:\#{ifragment})?"), + ('absolute_IRI', r"{scheme}:{ihier_part}(?:\?{iquery})?"), + ('irelative_ref', (r"(?:{irelative_part}" + r"(?:\?{iquery})?(?:\#{ifragment})?)")), + ('ihier_part', (r"(?://{iauthority}{ipath_abempty}" + r"|{ipath_absolute}|{ipath_rootless}|{ipath_empty})")), + ('irelative_part', (r"(?://{iauthority}{ipath_abempty}" + r"|{ipath_absolute}|{ipath_noscheme}|{ipath_empty})")), + ('iauthority', r"(?:{iuserinfo}@)?{ihost}(?::{port})?"), + ('iuserinfo', r"(?:{iunreserved}|{pct_encoded}|{sub_delims}|:)*"), + ('ihost', r"(?:{IP_literal}|{IPv4address}|{ireg_name})"), + + ('ireg_name', r"(?:{iunreserved}|{pct_encoded}|{sub_delims})*"), + ('ipath', (r"(?:{ipath_abempty}|{ipath_absolute}|{ipath_noscheme}" + r"|{ipath_rootless}|{ipath_empty})")), + ('ipath_empty', r""), + ('ipath_rootless', r"{isegment_nz}(?:/{isegment})*"), + ('ipath_noscheme', r"{isegment_nz_nc}(?:/{isegment})*"), + ('ipath_absolute', r"/(?:{isegment_nz}(?:/{isegment})*)?"), + ('ipath_abempty', r"(?:/{isegment})*"), + ('isegment_nz_nc', r"(?:{iunreserved}|{pct_encoded}|{sub_delims}|@)+"), + ('isegment_nz', r"{ipchar}+"), + ('isegment', r"{ipchar}*"), + ('iquery', r"(?:{ipchar}|{iprivate}|/|\?)*"), + ('ifragment', r"(?:{ipchar}|/|\?)*"), + ('ipchar', r"(?:{iunreserved}|{pct_encoded}|{sub_delims}|:|@)"), + ('iunreserved', r"(?:[a-zA-Z0-9._~-]|{ucschar})"), + ('iprivate', r"[\uE000-\uF8FF]"), + ('ucschar', (r"[\xA0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF]")), + ('scheme', r"[a-zA-Z][a-zA-Z0-9+.-]*"), + ('port', r"[0-9]*"), + ('IP_literal', r"\[(?:{IPv6address}|{IPvFuture})\]"), + ('IPv6address', (r"(?: (?:{h16}:){{6}} {ls32}" + r"| :: (?:{h16}:){{5}} {ls32}" + r"| {h16}? :: (?:{h16}:){{4}} {ls32}" + r"| (?:(?:{h16}:)? {h16})? :: (?:{h16}:){{3}} {ls32}" + r"| (?:(?:{h16}:){{,2}}{h16})? :: (?:{h16}:){{2}} {ls32}" + r"| (?:(?:{h16}:){{,3}}{h16})? :: (?:{h16}:) {ls32}" + r"| (?:(?:{h16}:){{,4}}{h16})? :: {ls32}" + r"| (?:(?:{h16}:){{,5}}{h16})? :: {h16} " + r"| (?:(?:{h16}:){{,6}}{h16})? :: )" + ).replace(' ', '')), + ('ls32', r"(?:{h16}:{h16}|{IPv4address})"), + ('h16', r"[0-9A-Fa-f]{{1,4}}"), + ('IPv4address', r"(?:{dec_octet}\.){{3}}{dec_octet}"), + ('dec_octet', r"(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)"), + ('IPvFuture', r"v[0-9A-Fa-f]+\.(?:{unreserved}|{sub_delims}|:)+"), + ('unreserved', r"[a-zA-Z0-9_.~-]"), + ('reserved', r"(?:{gen_delims}|{sub_delims})"), + ('pct_encoded', r"%[0-9A-Fa-f][0-9A-Fa-f]"), + ('gen_delims', r"[:/?#[\]@]"), + ('sub_delims', r"[!$&'()*+,;=]"), + ) + # Use a dictionary to save the compiled regexs + compiled_regex = {} + + # Just compute the regex for IRI's now. + for rule_type in ['IRI', 'IRI_reference']: + regex = compiled_regex.get(rule_type) + if regex is None: + final_regex = {} + for key, value in reversed(_rules): + final_regex[key] = value.format(**final_regex) + + regex_str = ''.join(['^%(', rule_type, ')s$']) + regex_str = regex_str % final_regex + + # ``\u`` and ``\U`` escapes must be preprocessed + # http://bugs.python.org/issue3665 + unicode_wrap = 'u"""{0}"""' + regex_str = ast.literal_eval(unicode_wrap.format(regex_str)) + + regex = re.compile(regex_str) + compiled_regex[rule_type] = regex + del _rules + + @staticmethod +
[docs] def validate(iri): + """ + Validate the given IRI string + + :type iri: :class:`str` + :param iri: IRI string to be validated + """ + # Input could be an absolute or relative IRI string, validate + # it against both of them + match = None + for iri_type in ['IRI', 'IRI_reference']: + regex = URIValidator.compiled_regex.get(iri_type) + match = regex.match(iri) + if match is not None: + break + else: + msg = message_factory.get_message( + 'vapi.bindings.typeconverter.uri.invalid.format', + repr(iri)) + logger.debug(msg) + raise CoreException(msg)
+
+ +
+
+
+
+
+ + +
+
+
+
+ + + + \ No newline at end of file diff --git a/vsphere/6.0/_modules/vmware/vapi/bindings/value.html b/vsphere/6.0/_modules/vmware/vapi/bindings/value.html new file mode 100644 index 00000000..f9df53f6 --- /dev/null +++ b/vsphere/6.0/_modules/vmware/vapi/bindings/value.html @@ -0,0 +1,934 @@ + + + + + + + + + + vmware.vapi.bindings.value — vCloud Suite SDK for Python 6.0.0 documentation + + + + + + + + + + + + + + +
+
+
+
+ +

Source code for vmware.vapi.bindings.value

+"""
+Convenient libraries for DynamicValue
+"""
+
+__author__ = 'VMware, Inc.'
+__copyright__ = 'Copyright 2013-2014 VMware, Inc.  All rights reserved. -- VMware Confidential'
+
+from datetime import datetime
+import decimal
+import six
+
+from vmware.vapi.data.value import (
+    SimpleValueVisitor, VoidValue, BooleanValue, IntegerValue, DoubleValue,
+    StringValue, BlobValue, SecretValue, OptionalValue, ListValue)
+from vmware.vapi.bindings.struct import VapiStruct
+from vmware.vapi.bindings.error import VapiError
+from vmware.vapi.bindings.enum import Enum
+from vmware.vapi.bindings.datetime_helper import DateTimeConverter
+from vmware.vapi.lib.constants import MAP_ENTRY
+
+# pylint: disable=E1102
+
+
+
[docs]class DataValueToDynamicValueVisitor(SimpleValueVisitor): + """ + Visitor to convert DataValue to DynamicValue + """ + def __init__(self, dynamic_value_class, optional_dynamic_value_class): + """ + Initialize DataValueToDynamicValueVisitor + + :type dynamic_value_class: :class:`vmware.vapi.bindings.struct.VapiStruct` + :param dynamic_value_class: DynamicValue class reference + :type optional_dynamic_value_class: + :class:`vmware.vapi.bindings.struct.VapiStruct` + :param optional_dynamic_value_class: OptionalDynamicValue class reference + """ + self._dynamic_value_class = dynamic_value_class + self._optional_dynamic_value_class = optional_dynamic_value_class + self._out_value = None + SimpleValueVisitor.__init__(self) + +
[docs] def get_out_value(self): + """ + Returns the output value + + :rtype: :class:`vmware.vapi.bindings.struct.VapiStruct` + :return: DynamicValue generated from DataValue + """ + return self._out_value +
+
[docs] def visit_void(self, value): + self._out_value = self._dynamic_value_class( + type=self._dynamic_value_class.Type.VOID) +
+
[docs] def visit_integer(self, value): + self._out_value = self._dynamic_value_class( + type=self._dynamic_value_class.Type.LONG, + long_value=value.value) +
+
[docs] def visit_double(self, value): + self._out_value = self._dynamic_value_class( + type=self._dynamic_value_class.Type.DOUBLE, + double_value=value.value) +
+
[docs] def visit_string(self, value): + self._out_value = self._dynamic_value_class( + type=self._dynamic_value_class.Type.STRING, + string_value=value.value) +
+
[docs] def visit_boolean(self, value): + self._out_value = self._dynamic_value_class( + type=self._dynamic_value_class.Type.BOOLEAN, + boolean_value=value.value) +
+
[docs] def visit_blob(self, value): + self._out_value = self._dynamic_value_class( + type=self._dynamic_value_class.Type.BINARY, + binary_value=value.value) +
+
[docs] def visit_secret(self, value): + self._out_value = self._dynamic_value_class( + type=self._dynamic_value_class.Type.SECRET, + secret_value=value.value) +
+
[docs] def visit_struct(self, value): + self._out_value = self._dynamic_value_class( + type=self._dynamic_value_class.Type.STRUCTURE, + structure_value=VapiStruct(struct_value=value)) +
+
[docs] def visit_error(self, value): + self._out_value = self._dynamic_value_class( + type=self._dynamic_value_class.Type.ERROR, + error_value=VapiError({}, value)) +
+
[docs] def visit_optional(self, value): + element_value = self._optional_dynamic_value_class() + if value.is_set(): + value.value.accept(self) + element_value = self._optional_dynamic_value_class( + optional_value=self.get_out_value()) + else: + element_value = self._optional_dynamic_value_class() + out_value = self._dynamic_value_class( + type=self._dynamic_value_class.Type.OPTIONAL, + optional_value=element_value) + self._out_value = out_value +
+
[docs] def visit_list(self, value): + out_value = self._dynamic_value_class( + type=self._dynamic_value_class.Type.LIST, + list_value=[]) + for element in value: + element.accept(self) + out_value.list_value.append(self.get_out_value()) + self._out_value = out_value + +
+
[docs]class DynamicValueToDataValueVisitor(object): + """ + Visitor to convert DynamicValue to DataValue + """ + def __init__(self, dynamic_value_class): + """ + Initialize DynamicValueToDataValueVisitor + + :type dynamic_value_class: :class:`vmware.vapi.bindings.struct.VapiStruct` + :param dynamic_value_class: DynamicValue class reference + """ + self._out_value = None + self._dynamic_value_class = dynamic_value_class + self._dispatch_map = { + dynamic_value_class.Type.VOID: self.visit_void, + dynamic_value_class.Type.BOOLEAN: self.visit_boolean, + dynamic_value_class.Type.DOUBLE: self.visit_double, + dynamic_value_class.Type.LONG: self.visit_long, + dynamic_value_class.Type.STRING: self.visit_string, + dynamic_value_class.Type.BINARY: self.visit_binary, + dynamic_value_class.Type.SECRET: self.visit_secret, + dynamic_value_class.Type.STRUCTURE: self.visit_structure, + dynamic_value_class.Type.ERROR: self.visit_error, + dynamic_value_class.Type.OPTIONAL: self.visit_optional, + dynamic_value_class.Type.LIST: self.visit_list, + } + +
[docs] def get_out_value(self): + """ + Returns the DataValue + + :rtype: :class:`vmware.vapi.data.value.DataValue` + :return: DataValue generated from DynamicValue + """ + return self._out_value +
+
[docs] def visit(self, dynamic_value): + """ + Visit a DynamicValue + + :type dynamic_value: :class:`vmware.vapi.bindings.struct.VapiStruct` + :param dynamic_value: DynamicValue to be visited + """ + visit_method = self._dispatch_map.get(dynamic_value.type) + visit_method(dynamic_value) +
+
[docs] def visit_void(self, dynamic_value): # pylint: disable=W0613 + """ + Visit a DynamicValue whose type is VOID + + :type dynamic_value: :class:`vmware.vapi.bindings.struct.VapiStruct` + :param dynamic_value: DynamicValue to be visited + """ + self._out_value = VoidValue() +
+
[docs] def visit_boolean(self, dynamic_value): + """ + Visit a DynamicValue whose type is BOOLEAN + + :type dynamic_value: :class:`vmware.vapi.bindings.struct.VapiStruct` + :param dynamic_value: DynamicValue to be visited + """ + self._out_value = BooleanValue(dynamic_value.boolean_value) +
+
[docs] def visit_double(self, dynamic_value): + """ + Visit a DynamicValue whose type is DOUBLE + + :type dynamic_value: :class:`vmware.vapi.bindings.struct.VapiStruct` + :param dynamic_value: DynamicValue to be visited + """ + self._out_value = DoubleValue(dynamic_value.double_value) +
+
[docs] def visit_long(self, dynamic_value): + """ + Visit a DynamicValue whose type is LONG + + :type dynamic_value: :class:`vmware.vapi.bindings.struct.VapiStruct` + :param dynamic_value: DynamicValue to be visited + """ + self._out_value = IntegerValue(dynamic_value.long_value) +
+
[docs] def visit_string(self, dynamic_value): + """ + Visit a DynamicValue whose type is STRING + + :type dynamic_value: :class:`vmware.vapi.bindings.struct.VapiStruct` + :param dynamic_value: DynamicValue to be visited + """ + self._out_value = StringValue(dynamic_value.string_value) +
+
[docs] def visit_binary(self, dynamic_value): + """ + Visit a DynamicValue whose type is BINARY + + :type dynamic_value: :class:`vmware.vapi.bindings.struct.VapiStruct` + :param dynamic_value: DynamicValue to be visited + """ + self._out_value = BlobValue(dynamic_value.binary_value) +
+
[docs] def visit_secret(self, dynamic_value): + """ + Visit a DynamicValue whose type is SECRET + + :type dynamic_value: :class:`vmware.vapi.bindings.struct.VapiStruct` + :param dynamic_value: DynamicValue to be visited + """ + self._out_value = SecretValue(dynamic_value.secret_value) +
+
[docs] def visit_structure(self, dynamic_value): + """ + Visit a DynamicValue whose type is STRUCTURE + + :type dynamic_value: :class:`vmware.vapi.bindings.struct.VapiStruct` + :param dynamic_value: DynamicValue to be visited + """ + self._out_value = dynamic_value.structure_value.get_struct_value() +
+
[docs] def visit_error(self, dynamic_value): + """ + Visit a DynamicValue whose type is ERROR + + :type dynamic_value: :class:`vmware.vapi.bindings.struct.VapiStruct` + :param dynamic_value: DynamicValue to be visited + """ + self._out_value = dynamic_value.error_value.get_error_value() +
+
[docs] def visit_optional(self, dynamic_value): + """ + Visit a DynamicValue whose type is OPTIONAL + + :type dynamic_value: :class:`vmware.vapi.bindings.struct.VapiStruct` + :param dynamic_value: DynamicValue to be visited + """ + element_value = None + if dynamic_value.optional_value.optional_value is not None: + self.visit(dynamic_value.optional_value.optional_value) + element_value = self.get_out_value() + self._out_value = OptionalValue(element_value) +
+
[docs] def visit_list(self, dynamic_value): + """ + Visit a DynamicValue whose type is LIST + + :type dynamic_value: :class:`vmware.vapi.bindings.struct.VapiStruct` + :param dynamic_value: DynamicValue to be visited + """ + elements = [] + for val in dynamic_value.list_value: + self.visit(val) + elements.append(self.get_out_value()) + self._out_value = ListValue(elements) + +
+
[docs]class BaseDataValueConverter(object): + """ + Class to convert DataValue <-> DynamicValue + + Note: This is an internal helper class for supporting this + functionality in client and provider standard libraries. This + class should be derived and the derived class should initialize + dynamic_value_class and optional_dynamic_value_class with the + appropriate class references. + + :type dynamic_value_class: :class:`vmware.vapi.bindings.struct.VapiStruct` + :cvar dynamic_value_class: Dynamic value class reference + :type optional_dynamic_value_class: :class:`vmware.vapi.bindings.struct.VapiStruct` + :cvar optional_dynamic_value_class: Optional dynamic value class reference + """ + dynamic_value_class = None + optional_dynamic_value_class = None + + @classmethod +
[docs] def to_dynamic_value(cls, data_value): + """ + Convert a given DataValue to DynamicValue + + :type data_value: :class:`vmware.vapi.data.value.DataValue` + :param data_value: DataValue to be converted + :rtype: :class:`vmware.vapi.bindings.struct.VapiStruct` + :return: DynamicValue generated from DataValue + """ + visitor = DataValueToDynamicValueVisitor( + cls.dynamic_value_class, cls.optional_dynamic_value_class) + data_value.accept(visitor) + return visitor.get_out_value() +
+ @classmethod +
[docs] def to_data_value(cls, dynamic_value): + """ + Convert a given DynamicValue to DataValue + + :type dynamic_value: :class:`vmware.vapi.bindings.struct.VapiStruct` + :param dynamic_value: DynamicValue to be converted + :rtype: :class:`vmware.vapi.data.value.DataValue` + :return: DataValue generated from DynamicValue + """ + visitor = DynamicValueToDataValueVisitor(cls.dynamic_value_class) + visitor.visit(dynamic_value) + return visitor.get_out_value() + +
+
[docs]class NativeValueToDynamicValueVisitor(object): + """ + Visitor to convert Native value to Dynamic value + """ + def __init__(self, dynamic_value_class, optional_dynamic_value_class, + is_optional=False, is_secret=False, is_binary=False): + """ + Initialize DynamicValueToDataValueVisitor + + :type dynamic_value_class: :class:`vmware.vapi.bindings.struct.VapiStruct` + :param dynamic_value_class: DynamicValue class reference + :type optional_dynamic_value_class: + :class:`vmware.vapi.bindings.struct.VapiStruct` + :param optional_dynamic_value_class: OptionalDynamicValue class reference + :type is_optional: :class:`bool` + :param is_optional: If true, after conversion of native + value to dynamic value, the output is wrapped in an + dynamic value whose type is OPTIONAL. + :type is_secret: :class:`bool` + :param is_secret: If true, and the native value is a string, the type of + the dynamic value returned will be secret. This boolean option, is + also passed to the elements of generic types such as List and + Set. + :type is_binary: :class:`bool` + :param is_binary: If true, and the native value is a string, the type of + the dynamic value returned will be binary. This boolean option, is + also passed to the elements of generic types such as List and + Set. + """ + self._out_value = None + self._dynamic_value_class = dynamic_value_class + self._optional_dynamic_value_class = optional_dynamic_value_class + self._is_optional = is_optional + self._is_secret = is_secret + self._is_binary = is_binary + self._dispatch_map = { + type(None): self.visit_void, + datetime: self.visit_datetime, + float: self.visit_double, + decimal.Decimal: self.visit_double, + bool: self.visit_boolean, + list: self.visit_list, + set: self.visit_list, + } + +
[docs] def get_out_value(self): + """ + Returns the DataValue + + :rtype: :class:`vmware.vapi.data.value.DataValue` + :return: DataValue generated from DynamicValue + """ + if self._is_optional: + optional_dynamic_value = None + if self._out_value.type == self._dynamic_value_class.Type.VOID: + optional_dynamic_value = self._optional_dynamic_value_class() + else: + optional_dynamic_value = self._optional_dynamic_value_class( + optional_value=self._out_value) + self._out_value = self._dynamic_value_class( + type=self._dynamic_value_class.Type.OPTIONAL, + optional_value=optional_dynamic_value) + return self._out_value +
+
[docs] def visit(self, native_value): + """ + Visit a native value + + :type native_value: :class:`object` + :param native_value: Native value to be converted + """ + native_type = type(native_value) + visit_method = self._dispatch_map.get(native_type) + if not visit_method: + # Handle the string and integer types explicitly + # as they are different in Py2 and Py3 + if isinstance(native_value, six.string_types): + visit_method = self.visit_string + elif isinstance(native_value, six.integer_types): + visit_method = self.visit_long + # Handle user defined types + elif isinstance(native_value, VapiError): + visit_method = self.visit_error + elif isinstance(native_value, VapiStruct): + visit_method = self.visit_structure + elif isinstance(native_value, Enum): + visit_method = self.visit_enumeration + visit_method(native_value) +
+
[docs] def visit_void(self, native_value): + """ + visit a native value whose value is None type + + :type native_value: :class:`None` + :param native_value: Native value to be converted + """ + self._out_value = self._dynamic_value_class( + type=self._dynamic_value_class.Type.VOID) +
+
[docs] def visit_string(self, native_value): + """ + visit a native value whose value is string type + + :type native_value: :class:`str` + :param native_value: Native value to be converted + """ + if self._is_binary: + self._out_value = self._dynamic_value_class( + type=self._dynamic_value_class.Type.BINARY, + binary_value=native_value) + elif self._is_secret: + self._out_value = self._dynamic_value_class( + type=self._dynamic_value_class.Type.SECRET, + secret_value=native_value) + else: + self._out_value = self._dynamic_value_class( + type=self._dynamic_value_class.Type.STRING, + string_value=native_value) +
+
[docs] def visit_datetime(self, native_value): + """ + visit a native value whose value is datetime type + + :type native_value: :class:`datetime.datetime` + :param native_value: Native value to be converted + """ + string_value = DateTimeConverter.convert_from_datetime(native_value) + self._out_value = self._dynamic_value_class( + type=self._dynamic_value_class.Type.STRING, + string_value=string_value) +
+
[docs] def visit_double(self, native_value): + """ + visit a native value whose value is double type + + :type native_value: :class:`double` or :class:`decimal.Decimal` + :param native_value: Native value to be converted + """ + self._out_value = self._dynamic_value_class( + type=self._dynamic_value_class.Type.DOUBLE, + double_value=native_value) +
+
[docs] def visit_boolean(self, native_value): + """ + visit a native value whose value is bool type + + :type native_value: :class:`bool` + :param native_value: Native value to be converted + """ + self._out_value = self._dynamic_value_class( + type=self._dynamic_value_class.Type.BOOLEAN, + boolean_value=native_value) +
+
[docs] def visit_long(self, native_value): + """ + visit a native value whose value is long type + + :type native_value: :class:`int` or :class:`long` + :param native_value: Native value to be converted + """ + self._out_value = self._dynamic_value_class( + type=self._dynamic_value_class.Type.LONG, + long_value=native_value) +
+
[docs] def visit_list(self, native_value): + """ + visit a native value whose value is list or set type + + :type native_value: :class:`list` or :class:`set` + :param native_value: Native value to be converted + """ + elements = [] + for value in native_value: + self.visit(value) + elements.append(self.get_out_value()) + self._out_value = self._dynamic_value_class( + type=self._dynamic_value_class.Type.LIST, + list_value=elements) +
+
[docs] def visit_structure(self, native_value): + """ + visit a native value whose value is vAPI structure type + + :type native_value: :class:`vmware.vapi.bindings.struct.VapiStruct` + :param native_value: Native value to be converted + """ + self._out_value = self._dynamic_value_class( + type=self._dynamic_value_class.Type.STRUCTURE, + structure_value=VapiStruct( + struct_value=native_value.get_struct_value())) +
+
[docs] def visit_error(self, native_value): + """ + visit a native value whose value is vAPI error type + + :type native_value: :class:`vmware.vapi.bindings.error.VapiError` + :param native_value: Native value to be converted + """ + self._out_value = self._dynamic_value_class( + type=self._dynamic_value_class.Type.ERROR, + error_value=VapiError( + error_value=native_value.get_error_value())) +
+
[docs] def visit_enumeration(self, native_value): + """ + visit a native value whose value is vAPI enumeration type + + :type native_value: :class:`vmware.vapi.bindings.enum.Enum` + :param native_value: Native value to be converted + """ + self._out_value = self._dynamic_value_class( + type=self._dynamic_value_class.Type.STRING, + string_value=str(native_value)) + +
+
[docs]class DynamicValueToNativeValueVisitor(object): + """ + Visitor to convert DynamicValue to python native value + """ + def __init__(self, dynamic_value_class, optional_dynamic_value_class, + is_set=False, is_datetime=False, + user_defined_class_reference=None): + """ + Initialize DynamicValueToDataValueVisitor + + :type dynamic_value_class: :class:`vmware.vapi.bindings.struct.VapiStruct` + :param dynamic_value_class: DynamicValue class reference + :type optional_dynamic_value_class: + :class:`vmware.vapi.bindings.struct.VapiStruct` + :param optional_dynamic_value_class: OptionalDynamicValue class reference + :type is_set: :class:`bool` + :param is_set: If true, and the dynamic value is a list, the type of + the native value returned will be a set. This boolean option, is + also passed to the elements of generic types such as List and + Optional. If the dynamic value represents a Map, this option is + used only for the conversion of values of the Map. + :type is_datetime: :class:`bool` + :param is_datetime: If true, and the dynamic value is a string, the type of + the native value returned will be a datetime. This boolean option, is + also passed to the elements of generic types such as List and + Optional. If the dynamic value represents a Map, this option is + used only for the conversion of values of the Map. + :type user_defined_class_reference: + :class:`vmware.vapi.bindings.struct.VapiStruct` or + :class:`vmware.vapi.bindings.error.VapiError` or + :class:`vmware.vapi.bindings.enum.Enum` + :param user_defined_class_reference: This class reference is used to + create native instances of user defined types (structures, errors + and enumerations). If the dynamic value is a Structure, instead of + returning VapiStruct, an instance of this class is returned. If the + dynamic value is an Error, instead of returning VapiError, an instance + of this class is returned. If the dynamic value is String, instead of + returning a string, an instance of this class is returned. + """ + self._out_value = None + self._dynamic_value_class = dynamic_value_class + self._optional_dynamic_value_class = optional_dynamic_value_class + self._is_set = is_set + self._is_datetime = is_datetime + self._user_defined_class_reference = user_defined_class_reference + self._dispatch_map = { + dynamic_value_class.Type.VOID: self.visit_void, + dynamic_value_class.Type.BOOLEAN: self.visit_boolean, + dynamic_value_class.Type.DOUBLE: self.visit_double, + dynamic_value_class.Type.LONG: self.visit_long, + dynamic_value_class.Type.STRING: self.visit_string, + dynamic_value_class.Type.BINARY: self.visit_binary, + dynamic_value_class.Type.SECRET: self.visit_secret, + dynamic_value_class.Type.STRUCTURE: self.visit_structure, + dynamic_value_class.Type.ERROR: self.visit_error, + dynamic_value_class.Type.OPTIONAL: self.visit_optional, + dynamic_value_class.Type.LIST: self.visit_list, + } + +
[docs] def get_out_value(self): + """ + Returns the DataValue + + :rtype: :class:`vmware.vapi.data.value.DataValue` + :return: DataValue generated from DynamicValue + """ + return self._out_value +
+
[docs] def visit(self, dynamic_value): + """ + Visit a DynamicValue + + :type dynamic_value: :class:`vmware.vapi.bindings.struct.VapiStruct` + :param dynamic_value: DynamicValue to be visited + """ + visit_method = self._dispatch_map.get(dynamic_value.type) + visit_method(dynamic_value) +
+
[docs] def visit_void(self, dynamic_value): # pylint: disable=W0613 + """ + Visit a DynamicValue whose type is VOID + + :type dynamic_value: :class:`vmware.vapi.bindings.struct.VapiStruct` + :param dynamic_value: DynamicValue to be visited + """ + self._out_value = None +
+
[docs] def visit_boolean(self, dynamic_value): + """ + Visit a DynamicValue whose type is BOOLEAN + + :type dynamic_value: :class:`vmware.vapi.bindings.struct.VapiStruct` + :param dynamic_value: DynamicValue to be visited + """ + self._out_value = dynamic_value.boolean_value +
+
[docs] def visit_double(self, dynamic_value): + """ + Visit a DynamicValue whose type is DOUBLE + + :type dynamic_value: :class:`vmware.vapi.bindings.struct.VapiStruct` + :param dynamic_value: DynamicValue to be visited + """ + self._out_value = dynamic_value.double_value +
+
[docs] def visit_long(self, dynamic_value): + """ + Visit a DynamicValue whose type is LONG + + :type dynamic_value: :class:`vmware.vapi.bindings.struct.VapiStruct` + :param dynamic_value: DynamicValue to be visited + """ + self._out_value = dynamic_value.long_value +
+
[docs] def visit_string(self, dynamic_value): + """ + Visit a DynamicValue whose type is STRING + + :type dynamic_value: :class:`vmware.vapi.bindings.struct.VapiStruct` + :param dynamic_value: DynamicValue to be visited + """ + self._out_value = dynamic_value.string_value + if self._is_datetime: + self._out_value = DateTimeConverter.convert_to_datetime( + self._out_value) + elif self._user_defined_class_reference is not None: + # Create enumeration type instance + self._out_value = self._user_defined_class_reference( + self._out_value) +
+
[docs] def visit_binary(self, dynamic_value): + """ + Visit a DynamicValue whose type is BINARY + + :type dynamic_value: :class:`vmware.vapi.bindings.struct.VapiStruct` + :param dynamic_value: DynamicValue to be visited + """ + self._out_value = dynamic_value.binary_value +
+
[docs] def visit_secret(self, dynamic_value): + """ + Visit a DynamicValue whose type is SECRET + + :type dynamic_value: :class:`vmware.vapi.bindings.struct.VapiStruct` + :param dynamic_value: DynamicValue to be visited + """ + self._out_value = dynamic_value.secret_value +
+
[docs] def visit_structure(self, dynamic_value): + """ + Visit a DynamicValue whose type is STRUCTURE + + :type dynamic_value: :class:`vmware.vapi.bindings.struct.VapiStruct` + :param dynamic_value: DynamicValue to be visited + """ + out_value = dynamic_value.structure_value + struct_value = out_value.get_struct_value() + if struct_value.name == MAP_ENTRY: + key = struct_value.get_field('key').value + map_value_as_data_value = struct_value.get_field('value') + BaseDataValueConverter.dynamic_value_class = self._dynamic_value_class + BaseDataValueConverter.optional_dynamic_value_class = self._optional_dynamic_value_class + map_value_as_dynamic_value = BaseDataValueConverter.to_dynamic_value( + map_value_as_data_value) + self.visit(map_value_as_dynamic_value) + value = self.get_out_value() + out_value = {key: value} + elif self._user_defined_class_reference is not None: + out_value = out_value.convert_to(self._user_defined_class_reference) + self._out_value = out_value +
+
[docs] def visit_error(self, dynamic_value): + """ + Visit a DynamicValue whose type is ERROR + + :type dynamic_value: :class:`vmware.vapi.bindings.struct.VapiStruct` + :param dynamic_value: DynamicValue to be visited + """ + self._out_value = dynamic_value.error_value + if self._user_defined_class_reference is not None: + self._out_value = self._out_value.convert_to( + self._user_defined_class_reference) +
+
[docs] def visit_optional(self, dynamic_value): + """ + Visit a DynamicValue whose type is OPTIONAL + + :type dynamic_value: :class:`vmware.vapi.bindings.struct.VapiStruct` + :param dynamic_value: DynamicValue to be visited + """ + optional_value = dynamic_value.optional_value.optional_value + if optional_value is not None: + self.visit(optional_value) + self._out_value = self.get_out_value() +
+
[docs] def visit_list(self, dynamic_value): + """ + Visit a DynamicValue whose type is LIST + + :type dynamic_value: :class:`vmware.vapi.bindings.struct.VapiStruct` + :param dynamic_value: DynamicValue to be visited + """ + out_value = [] + for value in dynamic_value.list_value: + self.visit(value) + out_value.append(self.get_out_value()) + if out_value and isinstance(out_value[0], dict): + map_value = {} + # Its a map + for dict_item in out_value: + map_value.update(dict_item) + out_value = map_value + elif self._is_set: + out_value = set(out_value) + self._out_value = out_value + +
+
[docs]class BaseNativeValueConverter(object): + """ + class to convert Native value <-> DynamicValue. + + Note: This is an internal helper class for supporting this + functionality in client and provider standard libraries. This + class should be derived and the derived class should initialize + dynamic_value_class and optional_dynamic_value_class with the + appropriate class references. + + :type dynamic_value_class: :class:`vmware.vapi.bindings.struct.VapiStruct` + :cvar dynamic_value_class: Dynamic value class reference + :type optional_dynamic_value_class: :class:`vmware.vapi.bindings.struct.VapiStruct` + :cvar optional_dynamic_value_class: Optional dynamic value class reference + """ + dynamic_value_class = None + optional_dynamic_value_class = None + + @classmethod +
[docs] def to_dynamic_value(cls, native_value, is_optional=False, + is_secret=False, is_binary=False): + """ + Convert a given native value to DynamicValue + + :type native_value: :class:`object` + :param native_value: Native value to be converted + :type is_optional: :class:`bool` + :param is_optional: If true, after conversion of native + value to dynamic value, the output is wrapped in an + dynamic value whose type is OPTIONAL. + :type is_secret: :class:`bool` + :param is_secret: If true, and the native value is a string, the type of + the dynamic value returned will be secret. This boolean option, is + also passed to the elements of generic types such as List and + Set. + :type is_binary: :class:`bool` + :param is_binary: If true, and the native value is a string, the type of + the dynamic value returned will be binary. This boolean option, is + also passed to the elements of generic types such as List and + Set. + :rtype: :class:`vmware.vapi.bindings.struct.VapiStruct` + :return: DynamicValue generated from DataValue + """ + visitor = NativeValueToDynamicValueVisitor( + cls.dynamic_value_class, cls.optional_dynamic_value_class, + is_optional, is_secret, is_binary) + visitor.visit(native_value) + return visitor.get_out_value() +
+ @classmethod +
[docs] def to_native_value(cls, dynamic_value, is_set=False, is_datetime=False, + user_defined_class_reference=None): + """ + Convert a given DynamicValue to native value + + :type dynamic_value: :class:`vmware.vapi.bindings.struct.VapiStruct` + :param dynamic_value: DynamicValue to be converted + :type is_set: :class:`bool` + :param is_set: If true, and the dynamic value is a list, the type of + the native value returned will be a set. This boolean option, is + also passed to the elements of generic types such as List and + Optional. If the dynamic value represents a Map, this option is + used only for the conversion of values of the Map. + :type is_datetime: :class:`bool` + :param is_datetime: If true, and the dynamic value is a string, the type of + the native value returned will be a datetime. This boolean option, is + also passed to the elements of generic types such as List and + Optional. If the dynamic value represents a Map, this option is + used only for the conversion of values of the Map. + :type user_defined_class_reference: + :class:`vmware.vapi.bindings.struct.VapiStruct` or + :class:`vmware.vapi.bindings.error.VapiError` or + :class:`vmware.vapi.bindings.enum.Enum` + :param user_defined_class_reference: This class reference is used to + create native instances of user defined types (structures, errors + and enumerations). If the dynamic value is a Structure, instead of + returning VapiStruct, an instance of this class is returned. If the + dynamic value is an Error, instead of returning VapiError, an instance + of this class is returned. If the dynamic value is String, instead of + returning a string, an instance of this class is returned. + :rtype: :class:`object` + :return: Native value generated + """ + visitor = DynamicValueToNativeValueVisitor( + cls.dynamic_value_class, cls.optional_dynamic_value_class, + is_set, is_datetime, user_defined_class_reference) + visitor.visit(dynamic_value) + return visitor.get_out_value()
+
+ +
+
+
+
+
+ + +
+
+
+
+ + + + \ No newline at end of file diff --git a/vsphere/6.0/_modules/vmware/vapi/core.html b/vsphere/6.0/_modules/vmware/vapi/core.html new file mode 100644 index 00000000..83bf020e --- /dev/null +++ b/vsphere/6.0/_modules/vmware/vapi/core.html @@ -0,0 +1,664 @@ + + + + + + + + + + vmware.vapi.core — vCloud Suite SDK for Python 6.0.0 documentation + + + + + + + + + + + + + + +
+
+
+
+ +

Source code for vmware.vapi.core

+"""
+Core Protocol Definition classes
+"""
+
+__author__ = 'VMware, Inc.'
+__copyright__ = 'Copyright 2011-2014 VMware, Inc.  All rights reserved. -- VMware Confidential'
+
+import six
+
+
+
[docs]class ApiProvider(object): + """ + The ApiProvider interface is used for invocation of operations + """ + # Interface class, don't need to warn about unused argument / method + # could be function + # pylint: disable=W0613,R0201 +
[docs] def invoke(self, service_id, operation_id, input_value, ctx): + """ + Invokes the specified method using the input value and the + the execution context provided + + :type service_id: :class:`str` + :param service_id: Service identifier + :type operation_id: :class:`str` + :param operation_id: Operation identifier + :type input_value: :class:`vmware.vapi.data.value.StructValue` + :param input_value: Input parameters for the method + :type ctx: :class:`ExecutionContext` + :param ctx: Execution context for the method + + :rtype: :class:`MethodResult` + :return: Result of the method invocation + """ + raise NotImplementedError +
+ def __hash__(self): + return str(self).__hash__() + +
+
[docs]class ApiInterface(object): + """ + The ApiInterface interface provides introspection APIs for a + vAPI interface; it is implemented by API providers. + """ + # Interface class, don't need to warn about unused argument / method + # could be function + # pylint: disable=W0613,R0201 + def __init__(self): + """ + Initialize the Api Interface instance + """ + pass + +
[docs] def get_identifier(self): + """ + Returns interface identifier + + :rtype: :class:`InterfaceIdentifier` + :return: Interface identifier + """ + raise NotImplementedError +
+
[docs] def get_definition(self): + """ + Returns interface definition + + :rtype: :class:`InterfaceDefinition` + :return: Interface definition + """ + raise NotImplementedError +
+
[docs] def get_method_definition(self, method_id): + """ + Returns the method definition + + :rtype: :class:`MethodDefinition` + :return: Method definition + """ + raise NotImplementedError +
+
[docs] def invoke(self, ctx, method_id, input_value): + """ + Invokes the specified method using the execution context and + the input provided + + :type ctx: :class:`ExecutionContext` + :param ctx: Execution context for this method + :type method_id: :class:`MethodIdentifier` + :param method_id: Method identifier + :type input_value: :class:`vmware.vapi.data.value.StructValue` + :param input_value: Method input parameters + + :rtype: :class:`MethodResult` + :return: Result of the method invocation + """ + raise NotImplementedError +
+ def __hash__(self): + return str(self).__hash__() + +
+
[docs]class InterfaceIdentifier(object): + """ + InterfaceIdentifier has the information required to uniquely + address a vAPI interface + """ + def __init__(self, iface): + """ + Initialize an InterfaceIdentifier + + :type iface: :class:`str` + :param iface: String identifier of the interface + """ + self.iface = str(iface) + +
[docs] def get_name(self): + """ + Returns the string identifier of the interface + + :rtype: :class:`str` + :return: String identifier of the interface + """ + return self.iface +
+ def __eq__(self, other): + return (isinstance(other, InterfaceIdentifier) and + self.iface == other.iface) + + def __ne__(self, other): + return not (self == other) + + def __repr__(self): + return 'InterfaceIdentifier(%s)' % repr(self.iface) + + def __hash__(self): + return str(self).__hash__() + +
+
[docs]class MethodIdentifier(object): + """ + This class identifies a :class:`ApiMethod` instance + """ + def __init__(self, iface, method): + """ + Initialize the MethodIdentifier + + :type iface: :class:`InterfaceIdentifier` + :param iface: InterfaceIdentifier of this method + :type method: :class:`str` + :param method: String identifier of this method + """ + if not isinstance(iface, InterfaceIdentifier): + raise TypeError('Expected argument of type InterfaceIdentifier,' + 'but got %s' % type(iface).__name__) + self.iface = iface + if not isinstance(method, six.string_types): + raise TypeError('Expected argument of type str,' + 'but got %s' % type(method).__name__) + self.method = str(method) + +
[docs] def get_interface_identifier(self): + """ + Returns the interface identifier of the method + + :rtype: :class:`InterfaceIdentifier` + :return: InterfaceIdentifier of this method + """ + return self.iface +
+
[docs] def get_name(self): + """ + Returns the string identifier of the method + + :rtype: :class:`str` + :return: String identifier of the method + """ + return self.method +
+ def __eq__(self, other): + return (isinstance(other, MethodIdentifier) and + self.iface == other.iface and + self.method == other.method) + + def __ne__(self, other): + return not (self == other) + + def __repr__(self): + return 'MethodIdentifier(%s, %s)' % (repr(self.iface), + repr(self.method)) + + def __hash__(self): + return str(self).__hash__() + +
+
[docs]class ProviderDefinition(object): + """ + The ProviderDefinition class contains details information about a + vAPI provider + """ + def __init__(self, name): + """ + Initialize the ProviderDefinition + + :type name: :class:`str` + :param name: Name of the provider + """ + self._name = name + +
[docs] def get_identifier(self): + """ + Returns the provider identifier. + + :rtype: :class:`str` + :return: Provider identifier + """ + return self._name +
+ def __eq__(self, other): + return (isinstance(other, ProviderDefinition) and + self._name == other.get_identifier()) + + def __ne__(self, other): + return not (self == other) + + def __repr__(self): + return 'ProviderDefinition(%s)' % repr(self._name) + + def __hash__(self): + return str(self).__hash__() + +
+
[docs]class InterfaceDefinition(object): + """ + The InterfaceDefinition class contains detailed information about a + vAPI interface. This should contain all the information required + to address an interface in the vAPI runtime. + """ + def __init__(self, id_, method_ids): + """ + Initialize the InterfaceDefinition + + :type id_: :class:`InterfaceIdentifier` + :param id_: InterfaceIdentifier of this interface + :type method_ids: :class:`list` of :class:`MethodIdentifier` + :param method_ids: List of method identifiers of the methods exposed by + this interface + """ + self.id_ = id_ + self.method_ids = method_ids + +
[docs] def get_identifier(self): + """ + Returns the interface identifier + + :rtype: :class:`InterfaceIdentifier` + :return: Returns the interface identifer of this interface + """ + return self.id_ +
+
[docs] def get_method_identifiers(self): + """ + Returns the list of method identifiers of the methods exposed by this + interface. Each method identifier is unique within an interface. The + method identifiers returned are unordered + + :rtype: :class:`list` of :class:`MethodIdentifier` + :return: List of method identifiers of the methods exposed by this + interface + """ + return self.method_ids +
+ def __eq__(self, other): + if not isinstance(other, InterfaceDefinition): + return False + + if self.id_ != other.id_: + return False + + # compare the unordered list of method ids + method_names = sorted([method_id.get_name() + for method_id in self.method_ids]) + other_method_names = sorted([method_id.get_name() + for method_id in other.method_ids]) + if method_names != other_method_names: + return False + return True + + def __ne__(self, other): + return not (self == other) + + def __hash__(self): + return str(self).__hash__() + + def __repr__(self): + repr_args = (repr(self.id_), repr(self.method_ids)) + return 'InterfaceDefinition(id_=%s, method_ids=%s)' % repr_args + +
+
[docs]class MethodDefinition(object): + """ + This class contains detailed information about a vAPI method. This should + contain all the information required to address a method in the vAPI + runtime. + """ + def __init__(self, id_, input_, output, errors): + """ + Initialize MethodDefinition + + :type id_: :class:`MethodIdentifier` + :param id_: MethodIdentifier of this method + :type input_: :class:`vmware.vapi.data.definition.StructDefinition` + :param input_: Struct definition corresponding to the method's input + parameters + :type output: :class:`vmware.vapi.data.definition.DataDefinition` + :param output: Data definition of the method's output + :type errors: iterable of :class:`vmware.vapi.data.definition.ErrorDefinition` + :param errors: Error definitions describing the errors that this method + can report + """ + self.id_ = id_ + self.input_ = input_ + self.output = output + self._errors = dict(((e.name, e) for e in errors)) + +
[docs] def get_identifier(self): + """ + Returns the method identifier + + :rtype: :class:`MethodIdentifier` + :return: MethodIdentifier of this method + """ + return self.id_ +
+
[docs] def get_input_definition(self): + """ + Returns the struct definition corresponding to the method's input + parameters. The field names in the struct definition are the parameter + names and the field values correspond to the data definition of the + respective fields. + + :rtype: :class:`vmware.vapi.data.definition.StructDefinition` + :return: StructDefinition correspoding to the method's input + """ + return self.input_ +
+
[docs] def get_output_definition(self): + """ + Returns the data definition of the method's output + + :rtype: :class:`vmware.vapi.data.definition.DataDefinition` + :return: Data definition of the method's output + """ + return self.output +
+
[docs] def get_error_definitions(self): + """ + Returns a set of error definitions describing the errors that this + method can report + + :rtype: :class:`set` of :class:`vmware.vapi.data.definition.ErrorDefinition` + :return: Set of error definitions describing the errors that this + method can report + """ + return frozenset(six.itervalues(self._errors)) +
+
[docs] def get_error_definition(self, error_name): + """ + Returns the error definition with the specified name reported by this + method or None if this method doesn't report an error with the specified + name. + + :type error_name: :class:`str` + :param error_name: Name of the error definition to return + :rtype: :class:`vmware.vapi.data.definition.ErrorDefinition` + :return: Error definition with the specified name reported by this + method or None if this method doesn't report an error with the + specified name. + """ + return self._errors.get(error_name) +
+ def __eq__(self, other): + if not isinstance(other, MethodDefinition): + return NotImplemented + + if len(self._errors) != len(other._errors): + return False + + for error_name in six.iterkeys(self._errors): + if self._errors[error_name] != other.get_error_definition(error_name): + return False + + return (self.id_ == other.id_ and + self.input_ == other.input_ and + self.output == other.output) + + def __ne__(self, other): + return not (self == other) + + def __hash__(self): + return str(self).__hash__() + + def __repr__(self): + args = (repr(self.id_), + repr(self.input_), + repr(self.output), + repr(self.get_error_definitions())) + return 'MethodDefinition(id_=%s, input_=%s, output=%s, errors=%s)' % args + +
+
[docs]class MethodResult(object): + """ + The MethodResult class contains the result of a method call. + It contains either the output of the method invocation or + an error reported by the method invocation. These are mutually + exclusive. + + :type output: :class:`vmware.vapi.data.value.DataValue` + :ivar output: Method output + :type error: :class:`vmware.vapi.data.value.ErrorValue` + :ivar error: Method error + """ + def __init__(self, output=None, error=None): + """ + Initialize MethodResult + + :type output: :class:`vmware.vapi.data.value.DataValue` + :param output: Method output + :type error: :class:`vmware.vapi.data.value.ErrorValue` + :param error: Method error + """ + self._output = output + self._error = error + + @property +
[docs] def output(self): + """ + :rtype: :class:`vmware.vapi.data.value.DataValue` + :return: Method output + """ + return self._output +
+ @property +
[docs] def error(self): + """ + :rtype: :class:`vmware.vapi.data.value.ErrorValue` + :return: Method error + """ + return self._error +
+
[docs] def success(self): + """ + Check if the method completed successfully. + + :rtype: :class:`bool` + :return: False if the method reported an error, True otherwise + """ + return (self.error is None) +
+ def __hash__(self): + return str(self).__hash__() + + def __repr__(self): + return 'MethodResult(output=%s, error=%s)' % (self._output, self._error) + +
+
[docs]class CustomDict(dict): + """ + Interface for implementing Custom dict classes with additional constraints. + + Overriding __setitem__ as not enough for adding additional constraints on + key/value pairs of dictionaries. We also have to override update and + setdefault, so that even they use __setitem__. + """ + # Same as dict setdefault, except this will call through our __setitem__ +
[docs] def update(self, *args, **kwargs): + for k, v in six.iteritems(dict(*args, **kwargs)): + self[k] = v + + # Same as dict setdefault, except this will call through our __setitem__
+
[docs] def setdefault(self, key, val=None): + if key in self: + return self[key] + else: + self[key] = val + return val + +
+
[docs]class ApplicationContext(CustomDict): + """ + Interface representing additional data associated with the request for + method execution represented by this ExecutionContext. + The additional data format is key-value pairs of String. + + This additional data is provided by the client initiating the + execution, it is then transported as is over the wire and is + available for the provider-side service implementations on the server. + This extra data is completely opaque for the infrastructure, in other + words it is a contract between the client and the service implementation + only. + """ + def __init__(self, *args, **kwargs): + CustomDict.__init__(self) + self.update(*args, **kwargs) + + def __setitem__(self, key, value): + if not isinstance(key, six.string_types): + raise TypeError('Type of key should be a string, but got %s' % + type(value).__name__) + if not isinstance(value, six.string_types): + raise TypeError('Type of value should be a string, but got %s' % + type(value).__name__) + dict.__setitem__(self, key, value) + + def __repr__(self): + return 'ApplicationContext(%s)' % dict.__repr__(self) + +
+
[docs]class SecurityContext(CustomDict): + """ + Implementations of this interface will provide all needed data for + authentication for the given invocation. + """ + def __init__(self, *args, **kwargs): + CustomDict.__init__(self) + self.update(*args, **kwargs) + + def __setitem__(self, key, value): + if not isinstance(key, six.string_types): + raise TypeError('Type of value should be a string, but got %s' % + type(value).__name__) + dict.__setitem__(self, key, value) + + def __repr__(self): + return 'SecurityContext(%s)' % dict.__repr__(self) + +
+
[docs]class ExecutionContext(object): + """ + This class provides out-of-band context information that is passed along + with a method invocation + """ + def __init__(self, application_context=None, security_context=None): + """ + Initialize Execution Context + """ + if (application_context is not None and + not isinstance(application_context, ApplicationContext)): + raise TypeError('Application context should be of type ' + 'vmware.vapi.core.ApplicationContext') + if application_context is None: + application_context = ApplicationContext() + + if (security_context is not None and + not isinstance(security_context, SecurityContext)): + raise TypeError('Security context should be of type ' + 'vmware.vapi.core.SecurityContext') + if security_context is None: + security_context = SecurityContext() + + self.application_context = application_context + self.security_context = security_context + + def __hash__(self): + return str(self).__hash__() + + def __repr__(self): + app_ctx = 'application_context=%s' % repr(self.application_context) + sec_ctx = 'security_context=%s' % repr(self.security_context) + return 'ExecutionContext(%s, %s)' % (app_ctx, sec_ctx)
+
+ +
+
+
+
+
+ + +
+
+
+
+ + + + \ No newline at end of file diff --git a/vsphere/6.0/_modules/vmware/vapi/data/definition.html b/vsphere/6.0/_modules/vmware/vapi/data/definition.html new file mode 100644 index 00000000..71a2b317 --- /dev/null +++ b/vsphere/6.0/_modules/vmware/vapi/data/definition.html @@ -0,0 +1,1170 @@ + + + + + + + + + + vmware.vapi.data.definition — vCloud Suite SDK for Python 6.0.0 documentation + + + + + + + + + + + + + + +
+
+
+
+ +

Source code for vmware.vapi.data.definition

+"""
+DataDefinition classes
+"""
+
+__author__ = 'VMware, Inc.'
+__copyright__ = 'Copyright 2011-2014 VMware, Inc.  All rights reserved. -- VMware Confidential'
+
+import logging
+
+from vmware.vapi.data.type import Type
+from vmware.vapi.data.value import data_value_factory
+from vmware.vapi.exception import CoreException
+from vmware.vapi.l10n.runtime import message_factory
+from vmware.vapi.lib.visitor import VapiVisitor
+from vmware.vapi.lib.constants import (MAP_ENTRY, OPERATION_INPUT)
+
+logger = logging.getLogger(__name__)
+
+
+
[docs]class DataDefinition(object): + """ + Base class for all types in the vAPI run-time type system + + :type type: :class:`str` + :ivar type: String representation of the type + """ + def __init__(self, data_type=None): + """ + Initialize the data definition instance + + :type data_type: :class:`str` + :param data_type: String representation of the type + """ + self.type = data_type + +
[docs] def valid_instance_of(self, value): + """ + Validates that the specified :class:`vmware.vapi.data.value.DataValue` is an instance of + this data-definition + + :type value: :class:`vmware.vapi.data.value.DataValue` + :param value: the data value to validate + + :rtype: :class:`bool` + :return: true if the value is an instance of this data-definition, + false, otherwise + """ + return not self.validate(value) +
+
[docs] def validate(self, value): + """ + Validates that the specified :class:`vmware.vapi.data.value.DataValue` is an instance of + this data-definition + + :type value: :class:`vmware.vapi.data.value.DataValue` + :param value: the data value to validate + + :rtype: :class:`list` of :class:`vmware.vapi.message.Message` or ``None`` + :return: a stack of messages indicating why the value is not an instance + of this data-definition, or None if the value is an instance of + this data-definition + """ + if value is None: + msg = message_factory.get_message('vapi.data.validate.mismatch', + self.type, + 'None') + return [msg] + + if value.type != self.type: + msg = message_factory.get_message('vapi.data.validate.mismatch', + self.type, + value.type) + return [msg] + + return None +
+
[docs] def complete_value(self, value): + """ + Fill the optional fields of StructValues. Also + includes the StructValues present in other generic types: List + and Optional. + + :type value: :class:`vmware.vapi.data.value.DataValue` + :param value: DataValue + """ + pass +
+
[docs] def accept(self, visitor): + """ + Applies a visitor to this data-definition. + + :type visitor: :class:`SimpleDefinitionVisitor` + :param visitor: the visitor operating on this data-definition + """ + visitor.visit(self) +
+ def __eq__(self, other): + if not isinstance(other, DataDefinition): + return NotImplemented + + return self.type == other.type + + def __ne__(self, other): + if not isinstance(other, DataDefinition): + return NotImplemented + return not (self == other) + + # Classes that override __eq__ should define __hash__ to make + # its instances usable in hashed collections + def __hash__(self): + return str(self).__hash__() + + def __repr__(self): + return '%s()' % self.__class__.__name__ + +
+
[docs]class SingletonDefinition(DataDefinition): + """ + Base class for all the primitive data definition classes. All the derived + classes of this class will have only one instance. + """ + _instance = None + + def __init__(self, data_type): + """ + Initialize SingletonDefinition + + :type data_type: :class:`vmware.vapi.data.type.Type` + :param data_type: Type of the DataDefinition + """ + DataDefinition.__init__(self, data_type) + + def __new__(cls, *args, **kwargs): + if not cls._instance: + cls._instance = super(SingletonDefinition, cls).__new__( + cls, *args, **kwargs) + return cls._instance + +
+
[docs]class VoidDefinition(SingletonDefinition): + """ + DataDefinition class for void + """ + def __init__(self): + """ + Initialize VoidDefinition + """ + SingletonDefinition.__init__(self, Type.VOID) + +
[docs] def new_value(self): + """ + Create a new VoidValue + + :rtype: :class:`vmware.vapi.data.value.VoidValue` + :return: Newly created VoidValue + """ + return data_value_factory(self.type) + +
+
[docs]class IntegerDefinition(SingletonDefinition): + """ + DataDefinition for long values + """ + def __init__(self): + """ + Initialize IntegerDefinition + """ + SingletonDefinition.__init__(self, Type.INTEGER) + +
[docs] def new_value(self, value=0): + """ + Create a new IntegerValue + + :rtype: :class:`vmware.vapi.data.value.IntegerValue` + :return: Newly created IntegerValue + """ + return data_value_factory(self.type, value) + +
+
[docs]class DoubleDefinition(SingletonDefinition): + """ + DataDefinition for floats + """ + def __init__(self): + """ + Initialize DoubleDefinition + """ + SingletonDefinition.__init__(self, Type.DOUBLE) + +
[docs] def new_value(self, value=0.0): + """ + Create a new DoubleValue + + :rtype: :class:`vmware.vapi.data.value.DoubleValue` + :return: Newly created DoubleValue + """ + return data_value_factory(self.type, value) + +
+
[docs]class StringDefinition(SingletonDefinition): + """ + DataDefinition for strings + """ + def __init__(self): + """ + Initialize StringDefinition + """ + SingletonDefinition.__init__(self, Type.STRING) + +
[docs] def new_value(self, value=""): + """ + Create a new StringValue + + :rtype: :class:`vmware.vapi.data.value.StringValue` + :return: Newly created StringValue + """ + return data_value_factory(self.type, value) + +
+
[docs]class OpaqueDefinition(SingletonDefinition): + """ + DataDefinition for opaque + """ + def __init__(self): + """ + Initialize OpaqueDefinition + """ + SingletonDefinition.__init__(self, Type.OPAQUE) + +
[docs] def validate(self, value): + """ + The validation for OpaqueDefinition will succeed against + any DataValue. Only validates that supplied value is not None + + :type value: :class:`vmware.vapi.data.value.DataValue` + :param value: DataValue to be validated + :rtype: :class:`list` of :class:`vmware.vapi.message.Message` or ``None`` + :return: a stack of messages indicating why the value is not an instance + of this data-definition, or None if the value is an instance of + this data-definition + """ + if value is None: + msg = message_factory.get_message('vapi.data.validate.mismatch', + self.type, + 'None') + return [msg] + return None + +
+
[docs]class DynamicStructDefinition(SingletonDefinition): + """ + DataDefinition for dynamic structs + """ + _valid_types = [Type.STRUCTURE, Type.ERROR] + + def __init__(self): + """ + Initialize DynamicStructDefinition + """ + SingletonDefinition.__init__(self, Type.DYNAMIC_STRUCTURE) + +
[docs] def validate(self, value): + """ + The validation for DynamicStructDefinition will succeed against + any StructValue. + + :type value: :class:`vmware.vapi.data.value.DataValue` + :param value: the data value to validate + + :rtype: :class:`list` of :class:`vmware.vapi.message.Message` or ``None`` + :return: a stack of messages indicating why the value is not an instance + of this data-definition, or None if the value is an instance of + this data-definition + """ + if value is None: + msg = message_factory.get_message( + 'vapi.data.dynamicstruct.validate.mismatch', + self._valid_types, + 'None') + return [msg] + + if value.type not in self._valid_types: + msg = message_factory.get_message( + 'vapi.data.dynamicstruct.validate.mismatch', + self._valid_types, + value.type) + return [msg] + + return None + +
+
[docs]class AnyErrorDefinition(SingletonDefinition): + """ + DataDefinition for 'Exception' type in IDL + """ + def __init__(self): + """ + Initialize AnyErrorDefinition + """ + SingletonDefinition.__init__(self, Type.ANY_ERROR) + +
[docs] def validate(self, value): + """ + The validation for AnyErrorDefinition will succeed against + any ErrorValue. + + :type value: :class:`vmware.vapi.data.value.DataValue` + :param value: the data value to validate + + :rtype: :class:`list` of :class:`vmware.vapi.message.Message` or ``None`` + :return: a stack of messages indicating why the value is not an instance + of this data-definition, or None if the value is an instance of + this data-definition + """ + if value is None: + msg = message_factory.get_message('vapi.data.validate.mismatch', + self.type, + 'None') + return [msg] + + if value.type != Type.ERROR: + msg = message_factory.get_message('vapi.data.validate.mismatch', + self.type, + value.type) + return [msg] + + return None + +
+
[docs]class BlobDefinition(SingletonDefinition): + """ + DataDefinition for binary values + """ + def __init__(self): + """ + Initialize BlobDefinition + """ + SingletonDefinition.__init__(self, Type.BLOB) + +
[docs] def new_value(self, value=""): + """ + Create a new BlobValue + + :rtype: :class:`vmware.vapi.data.value.BlobValue` + :return: Newly created BlobValue + """ + return data_value_factory(self.type, value) + +
+
[docs]class BooleanDefinition(SingletonDefinition): + """ + DataDefinition for bool values + """ + def __init__(self): + """ + Initialize BooleanDefinition + """ + SingletonDefinition.__init__(self, Type.BOOLEAN) + +
[docs] def new_value(self, value=False): + """ + Create a new BooleanValue + + :rtype: :class:`vmware.vapi.data.value.BooleanValue` + :return: Newly created BooleanValue + """ + return data_value_factory(self.type, value) + +
+
[docs]class ListDefinition(DataDefinition): + """ + DataDefinition for lists + """ + def __init__(self, element_type): + """ + Initialize ListDefinition + + :type element_type: :class:`DataDefinition` + :param element_type: DataDefinition of the elements inside ListDefinition + """ + if not element_type: + raise ValueError('ListDefinition requires element definition') + DataDefinition.__init__(self, Type.LIST) + self.element_type = element_type + +
[docs] def new_value(self, values=None): + """ + Create a new ListValue + + :type values: :class:`list` of :class:`vmware.vapi.data.value.DataValue` + :param values: List of elements + :rtype: :class:`vmware.vapi.data.value.ListValue` + :return: Newly created ListValue + """ + return data_value_factory(self.type, values) +
+
[docs] def validate(self, list_value): + """ + Apart from the validation checks specified in the validate + method of DataDefinition class, this method does some additional checks + + Validation will fail if any element in the ListValue does not validate + against the DataDefinition of the elementType of this ListDefinition + + :type other: :class:`vmware.vapi.data.value.ListValue` + :param other: ListValue to be validated + :rtype: :class:`list` of :class:`vmware.vapi.message.Message` or ``None`` + :return: a stack of messages indicating why the value is not an instance + of this data-definition, or None if the value is an instance of + this data-definition + """ + errors = DataDefinition.validate(self, list_value) + if errors: + return errors + + for index, value in enumerate(list_value): + errors = self.element_type.validate(value) + if errors: + msg = message_factory.get_message( + 'vapi.data.list.invalid.entry', + str(value), index) + return [msg] + errors + + return None +
+
[docs] def complete_value(self, value): + """ + Fill the optional values inside StructValues + + :type value: :class:`vmware.vapi.data.value.DataValue` + :param value: DataValue + """ + assert(value.type == Type.LIST) + + if self.element_type.type == Type.STRUCTURE: + for element in value: + self.element_type.complete_value(element) +
+ def __eq__(self, other): + if not isinstance(other, ListDefinition): + return NotImplemented + + return (DataDefinition.__eq__(self, other) and + self.element_type == other.element_type) + + # Classes that override __eq__ should define __hash__ to make + # its instances usable in hashed collections + def __hash__(self): + return DataDefinition.__hash__(self) + + def __repr__(self): + return 'ListDefinition(element_type=%s)' % repr(self.element_type) + +
+
[docs]class StructDefinition(DataDefinition): + """ + DataDefinition for structures + """ + def __init__(self, name, fields, data_type=Type.STRUCTURE): + """ + Initialize StructDefinition + + :type name: :class:`str` + :param name: Name of the Structure + :type fields: :class:`tuple` of (:class:`str`, :class:`DataDefinition`) + :param fields: A tuple consisting of the field name and the field + definition for all the fields inside this StructDefinition + """ + if not name: + raise ValueError('Struct name may not be None or empty string') + DataDefinition.__init__(self, data_type) + self.name = name + self._keys = [k for (k, _) in fields] + self._dict = dict(fields) + +
[docs] def new_value(self): + """ + Create a new StructValue + + :rtype: :class:`vmware.vapi.data.value.StructValue` + :return: Newly created StructValue + """ + return data_value_factory(self.type, self.name) +
+
[docs] def get_field_names(self): + """ + Returns the list of field names in this struct definition. The ordering + of fields is not preserved. + + :rtype: :class:`list` of :class:`str` + :return: List of field names in this struct definition + """ + return self._keys +
+
[docs] def get_field(self, field): + """ + Returns the field definition of the specified field + + :rtype: :class:`DataDefinition` + :return: field definition of the specified field + """ + return self._dict.get(field) +
+
[docs] def validate(self, other): + """ + Apart from the validation checks specified in the validate + method of DataDefinition class, this method does some additional checks + + Validation will fail if + - the name of the input StructValue does not match the name of this + StructDefinition. + - any of the fields (either required or optional) in this StructDefinition + are not present in the input StructValue + - the validation fails for any field value in the input StructValue with + its corresponding definition in this StructDefinition + + The method performs inclusive validation. i.e. If there are any extra + fields in the input StructValue which are not present in the + StructDefinition, validation will not fail. + + :type other: :class:`vmware.vapi.data.value.StructValue` + :param other: StructValue to be validated + :rtype: :class:`list` of :class:`vmware.vapi.message.Message` of ``None`` + :return: a stack of messages indicating why the value is not an instance + of this data-definition, or None if the value is an instance of + this data-definition + """ + errors = DataDefinition.validate(self, other) + if errors: + return errors + + if (other.name != self.name): + # Remove the following if condition in R28 + # To handle old client talking to new server + if self.name in [MAP_ENTRY, OPERATION_INPUT]: + pass + else: + msg = message_factory.get_message( + 'vapi.data.structure.name.mismatch', + self.name, other.name) + return [msg] + + for field in self._keys: + if (not other.has_field(field) and + self._dict.get(field).type != Type.OPTIONAL): + msg = message_factory.get_message( + 'vapi.data.structure.field.missing', + self.name, field) + return [msg] + + field_def = self._dict.get(field) + field_val = other.get_field(field) + errors = field_def.validate(field_val) + if errors: + msg = message_factory.get_message( + 'vapi.data.structure.field.invalid', + field, self.name) + return [msg] + errors + + return None +
+
[docs] def complete_value(self, value): + """ + Fill out all the unset optional fields in a structure + based on the StructDefinition + + :type value: :class:`vmware.vapi.data.value.StructValue` + :param value: Input Struct Value + """ + assert(value.type == self.type) + assert(value is not None) + + for field in self._keys: + field_def = self.get_field(field) + if value.has_field(field): + # Complete the optional values in elements as well + field_def.complete_value(value.get_field(field)) + elif field_def.type == Type.OPTIONAL: + # If field is not present and it is optional, fill it + value.set_field(field, field_def.new_value()) +
+ def __eq__(self, other): + if not isinstance(other, StructDefinition): + return NotImplemented + + if not (DataDefinition.__eq__(self, other) and other.name == self.name): + return False + + for field in self._keys: + other_field_def = other.get_field(field) + if not other_field_def: + return False + field_def = self.get_field(field) + if field_def != other_field_def: + return False + + return True + + # Classes that override __eq__ should define __hash__ to make + # its instances usable in hashed collections + def __hash__(self): + return DataDefinition.__hash__(self) + + def __repr__(self): + fields = ", ".join(["%s=%s" % (field, repr(self._dict.get(field))) + for field in sorted(self._keys)]) + return '%s(name=%s, fields={%s})' % (self.__class__.__name__, + repr(self.name), + fields) + +
+
[docs]class StructRefDefinition(DataDefinition): + """ + Reference to a StructDefinition. If the reference is resolved, it is + bound to a specific StructDefinition target. If the reference is + unresolved, its target is None. + + :type name: :class:`str` + :ivar name: Structure name + """ + def __init__(self, name, definition=None): + """ + Initialize StructRefDefinition + + :type name: :class:`str` + :param name: Structure name + :type definition: :class:`DataDefinition` + :param definition: If definition is passed, it creates a resolved + reference + """ + if not name: + raise ValueError('Struct name may not be None or empty string') + self.name = name + self._definition = definition + DataDefinition.__init__(self, Type.STRUCTURE_REF) + + @property + def target(self): + """ + Returns the target structure definition of this reference. + + :rtype: :class:`DataDefinition` or ``None`` + :return: The target of this reference. The value will be None for + unresolved reference + """ + return self._definition + + @target.setter +
[docs] def target(self, definition): + """ + Resolves the reference. An unresolved reference can be resolved exactly + once. A resolved reference cannot be re-resolved. + + :type definition: :class:`DataDefinition` + :param definition: structure definition + :raise: :class:`vmware.vapi.exception.CoreException`: if the reference is + already resolved (already has) a target) or if the name of the + reference does not match the name of the definition + """ + if not definition: + raise ValueError('StructDefinition may not be None') + if self._definition: + msg = message_factory.get_message( + 'vapi.data.structref.already.resolved', self.name) + logger.debug(msg) + raise CoreException(msg) + if self.name != definition.name: + msg = message_factory.get_message( + 'vapi.data.structref.resolve.type.mismatch', + self.name, definition.name) + logger.debug(msg) + raise CoreException(msg) + self._definition = definition +
+
[docs] def check_resolved(self): + """ + Check if the reference is resolved or not + """ + if self._definition is None: + msg = message_factory.get_message( + 'vapi.data.structref.not.resolved', + self.name) + logger.debug(msg) + raise CoreException(msg) +
+
[docs] def validate(self, other): + """ + Validate using the target if the reference is resolved + + :type other: :class:`vmware.vapi.data.value.StructValue` + :param other: StructValue to be validated + :rtype: :class:`list` of :class:`vmware.vapi.message.Message` of ``None`` + :return: a stack of messages indicating that the reference is not + resolved or why the value is not an instance of this + data-definition, or None if the value is an instance of + this data-definition + """ + try: + self.check_resolved() + except CoreException as err: + return err.messages + return self._definition.validate(other) +
+ def __eq__(self, other): + if not isinstance(other, StructRefDefinition): + return NotImplemented + + if not (DataDefinition.__eq__(self, other) and + other.name == self.name): + return False + + return True + + # Classes that override __eq__ should define __hash__ to make + # its instances usable in hashed collections + def __hash__(self): + return DataDefinition.__hash__(self) + + def __repr__(self): + return 'StructRefDefinition(name=%s)' % self.name + +
+
[docs]class ErrorDefinition(StructDefinition): + """ + DataDefinition for errors + """ + def __init__(self, name, fields): + """ + Initialize ErrorDefinition + + :type name: :class:`str` + :param name: Name of the Error + :type fields: :class:`tuple` of (:class:`str`, :class:`DataDefinition`) + :param fields: A tuple consisting of the field name and the field + definition for all the fields inside this + StructDefinition + """ + StructDefinition.__init__(self, name, fields, Type.ERROR) + +
[docs] def new_value(self): + """ + Create a new ErrorValue + + :rtype: :class:`vmware.vapi.data.value.ErrorValue` + :return: Newly created ErrorValue + """ + return data_value_factory(self.type, self.name) + +
+
[docs]class OptionalDefinition(DataDefinition): + """ + An OptionalDefinition instance defines an optional type with a specified + element type + + :type data_type: :class:`str` + :ivar type: String representation of the type + :type element_type: :class:`DataDefinition` + :ivar element_type: The type of the element that is optional + """ + def __init__(self, element_type): + """ + Initialize OptionalDefinition + + :type element_type: :class:`vmware.vapi.data.type.Type` + :param element_type: Type of the DataDefinition + """ + if not element_type: + raise ValueError('Optional definition requires element definition') + DataDefinition.__init__(self, Type.OPTIONAL) + self.element_type = element_type + +
[docs] def new_value(self, value=None): + """ + Create and return a new :class:`OptionalValue` using this + optional-definition. + + :type value: :class:`vmware.vapi.data.value.DataValue` + :param value: The element value + + :rtype: :class:`vmware.vapi.data.value.OptionalValue` + :return: A new optional value using the given data-definition + """ + return data_value_factory(self.type, value) +
+
[docs] def validate(self, value): + """ + Apart from the validation checks specified in the validate + method of DataDefinition class, this method does some additional checks. + + Since this is an OptionalValue, validation will succeed if the + element value is None. If the element value is not None, validation + will fail if element in the OptionalValue does not validate against + the DataDefinition of the element_type of this OptionalDefinition. + + :type other: :class:`vmware.vapi.data.value.OptionalValue` + :param other: OptionalValue to be validated + :rtype: :class:`list` of :class:`vmware.vapi.message.Message` + :return: a stack of messages indicating why the value is not an instance + of this data-definition, or None if the value is an instance of + this data-definition + """ + errors = DataDefinition.validate(self, value) + if errors: + return errors + + if value.value is None: + # None is a valid value for optional + pass + elif value.is_set(): + errors = self.element_type.validate(value.value) + if errors: + msg = message_factory.get_message('vapi.data.optional.validate') + return [msg] + errors + + return None +
+
[docs] def complete_value(self, value): + """ + Fill the optional values inside StructValues + + :type value: :class:`vmware.vapi.data.value.OptionalValue` + :param value: DataValue + """ + assert(value.type == Type.OPTIONAL) + if value.is_set(): + if self.element_type.type == Type.STRUCTURE: + self.element_type.complete_value(value.value) +
+ def __eq__(self, other): + if not isinstance(other, OptionalDefinition): + return NotImplemented + + return (DataDefinition.__eq__(self, other) and + self.element_type == other.element_type) + + # Classes that override __eq__ should define __hash__ to make + # its instances usable in hashed collections + def __hash__(self): + return DataDefinition.__hash__(self) + + def __repr__(self): + return "OptionalDefinition(element_type=%s)" % repr(self.element_type) + +
+
[docs]class SecretDefinition(SingletonDefinition): + """ + DataDefinition for Secrets. Only strings are allowed to be secrets. + """ + def __init__(self): + """ + Initialize SecretDefinition + """ + SingletonDefinition.__init__(self, Type.SECRET) + +
[docs] def new_value(self, value=""): + """ + Create a new SecretValue + + :rtype: :class:`vmware.vapi.data.value.SecretValue` + :return: Newly created SecretValue + """ + return data_value_factory(self.type, value) + +
+
[docs]class SimpleDefinitionVisitor(VapiVisitor): + """ + Base no-op implementation of a definition visitor + """ + def __init__(self): + VapiVisitor.__init__(self, 'Definition') + +
[docs] def visit_void(self, defn): + """ + Visit a VoidDefinition + + :type defn: :class:`VoidDefinition` + :param defn: Data definition + """ + raise NotImplementedError +
+
[docs] def visit_integer(self, defn): + """ + Visit a IntegerDefinition + + :type defn: :class:`IntegerDefinition` + :param defn: Data definition + """ + raise NotImplementedError +
+
[docs] def visit_double(self, defn): + """ + Visit a DoubleDefinition + + :type defn: :class:`DoubleDefinition` + :param defn: Data definition + """ + raise NotImplementedError +
+
[docs] def visit_string(self, defn): + """ + Visit a StringDefinition + + :type defn: :class:`StringDefinition` + :param defn: Data definition + """ + raise NotImplementedError +
+
[docs] def visit_opaque(self, defn): + """ + Visit a OpaqueDefinition + + :type defn: :class:`OpaqueDefinition` + :param defn: Data definition + """ + raise NotImplementedError +
+
[docs] def visit_blob(self, defn): + """ + Visit a BlobDefinition + + :type defn: :class:`BlobDefinition` + :param defn: Data definition + """ + raise NotImplementedError +
+
[docs] def visit_boolean(self, defn): + """ + Visit a BooleanDefinition + + :type defn: :class:`BooleanDefinition` + :param defn: Data definition + """ + raise NotImplementedError +
+
[docs] def visit_list(self, defn): + """ + Visit a ListDefinition + + :type defn: :class:`ListDefinition` + :param defn: Data definition + """ + raise NotImplementedError +
+
[docs] def visit_struct(self, defn): + """ + Visit a StructDefinition + + :type defn: :class:`StructDefinition` + :param defn: Data definition + """ + raise NotImplementedError +
+
[docs] def visit_error(self, defn): + """ + Visit an ErrorDefinition + + :type defn: :class:`ErrorDefinition` + :param defn: Data definition + """ + raise NotImplementedError +
+
[docs] def visit_optional(self, defn): + """ + Visit a OptionalDefinition + + :type defn: :class:`OptionalDefinition` + :param defn: Data definition + """ + raise NotImplementedError +
+
[docs] def visit_secret(self, defn): + """ + Visit a SecretDefinition + + :type defn: :class:`SecretDefinition` + :param defn: Data definition + """ + raise NotImplementedError +
+
[docs] def visit_struct_ref(self, defn): + """ + Visit a StructRefDefinition + + :type defn: :class:`StructRefDefinition` + :param defn: StructRefDefinition object + """ + raise NotImplementedError + + +# vapi type name to vapi type definition map
+data_type_to_definition_map = { + Type.INTEGER: IntegerDefinition, + Type.DOUBLE: DoubleDefinition, + Type.BOOLEAN: BooleanDefinition, + Type.STRING: StringDefinition, + Type.BLOB: BlobDefinition, + Type.LIST: ListDefinition, + Type.STRUCTURE: StructDefinition, + Type.OPTIONAL: OptionalDefinition, + Type.VOID: VoidDefinition, + Type.OPAQUE: OpaqueDefinition, + Type.SECRET: SecretDefinition, + Type.ERROR: ErrorDefinition, + Type.STRUCTURE_REF: StructRefDefinition, + Type.DYNAMIC_STRUCTURE: DynamicStructDefinition, +} + + +
[docs]def data_definition_factory(data_type, *args, **kwargs): + """ + data definition factory + + :type data_type: :class:`str` + :param data_type: Type name defined in vmware.vapi.data.type + :type args: :class:`set` + :param args: Positional arguments to data definition constructor + :type kwargs: :class:`dict` + :param kwargs: Dict arguments to data definition constructor + """ + constructor = data_type_to_definition_map.get(data_type) + return constructor(*args, **kwargs) + +
+
[docs]class ReferenceResolver(object): + """ + Resolves all the StructRefDefinition objects + """ + def __init__(self): + """ + Initialize ReferenceResolver + """ + self._definitions = {} + self._references = [] + +
[docs] def add_definition(self, definition): + """ + Adds a new structure definition to the context + + :type definition: :class:`StructDefinition` + :param definition: StructDefinition + """ + self._definitions[definition.name] = definition +
+
[docs] def add_reference(self, reference): + """ + Adds a new structure refernce to the context + + :type refernce: :class:`StructRefDefinition` + :param refernce: StructRefDefinition + """ + self._references.append(reference) +
+
[docs] def is_defined(self, name): + """ + Determines whether the context contains a definition for the specified + structure + + :rtype: :class:`bool` + :return: True if the structure is already defined, false otherwise + """ + return name in self._definitions +
+
[docs] def resolve(self): + """ + Traverses all references and resolves the unresolved ones. + """ + for reference in self._references: + if reference.target is None: + definition = self._definitions.get(reference.name) + if definition is None: + msg = message_factory.get_message( + 'vapi.data.structref.structure.not.defined', + reference.name) + logger.debug(msg) + raise CoreException(msg) + reference.target = definition
+
+ +
+
+
+
+
+ + +
+
+
+
+ + + + \ No newline at end of file diff --git a/vsphere/6.0/_modules/vmware/vapi/data/serializers/introspection.html b/vsphere/6.0/_modules/vmware/vapi/data/serializers/introspection.html new file mode 100644 index 00000000..f3d7ce81 --- /dev/null +++ b/vsphere/6.0/_modules/vmware/vapi/data/serializers/introspection.html @@ -0,0 +1,275 @@ + + + + + + + + + + vmware.vapi.data.serializers.introspection — vCloud Suite SDK for Python 6.0.0 documentation + + + + + + + + + + + + + + +
+
+
+
+ +

Source code for vmware.vapi.data.serializers.introspection

+"""
+Convenient libraries for introspection data
+"""
+
+__author__ = 'VMware, Inc.'
+__copyright__ = 'Copyright 2013 VMware, Inc.  All rights reserved. -- VMware Confidential'
+
+import logging
+
+from vmware.vapi.data.definition import (
+    IntegerDefinition, DoubleDefinition, BooleanDefinition, StringDefinition,
+    BlobDefinition, ListDefinition, StructDefinition, OptionalDefinition,
+    VoidDefinition, OpaqueDefinition, SecretDefinition, ErrorDefinition,
+    StructRefDefinition, DynamicStructDefinition, ReferenceResolver
+)
+from vmware.vapi.data.type import Type
+from vmware.vapi.data.value import (
+    StringValue, ListValue, StructValue, OptionalValue)
+from vmware.vapi.exception import CoreException
+from vmware.vapi.lib.constants import (Introspection, MAP_ENTRY)
+from vmware.vapi.l10n.runtime import message_factory
+
+logger = logging.getLogger(__name__)
+# Type map from Type constants in runtime to
+# type constants in Introspection service
+data_type_map = {
+    Type.INTEGER: 'LONG',
+    Type.DOUBLE: 'DOUBLE',
+    Type.BOOLEAN: 'BOOLEAN',
+    Type.STRING: 'STRING',
+    Type.BLOB: 'BINARY',
+    Type.LIST: 'LIST',
+    Type.STRUCTURE: 'STRUCTURE',
+    Type.OPTIONAL: 'OPTIONAL',
+    Type.VOID: 'VOID',
+    Type.OPAQUE: 'OPAQUE',
+    Type.SECRET: 'SECRET',
+    Type.ERROR: 'ERROR',
+    Type.STRUCTURE_REF: 'STRUCTURE_REF',
+    Type.DYNAMIC_STRUCTURE: 'DYNAMIC_STRUCTURE',
+}
+# Type map from type enum constants in Introspection
+# service to DataDefinition objects
+reverse_data_type_map = {
+    'LONG': IntegerDefinition,
+    'DOUBLE': DoubleDefinition,
+    'BOOLEAN': BooleanDefinition,
+    'STRING': StringDefinition,
+    'BINARY': BlobDefinition,
+    'LIST': ListDefinition,
+    'STRUCTURE': StructDefinition,
+    'OPTIONAL': OptionalDefinition,
+    'VOID': VoidDefinition,
+    'OPAQUE': OpaqueDefinition,
+    'SECRET': SecretDefinition,
+    'ERROR': ErrorDefinition,
+    'STRUCTURE_REF': StructRefDefinition,
+    'DYNAMIC_STRUCTURE': DynamicStructDefinition,
+}
+
+
+
[docs]def convert_data_def_to_data_value(data_def): + """ + Convert :class:`vmware.vapi.data.definition.DataDefinition` object to + :class:`vmware.vapi.data.value.DataValue` object. The type of the object + returned is a struct value that corresponds to DataDefinition VMODL2 type + present in introspection service. + + :type data_def: :class:`vmware.vapi.data.definition.DataDefinition` + :param data_def: Data definition + :rtype: :class:`vmware.vapi.data.value.DataValue` + :return: Data value representing the data definition object + """ + result = StructValue(Introspection.DATA_DEFINITION) + result.set_field( + 'type', StringValue(data_type_map.get(data_def.type))) + + if (data_def.type == Type.STRUCTURE or + data_def.type == Type.STRUCTURE_REF or + data_def.type == Type.ERROR): + result.set_field('name', OptionalValue(StringValue(data_def.name))) + else: + result.set_field('name', OptionalValue()) + + if (data_def.type == Type.OPTIONAL or + data_def.type == Type.LIST): + element_definition = data_def.element_type + element_value = convert_data_def_to_data_value( + element_definition) + result.set_field('element_definition', + OptionalValue(element_value)) + else: + result.set_field('element_definition', OptionalValue()) + + if (data_def.type == Type.STRUCTURE or data_def.type == Type.ERROR): + fields = ListValue() + for field_name in data_def.get_field_names(): + element_definition = data_def.get_field(field_name) + field_pair = StructValue(MAP_ENTRY) + field_pair.set_field('key', StringValue(field_name)) + field_pair.set_field( + 'value', + convert_data_def_to_data_value(element_definition)) + fields.add(field_pair) + result.set_field('fields', OptionalValue(fields)) + else: + result.set_field('fields', OptionalValue()) + return result + +
+def _convert_data_value_to_data_def_int(data_value, ctx): + """ + Convert :class:`vmware.vapi.data.value.DataValue` object that + corresponds to DataDefinition structure in introspection VMODL2 into + :class:`vmware.vapi.data.definition.DataDefinition` object using the + ReferenceResolver context. + + ReferenceResolver is used to resolve any STRUCTURE_REF objects present in + the input value. This function registers all the STRUCTURE and + STRUCTURE_REF objects with ReferenceResolver. The caller of this function + must call "resolve()" on the ReferenceResolver to resolve the + StructDefinition references in StructRefDefinition + + :type data_value: :class:`vmware.vapi.data.value.DataValue` + :param data_value: Data value representing the data definition object + :type ctx: :class:`vmware.vapi.data.definition.ReferenceResolver` + :param ctx: Context to resolve structure reference definitions + :rtype: :class:`vmware.vapi.data.definition.DataDefinition` + :return: Data definition + """ + type_name = data_value.get_field('type').value + data_def_class = reverse_data_type_map.get(type_name) + # Primitive types + if type_name in ['VOID', 'LONG', 'DOUBLE', 'STRING', 'OPAQUE', + 'DYNAMIC_STRUCTURE', 'BINARY', 'BOOLEAN', 'SECRET']: + return data_def_class() + # Generic types + elif type_name in ['OPTIONAL', 'LIST']: + element_type_def = _convert_data_value_to_data_def_int( + data_value.get_field('element_definition').value, ctx) + return data_def_class(element_type_def) + # Struct Ref definition + elif type_name == 'STRUCTURE_REF': + data_def = data_def_class(data_value.get_field('name').value.value) + ctx.add_reference(data_def) + return data_def + # Structure and Error types + elif type_name in ['STRUCTURE', 'ERROR']: + name = data_value.get_field('name').value.value + field_defs = [] + fields = data_value.get_field('fields').value + for field_info in fields: + field_name = field_info.get_field('key').value + field_def = _convert_data_value_to_data_def_int( + field_info.get_field('value'), ctx) + field_defs.append((field_name, field_def)) + data_def = data_def_class(name, field_defs) + ctx.add_definition(data_def) + return data_def + else: + msg = message_factory.get_message( + 'vapi.introspection.invalid.type', type_name) + logger.debug(msg) + raise CoreException(msg) + + +
[docs]def convert_data_value_to_data_def(data_value): + """ + Convert :class:`vmware.vapi.data.value.DataValue` object that + corresponds to DataDefinition structure in introspection VMODL2 into + :class:`vmware.vapi.data.definition.DataDefinition` object. + + :type data_value: :class:`vmware.vapi.data.value.DataValue` + :param data_value: Data value representing the data definition object + :rtype: :class:`vmware.vapi.data.definition.DataDefinition` + :return: Data definition + """ + ctx = ReferenceResolver() + result = _convert_data_value_to_data_def_int(data_value, ctx) + ctx.resolve() + return result
+
+ +
+
+
+
+
+ + +
+
+
+
+ + + + \ No newline at end of file diff --git a/vsphere/6.0/_modules/vmware/vapi/data/serializers/jsonrpc.html b/vsphere/6.0/_modules/vmware/vapi/data/serializers/jsonrpc.html new file mode 100644 index 00000000..61319dba --- /dev/null +++ b/vsphere/6.0/_modules/vmware/vapi/data/serializers/jsonrpc.html @@ -0,0 +1,1205 @@ + + + + + + + + + + vmware.vapi.data.serializers.jsonrpc — vCloud Suite SDK for Python 6.0.0 documentation + + + + + + + + + + + + + + +
+
+
+
+ +

Source code for vmware.vapi.data.serializers.jsonrpc

+"""
+Json rpc de/serializer
+"""
+
+__author__ = 'VMware, Inc.'
+__copyright__ = 'Copyright 2012-2014 VMware, Inc.  All rights reserved. -- VMware Confidential'
+
+
+import decimal
+import itertools
+import logging
+import math
+import six
+try:
+    import simplejson as json
+except ImportError:
+    import json
+
+from vmware.vapi.core import (
+    MethodResult, ExecutionContext, ApplicationContext, SecurityContext)
+
+from vmware.vapi.data.type import Type
+from vmware.vapi.data.value import (
+    data_value_factory, StructValue, ErrorValue, ListValue,
+    OptionalValue, VoidValue, StringValue, BooleanValue, IntegerValue,
+    DoubleValue, BlobValue, SecretValue)
+from vmware.vapi.l10n.runtime import message_factory
+from vmware.vapi.exception import CoreException
+
+logger = logging.getLogger(__name__)
+
+# Vapi json rpc version
+VAPI_JSONRPC_VERSION = '2.0'
+
+# Vapi json rpc method names
+VAPI_INVOKE = 'invoke'
+
+vapi_to_json_map = {
+    Type.BLOB: 'BINARY',
+    Type.SECRET: 'SECRET',
+    Type.ERROR: 'ERROR',
+    Type.STRUCTURE: 'STRUCTURE',
+    Type.OPTIONAL: 'OPTIONAL',
+}
+
+json_to_vapi_map = dict((v, k) for k, v in six.iteritems(vapi_to_json_map))
+
+
+
[docs]def canonicalize_double(o): + """ + Canonicalize double based on XML schema double canonical format + + The exponent must be indicated by "E". Leading zeroes and the + preceding optional "+" sign are prohibited in the exponent. If the + exponent is zero, it must be indicated by "E0". For the mantissa, the + preceding optional "+" sign is prohibited and the decimal point is + required. Leading and trailing zeroes are prohibited subject to the + following: number representations must be normalized such that there + is a single digit which is non-zero to the left of the decimal point + and at least a single digit to the right of the decimal point unless + the value being represented is zero. The canonical representation + for zero is 0.0E0 + http://www.w3.org/TR/xmlschema-2/#double + + :type o: :class:`decimal.Decimal` + :param o: Decimal object to be canonicalized + :rtype: :class:`str` + :return: Canonical string representation of the decimal + """ + # NaN and INF must not be used + if o.is_infinite() or o.is_nan(): + msg = message_factory.get_message( + 'vapi.decimal.canonicalization') + logger.debug(msg) + raise CoreException(msg) + + str_val = str(o) + + # Extract sign of mantissa + neg_sign = '' + if str_val.startswith('-'): + neg_sign = '-' + str_val = str_val[1:] + + # Extract mantissa and exponent + mantissa, exponent = None, None + if 'E' in str_val: + mantissa, exponent = str_val.split('E') + else: + mantissa = str_val + + # decimal class uses context objects that governs precision + # for arithmetic operations. Setting the precision to the + # length of mantissa string. To canonicalize the mantissa, + # we do a division operation, precision maybe lost if we + # don't set .prec + decimal.getcontext().prec = len(mantissa) + + mantissa = decimal.Decimal(mantissa) + exponent = int(exponent) if exponent is not None else 0 + + # There MUST be a single non zero digit on the left of the decimal point + # (unless a zero is represented) + num_digits = 0 + if mantissa: + num_digits = int(math.log10(mantissa)) + exponent = exponent + num_digits + + if num_digits < 0: + # If the number is of the form 0.[0]+[1-9]+ + num_digits *= -1 + # since there MUST be a single non zero digit on the left of decimal + # point, we have to multiple by an extra 10 + num_digits += 1 + exponent -= 1 + mantissa = mantissa * int(math.pow(10, num_digits)) + else: + # If the number is of the form [1-9]+.[0-9]+ + mantissa = mantissa / int(math.pow(10, num_digits)) + + if mantissa < 1: + # If the original number is of the form 0.[1-9]+ then, num_digits + # would have been 0, multile by extra 10 to get it to + # canonical form + mantissa *= 10 + exponent -= 1 + + # There MUST be at least single digit on the right of the decimal point + mantissa = str(mantissa) + if '.' not in mantissa: + mantissa = '%s.0' % mantissa + + # If there are any trailing zeros, strip them off + left, right = mantissa.split('.') + first = right[0] + remaining = right[1:].rstrip('0') + mantissa = '%s.%s%s' % (left, first, remaining) + + return '%s%sE%s' % (neg_sign, mantissa, exponent) + +
+
[docs]class DecimalEncoder(json.JSONEncoder): + """ + Class that adds capability of encoding decimal + in JSON + """ + # In 2.x version of json library, _iterencode should be overriden + # to have special encoding for objects + def _iterencode(self, o, markers=None): + """ + Overriding the decimal encoding for the default encoder + """ + if isinstance(o, decimal.Decimal): + return (str(o) for o in [o]) + return super(DecimalEncoder, self)._iterencode(o, markers) # pylint: disable=W0212 + + # In 3.x version of json library, default() should be overrriden + # to have special encoding for objects +
[docs] def default(self, o): + if isinstance(o, decimal.Decimal): + return (str(o) for o in [o]) + return json.JSONEncoder.default(self, o) + +
+
[docs]class VAPIJsonEncoder(json.JSONEncoder): + """ + Custon JSON encoder that converts vAPI runtime types directly + into JSON string representation. + """ + def __init__(self, *args, **kwargs): + self._dispatch_map = { + MethodResult: self.visit_method_result, + ExecutionContext: self.visit_execution_context, + dict: self.visit_dict, + list: self.visit_list, + decimal.Decimal: canonicalize_double, + StructValue: self.visit_struct_value, + ErrorValue: self.visit_struct_value, + ListValue: self.visit_list, + OptionalValue: self.visit_optional_value, + DoubleValue: self.visit_double_value, + IntegerValue: self.visit_primitive_value, + BooleanValue: self.visit_primitive_value, + StringValue: self.visit_primitive_value, + VoidValue: self.visit_primitive_value, + BlobValue: self.visit_primitive_value_with_type_name, + SecretValue: self.visit_primitive_value_with_type_name, + } + json.JSONEncoder.__init__(self, *args, **kwargs) + + # + # Even though the recommended way to subclass JSONEncoder is by overriding + # "default", encode is being used as it will preserve the computed JSON + # string literal for decimals. If we use default, the value returned by + # canonicalize_double will be wrapped inside double quotes in the final + # JSON message. + # +
[docs] def encode(self, value): + """ + Encode a given vAPI runtime object + + :type value: :class:`object` + :param value: vAPI runtime object + :rtype: :class:`str` + :return: JSON string + """ + return self._dispatch_map.get(type(value), self.visit_default)(value) +
+
[docs] def visit_struct_value(self, value): + """ + Visit a StructValue object + + :type value: :class:`vmware.vapi.data.value.StructValue` + :param value: Struct value object + :rtype: :class:`str` + :return: JSON string + """ + type_name = vapi_to_json_map.get(value.type) + items = ['"%s":%s' % (k, self.encode(v)) + for k, v in value.get_fields()] + return '{"%s":{"%s":{%s}}}' % ( + type_name, + value.name, + ','.join(items)) +
+
[docs] def visit_list(self, value): + """ + Visit a ListValue object + + :type value: :class:`vmware.vapi.data.value.ListValue` + :param value: List value object + :rtype: :class:`str` + :return: JSON string + """ + string = ','.join([self.encode(item) + for item in value]) + return '[%s]' % string +
+
[docs] def visit_optional_value(self, value): + """ + Visit a OptionalValue object + + :type value: :class:`vmware.vapi.data.value.OptionalValue` + :param value: Optional value object + :rtype: :class:`str` + :return: JSON string + """ + type_name = vapi_to_json_map.get(value.type) + if value.is_set(): + return '{"%s":%s}' % (type_name, self.encode(value.value)) + else: + return '{"%s":null}' % type_name +
+ @staticmethod +
[docs] def visit_double_value(value): + """ + Visit a DoubleValue object + + :type value: :class:`vmware.vapi.data.value.DoubleValue` + :param value: Double value object + :rtype: :class:`str` + :return: JSON string + """ + return canonicalize_double(value.value) +
+
[docs] def visit_primitive_value(self, value): + """ + Visit one of StringValue, IntegerValue, BooleanValue or VoidValue + + :type value: :class:`vmware.vapi.data.value.StringValue` (or) + :class:`vmware.vapi.data.value.IntegerValue` (or) + :class:`vmware.vapi.data.value.BooleanValue` (or) + :class:`vmware.vapi.data.value.VoidValue` (or) + :param value: StringValue, IntegerValue, BooleanValue or VoidValue object + :rtype: :class:`str` + :return: JSON string + """ + return json.JSONEncoder.encode(self, value.value) +
+
[docs] def visit_primitive_value_with_type_name(self, value): + """ + Visit one of BlobValue or SecretValue + + :type value: :class:`vmware.vapi.data.value.BlobValue` (or) + :class:`vmware.vapi.data.value.SecretValue` + :param value: BlobValue or SecretValue object + :rtype: :class:`str` + :return: JSON string + """ + type_name = vapi_to_json_map.get(value.type) + return '{"%s":%s}' % (type_name, self.encode(value.value)) +
+
[docs] def visit_method_result(self, value): + """ + Visit a MethodResult object + + :type value: :class:`vmware.vapi.core.MethodResult` + :param value: MethodResult object + :rtype: :class:`str` + :return: JSON string + """ + if value.error is not None: + return '{"%s":%s}' % ('error', self.encode(value.error)) + elif value.output is not None: + return '{"%s":%s}' % ('output', self.encode(value.output)) +
+
[docs] def visit_execution_context(self, value): + """ + Visit an ExecutionContext object + + :type value: :class:`vmware.vapi.core.ExecutionContext` + :param value: ExecutionContext object + :rtype: :class:`str` + :return: JSON string + """ + if value.security_context: + return '{"%s":%s,"%s":%s}' % ( + 'appCtx', + self.encode(value.application_context), + 'securityCtx', + self.encode(value.security_context)) + else: + return '{"%s":%s}' % ('appCtx', + self.encode(value.application_context)) +
+
[docs] def visit_dict(self, value): + """ + Visit a dictionary. Application context and Security Context + in vAPI is a free form object, so it can contain a dictionary. + + :type value: :class:`dict` + :param value: Dictionary value + :rtype: :class:`str` + :return: JSON string + """ + items = ['%s:%s' % (self.encode(k), self.encode(v)) + for k, v in six.iteritems(value)] + return '{%s}' % ','.join(items) +
+
[docs] def visit_default(self, value): + """ + This is the default visit method if the type of the input value + does not match any type in the keys present in dispatch map. + + :type value: :class:`object` + :param value: Python object + :rtype: :class:`str` + :return: JSON string + """ + return json.JSONEncoder.encode(self, value) + +
+
[docs]class JsonRpcDictToVapi(object): + """ Json rpc dict to vapi type """ + + def __init__(self): + """ Json rpc dict to vapi type init """ + pass + + @staticmethod +
[docs] def data_value(value): + """ + get data value from new jsonrpc dict + + # TODO: Structure names and its fields are converted from + # u'' format to str format. This will break if we allow non + # ASCII characters in the IDL + + :type value: :class:`dict` + :param value: json data value + :rtype: subclass of :class:`vmware.vapi.data.value.DataValue` + :return: subclass of data value + """ + result = None + if value is None: + result = data_value_factory(Type.VOID) + elif isinstance(value, dict): + # Optional, Secret, Blob, Error, Structure + # types are inside object + if len(value) > 1: + raise vapi_jsonrpc_error_invalid_params() + (type_name, json_value) = value.popitem() + typ = json_to_vapi_map[type_name] + if typ in [Type.SECRET, Type.BLOB]: + result = data_value_factory(typ, json_value) + elif typ in [Type.ERROR, Type.STRUCTURE]: + if len(json_value) > 1: + raise vapi_jsonrpc_error_invalid_params() + struct_name, fields = json_value.popitem() + result = data_value_factory(typ, str(struct_name)) + for field_name, field_value in six.iteritems(fields): + field_data_value = JsonRpcDictToVapi.data_value( + field_value) + result.set_field(str(field_name), field_data_value) + elif typ == Type.OPTIONAL: + result = data_value_factory(typ) + if json_value is not None: + result.value = JsonRpcDictToVapi.data_value(json_value) + elif isinstance(value, list): + # ListValue is json list + list_data_values = [JsonRpcDictToVapi.data_value(val) + for val in value] + result = data_value_factory(Type.LIST, list_data_values) + elif isinstance(value, bool): + result = data_value_factory(Type.BOOLEAN, value) + elif isinstance(value, six.string_types): + result = data_value_factory(Type.STRING, value) + elif isinstance(value, six.integer_types): + result = data_value_factory(Type.INTEGER, value) + else: + # For Double + result = data_value_factory(Type.DOUBLE, value) + return result +
+ @staticmethod +
[docs] def error_value(value): + """ + get error value from jsonrpc dict + + :type msg: :class:`dict` + :param msg: json error value + :rtype: :class:`vmware.vapi.data.value.ErrorValue` + :return: error value + """ + return JsonRpcDictToVapi.data_value(value) +
+ @staticmethod +
[docs] def method_result(result): + """ + get method result from jsonrpc dict + + :type result: :class:`dict` + :param result: json method result + :rtype: :class:`vmware.vapi.core.MethodResult` + :return: method result + """ + output = None + if 'output' in result: + output = JsonRpcDictToVapi.data_value(result['output']) + error = None + if 'error' in result: + error = JsonRpcDictToVapi.error_value(result['error']) + return MethodResult(output=output, error=error) +
+ @staticmethod +
[docs] def security_ctx(ctx): + """ + get security context from jsonrpc dict + + :type ctx: :class:`dict` + :param ctx: json security context + :rtype: :class:`vmware.vapi.core.SecurityContext` + :return: json user session + """ + if ctx is not None: + return SecurityContext(ctx) +
+ @staticmethod +
[docs] def app_ctx(ctx): + """ + get application context from jsonrpc dict + + :type ctx: :class:`dict` + :param ctx: json application context + :rtype: :class:`str` + :return: operation identifier + """ + return ApplicationContext(ctx) +
+ @staticmethod +
[docs] def execution_context(ctx): + """ + get execution context from jsonrpc dict + + :type ctx: :class:`dict` + :param ctx: json execution context + :rtype: :class:`vmware.vapi.core.ExecutionContext` + :return: execution context + """ + app_ctx = JsonRpcDictToVapi.app_ctx(ctx.get('appCtx')) + security_ctx = JsonRpcDictToVapi.security_ctx(ctx.get('securityCtx')) + execution_context = ExecutionContext(app_ctx, security_ctx) + return execution_context + +
+
[docs]class JsonRpcError(Exception): + """ json rpc error base class """ + + def __init__(self, error): + """ + json rpc error base class constructor + + :type error: :class:`dict` + :param error: json rpc error + """ + Exception.__init__(self) + self.error = error + +
+
[docs]class JsonRpcRequest(object): # pylint: disable=R0922 + """ Json rpc request base class """ + + def __init__(self, version, method, params=None, notification=True, request_id=None): + """ + Json rpc request base class constructor + + :type version: :class:`str` + :kwarg version: json rpc request version + :type method: :class:`str` + :kwarg method: json rpc method + :type params: :class:`dict` or :class:`list` or None + :kwarg params: json rpc method params + :type notification: :class:`bool` + :kwarg notification: True for notification + :type request_id: :class:`long` or :class:`int` or :class:`str` or None + :kwarg request_id: json rpc request id. Do not set for notification + """ + self.version = version + if not isinstance(method, six.string_types): + raise vapi_jsonrpc_error_invalid_request() + self.method = method + self.params = params + self.notification = notification + self.id = request_id + +
[docs] def serialize(self): + """ + Serialize a json rpc request + + :rtype: :class:`str` + :return: json rpc request str + """ + raise NotImplementedError +
+
[docs] def validate_response(self, response): + """ + Validate a json rpc response. + Check for version / id mismatch with request + + :type response: :class:`JsonRpcResponse` + :param response: json rpc response object to validate + """ + raise NotImplementedError + +
+
[docs]class JsonRpcResponse(object): # pylint: disable=R0922 + """ Json rpc response base class """ + + def __init__(self, version, response_id, result, error=None): + """ + Json rpc response base class constructor + + :type version: :class:`str` + :kwarg version: json rpc response version + :type response_id: :class:`long` or :class:`int` or :class:`str` or None + :kwarg response_id: json rpc response id + :type result: :class:`dict` + :kwarg result: json rpc response dict + :type error: :class:`JsonRpcError` + :kwarg error: json rpc error + """ + + self.version = version + self.id = response_id + # result or error, but not both + if result is not None and error is not None: + logger.error('JSON RPC response has both result and error') + raise vapi_jsonrpc_error_invalid_params() + elif result is None and error is None: + logger.error('JSON RPC response has neither result nor error') + raise vapi_jsonrpc_error_invalid_params() + else: + self.result, self.error = result, error + +
[docs] def serialize(self): + """ + Serialize a json rpc response + + :rtype: :class:`str` + :return: json rpc response str + """ + raise NotImplementedError + +
+
[docs]class JsonRpc20Error(JsonRpcError): + """ json rpc 2.0 error """ + + INVALID_REQUEST = -32600 + METHOD_NOT_FOUND = -32601 + INVALID_PARAMS = -32602 + INTERNAL_ERROR = -32603 + PARSE_ERROR = -32700 + + # TRANSPORT_ERROR is defined in xmlrpc error code + # http://xmlrpc-epi.sourceforge.net/specs/rfc.fault_codes.php + # but not JSON RPC 2.0 + # Need this for server connection error + TRANSPORT_ERROR = -32300 + + SERVER_ERROR_RANGE_MIN = -32768 + SERVER_ERROR_RANGE_MAX = -32000 + + DEFAULT_MESSAGES = { + INVALID_REQUEST: 'Invalid Request.', + METHOD_NOT_FOUND: 'Method not found.', + INVALID_PARAMS: 'Invalid params.', + INTERNAL_ERROR: 'Internal error.', + PARSE_ERROR: 'Parse error.', + TRANSPORT_ERROR: 'Transport error.', + } + + def __init__(self, code, message=None, data=None): + """ + Json rpc 2.0 error + + :type code: :class:`int` + :kwarg code: error type that occurred + :type message: :class:`str` + :kwarg message: a short description of the error + :type data: Primitive type / :class:`dict` / None + :kwarg data: more info about the error + """ + try: + code = int(code) + except ValueError: + logger.error('JSON RPC error code type: Expecting "int". Got "%s"', + str(type(code))) + raise + self.code = code + if message is None and (code >= self.SERVER_ERROR_RANGE_MIN or + code <= self.SERVER_ERROR_RANGE_MAX): + message = self.DEFAULT_MESSAGES.get(code, 'Server error.') + self.json_message = message + error = {'code': code, 'message': message} + if data: + error['data'] = str(data) + self.data = data + JsonRpcError.__init__(self, error) + + def __str__(self): + return "%d: %s: %s" % (self.code, str(self.json_message), str(self.data)) + +
+
[docs]def vapi_jsonrpc_error_parse_error(data=None): + """ + vapi json rpc parse error + + :type data: :class:`dict` + :param data: json rpc error object + :rtype: :class:`JsonRpcError` + :return: json rpc error object + """ + return JsonRpc20Error(code=JsonRpc20Error.PARSE_ERROR, data=data) + +
+
[docs]def vapi_jsonrpc_error_invalid_request(data=None): + """ + vapi json rpc invalid request error + + :type data: :class:`dict` + :param data: json rpc error object + :rtype: :class:`JsonRpcError` + :return: json rpc error object + """ + return JsonRpc20Error(code=JsonRpc20Error.INVALID_REQUEST, data=data) + +
+
[docs]def vapi_jsonrpc_error_method_not_found(data=None): + """ + vapi json rpc method not found error + + :type data: :class:`dict` + :param data: json rpc error object + :rtype: :class:`JsonRpcError` + :return: json rpc error object + """ + return JsonRpc20Error(code=JsonRpc20Error.METHOD_NOT_FOUND, data=data) + +
+
[docs]def vapi_jsonrpc_error_invalid_params(data=None): + """ + vapi json rpc invalid params error + + :type data: :class:`dict` + :param data: json rpc error object + :rtype: :class:`JsonRpcError` + :return: json rpc error object + """ + return JsonRpc20Error(code=JsonRpc20Error.INVALID_PARAMS, data=data) + +
+
[docs]def vapi_jsonrpc_error_internal_error(data=None): + """ + vapi json rpc internal error + + :type data: :class:`dict` + :param data: json rpc error object + :rtype: :class:`JsonRpcError` + :return: json rpc error object + """ + return JsonRpc20Error(code=JsonRpc20Error.INTERNAL_ERROR, data=data) + +
+
[docs]def vapi_jsonrpc_error_transport_error(data=None): + """ + vapi json rpc transport error + + :type data: :class:`dict` + :param data: json rpc error object + :rtype: :class:`JsonRpcError` + :return: json rpc error object + """ + return JsonRpc20Error(code=JsonRpc20Error.TRANSPORT_ERROR, data=data) + +
+
[docs]class JsonRpc20Request(JsonRpcRequest): + """ Json rpc 2.0 request """ + + def __init__(self, **kwargs): + """ + Json rpc 2.0 request init + + :type jsonrpc: :class:`str` or None + :kwarg jsonrpc: json rpc request version + :type method: :class:`str` + :kwarg method: json rpc method + :type params: :class:`dict` or :class:`list` or None + :kwarg params: json rpc method params + :type id: :class:`long` or :class:`int` or :class:`str` or None + :kwarg id: json rpc request id. Do not set for notification + """ + version = kwargs.get('jsonrpc') + notification, id_ = True, None + if 'id' in kwargs: + notification, id_ = False, kwargs.get('id') + if (id_ and not (isinstance(id_, six.string_types) + or isinstance(id_, six.integer_types))): + logger.error( + 'JSON RPC request id must be None/str/int. Get "%s"', + str(type(id_))) + raise vapi_jsonrpc_error_invalid_request() + method = kwargs.get('method') + params = kwargs.get('params') + if not (params is None or isinstance(params, dict) or + isinstance(params, list)): + raise vapi_jsonrpc_error_invalid_request() + JsonRpcRequest.__init__(self, version=version, + method=method, + params=params, + notification=notification, + request_id=id_) + +
[docs] def serialize(self): + """ + Serialize a json rpc 2.0 request + + :rtype: :class:`str` + :return: json rpc request str + """ + result_dict = {'jsonrpc': self.version, + 'method': self.method, + 'params': self.params, + 'id': self.id} + return json.dumps(result_dict, + check_circular=False, + separators=(',', ':'), + cls=VAPIJsonEncoder) +
+
[docs] def serialize_notification(self): + """ + Serialize a json rpc 2.0 notification + + :rtype: :class:`str` + :return: json rpc notification str + """ + result_dict = {'jsonrpc': self.version, + 'method': self.method, + 'params': self.params} + return json.dumps(result_dict, + check_circular=False, + separators=(',', ':'), + cls=VAPIJsonEncoder) +
+
[docs] def validate_response(self, response): + """ + Validate a json rpc 2.0 response. + Check for version / id mismatch with request + + :type response: :class:`JsonRpcResponse` + :param response: json rpc response object to validate + """ + if self.notification: + logger.error('JSON RPC notification does not have response') + raise vapi_jsonrpc_error_invalid_params() + + # Check jsonrpc version + # NYI: backward compatible? + request_version = self.version + if response.version != request_version: + logger.error('JSON RPC incompatible version: "%s". Expecting "%s"', + str(response.version), str(request_version)) + raise vapi_jsonrpc_error_invalid_params() + + # Note: response_id MUST be Null for PARSE_ERROR / INVALID_REQUEST + # NYI: Relax this requirement? + if (response.error and + (response.error.code == JsonRpc20Error.PARSE_ERROR or + response.error.code == JsonRpc20Error.INVALID_REQUEST)): + id_ = None + else: + id_ = self.id + + # Check request / response id + if id_ != response.id: + logger.error('JSON RPC response id mismatch: "%s". Expecting "%s"', + str(response.id), str(id_)) + raise vapi_jsonrpc_error_invalid_params() + +
+
[docs]class JsonRpc20Response(JsonRpcResponse): + """ Json rpc 2.0 response """ + + def __init__(self, **kwargs): + """ + Json rpc 2.0 response init + Either result or error must be set, but not both + + :type jsonrpc: :class:`str` or None + :kwarg jsonrpc: json rpc response version + :type result: :class:`dict` + :kwarg result: json rpc response dict + :type error: :class:`JsonRpcError` or dict + :kwarg error: json rpc response error + :type id: :class:`long` or :class:`int` or :class:`str` + :kwarg id: json rpc response id + """ + version = kwargs.get('jsonrpc') + id_ = kwargs.get('id') + # result or error + result = kwargs.get('result') + error = kwargs.get('error') + if error is not None: + if isinstance(error, JsonRpcError): + pass + elif isinstance(error, dict): + code = error.get('code') + message = error.get('message') + error = JsonRpc20Error(code=code, message=message, data=error) + else: + logger.error( + 'JSON RPC params type error. Expecting "%s". Got "%s"', + 'JsonRpcError / dict', str(type(error))) + raise vapi_jsonrpc_error_invalid_params() + JsonRpcResponse.__init__(self, version=version, response_id=id_, + result=result, error=error) + +
[docs] def serialize(self): + """ + Serialize a json rpc 2.0 response + + :rtype: :class:`str` + :return: json rpc response str + """ + result_dict = {'jsonrpc': self.version, + 'id': self.id} + if self.result is not None: + result_dict['result'] = self.result + else: + # result is None, error MUST not be None + result_dict['error'] = self.error.error + if (self.error.code == JsonRpc20Error.PARSE_ERROR or + self.error.code == JsonRpc20Error.INVALID_REQUEST): + result_dict['id'] = None + output = json.dumps(result_dict, + check_circular=False, + separators=(',', ':'), + cls=VAPIJsonEncoder) + output = output.encode('utf-8') + return output + +
+
[docs]def jsonrpc_request_factory(**kwargs): + """ + Json rpc request factory + For json 2.0: set jsonrpc to '2.0' + For json 1.1: set version to '1.1' + For json 1.0: set neither jsonrpc / version + The parameters accepted depends on json version + See corresponding json rpc request class for init parameters + + :type jsonrpc: :class:`str` or None + :kwarg jsonrpc: json rpc request version (2.0) + :type version: :class:`str` or None + :kwarg version: json rpc request version (1.1) + :type method: :class:`str` + :kwarg method: json rpc method + :type params: :class:`dict` or :class:`list` or None + :kwarg params: json rpc method params + :type id: :class:`long` or :class:`int` or :class:`str` or None + :kwarg id: json rpc request id. Do not set for notification + + :rtype: :class:`JsonRpcRequest` + :return: json rpc request object + """ + jsonrpc_version = kwargs.get('jsonrpc') + if jsonrpc_version and jsonrpc_version == '2.0': + # json rpc 2.0 + request = JsonRpc20Request(**kwargs) + else: + jsonrpc_version = kwargs.get('version') + if jsonrpc_version and jsonrpc_version == '1.1': + # NYI: json rpc 1.1 + # request = JsonRpc11Request(kwargs) + request = None + else: + # NYI: json rpc 1.0 + # request = JsonRpc10Request(kwargs) + request = None + return request + +
+
[docs]def jsonrpc_response_factory(**kwargs): + """ + Json rpc response factory + For json 2.0: set jsonrpc to '2.0' + For json 1.1: set version to '1.1' + For json 1.0: set neither jsonrpc / version + The parameters accepted depends on json version + See corresponding json rpc response class for init parameters + + :type jsonrpc: :class:`str` or None + :kwarg jsonrpc: json rpc response version (2.0) + :type version: :class:`str` or None + :kwarg version: json rpc response version (1.1) + :type method: :class:`str` + :kwarg method: json rpc method + :type params: :class:`dict` or :class:`list` or None + :kwarg params: json rpc method params + :type id: :class:`long` or :class:`int` or :class:`str` + :kwarg id: json rpc response id + + :rtype: :class:`JsonRpcResponse` + :return: json rpc response object + """ + jsonrpc_version = kwargs.get('jsonrpc') + if jsonrpc_version and jsonrpc_version == '2.0': + # json rpc 2.0 + response = JsonRpc20Response(**kwargs) + else: + jsonrpc_version = kwargs.get('version') + if jsonrpc_version and jsonrpc_version == '1.1': + # NYI: json rpc 1.1 + # response = JsonRpc11Response(kwargs) + response = None + else: + # NYI: json rpc 1.0 + # response = JsonRpc10Response(kwargs) + response = None + return response + +
+
[docs]def vapi_jsonrpc_request_factory(**kwargs): + """ + Json rpc request factory + + :type method: :class:`str` + :kwarg method: json rpc method + :type params: :class:`dict` or :class:`list` or None + :kwarg params: json rpc method params + :type id: :class:`long` or :class:`int` or :class:`str` or None + :kwarg id: json rpc request id. Do not set for notification + + :rtype: :class:`JsonRpcRequest` + :return: json rpc request object + """ + jsonrpc_version = kwargs.get('jsonrpc', VAPI_JSONRPC_VERSION) + # vapi json rpc supports version 2.0 only + assert(jsonrpc_version == VAPI_JSONRPC_VERSION) + kwargs.setdefault('jsonrpc', jsonrpc_version) + return JsonRpc20Request(**kwargs) + +
+
[docs]def vapi_jsonrpc_notification_factory(**kwargs): + """ + vapi json rpc notification factory + + :type method: :class:`str` + :kwarg method: json rpc method + :type params: :class:`dict` or :class:`list` or None + :kwarg params: json rpc method params + + :rtype: :class:`JsonRpcRequest` + :return: json rpc request object + """ + kwargs.pop('id', None) + return vapi_jsonrpc_request_factory(**kwargs) + +
+
[docs]def vapi_jsonrpc_response_factory(request, **kwargs): + """ + vapi json rpc response factory + + :type request: :class:`JsonRpcRequest` + :kwarg request: json rpc request object + :type kwargs: :class:`dict` + :kwarg kwargs: See JsonRpc20Response for constructor parameters + :rtype: :class:`JsonRpcResponse` + :return: json rpc response object + """ + if request is not None and request.notification: + # Notification do not have response + logger.error('JSON RPC notificaition should not have id') + raise vapi_jsonrpc_error_invalid_params() + + jsonrpc_version = kwargs.get('jsonrpc', VAPI_JSONRPC_VERSION) + # vapi json rpc supports version 2.0 only + assert(jsonrpc_version == VAPI_JSONRPC_VERSION) + kwargs.setdefault('jsonrpc', jsonrpc_version) + kwargs.setdefault('id', None if request is None else request.id) + return JsonRpc20Response(**kwargs) + +
+
[docs]def to_strkey_dict(dictionary): + """ + Convert a unicode key dict into str key dict + + :type dictionary: :class:`dict` + :param dictionary: unicode dictionary + :rtype: :class:`dict` + :return: string key dict + """ + result = {} + for key, val in six.iteritems(dictionary): + result[str(key)] = val + return result + +
+
[docs]def deserialize_request(request_str): + """ + Deserialize a json rpc request + + :type request_str: :class:`str` or :class:`bytes:` or :class:`file` + :param request_str: json rpc request str or a file like object + :rtype: :class:`JsonRpcRequest` + :return: json rpc request + """ + # NYI: Vapi object directly from json string? Not easy with standard json + # deserializer + + try: + # In 2.x, we get str from underlying layer and in 3.x, + # we get bytes + if isinstance(request_str, six.string_types): + obj = json.loads(request_str, parse_float=decimal.Decimal) + elif isinstance(request_str, six.binary_type): + obj = json.loads(request_str.decode('utf-8'), + parse_float=decimal.Decimal) + else: + obj = json.load(request_str, parse_float=decimal.Decimal) + except ValueError as err: + logger.error('Deserialize request error %s', str(err)) + raise vapi_jsonrpc_error_parse_error(data=str(err)) + + try: + request = jsonrpc_request_factory(**to_strkey_dict(obj)) + except JsonRpcError as err: + raise + except Exception as err: + logger.error('Invalid request %s', str(err)) + raise vapi_jsonrpc_error_invalid_request(data=str(err)) + + if request is None: + logger.error('Invalid request') + raise vapi_jsonrpc_error_invalid_request() + return request + +
+
[docs]def deserialize_response(response_str): + """ + Deserialize a json rpc response + + :type response_str: :class:`str` or :class:`bytes` + :param response_str: json rpc response str + :rtype: :class:`JsonRpcResponse` + :return: json rpc response + """ + # NYI: Vapi object directly from json string? Not easy with standard json + # deserializer + + try: + # In 2.x, we get str from underlying layer and in 3.x, + # we get bytes + if isinstance(response_str, six.binary_type): + response_str = response_str.decode('utf-8') + obj = json.loads(response_str, parse_float=decimal.Decimal) + except ValueError as err: + logger.error('Deserialize response error %s', str(err)) + raise vapi_jsonrpc_error_parse_error(data=str(err)) + + try: + response = jsonrpc_response_factory(**to_strkey_dict(obj)) + except JsonRpcError as err: + raise + except Exception as err: + logger.error('Invalid response %s', str(err)) + raise vapi_jsonrpc_error_invalid_request(data=str(err)) + + if response is None: + logger.error('Invalid response') + raise vapi_jsonrpc_error_invalid_params() + return response
+
+ +
+
+
+
+
+ + +
+
+
+
+ + + + \ No newline at end of file diff --git a/vsphere/6.0/_modules/vmware/vapi/data/serializers/python.html b/vsphere/6.0/_modules/vmware/vapi/data/serializers/python.html new file mode 100644 index 00000000..4597ba13 --- /dev/null +++ b/vsphere/6.0/_modules/vmware/vapi/data/serializers/python.html @@ -0,0 +1,269 @@ + + + + + + + + + + vmware.vapi.data.serializers.python — vCloud Suite SDK for Python 6.0.0 documentation + + + + + + + + + + + + + + +
+
+
+
+ +

Source code for vmware.vapi.data.serializers.python

+"""
+Convenience methods to convert to/from python native values to data values
+"""
+
+__author__ = 'VMware, Inc.'
+__copyright__ = 'Copyright 2011-2014 VMware, Inc.  All rights reserved. -- VMware Confidential'
+
+import six
+
+from vmware.vapi.data.type import Type
+from vmware.vapi.data.value import OptionalValue
+from vmware.vapi.exception import CoreException
+from vmware.vapi.bindings.struct import VapiStruct
+from vmware.vapi.l10n.runtime import message_factory
+from vmware.vapi.lib.converter import Converter
+
+
+# Map from vAPI types to Python native types
+_py_type_map = {
+    Type.STRING: str,
+    Type.BOOLEAN: bool,
+    Type.DOUBLE: float,
+    Type.SECRET: str,
+}
+if six.PY2:
+    _py_type_map[Type.INTEGER] = long
+else:
+    _py_type_map[Type.INTEGER] = int
+
+
+
[docs]def build_data_value(py_value, data_def): + """ + Converts a native python value to data value + using the provided data definition + + :type py_value: :class:`object` + :param py_value: Python native value + :type data_def: :class:`vmware.vapi.data.definition.DataDefinition` + :param data_def: Data definition + :rtype: :class:`vmware.vapi.data.value.DataValue` + :return: Data value + """ + output_val = None + if data_def.type == Type.OPTIONAL: + output_val = data_def.new_value() + if py_value is not None: + output_val.value = build_data_value(py_value, + data_def.element_type) + elif data_def.type == Type.LIST: + output_val = data_def.new_value() + if py_value: + for output in py_value: + output_val.add(build_data_value(output, data_def.element_type)) + elif data_def.type in (Type.STRUCTURE, Type.ERROR): + output_val = data_def.new_value() + for field in data_def.get_field_names(): + field_def = data_def.get_field(field) + + if py_value is None: + if field_def.type == Type.OPTIONAL: + output_val.set_field(field, + OptionalValue(opt_def=field_def)) + else: + msg = message_factory.get_message('vapi.data.structure.field.missing', + data_def.name, field) + raise CoreException(msg) + else: + if isinstance(py_value, dict): + value = py_value.get(field) + # If VMOMI DataObject is the struct + elif hasattr(py_value, field): + value = getattr(py_value, field) + # If Class used in python bindings is the struct + elif isinstance(py_value, VapiStruct): + value = py_value.get_field(field) + else: + msg = message_factory.get_message('vapi.data.structure.field.invalid', + field) + raise CoreException(msg) + output_val.set_field(field, + build_data_value(value, + data_def.get_field(field))) + elif data_def.type == Type.VOID: + output_val = data_def.new_value() + elif data_def.type == Type.OPAQUE: + output_val = py_value + # Primitive type Integer/Double/String/Boolean/Secret + else: + output_val = data_def.new_value(py_value) + return output_val + +
+def _pepify_args(meth_args): + """ + Pepify the names of the method arguments + + :type meth_args: :class:`dict` + :param meth_args: Actual method arguments + :rtype: :class:`dict` + :return: Modified method arguments with pepified names + """ + new_args = {} + for k, v in six.iteritems(meth_args): + new_args[Converter.pepify(k)] = v + return new_args + + +def _build_py_value(data_value, data_def, impl=None): + """" + Converts a data value to python native value + impl input is required to create Struct class instances + + :type data_value: :class:`vmware.vapi.data.value.DataValue` + :param data_value: Input data value + :type data_def: :class:`vmware.vapi.data.definition.DataDefinition` + :param data_def: Data definition + :type impl: :class:`vmware.vapi.bindings.stub.VapiInterface` or + :class:`vmware.vapi.bindings.skeleton.VapiInterface` or ``None`` + :param impl: Python generated class to resolve structure classes + :rtype: :class:`object` + :return: Native python value + """ + if data_def.type == Type.OPTIONAL: + if data_value.is_set(): + element_def = data_def.element_type + element_value = data_value.value + py_value = _build_py_value(element_value, element_def, impl) + else: + py_value = None + elif data_def.type == Type.LIST: + py_value = [] + element_def = data_def.element_type + for element_value in data_value: + py_value.append(_build_py_value(element_value, element_def, impl)) + elif data_def.type in (Type.STRUCTURE, Type.ERROR): + struct_name = data_def.name + class_name = Converter.underscore_to_capwords(struct_name) + py_value = {} + for field in data_def.get_field_names(): + field_def = data_def.get_field(field) + field_val = data_value.get_field(field) + py_value[field] = _build_py_value(field_val, field_def, impl) + if impl and hasattr(impl, class_name): + kwargs = _pepify_args(py_value) + py_value = getattr(impl, class_name)(**kwargs) + elif data_def.type == Type.VOID: + py_value = None + # For opaque value, no need of any conversion + elif data_def.type == Type.OPAQUE: + py_value = data_value + # Primitive type Integer/Double/String/Boolean/Secret + else: + py_type = _py_type_map.get(data_def.type) + py_value = py_type(data_value.value) + return py_value + + +
[docs]def build_py_value(data_value, data_def=None, impl=None): + """" + Converts a data value to python native value + impl input is required to create Struct class instances + + :type data_value: :class:`vmware.vapi.data.value.DataValue` + :param data_value: Input data value + :type data_def: :class:`vmware.vapi.data.definition.DataDefinition` or ``None`` + :param data_def: Data definition + :type impl: :class:`vmware.vapi.bindings.stub.VapiInterface` or + :class:`vmware.vapi.bindings.skeleton.VapiInterface` or ``None`` + :param impl: Python generated class to resolve structure classes + :rtype: :class:`object` + :return: Native python value + """ + if data_def is None: + raise Exception('Data definition is required') + return _build_py_value(data_value, data_def, impl)
+
+ +
+
+
+
+
+ + +
+
+
+
+ + + + \ No newline at end of file diff --git a/vsphere/6.0/_modules/vmware/vapi/data/type.html b/vsphere/6.0/_modules/vmware/vapi/data/type.html new file mode 100644 index 00000000..522359d2 --- /dev/null +++ b/vsphere/6.0/_modules/vmware/vapi/data/type.html @@ -0,0 +1,123 @@ + + + + + + + + + + vmware.vapi.data.type — vCloud Suite SDK for Python 6.0.0 documentation + + + + + + + + + + + + + + +
+
+
+
+ +

Source code for vmware.vapi.data.type

+#!/usr/bin/env python
+
+"""
+List of Data types supported
+"""
+
+__author__ = 'VMware, Inc.'
+__copyright__ = 'Copyright 2011 VMware, Inc.  All rights reserved. -- VMware Confidential'
+
+
+
[docs]class Type(object): + """ + Enum of all the data types used in vAPI Runtime + """ + INTEGER = 'Integer' + DOUBLE = 'Double' + BOOLEAN = 'Boolean' + STRING = 'String' + BLOB = 'Blob' + LIST = 'List' + STRUCTURE = 'Structure' + OPTIONAL = 'Optional' + VOID = 'Void' + OPAQUE = 'Opaque' + SECRET = 'Secret' + ERROR = 'Error' + STRUCTURE_REF = 'StructureRef' + DYNAMIC_STRUCTURE = 'DynamicStructure' + ANY_ERROR = 'AnyError'
+
+ +
+
+
+
+
+ + +
+
+
+
+ + + + \ No newline at end of file diff --git a/vsphere/6.0/_modules/vmware/vapi/data/validator.html b/vsphere/6.0/_modules/vmware/vapi/data/validator.html new file mode 100644 index 00000000..ab3c7630 --- /dev/null +++ b/vsphere/6.0/_modules/vmware/vapi/data/validator.html @@ -0,0 +1,294 @@ + + + + + + + + + + vmware.vapi.data.validator — vCloud Suite SDK for Python 6.0.0 documentation + + + + + + + + + + + + + + +
+
+
+
+ +

Source code for vmware.vapi.data.validator

+"""
+Data Validator classes
+"""
+
+__author__ = 'VMware, Inc.'
+__copyright__ = 'Copyright 2012-2014 VMware, Inc.  All rights reserved. -- VMware Confidential'
+
+import logging
+import itertools
+import six
+
+from vmware.vapi.data.value import StringValue, OptionalValue, StructValue, ListValue
+from vmware.vapi.bindings.type import DynamicStructType, ReferenceType, StructType, ListType, SetType, OptionalType
+from vmware.vapi.l10n.runtime import message_factory
+
+logger = logging.getLogger(__name__)
+
+
+
[docs]class Validator(object): # pylint: disable=R0922 + """ + vAPI Data object validator class + This is an abstract class. + """ +
[docs] def validate(self, data_value, data_type=None): + """ + This method validates a data value + + :type data_value :class:`vmware.vapi.data.value.DataValue` + :param data_value The struct value that needs to be validated + :type data_type :class:`vmware.vapi.binding.type.BindingType` + :param data_type The Struct binding type + :rtype: :class:`list` of :class:`vmware.vapi.message.Message` or ``None`` + :return List of error messages if validation fails or None + """ + raise NotImplementedError + +
+
[docs]class UnionValidator(Validator): + """ + Union Validator class that validates a struct value for union consistency + """ + def __init__(self, discriminant_name, case_map): + """ + Initialize the union validator class + + :type discriminant_name :class:`str` + :param discriminant_name Name of a structure field that represents a + union discriminant + :type case_map :class:`dict` + :param case_map Python dict with string value of the discriminant as + dictionary key and list of tuple of structure field + associated with it and a boolean representing whether + it is rqeuired as dictionary value + """ + self._discriminant_name = discriminant_name + self._case_map = case_map + Validator.__init__(self) + +
[docs] def validate(self, data_value, data_type=None): + """ + Validates a struct value for union consistency + + :type data_value :class:`vmware.vapi.data.value.DataValue` + :param data_value The struct value that needs to be validated + :type data_type :class:`vmware.vapi.binding.type.BindingType` + :param data_type The Struct binding type + :rtype: :class:`list` of :class:`vmware.vapi.message.Message` or ``None`` + :return List of error messages if validation fails or None + """ + assert(isinstance(data_value, StructValue)) + discriminant = None + if data_value.has_field(self._discriminant_name): + # Checking if discriminant is present + discriminant = data_value.get_field(self._discriminant_name) + if isinstance(discriminant, OptionalValue): + discriminant = discriminant.value + case = None + if discriminant: + # Discriminant is present. Find the associated case value + assert(isinstance(discriminant, StringValue)) + for case_ in six.iterkeys(self._case_map): + if discriminant == StringValue(case_): + case = case_ + break + if case: + # Since case is valid, verify fields requried for this case are + # present + for field_name, required in self._case_map[case]: + missing = False + if data_value.has_field(field_name): + field = data_value.get_field(field_name) + assert(isinstance(field, OptionalValue)) + if required and field.value is None: + #Validation failed + missing = True + else: + #Validation failed + missing = True + if missing: + msg = message_factory.get_message( + 'vapi.data.structure.union.missing', + data_value.name, field_name) + logger.debug(msg) + return [msg] + all_case_fields = set(itertools.chain(*six.itervalues(self._case_map))) + allowed_case_field_names = [] + if case: + allowed_case_field_names = [f for f, _ in self._case_map[case]] + prohibited_case_field_names = [f for f, _ in all_case_fields + if f not in allowed_case_field_names] + + # Verify that remaining fields are not present + for field_name in prohibited_case_field_names: + if data_value.has_field(field_name): + field = data_value.get_field(field_name) + assert(isinstance(field, OptionalValue)) + if field.value is not None: + #Validation failed + msg = message_factory.get_message( + 'vapi.data.structure.union.extra', + data_value.name, field_name) + logger.debug(msg) + return [msg] + +
+
[docs]class HasFieldsOfValidator(Validator): + """ + HasFieldsOfValidator validator class that validates the data_value has reuired fields of the class specified + """ + + def __init__(self): + Validator.__init__(self) + +
[docs] def validate(self, data_value, data_type=None): + """ + Validates a struct value for union consistency + + :type data_value :class:`vmware.vapi.data.value.DataValue` + :param data_value The struct value that needs to be validated + :type data_type :class:`vmware.vapi.binding.type.BindingType` + :param data_type The Struct binding type + :rtype: :class:`list` of :class:`vmware.vapi.message.Message` or ``None`` + :return List of error messages if validation fails or None + """ + assert(data_type is not None) + return self._validate_int(data_value, data_type) +
+ @classmethod + def _validate_int(cls, data_value, data_type): + """ + Validates a data value recursively. This is an internal method. + + :type data_value :class:`vmware.vapi.data.value.DataValue` + :param data_value The struct value that needs to be validated + :type data_type :class:`vmware.vapi.binding.type.BindingType` + :param data_type The Struct binding type + :rtype: :class:`list` of :class:`vmware.vapi.message.Message` or ``None`` + :return List of error messages if validation fails or None + """ + if isinstance(data_type, DynamicStructType): + if data_type.has_fields_of_type: + for type_ in data_type.has_fields_of_type: + assert(isinstance(type_, ReferenceType)) + resolved_type = type_.resolved_type + for field_name in resolved_type.get_field_names(): + if not data_value.has_field(field_name): + msg = message_factory.get_message( + 'vapi.data.structure.dynamic.missing', + field_name, resolved_type.name) + logger.debug(msg) + return [msg] + field_type = resolved_type.get_field(field_name) + field_value = data_value.get_field(field_name) + msg_list = field_type.definition.validate(field_value) + if msg_list: + logger.debug(msg_list) + return [msg_list] + #Recursive validation + return cls._validate_int(field_value, field_type) + elif isinstance(data_type, ReferenceType): + return cls._validate_int(data_value, data_type.resolved_type) + elif isinstance(data_type, ListType) or isinstance(data_type, SetType): + assert(isinstance(data_value, ListValue)) + for val in data_value: + msg_list = cls._validate_int(val, data_type.element_type) + if msg_list: + return msg_list + elif isinstance(data_type, OptionalType): + if data_value.is_set(): + msg_list = cls._validate_int(data_value.value, data_type.element_type) + if msg_list: + return msg_list + elif isinstance(data_type, StructType): + for field_name in data_type.get_field_names(): + assert(data_value.has_field(field_name)) + field_type = data_type.get_field(field_name) + field_value = data_value.get_field(field_name) + msg_list = cls._validate_int(field_value, field_type) + if msg_list: + return msg_list
+
+ +
+
+
+
+
+ + +
+
+
+
+ + + + \ No newline at end of file diff --git a/vsphere/6.0/_modules/vmware/vapi/data/value.html b/vsphere/6.0/_modules/vmware/vapi/data/value.html new file mode 100644 index 00000000..f8f71a8c --- /dev/null +++ b/vsphere/6.0/_modules/vmware/vapi/data/value.html @@ -0,0 +1,785 @@ + + + + + + + + + + vmware.vapi.data.value — vCloud Suite SDK for Python 6.0.0 documentation + + + + + + + + + + + + + + +
+
+
+
+ +

Source code for vmware.vapi.data.value

+"""
+vAPI DataValues
+"""
+
+__author__ = 'VMware, Inc.'
+__copyright__ = 'Copyright 2011-2014 VMware, Inc.  All rights reserved. -- VMware Confidential'
+
+import logging
+import math
+import six
+from decimal import Decimal
+
+from vmware.vapi.exception import CoreException
+from vmware.vapi.data.type import Type
+from vmware.vapi.lib.visitor import VapiVisitor
+from vmware.vapi.l10n.runtime import message_factory
+
+logger = logging.getLogger(__name__)
+
+
+
[docs]class DataValue(object): + """ + A piece of introspectable value in vAPI infrastructure + + :type type: :class:`vmware.vapi.data.type.Type` + :ivar type: Type of DataValue + """ + def __init__(self, data_type=None): + """ + Initialize DataValue + + :type data_type: :class:`vmware.vapi.data.type.Type` + :param data_type: Type of DataValue + """ + self.type = data_type + +
[docs] def accept(self, visitor): + """ + Applies a visitor to this DataValue + + :type visitor: :class:`SimpleValueVisitor` + :param visitor: visitor operating on this DataValue + """ + visitor.visit(self) + +
+
[docs]class PrimitiveDataValue(DataValue): + """ + Base class for all primitive DataValues + + :type value: :class:`object` + :ivar value: Primitive value + """ + def __init__(self, *args, **kwargs): + DataValue.__init__(self, *args, **kwargs) + self.value = None + + def __repr__(self): + return '%s(value=%s)' % (self.__class__.__name__, + repr(self.value)) + +
+
[docs]class ComparableValueMixin(object): + """ + Helper class to implement the rich comparator operations. + """ + def __eq__(self, other): + if isinstance(other, self.__class__): + return self.value == other.value + else: + return NotImplemented + + def __ne__(self, other): + if isinstance(other, self.__class__): + return self.value != other.value + else: + return NotImplemented + + def __lt__(self, other): + if isinstance(other, self.__class__): + return self.value < other.value + else: + return NotImplemented + + def __gt__(self, other): + if isinstance(other, self.__class__): + return self.value > other.value + else: + return NotImplemented + + def __le__(self, other): + if isinstance(other, self.__class__): + return self.value <= other.value + else: + return NotImplemented + + def __ge__(self, other): + if isinstance(other, self.__class__): + return self.value >= other.value + else: + return NotImplemented + + def __hash__(self): + return hash(self.value) + +
+
[docs]class IntegerValue(PrimitiveDataValue, ComparableValueMixin): + """ + DataValue class for integer values + + :type value: :class:`int` + :ivar value: 64 bit signed int present in IntegerValue + """ + def __init__(self, value=0): + """ + Initialize IntegerValue + + :type value: :class:`int` + :kwarg value: Integer value to be initialized + """ + PrimitiveDataValue.__init__(self, Type.INTEGER) + ComparableValueMixin.__init__(self) + if not isinstance(value, six.integer_types): + msg = message_factory.get_message("vapi.data.invalid", + self.type, + type(value).__name__) + logger.debug(msg) + raise CoreException(msg) + self.value = value + +
+
[docs]class DoubleValue(PrimitiveDataValue, ComparableValueMixin): + """ + DataValue class for float values + + :type value: :class:`float` or :class:`decimal.Decimal` + :ivar value: 64 bit signed float present in DoubleValue + """ + def __init__(self, value=0.0): + """ + Initialize DoubleValue + + :type value: :class:`float` or :class:`decimal.Decimal` + :kwarg value: Float or decimal.Decimal value to be initialized + """ + PrimitiveDataValue.__init__(self, Type.DOUBLE) + ComparableValueMixin.__init__(self) + if not isinstance(value, float) and not isinstance(value, Decimal): + msg = message_factory.get_message('vapi.data.invalid', + self.type, + type(value).__name__) + logger.debug(msg) + raise CoreException(msg) + # Accept floats, but store as decimal + if isinstance(value, float): + value = Decimal(str(value)) + if isinstance(value, Decimal): + if math.isinf(float(value)): + msg = message_factory.get_message('vapi.data.invalid.double.inf', + value) + logger.debug(msg) + raise CoreException(msg) + self.value = value + +
+
[docs]class StringValue(PrimitiveDataValue, ComparableValueMixin): + """ + DataValue class for strings + + :type value: :class:`str` + :ivar value: String present in StringValue + """ + def __init__(self, value=""): + """ + Initialize StringValue + + :type value: :class:`str` + :kwarg value: String value to be initialized + """ + PrimitiveDataValue.__init__(self, Type.STRING) + ComparableValueMixin.__init__(self) + if not isinstance(value, six.string_types): + msg = message_factory.get_message("vapi.data.invalid", + self.type, + type(value).__name__) + logger.debug(msg) + raise CoreException(msg) + self.value = value + +
+
[docs]class BooleanValue(PrimitiveDataValue, ComparableValueMixin): + """ + DataValue class for bool values + + :type value: :class:`bool` + :ivar value: Bool present in BooleanValue + """ + def __init__(self, value=False): + """ + Initialize BooleanValue + + :type value: :class:`bool` + :kwarg value: Bool value to be initialized + """ + PrimitiveDataValue.__init__(self, Type.BOOLEAN) + ComparableValueMixin.__init__(self) + if not isinstance(value, bool): + msg = message_factory.get_message("vapi.data.invalid", + self.type, + type(value).__name__) + logger.debug(msg) + raise CoreException(msg) + self.value = value + +
+
[docs]class BlobValue(PrimitiveDataValue, ComparableValueMixin): + """ + DataValue class for binary values + + :type value: :class:`bytes` + :ivar value: Binary present in BlobValue + """ + def __init__(self, value=""): + """ + Initialize BooleanValue + + :type value: :class:`bytes` + :kwarg value: Binary value to be initialized + """ + PrimitiveDataValue.__init__(self, Type.BLOB) + ComparableValueMixin.__init__(self) + self.value = value + +
+
[docs]class VoidValue(PrimitiveDataValue): + """ + DataValue class for None + """ + def __init__(self): + """ + Initialize VoidValue + """ + PrimitiveDataValue.__init__(self, Type.VOID) + + def __eq__(self, other): + if isinstance(other, VoidValue): + return True + else: + return False + + def __ne__(self, other): + return not (self == other) + + def __hash__(self): + return hash(None) + + def __repr__(self): + return 'VoidValue()' + + +# Disabling the pylint complaint about badly implemented container +# as we don't need __setitem__, __delitem__ and __getitem__
+
[docs]class ListValue(DataValue): # pylint: disable=R0924 + """ + DataValue class for lists + """ + def __init__(self, values=None): + """ + Initialize ListValue + """ + DataValue.__init__(self, Type.LIST) + if values is not None and not isinstance(values, list): + msg = message_factory.get_message("vapi.data.invalid", + self.type, + type(values).__name__) + logger.debug(msg) + raise CoreException(msg) + self._list_val = values if values is not None else [] + +
[docs] def add(self, value): + """ + Add an element to ListValue + + :type value: :class:`DataValue` + :param value: DataValue to be added + """ + self._list_val.append(value) +
+
[docs] def add_all(self, values): + """ + Add all the elements from input list to ListValue + + :type values: :class:`list` of :class:`DataValue` + :param values: List of DataValues to be added + """ + for value in values: + self.add(value) +
+
[docs] def is_empty(self): + """ + Returns true if the list is empty + + :rtype: :class:`bool` + :return: True if the list is empty, false otherwise + """ + return not self._list_val +
+
[docs] def size(self): + """ + Returns the size of the list + + :rtype: :class:`int` + :return: Size of the list value + """ + return len(self._list_val) +
+ def __eq__(self, other): + if not isinstance(other, ListValue): + return False + + if self.size() != other.size(): + return False + + for self_item, other_item in zip(self, other): + if self_item != other_item: + return False + + return True + + def __ne__(self, other): + return not (self == other) + + def __iter__(self): + return self._list_val.__iter__() + + def __len__(self): + return len(self._list_val) + + def __repr__(self): + ret = ', '.join([repr(val) for val in self._list_val]) + return 'ListValue(values=[%s])' % ret + +
+
[docs]class OptionalValue(DataValue, ComparableValueMixin): + """ + DataValue class for optionals + + :type value: :class:`DataValue` + :ivar value: DataValue present in this OptionalValue + """ + def __init__(self, value=None): + """ + Initialize OptionalValue + + :type value: :class:`DataValue` + :kwarg value: DataValue to be used in OptionalValue + """ + DataValue.__init__(self, Type.OPTIONAL) + ComparableValueMixin.__init__(self) + self.value = value + +
[docs] def is_set(self): + """ + Returns true if OptionalValue has a DataValue present in it + + :rtype: :class:`bool` + :return: Returns true if OptionalValue is initialized with some + DataValue, false otherwise + """ + return self.value is not None +
+ def __repr__(self): + return 'OptionalValue(%s)' % repr(self.value) + +
+
[docs]class StructValue(DataValue): + """ + DataValue class for Structures + + :type name: :class:`str` + :ivar name: Name of the structure + """ + def __init__(self, name=None, data_type=Type.STRUCTURE, values=None): + """ + Initialize StructValue + + :type name: :class:`str` + :kwarg name: Name of the StructValue + """ + DataValue.__init__(self, data_type) + self.name = name + if values is not None and not isinstance(values, dict): + msg = message_factory.get_message("vapi.data.invalid", + self.type, + type(values).__name__) + logger.debug(msg) + raise CoreException(msg) + self._fields = values if values is not None else {} + +
[docs] def get_fields(self): + """ + Returns the map of field names and values present in this + StructValue. + + :rtype: :class:`dict` of :class:`str` and :class:`DataValue` + :return: Fields in this struct value + """ + return six.iteritems(self._fields) +
+
[docs] def get_field_names(self): + """ + Returns the list of field names present in this StructValue. + The ordering of fields is not preserved. + + :rtype: :class:`list` of :class:`str` + :return: List of field names present in this StructValue + """ + return list(self._fields.keys()) +
+
[docs] def has_field(self, field): + """ + Returns true if the field is present in the StructValue, false otherwise + + :type field: :class:`str` + :param field: Name of the field + :rtype: :class:`bool` + :return: Returns true if the field is present in the StructValue, + false otherwise + """ + return field in self._fields +
+
[docs] def get_field(self, field): + """ + Returns the field value of the field present in the StructValue + + :type field: :class:`str` + :param field: Name of the field + :rtype: :class:`DataValue` + :return: Returns the field value of the field present in the StructValue + """ + value = self._fields.get(field) + if value is None: + msg = message_factory.get_message( + "vapi.data.structure.getfield.unknown", + field) + logger.debug(msg) + raise CoreException(msg) + return value +
+
[docs] def set_field(self, field, value): + """ + Set the field value for the field name passed in the argument + + :type field: :class:`str` + :param field: Name of the field + :type field: :class:`str` + :param field: Name of the field to be set + :type value: :class:`DataValue` + :param value: DataValue to be used for the field + """ + if value is None: + msg = message_factory.get_message( + "vapi.data.structure.setfield.null", + field) + logger.debug(msg) + raise CoreException(msg) + + self._fields[field] = value +
+ def __eq__(self, other): + if not isinstance(other, StructValue): + return False + + if self.name != other.name: + return False + + if sorted(self.get_field_names()) != sorted(other.get_field_names()): + return False + + for key, value in six.iteritems(self._fields): + if value != other.get_field(key): + return False + return True + + def __ne__(self, other): + return not (self == other) + + def __repr__(self): + return "StructValue(name=%s, values=%s)" % (repr(self.name), + repr(self._fields)) + +
[docs] def keys(self): + """ + Returns the list of field names + + :rtype: :class:`list` or :class:`str` + :return: List of field names + """ + return six.iterkeys(self._fields) + +
+
[docs]class ErrorValue(StructValue): + """ + DataValue class for Errors + """ + + def __init__(self, name=None, values=None): + """ + Initialize ErrorValue + + :type name: :class:`str` + :kwarg name: Name of the ErrorValue + """ + StructValue.__init__(self, name, Type.ERROR, values) + + def __eq__(self, other): + if not isinstance(other, ErrorValue): + return False + return StructValue.__eq__(self, other) + + def __ne__(self, other): + return not (self == other) + +
+
[docs]class SecretValue(PrimitiveDataValue, ComparableValueMixin): + """ + DataValue class for secret values. Only strings are allowed to be + secrets. + + :type value: :class:`str` + :ivar value: String present in SecretValue + """ + def __init__(self, value=""): + """ + Initialize StringValue + + :type value: :class:`str` + :kwarg value: String value to be initialized + """ + PrimitiveDataValue.__init__(self, Type.SECRET) + ComparableValueMixin.__init__(self) + if not isinstance(value, six.string_types): + msg = message_factory.get_message("vapi.data.invalid", + self.type, + type(value).__name__) + raise CoreException(msg) + self.value = value + + def __repr__(self): + return 'SecretValue(<secret>)' + + def __str__(self): + return '<secret>' + +
+
[docs]class SimpleValueVisitor(VapiVisitor): + """ + Base no-op implementation of a DataValue visitor + """ + def __init__(self): + """ + Initialize SimpleValueVisitor + """ + VapiVisitor.__init__(self, 'Value') + +
[docs] def visit_void(self, value): + """ + Visit a VoidValue + + :type value: :class:`VoidValue` + :param value: Data value + """ + pass +
+
[docs] def visit_integer(self, value): + """ + Visit a IntegerValue + + :type value: :class:`IntegerValue` + :param value: Data value + """ + pass +
+
[docs] def visit_double(self, value): + """ + Visit a DoubleValue + + :type value: :class:`DoubleValue` + :param value: Data value + """ + pass +
+
[docs] def visit_string(self, value): + """ + Visit a StringValue + + :type value: :class:`StringValue` + :param value: Data value + """ + pass +
+
[docs] def visit_boolean(self, value): + """ + Visit a BooleanValue + + :type value: :class:`BooleanValue` + :param value: Data value + """ + pass +
+
[docs] def visit_blob(self, value): + """ + Visit a BlobValue + + :type value: :class:`BlobValue` + :param value: Data value + """ + pass +
+
[docs] def visit_list(self, value): + """ + Visit a ListValue + + :type value: :class:`ListValue` + :param value: Data value + """ + pass +
+
[docs] def visit_optional(self, value): + """ + Visit a OptionalValue + + :type value: :class:`OptionalValue` + :param value: Data value + """ + pass +
+
[docs] def visit_struct(self, value): + """ + Visit a StructValue + + :type value: :class:`StructValue` + :param value: Data value + """ + pass +
+
[docs] def visit_error(self, value): + """ + Visit an ErrorValue + + :type value: :class:`ErrorValue` + :param value: Data value + """ + pass +
+
[docs] def visit_secret(self, value): + """ + Visit a SecretValue + + :type value: :class:`SecretValue` + :param value: Data value + """ + pass + + +# vapi type name to vapi type value map
+type_map = { + Type.VOID: VoidValue, + Type.INTEGER: IntegerValue, + Type.DOUBLE: DoubleValue, + Type.STRING: StringValue, + Type.BOOLEAN: BooleanValue, + Type.LIST: ListValue, + Type.STRUCTURE: StructValue, + Type.ERROR: ErrorValue, + Type.OPTIONAL: OptionalValue, + Type.BLOB: BlobValue, + Type.SECRET: SecretValue, +} + + +
[docs]def data_value_factory(data_type, *args): + """ + Convenience method to create datavalues + + :type data_type: :class:`str` + :param data_type: String representation of the data value type + :param args: The argument list to be passed to the data value constructor + """ + constructor = type_map.get(data_type) + return constructor(*args)
+
+ +
+
+
+
+
+ + +
+
+
+
+ + + + \ No newline at end of file diff --git a/vsphere/6.0/_modules/vmware/vapi/debug/livedump.html b/vsphere/6.0/_modules/vmware/vapi/debug/livedump.html new file mode 100644 index 00000000..1ca52765 --- /dev/null +++ b/vsphere/6.0/_modules/vmware/vapi/debug/livedump.html @@ -0,0 +1,135 @@ + + + + + + + + + + vmware.vapi.debug.livedump — vCloud Suite SDK for Python 6.0.0 documentation + + + + + + + + + + + + + + +
+
+
+
+ +

Source code for vmware.vapi.debug.livedump

+"""
+Copyright 2012-2014 VMware, Inc.  All rights reserved. -- VMware Confidential
+"""
+__author__ = 'VMware, Inc'
+
+import signal
+import sys
+import six
+import traceback
+import logging
+
+logger = logging.getLogger(__name__)
+
+
+
[docs]def signal_USR1_handler(signal_number, stack_frame): # pylint: disable=W0613 + """ + USR1 signal handler + + :type signal_number: :class:`int` + :param signal_number: signal number + :type stack_frame: frame object. See ``inspect`` + :param stack_frame: frame object + """ + logger.error('---------------------- Begin dumping stack ----------------------') + for tid, frame in six.iteritems(sys._current_frames()): # pylint: disable=W0212 + logger.error('Thread id: %s\n%s', + str(tid), + ''.join(traceback.format_stack(frame))) + logger.error('---------------------- End dumping stack ----------------------') + +# Install signal handlers
+signal_handlers_map = {} +if hasattr(signal, 'SIGUSR1'): + signal_handlers_map[signal.SIGUSR1] = signal_USR1_handler + +# Note: signal.signal() can only be called from main thread +for signal_num, handler in six.iteritems(signal_handlers_map): + prev_handler = signal.signal(signal_num, handler) + +# Only install signal handlers once +signal_handlers_map = {} +
+ +
+
+
+
+
+ + +
+
+
+
+ + + + \ No newline at end of file diff --git a/vsphere/6.0/_modules/vmware/vapi/exception.html b/vsphere/6.0/_modules/vmware/vapi/exception.html new file mode 100644 index 00000000..85824fe2 --- /dev/null +++ b/vsphere/6.0/_modules/vmware/vapi/exception.html @@ -0,0 +1,173 @@ + + + + + + + + + + vmware.vapi.exception — vCloud Suite SDK for Python 6.0.0 documentation + + + + + + + + + + + + + + +
+
+
+
+ +

Source code for vmware.vapi.exception

+#!/usr/bin/env python
+
+"""
+vAPI CoreException Class
+"""
+
+__author__ = 'VMware, Inc.'
+__copyright__ = 'Copyright 2011-2012 VMware, Inc.  All rights reserved. -- VMware Confidential'
+
+
+# The plan is to rename this to VapiException once the original VapiException
+# (above) is eliminated.
+
[docs]class CoreException(Exception): + """ + This exception is raised by various components of the vAPI runtime + infrastructure to indicate failures in that infrastructure. + + Server-side the exception is caught by specific components and an + internal_server_error is reported to the client that invoked the + request. Client-side the exception may be raised for certain failures + before a request was sent to the server or after the response was + received from the server. Similarly, server-side the exception may + be raised for failures that occur when a provider implementation + invokes the vAPI runtime. + + This exception is not part of the vAPI message protocol, and it must + never be raised by provider implementations. + + :type messages: generator of :class:`vmware.vapi.message.Message` + :ivar messages: Generator of error messages describing why the Exception + was raised + """ + + def __init__(self, message, cause=None): + """ + Initialize CoreException + + :type message: :class:`vmware.vapi.message.Message` + :param message: Description regarding why the Exception was raised + :type cause: :class:`Exception` + :type cause: Exception that led to this Exception + """ + Exception.__init__(self, str(message)) + self._message = message + self._cause = cause + + @property +
[docs] def messages(self): + """ + :rtype: generator of :class:`vmware.vapi.message.Message` + :return: Generator of error messages describing why the Exception + was raised + """ + e = self + while e: + try: + yield e._message # pylint: disable=W0212 + e = e._cause # pylint: disable=W0212 + except AttributeError: + e = None + + # This method is primarily for use in tests
+ def __eq__(self, other): + return (isinstance(other, CoreException) and + (list(self.messages) == list(other.messages))) + + def __ne__(self, other): + return not (self == other) + + def __str__(self): + result = Exception.__str__(self) + if self._cause is not None: + cause_class = self._cause.__class__ + cause_class_name = '%s.%s' % (cause_class.__module__, + cause_class.__name__) + result = '%s, \n\tCaused by: %s: %s' % (result, + cause_class_name, + str(self._cause)) + return result
+
+ +
+
+
+
+
+ + +
+
+
+
+ + + + \ No newline at end of file diff --git a/vsphere/6.0/_modules/vmware/vapi/l10n/bindings.html b/vsphere/6.0/_modules/vmware/vapi/l10n/bindings.html new file mode 100644 index 00000000..6e72f238 --- /dev/null +++ b/vsphere/6.0/_modules/vmware/vapi/l10n/bindings.html @@ -0,0 +1,139 @@ + + + + + + + + + + vmware.vapi.l10n.bindings — vCloud Suite SDK for Python 6.0.0 documentation + + + + + + + + + + + + + + +
+
+
+
+ +

Source code for vmware.vapi.l10n.bindings

+"""
+Helper classes for internationalization of the messages for static bindings
+"""
+
+__author__ = 'VMware, Inc.'
+__copyright__ = 'Copyright 2013-2014 VMware, Inc.  All rights reserved. -- VMware Confidential'
+
+import decimal
+import logging
+import six
+from datetime import datetime
+
+from vmware.vapi.bindings.datetime_helper import DateTimeConverter
+
+
+logger = logging.getLogger(__name__)
+
+
+
[docs]class MessageArgumentConverter(object): + """ + Utility class for converting localizable message arguments to strings + """ + @staticmethod +
[docs] def to_string(args): + """ + Convert argument list to string argument list + + :type args: :class:`list` of :class:`object` + :param args: List of arguments + :rtype: :class:`list` of :class:`str` + :return: List of string arguments + """ + result = [] + for arg in args: + if isinstance(arg, datetime): + result.append( + DateTimeConverter.convert_from_datetime(arg)) + elif (isinstance(arg, six.string_types) or + isinstance(arg, six.integer_types) or + isinstance(arg, decimal.Decimal)): + result.append(str(arg)) + else: + raise TypeError('Unsupported type for message argument: %s', + type(arg).__name__) + return result
+
+ +
+
+
+
+
+ + +
+
+
+
+ + + + \ No newline at end of file diff --git a/vsphere/6.0/_modules/vmware/vapi/l10n/bundle.html b/vsphere/6.0/_modules/vmware/vapi/l10n/bundle.html new file mode 100644 index 00000000..84cbc952 --- /dev/null +++ b/vsphere/6.0/_modules/vmware/vapi/l10n/bundle.html @@ -0,0 +1,202 @@ + + + + + + + + + + vmware.vapi.l10n.bundle — vCloud Suite SDK for Python 6.0.0 documentation + + + + + + + + + + + + + + +
+
+
+
+ +

Source code for vmware.vapi.l10n.bundle

+"""
+Helper classes for creation of resource bundles
+"""
+
+__author__ = 'VMware, Inc.'
+__copyright__ = 'Copyright 2013-2014 VMware, Inc.  All rights reserved. -- VMware Confidential'
+
+import six
+
+from vmware.vapi.message import MessageBundle
+
+
+def _parse_message_data_sets(data_sets):
+    """
+    Parse the message data sets and extract the messages
+
+    :type  data_sets: :class:`list` of :class:`str`
+    :param data_sets: Resource bundle string extracted from the egg file
+    :rtype: :class:`dict` of :class:`str`, :class:`str`
+    :return: Dictionary of messages
+    """
+    result = {}
+    for data_set in data_sets:
+        messages = data_set.splitlines()
+        for message in messages:
+            if isinstance(message, six.binary_type):
+                message = message.decode('utf-8')
+            message = message.strip()
+            if not message.startswith('#') and '=' in message:
+                key, value = message.split('=', 1)
+                key = key.strip()
+                # To use '=' in the value, it has to be escaped
+                value = value.strip().replace('\=', '=')
+                if not key:
+                    raise ValueError('Key not present for value %s', value)
+                if not value:
+                    raise ValueError('Value not present for key %s', value)
+                result[key] = value
+    return result
+
+
+
[docs]class PropertiesResourceBundle(MessageBundle): + """ + Class for creating resource bundles using property files in the + distributable. i.e. egg or zip file. + """ + def __init__(self, property_files): + """ + Initialize PropertiesResourceBundle + + :type property_files: :class:`list` of :class:`tuple` or :class:`tuple` + :param property_files: List of property files to be processed. The tuple + should be of the form (package, resource_name). For ex: If a file named + runtime.properties is present in vmware.vapi package, the tuple to be + passed is ('vmware.vapi', 'runtime.properties') + """ + # Importing here so that there is no dependency on pkg_resources + # for modules that use other kind of MessageBundle classes + from pkg_resources import resource_string + if not isinstance(property_files, list): + property_files = [property_files] + bundles = [resource_string(path, filename) + for path, filename in property_files] + messages = _parse_message_data_sets(bundles) + MessageBundle.__init__(self, messages) + +
+
[docs]class FileMessageBundle(MessageBundle): + """ + Class for creating resource bundles using list of files + that contain messages + """ + def __init__(self, message_files): + """ + Initialize FileMessageBundle + + :type message_files: :class:`list` of :class:`str` or :class:`str` + :param message_files: List of message files to be processed. Each + element in the list should be a fully qualified file path. + """ + if not isinstance(message_files, list): + message_files = [message_files] + bundles = [] + for message_file in message_files: + if six.PY2: + with open(message_file, 'r') as fp: + bundles.append(fp.read()) + else: + with open(message_file, 'r', encoding='utf-8') as fp: + bundles.append(fp.read()) + messages = _parse_message_data_sets(bundles) + MessageBundle.__init__(self, messages) + +
+
[docs]class DictionaryResourceBundle(MessageBundle): + """ + Class for creating resource bundles using dictionary of messages + """ + def __init__(self, msgs): + """ + Initialize DictionaryResourceBundle + + :type msgs: :class:`dict` + :param msgs: Message bundle + """ + if not isinstance(msgs, dict): + raise TypeError('Messages should be a dictionary') + MessageBundle.__init__(self, msgs)
+
+ +
+
+
+
+
+ + +
+
+
+
+ + + + \ No newline at end of file diff --git a/vsphere/6.0/_modules/vmware/vapi/l10n/formatter.html b/vsphere/6.0/_modules/vmware/vapi/l10n/formatter.html new file mode 100644 index 00000000..76e5b434 --- /dev/null +++ b/vsphere/6.0/_modules/vmware/vapi/l10n/formatter.html @@ -0,0 +1,249 @@ + + + + + + + + + + vmware.vapi.l10n.formatter — vCloud Suite SDK for Python 6.0.0 documentation + + + + + + + + + + + + + + +
+
+
+
+ +

Source code for vmware.vapi.l10n.formatter

+"""
+Helper classes for formatting the message for localization
+"""
+
+__author__ = 'VMware, Inc.'
+__copyright__ = 'Copyright 2013-2014 VMware, Inc.  All rights reserved. -- VMware Confidential'
+
+import locale
+import re
+import six
+from datetime import datetime
+
+from vmware.vapi.message import MessageFormatter
+
+
+
[docs]class StringFormatter(MessageFormatter): + """ + Format the string + """ + # This regex is used to split the message template into tokens + # Same as the below, but all the groups are matching but non-capturing + string_template = re.compile( + '(%(?:\\d+\\$)?(?:[-#+ 0,(\\<]*)(?:\\d+)?(?:\\.\\d+)?(?:[tT])?(?:[a-zA-Z%]))' + ) + + # This is used to split a format specifier into groups + # %[argument_index$][flags][width][.precision][t]conversion + format_specifier = re.compile( + '%(\\d+\\$)?([-#+ 0,(\\<]*)(\\d+)?(\\.\\d+)?([tT])?([a-zA-Z%])') + + @classmethod + def _localize_datetime(cls, datetime_arg): + """ + Localize a datetime object + + :type datetime_arg: :class:`datetime.datetime` + :param datetime_arg: Datetime object + :rtype: :class:`str` + :return: Localized datetime string + """ + # Importing DateTimeConverter here to avoid circular dependency + from vmware.vapi.bindings.datetime_helper import DateTimeConverter + if isinstance(datetime_arg, six.string_types): + datetime_arg = DateTimeConverter.convert_to_datetime(datetime_arg) + if not isinstance(datetime_arg, datetime): + raise TypeError('Argument is not a datetime') + # XXX: strftime does not handle dates before 1900 + return datetime_arg.strftime(locale.nl_langinfo(locale.D_T_FMT)).strip() + + @classmethod + def _localize_element(cls, format_specifier, argument, grouping=False): + """ + Localize one of the arguments in localizable message + + :type format_specifier: :class:`str` + :param format_specifier: Format specifier for the argument + :type argument: :class:`object` + :param argument: Argument to be localized + :type grouping: :class:`bool` + :param grouping: Indicates whether to use thousands seperater or not. + :rtype: :class:`str` + :return: Localized string + """ + if format_specifier.endswith('d'): + if six.PY2: + argument = long(argument) + else: + argument = int(argument) + elif format_specifier.endswith('f'): + argument = float(argument) + return locale.format_string(format_specifier, argument, grouping) + + @classmethod + def _localize_string(cls, tokens, args): + """ + Localize the given string + + :type tokens: :class:`list` of :class:`str` + :param tokens: Tokens from the message template + :type args: :class:`list` of :class:`object` + :param args: Arguments for the message template + :rtype: :class:`str` + :return: Localized message + """ + result = [] + arg_index = 0 + for token in tokens: + match = cls.format_specifier.match(token) + if match: + if match.groups()[4]: + dt_arg = args[arg_index] + result.append(cls._localize_datetime(dt_arg)) + elif match.groups()[1] == ',': + # remove ',' flag from the token + groups = match.groups() + groups = groups[0:1] + groups[2:] + token = ''.join([elem for elem in groups + if elem]) + token = '%' + token + result.append( + cls._localize_element(token, + args[arg_index], + grouping=True)) + else: + result.append( + cls._localize_element(token, + args[arg_index])) + arg_index += 1 + else: + result.append(token) + + return ''.join(result) + + @classmethod +
[docs] def format_msg(cls, msg, args): + """ + Format the string + + :type msg: :class:`str` + :param msg: Message template + :type args: :class:`list` of :class:`object` + :param args: Arguments for the message + :rtype: :class:`str` + :return: Localized message + """ + msg_tokens = cls.string_template.split(msg) + + modified_msg_tokens = [] + argument_indexes = [] + for idx, token in enumerate(msg_tokens): + match = cls.format_specifier.match(token) + if match: + # Check for argument index + argument_index = match.groups()[0] + if argument_index: + # Extract argument index + argument_indexes.append( + argument_index.split('$')[0]) + + # Remove argument index from format specifier + token = ''.join([elem for elem in match.groups()[1:] + if elem]) + modified_msg_tokens.append('%' + token) + else: + modified_msg_tokens.append(token) + tokens = modified_msg_tokens + + if argument_indexes: + if len(argument_indexes) != len(args): + raise TypeError('Number of argument index specifiers ' + 'do not match number of arguments') + # Rearrange the arguments + args = [args[int(idx) - 1] for idx in argument_indexes] + + return cls._localize_string(tokens, args)
+
+ +
+
+
+
+
+ + +
+
+
+
+ + + + \ No newline at end of file diff --git a/vsphere/6.0/_modules/vmware/vapi/l10n/runtime.html b/vsphere/6.0/_modules/vmware/vapi/l10n/runtime.html new file mode 100644 index 00000000..3db889f3 --- /dev/null +++ b/vsphere/6.0/_modules/vmware/vapi/l10n/runtime.html @@ -0,0 +1,122 @@ + + + + + + + + + + vmware.vapi.l10n.runtime — vCloud Suite SDK for Python 6.0.0 documentation + + + + + + + + + + + + + + +
+
+
+
+ +

Source code for vmware.vapi.l10n.runtime

+"""
+Helper class for internationalization of the runtime messages
+"""
+
+__author__ = 'VMware, Inc.'
+__copyright__ = 'Copyright 2013-2014 VMware, Inc.  All rights reserved. -- VMware Confidential'
+
+
+from vmware.vapi.l10n.bundle import PropertiesResourceBundle
+from vmware.vapi.l10n.formatter import StringFormatter
+from vmware.vapi.message import MessageFactory
+
+
+
[docs]def get_runtime_message_factory(): + """ + Default message factory. Load the runtime message bundle from + the egg file + + :rtype: :class:`vmware.vapi.message.MessageFactory` + :return: Message factory class for the runtime + """ + msg_bundle = PropertiesResourceBundle( + [('vmware.vapi.settings', 'runtime.properties')]) + return MessageFactory(msg_bundle, StringFormatter) + + +# MessageFactory instance for the runtime
+message_factory = get_runtime_message_factory() +
+ +
+
+
+
+
+ + +
+
+
+
+ + + + \ No newline at end of file diff --git a/vsphere/6.0/_modules/vmware/vapi/lib/addr_url_parser.html b/vsphere/6.0/_modules/vmware/vapi/lib/addr_url_parser.html new file mode 100644 index 00000000..1c904822 --- /dev/null +++ b/vsphere/6.0/_modules/vmware/vapi/lib/addr_url_parser.html @@ -0,0 +1,222 @@ + + + + + + + + + + vmware.vapi.lib.addr_url_parser — vCloud Suite SDK for Python 6.0.0 documentation + + + + + + + + + + + + + + +
+
+
+
+ +

Source code for vmware.vapi.lib.addr_url_parser

+"""
+vAPI configuration addr url parser
+"""
+
+__author__ = 'VMware, Inc.'
+__copyright__ = 'Copyright 2012-2014 VMware, Inc.  All rights reserved. -- VMware Confidential'
+
+import logging
+import sys
+
+from six.moves import urllib
+
+
+logger = logging.getLogger(__name__)
+
+
+
[docs]def parse_addr_url(url): + """ + Parse addr url (as described in http://www.rabbitmq.com/uri-spec.html) + Note: This fn make no attempt to unescape the url, just like the urlparse + + :type url: :class:`str` + :param url: The addr url to parse + + :rtype: :class:`tuple` of (scheme, host, port, user, password, path, query_dict)\ + where scheme: url scheme + host: hostname + port: query_dict is a dictionary of (name, [values]) + :return: Parsed addr url + """ + + scheme = None + host, port = None, None + user, password = None, None + path = None + query_dict = None + + # Use urlparse first to parse the url, but it failed to parse amqp[s] + # NYI: RFC3986 re ? + if url: + # urlparse returns a named dict. Need to disable pylint E1101 + # or else we have tons of warning with result.xxx + # pylint: disable=E1101 + result = urllib.parse.urlparse(url) + scheme = result.scheme + netloc = result.netloc + if result.path: + path = result.path + if sys.version_info[:2] < (2, 7): + # Older version of python failed to parse netloc and put everything in + # result.path. Do a manual parse + if result.path.startswith('//'): + idx = result.path[2:].find('/') + if idx >= 0: + netloc += result.path[2:idx + 2] + path = result.path[idx + 2:] + else: + netloc += result.path[2:] + path = None + + if netloc: + # Parse user:passwd@... + tokens = netloc.split('@', 1) + if len(tokens) > 1: + user_info, host_info = tokens[:2] + tokens = user_info.split(':', 1) + if len(tokens) > 1: + user, password = tokens[:2] + else: + user, password = tokens[0], None + else: + user, password = None, None + host_info = tokens[0] + + # Parse host [ ':' port ] + # Check for ipv6 addr + tokens = [] + if len(host_info) >= 2 and host_info[0] == '[': + idx = host_info.find(']') + if idx != -1: + tokens.append(host_info[0:idx + 1]) + port = host_info[idx + 1:] + idx = port.rfind(':') + if idx != -1: + tokens.append(port[idx + 1:]) + else: + # Incomplete ipv6 addr... + logger.error('Invalid ipv6 addr: %s', url) + else: + tokens = host_info.rsplit(':', 1) + + if len(tokens) > 1: + if tokens[0]: + host, port = tokens[:2] + else: + port = tokens[1] + try: + port = int(port) + except ValueError: + logger.error('Invalid port number: %s', url) + port = None + elif tokens[0]: + host, port = tokens[0], None + + # Parse path queries + if path: + tokens = path.split('?', 1) + if len(tokens) > 1: + path, queries = tokens[:2] + else: + path, queries = tokens[0], result.query + if queries: + query_dict = urllib.parse.parse_qs(queries) + + return scheme, host, port, user, password, path, query_dict + +
+
[docs]def get_url_scheme(url): + """ + Get the scheme from the url (as described in http://www.rabbitmq.com/uri-spec.html) + + :type url: :class:`str` + :param url: The addr url to parse + + :rtype: :class:`str` + :return: url scheme + """ + return parse_addr_url(url)[0]
+
+ +
+
+
+
+
+ + +
+
+
+
+ + + + \ No newline at end of file diff --git a/vsphere/6.0/_modules/vmware/vapi/lib/connect.html b/vsphere/6.0/_modules/vmware/vapi/lib/connect.html new file mode 100644 index 00000000..956b6c64 --- /dev/null +++ b/vsphere/6.0/_modules/vmware/vapi/lib/connect.html @@ -0,0 +1,224 @@ + + + + + + + + + + vmware.vapi.lib.connect — vCloud Suite SDK for Python 6.0.0 documentation + + + + + + + + + + + + + + +
+
+
+
+ +

Source code for vmware.vapi.lib.connect

+"""
+vAPI Connection factory
+"""
+
+__author__ = 'VMware, Inc.'
+__copyright__ = 'Copyright 2011-2014 VMware, Inc.  All rights reserved. -- VMware Confidential'
+
+import os
+
+from six.moves import configparser
+from vmware.vapi.protocol.client.rpc.provider_factory import RpcProviderFactory
+from vmware.vapi.protocol.client.msg.connector_factory import ProtocolConnectorFactory
+from vmware.vapi.settings import config
+
+
+
[docs]def check_file_exists(filename): + """ + Check if name is a file and exists + + :type :class:`str` + :param file name + """ + if not os.path.isfile(filename): + raise OSError(2, 'No such file', filename) + +
+
[docs]def get_connector(rpc_provider_name, msg_protocol, ssl_context=None, **kwargs): + """ + Create a connection to the vAPI Provider using the specified arguments + + :type rpc_provider_name: :class:`str` + :param rpc_provider_name: The RPC provider to be used for the connection. + Valid values are 'http', 'https' and 'requests' + :type msg_protocol: :class:`str` + :param msg_protocol: The message protocol to be used for the connection. + Valid values are 'json'. + :type ssl_context: :class:`OpenSSL.SSL.Context` + :param ssl_context: SSL context to use for SSL connections + :param kwargs: Additional arguments for the RPC provider + + :rtype: :class:`vmware.vapi.protocol.client.connector.Connector` + :return: Connection to the vAPI provider + """ + #RPC provider + rpc_provider_args = {} + + if rpc_provider_name in ('http', 'https'): + # provider url + rpc_provider_args['url'] = kwargs.get('url') + rpc_provider_args['ssl_args'] = {'ssl_context': ssl_context} + elif rpc_provider_name in ('requests'): + for arg_name in ('url', 'session', 'timeout', 'pool_size'): + rpc_provider_args[arg_name] = kwargs.get(arg_name) + else: + raise Exception('Invalid RPC Provider specified %s' % rpc_provider_name) + + # Accept additional configuration using a client config file + if config.cfg is None: + config.cfg = configparser.SafeConfigParser() + config_file = kwargs.get('config') + if config_file: + check_file_exists(config_file) + config.cfg.read(config_file) + + # Using SAML based authentication + # If the configuration does not have SSO signer, add it + use_saml_token = kwargs.get('use_saml_token', False) + if (use_saml_token and not config.cfg.has_section( + 'vmware.vapi.protocol.client.msg.json_connector')): + config.cfg.add_section('vmware.vapi.protocol.client.msg.json_connector') + config.cfg.set('vmware.vapi.protocol.client.msg.json_connector', + 'processors', + 'vmware.vapi.security.sso.JSONSSOSigner') + + rpc_factory = RpcProviderFactory() + rpc_provider = rpc_factory.get_rpc_provider(rpc_provider_name, + **rpc_provider_args) + + # Msg protocol provider + connector_factory = ProtocolConnectorFactory() + connector = connector_factory.get_connector(msg_protocol, rpc_provider) + + return connector + +
+
[docs]def get_saml_hok_connector(rpc_provider_name, msg_protocol='json', ssl_context=None, **kwargs): + """ + Create a connection that uses SAML Hok based authentication + to connect to a vAPI Provider + + :type rpc_provider_name: :class:`str` + :param rpc_provider_name: The RPC provider to be used for the connection. + Valid values are 'http', 'https' or 'requests' + :type msg_protocol: :class:`str` + :param msg_protocol: The message protocol to be used for the connection. + Valid values are 'json'. + :type ssl_context: :class:`OpenSSL.SSL.Context` + :param ssl_context: SSL context to use for SSL connections + :type kwargs: :class:`dict` of :class:`str` and :class:`object` + :param kwargs: Additional arguments for the RPC provider + + :rtype: :class:`vmware.vapi.protocol.client.connector.Connector` + :return: Connection to the vAPI provider + """ + return get_connector(rpc_provider_name, msg_protocol, ssl_context, + use_saml_token=True, **kwargs) + +
+
[docs]def get_requests_connector(session, msg_protocol='json', url=None, + timeout=None, pool_size=8): + """ + Create a connection that uses 'requests' library for http connections + + :type session: :class:`requests.Session` + :param session: Session object + :type msg_protocol: :class:`str` + :param msg_protocol: Message protocol to be used for the connection. Valid + values are 'json'. + :type url: :class:`str` + :param url: HTTP(S) URL to be used + :type timeout: :class:`int` + :param timeout: Request timeout + :type pool_size: :class:`int` + :param pool_size: Connection pool size to be used + :rtype: :class:`vmware.vapi.protocol.client.connector.Connector` + :return: Connection to the vAPI provider + """ + return get_connector('requests', msg_protocol, + url=url, session=session, + timeout=timeout, pool_size=pool_size)
+
+ +
+
+
+
+
+ + +
+
+
+
+ + + + \ No newline at end of file diff --git a/vsphere/6.0/_modules/vmware/vapi/lib/constants.html b/vsphere/6.0/_modules/vmware/vapi/lib/constants.html new file mode 100644 index 00000000..97da7ef9 --- /dev/null +++ b/vsphere/6.0/_modules/vmware/vapi/lib/constants.html @@ -0,0 +1,132 @@ + + + + + + + + + + vmware.vapi.lib.constants — vCloud Suite SDK for Python 6.0.0 documentation + + + + + + + + + + + + + + +
+
+
+
+ +

Source code for vmware.vapi.lib.constants

+"""
+String Constants used in vAPI runtime
+"""
+
+__author__ = 'VMware, Inc.'
+__copyright__ = 'Copyright 2011-2014 VMware, Inc.  All rights reserved. -- VMware Confidential'
+
+
+PARAMS = 'params'
+SCHEME_ID = 'schemeId'
+EXECUTION_CONTEXT = 'ctx'
+APPLICATION_CONTEXT = 'appCtx'
+SECURITY_CONTEXT = 'securityCtx'
+PROCESSORS = 'processors'
+OPID = 'opId'
+
+# Magic structure names
+# Structure name for the StructValues that represent
+# map entries in the runtime
+MAP_ENTRY = 'map-entry'
+# Structure name for the StructValues that represent
+# operation input in the runtime
+OPERATION_INPUT = 'operation-input'
+
+
+
[docs]class Introspection(object): + """ + String constants used in introsection service + """ + PACKAGE = 'com.vmware.vapi.std.introspection' + + # Services + PROVIDER_SVC = 'com.vmware.vapi.std.introspection.provider' + SERVICE_SVC = 'com.vmware.vapi.std.introspection.service' + OPERATION_SVC = 'com.vmware.vapi.std.introspection.operation' + + # Types + DATA_DEFINITION = 'com.vmware.vapi.std.introspection.operation.data_definition'
+
+ +
+
+
+
+
+ + +
+
+
+
+ + + + \ No newline at end of file diff --git a/vsphere/6.0/_modules/vmware/vapi/lib/context.html b/vsphere/6.0/_modules/vmware/vapi/lib/context.html new file mode 100644 index 00000000..fd9f5b70 --- /dev/null +++ b/vsphere/6.0/_modules/vmware/vapi/lib/context.html @@ -0,0 +1,118 @@ + + + + + + + + + + vmware.vapi.lib.context — vCloud Suite SDK for Python 6.0.0 documentation + + + + + + + + + + + + + + +
+
+
+
+ +

Source code for vmware.vapi.lib.context

+"""
+Factory methods for creating application context
+"""
+
+__author__ = 'VMware, Inc.'
+__copyright__ = 'Copyright 2011-2012 VMware, Inc.  All rights reserved. -- VMware Confidential'
+
+
+import uuid
+
+from vmware.vapi.core import ApplicationContext
+from vmware.vapi.lib.constants import OPID
+
+
+
[docs]def create_default_application_context(): + """ + Create a default application context. The + created context will only have opId. + + :rtype: :class:`vmware.vapi.core.ApplicationContext` + :return: Newly created application context + """ + op_id = str(uuid.uuid4()) + return ApplicationContext({OPID: op_id})
+
+ +
+
+
+
+
+ + +
+
+
+
+ + + + \ No newline at end of file diff --git a/vsphere/6.0/_modules/vmware/vapi/lib/converter.html b/vsphere/6.0/_modules/vmware/vapi/lib/converter.html new file mode 100644 index 00000000..b2d373cd --- /dev/null +++ b/vsphere/6.0/_modules/vmware/vapi/lib/converter.html @@ -0,0 +1,240 @@ + + + + + + + + + + vmware.vapi.lib.converter — vCloud Suite SDK for Python 6.0.0 documentation + + + + + + + + + + + + + + +
+
+
+
+ +

Source code for vmware.vapi.lib.converter

+"""
+Convenience methods for converting variable names
+"""
+
+__author__ = 'VMware, Inc.'
+__copyright__ = 'Copyright 2011 VMware, Inc.  All rights reserved. -- VMware Confidential'
+
+import keyword
+from re import compile as compile_regex
+
+
+
[docs]class Converter(object): + """ + Convenience methods for converting variable names + """ + _mixedcase_to_underscore = compile_regex( + r'(?<=[a-z])[A-Z]|(?<!^)[A-Z](?=[a-z])') + _underscore_to_mixedcase = compile_regex(r'_([A-Za-z])') + + @staticmethod +
[docs] def capitalize(name): + """ + Capitalize the first letter of the name + + :type name: :class:`str` + :param name: name to be converted + + :rtype: :class:`str` + :return: name with first letter capitalized + """ + return name[0].upper() + name[1:] +
+ @staticmethod +
[docs] def uncapitalize(name): + """ + Uncapitalize the first letter of the name + + :type name: :class:`str` + :param name: name to be converted + + :rtype: :class:`str` + :return: name with first letter uncapitalized + """ + return name[0].lower() + name[1:] +
+ @staticmethod +
[docs] def mixedcase_to_underscore(name): + """ + Convert from mixedCase to lower_case_with_underscore format + + :type name: :class:`str` + :param name: name in mixedCase format + + :rtype: :class:`str` + :return: name in lower_case_with_underscore format + """ + return Converter._mixedcase_to_underscore.sub(r"_\g<0>", + name).lower() +
+ @staticmethod +
[docs] def underscore_to_mixedcase(name): + """ + Convert from lower_case_with_underscore to mixedCase format + + :type name: :class:`str` + :param name: name in lower_case_with_underscore + + :rtype: :class:`str` + :return: name in mixedCase + """ + return Converter._underscore_to_mixedcase.sub(lambda m: + (m.group(1).upper()), + name) +
+ @staticmethod +
[docs] def capwords_to_underscore(name): + """ + Convert from CapWords to lower_case_with_underscore format + + :type name: :class:`str` + :param name: name in CapWords format + + :rtype: :class:`str` + :return: name in lower_case_with_underscore format + """ + return Converter.mixedcase_to_underscore(name) +
+ @staticmethod +
[docs] def underscore_to_capwords(name): + """ + Convert from lower_case_with_underscore to CapWords format + + :type name: :class:`str` + :param name: name in lower_case_with_underscore + + :rtype: :class:`str` + :return: name in CapWords + """ + name = Converter.underscore_to_mixedcase(name) + return Converter.capitalize(name) +
+ @staticmethod +
[docs] def unreserve_name(name): + """ + Converts the argument if it clashes with a python keyword. If the string + matches a keyword, adds a trailing underscore, else it returns the same + string + + :type name: :class:`str` + :param name: The string to be converted + + :rtype: :class:`str` + :return: The converted string + """ + if keyword.iskeyword(name) or name in ['self']: + return '%s_' % name + else: + return name +
+ @staticmethod +
[docs] def pepify(name): + """ + Converts the argument into a name that conforms to PEP8 standard. + i.e. lower_case_with_underscore + + :type name: :class:`str` + :param name: The string to be converted + + :rtype: :class:`str` + :return: The converted string + """ + name = Converter.mixedcase_to_underscore(name) + return Converter.unreserve_name(name) +
+ @staticmethod +
[docs] def canonical_to_pep(name): + """ + Converts the argument from vAPI canonical format to PEP8 compliant + parameter or attribute name + + :type name: :class:`str` + :param name: The string to be converted + :rtype: :class:`str` + :return: The converted string + """ + return Converter.unreserve_name(name.lower())
+
+ +
+
+
+
+
+ + +
+
+
+
+ + + + \ No newline at end of file diff --git a/vsphere/6.0/_modules/vmware/vapi/lib/fingerprint.html b/vsphere/6.0/_modules/vmware/vapi/lib/fingerprint.html new file mode 100644 index 00000000..1d7951e0 --- /dev/null +++ b/vsphere/6.0/_modules/vmware/vapi/lib/fingerprint.html @@ -0,0 +1,116 @@ + + + + + + + + + + vmware.vapi.lib.fingerprint — vCloud Suite SDK for Python 6.0.0 documentation + + + + + + + + + + + + + + +
+
+
+
+ +

Source code for vmware.vapi.lib.fingerprint

+"""
+Fingerprint related functions
+"""
+
+__author__ = 'VMware, Inc.'
+__copyright__ = 'Copyright 2014 VMware, Inc.  All rights reserved. -- VMware Confidential'
+
+import hashlib
+import six
+
+
+
[docs]def generate_fingerprint(data): + """ + Generate fingerprint for the given data + + :rtype: :class:`str` + :return: fingerprint of the given data + """ + if six.PY3: + if isinstance(data, six.string_types): + data = data.encode('utf-8') + return hashlib.md5(data).hexdigest()
+
+ +
+
+
+
+
+ + +
+
+
+
+ + + + \ No newline at end of file diff --git a/vsphere/6.0/_modules/vmware/vapi/lib/load.html b/vsphere/6.0/_modules/vmware/vapi/lib/load.html new file mode 100644 index 00000000..816948a7 --- /dev/null +++ b/vsphere/6.0/_modules/vmware/vapi/lib/load.html @@ -0,0 +1,159 @@ + + + + + + + + + + vmware.vapi.lib.load — vCloud Suite SDK for Python 6.0.0 documentation + + + + + + + + + + + + + + +
+
+
+
+ +

Source code for vmware.vapi.lib.load

+"""
+Convenience methods for dynamic loading
+"""
+
+__author__ = 'VMware, Inc.'
+__copyright__ = 'Copyright 2011-2014 VMware, Inc.  All rights reserved. -- VMware Confidential'
+
+import logging
+import six
+
+from vmware.vapi.settings import config
+
+logger = logging.getLogger(__name__)
+
+
+
[docs]def dynamic_import(constructor): + """ + Dynamically import a module and get the specified module attribute + + :type constructor: :class:`str` + :param constructor: Fully qualified module attribute + :rtype: :class:`object` + :return: Python object + """ + target_attr = None + if constructor: + if isinstance(constructor, six.string_types): + try: + module_name, fn = constructor.rsplit('.', 1) + module = __import__(module_name, globals(), locals(), [fn]) + target_attr = getattr(module, fn) + except ImportError as err: + logger.exception('Import failed: %s: module %s fn %s', + str(err), module_name, fn) + target_attr = None + except AttributeError as err: + logger.exception('Import failed: Module %s has no %s', + module_name, fn) + target_attr = None + return target_attr + +
+
[docs]def import_multiple_classes(section, property_key): + """ + Import multiple class names provided in the config file + + :type section: :class:`str` + :param section: Name of the section in the config file + :type property_key: :class:`str` + :param property_key: Name of the property in the config file + :rtype: :class:`list` of :class:`str` + :return: List of class references + """ + cfg = config.cfg + classes = [] + if cfg and cfg.has_section(section) and cfg.has_option(section, + property_key): + class_names = cfg.get(section, property_key).split(',') + for class_name in class_names: + class_name = class_name.strip() + class_ref = dynamic_import(class_name) + if class_ref is not None: + classes.append(class_ref()) + + return classes
+
+ +
+
+
+
+
+ + +
+
+
+
+ + + + \ No newline at end of file diff --git a/vsphere/6.0/_modules/vmware/vapi/lib/profiler.html b/vsphere/6.0/_modules/vmware/vapi/lib/profiler.html new file mode 100644 index 00000000..ad8fb90d --- /dev/null +++ b/vsphere/6.0/_modules/vmware/vapi/lib/profiler.html @@ -0,0 +1,124 @@ + + + + + + + + + + vmware.vapi.lib.profiler — vCloud Suite SDK for Python 6.0.0 documentation + + + + + + + + + + + + + + +
+
+
+
+ +

Source code for vmware.vapi.lib.profiler

+"""
+Convenience methods for loading the profiler
+"""
+
+__author__ = 'VMware, Inc.'
+__copyright__ = 'Copyright 2013 VMware, Inc.  All rights reserved. -- VMware Confidential'
+
+import os
+
+
+
[docs]def mock_profile(func): + """ + Mock decorator that is used when the PROFILER is not set + """ + def wrapper(*arg, **kwargs): + """ + Mock wrapper function + """ + return func(*arg, **kwargs) + return wrapper + +# use profilehooks only if the PROFILER environment variable is set
+perf = os.environ.get('PROFILER') +if perf == 'True': + try: + from profilehooks import profile # pylint: disable=W0611 + except ImportError: + profile = mock_profile +else: + profile = mock_profile +
+ +
+
+
+
+
+ + +
+
+
+
+ + + + \ No newline at end of file diff --git a/vsphere/6.0/_modules/vmware/vapi/lib/ssl.html b/vsphere/6.0/_modules/vmware/vapi/lib/ssl.html new file mode 100644 index 00000000..f3d7bd31 --- /dev/null +++ b/vsphere/6.0/_modules/vmware/vapi/lib/ssl.html @@ -0,0 +1,214 @@ + + + + + + + + + + vmware.vapi.lib.ssl — vCloud Suite SDK for Python 6.0.0 documentation + + + + + + + + + + + + + + +
+
+
+
+ +

Source code for vmware.vapi.lib.ssl

+"""
+SSL Context factories
+"""
+
+__author__ = 'VMware, Inc.'
+__copyright__ = 'Copyright 2013 VMware, Inc.  All rights reserved. -- VMware Confidential'
+
+import logging
+from OpenSSL import SSL, crypto
+
+logger = logging.getLogger(__name__)
+
+
+
[docs]class ClientContextFactory(object): # pylint: disable=R0922 + """ + Context factory base class. This class should be used to set the + SSL options + """ +
[docs] def get_context(self): + """ + Returns the SSL context + """ + raise NotImplementedError + +
+
[docs]class DefaultClientContextFactory(ClientContextFactory): + """ + Default SSL context class. This chooses some default options for SSL context. + Clients can retrieve the context. + + To modify the context and set some options directly. Create a class like below + and set the options. Pass this to the get_connector function + + class CustomClientContextFactory(DefaultClientContextFactory): + def getContext(self): + ctx = DefaultClientContextFactory.getContext(self) + # modify ctx + return ctx + """ + def __init__(self, certificate=None, private_key=None, ca_certs=None, + ca_certs_dir=None): + """ + Initialize DefaultClientContextFactory + + :type certificate: :class:`str` + :param certificate: File path of the certificate + :type private_key: :class:`str` + :param private_key: File path of the private key + :type ca_certs: :class:`str` + :param ca_certs: File path of ca certificates + :type ca_certs_dir: :class:`str` + :param ca_certs_dir: Directory prepared using the c_rehash tool + included with OpenSSL + """ + + def callback_fn(conn, cert, errno, depth, result): # pylint: disable=W0613 + """ + Callback to handle the cert validation + + :type conn: :class:`OpenSSL.SSL.Connection` + :param conn: OpenSSL connection that triggered the verification + :type cert: :class:`OpenSSL.crypto.X509` + :param cert: Certificate that is being validated + :type errno: :class:`int` + :param errno: An integer containing the error number (0 in case no + error) of the error detected. Error descriptions here: + http://www.openssl.org/docs/apps/verify.html + :type depth: :class:`int` + :param depth: An integer indicating the depth of the certificate + being validated. If it is 0 then it means it is the given + certificate is the one being validated, in other case is one + of the chain of certificates + :type result: :class:`int` + :param result: An integer that indicates whether the validation of + the certificate currently being validated (the one in the + second argument) passed or not the validation. A value of 1 is + a successful validation and 0 an unsuccessful one. + :rtype: :class:`bool` + :return: True if the verification passes, False otherwise + """ + logger.debug( + 'Verifying SSL certificate at depth %s, subject %s, issuer %s', + depth, repr(cert.get_subject()), repr(cert.get_issuer())) + + if errno: + try: + fn = crypto.X509_verify_cert_error_string + errmsg = ':%s' % fn(errno) + except AttributeError: + errmsg = '' + logger.error('verify error %s: %s', errno, errmsg) + return False + return True + + self._context = SSL.Context(SSL.TLSv1_METHOD) + # Disable the insecure SSLv2 connections + # More background here: http://osvdb.org/show/osvdb/56387 + self._context.set_options(SSL.OP_NO_SSLv2) + self._context.set_verify(SSL.VERIFY_PEER, callback_fn) + + if certificate: + self._context.use_certificate_file(certificate) + if private_key: + self._context.use_privatekey_file(private_key) + if ca_certs or ca_certs_dir: + try: + self._context.load_verify_locations( + ca_certs.encode('utf-8'), ca_certs_dir) + except TypeError: + self._context.load_verify_locations( + ca_certs, ca_certs_dir) + +
[docs] def get_context(self): + """ + Returns the SSL context + + :rtype: :class:`OpenSSL.SSL.Context` + :return: SSL context + """ + return self._context
+
+ +
+
+
+
+
+ + +
+
+
+
+ + + + \ No newline at end of file diff --git a/vsphere/6.0/_modules/vmware/vapi/lib/std.html b/vsphere/6.0/_modules/vmware/vapi/lib/std.html new file mode 100644 index 00000000..78da1217 --- /dev/null +++ b/vsphere/6.0/_modules/vmware/vapi/lib/std.html @@ -0,0 +1,239 @@ + + + + + + + + + + vmware.vapi.lib.std — vCloud Suite SDK for Python 6.0.0 documentation + + + + + + + + + + + + + + +
+
+
+
+ +

Source code for vmware.vapi.lib.std

+"""
+Helper functions for manipulating vAPI runtime objects corresponding to
+the standard types (e.g. LocalizableMessage) and errors
+"""
+
+__author__ = 'VMware, Inc.'
+__copyright__ = 'Copyright 2011-2014 VMware, Inc.  All rights reserved. -- VMware Confidential'
+
+from vmware.vapi.data.definition import (
+    DynamicStructDefinition, ErrorDefinition, ListDefinition,
+    OptionalDefinition, StringDefinition, StructDefinition)
+from vmware.vapi.l10n.runtime import message_factory
+
+
+_ID_FIELD_NAME = 'id'
+_DEFAULT_MESSAGE_FIELD_NAME = 'default_message'
+_ARGS_FIELD_NAME = 'args'
+localizable_message_def = StructDefinition(
+    'com.vmware.vapi.std.localizable_message',
+    ((_ID_FIELD_NAME, StringDefinition()),
+     (_DEFAULT_MESSAGE_FIELD_NAME, StringDefinition()),
+     (_ARGS_FIELD_NAME, ListDefinition(StringDefinition()))))
+
+
+_MESSAGES_FIELD_NAME = 'messages'
+messages_list_def = ListDefinition(localizable_message_def)
+_DATA_FIELD_NAME = 'data'
+data_optional_dynamicstructure_def = OptionalDefinition(
+    DynamicStructDefinition())
+_ERROR_DEF_FIELDS = [(_MESSAGES_FIELD_NAME, messages_list_def),
+                     (_DATA_FIELD_NAME, data_optional_dynamicstructure_def)]
+
+
+def make_std_error_def(name):
+
[docs] """ + Internal function to create a "standard" ErrorDefinition for use only by + the vAPI runtime. + :type name: :class:`str` + :param args: Fully qualified name of the standard error type + :rtype: :class:`vmware.vapi.data.definition.ErrorDefinition` + :return: ErrorDefinition containing a single message field + """ + return ErrorDefinition(name, _ERROR_DEF_FIELDS) + + +def _make_struct_value_from_message(message):
+ """ + Helper function to create a StructValue matching the LocalizableMessage + type defined in VMODL from a Message object. + """ + id_def = localizable_message_def.get_field(_ID_FIELD_NAME) + default_message_def = localizable_message_def.get_field( + _DEFAULT_MESSAGE_FIELD_NAME) + args_def = localizable_message_def.get_field(_ARGS_FIELD_NAME) + result = localizable_message_def.new_value() + result.set_field(_ID_FIELD_NAME, id_def.new_value(message.id)) + result.set_field(_DEFAULT_MESSAGE_FIELD_NAME, + default_message_def.new_value(message.def_msg)) + args_list_value = args_def.new_value() + arg_def = args_def.element_type + for arg in message.args: + args_list_value.add(arg_def.new_value(arg)) + result.set_field(_ARGS_FIELD_NAME, args_list_value) + return result + + +def make_error_value_from_msg_id(error_def, msg_id, *args): +
[docs] """ + Create an error result for a "standard" error + + :type error_def: :class:`vmware.vapi.data.type.ErrorDefinition` + :param error_def: ErrorDefintion for the error + :type msg_id: :class:`str` + :param msg_id: Message identifier + :type args: :class:`list` of :class:`str` + :param args: Argument list for constructing a Message + :rtype: :class:`vmware.vapi.data.value.ErrorValue` + :return: ErrorValue containing a single message + """ + msg = message_factory.get_message(msg_id, *args) + messages = error_def.get_field(_MESSAGES_FIELD_NAME).new_value() + messages.add(_make_struct_value_from_message(msg)) + data = data_optional_dynamicstructure_def.new_value() + error_value = error_def.new_value() + error_value.set_field(_MESSAGES_FIELD_NAME, messages) + error_value.set_field(_DATA_FIELD_NAME, data) + return error_value + + +def make_error_value_from_msgs(error_def, *msg_list):
+
[docs] """ + Create an error result for a "standard" error + + :type error_def: :class:`vmware.vapi.data.type.ErrorDefinition` + :param error_def: ErrorDefintion for the error + :type msg_list: :class:`list` of :class:`vmware.vapi.message.Message` + :param msg_list: list of localizable messages + :rtype: :class:`vmware.vapi.data.value.ErrorValue` + :return: ErrorValue containing a single message + """ + messages = error_def.get_field(_MESSAGES_FIELD_NAME).new_value() + for msg in msg_list: + messages.add(_make_struct_value_from_message(msg)) + data = data_optional_dynamicstructure_def.new_value() + error_value = error_def.new_value() + error_value.set_field(_MESSAGES_FIELD_NAME, messages) + error_value.set_field(_DATA_FIELD_NAME, data) + return error_value + + +def make_error_value_from_error_value_and_msgs(error_def,
+
[docs] cause, + *msg_list): + """ + Create an error result for a "standard" error from a cause ErrorValue + and an list of messages. + + The list of message will be prepended to the messages from the cause + (if any). + + :type error_def: :class:`vmware.vapi.data.type.ErrorDefinition` + :param error_def: ErrorDefintion for the error + :type cause: :class:`vmware.vapi.data.value.ErrorValue` + :param cause: Lower level ErrorValue that "caused" the error + :type msg_list: :class:`list` of :class:`vmware.vapi.message.Message` + :param msg_list: list of localizable messages + :rtype: :class:`vmware.vapi.data.value.ErrorValue` + :return: ErrorValue containing a single message + """ + messages = error_def.get_field(_MESSAGES_FIELD_NAME).new_value() + for msg in msg_list: + messages.add(_make_struct_value_from_message(msg)) + try: + cause_msg_list = cause.get_field(_MESSAGES_FIELD_NAME) + for msg in cause_msg_list: + messages.add(msg) + except Exception: + # If cause doesn't have a message field or it isn't a ListValue, + # just ignore it. + pass + data = data_optional_dynamicstructure_def.new_value() + error_value = error_def.new_value() + error_value.set_field(_MESSAGES_FIELD_NAME, messages) + error_value.set_field(_DATA_FIELD_NAME, data) + return error_value +
+ +
+
+
+
+
+ + +
+
+
+ + + + + \ No newline at end of file diff --git a/vsphere/6.0/_modules/vmware/vapi/lib/thread_pool.html b/vsphere/6.0/_modules/vmware/vapi/lib/thread_pool.html new file mode 100644 index 00000000..b2e55324 --- /dev/null +++ b/vsphere/6.0/_modules/vmware/vapi/lib/thread_pool.html @@ -0,0 +1,426 @@ + + + + + + + + + + vmware.vapi.lib.thread_pool — vCloud Suite SDK for Python 6.0.0 documentation + + + + + + + + + + + + + + +
+
+
+
+ +

Source code for vmware.vapi.lib.thread_pool

+"""
+This module is YATP (Yet another thread pool)
+"""
+
+__author__ = 'VMware, Inc.'
+__copyright__ = 'Copyright 2009-2014 VMware, Inc.  All rights reserved. -- VMware Confidential'
+
+import six
+import sys
+import time
+import threading
+
+from six.moves import queue
+
+
+
[docs]class WorkItem(object): + """ Work item """ + + def __init__(self, fn, *args, **kwargs): + """ + Work item constructor + + :type fn: function + :param fn: Work item functor + :type args: :class:`tuple` + :param args: Work item functor positional parameters + :type kwargs: :class:`dict` + :param kwargs: Work item functor key-value parameters + """ + self.fn = fn + self.args = args + self.kwargs = kwargs + self.ret = None + self.err = None + self.event = threading.Event() + +
[docs] def join(self, timeout=float('inf')): + """ + Wait for work item is done + + :type timeout: :class:`float` + :param timeout: Timeout in seconds + :rtype: :class:`object` + :return: Work item functor's return value + """ + # Wait until work is done + self.event.wait(timeout) + + # Throw exception if error occured + if self.err: + raise self.err # pylint: disable=E0702 + return self.ret +
+
[docs] def done(self): + """ Signal work item is done """ + self.event.set() +
+ def __enter__(self): + """ + with statement enter + + :rtype: :class:`WorkItem` + :return: Work item object + """ + return self + + def __exit__(self, typ, value, traceback): + """ with statement exit """ + self.join() + del self.event, self.fn, self.args, self.kwargs + +## Thread pool +# + +
+
[docs]class ThreadPool(object): + """ Thread pool """ + + def __init__(self, min_workers=1, max_workers=8, + idle_timeout=5 * 60, logger=None): + """ + Thread pool constructor + + :type min_workers: :class:`int` + :params min_workers: Min number of worker threads + :type max_workers: :class:`int` + :params max_workers: Max number of worker threads + :type idle_timeout: :class:`int` + :params idle_timeout: Worker threads idle timeout + :type logger: :class:`logging.logger` + :params logger: logger to use. Default to stdout + """ + assert(min_workers >= 0) + assert(min_workers <= max_workers) + self.min_workers = min_workers + self.max_workers = max_workers + self.idle_timeout = idle_timeout + self.workers = {} + self.work_items = queue.Queue(0) + self.lock = threading.Lock() + self.shutting_down = False + self.logger = logger + for _ in range(0, self.min_workers): + self._add_worker() + + def _log(self, msg): + """ Log message """ + if self.logger: + self.logger.info(msg) + else: + print(msg) + + def _worker(self): + """ Thread pool worker """ + thd_name = threading.currentThread().getName() + while not self.shutting_down: + try: + # Wait for request + try: + work_item = self.work_items.get(timeout=self.idle_timeout) + except queue.Empty: + work_item = None + + if not work_item: + # Worker idle timeout. Retire thread if needed + self.lock.acquire() + try: + done_thread = len(self.workers) > self.min_workers + if done_thread: + self._remove_worker(thd_name) + break + else: + continue + finally: + self.lock.release() + elif self.shutting_down: + # Put the work item back to queue + self.work_items.put(work_item) + break + + # Start work + work_item.ret = work_item.fn(*work_item.args, **work_item.kwargs) + except: # pylint: disable=W0702 + if sys: + import traceback + errtype, errvalue, trace = sys.exc_info() + stack_trace = " ".join(traceback.format_exception( + errtype, errvalue, trace)) + self._log("\n".join([thd_name + " caught exception: " + str(errtype), + stack_trace])) + if work_item: + work_item.err = errvalue + # + # NOTE: See the Python documentation for sys.exc_info for a warning + # about an inefficiency in garbage collection and the need to + # delete the local variable to which stacktrace is assigned + try: + del trace + except: # pylint: disable=W0702 + pass + else: + # System is dying and likely to be in undefined state. + # sys (and other imported modules) could be unloaded and set + # to None when we get here. Must quit as quickly as possible + return + + # Signal done on work_item + work_item.done() + + # One less worker + self.lock.acquire() + try: + self._remove_worker(thd_name) + finally: + self.lock.release() + + def _remove_worker(self, thd_name): + """ + Remove a worker. Assume locked + + :type thd_name: :class:`str` + :param thd_name: Remove a worker thread with the thread name + """ + self.workers.pop(thd_name, None) + + def _add_worker(self): + """ Add a worker. Assume locked """ + if len(self.workers) < self.max_workers: + thd = threading.Thread(target=self._worker) + thd.setDaemon(True) + thd.start() + self.workers[thd.getName()] = thd + +
[docs] def queue_work(self, fn, *args, **kwargs): + """ + Queue work + + Returns a work_item when work is queued to work queue + The work will start when a ready worker is available to process the work + User could call {work_item}.join() to wait for the work item to finish + + :type fn: function + :param fn: Work item functor + :type args: :class:`tuple` + :param args: Work item functor positional parameters + :type kwargs: :class:`dict` + :param kwargs: Work item functor key-value parameters + :rtype: :class:`WorkItem` + :return: work item when work is queued to work queue + """ + if self.shutting_down: + return None + + # Add worker if needed + self.lock.acquire() + try: + self._add_worker() + finally: + self.lock.release() + + work_item = WorkItem(fn, *args, **kwargs) + self.work_items.put(work_item) + return work_item +
+ @staticmethod +
[docs] def normalize_works(works): + """ + Generator to return work in normalize form: (fn, args, kwargs) + + :type works: iteratable of fn / (fn, args) / (fn, args, kwargs) + :param works: An iteratable of possible functor form + :rtype: :class:`tuple` of (fn, args, kwargs) + :return: A normalize tuple of (functor, args, kwargs) + """ + for work in works: + args = () + kwargs = {} + if six.callable(work): + fn = work + elif len(work) >= 3: + fn, args, kwargs = work + elif len(work) == 2: + fn, args = work + else: + fn = work[0] + yield (fn, args, kwargs) +
+
[docs] def queue_works_and_wait(self, works): + """ + Queue a brunch of works and wait until all works are completed / error + out + + :type works: iteratable of fn / (fn, args) / (fn, args, kwargs) + :param works: An iteratable of possible functor form + :rtype: :class:`list` of {tuple} of :class:`bool`,:class:`object` or :class:`bool`,:class:`Exception` + :return: A list of (True, return val) / (False, exception) when all works done + """ + work_items = [self.queue_work(fn, *args, **kwargs) + for fn, args, kwargs in self.normalize_works(works)] + results = [] + for work in work_items: + if work: + try: + ret = work.join() + results.append((True, ret)) + except: # pylint: disable=W0702 + results.append((False, sys.exc_info()[0])) + else: + # No work queued + results.append((False, None)) + + return results +
+
[docs] def queue_work_and_wait(self, fn, *args, **kwargs): + """ + Queue a work and wait until the work is completed / error out + + :type fn: function + :param fn: Work item functor + :type args: :class:`tuple` + :param args: Work item functor positional parameters + :type kwargs: :class:`dict` + :param kwargs: Work item functor key-value parameters + :rtype: :class:`tuple` of (:class:`bool`, :class:`object`) or (:class:`bool`, :class:`Exception`) + :return: (True, return val) / (False, exception) when work is done + """ + return self.queue_works_and_wait([(fn, args, kwargs)])[0] +
+
[docs] def shutdown(self, no_wait=False): + """ + Shuthdown this thread pool + + :type no_wait: :class:`bool` + :param no_wait: Set to True to return immediately without waiting for all workers to quit + """ + # Set myself as shutting down. + if self.shutting_down: + return + self.shutting_down = True + + # Queue a fake work item + work_item = object() + self.work_items.put(work_item) + + # Wait until all workers quit + if not no_wait: + self._log("shutdown: Waiting for workers to quit...") + while True: + self.lock.acquire() + try: + num_workers = len(self.workers) + finally: + self.lock.release() + + # done if no worker left or not making progress + if num_workers == 0: + break + + time.sleep(0.1) + self._log("shutdown: All workers quit") +
+ def __del__(self): + """ Destructor """ + self.shutdown() + + def __enter__(self): + """ with statment enter """ + return self + + def __exit__(self, typ, value, traceback): + """ with statment exit """ + self.shutdown()
+
+ +
+
+
+
+
+ + +
+
+
+
+ + + + \ No newline at end of file diff --git a/vsphere/6.0/_modules/vmware/vapi/lib/visitor.html b/vsphere/6.0/_modules/vmware/vapi/lib/visitor.html new file mode 100644 index 00000000..be422d2b --- /dev/null +++ b/vsphere/6.0/_modules/vmware/vapi/lib/visitor.html @@ -0,0 +1,137 @@ + + + + + + + + + + vmware.vapi.lib.visitor — vCloud Suite SDK for Python 6.0.0 documentation + + + + + + + + + + + + + + +
+
+
+
+ +

Source code for vmware.vapi.lib.visitor

+"""
+Visitor helper class
+"""
+__author__ = 'VMware, Inc.'
+__copyright__ = 'Copyright 2011 VMware, Inc.  All rights reserved. -- VMware Confidential'
+
+from vmware.vapi.lib.converter import Converter
+
+
+
[docs]class VapiVisitor(object): + """ + Convenience class for visitors used in vAPI Python runtime + """ + def __init__(self, suffix=None): + """ + Initialize VapiVisitor + + :type suffix: :class:`str` + :param suffix: The suffix string that should be removed from + class name during the dispatch + """ + self._suffix = suffix + self._cache = {} + object.__init__(self) + +
[docs] def visit(self, value): + """ + Dispatch the call to the appropriate method based + on the type of the input argument + + :type value: :class:`object` + :param value: The object to be used for dispatch + """ + class_name = value.__class__.__name__ + method = self._cache.get(class_name) + if not method: + type_name = class_name + if self._suffix and type_name.endswith(self._suffix): + type_name = type_name[:-len(self._suffix)] + type_name = Converter.capwords_to_underscore(type_name) + method = getattr(self, 'visit_' + type_name) + self._cache[class_name] = method + return method(value)
+
+ +
+
+
+
+
+ + +
+
+
+
+ + + + \ No newline at end of file diff --git a/vsphere/6.0/_modules/vmware/vapi/lib/workers_pool.html b/vsphere/6.0/_modules/vmware/vapi/lib/workers_pool.html new file mode 100644 index 00000000..fb94d867 --- /dev/null +++ b/vsphere/6.0/_modules/vmware/vapi/lib/workers_pool.html @@ -0,0 +1,120 @@ + + + + + + + + + + vmware.vapi.lib.workers_pool — vCloud Suite SDK for Python 6.0.0 documentation + + + + + + + + + + + + + + +
+
+
+
+ +

Source code for vmware.vapi.lib.workers_pool

+"""
+Workers thread pool
+"""
+
+__author__ = 'VMware, Inc.'
+__copyright__ = 'Copyright 2011-2012 VMware, Inc.  All rights reserved. -- VMware Confidential'
+
+_workers_pool = {}
+
+
+
[docs]def get_workers_pool(pool_tag): + """ + get workers pool + + :type pool_tag: :class:`str` + :param pool_tag: workers pool tag + :rtype: :class:`vmware.vapi.lib.thread_pool.ThreadPool` + :return: workers pool + """ + global _workers_pool # pylint: disable=W0602 + pool = _workers_pool.get(pool_tag) + if not pool: + from vmware.vapi.lib.thread_pool import ThreadPool + pool = ThreadPool(max_workers=8) + _workers_pool[pool_tag] = pool + return pool
+
+ +
+
+
+
+
+ + +
+
+
+
+ + + + \ No newline at end of file diff --git a/vsphere/6.0/_modules/vmware/vapi/message.html b/vsphere/6.0/_modules/vmware/vapi/message.html new file mode 100644 index 00000000..0c28d86a --- /dev/null +++ b/vsphere/6.0/_modules/vmware/vapi/message.html @@ -0,0 +1,232 @@ + + + + + + + + + + vmware.vapi.message — vCloud Suite SDK for Python 6.0.0 documentation + + + + + + + + + + + + + + +
+
+
+
+ +

Source code for vmware.vapi.message

+"""
+vAPI Message class
+"""
+
+__author__ = 'VMware, Inc.'
+__copyright__ = 'Copyright 2011-2014 VMware, Inc.  All rights reserved. -- VMware Confidential'
+
+
+#
+# This is a message class that can be used by runtime classes.
+#
+
[docs]class Message(object): + """ + This class encapsulates the concept of a localizable message. + + :type id_: :class:`string` + :ivar id_: The unique message identifier + :type def_msg: :class:`string` + :ivar def_msg: An english language default + :type args: :class:`list` of :class:`string` + :ivar args: The arguments to be used for the messsage + """ + def __init__(self, id_, def_msg, *args): + """ + Initializes the message object + + :type id_: :class:`string` + :param id_: The unique message identifier + :type def_msg: :class:`string` + :param def_msg: An english language default + :type args: :class:`list` of :class:`string` + :param args: The arguments to be used for the messsage + """ + self.id = id_ + self.def_msg = def_msg + self.args = args + + def __eq__(self, other): + return (isinstance(other, Message) and + (self.id == other.id) and + (self.def_msg == other.def_msg) and + (self.args == other.args)) + + def __ne__(self, other): + return not (self == other) + + def __repr__(self): + return 'Message(id_=%s, def_msg=%s, args=%s)' % (repr(self.id), + repr(self.def_msg), + repr(self.args)) + + def __str__(self): + return self.def_msg + +
+
[docs]class MessageFormatter(object): + """ + Base class for all message formatter classes + """ + @classmethod +
[docs] def format_msg(cls, msg, args): + """ + Format the message using the specified arguments + + :type msg: :class:`str` + :param msg: Message template + :type args: :class:`list` of :class:`object` + :param args: Arguments for the message + :rtype: :class:`str` + :return: Localized message + """ + raise NotImplementedError + +
+
[docs]class MessageBundle(object): + """ + Base class for all message bundle classes. + """ + def __init__(self, messages): + """ + Initialize MessageBundle. + + :type messages: :class:`dict` of :class:`str`, :class:`str` + :param messages: Dictionary with message identifiers as keys and + message templates as values. + """ + self._messages = messages + +
[docs] def get(self, msg_id): + """ + Returns the message template for the given message identifier + + :type msg_id: :class:`str` + :param msg_id: Message identifier + :rtype: :class:`str` + :return: Message template + :raise KeyError: If the message identifier is not found + """ + return self._messages[msg_id] + +
+
[docs]class MessageFactory(object): + """ + A factory class to generate localizable messages + """ + def __init__(self, msg_bundle, formatter): + """ + Initializes the message object + + :type msg_bundle: :class:`MessageBundle` + :param messages: The message dictionary for the message factory + :type formatter: :class:`vmware.vapi.formatter.MessageFormatter` + :param formatter: Formatter for the message + """ + self._msg_bundle = msg_bundle + self._formatter = formatter + +
[docs] def get_message(self, id_, *args): + """ + Return a message object for the given id with the given args. + If the message is not found, a default unknown message is returned. + + :type id_: string + :param id_: The unique message identifier + :type args: :class:`list` of :class:`object` + :param args: The arguments to be used for constructing this message + :rtype: :class:`Message` + :return: The message object constructed using the given arguments + """ + try: + msg = self._msg_bundle.get(id_) + def_msg = self._formatter.format_msg(msg, + args) + return Message(id_, def_msg, *args) + except KeyError: + return Message( + 'vapi.message.unknown', + 'Unknown message ID %s requested with parameters %s' % (id_, str(args)))
+
+ +
+
+
+
+
+ + +
+
+
+
+ + + + \ No newline at end of file diff --git a/vsphere/6.0/_modules/vmware/vapi/protocol/client/connector.html b/vsphere/6.0/_modules/vmware/vapi/protocol/client/connector.html new file mode 100644 index 00000000..79305144 --- /dev/null +++ b/vsphere/6.0/_modules/vmware/vapi/protocol/client/connector.html @@ -0,0 +1,165 @@ + + + + + + + + + + vmware.vapi.protocol.client.connector — vCloud Suite SDK for Python 6.0.0 documentation + + + + + + + + + + + + + + +
+
+
+
+ +

Source code for vmware.vapi.protocol.client.connector

+#!/usr/bin/env python
+
+"""
+Connecter interface
+"""
+__author__ = 'VMware, Inc.'
+__copyright__ = 'Copyright 2011 VMware, Inc.  All rights reserved. -- VMware Confidential'
+
+
+## Connector interface
+#
+# Interface class, don't need to warn about unused argument / method
+# could be function, or abstracted class not referenced
+# pylint: disable=W0613,R0201,R0921
+
[docs]class Connector(object): + """ Connector interface """ + def __init__(self): + """ Connector interface init """ + pass + +
[docs] def connect(self): + """ rpc provider connect """ + raise NotImplementedError +
+
[docs] def disconnect(self): + """ rpc provider disconnect """ + raise NotImplementedError +
+
[docs] def set_application_context(self, ctx): + """ + Set the application context + + All the subsequent calls made using this + connector will use this as the application + context in the ExecutionContext + + :type ctx: :class:`vmware.vapi.core.ApplicationContext` + :param ctx: New application context + """ + raise NotImplementedError +
+
[docs] def set_security_context(self, ctx): + """ + Set the security context + + All the subsequent calls made using this + connector will use this as the security + context in the ExecutionContext + + :type ctx: :class:`vmware.vapi.core.SecurityContext` + :param ctx: New security context + """ + raise NotImplementedError +
+
[docs] def new_context(self): + """ + create new execution context object + + :rtype: :class:`vmware.vapi.core.ExecutionContext` + :return: execution context + """ + raise NotImplementedError +
+
[docs] def get_api_provider(self): + """ + get api provider + + :rtype: :class:`vmware.vapi.core.ApiProvider` + :return: api provider + """ + raise NotImplementedError
+
+ +
+
+
+
+
+ + +
+
+
+
+ + + + \ No newline at end of file diff --git a/vsphere/6.0/_modules/vmware/vapi/protocol/client/local_connector.html b/vsphere/6.0/_modules/vmware/vapi/protocol/client/local_connector.html new file mode 100644 index 00000000..791c8885 --- /dev/null +++ b/vsphere/6.0/_modules/vmware/vapi/protocol/client/local_connector.html @@ -0,0 +1,199 @@ + + + + + + + + + + vmware.vapi.protocol.client.local_connector — vCloud Suite SDK for Python 6.0.0 documentation + + + + + + + + + + + + + + +
+
+
+
+ +

Source code for vmware.vapi.protocol.client.local_connector

+"""
+Local connector
+"""
+
+__author__ = 'VMware, Inc.'
+__copyright__ = 'Copyright 2011-12 VMware, Inc.  All rights reserved. -- VMware Confidential'
+
+
+from vmware.vapi.protocol.client.connector import Connector
+from vmware.vapi.core import ExecutionContext, SecurityContext
+from vmware.vapi.lib.context import create_default_application_context
+
+
+
[docs]class LocalConnector(Connector): + """ + Protocol connection class to get direct access to ApiProvider + instead of going over the wire + """ + def __init__(self, api_provider): + """ + Initialize LocalConnector + + :type api_provider: :class:`vmware.vapi.core.ApiProvider` + :param api_provider: ApiProvider instance to be used + """ + self._api_provider = api_provider + self._application_ctx = None + self._security_ctx = None + Connector.__init__(self) + +
[docs] def connect(self): + """ + Create a connection. No-op for LocalConnector + """ + pass +
+
[docs] def disconnect(self): + """ + Disconnect from a connection. No-op for LocalConnector + """ + pass +
+
[docs] def set_application_context(self, ctx): + """ + Set the application context + + All the subsequent calls made using this + connector will use this as the application + context in the ExecutionContext + + :type ctx: :class:`vmware.vapi.core.ApplicationContext` + :param ctx: New application context + """ + self._application_ctx = ctx +
+
[docs] def set_security_context(self, ctx): + """ + Set the security context + + All the subsequent calls made using this + connector will use this as the security + context in the ExecutionContext + + :type ctx: :class:`vmware.vapi.core.SecurityContext` + :param ctx: New security context + """ + self._security_ctx = ctx +
+
[docs] def new_context(self): + """ + create new execution context object + + :rtype: :class:`vmware.vapi.core.ExecutionContext` + :return: execution context + """ + app_ctx = self._application_ctx + # Create a default application context only if + # the user has not provided anything + if app_ctx is None: + app_ctx = create_default_application_context() + sec_ctx = self._security_ctx + if sec_ctx is None: + sec_ctx = SecurityContext() + return ExecutionContext(app_ctx, sec_ctx) +
+
[docs] def get_api_provider(self): + """ + Returns the ApiProvider instance backing this connection + + :rtype: :class:`vmware.vapi.core.ApiProvider` + :return: ApiProvider instance + """ + return self._api_provider + +
+
[docs]def get_local_connector(api_provider): + """ + Creates and returns a local connection for the input ApiProvider + + :type api_provider: :class:`vmware.vapi.core.ApiProvider` + :param api_provider: ApiProvider instance + :rtype: :class:`vmware.vapi.protocol.client.local_connector.LocalConnector` + :return: Newly created protocol connection for the given ApiProvider + """ + return LocalConnector(api_provider)
+
+ +
+
+
+
+
+ + +
+
+
+
+ + + + \ No newline at end of file diff --git a/vsphere/6.0/_modules/vmware/vapi/protocol/client/msg/connector_factory.html b/vsphere/6.0/_modules/vmware/vapi/protocol/client/msg/connector_factory.html new file mode 100644 index 00000000..31ba0729 --- /dev/null +++ b/vsphere/6.0/_modules/vmware/vapi/protocol/client/msg/connector_factory.html @@ -0,0 +1,135 @@ + + + + + + + + + + vmware.vapi.protocol.client.msg.connector_factory — vCloud Suite SDK for Python 6.0.0 documentation + + + + + + + + + + + + + + +
+
+
+
+ +

Source code for vmware.vapi.protocol.client.msg.connector_factory

+"""
+Protocol connector factory
+"""
+
+__author__ = 'VMware, Inc.'
+__copyright__ = 'Copyright 2011-2012 VMware, Inc.  All rights reserved. -- VMware Confidential'
+
+import logging
+from vmware.vapi.lib.load import dynamic_import
+
+logger = logging.getLogger(__name__)
+
+
+
[docs]class ProtocolConnectorFactory(object): + """ Protocol connector factory """ + + def __init__(self): + """ Protocol connector factory init """ + self.connectors = { + # msg protocol name : constructor + 'json': 'vmware.vapi.protocol.client.msg.json_connector.get_protocol_connector', + } + +
[docs] def get_connector(self, protocol, *args, **kwargs): + """ + Create protocol connector + + :type protocol: :class:`str` + :param protocol: protocol name + :type args: :class:`tuple` + :param args: position parameters to protocol connector constructor + :type kwargs: :class:`dict` + :param kwargs: key parameters to protocol connector constructor + :rtype: :class:`vmware.vapi.protocol.client.connector.Connector` + :return: Connector object + """ + constructor = self.connectors.get(protocol) + if constructor is not None: + constructor = dynamic_import(constructor) + if constructor: + return constructor(*args, **kwargs)
+
+ +
+
+
+
+
+ + +
+
+
+
+ + + + \ No newline at end of file diff --git a/vsphere/6.0/_modules/vmware/vapi/protocol/client/msg/generic_connector.html b/vsphere/6.0/_modules/vmware/vapi/protocol/client/msg/generic_connector.html new file mode 100644 index 00000000..21a5268d --- /dev/null +++ b/vsphere/6.0/_modules/vmware/vapi/protocol/client/msg/generic_connector.html @@ -0,0 +1,189 @@ + + + + + + + + + + vmware.vapi.protocol.client.msg.generic_connector — vCloud Suite SDK for Python 6.0.0 documentation + + + + + + + + + + + + + + +
+
+
+
+ +

Source code for vmware.vapi.protocol.client.msg.generic_connector

+"""
+Generic client connector
+"""
+
+__author__ = 'VMware, Inc.'
+__copyright__ = 'Copyright 2012 VMware, Inc.  All rights reserved. -- VMware Confidential'
+
+
+import logging
+
+from vmware.vapi.protocol.client.connector import Connector
+from vmware.vapi.core import ExecutionContext, SecurityContext
+from vmware.vapi.lib.context import create_default_application_context
+
+logger = logging.getLogger(__name__)
+
+
+
[docs]class GenericConnector(Connector): + """ A generic protocol connector """ + + def __init__(self, rpc_provider, api_provider): + """ + Generic protocol connector init + + :type rpc_provider: :class:`vmware.vapi.protocol.client.rpc.provider.RpcProvider` + :param rpc_provider: rpc provider object + :type api_provider: :class:`vmware.vapi.core.ApiProvider` + :param api_provider: api provider object + """ + Connector.__init__(self) + self.rpc_provider = rpc_provider + self.api_provider = api_provider + self.session = None + self._application_ctx = None + self._security_ctx = None + +
[docs] def connect(self): + """ rpc provider connect """ + self.rpc_provider.connect() +
+
[docs] def disconnect(self): + """ rpc provider disconnect """ + self.rpc_provider.disconnect() +
+
[docs] def get_api_provider(self): + """ + get api provider + + :rtype: :class:`vmware.vapi.core.ApiProvider` + :return: api provider + """ + return self.api_provider +
+
[docs] def set_application_context(self, ctx): + """ + Set the application context + + All the subsequent calls made using this + connector will use this as the application + context in the ExecutionContext + + :type ctx: :class:`vmware.vapi.core.ApplicationContext` + :param ctx: New application context + """ + self._application_ctx = ctx +
+
[docs] def set_security_context(self, ctx): + """ + Set the security context + + All the subsequent calls made using this + connector will use this as the security + context in the ExecutionContext + + :type ctx: :class:`vmware.vapi.core.SecurityContext` + :param ctx: New security context + """ + self._security_ctx = ctx +
+
[docs] def new_context(self): + """ + create new execution context object + + :rtype: :class:`vmware.vapi.core.ExecutionContext` + :return: execution context + """ + app_ctx = self._application_ctx + # Create a default application context only if + # the user has not provided anything + if app_ctx is None: + app_ctx = create_default_application_context() + sec_ctx = self._security_ctx + if sec_ctx is None: + sec_ctx = SecurityContext() + return ExecutionContext(app_ctx, sec_ctx)
+
+ +
+
+
+
+
+ + +
+
+
+
+ + + + \ No newline at end of file diff --git a/vsphere/6.0/_modules/vmware/vapi/protocol/client/msg/json_connector.html b/vsphere/6.0/_modules/vmware/vapi/protocol/client/msg/json_connector.html new file mode 100644 index 00000000..e1c1c430 --- /dev/null +++ b/vsphere/6.0/_modules/vmware/vapi/protocol/client/msg/json_connector.html @@ -0,0 +1,223 @@ + + + + + + + + + + vmware.vapi.protocol.client.msg.json_connector — vCloud Suite SDK for Python 6.0.0 documentation + + + + + + + + + + + + + + +
+
+
+
+ +

Source code for vmware.vapi.protocol.client.msg.json_connector

+"""
+Json client handler
+"""
+
+__author__ = 'VMware, Inc.'
+__copyright__ = 'Copyright 2012-2014 VMware, Inc.  All rights reserved. -- VMware Confidential'
+
+
+import itertools
+import logging
+import six
+
+from vmware.vapi.core import ApiProvider
+from vmware.vapi.protocol.client.msg.generic_connector import GenericConnector
+from vmware.vapi.lib.constants import PROCESSORS
+from vmware.vapi.lib.load import import_multiple_classes
+
+from vmware.vapi.data.serializers.jsonrpc import (
+    JsonRpcDictToVapi,
+    vapi_jsonrpc_request_factory, deserialize_response,
+    vapi_jsonrpc_error_transport_error,
+    VAPI_INVOKE
+)
+
+logger = logging.getLogger(__name__)
+
+
+
[docs]class JsonClientProvider(ApiProvider): + """ Json rpc client provider """ + + def __init__(self, rpc_provider): + """ + Json rpc client provider init + + :type rpc_provider: :class:`vmware.vapi.protocol.client.rpc.provider.RpcProvider` + :param rpc_provider: rpc provider object + """ + + ApiProvider.__init__(self) + self.rpc_provider = rpc_provider + self.counter = itertools.count() + self.to_vapi = JsonRpcDictToVapi + + # Load all the post processors + self.post_processors = import_multiple_classes(__name__, + PROCESSORS) + +
[docs] def invoke(self, service_id, operation_id, input_value, ctx): + """ + Invokes the specified method using the input value and the + the execution context provided + + :type service_id: :class:`str` + :param service_id: Service identifier + :type operation_id: :class:`str` + :param operation_id: Operation identifier + :type input_value: :class:`vmware.vapi.data.value.DataValue` + :param input_value: method input parameters + :type ctx: :class:`vmware.vapi.core.ExecutionContext` + :param ctx: execution context object + :rtype: :class:`vmware.vapi.core.MethodResult` + :return: method result object + """ + + params = { + 'serviceId': service_id, + 'operationId': operation_id, + 'input': input_value, + 'ctx': ctx, + } + response = self._do_request(VAPI_INVOKE, params) + result = self.to_vapi.method_result(response.result) + return result + + # + ## vapi methods end +
+ def _do_request(self, method, params=None): + """ + Perform json rpc request + + :type method: :class:`str` + :param method: json rpc method name + :type params: :class:`dict` or None + :param params: json rpc method params + :rtype: :class:`vmware.vapi.data.serializer.jsonrpc.JsonRpcResponse` + :return: json rpc response + """ + + logger.debug('_do_request: request %s', method) + + if not self.rpc_provider.connect(): + logger.error('Connection refused') + raise vapi_jsonrpc_error_transport_error() + request_ctx = {'Content-Type': 'application/json'} + id_ = six.advance_iterator(self.counter) # atomic increment + id_ = str(id_) # TODO: Bypass java barf temporary + request = vapi_jsonrpc_request_factory(method=method, + params=params, + id=id_) + request_msg = request.serialize() + for processor in self.post_processors: + request_msg = processor.process(request_msg) + + logger.debug('_do_request: request %s', request_msg) + # do_request returns response_ctx, response_msg + _, response_msg = self.rpc_provider.do_request(request_ctx, request_msg) + logger.debug('_do_request: response %s', response_msg) + response = deserialize_response(response_msg) + request.validate_response(response) + if response.error is not None: + logger.error('_do_request: method %s response with error %s', + method, response.error) + raise response.error # pylint: disable=E0702 + return response + +
+
[docs]def get_protocol_connector(rpc_provider): + """ + Get protocol connector + + :type rpc_provider: :class:`vmware.vapi.protocol.client.rpc.provider.RpcProvider` + :param rpc_provider: rpc provider object + :rtype: :class:`vmware.vapi.protocol.client.connector.Connector` + :return: json rpc connector object + """ + api_provider = JsonClientProvider(rpc_provider) + connector = GenericConnector(rpc_provider, api_provider) + return connector
+
+ +
+
+
+
+
+ + +
+
+
+
+ + + + \ No newline at end of file diff --git a/vsphere/6.0/_modules/vmware/vapi/protocol/client/rpc/http_provider.html b/vsphere/6.0/_modules/vmware/vapi/protocol/client/rpc/http_provider.html new file mode 100644 index 00000000..fab99404 --- /dev/null +++ b/vsphere/6.0/_modules/vmware/vapi/protocol/client/rpc/http_provider.html @@ -0,0 +1,666 @@ + + + + + + + + + + vmware.vapi.protocol.client.rpc.http_provider — vCloud Suite SDK for Python 6.0.0 documentation + + + + + + + + + + + + + + +
+
+
+
+ +

Source code for vmware.vapi.protocol.client.rpc.http_provider

+"""
+Http protocol rpc provider
+"""
+
+__author__ = 'VMware, Inc.'
+__copyright__ = 'Copyright 2012-2014 VMware, Inc.  All rights reserved. -- VMware Confidential'
+
+
+import logging
+import threading
+import socket
+import sys
+import time
+import six
+from six.moves import urllib
+
+from six.moves import http_client
+try:
+    from select import poll, POLLIN
+except ImportError:
+    poll = False
+    try:
+        from select import select
+    except ImportError:
+        select = False
+
+from vmware.vapi.protocol.client.rpc.provider import RpcProvider
+from vmware.vapi.lib.addr_url_parser import parse_addr_url
+
+# Mostly reusing from pyVmomi/SoapAdapter. No point to reinvent so many wheel
+# for http
+# NYI: Use httplib2
+logger = logging.getLogger(__name__)
+
+
+#
+# Temporary workaround for Bug 1222549
+#
+# When client and server are using HTTP 1.1 with chunked encoding. Once server
+# sends all the data, it should sent a zero length chunk to indicate to the
+# client that server has sent all the data. In this case, if server closes the
+# session without sending a zero length chunk, client throws IncompleteRead
+# error.
+#
+# However, the issue is intermittent and is not reproducable.
+#
+# A possible fix has been suggested here:
+# http://bobrochel.blogspot.com/2010/11/bad-servers-chunked-encoding-and.html
+# i.e. Read the partial data and don't complain if we don't receive the zero
+# length chunk.
+#
+#
+
[docs]def patch_http_response_read(func): + """ + Wrapper function to patch the http read method to return the partial data + when the server doesn't send a zero length chunk + """ + def inner(*args): + """ + Function that implements the patch + """ + try: + return func(*args) + except http_client.IncompleteRead as e: + logger.exception('Did not receive zero length chunk from the server') + return e.partial + return inner + +
+http_client.HTTPResponse.read = patch_http_response_read(http_client.HTTPResponse.read) + + +
[docs]class UnixSocketConnection(http_client.HTTPConnection): + """ + Variant of http_client.HTTPConnection that supports HTTP + connections over Unix domain sockets. + """ + + def __init__(self, path): + """ + Initialize a Unix domain socket HTTP connection + + The HTTPConnection __init__ method expects a single argument, + which it interprets as the host to connect to. For this + class, we instead interpret the parameter as the filesystem + path of the Unix domain socket. + + :type path: :class:`str` + :param path: Unix domain socket path + """ + + # Pass '' as the host to HTTPConnection; it doesn't really matter + # what we pass (since we've overridden the connect method) as long + # as it's a valid string. + http_client.HTTPConnection.__init__(self, '') + self.path = path + +
[docs] def connect(self): + """ + Override the HTTPConnection connect method to connect to a + Unix domain socket. Obey the same contract as HTTPConnection.connect + which puts the socket in self.sock. + """ + + sock = socket.socket(socket.AF_UNIX, socket.SOCK_STREAM) + sock.connect(self.path) + self.sock = sock + +
+class _SslSocketWrapper(object): + """ + The http_client module requires its sockets to have a + makefile() method to provide a file-like interface (or rather + file-in-Python-like) to the socket. PyOpenSSL doesn't implement + makefile() as the semantics require files to call dup(2) on the + underlying file descriptors, something not easily done on SSL sockets. + + # TODO: This wrapper breaks when the server requests a renegotiation + """ + def __init__(self, sock): + """ + Initializes this class. + """ + self._sock = sock + + def __getattr__(self, name): + """ + Forward everything to underlying socket. + """ + return getattr(self._sock, name) + + def makefile(self, mode, bufsize=0): + """ + Fake makefile method. + + makefile() on normal file descriptors uses dup2(2), which doesn't work with + SSL sockets and therefore is not implemented by pyOpenSSL. This fake method + works with the http_client module, but might not work for other modules. + """ + # pylint: disable-msg=W0212 + return socket._fileobject(self._sock, mode, bufsize) + + +
[docs]class HttpsConnection(http_client.HTTPSConnection): + """ + Internal version of https connection + """ + + def __init__(self, *args, **kwargs): + """ + Internal version of https connection init + + :type args: :class:`tuple` + :param args: position parameters to :class:`http_client.HTTPSConnection` + :type kwargs: :class:`dict` + :param kwargs: key parameters to :class:`http_client.HTTPSConnection` + """ + # Only if the client requires SSL depend on SSL support + from vmware.vapi.lib.ssl import DefaultClientContextFactory + self._ssl_context_factory = kwargs.pop('ssl_context', + DefaultClientContextFactory()) + http_client.HTTPSConnection.__init__(self, *args, **kwargs) + + ## Override connect to allow us to use PyOpenSSL sockets +
[docs] def connect(self): + """ connect """ + if self._ssl_context_factory: + # Only if client requires SSL depend on SSL import + from OpenSSL import SSL + sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM) + context = self._ssl_context_factory.get_context() + ssl_sock = SSL.Connection(context, sock) + ssl_sock.connect((self.host, self.port)) + ssl_sock.do_handshake() + # Verify the python version + if sys.hexversion < 0x2060000: + self.sock = http_client.FakeSocket(sock, ssl_sock) + elif six.PY2: + self.sock = _SslSocketWrapper(ssl_sock) + else: + self.sock = sock + else: + http_client.HTTPSConnection.connect(self) + +
+
[docs]class GzipReader(object): + """ Gzip reader """ + GZIP = 1 + DEFLATE = 2 + + def __init__(self, rfile, encoding=GZIP, read_chunk_size=512): + """ + Gzip reader init + + :type rfile: :class:`file` + :param rfile: file object to read from + :type encoding: :class:`int` (``GzipReader.GZIP`` or ``GzipReader.DEFLATE``) + :param encoding: Zip stream encoding enum + :type read_chunk_size: :class:`int` + :param read_chunk_size: Read chunk size + """ + self.rfile = rfile + self.chunks = [] + self.buf_size = 0 # Remaining buffer + assert(encoding in (GzipReader.GZIP, GzipReader.DEFLATE)) + self.encoding = encoding + self.unzip = None + self.read_chunk_size = read_chunk_size + + def _create_unzip(self, first_chunk): + """ + create unzip + + :type first_chunk: :class:`str` + :param first_chunk: First chunk of read stream data + :rtype: :class:`str` + :return: Decompressed data + """ + import zlib + if self.encoding == GzipReader.GZIP: + wbits = zlib.MAX_WBITS + 16 + elif self.encoding == GzipReader.DEFLATE: + # Sniff out real deflate format + chunk_len = len(first_chunk) + # Assume raw deflate + wbits = -zlib.MAX_WBITS + if first_chunk[:3] == ['\x1f', '\x8b', '\x08']: + # gzip: Apache mod_deflate will send gzip. Yurk! + wbits = zlib.MAX_WBITS + 16 + elif chunk_len >= 2: + b0 = ord(first_chunk[0]) + b1 = ord(first_chunk[1]) + if (b0 & 0xf) == 8 and (((b0 * 256 + b1)) % 31) == 0: + # zlib deflate + wbits = min(((b0 & 0xf0) >> 4) + 8, zlib.MAX_WBITS) + else: + assert(False) + self.unzip = zlib.decompressobj(wbits) + return self.unzip + +
[docs] def read(self, num_bytes=-1): + """ + read + + :type num_bytes: :class:`int` + :param num_bytes: Number of decompressed bytes to read + :rtype: :class:`bytes` + :return: Decompressed data (len up to num_bytes) + """ + chunks = self.chunks + buf_size = self.buf_size + + while buf_size < num_bytes or num_bytes == -1: + # Read and decompress + chunk = self.rfile.read(self.read_chunk_size) + + if self.unzip is None: + self._create_unzip(chunk) + + if chunk: + inflated_chunk = self.unzip.decompress(chunk) + buf_size += len(inflated_chunk) + chunks.append(inflated_chunk) + else: + # Returns whatever we have + break + + if buf_size <= num_bytes or num_bytes == -1: + leftover_bytes = 0 + leftover_chunks = [] + else: + leftover_bytes = buf_size - num_bytes + # Adjust last chunk to hold only the left over bytes + last_chunk = chunks.pop() + chunks.append(last_chunk[:-leftover_bytes]) + leftover_chunks = [last_chunk[-leftover_bytes:]] + + self.chunks = leftover_chunks + self.buf_size = leftover_bytes + + buf = b''.join(chunks) + return buf + +
+
[docs]class HttpRpcProvider(RpcProvider): + """ http rpc provider """ + + def __init__(self, ssl_args, url): + """ + http rpc provider init + + :type ssl_args: :class:`dict` + :param ssl_args: ssl arguments + :type url: :class:`str` + :param url: url to connected to + """ + RpcProvider.__init__(self) + self.lock = threading.RLock() + self.ssl_enabled = False + self.ssl_args = ssl_args + + scheme, host, port, user, password, path, _ = parse_addr_url(url) + assert(scheme == 'http' or scheme == 'https') + if scheme == 'https': + self.ssl_enabled = True + assert(user is None and password is None) # NYI + if host.startswith('!'): + # Unix domain socket: hostname is '!' followed by + # the URL-encoded socket path + self.host = None + self.uds = urllib.parse.unquote(host[1:]).parse + # SSL currently not supported for Unix domain sockets + if self.ssl_enabled: + raise Exception('SSL not supported on Unix domain sockets') + else: + self.host = host + if port: + self.host += ':%d' % port + self.uds = None + self.path = path + self.cookie = '' + self.accept_compress_response = True + + self.pool = [] + self.pool_size = 8 + self.connection_pool_timeout = 8 * 60 # 8 minutes + + def __del__(self): + """ http rpc provider on delete """ + self.disconnect() + +
[docs] def connect(self): + """ + connect + + :rtype: :class:`vmware.vapi.protocol.client.rpc.provider.RpcProvider` + :return: http rpc provider + """ + return self +
+
[docs] def disconnect(self): + """ disconnect """ + pass +
+ def _get_connection(self): + """ + get connection from pool + + :rtype: :class:`http_client.HTTPConnection` + :return: http connection + """ + conn = None + with self.lock: + idle_connections = self._close_idle_connections() + if self.pool: + conn, _ = self.pool.pop(0) + self._close_connections(idle_connections) + + if not conn: + if self.ssl_enabled: + conn = HttpsConnection(self.host, **self.ssl_args) + elif self.uds: + conn = UnixSocketConnection(self.uds) + else: + conn = http_client.HTTPConnection(self.host) + + # Disable Nagle + self.disable_nagle(conn) + else: + # If we got an existing connection, verify the state + # of the socket + if self.is_connection_dropped(conn): + conn.close() + + return conn + + ## Clean up connection pool to throw away idle timed-out connections + # SoapStubAdapter lock must be acquired before this method is called. + def _close_idle_connections(self): + """ + close all idle connections + + :rtype: :class:`http_client.HTTPConnection` + :return: list of idle http connections + """ + idle_connections = [] + if self.connection_pool_timeout >= 0: + current_time = time.time() + for idx, (_, last_access_time) in enumerate(self.pool): + idle_time = current_time - last_access_time + if idle_time >= self.connection_pool_timeout: + idle_connections = self.pool[idx:] + self.pool = self.pool[:idx] + break + return idle_connections + + def _return_connection(self, conn): + """ + return a connection to pool + + :type conn: :class:`http_client.HTTPConnection` + :param conn: http connection + """ + with self.lock: + if len(self.pool) < self.pool_size: + self.pool.insert(0, (conn, time.time())) + conn = None + + if conn: + conn.close() + + def _drop_connections(self): + """ drop all connections """ + with self.lock: + connections = self.pool + self.pool = [] + self._close_connections(connections) + + @staticmethod +
[docs] def is_connection_dropped(conn): + """ + Returns True if the connection is dropped and should be closed. + + :type conn: :class:`http_client.HTTPConnection` + :param conn: HTTP connection object + :rtype: :class:`bool` + :return: True if the connection is dropped, False otherwise + """ + sock = getattr(conn, 'sock', False) + if not sock: + return False + + if poll: + # This version is better on platforms that support it. + p = poll() + p.register(sock, POLLIN) + for (fno, _) in p.poll(0.0): + if fno == sock.fileno(): + # Either data is buffered (bad), or the connection is + # dropped. + return True + elif select: + try: + # The return value is a triple of lists of objects that are + # ready. If there is a socket error, then the return list + # would be empty lists + ready_objects = select([sock], [], [], 0.0)[0] + return True if ready_objects else False + + except socket.error: + return True + + return False +
+ @staticmethod + def _close_connections(connections): + """ + close a list of connections + + :type connections: :class:`list` of :class:`http_client.HTTPConnection` + :param connections: a list of http connections + """ + for conn, _ in connections: + conn.close() + + @staticmethod +
[docs] def disable_nagle(conn): + """ + disable nagle algorithm for a connection + + :type conn: :class:`http_client.HTTPConnection` + :param conn: http connection + """ + + # Always disable NAGLE algorithm, but not for python 2.7 + # See pyVmomi/SoapAdapter.py for details + if sys.version_info[:2] < (2, 7): + return + + if not getattr(conn, 'connect'): + return + + org_connect = conn.connect + + def connect_disable_nagle(*args, **kwargs): + """ connect replacement with disable nagle """ + org_connect(*args, **kwargs) + sock = getattr(conn, 'sock') + if sock: + try: + sock.setsockopt(socket.IPPROTO_TCP, socket.TCP_NODELAY, 1) + except Exception: + pass + conn.connect = connect_disable_nagle +
+
[docs] def do_request(self, request_ctx, request): + """ + Do rpc request + + :type request_ctx: :class:`dict` of :class:`str`, :class:`str` + :param request_ctx: Request context dictionary. The valid key/value pairs are: + content-type, {as in http://www.w3.org/Protocols/rfc2616/rfc2616-sec14.html 14.17} + :type request: :class:`str` + :param request: The request body + + :rtype: :class:`tuple` of (:class:`dict` of :class:`str`, :class:`str`), + :class:`str` + :return: Tuple of (response_ctx, response_body) where + response_ctx: Response context dictionary. The valid key/value pairs are: + content-type, {as in http://www.w3.org/Protocols/rfc2616/rfc2616-sec14.html 14.17} + response: The response body + """ + # For http, content-type must be set + content_type = request_ctx.get('Content-Type') + if not content_type: + raise Exception('do_request: request_ctx content-type not set') + + response_ctx, response = {'Content-Type': content_type}, None + if request: + # Send request + headers = {'Cookie': self.cookie, + 'Content-Type': content_type} + if self.accept_compress_response: + headers['Accept-Encoding'] = 'gzip, deflate' + + try: + conn = self._get_connection() + logger.debug('do_request: request_len %d', len(request)) + + conn.request('POST', self.path, request, headers) + resp = conn.getresponse() + except (socket.error, http_client.HTTPException): + raise + + # Debug + # logger.debug('do_request: response headers', resp.getheaders()) + + cookie = resp.getheader('Set-Cookie') + if cookie: + self.cookie = cookie + + status = resp.status + if status == 200 or status == 500: + try: + encoding = resp.getheader('Content-Encoding', 'identity').lower() + if encoding == 'gzip': + resp_reader = GzipReader(resp, encoding=GzipReader.GZIP) + elif encoding == 'deflate': + resp_reader = GzipReader(resp, encoding=GzipReader.DEFLATE) + else: + resp_reader = resp + response = resp_reader.read() + + logger.debug('do_request: response len %d', len(response)) + except: + conn.close() + raise + else: + if resp_reader: + resp_reader.read() + self._return_connection(conn) + + content_type = resp.getheader('Content-Type') + if content_type: + response_ctx['Content-Type'] = content_type + else: + conn.close() + raise http_client.HTTPException('%d %s' % (resp.status, resp.reason)) + + if self.cookie: + response_ctx['Cookie'] = self.cookie + return response_ctx, response
+
+ +
+
+
+
+
+ + +
+
+
+
+ + + + \ No newline at end of file diff --git a/vsphere/6.0/_modules/vmware/vapi/protocol/client/rpc/provider.html b/vsphere/6.0/_modules/vmware/vapi/protocol/client/rpc/provider.html new file mode 100644 index 00000000..8e2aa582 --- /dev/null +++ b/vsphere/6.0/_modules/vmware/vapi/protocol/client/rpc/provider.html @@ -0,0 +1,149 @@ + + + + + + + + + + vmware.vapi.protocol.client.rpc.provider — vCloud Suite SDK for Python 6.0.0 documentation + + + + + + + + + + + + + + +
+
+
+
+ +

Source code for vmware.vapi.protocol.client.rpc.provider

+#!/usr/bin/env python
+
+"""
+rpc provider interface
+"""
+
+__author__ = 'VMware, Inc.'
+__copyright__ = 'Copyright 2011-2012 VMware, Inc.  All rights reserved. -- VMware Confidential'
+
+
+# Interface class, don't need to warn about unused argument / method
+# could be function, or abstracted class not referenced
+# pylint: disable=W0613,R0201,R0921
+
[docs]class RpcProvider(object): + """ Rpc provider interface """ + + def __init__(self): + """ Rpc provider interface init """ + pass + +
[docs] def connect(self): + """ + connect + + :rtype: :class:`vmware.vapi.protocol.client.rpc.provider.RpcProvider` + :return: a rpc provider + """ + raise NotImplementedError +
+
[docs] def disconnect(self): + """ disconnect """ + raise NotImplementedError +
+
[docs] def do_request(self, request_ctx, request): + """ + Do rpc request + + :type request_ctx: :class:`dict` of :class:`str`, :class:`str` + :param request_ctx: Request context dictionary. The valid key/value pairs are: + content-type, {as in http://www.w3.org/Protocols/rfc2616/rfc2616-sec14.html 14.17} + :type request: :class:`str` + :param request: The request body + + :rtype: :class:`tuple` of (:class:`dict` of :class:`str`, :class:`str`), + :class:`str` + :return: Tuple of (response_ctx, response_body) where + response_ctx: Response context dictionary. The valid key/value pairs are: + content-type, {as in http://www.w3.org/Protocols/rfc2616/rfc2616-sec14.html 14.17} + response: The response body + """ + raise NotImplementedError + + # NYI: Async request + #def do_request_async(self, request, on_response_cb, on_err_cb=None, timeout=-1): + # raise NotImplementedError
+
+ +
+
+
+
+
+ + +
+
+
+
+ + + + \ No newline at end of file diff --git a/vsphere/6.0/_modules/vmware/vapi/protocol/client/rpc/provider_factory.html b/vsphere/6.0/_modules/vmware/vapi/protocol/client/rpc/provider_factory.html new file mode 100644 index 00000000..1e5b1ad8 --- /dev/null +++ b/vsphere/6.0/_modules/vmware/vapi/protocol/client/rpc/provider_factory.html @@ -0,0 +1,136 @@ + + + + + + + + + + vmware.vapi.protocol.client.rpc.provider_factory — vCloud Suite SDK for Python 6.0.0 documentation + + + + + + + + + + + + + + +
+
+
+
+ +

Source code for vmware.vapi.protocol.client.rpc.provider_factory

+"""
+rpc provider factory
+"""
+
+__author__ = 'VMware, Inc.'
+__copyright__ = 'Copyright 2011-2014 VMware, Inc.  All rights reserved. -- VMware Confidential'
+
+import logging
+from vmware.vapi.lib.load import dynamic_import
+
+logger = logging.getLogger(__name__)
+
+
+
[docs]class RpcProviderFactory(object): + """ Rpc provider factory """ + def __init__(self): + """ Rpc provider factory init """ + self.rpc_providers = { + # rpc provider name : constructor / constructor name + 'http': 'vmware.vapi.protocol.client.rpc.http_provider.HttpRpcProvider', + 'https': 'vmware.vapi.protocol.client.rpc.http_provider.HttpRpcProvider', + 'requests': 'vmware.vapi.protocol.client.rpc.requests_provider.RequestsRpcProvider', + } + +
[docs] def get_rpc_provider(self, rpc_provider_name, *args, **kwargs): + """ + Create rpc provider + + :type rpc_provider_name: + :param rpc_provider_name: + :type args: :class:`tuple` + :param args: position parameters to rpc provider constructor + :type kwargs: :class:`dict` + :param kwargs: key parameters to rpc provider constructor + :rtype: :class:`vmware.vapi.protocol.client.rpc.provider.RpcProvider` + :return: Rpc provider object + """ + constructor = self.rpc_providers.get(rpc_provider_name) + if constructor is not None: + constructor = dynamic_import(constructor) + if constructor: + return constructor(*args, **kwargs)
+
+ +
+
+
+
+
+ + +
+
+
+
+ + + + \ No newline at end of file diff --git a/vsphere/6.0/_modules/vmware/vapi/protocol/client/rpc/requests_provider.html b/vsphere/6.0/_modules/vmware/vapi/protocol/client/rpc/requests_provider.html new file mode 100644 index 00000000..1faea4d7 --- /dev/null +++ b/vsphere/6.0/_modules/vmware/vapi/protocol/client/rpc/requests_provider.html @@ -0,0 +1,191 @@ + + + + + + + + + + vmware.vapi.protocol.client.rpc.requests_provider — vCloud Suite SDK for Python 6.0.0 documentation + + + + + + + + + + + + + + +
+
+
+
+ +

Source code for vmware.vapi.protocol.client.rpc.requests_provider

+"""
+RPC Provider using Requests Library
+"""
+
+__author__ = 'VMware, Inc.'
+__copyright__ = 'Copyright 2014 VMware, Inc.  All rights reserved. -- VMware Confidential'
+
+
+import logging
+import requests
+
+from vmware.vapi.protocol.client.rpc.provider import RpcProvider
+
+logger = logging.getLogger(__name__)
+
+
+
[docs]class RequestsRpcProvider(RpcProvider): + """ + vAPI RPC provider using requests library + """ + + def __init__(self, session, url, timeout, pool_size): + """ + Initialize RequestsRpcProvider + + :type session: :class:`requests.Session` + :param session: Session object + :type msg_protocol: :class:`str` + :param msg_protocol: Message protocol to be used for the connection. Valid + values are 'json'. + :type url: :class:`str` + :param url: HTTP(S) URL to be used + :type timeout: :class:`int` + :param timeout: Request timeout + :type pool_size: :class:`int` + :param pool_size: Connection pool size to be used + """ + RpcProvider.__init__(self) + self._session = session + self._url = url + self._pool_size = pool_size + self._timeout = timeout + + def __del__(self): + """ Requests rpc provider on delete """ + self.disconnect() + +
[docs] def connect(self): + """ + connect + + :rtype: :class:`vmware.vapi.protocol.client.rpc.provider.RpcProvider` + :return: http rpc provider + """ + adapter = requests.adapters.HTTPAdapter( + pool_connections=self._pool_size, + pool_maxsize=self._pool_size) + self._session.mount('http://', adapter) + return self +
+
[docs] def disconnect(self): + """ disconnect """ + pass +
+
[docs] def do_request(self, request_ctx, request): + """ + Do rpc request + + :type request_ctx: :class:`dict` of :class:`str`, :class:`str` + :param request_ctx: Request context dictionary. The valid key/value pairs are: + content-type, {as in http://www.w3.org/Protocols/rfc2616/rfc2616-sec14.html 14.17} + :type request: :class:`str` + :param request: The request body + + :rtype: :class:`tuple` of (:class:`dict` of :class:`str`, :class:`str`), + :class:`str` + :return: Tuple of (response_ctx, response_body) where + response_ctx: Response context dictionary. The valid key/value pairs are: + content-type, {as in http://www.w3.org/Protocols/rfc2616/rfc2616-sec14.html 14.17} + response: The response body + """ + headers = request_ctx + headers['Content-length'] = '%d' % len(request) + + output = self._session.post(url=self._url, + data=request, + headers=headers, + timeout=self._timeout) + # Raise an error if status is 4XX or 5XX + output.raise_for_status() + response_ctx, response = {}, None + if output.status_code == requests.codes.ok: # pylint: disable=E1101 + response = output.content + content_type = output.headers.get('content-type') + if content_type: + response_ctx['Content-Type'] = content_type + return response_ctx, response
+
+ +
+
+
+
+
+ + +
+
+
+
+ + + + \ No newline at end of file diff --git a/vsphere/6.0/_modules/vmware/vapi/protocol/common/lib.html b/vsphere/6.0/_modules/vmware/vapi/protocol/common/lib.html new file mode 100644 index 00000000..47914036 --- /dev/null +++ b/vsphere/6.0/_modules/vmware/vapi/protocol/common/lib.html @@ -0,0 +1,121 @@ + + + + + + + + + + vmware.vapi.protocol.common.lib — vCloud Suite SDK for Python 6.0.0 documentation + + + + + + + + + + + + + + +
+
+
+
+ +

Source code for vmware.vapi.protocol.common.lib

+"""
+Common libraries
+"""
+
+__author__ = 'VMware, Inc.'
+__copyright__ = 'Copyright 2012 VMware, Inc.  All rights reserved. -- VMware Confidential'
+
+
+
[docs]class RequestProcessor(object): + """ + Implementations of this interface might be attached to client + :class:`vmware.vapi.core.ApiProvider` implementations as request post-processors + or to the server :class:`vmware.vapi.core.ApiProvider` implementations as + pre-processors + """ +
[docs] def process(self, message): + """ + Processes and possibly modifies the provided request byte array + + :type message: :class:`str` + :param message: request message. cannot be null. If text is passed as + it MUST be UTF-8 encoded. + :rtype: :class:`str` + :return: result of the processor. cannot be null. If text is returned it + MUST be UTF-8 encoded. + """ + raise NotImplementedError
+
+ +
+
+
+
+
+ + +
+
+
+
+ + + + \ No newline at end of file diff --git a/vsphere/6.0/_modules/vmware/vapi/protocol/common/transport/chunking.html b/vsphere/6.0/_modules/vmware/vapi/protocol/common/transport/chunking.html new file mode 100644 index 00000000..aad0ccee --- /dev/null +++ b/vsphere/6.0/_modules/vmware/vapi/protocol/common/transport/chunking.html @@ -0,0 +1,406 @@ + + + + + + + + + + vmware.vapi.protocol.common.transport.chunking — vCloud Suite SDK for Python 6.0.0 documentation + + + + + + + + + + + + + + +
+
+
+
+ +

Source code for vmware.vapi.protocol.common.transport.chunking

+#!/usr/bin/env python
+
+"""
+Chunking helpers
+"""
+__author__ = 'VMware, Inc.'
+__copyright__ = 'Copyright 2012 VMware, Inc.  All rights reserved. -- VMware Con fidential'
+
+import logging
+
+
+logger = logging.getLogger(__name__)
+
+DEFAULT_CHUNK_SIZE = 4096
+DEFAULT_CHUNK_WINDOWS_SIZE = 16 * DEFAULT_CHUNK_SIZE
+DEFAULT_WRAP_AROUND_ID = 4294967296
+
+
+
[docs]class CrazyChunkWriter(object): + """ Testing class for chunking """ + def __init__(self, chunked_write_cb): + """ + Testing class for chunking init + + :type chunked_write_cb: function + :param chunked_write_cb: write callback + """ + self._reordered_chunks = [] + self._write_cb = chunked_write_cb + self._dup_prop_precentage = 20 + + import random + self.random = random + +
[docs] def chunked_write_cb(self, chunk_id, fin, data): + """ + Chunked write callback. Send chunk in random order / dup + + :type chunk_id: :class:`int` + :param chunk_id: Chunk id + :type fin: :class:`bool` + :param fin: fin bit + :type data: :class:`str` + :param data: chunked data + """ + if not self._write_cb: + return + + self._reordered_chunks.append((chunk_id, fin, data)) + if fin: + rand_order = list(range(0, len(self._reordered_chunks))) + self.random.shuffle(rand_order) + for idx in rand_order: + chunk_id, fin, data = self._reordered_chunks[idx] + self._write_cb(chunk_id=chunk_id, fin=fin, data=data) + # Once in a while, send a dup + if self.random.randint(0, 99) < self._dup_prop_precentage: + self.send_random_dup() + # TODO; Test wrap around + self._reordered_chunks = [] + self._write_cb = None +
+
[docs] def send_random_dup(self): + """ Send random duplicated packet """ + dup_idx = self.random.randint(0, len(self._reordered_chunks) - 1) + chunk_id, fin, data = self._reordered_chunks[dup_idx] + self._write_cb(chunk_id=chunk_id, fin=fin, data=data) + +
+
[docs]class BufferedChunker(object): + """ Buffered chunker """ + def __init__(self, chunked_write_cb, chunk_size=DEFAULT_CHUNK_SIZE): + """ + Buffered chunker init + + :type chunked_write_cb: function + :param chunked_write_cb: chunked write callback + :type chunk_size: :class:`int` + :param chunk_size: chunk size + """ + self.chunk_id = 0 + self.chunk_size = chunk_size + self.buf = [] + self.buf_size = 0 + self.wrap_around_id = DEFAULT_WRAP_AROUND_ID + self.chunked_write_cb = chunked_write_cb + + def _write_chunk(self, fin=False): + """ + Internal write a chunk + + :type fin: :class:`bool` + :param fin: fin bit + """ + if not self.chunked_write_cb: + return + + if self.buf_size > self.chunk_size: + leftover_bytes = self.buf_size - self.chunk_size + else: + leftover_bytes = 0 + + chunks = self.buf + if leftover_bytes > 0: + # Split the last chunk + last_chunk = chunks.pop() + chunks.append(last_chunk[:-leftover_bytes]) + leftover_chunks = [last_chunk[-leftover_bytes:]] + else: + leftover_chunks = [] + + # Write chunks + if len(chunks) > 0: + data = ''.join(chunks) + else: + data = None + self.chunked_write_cb(chunk_id=self.chunk_id, fin=fin, data=data) + self.chunk_id = (self.chunk_id + 1) % self.wrap_around_id + + # Reset state + self.buf_size = leftover_bytes + self.buf = leftover_chunks + +
[docs] def write(self, data): + """ + write + + :type data: :class:`str` + :param data: data to write + """ + if data is None or len(data) == 0: + return + + data_len = len(data) + self.buf_size += data_len + self.buf.append(data) + while self.buf_size >= self.chunk_size: + self._write_chunk() +
+
[docs] def flush(self): + """ flush """ + if self.chunk_size: + self._write_chunk() +
+ def _close(self): + """ internal close """ + # Make sure it send the fin bit + self._write_chunk(True) + self.chunked_write_cb = None + +
[docs] def close(self): + """ close """ + self._close() +
+ def __del__(self): + self._close() + +
+
[docs]class ChunksHandler(object): + """ Chunk handler """ + def __init__(self, + chunks_ready_cb, + chunks_abort_cb=None, + chunk_window_buf=DEFAULT_CHUNK_WINDOWS_SIZE, + wrap_around_id=DEFAULT_WRAP_AROUND_ID): + """ + Chunk handler init + + :type chunks_ready_cb: function + :param chunks_ready_cb: Chunk ready callback + :type chunks_abort_cb: function + :param chunks_abort_cb: Chunk abort callback + :type chunk_window_buf: :class:`int` + :param chunk_window_buf: Chunk windows buffer size (in bytes) + :type wrap_around_id: :class:`int` + :param wrap_around_id: Chunk wrap around id + """ + self.expected_chunk_id = 0 + self.wrap_around_id = wrap_around_id + self.chunk_window_width = min(wrap_around_id / 8, 256) + + self.chunk_window_buf = chunk_window_buf + + self.chunks_ready_cb = chunks_ready_cb + self.chunks_abort_cb = chunks_abort_cb + self.chunks = {} + + def _in_range(self, chunk_id): + """ + Chunk id in current receive windows + + :type chunk_id: :class:`int` + :param chunk_id: Chunk id + :rtype: :class:`bool` + :return: True if chunk id in current receive window + """ + right_window_id = self.expected_chunk_id + self.chunk_window_width + if right_window_id >= self.wrap_around_id: + # Handle wrap around of id + if ((chunk_id >= self.expected_chunk_id and + chunk_id < self.wrap_around_id) or + (chunk_id < (right_window_id % self.wrap_around_id))): + return True + elif ((chunk_id >= self.expected_chunk_id and + chunk_id < right_window_id)): + return True + return False + +
[docs] def add_chunk(self, chunk_id, fin, body): + """ + got a chunk, add to handler + + :type chunk_id: :class:`int` + :param chunk_id: Chunk id + :type fin: :class:`bool` + :param fin: fin bit + :type data: :class:`str` + :param data: chunked data + """ + # Reassemble the chunked body + done = True + + if self.expected_chunk_id == chunk_id: + # Expecting this chunk_id, push msg up + self.chunks_ready_cb(body, done=fin) + self.expected_chunk_id = (self.expected_chunk_id + 1) % \ + self.wrap_around_id + + # Don't push buffered chunks up after fin + while not fin: + chunk_tuple = self.chunks.pop(self.expected_chunk_id, None) + if chunk_tuple: + fin, body = chunk_tuple + self.chunks_ready_cb(body, done=fin) + self.expected_chunk_id = (self.expected_chunk_id + 1) % \ + self.wrap_around_id + self.chunk_window_buf += len(body) + else: + break + + if fin: + self.chunks = {} + + done = fin + elif self._in_range(chunk_id): + if self.chunk_window_buf > len(body): + # Don't allow duplicated chunk + if chunk_id not in self.chunks: + self.chunks[chunk_id] = (fin, body) + self.chunk_window_buf -= len(body) + else: + # Duplicated chunk + logger.debug('add_chunk: Duplicated chunk (%d)', chunk_id) + done = False + else: + # If chunk windows is full, log and bail out + # Call chunks abort + if self.chunks_abort_cb: + self.chunks_abort_cb() + self.chunks = {} + logger.warning('add_chunk: Not enough buffer (%d)' + + 'Expected chunk %d never show up', + self.chunk_window_buf, self.expected_chunk_id) + assert(done is True) + else: + # Chunk id totally outside tolerable windows range. Done + logger.warning('add_chunk: Chunk id outside range (%d)', chunk_id) + assert(done is True) + + return done + +
+
[docs]class ChunkedMsgAccumulator(ChunksHandler): + """ Chunked message accumulator """ + def __init__(self, completed_msg_cb, aborted_msg_cb=None): + """ + Chunked message accumulator init + + :type completed_msg_cb: function + :param completed_msg_cb: message completed callback + :type aborted_msg_cb: function + :param completed_msg_cb: message aborted callback + """ + ChunksHandler.__init__(self, + chunks_ready_cb=self._accumulate_response, + chunks_abort_cb=self._abort) + self._completed_msg_cb = completed_msg_cb + self._aborted_msg_cb = aborted_msg_cb + self._msg_chunks = [] + + def _accumulate_response(self, body, done=False): + """ + Accumulated chunked msg cb + Send the completed msg up after all chunks arrived + + :type body: :class:`str` + :param body: chunked response message to accumulate + :type done: :class:`bool` + :param done: response message done or not + """ + if self._completed_msg_cb: + if body: + self._msg_chunks.append(body) + if done: + msg = ''.join(self._msg_chunks) + self._completed_msg_cb(msg) + self._completed_msg_cb = None + + def _abort(self): + """ Chunks abort callback """ + if self._aborted_msg_cb: + self._aborted_msg_cb()
+
+ +
+
+
+
+
+ + +
+
+
+
+ + + + \ No newline at end of file diff --git a/vsphere/6.0/_modules/vmware/vapi/protocol/server/api_handler.html b/vsphere/6.0/_modules/vmware/vapi/protocol/server/api_handler.html new file mode 100644 index 00000000..e594dccd --- /dev/null +++ b/vsphere/6.0/_modules/vmware/vapi/protocol/server/api_handler.html @@ -0,0 +1,149 @@ + + + + + + + + + + vmware.vapi.protocol.server.api_handler — vCloud Suite SDK for Python 6.0.0 documentation + + + + + + + + + + + + + + +
+
+
+
+ +

Source code for vmware.vapi.protocol.server.api_handler

+"""
+Api handler interface
+"""
+
+__author__ = 'VMware, Inc.'
+__copyright__ = 'Copyright 2011-2012 VMware, Inc.  All rights reserved. -- VMware Confidential'
+
+
+
[docs]class ApiHandler(object): # pylint: disable=R0922 + """ Generic api handler interface """ + + def __init__(self): + """ Generic api handler interface init """ + pass + +
[docs] def handle_request(self, request): + """ + handle request + + :type: :class:`str` + :param: request string + :rtype: :class:`str` + :return: response string + """ + raise NotImplementedError + +
+
[docs]class AsyncApiHandler(ApiHandler): # pylint: disable=R0922 + """ Callback based AsyncApiHandler """ + + # Current states + (SUCCESS, ERROR, PENDING, CANCELLED) = (1 << 0, 1 << 1, 1 << 2, 1 << 3) + VALID_STATES = (SUCCESS, ERROR, PENDING, CANCELLED) + END_STATES = (SUCCESS, ERROR, CANCELLED) + + def __init__(self): + """ Callback based AsyncApiHandler init """ + ApiHandler.__init__(self) + +
[docs] def async_handle_request(self, request, state_change_cb=None): + """ + async handle request + + :type request: :class:`str` + :param request: request string + :type state_change_cb: function + :param state_change_cb: state change callback + def state_change_cb(state, # One of the valid state + response) # Response value associated with state + # SUCCESS: response is the request response msg + # ERROR: response is the exception thrown (or error response msg?) + # PENDING: response is the progress (0 - 100) + # CANCELLED: None + """ + raise NotImplementedError
+
+ +
+
+
+
+
+ + +
+
+
+
+ + + + \ No newline at end of file diff --git a/vsphere/6.0/_modules/vmware/vapi/protocol/server/async_api_handler_adapter.html b/vsphere/6.0/_modules/vmware/vapi/protocol/server/async_api_handler_adapter.html new file mode 100644 index 00000000..f9b96859 --- /dev/null +++ b/vsphere/6.0/_modules/vmware/vapi/protocol/server/async_api_handler_adapter.html @@ -0,0 +1,141 @@ + + + + + + + + + + vmware.vapi.protocol.server.async_api_handler_adapter — vCloud Suite SDK for Python 6.0.0 documentation + + + + + + + + + + + + + + +
+
+
+
+ +

Source code for vmware.vapi.protocol.server.async_api_handler_adapter

+"""
+Async api handler adapter
+"""
+
+__author__ = 'VMware, Inc.'
+__copyright__ = 'Copyright 2011 VMware, Inc.  All rights reserved. -- VMware Confidential'
+
+import logging
+
+from vmware.vapi.protocol.server.api_handler import AsyncApiHandler
+
+logger = logging.getLogger(__name__)
+
+
+
[docs]class PooledAsyncApiHandlerAdapter(AsyncApiHandler): + """ Pooled async api handler adapter """ + def __init__(self, api_handler, workers_pool): + """ + Pooled async api handler adapter init + + :type api_handler: :class:`vmware.vapi.protocol.server.api_handler.ApiHandler` + :param api_handler: api handler + :type workers_pool: :class:`object` with function 'queue_work'. + e.g. :class:`vmware.vapi.lib.thread_pool.ThreadPool` + :param workers_pool: worker pool object + """ + AsyncApiHandler.__init__(self) + self.handler = api_handler + self.workers_pool = workers_pool + +
[docs] def async_handle_request(self, request, state_change_cb=None): + def do_work(): + """ do work """ + try: + response = self.handler.handle_request(request) + if state_change_cb: + state_change_cb(self.SUCCESS, response) + except Exception as err: + import traceback + stackTrace = traceback.format_exc() + logger.critical(stackTrace) + if state_change_cb: + state_change_cb(self.ERROR, err) + self.workers_pool.queue_work(do_work) +
+
[docs] def handle_request(self, request): + raise NotImplementedError
+
+ +
+
+
+
+
+ + +
+
+
+
+ + + + \ No newline at end of file diff --git a/vsphere/6.0/_modules/vmware/vapi/protocol/server/msg/handler_factory.html b/vsphere/6.0/_modules/vmware/vapi/protocol/server/msg/handler_factory.html new file mode 100644 index 00000000..73f69659 --- /dev/null +++ b/vsphere/6.0/_modules/vmware/vapi/protocol/server/msg/handler_factory.html @@ -0,0 +1,135 @@ + + + + + + + + + + vmware.vapi.protocol.server.msg.handler_factory — vCloud Suite SDK for Python 6.0.0 documentation + + + + + + + + + + + + + + +
+
+
+
+ +

Source code for vmware.vapi.protocol.server.msg.handler_factory

+"""
+Protocol handler factory
+"""
+
+__author__ = 'VMware, Inc.'
+__copyright__ = 'Copyright 2011-2012 VMware, Inc.  All rights reserved. -- VMware Confidential'
+
+import logging
+from vmware.vapi.lib.load import dynamic_import
+
+logger = logging.getLogger(__name__)
+
+
+
[docs]class ProtocolHandlerFactory(object): + """ Protocol handler factory """ + + def __init__(self): + """ Protocol handler factory init """ + self.handlers = { + # protocol name : constructor / constructor name + 'json': 'vmware.vapi.protocol.server.msg.json_handler.get_protocol_handler', + } + +
[docs] def get_handler(self, protocol_name, *args, **kwargs): + """ + Create protocol handler + + :type protocol: :class:`str` + :param protocol: protocol name + :type args: :class:`tuple` + :param args: position parameters to protocol handler constructor + :type kwargs: :class:`dict` + :param kwargs: key parameters to protocol handler constructor + :rtype: :class:`vmware.vapi.protocol.server.api_handler.ApiHandler` + :return: Api handler object + """ + constructor = self.handlers.get(protocol_name) + if constructor is not None: + constructor = dynamic_import(constructor) + if constructor: + return constructor(*args, **kwargs)
+
+ +
+
+
+
+
+ + +
+
+
+
+ + + + \ No newline at end of file diff --git a/vsphere/6.0/_modules/vmware/vapi/protocol/server/msg/json_handler.html b/vsphere/6.0/_modules/vmware/vapi/protocol/server/msg/json_handler.html new file mode 100644 index 00000000..1a8e9ff0 --- /dev/null +++ b/vsphere/6.0/_modules/vmware/vapi/protocol/server/msg/json_handler.html @@ -0,0 +1,264 @@ + + + + + + + + + + vmware.vapi.protocol.server.msg.json_handler — vCloud Suite SDK for Python 6.0.0 documentation + + + + + + + + + + + + + + +
+
+
+
+ +

Source code for vmware.vapi.protocol.server.msg.json_handler

+"""
+Json rpc server side handler
+"""
+
+__author__ = 'VMware, Inc.'
+__copyright__ = 'Copyright 2012-2013 VMware, Inc.  All rights reserved. -- VMware Confidential'
+
+
+import logging
+import traceback
+
+from vmware.vapi.protocol.server.api_handler import ApiHandler
+from vmware.vapi.lib.constants import PROCESSORS
+from vmware.vapi.lib.load import import_multiple_classes
+from vmware.vapi.data.serializers.jsonrpc import (
+   JsonRpcDictToVapi,
+   JsonRpcError,
+   vapi_jsonrpc_response_factory, vapi_jsonrpc_error_invalid_request,
+   vapi_jsonrpc_error_parse_error, vapi_jsonrpc_error_internal_error,
+   vapi_jsonrpc_error_method_not_found, vapi_jsonrpc_error_invalid_params,
+   deserialize_request, VAPI_INVOKE)
+from vmware.vapi.lib.profiler import profile
+
+logger = logging.getLogger(__name__)
+
+
+
[docs]class JsonApiHandler(ApiHandler): + """ Json rpc api handler """ + + def __init__(self, provider): + """ + Json rpc api handler init + + :type provider: :class:`vmware.vapi.core.ApiProvider` + :param provider: api provider object + """ + ApiHandler.__init__(self) + self.ops = { + VAPI_INVOKE: self.invoke, + } + self.provider = provider + self.to_vapi = JsonRpcDictToVapi + + # Load all the pre processors + self.pre_processors = import_multiple_classes(__name__, + PROCESSORS) + + @profile +
[docs] def handle_request(self, request_str): + """ + Handle a vapi request + + :type request_str: :class:`str` + :param request_str: json rpc request string + :rtype: :class:`str` + :return: response string + """ + request = None + request_method = None + response_str = None + + # NYI: Need to sanitize password / escape the user str + # Bug No: 1050609 + logger.debug('request_str: "%s"', request_str) + try: + # Execute all the pre processors + try: + for processor in self.pre_processors: + request_str = processor.process(request_str) + except Exception as err: + logger.debug('Encountered error during preprocessing' + 'of JSON request %s', repr(request_str)) + raise vapi_jsonrpc_error_invalid_request(err) + + try: + request = deserialize_request(request_str) + except JsonRpcError as err: + raise + except Exception as err: + logger.debug('Deserialize error %s', repr(request_str)) + raise vapi_jsonrpc_error_parse_error(err) + + try: + request_method = request.method + handler = self.ops[request_method] + except KeyError as err: + # No such method + logger.error('No such method: %s', request_method) + # raise vapi_jsonrpc_error_method_not_found() + raise vapi_jsonrpc_error_method_not_found() + + # Invoke method + result = handler(request) + + # Serialize response + response = vapi_jsonrpc_response_factory(request, result=result) + response_str = response.serialize() + except JsonRpcError as err: + logger.debug('JsonRpcError callstack: %s: %s', + request_method, traceback.format_exc()) + response = vapi_jsonrpc_response_factory(request, error=err) + response_str = response.serialize() + #except CoreException, err: + # # NYI: We should *NEVER* see the core exception. Just in case, we + # # should do the right thing + # # For now, treated as normal Exception + # logger.debug('Core exception callstack: %s: %s', + # request_method, traceback.format_exc()) + except Exception as err: + # All other errors => internal server error + logger.debug('Exception callstack: %s: %s', + request_method, traceback.format_exc()) + error = vapi_jsonrpc_error_internal_error(str(err)) + response = vapi_jsonrpc_response_factory(request, error=error) + response_str = response.serialize() + # NYI: Need to sanitize password + # Bug No: 1050609 + logger.debug('response_str: "%s"', response_str) + return response_str +
+ @staticmethod + def _verify_no_input_params(request): + """ + Verify no input params is given + + :type request: :class:`vmware.vapi.data.serializer.jsonrpc.JsonRpcRequest` + :param request: json rpc request + """ + if request.params: + logger.error('Unexpected input params %s', request.method) + raise vapi_jsonrpc_error_invalid_params() + +
[docs] def invoke(self, request): + """ + Invokes a specified method given an execution context, a method + identifier and method input parameter(s) + + :type request: :class:`vmware.vapi.data.serializer.jsonrpc.JsonRpcRequest` + :param request: json rpc request object + :rtype: :class:`dict` + :return: Result of the method invocation + """ + try: + params = request.params + service_id = str(params.get('serviceId', '')) + operation_id = str(params.get('operationId', '')) + input_value = self.to_vapi.data_value(params.get('input')) + ctx = self.to_vapi.execution_context(params.get('ctx')) + except Exception: + raise vapi_jsonrpc_error_invalid_params() + + # Invoke method + invoke_result = self.provider.invoke( + service_id, operation_id, input_value, ctx) + + # Build result + return invoke_result + +
+
[docs]def get_protocol_handler(provider): + """ + Get protocol handler + + :type provider: :class:`vmware.vapi.core.ApiProvider` + :param provider: api provider object + :rtype :class:`vmware.vapi.protocol.server.api_handler.ApiHandler` + :return: json rpc api handler object + """ + api_handler = JsonApiHandler(provider) + return api_handler
+
+ +
+
+
+
+
+ + +
+
+
+
+ + + + \ No newline at end of file diff --git a/vsphere/6.0/_modules/vmware/vapi/protocol/server/transport/async_protocol_handler.html b/vsphere/6.0/_modules/vmware/vapi/protocol/server/transport/async_protocol_handler.html new file mode 100644 index 00000000..b9e3b489 --- /dev/null +++ b/vsphere/6.0/_modules/vmware/vapi/protocol/server/transport/async_protocol_handler.html @@ -0,0 +1,161 @@ + + + + + + + + + + vmware.vapi.protocol.server.transport.async_protocol_handler — vCloud Suite SDK for Python 6.0.0 documentation + + + + + + + + + + + + + + +
+
+
+
+ +

Source code for vmware.vapi.protocol.server.transport.async_protocol_handler

+#!/usr/bin/env python
+
+"""
+Async protocol handler interface
+"""
+
+__author__ = 'VMware, Inc.'
+__copyright__ = 'Copyright 2011-2012 VMware, Inc.  All rights reserved. -- VMware Confidential'
+
+
+# Interface class, don't need to warn about unused argument / method
+# could be function, or abstracted class not referenced
+# pylint: disable=W0613,R0201,R0921
+
[docs]class AsyncProtocolHandler(object): + """ Async protocol handler """ + + def __init__(self): + """ Async protocol handler init """ + pass + +
[docs] class DataHandler(object): + """ Async protocol data handler """ + def __init__(self): + """ Async protocol data handler init """ + pass + +
[docs] def data_ready(self, data): + """ + Callback when data arrived + + :type data: :class:`str` + :param data: data arrived + """ + raise NotImplementedError +
+
[docs] def data_end(self): + """ Callback when connection was closed """ + raise NotImplementedError +
+
[docs] def data_abort(self): + """ Callback when connection was aborted """ + raise NotImplementedError +
+
[docs] def can_read(self): + """ + Used to throttle the lower layer from sending more data + + :rtype: :class:`bool` + :return: True if can accept data. False otherwise + """ + return True +
+
[docs] def get_data_handler(self, connection): + """ + get data handler + + connection must support the follow: + write(data) : function : write data + flush() : function : flush data + close() : function : close the connection + + :type connection: :class:`file` + :param connection: connection + :rtype: :class:`AsyncProtocolHandler.DataHandler` + :return: A logical data handler for this connection + """ + raise NotImplementedError
+
+ +
+
+
+
+
+ + +
+
+
+
+ + + + \ No newline at end of file diff --git a/vsphere/6.0/_modules/vmware/vapi/protocol/server/transport/async_server_adapter_factory.html b/vsphere/6.0/_modules/vmware/vapi/protocol/server/transport/async_server_adapter_factory.html new file mode 100644 index 00000000..9e8f3a88 --- /dev/null +++ b/vsphere/6.0/_modules/vmware/vapi/protocol/server/transport/async_server_adapter_factory.html @@ -0,0 +1,137 @@ + + + + + + + + + + vmware.vapi.protocol.server.transport.async_server_adapter_factory — vCloud Suite SDK for Python 6.0.0 documentation + + + + + + + + + + + + + + +
+
+
+
+ +

Source code for vmware.vapi.protocol.server.transport.async_server_adapter_factory

+#!/usr/bin/env python
+
+"""
+Async server adapter factory
+"""
+
+__author__ = 'VMware, Inc.'
+__copyright__ = 'Copyright 2011-2012 VMware, Inc.  All rights reserved. -- VMware Confidential'
+
+import logging
+from vmware.vapi.lib.load import dynamic_import
+
+logger = logging.getLogger(__name__)
+
+
+
[docs]class AsyncServerAdapterFactory(object): + """ async server adapter factory """ + def __init__(self): + """ async server adapter factory init """ + self.adapters = { + # adapter name : constructor / constructor name + 'http': 'vmware.vapi.protocol.server.transport.msg_handler.MsgBasedProtocolHandler', + 'https': 'vmware.vapi.protocol.server.transport.msg_handler.MsgBasedProtocolHandler', + } + +
[docs] def get_adapter(self, server_adapter_name, *args, **kwargs): + """ + get async server adapter + + :type server_adapter_name: :class:`str` + :param server_adapter_name: server adapter name + :type args: :class:`tuple` + :param args: position parameters to server adapter + :type kwargs: :class:`dict` + :param kwargs: key parameters to server adapter + :rtype: :class:`vmware.vapi.protocol.server.transport.async_protocol_handler.AsyncProtocolHandler` + :return: Async server adapter + """ + constructor = self.adapters.get(server_adapter_name) + if constructor is not None: + constructor = dynamic_import(constructor) + if constructor: + return constructor(*args, **kwargs)
+
+ +
+
+
+
+
+ + +
+
+
+
+ + + + \ No newline at end of file diff --git a/vsphere/6.0/_modules/vmware/vapi/protocol/server/transport/msg_handler.html b/vsphere/6.0/_modules/vmware/vapi/protocol/server/transport/msg_handler.html new file mode 100644 index 00000000..2d8ac6c8 --- /dev/null +++ b/vsphere/6.0/_modules/vmware/vapi/protocol/server/transport/msg_handler.html @@ -0,0 +1,228 @@ + + + + + + + + + + vmware.vapi.protocol.server.transport.msg_handler — vCloud Suite SDK for Python 6.0.0 documentation + + + + + + + + + + + + + + +
+
+
+
+ +

Source code for vmware.vapi.protocol.server.transport.msg_handler

+"""
+Msg based protocol handler
+"""
+
+__author__ = 'VMware, Inc.'
+__copyright__ = 'Copyright 2011-2012 VMware, Inc.  All rights reserved. -- VMware Confidential'
+
+import logging
+from collections import deque
+
+from vmware.vapi.protocol.server.api_handler import ApiHandler, AsyncApiHandler
+from vmware.vapi.protocol.server.transport.async_protocol_handler import AsyncProtocolHandler
+
+logger = logging.getLogger(__name__)
+
+
+
[docs]def get_async_api_handler(api_handler): + """ + get async api handler + + :type api_handler: :class:`vmware.vapi.protocol.server.api_handler.AplHandler` + :param api_handler: api handler instance + :rtype: :class:`vmware.vapi.protocol.server.async_api_handler_adapter.PooledAsyncApiHandlerAdapter` + :return: Threaded async api handler + """ + if isinstance(api_handler, ApiHandler): + from vmware.vapi.protocol.server.async_api_handler_adapter import PooledAsyncApiHandlerAdapter + from vmware.vapi.lib.workers_pool import get_workers_pool + workers_pool = get_workers_pool('api_handler') + api_handler = PooledAsyncApiHandlerAdapter(api_handler, workers_pool) + return api_handler + +
+
[docs]class MsgBasedProtocolHandler(AsyncProtocolHandler): + """ Message based protocol handler """ + def __init__(self, api_handler): + """ + Message based protocol handler init + :type api_handler: :class:`vmware.vapi.protocol.server.api_handler.AplHandler` + :param api_handler: api handler instance + """ + AsyncProtocolHandler.__init__(self) + assert(api_handler) + self.api_handler = get_async_api_handler(api_handler) + + ## Begin AsyncProtocolHandler interface + +
[docs] def get_data_handler(self, connection): + data_handler = self.DataHandler(self, connection) + return data_handler + + ## End AsyncProtocolHandler interface +
+
[docs] class DataHandler(AsyncProtocolHandler.DataHandler): + """ Message based protocol data handler """ + def __init__(self, parent, connection): + """ Message based protocol data handler init """ + AsyncProtocolHandler.DataHandler.__init__(self) + self.parent = parent + self.connection = connection + self.data = deque() + + ## Begin AsyncProtocolHandler.DataHandler interface + +
[docs] def data_ready(self, data): + if data: + self.data.append(data) +
+
[docs] def data_end(self): + connection = self.connection + + def state_change_cb(*args, **kwargs): + """ state change callback """ + self.request_state_change(connection, *args, **kwargs) + + self.parent.api_handler.async_handle_request( + b''.join(self.data), state_change_cb) + self._cleanup() +
+
[docs] def data_abort(self): + self._cleanup() + + # Used to throttle the lower layer from sending more data
+
[docs] def can_read(self): + # TODO: Throttle if needed + return True + + ## End AsyncProtocolHandler.DataHandler interface
+
[docs] def request_state_change(self, connection, state, response=None): # pylint: disable=R0201 + """ + request state changed + + :type connection: :class:`file` + :param connection: response connection + :type state: :class:`int` + :param state: refer to :class:`vmware.vapi.protocol.server.api_handler.AsyncApiHandler.async_handle_request` state_change_cb + :type response: :class:`object` + :param response: refer to :class:`vmware.vapi.protocol.server.api_handler.AsyncApiHandler.async_handle_request` state_change_cb + """ + + if state in AsyncApiHandler.END_STATES: + # Reached one of the end state + try: + if state == AsyncApiHandler.SUCCESS: + try: + connection.write(response) + except Exception as err: + # Connection closed + logger.error('write: Failed to write %s', err) + elif state == AsyncApiHandler.ERROR: + if response is None: + response = Exception("Error") + raise response # pylint: disable=E0702 + elif state == AsyncApiHandler.CANCELLED: + # Cancelled + pass + else: + # Unexpected state + raise NotImplementedError('Unexpected state %d' % state) + finally: + connection.close() # Close the virtual connection + connection = None + else: + # Transition state change + pass +
+ def _cleanup(self): + """ Cleanup """ + self.data = None + self.connection = None + self.parent = None + + def __del__(self): + self._cleanup()
+
+ +
+
+
+
+
+ + +
+
+
+
+ + + + \ No newline at end of file diff --git a/vsphere/6.0/_modules/vmware/vapi/provider/aggregator.html b/vsphere/6.0/_modules/vmware/vapi/provider/aggregator.html new file mode 100644 index 00000000..1659fc44 --- /dev/null +++ b/vsphere/6.0/_modules/vmware/vapi/provider/aggregator.html @@ -0,0 +1,494 @@ + + + + + + + + + + vmware.vapi.provider.aggregator — vCloud Suite SDK for Python 6.0.0 documentation + + + + + + + + + + + + + + +
+
+
+
+ +

Source code for vmware.vapi.provider.aggregator

+"""
+Aggregator Api Provider
+"""
+
+__author__ = 'VMware, Inc.'
+__copyright__ = 'Copyright 2011-2014 VMware, Inc.  All rights reserved. -- VMware Confidential'
+
+
+import logging
+import traceback
+
+from vmware.vapi.core import ApiProvider, MethodResult, ExecutionContext
+from vmware.vapi.data.value import StructValue
+from vmware.vapi.lib import connect
+from vmware.vapi.lib.constants import (Introspection, OPERATION_INPUT)
+from vmware.vapi.lib.addr_url_parser import get_url_scheme
+from vmware.vapi.lib.std import make_error_value_from_msgs, make_std_error_def
+from vmware.vapi.l10n.runtime import message_factory
+from vmware.vapi.provider import local as local_provider
+from vmware.vapi.provider.local import LocalProvider
+from vmware.vapi.provider.introspection import AggregatorIntrospector
+from vmware.vapi.provider.services import Stats
+from vmware.vapi.security.lib import next_security_context
+from vmware.vapi.settings.sections import ENDPOINT
+
+
+# Configure logging
+logger = logging.getLogger(__name__)
+
+
+
[docs]class AggregatorProvider(ApiProvider): + """ + AggregatorProvider is an aggregating implementation of the + ApiProvider interface. It aggregates a bunch of ApiProvider + instances and expose it. + """ + def __init__(self): + ApiProvider.__init__(self) + self._name = 'ApiAggregator' + + # Helper classes for aggregator services + self.stats = Stats() + + # key = service_id, value = api interface + self._service_id_map = {} + + # key : name, value : provider + self._providers = {} + + # key : name, value : connection info + self._provider_data = {} + + # List of all the services present in the local provider + self._local_service_ids = [] + + self._introspection_service_names = [ + Introspection.PROVIDER_SVC, + Introspection.SERVICE_SVC, + Introspection.OPERATION_SVC + ] + self._introspector = None + + _operation_not_found_def = make_std_error_def( + 'com.vmware.vapi.std.errors.operation_not_found') + _internal_server_error_def = make_std_error_def( + 'com.vmware.vapi.std.errors.internal_server_error') + _augmented_errors = (_operation_not_found_def, + _internal_server_error_def) + + ########################################################################### + # + # Support functions for aggregator services + # + ########################################################################### + + @staticmethod +
[docs] def get_service_identifiers(api_provider): + """ + Invokes introspection service list on the Api Provider and retrieves + the list of services + + :type api_provider: :class:`vmware.vapi.core.ApiProvider` + :param api_provider: ApiProvider instance to be used for retrieving service + identifiers + :rtype: :class:`list` of :class:`str` + :return: List of service identifiers + :raise: :class:`Exception`: if service identifiers could not be retrieved + """ + ctx = ExecutionContext() + service_name = Introspection.SERVICE_SVC + operation_name = 'list' + struct_value = StructValue(OPERATION_INPUT) + method_result = api_provider.invoke( + service_name, operation_name, struct_value, ctx) + if method_result.success(): + return [service.value for service in method_result.output] + else: + raise Exception('Could not retrieve service identifiers: %s', + repr(method_result.error)) +
+ def _process_child(self, properties, child): + """ + Process a aggregator child properties + + :type properties: :class:`dict` + :param properties: Properties dictionary + :type child: :class:`str` + :param child: Child to be processed + """ + try: + child_prefix = 'aggregator.child' + prefix = '%s.%s.protocol' % (child_prefix, child) + msg_protocol = properties.get(ENDPOINT, '%s.msg' % prefix) + url = properties.get(ENDPOINT, '%s.rpc' % prefix) + rpc_protocol = get_url_scheme(url) + connector = connect.get_connector(rpc_protocol, + msg_protocol, + url=url) + api_provider = connector.get_api_provider() + if api_provider: + self.register_provider(api_provider, + child, + rpc_protocol, + msg_protocol, + addr=url) + except Exception: + stack_trace = traceback.format_exc() + raise Exception('Could not register %s at %s due to %s' + % (child, url, stack_trace)) + +
[docs] def register_by_properties(self, properties): + """ + Register a provider using a properties dictionary + + :type properties: :class:`dict` + :param properties: Properties dictionary + """ + if properties.has_option(ENDPOINT, 'provider.name'): + self._name = properties.get(ENDPOINT, 'provider.name') + else: + self._name = 'ApiAggregator' + + # + # We have three providers here: + # Aggregator: To aggregate services from local and remote providers + # IntrospectionProvider: To serve introspection requests. This has + # all the introspection services but it will decide whether to + # route the introspection call to LocalProvider or Remote provider + # based on where it is located. + # LocalProvider: To serve requests for services specified in + # 'local.interfaces'. This also has introspection services that + # only provides introspection for services in this LocalProvider. + # + # For non-introspection calls: + # - If service is in LocalProvider, flow is Aggregator -> LocalProvider + # - If service is in remote ApiProvider, flow is Aggregator -> Remote + # api provider + # + # For introspection calls: + # - For a service in remote ApiProvider, flow is + # Aggregator -> Introspection services in IntrospectionProvider + # - For a service in LocalProvider, flow is + # Aggregator -> Introspection services in IntrospectionProvider + # - For a service in introspection set of services, flow is + # Aggregator -> IntrospectionProvider -> Introspection services in + # LocalProvider (If it is handled by IntrospectionProvider, then we + # will go into infinite recursive calls) + # + + # Retrieve the local provider singleton instance to hold all the services + # present in 'local.interfaces' property of in the properties file. + # Even if there are no interfaces in local.interfaces, this is required + # as it would serve introspection requests for introspection api. + l_provider = local_provider.get_provider() + self._introspector = AggregatorIntrospector( + self._name, l_provider) + if properties.get(ENDPOINT, 'local.interfaces'): + l_provider.register_by_properties(properties) + + # Create a local provider to hold the introspection services that + # aggregates introspection information from the local provider and + # all the remote providers. + introspection_provider = LocalProvider(load_introspection=False) + for service in self._introspector.get_introspection_services(): + # Register the introspection service with the local provider + introspection_provider.add_interface(service) + # Register the introspection service with this aggregator + self.register_service(service.get_identifier().get_name(), + introspection_provider) + + # Registering services from local provider + service_ids = self.get_service_identifiers(l_provider) + self._local_service_ids = service_ids + for service_id in service_ids: + if service_id not in self._introspection_service_names: + self.register_service(service_id, l_provider) + + # Register the children + child_string = properties.get(ENDPOINT, 'aggregator.children') + if child_string: + for child in child_string.split(','): + self._process_child(properties, child) +
+
[docs] def get_providers(self): + """ + Return the connection information of ApiProviders + registered with the AggregatorProvider + + :rtype: :class:`list` of :class:`tuple` of (:class:`str`, :class:`str`, :class:`str`) + :return: Tuple containing rpc protocol, msg protocol and uri + """ + return self._provider_data +
+
[docs] def register_service(self, service_id, provider): + """ + Register an service with the AggregatorProvider + + :type service_id: :class:`str` + :param service_id: Service identifier + :type provider: :class:`vmware.vapi.core.ApiProvider` + :param provider: ApiProvider impl. for the specified service identifier + """ + if service_id in self._service_id_map: + logger.error('Service already registered: %s', service_id) + else: + self._service_id_map[service_id] = provider + self._introspector.add_service(service_id, provider) + logger.info('Registering service: %s', service_id) +
+
[docs] def register_provider(self, provider, name, rpc, msg, addr): + """ + Register a ApiProvider with the AggregatorProvider + + :type provider: :class:`vmware.vapi.core.ApiProvider` + :param provider: ApiProvider to be registered + :type name: :class:`str` + :param name: Provider name + :type rpc: :class:`str` + :param rpc: RPC Protocol + :type msg: :class:`str` + :param msg: Msg Protocol + :type addr: :class:`str` + :param addr: URI of the ApiProvider + """ + self._provider_data[name] = (rpc, msg, addr) + old_provider = self._providers.get(name) + if old_provider: + return + + service_ids = self.get_service_identifiers(provider) + for service_id in service_ids: + if service_id not in self._introspection_service_names: + self.register_service(service_id, provider) + self._providers[name] = provider + self.stats.increment_provider_count() +
+
[docs] def unregister_service(self, service_id): + """ + Unregister an service from AggregatorProvider + + :type service_id: :class:`str` + :param service_id: service to be unregistered + """ + if service_id in self._service_id_map: + del self._service_id_map[service_id] + self._introspector.remove_service(service_id) +
+
[docs] def unregister_provider(self, provider_name): + """ + Unregister a provider from AggregatorProvider + + :type provider_name: :class:`str` + :param provider_name: Provider to be unregistered + """ + provider = self._providers.get(provider_name) + if not provider: + return + + service_ids = self.get_service_identifiers(provider) + for service_id in service_ids: + self.unregister_service(service_id) + del self._providers[provider_name] + del self._provider_data[provider_name] + + self.stats.decrement_provider_count() + logger.info('Unregistering Provider %s', + provider.get_definition()) +
+
[docs] def unregister_provider_by_name(self, provider_name): + """ + Unregister a provider from AggregatorProvider + + :type provider_name: :class:`str` + :param provider_name: Provider to be unregistered + """ + self.unregister_provider(provider_name) +
+
[docs] def reload_providers(self): + """ + Reload all the providers in the AggregatorProvider + """ + providers = list(self._providers.values()) + [local_provider.get_provider()] + for provider in providers: + service_ids = self.get_service_identifiers(provider) + for service_id in service_ids: + self.register_service(service_id, provider) + + ########################################################################### + # + # Implementation of Api Provider interface + # + ########################################################################### +
+ def _invoke_int(self, service_id, operation_id, input_value, ctx): + """ + Internal implementation of invoke method + + :type service_id: :class:`str` + :param service_id: Service identifier + :type operation_id: :class:`str` + :param operation_id: Operation identifier + :type input_value: :class:`vmware.vapi.data.value.StructValue` + :param input_value: Method input parameters + :type ctx: :class:`vmware.vapi.core.ExecutionContext` + :param ctx: Execution context for this method + + :rtype: :class:`vmware.vapi.core.MethodResult` + :return: Result of the method invocation + """ + # Check if the provider exists + provider = self._service_id_map.get(service_id) + if not provider: + msg = message_factory.get_message( + 'vapi.method.input.invalid.interface', + service_id) + logger.error(msg) + error_value = make_error_value_from_msgs( + self._operation_not_found_def, msg) + return MethodResult(error=error_value) + + # Continue the authentication chain only if the target service + # is not in the local provider of this process. i.e. for only + # remote calls + if service_id not in self._local_service_ids: + ctx.security_context = next_security_context(ctx.security_context) + + # Actual method execution + try: + method_result = provider.invoke( + service_id, operation_id, input_value, ctx) + return method_result + except Exception as e: + stack_trace = traceback.format_exc() + logging.error('Service: %s, Operation: %s, input_value %s: exception: %s', + service_id, operation_id, input_value, stack_trace) + msg = message_factory.get_message('vapi.method.invoke.exception', + str(e)) + error_value = make_error_value_from_msgs( + self._internal_server_error_def, msg) + method_result = MethodResult(error=error_value) + return method_result + +
[docs] def invoke(self, service_id, operation_id, input_value, ctx): + """ + Invokes the specified method using the execution context and + the input provided + + :type service_id: :class:`str` + :param service_id: Service identifier + :type operation_id: :class:`str` + :param operation_id: Operation identifier + :type input_value: :class:`vmware.vapi.data.value.StructValue` + :param input_value: Method input parameters + :type ctx: :class:`vmware.vapi.core.ExecutionContext` + :param ctx: Execution context for this method + + :rtype: :class:`vmware.vapi.core.MethodResult` + :return: Result of the method invocation + """ + logger.info("Started: Service: %s, Operation: %s, Ctx: %s", + service_id, operation_id, ctx) + method_result = self._invoke_int( + service_id, operation_id, input_value, ctx) + logger.info("Finished: Service: %s. Operation %s, Ctx: %s", + service_id, operation_id, ctx) + return method_result + + +# Single AggregatorProvider instance
+_aggregator_provider = AggregatorProvider() + + +
[docs]def get_provider(): + """ + Returns the singleton AggregatorProvider instance + + :rtype: :class:`vmware.vapi.provider.AggregatorProvider` + :return: AggregatorProvider instance + """ + return _aggregator_provider
+
+ +
+
+
+
+
+ + +
+
+
+
+ + + + \ No newline at end of file diff --git a/vsphere/6.0/_modules/vmware/vapi/provider/authentication.html b/vsphere/6.0/_modules/vmware/vapi/provider/authentication.html new file mode 100644 index 00000000..9ff35dd4 --- /dev/null +++ b/vsphere/6.0/_modules/vmware/vapi/provider/authentication.html @@ -0,0 +1,318 @@ + + + + + + + + + + vmware.vapi.provider.authentication — vCloud Suite SDK for Python 6.0.0 documentation + + + + + + + + + + + + + + +
+
+
+
+ +

Source code for vmware.vapi.provider.authentication

+"""
+Authentication API Provider filter
+"""
+
+__author__ = 'VMware, Inc.'
+__copyright__ = 'Copyright 2011-2014 VMware, Inc.  All rights reserved. -- VMware Confidential'
+
+import logging
+import six
+try:
+    import simplejson as json
+except ImportError:
+    import json
+
+from vmware.vapi.core import MethodResult
+from vmware.vapi.lib.std import (
+    make_std_error_def, make_error_value_from_msg_id)
+from vmware.vapi.lib.constants import SCHEME_ID
+from vmware.vapi.provider.filter import ApiProviderFilter
+
+
+# Configure logging
+logger = logging.getLogger(__name__)
+NO_AUTH = 'com.vmware.vapi.std.security.no_authentication'
+
+
+
[docs]def load_metadata(): + """ + Load the metadata from the json file + + :rtype: :class:`dict` + :return: Authentication metadata + """ + from vmware.vapi.settings import config + cfg = config.cfg + if cfg and cfg.has_section(__name__): + metadata_file = cfg.get(__name__, 'file') + metadata = None + with open(metadata_file, 'r') as fp: + metadata = fp.read() + authn_metadata = json.loads(metadata).get('authentication', {}) # pylint: disable=E1103 + return authn_metadata.get('product', {}) + +
+
[docs]class AuthenticationFilter(ApiProviderFilter): + """ + AuthenticationFilter in API Provider chain enforces the authentication + schemes specified in the authentication metadata file + """ + def __init__(self, next_provider=None): + """ + Initialize AuthenticationFilter + + :type next_provider: :class:`vmware.vapi.core.ApiProvider` or ``None`` + :param next_provider: API Provider to invoke the requests + """ + self._metadata = load_metadata() + self._internal_server_error_def = make_std_error_def( + 'com.vmware.vapi.std.errors.internal_server_error') + self._unauthenticated_error_def = make_std_error_def( + 'com.vmware.vapi.std.errors.unauthenticated') + ApiProviderFilter.__init__( + self, next_provider, + [self._internal_server_error_def, self._unauthenticated_error_def]) + + def _get_scheme(self, scheme_rules, key): + """ + Extract the scheme identifier + + :type scheme_rules: :class:`dict` + :param scheme_rules: Scheme rules + :type key: :class:`str` + :param key: Key to retrieve the scheme name from scheme rules + :rtype: :class:`str` + :return: Scheme identifier + """ + try: + scheme_ids = [] + scheme_names = scheme_rules[key] + if len(scheme_names) and not isinstance(scheme_names, list): + scheme_names = [scheme_names] + if scheme_names: + # Scheme name is present, get the scheme id + scheme_data = self._metadata.get('schemes') + for scheme_name in scheme_names: + scheme_info = scheme_data.get(scheme_name) + if scheme_info is None: + # Scheme info is not present + raise ValueError(scheme_name) + else: + scheme_id = scheme_info.get('authenticationScheme') + scheme_ids.append(scheme_id) + else: + # Scheme rule is present but there is no authn scheme + scheme_ids.append(NO_AUTH) + return scheme_ids + except KeyError: + pass + + def _get_package_specific_scheme(self, service_id, operation_id): # pylint: disable=W0613 + """ + Get the package specific scheme for the input operation + + :type service_id: :class:`str` + :param service_id: Service identifier + :type operation_id: :class:`str` + :param operation_id: Operation identifier + :rtype: :class:`str` + :return: Authentication scheme identifier + """ + package_name = '.'.join(service_id.split('.')[:-1]) + package_data = self._metadata.get('packages') + packages_match = [package for package in six.iterkeys(package_data) + if package.startswith(package_name)] + if packages_match: + closest_package = max(packages_match, key=len) + return self._get_scheme(package_data, closest_package) + + def _get_service_specific_scheme(self, service_id, operation_id): # pylint: disable=W0613 + """ + Get the service specific scheme for the input operation + + :type service_id: :class:`str` + :param service_id: Service identifier + :type operation_id: :class:`str` + :param operation_id: Operation identifier + :rtype: :class:`str` + :return: Authentication scheme identifier + """ + service_data = self._metadata.get('services') + return self._get_scheme(service_data, + '%s' % service_id) + + def _get_operation_specific_scheme(self, service_id, operation_id): + """ + Get the operation specific scheme for the input operation + + :type service_id: :class:`str` + :param service_id: Service identifier + :type operation_id: :class:`str` + :param operation_id: Operation identifier + :rtype: :class:`str` + :return: Authentication scheme identifier + """ + operation_data = self._metadata.get('operations') + return self._get_scheme(operation_data, + '%s.%s' % (service_id, operation_id)) + + def _validate_scheme(self, ctx, service_id, operation_id): + """ + Validate the authentication scheme present in + the security context + + :type ctx: :class:`vmware.vapi.core.ExecutionContext` + :param ctx: Execution context for this method + :type service_id: :class:`str` + :param service_id: Service identifier + :type operation_id: :class:`str` + :param operation_id: Operation identifier + :rtype: :class:`vmware.vapi.core.MethodResult` + :return: MethodResult object with unauthenticated error + in case of a scheme mismatch, else None + """ + request_scheme = ctx.security_context.get(SCHEME_ID) + for scheme_fn in [self._get_operation_specific_scheme, + self._get_service_specific_scheme, + self._get_package_specific_scheme]: + schemes = scheme_fn(service_id, operation_id) + if schemes: + if request_scheme in schemes: + break + elif NO_AUTH in schemes: + break + else: + error_value = make_error_value_from_msg_id( + self._unauthenticated_error_def, + 'vapi.security.authentication.scheme', + str(schemes), request_scheme) + return MethodResult(error=error_value) + +
[docs] def invoke(self, service_id, operation_id, input_value, ctx): + """ + Invoke an API request + + :type service_id: :class:`str` + :param service_id: Service identifier + :type operation_id: :class:`str` + :param operation_id: Operation identifier + :type input_value: :class:`vmware.vapi.data.value.StructValue` + :param input_value: Method input parameters + :type ctx: :class:`vmware.vapi.core.ExecutionContext` + :param ctx: Execution context for this method + + :rtype: :class:`vmware.vapi.core.MethodResult` + :return: Result of the method invocation + """ + try: + method_result = self._validate_scheme(ctx, service_id, operation_id) + except ValueError as err: + scheme_rule_key = err.args[0] + error_value = make_error_value_from_msg_id( + self._internal_server_error_def, + 'vapi.security.authentication.scheme.invalid', + scheme_rule_key) + method_result = MethodResult(error=error_value) + if method_result is not None: + return method_result + else: + return ApiProviderFilter.invoke( + self, service_id, operation_id, input_value, ctx) + + +# Single AuthenticationFilter instance
+_authn_filter = AuthenticationFilter() + + +
[docs]def get_provider(): + """ + Returns the singleton AuthenticationFilter instance + + :rtype: :class:`vmware.vapi.provider.authentication.AuthenticationFilter` + :return: AuthenticationFilter instance + """ + return _authn_filter
+
+ +
+
+
+
+
+ + +
+
+
+
+ + + + \ No newline at end of file diff --git a/vsphere/6.0/_modules/vmware/vapi/provider/filter.html b/vsphere/6.0/_modules/vmware/vapi/provider/filter.html new file mode 100644 index 00000000..f89d67db --- /dev/null +++ b/vsphere/6.0/_modules/vmware/vapi/provider/filter.html @@ -0,0 +1,165 @@ + + + + + + + + + + vmware.vapi.provider.filter — vCloud Suite SDK for Python 6.0.0 documentation + + + + + + + + + + + + + + +
+
+
+
+ +

Source code for vmware.vapi.provider.filter

+"""
+API Provider filter
+"""
+
+__author__ = 'VMware, Inc.'
+__copyright__ = 'Copyright 2013 VMware, Inc.  All rights reserved. -- VMware Confidential'
+
+import logging
+
+from vmware.vapi.core import ApiProvider
+from vmware.vapi.data.serializers.introspection import convert_data_def_to_data_value
+from vmware.vapi.provider.lib import augment_method_result_with_errors
+
+logger = logging.getLogger(__name__)
+
+
+
[docs]class ApiProviderFilter(ApiProvider): + """ + ApiProviderFilter is a base class for all ApiProvider filters. + This handles all the common methods and also takes care of augmenting + errors reported by an ApiProvider filter. + + :type next_provider: :class:`vmware.vapi.core.ApiProvider` + :ivar next_provider: Next API Provider in the chain + """ + def __init__(self, next_provider=None, errors_to_augment=None): + """ + Initialize ApiProviderFilter + + :type next_provider: :class:`vmware.vapi.core.ApiProvider` or ``None`` + :param next_provider: API Provider to invoke the requests + :type errors_to_augment: :class:`list` of + :class:`vmware.vapi.data.definition.ErrorDefinition` + :param errors_to_augment: List of error definitions to be added to method + definitions + """ + ApiProvider.__init__(self) + self.next_provider = next_provider + self._error_defs_to_augment = errors_to_augment + self._error_values_to_augment = [ + convert_data_def_to_data_value(error_def) + for error_def in self._error_defs_to_augment + ] + +
[docs] def invoke(self, service_id, operation_id, input_value, ctx): + """ + Invoke an API request. Derived classes of ApiProviderFilter + should call this method to invoke the request. This can be done + by: ApiProviderFilter.invoke(self, ctx, method_id, input_value). + + This method calls the next API Provider. If the request is made to + "get" operation of vAPI Operation Introspection service, errors are + augmented to the method result. + + :type service_id: :class:`str` + :param service_id: Service identifier + :type operation_id: :class:`str` + :param operation_id: Operation identifier + :type input_value: :class:`vmware.vapi.data.value.StructValue` + :param input_value: Method input parameters + :type ctx: :class:`vmware.vapi.core.ExecutionContext` + :param ctx: Execution context for this method + + :rtype: :class:`vmware.vapi.core.MethodResult` + :return: Result of the method invocation + """ + method_result = self.next_provider.invoke( + service_id, operation_id, input_value, ctx) + return augment_method_result_with_errors( + service_id, operation_id, method_result, + self._error_values_to_augment)
+
+ +
+
+
+
+
+ + +
+
+
+
+ + + + \ No newline at end of file diff --git a/vsphere/6.0/_modules/vmware/vapi/provider/introspection.html b/vsphere/6.0/_modules/vmware/vapi/provider/introspection.html new file mode 100644 index 00000000..46205750 --- /dev/null +++ b/vsphere/6.0/_modules/vmware/vapi/provider/introspection.html @@ -0,0 +1,790 @@ + + + + + + + + + + vmware.vapi.provider.introspection — vCloud Suite SDK for Python 6.0.0 documentation + + + + + + + + + + + + + + +
+
+
+
+ +

Source code for vmware.vapi.provider.introspection

+"""
+Introspection services
+"""
+
+__author__ = 'VMware, Inc.'
+__copyright__ = 'Copyright 2013-2014 VMware, Inc.  All rights reserved. -- VMware Confidential'
+
+import logging
+
+from vmware.vapi.core import (
+    ApiInterface, InterfaceIdentifier, MethodIdentifier, InterfaceDefinition,
+    MethodDefinition, MethodResult, ExecutionContext)
+from vmware.vapi.data.definition import (
+    StructDefinition, StringDefinition, ListDefinition, StructRefDefinition,
+    OptionalDefinition)
+from vmware.vapi.lib.constants import (
+    Introspection, MAP_ENTRY, OPERATION_INPUT)
+from vmware.vapi.lib.std import make_error_value_from_msgs, make_std_error_def
+from vmware.vapi.data.value import (
+    StringValue, ListValue, StructValue)
+from vmware.vapi.data.serializers.introspection import (
+    convert_data_def_to_data_value)
+from vmware.vapi.lib.fingerprint import generate_fingerprint
+from vmware.vapi.l10n.runtime import message_factory
+
+
+# errors
+not_found_def = make_std_error_def('com.vmware.vapi.std.errors.not_found')
+
+logger = logging.getLogger(__name__)
+
+
+
[docs]def get_checksum(api_services): + """ + Returns the checksum of services registered with LocalProvider + + :type api_services: :class:`dict` + :param api_services: Dictionary of all the services registered with local provider + Key is :class:`vmware.vapi.core.InterfaceIdentifier` and value is + :class:`vmware.vapi.core.ApiInterface` + :rtype: :class:`str` + :return: checksum of the service information + """ + return generate_fingerprint(str(api_services)) + +
+
[docs]class IntrospectionBaseApiInterface(ApiInterface): + """ + Helper base class for all Introspection VMODL2 dynamic services + """ + + def __init__(self, iface_id, method_defs, methods): + """ + Initialize the Api Interface instance + + :type iface_id: :class:`vmware.vapi.core.InterfaceIdentifier` + :param iface_id: Interface identifier + :type method_defs: :class:`dict` + :param method_defs: Dictionary of method identifiers to method definitions + :type methods: :class:`dict` + :param methods: Dictionary of method identifiers to method references + """ + ApiInterface.__init__(self) + self._id = iface_id + self._method_defs = method_defs + self._methods = methods + +
[docs] def get_identifier(self): + """ + Returns interface identifier + + :rtype: :class:`InterfaceIdentifier` + :return: Interface identifier + """ + return self._id +
+
[docs] def get_definition(self): + """ + Returns interface definition + + :rtype: :class:`InterfaceDefinition` + :return: Interface definition + """ + return InterfaceDefinition(self._id, list(self._methods.keys())) +
+
[docs] def get_method_definition(self, method_id): + """ + Returns the method definition + + :rtype: :class:`MethodDefinition` + :return: Method definition + """ + return self._method_defs.get(method_id) +
+
[docs] def invoke(self, ctx, method_id, input_value): + """ + Invokes the specified method using the execution context and + the input provided + + :type ctx: :class:`ExecutionContext` + :param ctx: Execution context for this method + :type method_id: :class:`MethodIdentifier` + :param method_id: Method identifier + :type input_value: :class:`vmware.vapi.data.value.StructValue` + :param input_value: Method input parameters + + :rtype: :class:`MethodResult` + :return: Result of the method invocation + """ + method = self._methods.get(method_id) + method_def = self._method_defs.get(method_id) + return method(method_def, ctx, input_value) + +
+
[docs]class ProviderApiInterface(IntrospectionBaseApiInterface): + """ + This service provides operations to retrieve information of a + vAPI Provider. A provider represents a vAPI endpoint that is exposing a + collection of vAPI services. + """ + + def __init__(self, name, introspection_adapter): + """ + Initialize ProviderApiInterface + + :type name: :class:`str` + :param name: Name of the provider + :type introspection_adapter: + :class:`vmware.vapi.provider.introspection.ApiProviderIntrospector` + :param introspection_adapter: Adapter for fetching introspection information + """ + self._name = name + self._adapter = introspection_adapter + + iface_id = InterfaceIdentifier( + 'com.vmware.vapi.std.introspection.provider') + + method_defs = {} + # get method + get_method_id = MethodIdentifier(iface_id, 'get') + output_def = StructDefinition( + 'com.vmware.vapi.std.introspection.provider.info', + [('id', StringDefinition()), + ('checksum', StringDefinition())] + ) + method_defs[get_method_id] = MethodDefinition( + get_method_id, + StructDefinition(OPERATION_INPUT, []), + output_def, + [] + ) + + methods = {} + methods[get_method_id] = self._get + + IntrospectionBaseApiInterface.__init__(self, + iface_id, + method_defs, + methods) + + def _get(self, method_def, ctx, input_value): + """ + Returns information about the vAPI provider + + :type method_def: :class:`vmware.vapi.core.MethodDefinition` + :param method_def: Method definition + :type ctx: :class:`vmware.vapi.core.ExecutionContext` + :param ctx: Execution context + :type input_value: :class:`vmware.vapi.data.value.StructValue` + :param input_value: Struct value input + :rtype: :class:`vmware.vapi.core.MethodResult` + :return: Information about the vAPI provider + """ + output = method_def.get_output_definition().new_value() + output.set_field('id', StringValue(self._name)) + output.set_field('checksum', StringValue(self._adapter.get_checksum())) + return MethodResult(output=output) + +
+
[docs]class ServiceApiInterface(IntrospectionBaseApiInterface): + """ + This service exposes operations to retrieve information about the + services exposed by a vAPI endpoint + """ + def __init__(self, name, introspection_adapter): + """ + Initialize ServiceApiInterface + + :type name: :class:`str` + :param name: Name of the provider + :type introspection_adapter: + :class:`vmware.vapi.provider.introspection.ApiProviderIntrospector` + :param introspection_adapter: Adapter for fetching introspection information + """ + self._adapter = introspection_adapter + + iface_id = InterfaceIdentifier( + 'com.vmware.vapi.std.introspection.service') + method_defs = {} + methods = {} + + # list method + list_method_id = MethodIdentifier(iface_id, 'list') + output_def = ListDefinition(StringDefinition()) + method_defs[list_method_id] = MethodDefinition( + list_method_id, + StructDefinition(OPERATION_INPUT, []), + output_def, + [] + ) + methods[list_method_id] = self._list + + # get method + get_method_id = MethodIdentifier(iface_id, 'get') + output_def = StructDefinition( + 'com.vmware.vapi.std.introspection.service.info', + [('operations', ListDefinition(StringDefinition()))]) + method_defs[get_method_id] = MethodDefinition( + get_method_id, + StructDefinition(OPERATION_INPUT, + [('id', StringDefinition())]), + output_def, + [not_found_def] + ) + methods[get_method_id] = self._get + + IntrospectionBaseApiInterface.__init__(self, + iface_id, + method_defs, + methods) + + def _list(self, method_def, ctx, input_value): + """ + Get the set of service identifiers + + :type method_def: :class:`vmware.vapi.core.MethodDefinition` + :param method_def: Method definition + :type ctx: :class:`vmware.vapi.core.ExecutionContext` + :param ctx: Execution context + :type input_value: :class:`vmware.vapi.data.value.StructValue` + :param input_value: Struct value input + :rtype: :class:`vmware.vapi.core.MethodResult` + :return: Set of service identifiers + """ + output = method_def.get_output_definition().new_value() + for service in self._adapter.get_services(): + output.add(StringValue(service)) + return MethodResult(output=output) + + def _get(self, method_def, ctx, input_value): + """ + Returns information about specified service + + :type method_def: :class:`vmware.vapi.core.MethodDefinition` + :param method_def: Method definition + :type ctx: :class:`vmware.vapi.core.ExecutionContext` + :param ctx: Execution context + :type input_value: :class:`vmware.vapi.data.value.StructValue` + :param input_value: Struct value input + :rtype: :class:`vmware.vapi.core.MethodResult` + :return: Information about specified service + """ + service_id = str(input_value.get_field('id').value) + return self._adapter.get_service_info(service_id) + +
+
[docs]class OperationApiInterface(IntrospectionBaseApiInterface): + """ + This service exposes a list of operations to retrieve + information about the operations present in a vAPI service + """ + def __init__(self, name, introspection_adapter): + """ + Initialize OperationApiInterface + + :type name: :class:`str` + :param name: Name of the provider + :type introspection_adapter: + :class:`vmware.vapi.provider.introspection.ApiProviderIntrospector` + :param introspection_adapter: Adapter for fetching introspection information + """ + self._adapter = introspection_adapter + iface_id = InterfaceIdentifier( + 'com.vmware.vapi.std.introspection.operation') + method_defs = {} + methods = {} + + # list method + list_method_id = MethodIdentifier(iface_id, 'list') + output_def = ListDefinition(StringDefinition()) + method_defs[list_method_id] = MethodDefinition( + list_method_id, + StructDefinition(OPERATION_INPUT, + [('service_id', StringDefinition())]), + output_def, + [not_found_def] + ) + methods[list_method_id] = self._list + + # get method + get_method_id = MethodIdentifier(iface_id, 'get') + data_ref_def = StructRefDefinition( + 'com.vmware.vapi.std.introspection.operation.data_definition') + field_def = StructDefinition( + MAP_ENTRY, + [('key', StringDefinition()), + ('value', data_ref_def)]) + data_def = StructDefinition( + 'com.vmware.vapi.std.introspection.operation.data_definition', + [('type', StringDefinition()), + ('element_definition', OptionalDefinition(data_ref_def)), + ('name', OptionalDefinition(StringDefinition())), + ('fields', OptionalDefinition(ListDefinition(field_def)))]) + data_ref_def.target = data_def + output_def = StructDefinition( + 'com.vmware.vapi.std.introspection.operation.info', + [('input_definition', data_def), + ('output_definition', data_def), + ('error_definitions', ListDefinition(data_def))]) + method_defs[get_method_id] = MethodDefinition( + get_method_id, + StructDefinition(OPERATION_INPUT, + [('service_id', StringDefinition()), + ('operation_id', StringDefinition())]), + output_def, + [not_found_def] + ) + methods[get_method_id] = self._get + + IntrospectionBaseApiInterface.__init__(self, + iface_id, + method_defs, + methods) + + def _list(self, method_def, ctx, input_value): + """ + Get the set of operation identifiers + + :type method_def: :class:`vmware.vapi.core.MethodDefinition` + :param method_def: Method definition + :type ctx: :class:`vmware.vapi.core.ExecutionContext` + :param ctx: Execution context + :type input_value: :class:`vmware.vapi.data.value.StructValue` + :param input_value: Struct value input + :rtype: :class:`vmware.vapi.core.MethodResult` + :return: Set of operation identifiers + """ + service_id = str(input_value.get_field('service_id').value) + return self._adapter.get_operations(service_id) + + def _get(self, method_def, ctx, input_value): + """ + Returns information about a vAPI operation + + :type method_def: :class:`vmware.vapi.core.MethodDefinition` + :param method_def: Method definition + :type ctx: :class:`vmware.vapi.core.ExecutionContext` + :param ctx: Execution context + :type input_value: :class:`vmware.vapi.data.value.StructValue` + :param input_value: Struct value input + :rtype: :class:`vmware.vapi.core.MethodResult` + :return: Information about a vAPI operation + """ + service_id = str(input_value.get_field('service_id').value) + operation_id = str(input_value.get_field('operation_id').value) + return self._adapter.get_operation_info(service_id, operation_id) + +
+
[docs]class ApiProviderIntrospector(object): + """ + Abstract class for fetching introspection information + """ + def __init__(self, name): + """ + Initialize ApiProviderIntrospector + + :type name: :class:`str` + :param name: Name of the provider + """ + self._services = [ + ProviderApiInterface(name, self), + ServiceApiInterface(name, self), + OperationApiInterface(name, self)] + +
[docs] def get_introspection_services(self): + """ + Returns the list of introspection services + + :rtype: :class:`list` of :class:`vmware.vapi.core.ApiInterface` + :return: list of introspection services + """ + return self._services +
+
[docs] def get_checksum(self): + """ + Returns the checksum of the API information available + + :rtype: :class:`str` + :return: Checksum of the API information available + """ + raise NotImplementedError +
+
[docs] def get_services(self): + """ + Returns the list of available services + + :rtype: :class:`list` of :class:`str` + :return: List of available services + """ + raise NotImplementedError +
+
[docs] def get_service_info(self, service_id): + """ + Get information about a particular service + + :type service_id: :class:`str` + :param service_id: Service identifier + :rtype: :class:`vmware.vapi.core.MethodResult` + :return: Introspection service info. The DataValue in the output + represents :class:'com.vmware.vapi.std.introspection.Service.Info' + """ + raise NotImplementedError +
+
[docs] def get_operations(self, service_id): + """ + Get the list of available operations for a particular service + + :type service_id: :class:`str` + :param service_id: Service identifier + :rtype: :class:`vmware.vapi.core.MethodResult` + :return: Result that contains list of available operations. The DataValue + in the output is list of StringValues containing the operation names. + """ + raise NotImplementedError +
+
[docs] def get_operation_info(self, service_id, operation_id): + """ + Get the operation information + + :type service_id: :class:`str` + :param service_id: Service identifier + :type operation_id: :class:`str` + :param operation_id: Operation identifier + :rtype: :class:`vmware.vapi.core.MethodResult` + :return: Result that contains operation information. The DataValue in the output + represents :class:'com.vmware.vapi.std.introspection.Operation.Info' + """ + raise NotImplementedError + +
+
[docs]class LocalProviderIntrospector(ApiProviderIntrospector): + """ + Specialization of :class:`vmware.vapi.provider.introspection.ApiProviderIntrospector` + that uses data available in Local Provider to process the Introspection + service API requests + """ + def __init__(self, name): + """ + Initialize LocalProviderIntrospector + + :type name: :class:`str` + :param name: Name of the provider + """ + ApiProviderIntrospector.__init__(self, name) + self._service_data = {} + +
[docs] def add_service(self, service_id, api_interface): + """ + Add a new service to the introspector + + :type service_id: :class:`str` + :param service_id: Service identifier + :type api_interface: :class:`vmware.vapi.core.ApiInterface` + :param api_interface: ApiInterface corresponding to the service + """ + self._service_data[service_id] = api_interface +
+
[docs] def get_checksum(self): + return generate_fingerprint(str(self._service_data)) +
+
[docs] def get_services(self): + return list(self._service_data.keys()) +
+
[docs] def get_service_info(self, service_id): + service_info = self._service_data.get(service_id) + if service_info: + method_ids = service_info.get_definition().get_method_identifiers() + output = StructValue( + name='com.vmware.vapi.std.introspection.service.info', + values={'operations': ListValue( + values=[StringValue(method_id.get_name()) + for method_id in method_ids])} + ) + return MethodResult(output=output) + else: + msg = message_factory.get_message( + 'vapi.introspection.service.not_found', service_id) + error_value = make_error_value_from_msgs(not_found_def, msg) + return MethodResult(error=error_value) +
+
[docs] def get_operations(self, service_id): + service_info = self._service_data.get(service_id) + if service_info: + method_ids = service_info.get_definition().get_method_identifiers() + return MethodResult( + output=ListValue(values=[StringValue(method_id.get_name()) + for method_id in method_ids])) + else: + msg = message_factory.get_message( + 'vapi.introspection.operation.service.not_found', service_id) + error_value = make_error_value_from_msgs(not_found_def, msg) + return MethodResult(error=error_value) +
+ @staticmethod + def _convert_method_def_to_data_value(method_def): + """ + Converts a :class:`vmware.vapi.core.MethodDefinition` object + to :class:`vmware.vapi.data.value.DataValue` object + + :type method_def: :class:`vmware.vapi.core.MethodDefinition` + :param method_def: Method definition + :rtype: :class:`vmware.vapi.data.value.DataValue` + :return: Data value object representing method definition + """ + output = StructValue( + name='com.vmware.vapi.std.introspection.operation.info', + values={ + 'input_definition': convert_data_def_to_data_value( + method_def.get_input_definition()), + 'output_definition': convert_data_def_to_data_value( + method_def.get_output_definition()), + 'error_definitions': ListValue( + values=[convert_data_def_to_data_value(error_def) + for error_def in method_def.get_error_definitions()]) + }) + return output + +
[docs] def get_operation_info(self, service_id, operation_id): + service_info = self._service_data.get(service_id) + if service_info: + method_ids = service_info.get_definition().get_method_identifiers() + operation_names = [method_id.get_name() + for method_id in method_ids] + if operation_id in operation_names: + method_def = service_info.get_method_definition( + MethodIdentifier(InterfaceIdentifier(service_id), + operation_id)) + output = self._convert_method_def_to_data_value(method_def) + return MethodResult(output=output) + else: + msg = message_factory.get_message( + 'vapi.introspection.operation.not_found', + operation_id, + service_id) + error_value = make_error_value_from_msgs(not_found_def, msg) + return MethodResult(error=error_value) + else: + msg = message_factory.get_message( + 'vapi.introspection.operation.service.not_found', service_id) + error_value = make_error_value_from_msgs(not_found_def, msg) + return MethodResult(error=error_value) + +
+
[docs]class AggregatorIntrospector(ApiProviderIntrospector): + """ + Specialization of :class:`vmware.vapi.provider.introspection.ApiProviderIntrospector` + that uses data available in Aggregator Provider to process the Introspection + service API requests + """ + def __init__(self, name, local_provider): + """ + Initialize AggregatorIntrospector + + :type name: :class:`str` + :param name: Name of the provider + :type local_provider: :class:`vmware.vapi.core.ApiProvider` + :param local_provider: LocalProvider that will be used to serve + introspection requests for introspection services itself. + """ + self._local_provider = local_provider + self._local_provider_class_name = local_provider.__class__.__name__ + self._service_data = {} + ApiProviderIntrospector.__init__(self, name) + +
[docs] def add_service(self, service_id, api_provider): + """ + Add a new service to the introspector + + :type service_id: :class:`str` + :param service_id: Service identifier + :type api_provider: :class:`vmware.vapi.core.ApiProvider` + :param api_provider: ApiProvider that is exposing the service + """ + self._service_data[service_id] = api_provider +
+
[docs] def remove_service(self, service_id): + """ + Add a new service to the introspector + + :type service_id: :class:`str` + :param service_id: Service identifier + """ + if service_id in self._service_data: + del self._service_data[service_id] +
+ def _get_provider(self, service_id): + """ + Returns the ApiProvider instance to be used for invoking the + introspection calls + + :type service_id: :class:`str` + :param service_id: Service identifier + :rtype: :class:`vmware.vapi.core.ApiProvider` + :return: ApiProvider instance to be used + """ + # + # Aggregator routes based on a mapping from Service identifier to + # ApiProvider. There is an introspection service in the aggregator + # that is aggregator the data from local provider and all remote + # providers. So, the mapping in aggregator would be: + # com.vmware.vapi.std.introspection.service -> Introspection service + # in aggregator + # But if we route based on this rule, we will go into infinite recursion + # + # So, the introspection calls for introspection services should be + # routed to local provider in the aggregator, as that would be a terminal + # point and can return data. + # The introspection data for introspection calls is same if that + # is serviced by the one in aggregator or by the one in local provider + # + if service_id.startswith(Introspection.PACKAGE): + provider = self._local_provider + else: + provider = self._service_data.get(service_id) + return provider + +
[docs] def get_checksum(self): + # XXX: Resultant checksum does not include the data from the services + # registered in the local provider of the aggregator. Since no one is + # using Python aggregator, making this a low priority now. + ctx = ExecutionContext() + struct_value = StructValue(name=OPERATION_INPUT) + providers = [provider for provider in list(self._service_data.values()) + if provider.__class__.__name__ != self._local_provider_class_name] + method_results = [ + provider.invoke(Introspection.PROVIDER_SVC, 'get', struct_value, ctx) + for provider in providers] + checksums = [result.output.get_field('checksum') + for result in method_results if result.success()] + return generate_fingerprint(str(checksums)) +
+
[docs] def get_services(self): + return list(self._service_data.keys()) +
+
[docs] def get_service_info(self, service_id): + provider = self._get_provider(service_id) + ctx = ExecutionContext() + struct_value = StructValue( + name=OPERATION_INPUT, + values={'id': StringValue(service_id)}) + return provider.invoke( + Introspection.SERVICE_SVC, 'get', + struct_value, ctx) +
+
[docs] def get_operations(self, service_id): + provider = self._get_provider(service_id) + ctx = ExecutionContext() + struct_value = StructValue( + name=OPERATION_INPUT, + values={'service_id': StringValue(service_id)}) + return provider.invoke( + Introspection.OPERATION_SVC, 'list', + struct_value, ctx) +
+
[docs] def get_operation_info(self, service_id, operation_id): + provider = self._get_provider(service_id) + ctx = ExecutionContext() + struct_value = StructValue( + name=OPERATION_INPUT, + values={'service_id': StringValue(service_id), + 'operation_id': StringValue(operation_id)}) + return provider.invoke( + Introspection.OPERATION_SVC, 'get', + struct_value, ctx) + +
+
[docs]def register_instance(): + """ + Services to be registered with LocalProvider + + :rtype: :class:`list` of :class:`vmware.vapi.core.ApiInterface` + :return: List of services to be registered with LocalProvider + """ + return [ProviderApiInterface(), + ServiceApiInterface(), + OperationApiInterface()]
+
+ +
+
+
+
+
+ + +
+
+
+
+ + + + \ No newline at end of file diff --git a/vsphere/6.0/_modules/vmware/vapi/provider/lib.html b/vsphere/6.0/_modules/vmware/vapi/provider/lib.html new file mode 100644 index 00000000..38c95d10 --- /dev/null +++ b/vsphere/6.0/_modules/vmware/vapi/provider/lib.html @@ -0,0 +1,172 @@ + + + + + + + + + + vmware.vapi.provider.lib — vCloud Suite SDK for Python 6.0.0 documentation + + + + + + + + + + + + + + +
+
+
+
+ +

Source code for vmware.vapi.provider.lib

+"""
+Utility library for Provider modules
+"""
+
+__author__ = 'VMware, Inc.'
+__copyright__ = 'Copyright 2013 VMware, Inc.  All rights reserved. -- VMware Confidential'
+
+from vmware.vapi.core import MethodResult, MethodDefinition
+from vmware.vapi.data.value import StructValue, ListValue
+from vmware.vapi.lib.constants import Introspection
+
+
+
[docs]def augment_method_result_with_errors(service_id, operation_id, method_result, + errors_to_augment): + """ + Returns a new method result that is identical to `method_result` except that + the `errors_definition` field in the `output` (which is of type Operation.Info + from Introspection service) contains the errors from the Info structure in + `method_result` plus the errors in `errors_to_augment`. This code will be + executed only for "get" operation in vAPI Operation Introspection service. + + :type service_id: :class:`str` + :param service_id: Service identifier + :type operation_id: :class:`str` + :param operation_id: Operation identifier + :type method_result: :class:`vmware.vapi.core.MethodResult` + :param method_result: Operation result + :type errors_to_augment: :class:`list` of :class:`vmware.vapi.data.value.StructValue` + :param errors_to_augment: Errors to augment. These are struct values of type + com.vmware.vapi.std.introspection.Operation.DataDefinition whose `type` + field has the value ERROR + to the DataDefinition type in Introspection service IDL. + :rtype: :class:`vmware.vapi.data.value.DataValue` + :return: Output data value + """ + if method_result.success(): + if (service_id == Introspection.OPERATION_SVC and + operation_id == 'get'): + output = method_result.output + augmented_output = StructValue( + 'com.vmware.vapi.std.introspection.operation.info') + augmented_output.set_field( + 'input_definition', + output.get_field('input_definition')) + augmented_output.set_field( + 'output_definition', + output.get_field('output_definition')) + errors = ListValue() + error_names = [] + for error_def in output.get_field('error_definitions'): + errors.add(error_def) + error_names.append(error_def.get_field('name').value.value) + for error_def in errors_to_augment: + if error_def.get_field('name').value.value not in error_names: + errors.add(error_def) + augmented_output.set_field('error_definitions', errors) + return MethodResult(output=augmented_output) + return method_result + +
+
[docs]def augment_method_def_with_errors(method_def, errors): + """ + Add errors reported by this ApiProviderFilter to a method definition. + This method clones the input method definition and appends errors. It + does not modify the parameter. + + :type method_def: :class:`vmware.vapi.core.MethodDefinition` + :param method_def: Method definition + :type errors: :class:`list` of :class:`vmware.vapi.data.definition.ErrorDefinition` + :param errors: Error definitions to augment to MethodDefinition + :rtype: :class:`vmware.vapi.core.MethodDefinition` + :return: Method definition after augmenting the errors + """ + method_errors = method_def.get_error_definitions() + return MethodDefinition(method_def.get_identifier(), + method_def.get_input_definition(), + method_def.get_output_definition(), + method_errors.union(errors))
+
+ +
+
+
+
+
+ + +
+
+
+
+ + + + \ No newline at end of file diff --git a/vsphere/6.0/_modules/vmware/vapi/provider/local.html b/vsphere/6.0/_modules/vmware/vapi/provider/local.html new file mode 100644 index 00000000..f9f5d68c --- /dev/null +++ b/vsphere/6.0/_modules/vmware/vapi/provider/local.html @@ -0,0 +1,401 @@ + + + + + + + + + + vmware.vapi.provider.local — vCloud Suite SDK for Python 6.0.0 documentation + + + + + + + + + + + + + + +
+
+
+
+ +

Source code for vmware.vapi.provider.local

+"""
+Local Api Provider
+"""
+
+__author__ = 'VMware, Inc.'
+__copyright__ = 'Copyright 2011-2013 VMware, Inc.  All rights reserved. -- VMware Confidential'
+
+import inspect
+import logging
+import traceback
+
+from vmware.vapi.core import (
+    ApiInterface, ApiProvider, MethodResult, MethodIdentifier,
+    InterfaceIdentifier)
+from vmware.vapi.data.definition import (DataDefinition, StructDefinition)
+from vmware.vapi.data.type import Type
+from vmware.vapi.lib.std import (
+    make_error_value_from_error_value_and_msgs,
+    make_error_value_from_msg_id,
+    make_error_value_from_msgs,
+    make_std_error_def,
+)
+from vmware.vapi.data.serializers.introspection import convert_data_def_to_data_value
+from vmware.vapi.l10n.runtime import message_factory
+from vmware.vapi.settings.sections import ENDPOINT
+from vmware.vapi.bindings.skeleton import VapiInterface
+from vmware.vapi.provider import introspection
+from vmware.vapi.provider.lib import augment_method_result_with_errors
+
+logger = logging.getLogger(__name__)
+
+
+
[docs]class LocalProvider(ApiProvider): + """ + LocalProvider is a local in-process implementation of the + ApiProvider interface + """ + # XXX These error definitions should be eliminated when we figure out + # where/how to get the error definitions used by the local provider + _internal_server_error_def = make_std_error_def( + 'com.vmware.vapi.std.errors.internal_server_error') + _invalid_argument_def = make_std_error_def( + 'com.vmware.vapi.std.errors.invalid_argument') + _operation_not_found_def = make_std_error_def( + 'com.vmware.vapi.std.errors.operation_not_found') + + def __init__(self, load_introspection=True): + """ + Initialize LocalProvider + + :type load_introspection: :class:`bool` + :param load_introspection: If true, load introspection services + """ + ApiProvider.__init__(self) + self._name = "LocalProvider" + # key = service id, value = api interface + self._service_map = {} + + self._introspector = introspection.LocalProviderIntrospector(self._name) + if load_introspection: + self.add_interface( + self._introspector.get_introspection_services()) + + self._error_defs_to_augment = [ + self._internal_server_error_def, + self._invalid_argument_def, + self._operation_not_found_def, + ] + # these are the errors that should be augmented + # when `get` operation is invoked on + # com.vmware.vapi.std.introspection.Operation + self._error_values_to_augment = [ + convert_data_def_to_data_value(error_def) + for error_def in self._error_defs_to_augment + ] + +
[docs] def register_by_properties(self, properties): + """ + Register set of interfaces using properties dictionary + + :type properties: :class:`ConfigParser.SafeConfigParser` + :param properties: Configuration for this vAPI provider + """ + if properties.has_option(ENDPOINT, 'provider.name'): + self._name = properties.get(ENDPOINT, 'provider.name') + + services = properties.get(ENDPOINT, 'local.interfaces') + services = services.replace('\n', '').replace('\\', '').split(',') + for service in services: + service = service.strip() + if service: + + # Get the service specific configuration from the properties + service_cfg = {} + if properties.has_section(service): + service_cfg = dict(properties.items(service)) + + fn = "register_instance" + try: + module = __import__(service, globals(), locals(), [fn]) + register_fn = getattr(module, fn) + + # XXX: Remove the if condition once all the implementations + # have been updated to use the new cfg parameter + if inspect.getargspec(register_fn).args: + ifaces = register_fn(service_cfg) + else: + ifaces = register_fn() + self.add_interface(ifaces) + except Exception: + stack_trace = traceback.format_exc() + raise Exception('Could not add service %s due to %s' + % (service, stack_trace)) +
+
[docs] def add_interface(self, ifaces): + """ + Register an interface with LocalProvider + + :type ifaces: :class:`list` of :class:`vmware.vapi.core.ApiInterface` + :param ifaces: Interfaces to be registered + """ + if not isinstance(ifaces, list): + ifaces = [ifaces] + + for iface in ifaces: + # iface could be VapiInterface if bindings layer is registering + # it's interfaces. In that case, extract the skeleton from + # VapiInterface + if isinstance(iface, VapiInterface): + api_iface = iface.api_interface + # In Dynamic providers, where ApiInterface is implemented directly + # instead of using bindings, an instance of ApiInterface is passed + elif isinstance(iface, ApiInterface): + api_iface = iface + else: + raise Exception( + 'Could not register the interface %s. It has to be either ' + 'an instance of vmware.vapi.bindings.VapiInterface or ' + 'an instance of vmware.vapi.core.ApiInterface' % str(iface.__class__)) + + service_id = api_iface.get_identifier().get_name() + if service_id in self._service_map: + raise Exception('Service already registered: %s' % service_id) + + logger.info('Registering service: %s', service_id) + self._service_map[service_id] = api_iface + if self._introspector: + self._introspector.add_service(service_id, api_iface) +
+ @staticmethod + def _validate_error(error_value, method_definition): + """ + Validate the error_value is allowed to be reported by the method + described by method_definition. + + :type error_value: :class:`vmware.vapi.data.value.ErrorValue` + :param error_value: Error value to validate + :type method_definition: :class:`vmware.vapi.core.MethodDefinition` + :param method_definition: definition of the method to validate against. + :rtype: :class:`vmware.vapi.message.Message` or None + :return: the messages describing the validation failure or None if + validation succeeded + """ + + error_def = method_definition.get_error_definition(error_value.name) + if error_def is None: + method_id = method_definition.get_identifier() + logger.error("Method %s reported the error %s which is not in " + + "MethodDefinition", + method_id.get_name(), error_value.name) + message = message_factory.get_message( + 'vapi.method.status.errors.invalid', + error_value.name, str(method_id.get_name())) + return [message] + messages = error_def.validate(error_value) + return messages + + def _invoke_int(self, service_id, operation_id, input_value, ctx): + """ + Internal implementation of InvokeMethod + + :type service_id: :class:`str` + :param service_id: Service identifier + :type operation_id: :class:`str` + :param operation_id: Operation identifier + :type ctx: :class:`vmware.vapi.core.ExecutionContext` + :param ctx: Execution context for this method + :type input_value: :class:`vmware.vapi.data.value.StructValue` + :param input_value: Method input parameters + + :rtype: :class:`vmware.vapi.core.MethodResult` + :return: Result of the method invocation + """ + # Step 0: Verify input types + if (input_value and not (input_value.type == Type.STRUCTURE)): + logger.error("Invalid inputs") + error_value = make_error_value_from_msg_id( + self._invalid_argument_def, 'vapi.method.input.invalid') + return MethodResult(error=error_value) + + iface_id = InterfaceIdentifier(service_id) + method_id = MethodIdentifier(iface_id, operation_id) + + # Step 1: Get method definition + iface = self._service_map.get(service_id) + if not iface: + logger.error('Could not find service: %s', service_id) + error_value = make_error_value_from_msg_id( + self._operation_not_found_def, + 'vapi.method.input.invalid.interface', + service_id) + return MethodResult(error=error_value) + + method_def = iface.get_method_definition(method_id) + if not method_def: + logger.error("Could not find method %s", method_id.get_name()) + error_value = make_error_value_from_msg_id( + self._operation_not_found_def, + 'vapi.method.input.invalid.method', + method_id.get_name()) + return MethodResult(error=error_value) + + input_def = method_def.get_input_definition() + if not isinstance(input_def, StructDefinition): + error_value = make_error_value_from_msg_id( + self._internal_server_error_def, + 'vapi.method.input.invalid.definition') + return MethodResult(error=error_value) + + output_def = method_def.get_output_definition() + if not isinstance(output_def, DataDefinition): + error_value = make_error_value_from_msg_id( + self._internal_server_error_def, + 'vapi.method.output.invalid.definition') + return MethodResult(error=error_value) + + # Step 2: Validate input with input def + input_def.complete_value(input_value) + messages = input_def.validate(input_value) + if messages: + logger.error("Input validation failed for method %s", + method_id.get_name()) + error_value = make_error_value_from_msgs( + self._invalid_argument_def, *messages) + return MethodResult(error=error_value) + + # Step 3: Execute method + method_result = iface.invoke(ctx, method_id, input_value) + + # Step 4: Validate output with output def or error against errors set + if method_result.success(): + messages = output_def.validate(method_result.output) + if messages: + logger.error("Output validation failed for method %s", + method_id.get_name()) + error_value = make_error_value_from_msgs( + self._internal_server_error_def, *messages) + return MethodResult(error=error_value) + else: + error_value = method_result.error + messages = self._validate_error(error_value, method_def) + if messages: + new_error_value = make_error_value_from_error_value_and_msgs( + self._internal_server_error_def, + error_value, + *messages) + return MethodResult(error=new_error_value) + + return method_result + +
[docs] def invoke(self, service_id, operation_id, input_value, ctx): + logger.info("Started: Service: %s, Operation: %s, Ctx: %s", + service_id, operation_id, ctx) + try: + method_result = self._invoke_int( + service_id, operation_id, input_value, ctx) + if method_result.success(): + method_result = augment_method_result_with_errors( + service_id, + operation_id, + method_result, + self._error_values_to_augment) + except Exception as e: + logger.exception("Error in invoking %s in %s - %s", + service_id, operation_id, e) + error_value = make_error_value_from_msg_id( + self._internal_server_error_def, + 'vapi.method.invoke.exception', + str(e)) + method_result = MethodResult(error=error_value) + logger.info("Finished: Service: %s. Operation %s, Ctx: %s", + service_id, operation_id, ctx) + return method_result + + +# Singleton LocalProvider instance
+_local_provider = LocalProvider() + + +
[docs]def get_provider(): + """ + Returns the singleton LocalProvider instance + + :rtype: :class:`LocalProvider` + :return: LocalProvider instance + """ + return _local_provider
+
+ +
+
+
+
+
+ + +
+
+
+
+ + + + \ No newline at end of file diff --git a/vsphere/6.0/_modules/vmware/vapi/provider/services.html b/vsphere/6.0/_modules/vmware/vapi/provider/services.html new file mode 100644 index 00000000..bbe165a3 --- /dev/null +++ b/vsphere/6.0/_modules/vmware/vapi/provider/services.html @@ -0,0 +1,139 @@ + + + + + + + + + + vmware.vapi.provider.services — vCloud Suite SDK for Python 6.0.0 documentation + + + + + + + + + + + + + + +
+
+
+
+ +

Source code for vmware.vapi.provider.services

+"""
+Helper classes for aggregator services
+"""
+
+__author__ = 'VMware, Inc.'
+__copyright__ = 'Copyright 2011-2012 VMware, Inc.  All rights reserved. -- VMware Confidential'
+
+import logging
+import time
+
+logger = logging.getLogger(__name__)
+
+
+
[docs]class Stats(object): + """ + Class that provides stats hooks to ApiAggregator + """"" + + def __init__(self): + """ + Initialize StatsMixin + """ + self._init_time = time.time() + self._num_providers = 0 + +
[docs] def increment_provider_count(self): + """ + Increment the number of providers + """ + self._num_providers += 1 +
+
[docs] def decrement_provider_count(self): + """ + Decrement the number of providers + """ + self._num_providers -= 1 +
+
[docs] def get(self): + """ + Get the stats information + + :rtype: :class:`tuple(:class:`time`, :class:`long`)` + :return: Return the init time and list of providers + """ + return (self._init_time, self._num_providers)
+
+ +
+
+
+
+
+ + +
+
+
+
+ + + + \ No newline at end of file diff --git a/vsphere/6.0/_modules/vmware/vapi/security/chain.html b/vsphere/6.0/_modules/vmware/vapi/security/chain.html new file mode 100644 index 00000000..a1516b79 --- /dev/null +++ b/vsphere/6.0/_modules/vmware/vapi/security/chain.html @@ -0,0 +1,119 @@ + + + + + + + + + + vmware.vapi.security.chain — vCloud Suite SDK for Python 6.0.0 documentation + + + + + + + + + + + + + + +
+
+
+
+ +

Source code for vmware.vapi.security.chain

+"""
+AuthenticationChain processor
+"""
+
+__author__ = 'VMware, Inc.'
+__copyright__ = 'Copyright 2012 VMware, Inc.  All rights reserved. -- VMware Confidential'
+
+
+
[docs]class AuthenticationChain(object): + """ + Implementations of this interface are used to chain authentication when + there is intermediary between the client and the server i.e. an + aggregator node. + """ + +
[docs] def next_context(self, ctx): + """ + Returns the next security context based on the current context + + :type ctx: :class:`vmware.vapi.core.SecurityContext` + :param ctx: Current security context + :rtype: :class:`vmware.vapi.core.SecurityContext` + :return: Next security context + """ + raise NotImplementedError
+
+ +
+
+
+
+
+ + +
+
+
+
+ + + + \ No newline at end of file diff --git a/vsphere/6.0/_modules/vmware/vapi/security/lib.html b/vsphere/6.0/_modules/vmware/vapi/security/lib.html new file mode 100644 index 00000000..1006e697 --- /dev/null +++ b/vsphere/6.0/_modules/vmware/vapi/security/lib.html @@ -0,0 +1,122 @@ + + + + + + + + + + vmware.vapi.security.lib — vCloud Suite SDK for Python 6.0.0 documentation + + + + + + + + + + + + + + +
+
+
+
+ +

Source code for vmware.vapi.security.lib

+"""
+AuthenticationChain processor lib
+"""
+
+__author__ = 'VMware, Inc.'
+__copyright__ = 'Copyright 2012 VMware, Inc.  All rights reserved. -- VMware Confidential'
+
+import logging
+
+from vmware.vapi.lib.constants import PROCESSORS
+from vmware.vapi.lib.load import import_multiple_classes
+
+processors = import_multiple_classes(__name__, PROCESSORS)
+logger = logging.getLogger(__name__)
+
+
+
[docs]def next_security_context(ctx): + """ + Returns the next security context based on the current context + + :type ctx: :class:`vmware.vapi.core.SecurityContext` + :param ctx: Current security context + :rtype: :class:`vmware.vapi.core.SecurityContext` + :return: Next security context + """ + for processor in processors: + ctx = processor.next_context(ctx) + return ctx
+
+ +
+
+
+
+
+ + +
+
+
+
+ + + + \ No newline at end of file diff --git a/vsphere/6.0/_modules/vmware/vapi/security/session.html b/vsphere/6.0/_modules/vmware/vapi/security/session.html new file mode 100644 index 00000000..1b5c0825 --- /dev/null +++ b/vsphere/6.0/_modules/vmware/vapi/security/session.html @@ -0,0 +1,120 @@ + + + + + + + + + + vmware.vapi.security.session — vCloud Suite SDK for Python 6.0.0 documentation + + + + + + + + + + + + + + +
+
+
+
+ +

Source code for vmware.vapi.security.session

+"""
+Session Security Helper
+"""
+
+__author__ = 'VMware, Inc.'
+__copyright__ = 'Copyright 2011 VMware, Inc.  All rights reserved. -- VMware Confidential'
+
+from vmware.vapi.core import SecurityContext
+from vmware.vapi.lib.constants import SCHEME_ID
+
+SESSION_SCHEME_ID = 'com.vmware.vapi.std.security.session_id'
+SESSION_ID = 'sessionId'
+
+
+
[docs]def create_session_security_context(session_id): + """ + Create a security context for Session Id based authentication + scheme + + :type session_id: :class:`str` + :param session_id: Session ID + :rtype: :class:`vmware.vapi.core.SecurityContext` + :return: Newly created security context + """ + return SecurityContext({SCHEME_ID: SESSION_SCHEME_ID, + SESSION_ID: session_id})
+
+ +
+
+
+
+
+ + +
+
+
+
+ + + + \ No newline at end of file diff --git a/vsphere/6.0/_modules/vmware/vapi/security/sso.html b/vsphere/6.0/_modules/vmware/vapi/security/sso.html new file mode 100644 index 00000000..4471caa2 --- /dev/null +++ b/vsphere/6.0/_modules/vmware/vapi/security/sso.html @@ -0,0 +1,524 @@ + + + + + + + + + + vmware.vapi.security.sso — vCloud Suite SDK for Python 6.0.0 documentation + + + + + + + + + + + + + + +
+
+
+
+ +

Source code for vmware.vapi.security.sso

+"""
+SSO Security Helper
+"""
+
+__author__ = 'VMware, Inc.'
+__copyright__ = 'Copyright 2011-2014 VMware, Inc.  All rights reserved. -- VMware Confidential'
+
+from base64 import b64encode, b64decode
+import datetime
+import decimal
+import logging
+from lxml import etree
+from OpenSSL import crypto
+import re
+try:
+    import simplejson as json
+except ImportError:
+    import json
+
+from vmware.vapi.bindings.datetime_helper import DateTimeConverter
+from vmware.vapi.core import SecurityContext
+from vmware.vapi.data.serializers.jsonrpc import (
+    DecimalEncoder, canonicalize_double)
+from vmware.vapi.lib.constants import (
+    PARAMS, SCHEME_ID, EXECUTION_CONTEXT, SECURITY_CONTEXT)
+from vmware.vapi.protocol.common.lib import RequestProcessor
+from vmware.vapi.settings import config
+
+key_regex = re.compile(r'-----BEGIN [A-Z ]*PRIVATE KEY-----\n')
+SAML_SCHEME_ID = 'com.vmware.vapi.std.security.saml_hok_token'
+SAML_BEARER_SCHEME_ID = 'com.vmware.vapi.std.security.saml_bearer_token'
+PRIVATE_KEY = 'privateKey'
+SAML_TOKEN = 'samlToken'
+SIGNATURE_ALGORITHM = 'signatureAlgorithm'
+DEFAULT_ALGORITHM_TYPE = 'RS256'
+TIMESTAMP = 'timestamp'
+EXPIRES = 'expires'
+CREATED = 'created'
+REQUEST_VALIDITY = 20
+SIGNATURE = 'signature'
+DIGEST = 'value'
+AUTHENTICATED = 'requestAuthenticated'
+STS_URL_PROP = 'stsurl'
+CERTIFICATE_PROP = 'certificate'
+PRIVATE_KEY_PROP = 'privatekey'
+SECTION = __name__
+# Algorithm Header Parameter Values for JWS based on the following link
+# https://datatracker.ietf.org/doc/draft-ietf-jose-json-web-algorithms/?include_text=1
+algorithm_map = {
+    'RS256': 'sha256',
+    'RS384': 'sha384',
+    'RS512': 'sha512',
+}
+
+logger = logging.getLogger(__name__)
+
+
+
[docs]def setup_saml_token_processors(): + """ + If SAML token based authentication scheme is used, this operation + should be invoked by the client to setup the request processors + that does the request signing using the token. + """ + if not config.cfg.has_section( + 'vmware.vapi.protocol.client.msg.json_connector'): + config.cfg.add_section('vmware.vapi.protocol.client.msg.json_connector') + config.cfg.set('vmware.vapi.protocol.client.msg.json_connector', + 'processors', + 'vmware.vapi.security.sso.JSONSSOSigner') + +
+
[docs]def create_saml_bearer_security_context(token): + """ + Create a security context for SAML bearer token based + authentication scheme + + :type token: :class:`str` + :param token: SAML Token + """ + return SecurityContext({SCHEME_ID: SAML_BEARER_SCHEME_ID, + SAML_TOKEN: token}) + +
+
[docs]def create_saml_security_context(token, private_key): + """ + Create a security context for SAML token based + authentication scheme + + :type token: :class:`str` + :param token: SAML Token + :type private_key: :class:`str` + :param private_key: Absolute file path of the private key of the user + :rtype: :class:`vmware.vapi.core.SecurityContext` + :return: Newly created security context + """ + private_key_data = None + with open(private_key, 'r') as fp: + private_key_data = fp.read() + return SecurityContext({SCHEME_ID: SAML_SCHEME_ID, + PRIVATE_KEY: private_key_data, + SAML_TOKEN: token, + SIGNATURE_ALGORITHM: DEFAULT_ALGORITHM_TYPE}) + +
+
[docs]class JSONCanonicalEncoder(json.JSONEncoder): + """ + Custom JSON Encoder class to canonicalize dictionary + and list objects + """ +
[docs] def encode(self, o): + """ + Encode a given python object + + :type o: :class:`object` + :param o: Python object + :rtype: :class:`str` + :return: JSON string in canonicalized form + """ + if isinstance(o, dict): + # Remove non-significant whitespace characters + # Keys are sorted lexicographically using UCS code + # point values + sorted_keys = sorted(o.keys()) + sorted_items = ['%s:%s' % (self.encode(key), + self.encode(o[key])) + for key in sorted_keys] + string = ','.join(sorted_items) + return '{%s}' % string + elif isinstance(o, list): + # Arrays must preserve the initial ordering + # Remove non-significant whitespace characters + string = ','.join([self.encode(item) + for item in o]) + return '[%s]' % string + elif isinstance(o, decimal.Decimal): + return canonicalize_double(o) + else: + return json.JSONEncoder.encode(self, o) + +
+
[docs]class JSONCanonicalizer(object): + """ + This class is responsible for transforming JSON messages into their + canonical representation. + + The canonical form is defined by the following rules: + 1. Non-significant(1) whitespace characters MUST NOT be used + 2. Non-significant(1) line endings MUST NOT be used + 3. Entries (set of name/value pairs) in JSON objects MUST be sorted + lexicographically(2) by their names based on UCS codepoint values + 4. Arrays MUST preserve their initial ordering + + Link to the IEFT proposal: + https://datatracker.ietf.org/doc/draft-staykov-hu-json-canonical-form/ + """ + @staticmethod +
[docs] def canonicalize(input_message): + """ + Canonicalize the input message + + :type input_message: :class:`str` + :param input_message: Input message + :rtype: :class:`str` + :return: Canonicalized message + """ + py_obj = json.loads(input_message, parse_float=decimal.Decimal) + return JSONCanonicalEncoder().encode(py_obj) +
+ @staticmethod +
[docs] def canonicalize_py_obj(py_obj): + """ + Canonicalize the input python object + + :type input_message: :class:`object` + :param input_message: Input python object + :rtype: :class:`str` + :return: Canonicalized message + """ + return JSONCanonicalEncoder().encode(py_obj) + +
+
[docs]class JSONSSOSigner(RequestProcessor): + """ + This class is used for signing JSON request messages + """ +
[docs] def process(self, input_message): + """ + Sign the input JSON request message. + + The message is signed using user's private key. The digest and saml + token is then added to the security context block of the execution + context. A timestamp is also added to guard against replay attacks + + Sample input security context: + { + 'schemeId': 'SAML_TOKEN', + 'privateKey': <PRIVATE_KEY>, + 'samlToken': <SAML_TOKEN>, + 'signatureAlgorithm': <ALGORITHM>, + } + + Security context block before signing: + { + 'schemeId': 'SAML_TOKEN', + 'signatureAlgorithm': <ALGORITHM>, + 'timestamp': { + 'created': '2012-10-26T12:24:18.941Z', + 'expires': '2012-10-26T12:44:18.941Z', + } + } + + Security context block after signing: + { + 'schemeId': 'SAML_TOKEN', + 'signatureAlgorithm': <ALGORITHM>, + 'signature': { + 'samlToken': <SAML_TOKEN>, + 'value': <DIGEST> + } + 'timestamp': { + 'created': '2012-10-26T12:24:18.941Z', + 'expires': '2012-10-26T12:44:18.941Z', + } + } + """ + if input_message is None: + return + + # process only if the schemeId in the request matches the schemeId of + # this signer + if not SAML_SCHEME_ID in input_message: + return input_message + + py_obj = json.loads(input_message, parse_float=decimal.Decimal) + json_params = py_obj.get(PARAMS) # pylint: disable=E1103 + ctx = json_params.get(EXECUTION_CONTEXT) + + sec_ctx = ctx.get(SECURITY_CONTEXT) + private_key = sec_ctx.get(PRIVATE_KEY) + saml_token = sec_ctx.get(SAML_TOKEN) + jws_algorithm = sec_ctx.get(SIGNATURE_ALGORITHM) + algorithm = algorithm_map.get(jws_algorithm) + + new_sec_ctx = {} + new_sec_ctx[SCHEME_ID] = sec_ctx.get(SCHEME_ID) + new_sec_ctx[TIMESTAMP] = _generate_request_timestamp() + new_sec_ctx[SIGNATURE_ALGORITHM] = jws_algorithm + + # Replace the old security context with the new one + del ctx[SECURITY_CONTEXT] + ctx[SECURITY_CONTEXT] = new_sec_ctx + + pkey = crypto.load_privatekey( + crypto.FILETYPE_PEM, _prep_private_key(private_key)) + canonical_message = JSONCanonicalizer.canonicalize_py_obj(py_obj) + digest = b64encode(crypto.sign(pkey, canonical_message, algorithm)) + + new_sec_ctx[SIGNATURE] = {SAML_TOKEN: saml_token, + DIGEST: digest} + return json.dumps(py_obj, + check_circular=False, + separators=(',', ':'), + cls=DecimalEncoder) + +
+
[docs]class JSONSSOVerifier(RequestProcessor): + """ + This class is used to verify the authenticity of the request + message by verifying the digest present in the security context + block. + """ +
[docs] def process(self, input_message): + """ + Verify the input JSON message. + + For verification, we need 4 things: + 1. algorithm: extracted from security context + 2. certificate: public key of the principal embedded in the + SAML token is used + 3. digest: value field from signature block + 4. canonical msg: signature block is removed from the request + and the remaining part is canonicalized + + Sample input security context: + { + 'schemeId': 'SAML_TOKEN', + 'signatureAlgorithm': <ALGORITHM>, + 'signature': { + 'samlToken': <SAML_TOKEN>, + 'value': <DIGEST> + } + 'timestamp': { + 'created': '2012-10-26T12:24:18.941Z', + 'expires': '2012-10-26T12:44:18.941Z', + } + } + + :type input_message: :class:`str` + :param input_message: Input JSON request message + :rtype: :class:`str` + :return: JSON request message after signature verification + """ + if not input_message: + return + + if not SAML_SCHEME_ID in input_message: + return input_message + + py_obj = json.loads(input_message, parse_float=decimal.Decimal) + json_params = py_obj.get(PARAMS) # pylint: disable=E1103 + execution_ctx = json_params.get(EXECUTION_CONTEXT) + sec_ctx = execution_ctx.get(SECURITY_CONTEXT) + + signature = sec_ctx.get(SIGNATURE) + del sec_ctx[SIGNATURE] + + digest = b64decode(signature.get(DIGEST)) + jws_algorithm = sec_ctx.get(SIGNATURE_ALGORITHM) + algorithm = algorithm_map.get(jws_algorithm) + saml_token = signature.get(SAML_TOKEN) + certificate = _extract_certificate(saml_token) + + pubkey = crypto.load_certificate( + crypto.FILETYPE_PEM, _prep_certificate(certificate)) + canonical_message = JSONCanonicalizer.canonicalize_py_obj(py_obj) + crypto.verify(pubkey, digest, canonical_message, algorithm) + + sec_ctx[SAML_TOKEN] = saml_token + sec_ctx[AUTHENTICATED] = True + sec_ctx[SIGNATURE_ALGORITHM] = jws_algorithm + + return json.dumps(py_obj, + check_circular=False, + separators=(',', ':'), + cls=DecimalEncoder) + +
+def _extract_element(xml, element_name, namespace): + """ + An internal method provided to extract an element from the given XML. + + :type xml: :class:`str` + :param xml: The XML string from which the element will be extracted. + :type element_name: :class:`str` + :param element_name: The element that needs to be extracted from the XML. + :type namespace: :class:`dict` + :param namespace: A dict containing the namespace of the element to be + extracted. + :rtype: etree element. + :return: The extracted element. + """ + assert(len(namespace) == 1) + result = xml.xpath("//%s:%s" % (list(namespace.keys())[0], element_name), + namespaces=namespace) + if result: + return result[0] + else: + raise KeyError("%s does not seem to be present in the XML." % + element_name) + + +def _prep_private_key(private_key): + """ + Append proper prefix and suffix text to a private key. There is no + standard way for storing certificates. OpenSSL expects the demarcation + text. This method makes sure that the text the markers are present. + + :type text: :class:`str` + :param text: The private key of the service user. + + :rtype: :class:`str` + :return: Normalized private key. + """ + if not key_regex.search(private_key): + return """-----BEGIN RSA PRIVATE KEY----- +%s +-----END RSA PRIVATE KEY-----""" % private_key + return private_key + + +def _prep_certificate(certificate): + """ + Append proper prefix and suffix text to a certificate. There is no + standard way for storing certificates. OpenSSL expects the demarcation + text. This method makes sure that the text the markers are present. + + :type text: :class:`str` + :param text: The certificate of the service user. + + :rtype: :class:`str` + :return: Normalized certificate + """ + if not certificate.startswith('-----BEGIN CERTIFICATE-----'): + return """-----BEGIN CERTIFICATE----- +%s +-----END CERTIFICATE-----""" % certificate + return certificate + + +def _extract_certificate(hok_token): + """ + Extract Certificate of the principal from Holder of Key SAML token + + :type hok_token: :class:`str` + :param hok_token: Holder of key SAML token + :rtype: :class:`str` + :return: Certificate of the principal + """ + xml = etree.fromstring(hok_token) + subject = _extract_element( + xml, + 'SubjectConfirmationData', + {'saml2': 'urn:oasis:names:tc:SAML:2.0:assertion'}) + xml_certificate = subject.getchildren()[0].getchildren()[0].getchildren()[0] + return xml_certificate.text.replace('\\n', '\n') + + +def _generate_request_timestamp(): + """ + Generate a timestamp for the request. This will be embedded in the security + context of the request to protect it against replay attacks + + :rtype: :class:`dict` + :return: Timestamp block that can be inserted in security context + """ + created_dt = datetime.datetime.utcnow() + offset = datetime.timedelta(minutes=REQUEST_VALIDITY) + created = DateTimeConverter.convert_from_datetime(created_dt) + expires = DateTimeConverter.convert_from_datetime(created_dt + offset) + return {EXPIRES: expires, CREATED: created} +
+ +
+
+
+
+
+ + +
+
+
+
+ + + + \ No newline at end of file diff --git a/vsphere/6.0/_modules/vmware/vapi/security/user_password.html b/vsphere/6.0/_modules/vmware/vapi/security/user_password.html new file mode 100644 index 00000000..fb86eba3 --- /dev/null +++ b/vsphere/6.0/_modules/vmware/vapi/security/user_password.html @@ -0,0 +1,124 @@ + + + + + + + + + + vmware.vapi.security.user_password — vCloud Suite SDK for Python 6.0.0 documentation + + + + + + + + + + + + + + +
+
+
+
+ +

Source code for vmware.vapi.security.user_password

+"""
+User password Security Helper
+"""
+
+__author__ = 'VMware, Inc.'
+__copyright__ = 'Copyright 2013 VMware, Inc.  All rights reserved. -- VMware Confidential'
+
+from vmware.vapi.core import SecurityContext
+from vmware.vapi.lib.constants import SCHEME_ID
+
+USER_PASSWORD_SCHEME_ID = 'com.vmware.vapi.std.security.user_pass'
+USER_KEY = 'userName'
+PASSWORD_KEY = 'password'
+
+
+
[docs]def create_user_password_security_context(user_name, password): + """ + Create a security context for Username-Password based authentication + scheme + + :type user_name: :class:`str` + :param user_name: Name of the user + :type password: :class:`str` + :param password: Password of the user + :rtype: :class:`vmware.vapi.core.SecurityContext` + :return: Newly created security context + """ + return SecurityContext({SCHEME_ID: USER_PASSWORD_SCHEME_ID, + USER_KEY: user_name, + PASSWORD_KEY: password})
+
+ +
+
+
+
+
+ + +
+
+
+
+ + + + \ No newline at end of file diff --git a/vsphere/6.0/_modules/vmware/vapi/server/asyncore_http.html b/vsphere/6.0/_modules/vmware/vapi/server/asyncore_http.html new file mode 100644 index 00000000..d191db83 --- /dev/null +++ b/vsphere/6.0/_modules/vmware/vapi/server/asyncore_http.html @@ -0,0 +1,1363 @@ + + + + + + + + + + vmware.vapi.server.asyncore_http — vCloud Suite SDK for Python 6.0.0 documentation + + + + + + + + + + + + + + +
+
+
+
+ +

Source code for vmware.vapi.server.asyncore_http

+#!/usr/bin/env python
+
+"""
+Asyncore http connection
+"""
+
+__author__ = 'VMware, Inc.'
+__copyright__ = 'Copyright 2012 VMware, Inc.  All rights reserved. -- VMware Confidential'
+
+import logging
+
+# Http stuff
+# import Cookie
+import asynchat
+from collections import deque
+import threading
+import posixpath
+import six
+
+from six.moves import urllib
+from six.moves import BaseHTTPServer
+from vmware import vapi
+
+logger = logging.getLogger(__name__)
+
+_HTTP_MAX_REQUEST_SIZE = 4 * 1024 * 1024
+
+
+
[docs]def find_token(tokens, token_to_find): + """ + Find token and token value from a comma separated tokens + + :type tokens: :class:`str` + :param tokens: comma separated tokens string + :type token_to_find: :class:`str` + :param token_to_find: a string to find in the tokens + :rtype :class:`tuple` of :class:`str`, :class:`str` if token is found, None otherwise + :return: tuple of (token_to_find, value) + """ + # Split token with , + for token in tokens.lower().split(','): + # Split again with ; + token_and_val = token.split(';', 1) + if token_and_val[0].strip() == token_to_find: + if len(token_and_val) > 1: + val = token_and_val[1].strip() + else: + val = '' + return (token_to_find, val) + return None + +
+
[docs]def log_exception(msg, err): + """ + Handy function to log exception with stack trace + + :type msg: :class:`str` + :param msg: error message + :type err: :class:`Exception` + :param err: exception to log + """ + import traceback + stack_trace = traceback.format_exc() + logger.critical('%s: %s: %s', msg, err, stack_trace) + +
+
[docs]class GzipWriter(object): + """ Gzip writer """ + + def __init__(self, wfile): + """ + Gzip writer init + + :type wfile: :class:`file` + :param wfile: file object to write to + """ + import gzip + self.wfile = gzip.GzipFile(fileobj=wfile, mode='wb', compresslevel=5) + self.org_wfile = wfile + +
[docs] def write(self, buf): + """ + write + + :type buf: :class:`str` + :param buf: data to write + """ + if not buf or not self.wfile: + return + self.wfile.write(buf) +
+
[docs] def flush(self): + """ flush """ + if not self.wfile: + return + self.wfile.flush() +
+
[docs] def close(self): + """ close """ + if not self.wfile: + return + + # No more write + self.wfile.close() + self.wfile = None + + self.org_wfile.close() + self.org_wfile = None +
+ def __del__(self): + self.close() + +
+
[docs]class DeflateWriter(object): + """ Deflate (zlib) writer """ + def __init__(self, wfile, compresslevel=5): + """ + Deflate (zlib) writer init + + :type wfile: :class:`file` + :param wfile: file object to write to + """ + import zlib + self.wfile = wfile + self.compress = zlib.compressobj(compresslevel, + zlib.DEFLATED, + zlib.MAX_WBITS) + self.flush_flag = zlib.Z_SYNC_FLUSH + self.close_flush_flag = zlib.Z_FINISH + +
[docs] def write(self, buf): + """ + write + + :type buf: :class:`str` + :param buf: data to write + """ + if not buf or not self.wfile: + return + + self.wfile.write(self.compress.compress(buf)) +
+
[docs] def flush(self): + """ flush """ + if not self.wfile: + return + + self.wfile.write(self.compress.flush(self.flush_flag)) + self.wfile.flush() +
+
[docs] def close(self): + """ close """ + if not self.wfile: + return + + self.wfile.write(self.compress.flush(self.close_flush_flag)) + self.wfile.close() + + # No more write + self.wfile = None + self.compress = None +
+ def __del__(self): + self.close() + +
+
[docs]class AsyncChatWriteAdapter(object): + """ Async chat write adapter """ + + def __init__(self, chat_obj): + """ + Async chat write adapter init + + :type chat_obj: :class:`asynchat.async_chat` + :param chat_obj: async chat object + """ + self.chat_obj = chat_obj + +
[docs] def write(self, buf): + """ + write + + :type buf: :class:`str` + :param buf: data to write + """ + if not self.chat_obj: + return + + self.chat_obj.push(buf) +
+
[docs] def flush(self): + """ flush """ + if not self.chat_obj: + return + + self.chat_obj.initiate_send() +
+
[docs] def close(self): + """ close """ + if not self.chat_obj: + return + + self.chat_obj.close_when_done() + self.flush() + + self.chat_obj = None +
+ def __del__(self): + self.close() + +
+
[docs]class ChunkedMessageBodyWriter(object): + """ Chunked message writer """ + def __init__(self, wfile, chunk_size=4096): + """ + Chunked message writer init + + :type wfile: :class:`file` + :param wfile: file object to write to + :type chunk_size: :class:`int` + :param chunk_size: max write chunk size + """ + self.wfile = wfile + self.chunk_size = chunk_size + + self.curr_chunk_size = 0 + self.chunks = deque() + + def _write_chunk(self): + """ write a chunk """ + if not self.wfile: + return + + if self.curr_chunk_size > self.chunk_size: + chunk_size = self.chunk_size + leftover_bytes = self.curr_chunk_size - self.chunk_size + else: + chunk_size = self.curr_chunk_size + leftover_bytes = 0 + + # Write chunk header + chunk_header = '%x\r\n' % chunk_size + if six.PY3: + chunk_header = chunk_header.encode('utf-8') + self.wfile.write(chunk_header) + + chunks = self.chunks + if leftover_bytes > 0: + # Split the last chunk + last_chunk = chunks.pop() + chunks.append(last_chunk[:-leftover_bytes]) + leftover_chunks = [last_chunk[-leftover_bytes:]] + else: + leftover_chunks = deque() + + # Write chunks + for chunk in chunks: + self.wfile.write(chunk) + self.wfile.write(b'\r\n') + + # Reset state + self.curr_chunk_size = leftover_bytes + self.chunks = leftover_chunks + +
[docs] def write(self, buf): + """ + write + + :type buf: :class:`str` + :param buf: data to write + """ + if not buf or not self.wfile: + return + + size = len(buf) + self.curr_chunk_size += size + self.chunks.append(buf) + while self.curr_chunk_size >= self.chunk_size: + self._write_chunk() +
+
[docs] def close(self): + """ close """ + if not self.wfile: + return + + # Flush chunks + self.flush() + + # Write ending zero bytes chunk + self._write_chunk() + self.wfile.close() + self.wfile = None +
+ def __del__(self): + self.close() + +
[docs] def flush(self): + """ flush """ + # Flush buffer + if self.curr_chunk_size: + self._write_chunk() + if self.wfile: + self.wfile.flush() + +
+
[docs]class DataHandler(object): + """ Async chat data handler """ + + def __init__(self, channel): + """ + Async chat data handler init + + :type channel: :class:`HttpRequestHandler` + :param channel: http request handler + """ + self.channel = channel + self.max_data_size = 0 + self.data = None + self.data_size = 0 + self.clear_data() + +
[docs] def clear_data(self): + """ Clear self.data """ + self.data = deque() + self.data_size = 0 +
+
[docs] def set_handlers(self, + found_term_handler, terminator, + collect_in_data_handler, max_data_size): + """ + Set asynchat handlers + + :type found_term_handler: :class:`function` + :param found_term_handler: terminator found handler + :type terminator: :class:`str` + :param terminator: terminator string + :type collect_in_data_handler: :class:`function` + :param collect_in_data_handler: collect incoming data handler + :type max_data_size: :class:`int` + :param max_data_size: max data size before abort + """ + self.channel.set_handlers(found_term_handler, terminator, collect_in_data_handler) + self.max_data_size = max_data_size +
+
[docs] def append_data_collect_incoming_data(self, data): + """ + Generic incoming data handler: Append data to self.data + + :type data: :class:`str` + :param data: incoming data + """ + data_size = self.data_size + len(data) + if data_size > self.max_data_size: + self.channel.request_too_large(data_size, self.max_data_size) + return + + # Append data + self.data.append(data) + self.data_size = data_size + +
+
[docs]class HttpHeadersHandler(DataHandler): + """ Async chat http header handler """ + + def __init__(self, channel): + """ + Async chat http headers handler init + + :type channel: :class:`HttpRequestHandler` + :param channel: http request handler + """ + DataHandler.__init__(self, channel) + self.set_handlers(self.http_headers_found_terminator, b'\r\n\r\n', + self.append_data_collect_incoming_data, 4096) + +
[docs] def http_headers_found_terminator(self): + """ Found terminator handler """ + self.channel.http_headers_end(b''.join(self.data)) + +
+
[docs]class HttpBodyHandler(DataHandler): + """ Async chat http body handler """ + + def __init__(self, channel): + """ + Async chat http body handler init + + :type channel: :class:`HttpRequestHandler` + :param channel: http request handler + """ + DataHandler.__init__(self, channel) + # Max request len is 4 M + self.request_size = 0 + self.max_request_size = _HTTP_MAX_REQUEST_SIZE + +
[docs] def http_body_collect_incoming_data(self, data): + """ + incoming data handler + + :type data: :class:`str` + :param data: incoming data + """ + data_size = self.request_size + len(data) + if data_size > self.max_request_size: + self.channel.request_too_large(data_size, self.max_request_size) + return + + self.channel.http_body_continue(data) + self.request_size = data_size +
+
[docs] def http_body_found_terminator(self): + """ Found terminator handler """ + self.channel.http_body_end() + +
+
[docs]class ChunkedHandler(HttpBodyHandler): + """ Async chat http chunked handler """ + + def __init__(self, channel): + """ + Async chat http chunked handler init + + :type channel: :class:`HttpRequestHandler` + :param channel: http request handler + """ + HttpBodyHandler.__init__(self, channel) + self.set_handlers(self.chunked_size_found_terminator, b'\r\n', + self.append_data_collect_incoming_data, 128) + +
[docs] def chunked_size_found_terminator(self): + """ Found chunked size handler """ + line = ''.join(self.data) + self.clear_data() + try: + chunk_size = int(line.split(';', 1)[0], 16) + except Exception: + logger.error('400: Bad chunk size: %s', line) + self.channel.send_error_(400, 'Bad chunk size (%s)' % line) + return + + if chunk_size == 0: + # Last chunk. Remove trailer + self.set_handlers( + self.chunked_trailer_found_terminator, b'\r\n', + self.append_data_collect_incoming_data, 4096) + else: + self.set_handlers( + lambda: self.channel.setup_chunked_handler(), chunk_size + 2, # pylint: disable=W0108 + self.chunked_data_collect_incoming_data, self.max_request_size) +
+
[docs] def chunked_trailer_found_terminator(self): + """ Found chunked trailer terminator handler """ + if len(self.data) and self.data[-1] == b'\r\n': + # End of chunked trailer + self.http_body_found_terminator() +
+
[docs] def chunked_data_collect_incoming_data(self, data): + """ + incoming data handler + + :type data: :class:`str` + :param data: incoming data + """ + self.http_body_collect_incoming_data(data) + +
+
[docs]class MessageHandler(HttpBodyHandler): + """ Async chat http message handler """ + + def __init__(self, channel, content_len=None): + """ + Async chat http message handler init + + :type channel: :class:`HttpRequestHandler` + :param channel: http request handler + :type content_len: :class:`int` or None + :param content_len: http content length + """ + HttpBodyHandler.__init__(self, channel) + + if content_len is None: + # Read until eof + content_len = self.max_request_size + elif content_len < 0 or content_len > self.max_request_size: + self.channel.request_too_large(content_len, self.max_request_size) + return + + if content_len == 0: + self.message_body_found_terminator() + else: + self.set_handlers(self.message_body_found_terminator, content_len, + self.message_body_collect_incoming_data, self.max_request_size) + +
[docs] def message_body_found_terminator(self): + """ Found http message terminator handler """ + self.http_body_found_terminator() +
+
[docs] def message_body_collect_incoming_data(self, data): + """ + incoming data handler + + :type data: :class:`str` + :param data: incoming data + """ + self.http_body_collect_incoming_data(data) + +
+
[docs]class HeadOfLineWriter(object): + """ Head of line writer """ + +
[docs] class Writer: + """ Chile writer """ + def __init__(self, parent): + """ + Chile writer init + + :type parent: :class:`HeadOfLineWriter` + :param parent: Parent writer + """ + self.reply = None # Used by parent to buffer pending reply + self.parent = parent + +
[docs] def write(self, data): + """ + write + + :type data: :class:`str` + :param data: data to write + """ + if self.parent: + self.parent.write(self, data) +
+
[docs] def close(self): + """ close """ + if self.parent: + self.parent.close(self) + self.parent = None +
+ def __del__(self): + self.close() + +
[docs] def flush(self): + """ flush """ + if self.parent: + self.parent.flush(self) +
+
[docs] def is_closed(self): + """ + is writer closed + + :rtype: :class:`bool` + :return: True if closed, False otherwise + """ + return self.parent is None +
+ def __init__(self, wfile): + """ + Head of line writer init + + :type wfile: :class:`file` + :param wfile: file object to write to + """ + self.wfile = wfile + self.lock = threading.RLock() # Protecting writers_q + self.writers_q = deque() + +
[docs] def new_writer(self): + """ + Create a new child writer + + :rtype: :class:`Writer` + :return: A new writer + """ + writer = self.Writer(self) + with self.lock: + self.writers_q.append(writer) + return writer +
+
[docs] def write(self, writer, data): + """ + Write to child writer + + :type writer: :class:`Writer` + :param writer: child writer + :type data: :class:`str` + :param data: data to write + """ + if writer.is_closed(): + # Connection already closed + return + + with self.lock: + head_conn = self.writers_q[0] + # TODO: Release global lock, acquire writer lock + if writer != head_conn: + if not writer.reply: + writer.reply = deque() + writer.reply.append(data) + else: + self.flush_pending_reply(writer) + try: + # logger.debug('write len %d %s', len(data), self.wfile) + self.wfile.write(data) + except Exception as err: + logger.error('write: Failed to write %s', (str(err))) +
+
[docs] def close(self, writer): + """ + Close a child writer + + :type writer: :class:`Writer` + :param writer: child writer + """ + # close will modify writers_q. Must NOT call this while iterating + # thru writers_q + with self.lock: + if len(self.writers_q) > 0 and writer == self.writers_q[0]: + self.writers_q.popleft() + while len(self.writers_q) > 0 and self.writers_q[0].is_closed(): + head_writer = self.writers_q.popleft() + self.flush_pending_reply(head_writer) + self.wfile.flush() +
+
[docs] def flush_pending_reply(self, writer): + """ + Flush pending reply + + :type writer: :class:`Writer` + :param writer: child writer + """ + if writer.reply: + pending_reply = writer.reply + writer.reply = None + try: + data = ''.join(pending_reply) + # logger.debug('write len %d %s', len(data), self.wfile) + self.wfile.write(data) + except Exception as err: + logger.error('flush_pending_reply: Failed to write %s', (str(err))) +
+
[docs] def flush(self, writer): # pylint: disable=W0613 + """ + flush a child writer (only possible for head of line writer) + + :type writer: :class:`Writer` + :param writer: child writer + """ + # TODO: Only flush head of line writer + self.wfile.flush() +
+ def __del__(self): + with self.lock: + while len(self.writers_q) > 0: + head_writer = self.writers_q.popleft() + try: + self.flush_pending_reply(head_writer) + head_writer.close() + except Exception: + pass + + logger.debug('close %s', self.wfile) + self.wfile.close() + self.wfile = None + +
+
[docs]class HttpRequestHandler(object): + """ Http request handler """ + + def __init__(self, http_conn, wfile, content_type, protocol_handler): + """ + Http request handler init + + :type http_conn: :class:`AsyncoreHttpConnection` + :param http_conn: http connection + :type wfile: :class:`file` + :param wfile: file object to write to + :type content_type: :class:`str` + :param content_type: request content type + :type protocol_handler: :class:`vmware.vapi.protocol.server.transport.async_protocol_handler.AsyncProtocolHandler` + :param protocol_handler: async protocol handler + """ + # Extract info from http_conn + self.http_conn = http_conn + self.wfile = wfile + self.content_type = content_type + self.protocol_handler = protocol_handler + + self.http_version = http_conn.http_version + headers = http_conn.headers + + # Set static response headers + # NYI: Cookies + # cookies = Cookie.SimpleCookie(headers.get('cookie')) + self.response_headers = { + 'cache-control': 'no-cache', + } + if self.content_type: + self.response_headers['content-type'] = self.content_type + + self.gzip_response = False + self.deflate_response = False + self.resp_chunking = False + self.force_close = False # force_close_when_done + if self.http_version >= 1.1: + # Accept-Encoding + accept_encoding = headers.get('accept-encoding', '') + # Support gzip only for now + self.gzip_response = \ + (find_token(accept_encoding, 'gzip') is not None) + if not self.gzip_response: + self.deflate_response = \ + (find_token(accept_encoding, 'deflate') is not None) + + # Response chunking + te = headers.get('TE', 'chunked') + self.resp_chunking = (find_token(te, 'chunked') is not None) + + self.force_close = headers.get('connection', '') == 'close' + + # Set static response headers + if self.resp_chunking: + self.response_headers['transfer-encoding'] = 'chunked' + + if self.gzip_response: + self.response_headers['content-encoding'] = 'gzip' + elif self.deflate_response: + self.response_headers['content-encoding'] = 'deflate' + elif self.http_version == 1.0: + if headers.get('connection', '') != 'keep-alive': + self.force_close = True + else: + self.force_close = True + + self.data_handler = \ + protocol_handler.get_data_handler(self) if protocol_handler else None + self._response_started = False + +
[docs] def request_continue(self, data): + """ + request data continue + + :type data: :class:`str` + :param data: request data + """ + self.data_handler.data_ready(data) +
+
[docs] def request_end(self): + """ request data ended """ + self.data_handler.data_end() +
+
[docs] def write(self, data): + """ + write + + :type data: :class:`str` + :param data: data to write + """ + if not self._response_started: + self._response_started = True + self.send_response_headers(200) + self.response_continue(data) +
+
[docs] def close(self): + """ close """ + self.response_end() + self.http_conn = None +
+ def __del__(self): + self.close() + +
[docs] def close_http_conn_when_done(self): + """ close the connection after all data written """ + if self.http_conn: + self.http_conn.close_when_done() +
+
[docs] def send_response_headers(self, response_code): + """ + send response headers + + :type response_code: :class:`int` + :param response_code: http response code + """ + + try: + close_connection = self.force_close + + # Char encoding + # encoding = 'utf-8' + + # Send response code + http_conn = self.http_conn + http_conn.send_response(response_code) + + # NYI: cookies + #for cookie in cookies: + # header_value = cookies[cookie].output(header='') + # http_conn.send_header('set-cookie', header_value) + + if not self.resp_chunking: + close_connection = True + + if self.http_version >= 1.1: + # Close connection? + if close_connection: + self.response_headers['connection'] = 'close' + self.close_http_conn_when_done() + else: + if close_connection: + self.close_http_conn_when_done() + + # Send headers + for key, value in six.iteritems(self.response_headers): + http_conn.send_header(key, value) + + # End headers + http_conn.end_headers() + + wfile = self.wfile + chunk_size = 4096 + + # Handle chunking + if self.resp_chunking: + wfile = ChunkedMessageBodyWriter(wfile, chunk_size) + + # Handle compression + if self.gzip_response: + wfile = GzipWriter(wfile=wfile) + elif self.deflate_response: + wfile = DeflateWriter(wfile=wfile) + + self.wfile = wfile + except Exception as err: + log_exception('Error: Send response exception', err) + self.close_http_conn_when_done() +
+
[docs] def response_continue(self, response): + """ + response data continue + + :type response: :class:`str` + :param response: http response data + """ + + try: + # Send response + if response and self.wfile: + wfile = self.wfile + is_str_response = ( + isinstance(response, six.string_types) or + isinstance(response, six.binary_type)) + if is_str_response: + wfile.write(response) + else: + # In theory, this should be async too... + while True: + chunk = response.read(4096) + if not chunk: + break + wfile.write(chunk) + + if not is_str_response: + response.close() + except Exception as err: + log_exception('Error: Send response exception', err) + self.close_http_conn_when_done() +
+
[docs] def response_end(self): + """ response data end """ + try: + if self.wfile: + self.wfile.close() + self.wfile = None + except Exception as err: + log_exception('Error: Send response exception', err) + self.close_http_conn_when_done() + +
+
[docs]class AsyncoreHttpConnection(asynchat.async_chat, BaseHTTPServer.BaseHTTPRequestHandler): # pylint: disable=W0223 + """ Async Http connection with async chat """ + + _HTTP_VERSION = 1.1 + + # Override base class's protocol_version + # Note: need to include accurate 'Content-Length' in send_header() + protocol_version = 'HTTP/' + str(_HTTP_VERSION) + + # XXX: Get around a nasty async_chat bug + asynchat.async_chat.ac_in_buffer_size = _HTTP_MAX_REQUEST_SIZE + + def __init__(self, server, sock_map, sock, from_addr, protocol_factory): + """ + Async Http connection with async chat + + :type server: :class:`vmware.vapi.server.asyncore_server.AsyncoreTcpListener` + :type server: asyncore server + :type sock_map: :class:`dict` + :param sock_map: Global socket map + :type sock: :class:`socket.socket` + :param sock: http connection socket + :type from_addr: :class:`tuple` + :param from_addr: remote address bound to the socket + :type protocol_factory: :class:`HttpFactory` + :param protocol_factory: protocol factory + """ + try: + self.accept_read = False + asynchat.async_chat.__init__(self, sock, map=sock_map) + BaseHTTPServer.BaseHTTPRequestHandler.__init__(self, sock, + from_addr, server) + self.server = server + + # Http headers handler + self.close_connection = 0 + self.setup_http_headers_handler() + + # Setup rfile / wfile + self.rfile = None + self.wfile = vapi.server.asyncore_server.SyncWriteToAsyncWriteAdapter(self) + self.head_of_line_writer = HeadOfLineWriter(self.wfile) + + self.protocol_factory = protocol_factory + self.request_handler = None + + # Shutup pylint + self.http_version = self._HTTP_VERSION + self.request_size = 0 + except Exception: + self.cleanup() + raise + +
[docs] def cleanup(self): + """ connection cleanup """ + # Need to cleanup from sock_map + try: + self.del_channel() + except Exception: + pass + self.server = None + self.close_connection = 1 + self.rfile = None + self.wfile = None + self.head_of_line_writer = None + self.protocol_factory = None + self.request_handler = None + + ## Begin BaseHTTPServer.BaseHTTPRequestHandler interface + #
+
[docs] def setup(self): + """ setup: Not used """ + pass +
+
[docs] def handle(self): + """ handle: Not used """ + pass +
+
[docs] def finish(self): + """ finish: Not used """ + pass + + ## Handle HTTP POST + #
+
[docs] def do_POST(self): + """ Handle HTTP Post """ + logger.debug('In do_POST: %s', self.client_address) + self.http_body_begin() + logger.debug('Done do_POST: %s', self.client_address) + + ## End BaseHTTPServer.BaseHTTPRequestHandler interface + + ## Begin async_chat interface + # + # def collect_incoming_data(): pass + # def found_terminator(): pass +
+
[docs] def setup_http_headers_handler(self): + """ setup asynchat http headers handlers """ + self.accept_read = True + HttpHeadersHandler(self) + self.server.loop_controller.intr() # Wake up server +
+
[docs] def setup_chunked_handler(self): + """ setup asynchat http chunked handlers """ + ChunkedHandler(self) +
+
[docs] def setup_message_handler(self, content_len): + """ setup asynchat http message body handlers """ + MessageHandler(self, content_len) +
+
[docs] def set_handlers(self, found_term_handler, terminator, collect_in_data_handler): + """ + setup asynchat handlers + + :type found_term_handler: :class:`function` + :param found_term_handler: terminator found handler + :type terminator: :class:`str` + :param terminator: terminator string + :type collect_in_data_handler: :class:`function` + :param collect_in_data_handler: collect incoming data handler + """ + self.found_terminator = found_term_handler + self.set_terminator(terminator) + self.collect_incoming_data = collect_in_data_handler +
+
[docs] def http_headers_end(self, headers): + """ + http headers end callback + + :type headers: :class:`str` + :param headers: http headers string + """ + self.rfile = six.BytesIO(headers) + self.handle_one_request() + if self.close_connection: + self.close_when_done() +
+
[docs] def http_body_begin(self): + """ request body begin """ + self.http_version = float(self.request_version.split('/')[1]) + + # Get protocol handler + path = self.path.split('?', 1)[0] + path = path.split('#', 1)[0] + path = urllib.parse.unquote(path) + + header_content_type = self.headers.get('content-type', '') + tokens = header_content_type.split(';', 1) + if len(tokens) > 1: + content_type, _ = tokens + else: + content_type = tokens[0] + + protocol_handler = self.protocol_factory.get_handler(path, content_type) + if protocol_handler is None: + self.send_error_(404, 'Path not found: %s' % path) + # TODO: close connection? + return + + assert(self.request_handler is None) + wfile = self.head_of_line_writer.new_writer() + self.request_handler = HttpRequestHandler(self, wfile, content_type, protocol_handler) + + # Look for non-identity transfer-encoding before content-length + req_chunking = False + if self.http_version >= 1.1: + # Request chunking + xfer_encoding = self.headers.get('transfer-encoding', '') + req_chunking = (find_token(xfer_encoding, 'chunked') is not None) + + self.request_size = 0 + if req_chunking: + # Setup chunked message body handler + self.setup_chunked_handler() + else: + # Get content length from header + content_length = self.headers.get('content-length') + if content_length: + try: + content_len = int(content_length) + except Exception: + logger.error('400: Bad content-length: %s', content_length) + self.send_error_(400, 'Bad content-length (%s)' % content_length) + return + else: + content_len = None + + # Setup message body handler + self.setup_message_handler(content_len) +
+
[docs] def http_body_continue(self, data): + """ request body continue """ + if self.request_handler: + self.request_handler.request_continue(data) +
+
[docs] def readable(self): + """ + Can read more data? + + :rtype :class:`bool` + :return True if this can handle more data + """ + return self.accept_read and asynchat.async_chat.readable(self) +
+
[docs] def http_body_end(self): + """ request body ended """ + # To stop pipeline request, set accept_read to False until the server + # can serve another request + # self.accept_read = False + + if self.request_handler: + self.request_handler.request_end() + self.request_handler = None + + # Back to http header reader + self.setup_http_headers_handler() +
+
[docs] def send_error_(self, response_code, response_txt): + """ + Send http error + + :type response_code: :class:`int` + :param response_code: http response code + :type response_txt: :class:`str` + :param response_txt: http response text + """ + try: + self.send_error(response_code, response_txt) + except Exception: + pass + self.close_when_done() +
+
[docs] def request_too_large(self, data_size, max_data_size): + """ + Send request too large error + + :type data_size: :class:`int` + :param data_size: request data size + :type max_data_size: :class:`int` + :param max_data_size: max request data size allowed + """ + msg = 'Request too large (%d bytes). Max allowed is %d' % (data_size, max_data_size) + self.send_error_(413, msg) # 413: Request Entity Too Large +
+
[docs] def log_message(self, format, *args): # pylint: disable=W0622 + """ + Override the BaseHTTPServer.BaseHTTPRequestHandler method to send the + log message to the log file instead of stderr. + + :type format: :class:`str` + :param format string + :type args: :class:`tuple` + :param args: format argument(s) + """ + logger.debug('%s - - %s', self.client_address, format % args) + + # Apparently asynchat write is not multi-thread safe. Use our own
+
[docs] def handle_write(self): + """ handle write """ + if self.wfile: + self.wfile.write_ready() +
+
[docs] def writable(self): + """ + Have something to write to http connection? + + :rtype :class:`bool` + :return True if data is ready to write + """ + if self.wfile: + return self.wfile.writable() + else: + return False +
+
[docs] def close_when_done(self): + """ close the connection after all data written """ + if self.wfile: + self.wfile.close_when_done() + self.close_connection = 1 +
+
[docs] def handle_error(self): + """ handle error callback """ + self.cleanup() +
+
[docs] def handle_expt(self): + """ handle exception callback """ + self.cleanup() + +
+
[docs]class HttpFactory(object): + """ Http factory """ + HTTP_CONTENT_MAPPING = {'json': 'application/json', + 'xml': 'text/xml'} + + def __init__(self): + """ Http factory init """ + self.path_map = {} + + @staticmethod +
[docs] def abspath(path): + """ + Get posix absolute path + + :type path: :class:`str` + :param path: url path + :rtype: :class:`str` + :return: posix style abs path + """ + abspath = posixpath.abspath(path) + # Strange. posixpath returns '//' for '//' but '/' for '///' (or + # other variants). Explicitly check for this + if abspath == '//': + abspath = '/' + logger.debug('abspath %s -> %s' % (path, abspath)) + return abspath +
+
[docs] def add_handler(self, path, msg_type, protocol_handler): + """ + add handler associated with url path and transport message + + :type path: :class:`str` + :param path: url path + :type msg_type: :class:`str` + :param msg_type: message type + :type protocol_handler: :class:`vmware.vapi.protocol.server.transport.async_protocol_handler.AsyncProtocolHandler` + :param protocol_handler: async protocol handler + """ + content_type = self.HTTP_CONTENT_MAPPING.get(msg_type) + if not content_type: + logger.error('Unsupported msg type: %s', msg_type) + return False + + path = self.abspath(path) + handlers = self.path_map.get(path) + if not handlers: + logger.debug('add_handler %s: %s' % (content_type, path)) + self.path_map = {path: {content_type: protocol_handler}} + else: + handler = handlers.get(content_type) + if handler and handler != protocol_handler: + logger.error('Cannot re-register resource @ %s', path) + return False + + logger.debug('add_handler %s: %s' % (content_type, path)) + handlers[content_type] = protocol_handler +
+
[docs] def get_path_handlers(self, path): + """ + get handlers for a particular url path + + :type path: :class:`str` + :param path: url path + :rtype: :class:`dict` of :class:`tuple` of (:class:`str`, :class:`vmware.vapi.protocol.server.transport.async_protocol_handler.AsyncProtocolHandler`) + :return: a dict of content type to protocol handler mapping + """ + path = self.abspath(path) + return self.path_map.get(path) +
+
[docs] def get_handler(self, path, content_type): + """ + get handler for a particular url path and content type + + :type path: :class:`str` + :param path: url path + :type content_type: :class:`str` + :param content_type: http content-type + :rtype: :class:`vmware.vapi.protocol.server.transport.async_protocol_handler.AsyncProtocolHandler` + :return: protocol handler + """ + path = self.abspath(path) + handlers = self.path_map.get(path) + if handlers: + handler = handlers.get(content_type) + else: + handler = None + return handler +
+
[docs] def handle_accept(self, server, sock_map, sock, from_addr): + """ + handle newly accepted socket connection + + :type server: :class:`vmware.vapi.server.asyncore_server.AsyncoreTcpListener` + :type server: asyncore server + :type sock_map: :class:`dict` + :param sock_map: Global socket map + :type sock: :class:`socket.socket` + :param sock: accepted socket + :type from_addr: :class:`tuple` + :param from_addr: remote address bound to the socket + """ + AsyncoreHttpConnection(server, sock_map, sock, from_addr, self)
+
+ +
+
+
+
+
+ + +
+
+
+
+ + + + \ No newline at end of file diff --git a/vsphere/6.0/_modules/vmware/vapi/server/asyncore_server.html b/vsphere/6.0/_modules/vmware/vapi/server/asyncore_server.html new file mode 100644 index 00000000..3c75aa2d --- /dev/null +++ b/vsphere/6.0/_modules/vmware/vapi/server/asyncore_server.html @@ -0,0 +1,664 @@ + + + + + + + + + + vmware.vapi.server.asyncore_server — vCloud Suite SDK for Python 6.0.0 documentation + + + + + + + + + + + + + + +
+
+
+
+ +

Source code for vmware.vapi.server.asyncore_server

+#!/usr/bin/env python
+"""
+Asyncore server
+"""
+
+__author__ = 'VMware, Inc.'
+__copyright__ = 'Copyright 2011-2014 VMware, Inc.  All rights reserved. -- VMware Confidential'
+
+import asyncore
+import logging
+import six
+import socket
+import ssl
+
+from six.moves import urllib
+from six.moves import queue
+from vmware.vapi.server.server_interface import ServerInterface
+from vmware.vapi.lib.addr_url_parser import parse_addr_url
+from vmware.vapi.server.asyncore_http import HttpFactory
+
+
+logger = logging.getLogger(__name__)
+
+
+
[docs]class SyncWriteToAsyncWriteAdapter(object): + """ Sync write to async write adapter """ + + def __init__(self, async_socket): + """ + Sync write to async write adapter init + + :type async_socket: :class:`socket.socket` + :param async_socket: async socket + """ + self.buf = None + self.async_socket = async_socket + self.is_closed = False + self.queue = queue.Queue() + + # Test if TCP_CORK is available on this socket + try: + self.tcp_cork(0) + self.use_cork = True + except socket.error: + self.use_cork = False + +
[docs] def tcp_cork(self, enable): + """ + tcp cork + + Python failed to merge small send into big packet, which is + very inefficient. Use TCP_CORK to queue partial packets to bigger + packet before sending it. Alternatively we should use writev, but + it is not available on standard python socket lib. + + :type enable: :class:`int` + :param enable: 1 => turn TCP_CORK on, 0 => off + :raise: :class:`socket.error` if TCP_CORK is not supported on this socket + """ + self.async_socket.setsockopt(socket.IPPROTO_TCP, socket.TCP_CORK, enable) +
+
[docs] def write_ready(self): + """ write ready callback """ + if not self.async_socket: + return + + if self.use_cork: + self.tcp_cork(1) + + while True: + if self.buf: + data = self.buf + self.buf = None + else: + try: + data = self.queue.get(block=False) + except queue.Empty: + break + self.queue.task_done() + if not data: + self.async_socket.close() + self.async_socket = None + return + + data_len = len(data) + bytes_send = self.async_socket.send(data) + if bytes_send < data_len: + self.buf = data[bytes_send:] # Save the leftover + break + + if self.use_cork: + self.tcp_cork(0) +
+
[docs] def write(self, data): + """ + Write the given bytes + + :type data: :class:`bytes` + :param data: data to write + """ + if not self.is_closed and data: + # NYI: Make it more efficient: e.g. direct write if marked writable + # NYI: Possible to block if running out of buffer + self.queue.put(data) +
+
[docs] def writable(self): + """ + Have something to write to http connection? + + :rtype :class:`bool` + :return True if data is ready to write + """ + return (self.buf or (not self.queue.empty())) +
+
[docs] def close(self): + """ close """ + self.close_when_done() + + # Flush chunks + self.flush() +
+
[docs] def close_when_done(self): + """ close when all data written """ + if not self.is_closed: + # No more write + self.is_closed = True + self.queue.put(None) # None in queue => close eventually +
+
[docs] def flush(self): + """ flush """ + if self.writable(): + # Interrupt loop to indicate write ready + try: + # Flush could be called after async_socket is None. Ignore error + self.async_socket.server.loop_controller.intr() + except Exception: + pass +
+ def __del__(self): + """ on delete """ + self.close() + + def __enter__(self): + """ with statement enter """ + return self + + def __exit__(self, typ, val, traceback): + """ with statement exit """ + self.close() + +
+
[docs]class AsyncoreSslConnection(asyncore.dispatcher): + """ Asyncore ssl connection """ + + def __init__(self, server, sock_map, sock, from_addr, protocol_factory): + """ + Asyncore ssl connection init + + :type server: :class:`vmware.vapi.server.asyncore_server.AsyncoreTcpListener` + :type server: asyncore server + :type sock_map: :class:`dict` + :param sock_map: Global socket map + :type sock: :class:`socket.socket` + :param sock: connection socket + :type from_addr: :class:`tuple` + :param from_addr: remote address bound to the socket + :type protocol_factory: :class:`object` with method handle_accept + :param protocol_factory: protocol factory + """ + try: + asyncore.dispatcher.__init__(self, sock, map=sock_map) + self.server = server + self.sock_map = sock_map + self.sock = sock + self.from_addr = from_addr + self.is_read_ready = True + self.is_write_ready = False + + self.protocol_factory = protocol_factory + except Exception: + self.cleanup() + raise + +
[docs] def cleanup(self, close_socket=False): + """ + connection cleanup + + :type close_socket: :class:`bool` + :param close_socket: close internal socket (or not) + """ + try: + self.del_channel() + except Exception: + pass + self.server = None + self.sock_map = None + self.from_addr = None + if close_socket: + if self.sock is not None: + self.sock.close() + self.sock = None + self.is_read_ready = False + self.is_write_ready = False + + self.protocol_factory = None +
+
[docs] def do_handshake_continue(self): + """ ssl do handshake continue """ + try: + self.sock.do_handshake() + # No exception. Hand shake done + + # Remove ssl handler from sock map + self.del_channel() + + # Pass control to protocol factory + self.protocol_factory.handle_accept(self.server, self.sock_map, + self.sock, self.from_addr) + + # Unref ssl handler + self.cleanup() + except ssl.SSLError as err: + if err.args[0] == ssl.SSL_ERROR_WANT_READ: + self.is_read_ready = True + elif err.args[0] == ssl.SSL_ERROR_WANT_WRITE: + self.is_write_ready = True + # Write ready + self.server.loop_controller.intr() + else: + # SSL exception + self.cleanup(close_socket=True) + raise +
+
[docs] def handle_read(self): + """ read data available callback """ + if self.is_read_ready: + self.is_read_ready = False + self.do_handshake_continue() +
+
[docs] def handle_write(self): + """ write ready callback """ + if self.is_write_ready: + self.is_write_ready = False + self.do_handshake_continue() +
+
[docs] def readable(self): + """ + Can read more data? + + :rtype :class:`bool` + :return True if this can handle more data + """ + return self.is_read_ready +
+
[docs] def writable(self): + """ + Have something to write to ssl connection? + + :rtype :class:`bool` + :return True if data is ready to write + """ + return self.is_write_ready +
+
[docs] def handle_close(self): + """ handle close callback """ + self.cleanup(close_socket=True) +
+
[docs] def handle_error(self): + """ handle error callback """ + self.cleanup(close_socket=True) +
+
[docs] def handle_expt(self): + """ handle exception callback """ + self.cleanup(close_socket=True) + +
+
[docs]class AsyncoreTcpListener(asyncore.dispatcher): + """ Asyncore tcp listener """ + + def __init__(self, loop_controller, sock_map, addr, ssl_args, protocol_factory): + """ + Asyncore tcp listener init + + :type loop_controller: :class:`AsyncoreLoopController` + :param loop_controller: loop controller + :type sock_map: :class:`dict` + :param sock_map: Global socket map + :type addr: :class:`tuple` of :class:`str`, :class:`int` + :param addr: tcp addr and port + :type ssl_args: :class:`dict` + :param ssl_args: ssl arguments + :type protocol_factory: :class:`object` with method handle_accept + :param protocol_factory: protocol factory + """ + self.loop_controller = loop_controller + self.sock_map = sock_map + asyncore.dispatcher.__init__(self, map=self.sock_map) + + # Init ssl + self.ssl_args = None + self.ssl_wrap_socket = None + self.init_ssl(ssl_args) + + # Setup server + if addr[0].startswith('!'): + # Unix domain socket: hostname is '!' followed by the URL-encoded + # socket path; socket.bind expects the path as a string argument. + addr = urllib.parse.unquote(addr[0][1:]) + sock_family = socket.AF_UNIX + else: + sock_family = socket.AF_INET + self.create_socket(sock_family, socket.SOCK_STREAM) + self.set_reuse_addr() + self.bind(addr) + self.listen(5) + + assert(protocol_factory) + self.protocol_factory = protocol_factory + +
[docs] def init_ssl(self, ssl_args): + """ + Setup SSL arguments + + :type ssl_args: :class:`dict` + :param ssl_args: ssl arguments + """ + + self.ssl_args = None + try: + _ssl_args = {} + + # Override ssl arguments + if ssl_args: + for key, val in six.iteritems(ssl_args): + # func_code dose exist for callable object + # pylint: disable=E1101 + if key in six.get_function_code(ssl.wrap_socket).co_varnames: + _ssl_args.setdefault(key, val) + + if len(_ssl_args) > 0: + # server_side is always True + _ssl_args.setdefault('server_side', True) + # Async handshake + _ssl_args.setdefault('do_handshake_on_connect', False) + self.ssl_args = _ssl_args + + self.ssl_wrap_socket = ssl.wrap_socket + except ImportError: + pass +
+
[docs] def handle_accept(self): + """ accept connection callback """ + + new_socket = None + try: + new_socket, from_addr = self.accept() + + if not new_socket: + logger.debug('Accept failed. Client closed?') + return + + logger.debug('Connection from: %s', from_addr) + + # Disable nagle + # NYI: In theory don't need this, but response is slower without + # setting TCP_NODELAY. Bug in python 2.6 httplib? + try: + new_socket.setsockopt(socket.IPPROTO_TCP, socket.TCP_NODELAY, 1) + except Exception as e: + logger.error('Error disabling nagle: %s', e) + + if self.ssl_args is not None: + new_socket = self.ssl_wrap_socket(new_socket, **self.ssl_args) + AsyncoreSslConnection(self, self.sock_map, new_socket, + from_addr, self.protocol_factory) + else: + self.protocol_factory.handle_accept(self, self.sock_map, + new_socket, from_addr) + except Exception as e: + logger.error('Error accepting connection: %s', e) + # Cleanup + if new_socket: + new_socket.shutdown(socket.SHUT_RDWR) + new_socket.close() + new_socket = None +
+
[docs] def writable(self): + """ + Have something to write to this connection? + + :rtype :class:`bool` + :return True if data is ready to write + """ + return False +
+
[docs] def handle_close(self): + """ handle close callback """ + self.close() +
+
[docs] def handle_error(self): + """ handle error callback """ + # Handle exception + pass +
+
[docs] def handle_expt(self): + """ handle exception callback """ + logger.debug('Accept failed. Client closed?') + + ## End asyncore.dispatcher interface + +
+
[docs]class AsyncoreLoopController(asyncore.dispatcher): + """ Asyncore loop controller """ + + def __init__(self, sock_map): + """ + Asyncore loop controller init + + :type sock_map: :class:`dict` + :param sock_map: Global socket map + """ + # Create our own contol channel + sck = socket.socket(socket.AF_INET, socket.SOCK_STREAM) + sck.bind(('localhost', 0)) + sck.connect(sck.getsockname()) + asyncore.dispatcher.__init__(self, sck, sock_map) + +
[docs] def intr(self): + """ Interrupt the asyncore loop """ + try: + self.send(b'i') + except socket.error: + self.handle_error() + + ## Begin asyncore.dispatcher interface +
+
[docs] def readable(self): + """ + Can accept more data? + + :rtype :class:`bool` + :return True if this can handle more data + """ + return True +
+
[docs] def writable(self): + """ + Have something to write to this connection? + + :rtype :class:`bool` + :return True if data is ready to write + """ + return False +
+
[docs] def handle_read(self): + """ read data available callback """ + try: + _ = self.recv(1024) + except socket.error: + self.handle_error() +
+
[docs] def handle_close(self): + """ handle close callback """ + self.close() +
+
[docs] def handle_error(self): + """ handle error callback """ + pass +
+
[docs] def handle_expt(self): + """ handle exception callback """ + pass + + ## End asyncore.dispatcher interface + +
+
[docs]class AsyncoreTcpServer(ServerInterface): + """ Asyncore tcp server """ + + SUPPORTED_SCHEMES = ('http', 'https') + + def __init__(self): + """ Asyncore tcp server init """ + ServerInterface.__init__(self) + self.handlers_map = {} + self.sock_map = {} + + self.protocol_factories = {} + +
[docs] def register_handler(self, addr, msg_type, protocol_handler, ssl_args=None): + """ + Register protocol handler + + :type addr: :class:`str` + :param addr: addr url + :type msg_type: :class:`str` + :param msg_type: protocol message type + :type protocol_handler: :class:`vmware.vapi.protocol.server.transport.async_protocol_handler.AsyncProtocolHandler` + :param protocol_handler: protocol handler for this addr + :type ssl_args: :class:`dict` + :param ssl_args: ssl arguments + """ + + logger.info("register_handler: msg: %s addr: %s", msg_type, addr) + + # addr is in the form of url + scheme, host, port, _, _, path, _ = parse_addr_url(addr) + if host is None: + host = '' + + if scheme not in self.SUPPORTED_SCHEMES: + logger.error('Unsupported url scheme: %s', addr) + return + + if not protocol_handler: + logger.error('No protocol handler: %s', addr) + return + + if scheme not in ('https'): + ssl_args = None + + if scheme in ('http', 'https'): + protocol_factory = self.protocol_factories.get(('http', port)) + if not protocol_factory: + protocol_factory = HttpFactory() + self.protocol_factories[('http', port)] = protocol_factory + protocol_factory.add_handler(path, msg_type, protocol_handler) + + self.handlers_map[(host, port)] = (protocol_factory, ssl_args) +
+
[docs] def serve_forever(self): + """ Server loop """ + # Add contol channel + loop_controller = AsyncoreLoopController(self.sock_map) + + for addr, (protocol_factory, ssl_args) in six.iteritems(self.handlers_map): + logger.info('Listening on: %s %s', addr, ssl_args) + AsyncoreTcpListener(loop_controller, self.sock_map, addr, + ssl_args, protocol_factory) + try: + asyncore.loop(timeout=-1, use_poll=True, map=self.sock_map) + except KeyboardInterrupt: + pass + self.shutdown() +
+
[docs] def shutdown(self): + """ Server shutdown """ + + if self.sock_map: + asyncore.close_all(map=self.sock_map) + self.sock_map = None + +
+
[docs]def get_server(cfg): # pylint: disable=W0613 + """ + Get asyncore server + + :type cfg: :class:`ConfigParser.SafeConfigParser` + :param cfg: Config parser + :rtype: :class:`vmware.vapi.server.server_interface.ServerInterface` + :return: subclass of ServerInterface + """ + + # Returns server with ServerInterface + args = tuple() + kwargs = {} + + # NYI: Singleton + server = AsyncoreTcpServer(*args, **kwargs) + return server
+
+ +
+
+
+
+
+ + +
+
+
+
+ + + + \ No newline at end of file diff --git a/vsphere/6.0/_modules/vmware/vapi/server/server_interface.html b/vsphere/6.0/_modules/vmware/vapi/server/server_interface.html new file mode 100644 index 00000000..d070c6f4 --- /dev/null +++ b/vsphere/6.0/_modules/vmware/vapi/server/server_interface.html @@ -0,0 +1,136 @@ + + + + + + + + + + vmware.vapi.server.server_interface — vCloud Suite SDK for Python 6.0.0 documentation + + + + + + + + + + + + + + +
+
+
+
+ +

Source code for vmware.vapi.server.server_interface

+#!/usr/bin/env python
+
+"""
+Server interface
+"""
+
+__author__ = 'VMware, Inc.'
+__copyright__ = 'Copyright 2011-2012 VMware, Inc.  All rights reserved. -- VMware Confidential'
+
+
+# Interface class, don't need to warn about unused argument / method
+# could be function, or abstracted class not referenced
+# pylint: disable=W0613,R0201,R0921
+
[docs]class ServerInterface(object): + """ Server interface """ + + def __init__(self): + """ Server interface init """ + pass + +
[docs] def register_handler(self, addr, msg_type, protocol_handler, ssl_args=None): + """ + Register protocol handler + + :type addr: :class:`str` + :param addr: addr url + :type msg_type: :class:`str` + :param msg_type: protocol message type + :type protocol_handler: :class:`vmware.vapi.protocol.server.transport.async_protocol_handler.AsyncProtocolHandler` + :param protocol_handler: protocol handler for this addr + :type ssl_args: :class:`dict` + :param ssl_args: ssl arguments + """ + raise NotImplementedError +
+
[docs] def serve_forever(self): + """ Server loop """ + raise NotImplementedError +
+
[docs] def shutdown(self): + """ Server shutdown """ + raise NotImplementedError
+
+ +
+
+
+
+
+ + +
+
+
+
+ + + + \ No newline at end of file diff --git a/vsphere/6.0/_modules/vmware/vapi/server/stdio_server.html b/vsphere/6.0/_modules/vmware/vapi/server/stdio_server.html new file mode 100644 index 00000000..f7c0ad58 --- /dev/null +++ b/vsphere/6.0/_modules/vmware/vapi/server/stdio_server.html @@ -0,0 +1,168 @@ + + + + + + + + + + vmware.vapi.server.stdio_server — vCloud Suite SDK for Python 6.0.0 documentation + + + + + + + + + + + + + + +
+
+
+
+ +

Source code for vmware.vapi.server.stdio_server

+#!/usr/bin/env python
+
+"""
+STDIO server : This handles all protocol requests over stdin/out
+"""
+
+__author__ = 'VMware, Inc.'
+__copyright__ = 'Copyright 2011-2012 VMware, Inc.  All rights reserved. -- VMware Confidential'
+
+import logging
+import sys
+
+from vmware.vapi.server.server_interface import ServerInterface
+
+logger = logging.getLogger(__name__)
+
+
+
[docs]class StdioServer(ServerInterface): + """ stdio server """ + + def __init__(self): + """ + Initialize the Stdio Server instance + """ + self.protocol_handler = None + ServerInterface.__init__(self) + +
[docs] def register_handler(self, addr, msg_type, protocol_handler, ssl_args=None): + """ + Returns the struct definition corresponding to the method's input + parameters. The field names in the struct definition are the parameter + names and the field values correspond to the data definition of the + respective fields. + + :type addr: :class:`str` + :param addr: Url of the provider + :type msg_type: :class:`str` + :param msg_type: Message Type of the provider + :type protocol_handler: :class:`vmware.vapi.protocol.server.api_handler.ApiHandler` + :param protocol_handler: The handler for the message protocol + :type ssl_args: :class:`str` + :param ssl_args: Any ssl related arguments + """ + + self.protocol_handler = protocol_handler +
+
[docs] def serve_forever(self): + """ + Receives the input from the std in of the process. + Processes the message, handles it via the protocol_handler and then + sends the response back. + """ + msg = sys.stdin.read() + if msg is None: + logger.error("No arguments passed to cgi process") + return + response = self.protocol_handler.handle_request(msg) + if response is not None: + print(response) +
+
[docs] def shutdown(self): + pass + +
+
[docs]def get_server(cfg): # pylint: disable=W0613 + """ + get stdio server + + :type cfg: :class:`ConfigParser.SafeConfigParser` + :param cfg: Config parser + :rtype: :class:`vmware.vapi.server.server_interface.ServerInterface` + :return: subclass of ServerInterface + """ + return StdioServer()
+
+ +
+
+
+
+
+ + +
+
+
+
+ + + + \ No newline at end of file diff --git a/vsphere/6.0/_modules/vmware/vapi/server/twisted_server.html b/vsphere/6.0/_modules/vmware/vapi/server/twisted_server.html new file mode 100644 index 00000000..6b5ec967 --- /dev/null +++ b/vsphere/6.0/_modules/vmware/vapi/server/twisted_server.html @@ -0,0 +1,638 @@ + + + + + + + + + + vmware.vapi.server.twisted_server — vCloud Suite SDK for Python 6.0.0 documentation + + + + + + + + + + + + + + +
+
+
+
+ +

Source code for vmware.vapi.server.twisted_server

+"""
+Twisted server
+"""
+
+__author__ = 'VMware, Inc.'
+__copyright__ = 'Copyright 2011-2014 VMware, Inc.  All rights reserved. -- VMware Confidential'
+
+import logging
+import threading
+import six
+import warnings
+
+with warnings.catch_warnings():
+    # Disable DeprecationWarning as twisted uses md5 instead of hashlib
+    warnings.filterwarnings("ignore", category=DeprecationWarning)
+    # Disable SyntaxWarning as twisted uses assert (oldChild.parentNode is self)
+    # which is always true
+    warnings.filterwarnings("ignore", category=SyntaxWarning)
+    import twisted
+    # Without adding this explicit import, the ssl part of twisted
+    # doesn't get initialized
+    import twisted.internet.ssl
+    from twisted.internet import defer
+    from twisted.internet.protocol import Protocol, Factory
+    from twisted.web.resource import Resource
+    from twisted.web.server import Site
+
+from vmware.vapi.server.server_interface import ServerInterface
+from vmware.vapi.lib.addr_url_parser import parse_addr_url
+
+# Try to use epoll if available
+try:
+    twisted.internet.epollreactor.install()
+except Exception:
+    pass
+
+# Twisted log
+#import sys
+#twisted.python.log.startLogging(sys.stdout, setStdout=False)
+
+# NYI: Debug
+# import time
+
+logger = logging.getLogger(__name__)
+
+# Singleton twisted server
+_server_lock = threading.Lock()
+_twisted_server = None
+
+
+
[docs]class TwistedConnectionAdapter(object): + """ Twisted connection adapter """ + + def __init__(self, transport): + """ + Twisted connection adapter init + + :type transport: :class:`twisted.internet.interfaces.ITransport` + :param transport: Twisted transport + """ + self.transport = transport + +
[docs] def write(self, data): + """ + write + + :type data: :class:`str` + :param data: data to write + """ + # Only need to do this for async protocol + self.transport.reactor.callFromThread(self._write, data) +
+
[docs] def close(self): + """ close """ + # Only need to do this for async protocol + self.transport.reactor.callFromThread(self._close) +
+ def _write(self, data): + """ + Internal write + + :type data: :class:`str` + :param data: data to write + """ + self.transport.write(data) + + def _close(self): + """ Internal close """ + self.transport.loseConnection() + self.transport = None + +
+
[docs]class TwistedAsyncProtocolHandlerAdapter(Protocol): # pylint: disable=W0232 + """ Twisted async protocol handler adapter """ + +
[docs] def connectionMade(self): + """ connection established callback """ + connection = TwistedConnectionAdapter(self.transport) + self.data_handler = self.factory.protocol_handler.get_data_handler(connection) # pylint: disable=E1101 +
+
[docs] def dataReceived(self, data): + """ + data received + + :type data: :class:`str` + :param data: data to write + """ + self.data_handler.data_ready(data) +
+
[docs] def connectionLost(self, reason): # pylint: disable=W0222 + """ + Twisted connection lost + + :type reason: :class:`str` + :param reason: Connection lost reason + """ + if issubclass(twisted.internet.error.ConnectionDone, reason.type): + logger.debug('connectionLost: reason %s', reason) + self.data_handler.data_end() + else: + logger.error('connectionLost: reason %s', reason) + self.data_handler.data_abort() + self.data_handler = None # pylint: disable=W0201 + +
+
[docs]class TwistedVmwareProtocolFactory(Factory): + """ Twisted vmacre protocol factory """ + protocol = TwistedAsyncProtocolHandlerAdapter + + def __init__(self, protocol_handler): + """ + Twisted vmacre protocol factory init + + :type protocol_handler: :class:`vmware.vapi.protocol.server.transport.async_protocol_handler.AsyncProtocolHandler` + :param protocol_handler: protocol handler for this addr + """ + self.protocol_handler = protocol_handler + +
+
[docs]class TwistedHttpConnectionAdapter(object): + """ Twisted http connection adapter """ + + def __init__(self, request): + """ + Twisted http connection init + + :type request: :class:`twisted.web.http.Request` + :param request: Twisted http request object + """ + self.request = request + +
[docs] def write(self, data): + """ + write + + :type data: :class:`str` + :param data: data to write + """ + self.request.transport.reactor.callFromThread(self._write, data) +
+
[docs] def close(self): + """ close """ + self.request.transport.reactor.callFromThread(self._close) + + # Connection interface
+ def _write(self, data): + """ Internal write """ + if not self.request.finished: + # NYI: Debug only + # logger.debug('%f: write data %d', time.time(), len(data)) + self.request.write(data) + + def _close(self): + """ Internal close """ + if not self.request.finished: + # NYI: Debug only + # logger.debug('%f: request.finish()', time.time()) + self.request.setResponseCode(200) + self.request.finish() + +
+
[docs]class TwistedVapiResource(Resource): + """ Twisted vapi resource """ + + def __init__(self): + """ Twisted vapi resource init """ + Resource.__init__(self) + self.handler_map = {} + +
[docs] def add_handler(self, content_type, protocol_handler): + """ + add content handler + + :type content_type: :class:`str` + :param content_type: MIME content type + :type protocol_handler: :class:`vmware.vapi.protocol.server.transport.async_protocol_handler.AsyncProtocolHandler` + :param protocol_handler: protocol handler for this path + """ + curr_handler = self.handler_map.get(content_type) + if curr_handler: + if curr_handler != protocol_handler: + logger.error('Already registered. Failed to add handler for content type %s', content_type) + return False + + self.handler_map[content_type] = protocol_handler + return True +
+
[docs] def render_POST(self, request): + """ + Handle POST + + :type request: :class:`twisted.web.http.Request` + :param request: Twisted http request object + """ + # NYI: Debug only + # logger.debug('%f: render_POST: get request', time.time()) + + # Multiplex depends on content-type + header_content_type = request.getHeader('Content-Type') + tokens = header_content_type.split(';', 1) + if len(tokens) > 1: + content_type, _ = tokens + else: + content_type = tokens[0] + handler = self.handler_map.get(content_type) + if not handler: + self.handle_error("", request, 500, 'Unsupported content') + return + + request.setHeader('Server', 'Twisted/1.0') + request.setHeader('Content-Type', content_type) + + d = defer.Deferred() + d.addCallback(self.handle_read) + d.addCallback(self.handle_request, request, handler) + d.addErrback(self.handle_error, request, 500, 'Request failed') + # NYI: Add timeout for this connection + # NYI: Add blacklist to protect from DoS attack + + d.callback(request) + return twisted.web.server.NOT_DONE_YET +
+
[docs] def render_GET(self, request): + """ + Handle HTTP GET + + :type request: :class:`twisted.web.http.Request` + :param request: Twisted http request object + """ + header_content_type = request.getHeader('Content-Type') + if header_content_type is None: + content_type = '' + else: + tokens = header_content_type.split(';', 1) + if len(tokens) > 1: + content_type, _ = tokens + else: + content_type = tokens[0] + request.setHeader('Content-Type', content_type) + + request.setHeader('Server', 'Twisted/1.0') + handler = self.handler_map.get(content_type) + if not handler: + self.handle_error("", request, 500, 'Unsupported content') + return + + d = defer.Deferred() + d.addCallback(self.handle_read) + d.addCallback(self.handle_request, request, handler) + d.addErrback(self.handle_error, request, 500, 'Request failed') + # NYI: Add timeout for this connection + # NYI: Add blacklist to protect from DoS attack + + d.callback(request) + return twisted.web.server.NOT_DONE_YET +
+
[docs] def handle_error(self, failure, request, response_code, text_msg): # pylint: disable=R0201 + """ + Handle error + + :type failure: :class:`twisted.python.failure.Failure` + :param failure: Twisted failure instance + :type request: :class:`twisted.web.http.Request` + :param request: Twisted http request object + :type response_code: :class:`int` + :param response_code: Http response code + :type text_msg: :class:`int` + :param text_msg: Http error code + """ + if not request.finished: + logger.info('handle_error: %s %d %s', failure, response_code, text_msg) + request.setResponseCode(response_code) + request.setHeader('Content-Type', 'text') + request.write(text_msg) + request.finish() +
+
[docs] def handle_read(self, request): # pylint: disable=R0201 + """ + Handle read + + :type request: :class:`twisted.web.http.Request` + :param request: Twisted http request object + """ + # logger.debug('handle_read:') + # NYI: Chunking read, and send data one chunk at a time + return request.content.read() +
+
[docs] def handle_request(self, request_msg, request, handler): # pylint: disable=R0201 + """ + Handle request + + :type request_msg: :class:`str` + :param request_msg: Request msg + :type request: :class:`twisted.web.http.Request` + :param request: Twisted http request object + :type handler: :class:`vmware.vapi.protocol.server.transport.async_protocol_handler.AsyncProtocolHandler` + :param handler: protocol handler for this addr + """ + # logger.debug('handle_request: %s', request_msg) + connection = TwistedHttpConnectionAdapter(request) + data_handler = handler.get_data_handler(connection) + data_handler.data_ready(request_msg) + data_handler.data_end() + +
+
[docs]class TwistedHttpSite(Site): + """ Twisted http site """ + HTTP_CONTENT_MAPPING = {'json': 'application/json', + 'xml': 'text/xml', + '': ''} + + def __init__(self): + """ Http site site init """ + self.root_resource = twisted.web.resource.Resource() + twisted.web.server.Site.__init__(self, self.root_resource) + +
[docs] def add_res_handler(self, path, msg_type, protocol_handler): + """ + Add resource handler for a path + + :type path: :class:`str` + :param path: url path + :type msg_type: :class:`str` + :param msg_type: transport msg type + :type protocol_handler: :class:`vmware.vapi.protocol.server.transport.async_protocol_handler.AsyncProtocolHandler` + :param protocol_handler: protocol handler for this path + :rtype: :class:`bool` + :return: True if added. False otherwise + """ + content_type = self.HTTP_CONTENT_MAPPING.get(msg_type) + if content_type is None: + logger.error('Unsupported msg type: %s', msg_type) + return False + + paths = [token for token in path.split('/') if token] + if len(paths) == 0: + logger.error('Cannot register root resource: %s', path) + return False + + curr_resources = self.root_resource + for node in paths[:-1]: + node_entity = curr_resources.getStaticEntity(node) + if node_entity: + curr_resources = node_entity + else: + logger.debug('Adding child node %s', node) + node_entity = Resource() + curr_resources.putChild(node, node_entity) + curr_resources = node_entity + + node = paths[-1] + leave_entity = curr_resources.getStaticEntity(node) + if isinstance(leave_entity, TwistedVapiResource): + vapi_resource = leave_entity + else: + vapi_resource = TwistedVapiResource() + if not vapi_resource.add_handler(content_type, protocol_handler): + logger.error('Cannot re-register resource @ %s', path) + return False + logger.debug('Adding child node %s', node) + curr_resources.putChild(node, vapi_resource) + return True + +
+
[docs]class TwistedServer(ServerInterface): + """ Twisted server """ + + SUPPORTED_SCHEMES = ('vmware', 'vmwares', 'http', 'https') + + def __init__(self): + """ Twisted server init """ + ServerInterface.__init__(self) + self.lock = threading.Lock() + self.handlers_map = {} + + # Protocol factories + self.protocol_factories = {} + + self.main_thread_only = True + +
[docs] def register_handler(self, addr, msg_type, protocol_handler, ssl_args=None): + """ + Register protocol handler + + :type addr: :class:`str` + :param addr: addr url + :type msg_type: :class:`str` + :param msg_type: protocol message type + :type protocol_handler: :class:`vmware.vapi.protocol.server.transport.async_protocol_handler.AsyncProtocolHandler` + :param protocol_handler: protocol handler for this addr + :type ssl_args: :class:`dict` + :param ssl_args: ssl arguments + """ + + assert(protocol_handler) + # addr is url + scheme, host, port, _, _, path, _ = parse_addr_url(addr) + # https / vmwares + if scheme not in self.SUPPORTED_SCHEMES: + logger.error('Unsupported url scheme: %s', addr) + return + + # Get ssl context + ssl_context = None + if scheme == 'https' or scheme == 'vmwares': + ssl_context = self.get_ssl_context(ssl_args) + + with self.lock: + if scheme == 'http' or scheme == 'https': + protocol_factory = self.protocol_factories.get((host, port)) + if not protocol_factory: + protocol_factory = TwistedHttpSite() + self.protocol_factories[(host, port)] = protocol_factory # Singleton + + if not protocol_factory.add_res_handler(path, msg_type, protocol_handler): + logger.error('Failed to add resource handler: %s', addr) + return + elif scheme == 'vmware' or scheme == 'vmwares': + protocol_factory = TwistedVmwareProtocolFactory(protocol_handler) + else: + raise ValueError("Scheme %s is not supported" % scheme) + + self.handlers_map[(host, port)] = (protocol_factory, ssl_context) +
+
[docs] def get_ssl_context(self, ssl_args): + """ + get ssl context + + :type ssl_args: :class:`dict` + :param ssl_args: ssl arguments + :rtype: :class:`twisted.internet.ssl.DefaultOpenSSLContextFactory` + :return: twisted ssl context factory instance + """ + ssl_context = None + ssl_ctx_args = {} + if ssl_args: + # Twisted don't support ca certs + if ssl_args.get('keyfile', None): + ssl_ctx_args['privateKeyFileName'] = ssl_args['keyfile'] + if ssl_args.get('certfile', None): + ssl_ctx_args['certificateFileName'] = ssl_args['certfile'] + + if len(ssl_ctx_args) > 0: + logger.debug('ssl_ctx_args: %s', ssl_ctx_args) + try: + ssl_context = twisted.internet.ssl.DefaultOpenSSLContextFactory( + **ssl_ctx_args) + except Exception: + # Twisted without ssl support. Missing pyOpenSSL? + logger.error('Twisted without ssl support. Missing pyOpenSSL?') + raise + else: + logger.warning('Missing SSL context!') + return ssl_context +
+
[docs] def serve_forever(self): + """ + Server loop + + Note: Twisted limitation: Must be running from main thread + """ + with self.lock: + if len(self.handlers_map) == 0: + logger.info('No handler registered. Server stopped') + return + + for info, (protocol_factory, ssl_context) in six.iteritems(self.handlers_map): + host, port = info + host = host if host else '' + # isIPv6Address in twisted returns False if the addr has [] + # So, removing it from the addr. + if host.startswith('[') and host.endswith(']'): + host = host[1:-1] + logger.info('Listening on: %s %s', info, ssl_context) + + # interface='', listens on only IPv4 address + # interface='::', listens on both IPv4 and IPv6 address + # interface='<IPv4_addr>', listen on only IPv4 address + # interface='<IPv6_addr>', listen on only IPv6 address + if ssl_context: + twisted.internet.reactor.listenSSL(port, # pylint: disable=E1101 + protocol_factory, + ssl_context, + interface=host) + else: + twisted.internet.reactor.listenTCP(port, protocol_factory, # pylint: disable=E1101 + interface=host) + + logger.info('twisted internet reactor started...') + twisted.internet.reactor.run() # pylint: disable=E1101 + logger.info('twisted internet reactor stopped') +
+
[docs] def shutdown(self): + """ Server shutdown """ + + try: + twisted.internet.reactor.stop() # pylint: disable=E1101 + except Exception: + # Ignore all shutdown exceptions + pass + +
+
[docs]def get_server(cfg): # pylint: disable=W0613 + """ + Get twisted server + + :type cfg: :class:`ConfigParser.SafeConfigParser` + :param cfg: Config parser + :rtype: :class:`vmware.vapi.server.server_interface.ServerInterface` + :return: subclass of ServerInterface + """ + + args = tuple() + kwargs = {} + + # Twisted server MUST be singleton + global _twisted_server # pylint: disable=W0603 + with _server_lock: + if not _twisted_server: + _twisted_server = TwistedServer(*args, **kwargs) + else: + logger.warning('Twisted server is singleton. This might not be what u wanted') + server = _twisted_server + return server
+
+ +
+
+
+
+
+ + +
+
+
+
+ + + + \ No newline at end of file diff --git a/vsphere/6.0/_modules/vmware/vapi/server/vapid.html b/vsphere/6.0/_modules/vmware/vapi/server/vapid.html new file mode 100644 index 00000000..b3f1edb6 --- /dev/null +++ b/vsphere/6.0/_modules/vmware/vapi/server/vapid.html @@ -0,0 +1,459 @@ + + + + + + + + + + vmware.vapi.server.vapid — vCloud Suite SDK for Python 6.0.0 documentation + + + + + + + + + + + + + + +
+
+
+
+ +

Source code for vmware.vapi.server.vapid

+#!/usr/bin/env python
+
+"""
+Vapi server
+"""
+
+__author__ = 'VMware, Inc.'
+__copyright__ = 'Copyright 2011-2014 VMware, Inc.  All rights reserved. -- VMware Confidential'
+
+import atexit
+import locale
+import logging
+import logging.config
+import os
+import sys
+
+from six.moves import configparser
+
+import vmware.vapi.debug.livedump  # pylint: disable=W0611
+from vmware.vapi.lib.addr_url_parser import get_url_scheme
+from vmware.vapi.l10n.constants import DEFAULT_LOCALE
+from vmware.vapi.settings import config
+from vmware.vapi.settings.sections import ENDPOINT, LOGGERS
+
+# Note: Use logger only after configure_logging has been called!!!
+logger = None
+
+# Set english locale for vAPI server
+locale.setlocale(locale.LC_ALL, DEFAULT_LOCALE)
+
+
+
[docs]def check_file_exists(filename): + """ + Check if name is a file and exists + + :type :class:`str` + :param file name + """ + if not os.path.exists(filename) or not os.path.isfile(filename): + raise os.error(2, "No such file: '%s'" % filename) + +
+
[docs]def set_process_title(cfg): + """ + If setproctitle library is available, set the process title + :type cfg: :class:`configparser` + :param cfg: configparser object + """ + try: + import setproctitle + name = cfg.get(ENDPOINT, 'process.name') + if name: + setproctitle.setproctitle(name) + except Exception as e: + logger.warn('Could not set the process title because of %s', str(e)) + +
+
[docs]def configure_logging(log_config=None): + """ + Configure logging using properties file + + :type log_config: :class:`str` + :kwarg log_config: File path of the properties file + """ + if log_config is None: + handler = logging.StreamHandler(sys.stdout) + handler.setLevel(logging.INFO) + formatter = logging.Formatter( + '%(asctime)s %(levelname)-8s %(name)-15s %(message)s') + handler.setFormatter(formatter) + + # Configure the root logger + root_logger = logging.getLogger() + root_logger.setLevel(logging.INFO) + root_logger.addHandler(handler) + else: + check_file_exists(log_config) + logging.config.fileConfig(log_config) + + global logger # pylint: disable=W0603 + logger = logging.getLogger('vmware.vapi.server.vapid') + +
+
[docs]def get_ssl_args(cfg, protocol_prefix): + """ + Extract the ssl arguments + + :type cfg: :class:`configparser.SafeConfigParser` + :param cfg: Configuration + :type protocol_prefix: :class:`str` + :param protocol_prefix: Prefix of the protocol configuration + :rtype: :class:`dict` + :return: SSL arguments for this protocol configuration + """ + ssl_args = {} + ssl_prefix = '%s.ssl' % protocol_prefix + + # Try to get the certdir from environment variable or .certdir option + certdir = os.environ.get('CERTDIR') + if certdir is None: + try: + certdir = cfg.get(ENDPOINT, '%s.certdir' % ssl_prefix) + except configparser.NoOptionError: + # But don't complain yet + pass + + for ssl_key in ('ca_certs', 'certfile', 'keyfile'): + option = '%s.%s' % (ssl_prefix, ssl_key) + file_name = None + try: + file_name = cfg.get(ENDPOINT, option) + except configparser.NoOptionError: + # ca_certs, certfile and keyfile are optional, so don't complain + # if they are not present + pass + + if file_name is not None: + if certdir is None: + # If one of ca_certs, certfile, keyfile is specified + # and certdir is not specified, then raise an error + logger.error('Specify certificate absolute directory path ' + 'either by setting environment variable CERTDIR ' + 'or by setting %s.certdir in the properties file', + ssl_prefix) + raise configparser.NoOptionError('%s.certdir' % ssl_prefix, + ENDPOINT) + else: + file_path = os.path.join(certdir, file_name) + check_file_exists(file_path) + ssl_args[ssl_key] = file_path + return ssl_args + +
+
[docs]def setup_provider_chain(cfg, singleton): + """ + Setup the API Provider chain + + In the properties file, users would specify the order of ApiProviders + For ex: InterposerProvider, ApiAggregator. In this case all incoming + requests would first go to InterposerProvider and then forwarded to + ApiAggregator after processing. + + This function initializes all these providers in the reverse order + and passes the reference of n+1th provider to nth provider. + + :type cfg: :class:`configparser.SafeConfigParser` + :param cfg: Configuration + :type singleton: :class:`bool` + :param singleton: Specify whether to create new instances of Providers or + use existing ones + :rtype: :class:`list` of :class:`vmware.vapi.core.ApiProvider` + :return: List of API Providers + """ + # This import cannot be at the top as we need to wait for logger to get + # initialized with right handlers + from vmware.vapi.lib.load import dynamic_import + singleton_providers = { + 'ApiAggregator': 'vmware.vapi.provider.aggregator.get_provider', + 'LocalProvider': 'vmware.vapi.provider.local.get_provider', + 'InterposerProvider': 'vmware.vapi.provider.interposer.get_provider', + 'AuthenticationFilter': 'vmware.vapi.provider.authentication.get_provider', + } + + providers = { + 'ApiAggregator': 'vmware.vapi.provider.aggregator.AggregatorProvider', + 'LocalProvider': 'vmware.vapi.provider.local.LocalProvider', + 'InterposerProvider': 'vmware.vapi.provider.interposer.InterposerProvider', + 'AuthenticationFilter': 'vmware.vapi.provider.authentication.AuthenticationFilter', + } + + provider_types = cfg.get(ENDPOINT, 'provider.type').split(',') + provider_map = singleton_providers if singleton else providers + + providers = [] + for i, provider_type in enumerate(reversed(provider_types)): + provider_name = provider_map.get(provider_type) + if provider_name: + provider_constructor = dynamic_import(provider_name) + if provider_constructor is None: + raise ImportError('Could not import %s' % provider_name) + if i == 0: + # TODO: Add validation to make sure that the last provider + # can support registration of services + provider = provider_constructor() + provider.register_by_properties(cfg) + else: + provider = provider_constructor() + provider.next_provider = providers[i - 1] + providers.append(provider) + else: + logger.error('Could not load provider') + return [] + return providers[::-1] + +
+
[docs]def create_servers(spec, singleton=True): + """ + Create RPC servers + + :type spec: :class:`dict` + :param spec: Protocol configurations + :type singleton: :class:`bool` + :kwarg singleton: Specify whether to create new instances of Providers or + use existing ones + :rtype: :class:`list` of :class:`vmware.vapi.server.server_interface.ServerInterface` + :return: list of servers + """ + server_providers = { + 'asyncore': 'vmware.vapi.server.asyncore_server.get_server', + 'twisted': 'vmware.vapi.server.twisted_server.get_server', + 'stdio': 'vmware.vapi.server.stdio_server.get_server', + 'wsgi': 'vmware.vapi.server.wsgi_server.get_server', + } + + cfg = configparser.SafeConfigParser() + cfg.read(spec) + + # Set the singleton config object + config.cfg = cfg + + # Configure logging + if LOGGERS in cfg.sections(): + configure_logging(spec) + else: + configure_logging() + set_process_title(cfg) + + providers = setup_provider_chain(cfg, singleton) + if not providers: + return providers + # Get the first API Provider to connect to RPC + provider = providers[0] + + try: + protocol_configs = cfg.get(ENDPOINT, 'protocol').split(',') + except configparser.NoOptionError: + raise Exception('No protocol configurations specified') + + # These import cannot be at the top as we need to wait for logger to get + # initialized with right handlers + from vmware.vapi.lib.load import dynamic_import + from vmware.vapi.protocol.server.msg.handler_factory import ProtocolHandlerFactory + from vmware.vapi.protocol.server.transport.async_server_adapter_factory import AsyncServerAdapterFactory + servers = {} + msg_handlers = {} + protocol_handlers = {} + for protocol_config in protocol_configs: + protocol_prefix = 'protocol.%s' % protocol_config + rpc_prefix = '%s.rpc' % protocol_prefix + url = cfg.get(ENDPOINT, rpc_prefix) + logger.info('url: %s', url) + transport_protocol = get_url_scheme(url) + logger.info('transport protocol: %s', url) + + # Get request handler + msg_handler_factory = ProtocolHandlerFactory() + msg_protocol = cfg.get(ENDPOINT, '%s.msg' % protocol_prefix) + try: + msg_handler_class = cfg.get(ENDPOINT, '%s.msg.handler' % protocol_prefix) + msg_handler_reference = dynamic_import(msg_handler_class) + if msg_handler_reference: + msg_handler = msg_handler_reference(provider) + except configparser.NoOptionError: + logger.info('msg_protocol %s', msg_protocol) + msg_handler = msg_handlers.get((msg_protocol, provider)) + if not msg_handler: + msg_handler = msg_handler_factory.get_handler(msg_protocol, provider) + msg_handlers[(msg_protocol, provider)] = msg_handler + + # Get async server to msg handler adapter + adapter_factory = AsyncServerAdapterFactory() + protocol_handler = protocol_handlers.get((transport_protocol, msg_handler)) + if not protocol_handler: + if url in ('stdio', 'wsgi'): + protocol_handler_factory = ProtocolHandlerFactory() + protocol_handler = \ + protocol_handler_factory.get_handler(msg_protocol, provider) + + else: + protocol_handler = adapter_factory.get_adapter(transport_protocol, + msg_handler) + protocol_handlers[(transport_protocol, msg_handler)] = protocol_handler + + # Extract ssl arguments + ssl_args = get_ssl_args(cfg, protocol_prefix) + + # Get server constructor + try: + rpc_server = cfg.get(ENDPOINT, '%s.server' % rpc_prefix) + except configparser.NoOptionError: + if transport_protocol in ('stdio'): + rpc_server = 'stdio' + elif transport_protocol in ('wsgi'): + rpc_server = 'wsgi' + else: + rpc_server = 'asyncore' + logger.info('rpc server: %s', rpc_server) + + # Register handler + server = servers.get(rpc_server) + if not server: + server_name = server_providers.get(rpc_server) + if server_name is not None: + server_constructor = dynamic_import(server_name) + if server_constructor is None: + raise Exception('Could not find RPC constructor') + + server = server_constructor(cfg) + servers[rpc_server] = server + server.register_handler(url, msg_protocol, protocol_handler, ssl_args) + + return list(servers.values()) + +
+
[docs]def shutdown_servers(servers): + """ + Shutdown all servers + + :type :class:`list` of servers + :param List of servers to shutdown + """ + for server in servers: + server.shutdown() + +
+
[docs]def main(): + """ main """ + spec = sys.argv[1] + check_file_exists(os.path.abspath(spec)) + + servers = create_servers(spec) + if len(servers) == 0: + logger.info('No server available. Quit') + return + + if len(servers) > 1: + threaded_servers = [] + main_thread_server = None + for server in servers: + if getattr(server, 'main_thread_only', False): + if main_thread_server is None or main_thread_server == server: + main_thread_server = server + else: + raise Exception('More than one servers required running on main thread!') + else: + threaded_servers.append(server) + + # Use thread pool to start servers + from vmware.vapi.lib.thread_pool import ThreadPool + pool = ThreadPool(max_workers=len(servers)) + atexit.register(shutdown_servers, servers) + if main_thread_server: + for server in threaded_servers: + pool.queue_work(server.serve_forever) + main_thread_server.serve_forever() + else: + # Wait until all server die + pool.queue_works_and_wait([server.serve_forever for server in threaded_servers]) + else: + server = servers[0] + server.serve_forever() + +
+if __name__ == '__main__': + main() +
+ +
+
+
+
+
+ + +
+
+
+
+ + + + \ No newline at end of file diff --git a/vsphere/6.0/_modules/vmware/vapi/server/wsgi_server.html b/vsphere/6.0/_modules/vmware/vapi/server/wsgi_server.html new file mode 100644 index 00000000..6d5f689f --- /dev/null +++ b/vsphere/6.0/_modules/vmware/vapi/server/wsgi_server.html @@ -0,0 +1,217 @@ + + + + + + + + + + vmware.vapi.server.wsgi_server — vCloud Suite SDK for Python 6.0.0 documentation + + + + + + + + + + + + + + +
+
+
+
+ +

Source code for vmware.vapi.server.wsgi_server

+"""
+Wsgi Server
+"""
+
+__author__ = 'VMware, Inc.'
+__copyright__ = 'Copyright 2014 VMware, Inc.  All rights reserved. -- VMware Confidential'
+
+import logging
+
+from vmware.vapi.server.server_interface import ServerInterface
+
+
+logger = logging.getLogger(__name__)
+
+
+
[docs]class WsgiApplication(object): + """ + Python WSGI application. For more details about WSGI + specification, see PEP 333. + """ + def __init__(self, msg_handler_map): + """ + Initialize WsgiApplication + + :type msg_handler_map: :class:`dict` of :class:`str` and + :class:`vmware.vapi.protocol.server.api_handler.ApiHandler` + :param msg_handler_map: Map of content type to the message + handler for that content type + """ + self._msg_handler_map = msg_handler_map + + def __call__(self, environ, start_response): + """ + The implementation of WsgiApplication + + :type environ: :class:`dict` + :param environ: Dictionary object containing CGI-style environment + variables. + :type start_response: :class:`func` + :param start_response: Callable accepting status code, response headers + and exc_info. + """ + content_type = environ.get('CONTENT_TYPE') + handler = self._msg_handler_map.get(content_type) + if handler is None: + status = '400 Bad Request' + result = '' + else: + try: + status = '200 OK' + # NYI: Check content length + result = handler.handle_request(environ['wsgi.input']) + except Exception as e: + logger.exception(e) + status = '500 Internal Server Error' + result = '' + start_response(status, [('CONTENT_TYPE', content_type)]) + return result + +
+
[docs]class WsgiServer(ServerInterface): + """ + Server wrapper class for Wsgi application. + """ + + SUPPORTED_SCHEMES = ('http', 'https') + HTTP_CONTENT_MAPPING = {'json': 'application/json', + 'xml': 'text/xml', + '': ''} + + def __init__(self): + """ + Initialize WsgiServer + """ + self._protocol_handler_map = {} + ServerInterface.__init__(self) + +
[docs] def register_handler(self, addr, msg_type, protocol_handler, ssl_args=None): + """ + Register protocol handler + + :type addr: :class:`str` + :param addr: addr url + :type msg_type: :class:`str` + :param msg_type: protocol message type + :type protocol_handler: :class:`vmware.vapi.protocol.server.transport.async_protocol_handler.AsyncProtocolHandler` + :param protocol_handler: protocol handler for this addr + :type ssl_args: :class:`dict` + :param ssl_args: ssl arguments + """ + assert(protocol_handler) + content_type = self.HTTP_CONTENT_MAPPING.get(msg_type) + if content_type is None: + logger.error('Unsupported msg type: %s', msg_type) + return + self._protocol_handler_map[content_type] = protocol_handler +
+
[docs] def get_wsgi_application(self): + """ + Returns the WSGI application. + + :rtype: :class:`vmware.vapi.server.wsgi_server.WsgiApplication` + :return: WSGI application. + """ + return WsgiApplication(self._protocol_handler_map) +
+
[docs] def serve_forever(self): + pass +
+
[docs] def shutdown(self): + pass + +
+
[docs]def get_server(cfg): # pylint: disable=W0613 + """ + Get wsgi server + + :type cfg: :class:`ConfigParser.SafeConfigParser` + :param cfg: Config parser + :rtype: :class:`vmware.vapi.server.server_interface.ServerInterface` + :return: subclass of ServerInterface + """ + return WsgiServer()
+
+ +
+
+
+
+
+ + +
+
+
+
+ + + + \ No newline at end of file diff --git a/vsphere/6.0/_modules/vmware/vapi/stdlib/client/factories.html b/vsphere/6.0/_modules/vmware/vapi/stdlib/client/factories.html new file mode 100644 index 00000000..727b7820 --- /dev/null +++ b/vsphere/6.0/_modules/vmware/vapi/stdlib/client/factories.html @@ -0,0 +1,168 @@ + + + + + + + + + + vmware.vapi.stdlib.client.factories — vCloud Suite SDK for Python 6.0.0 documentation + + + + + + + + + + + + + + +
+
+
+
+ +

Source code for vmware.vapi.stdlib.client.factories

+"""
+StubConfiguration factory
+"""
+__author__ = 'VMware, Inc.'
+__copyright__ = 'Copyright 2013 VMware, Inc.  All rights reserved. -- VMware Confidential'
+
+import itertools
+
+from vmware.vapi.bindings.error import VapiError
+from vmware.vapi.bindings.stub import StubConfiguration
+from com.vmware.vapi.std import errors_client
+
+
+
[docs]class StubConfigurationFactory(object): + """ + Factory class for creating stub configuration objects + """ + @staticmethod +
[docs] def new_configuration(connector, *errorTypes): + """ + Return a stub configuration using the specified connection, with no + registered errors. + + @type connector: L{vmware.vapi.protocol.client.connector.Connector} + @param connector: Connection to be used to talk to the remote + ApiProvider + @type error_types: C{list} of L{vmware.vapi.bindings.type.ErrorType} + @param error_types: error types to be registered in the configuration + """ + config = StubConfiguration(connector, *errorTypes) + return config +
+ @staticmethod +
[docs] def new_runtime_configuration(connector, *errorTypes): + """ + Return a stub configuration using the specified connection, with the + errors reported by the vAPI runtime registered. + + @type connector: L{vmware.vapi.protocol.client.connector.Connector} + @param connector: Connection to be used to talk to the remote + ApiProvider + @type error_types: C{list} of L{vmware.vapi.bindings.type.ErrorType} + @param error_types: additional error types to be registered in the + configuration + """ + return StubConfigurationFactory.new_configuration( + connector, + errors_client.InternalServerError.get_binding_type(), + errors_client.InvalidArgument.get_binding_type(), + errors_client.OperationNotFound.get_binding_type(), + *errorTypes) +
+ @staticmethod +
[docs] def new_std_configuration(connector, *errorTypes): + """ + Return a stub configuration using the specified connection, with all the + standard errors registered. + + @type connector: L{vmware.vapi.protocol.client.connector.Connector} + @param connector: Connection to be used to talk to the remote + ApiProvider + @type error_types: C{list} of L{vmware.vapi.bindings.type.ErrorType} + @param error_types: additional error types to be registered in the + configuration + """ + std_errors = (getattr(errors_client, name).get_binding_type() + for name in dir(errors_client) + if getattr(errors_client, name) is not VapiError + and isinstance(getattr(errors_client, name), type) + and issubclass(getattr(errors_client, name), + VapiError)) + return StubConfigurationFactory.new_configuration( + connector, + *itertools.chain(std_errors, errorTypes))
+
+ +
+
+
+
+
+ + +
+
+
+
+ + + + \ No newline at end of file diff --git a/vsphere/6.0/_modules/vmware/vapi/stdlib/client/l10n.html b/vsphere/6.0/_modules/vmware/vapi/stdlib/client/l10n.html new file mode 100644 index 00000000..4d40314c --- /dev/null +++ b/vsphere/6.0/_modules/vmware/vapi/stdlib/client/l10n.html @@ -0,0 +1,150 @@ + + + + + + + + + + vmware.vapi.stdlib.client.l10n — vCloud Suite SDK for Python 6.0.0 documentation + + + + + + + + + + + + + + +
+
+
+
+ +

Source code for vmware.vapi.stdlib.client.l10n

+"""
+Helper classes for client side localization.
+"""
+__author__ = 'VMware, Inc.'
+__copyright__ = 'Copyright 2014 VMware, Inc.  All rights reserved. -- VMware Confidential'
+
+
+from vmware.vapi.l10n.formatter import StringFormatter
+
+
+
[docs]class MessageLocalizer(object): + """ + Helper class to localize vAPI LocalizableMessages. + + Before initializating the MessageLocalizer, locale + has to be explicitly set if the user wants a locale + other than English (U.S.). + + Typically, at the start of the application, the following + two lines are required to set the locale. + + import locale + locale.setlocale(locale.LC_ALL,<locale_type>) + + If the locale_type is empty string, locale is set to user's + default setting (typically specified in the LANG environment + variable). Otherwise, the specified locale type has to be + installed in the system. + """ + def __init__(self, bundle, formatter=StringFormatter): + """ + Initialize MessageLocalizer + + :type bundle: :class:`vmware.vapi.message.MessageBundle` + :param bundle: Message bundle to retrieve the templates for the + messages + :type formatter: :class:`vmware.vapi.message.MessageFormatter` + :param formatter: Message formatter to format the messages + """ + self._bundle = bundle + self._formatter = formatter + +
[docs] def localize(self, msg): + """ + Localize a given LocalizableMessage. + + :type msg: :class:`com.vmware.vapi.std_client.LocalizableMessage` + :param msg: LocalizableMessage + :rtype: :class:`str` + :return: Localized string + """ + try: + template = self._bundle.get(msg.id) + except KeyError: + raise Exception('Invalid message identifier: %s' % msg.id) + return self._formatter.format_msg(template, msg.args)
+
+ +
+
+
+
+
+ + +
+
+
+
+ + + + \ No newline at end of file diff --git a/vsphere/6.0/_sources/com.txt b/vsphere/6.0/_sources/com.txt new file mode 100644 index 00000000..b6075873 --- /dev/null +++ b/vsphere/6.0/_sources/com.txt @@ -0,0 +1,18 @@ +com Package +=========== + +:mod:`com` Package +------------------ + +.. automodule:: com + :members: + :undoc-members: + :show-inheritance: + +Subpackages +----------- + +.. toctree:: + + com.vmware + diff --git a/vsphere/6.0/_sources/com.vmware.cis.txt b/vsphere/6.0/_sources/com.vmware.cis.txt new file mode 100644 index 00000000..15cbd383 --- /dev/null +++ b/vsphere/6.0/_sources/com.vmware.cis.txt @@ -0,0 +1,19 @@ +cis Package +=========== + +:mod:`cis` Package +------------------ + +.. automodule:: com.vmware.cis + :members: + :undoc-members: + :show-inheritance: + +:mod:`tagging_client` Module +---------------------------- + +.. automodule:: com.vmware.cis.tagging_client + :members: + :undoc-members: + :show-inheritance: + diff --git a/vsphere/6.0/_sources/com.vmware.content.library.item.txt b/vsphere/6.0/_sources/com.vmware.content.library.item.txt new file mode 100644 index 00000000..f47a14ad --- /dev/null +++ b/vsphere/6.0/_sources/com.vmware.content.library.item.txt @@ -0,0 +1,27 @@ +item Package +============ + +:mod:`item` Package +------------------- + +.. automodule:: com.vmware.content.library.item + :members: + :undoc-members: + :show-inheritance: + +:mod:`downloadsession_client` Module +------------------------------------ + +.. automodule:: com.vmware.content.library.item.downloadsession_client + :members: + :undoc-members: + :show-inheritance: + +:mod:`updatesession_client` Module +---------------------------------- + +.. automodule:: com.vmware.content.library.item.updatesession_client + :members: + :undoc-members: + :show-inheritance: + diff --git a/vsphere/6.0/_sources/com.vmware.content.library.txt b/vsphere/6.0/_sources/com.vmware.content.library.txt new file mode 100644 index 00000000..d0dd6ad3 --- /dev/null +++ b/vsphere/6.0/_sources/com.vmware.content.library.txt @@ -0,0 +1,26 @@ +library Package +=============== + +:mod:`library` Package +---------------------- + +.. automodule:: com.vmware.content.library + :members: + :undoc-members: + :show-inheritance: + +:mod:`item_client` Module +------------------------- + +.. automodule:: com.vmware.content.library.item_client + :members: + :undoc-members: + :show-inheritance: + +Subpackages +----------- + +.. toctree:: + + com.vmware.content.library.item + diff --git a/vsphere/6.0/_sources/com.vmware.content.txt b/vsphere/6.0/_sources/com.vmware.content.txt new file mode 100644 index 00000000..2d4b1008 --- /dev/null +++ b/vsphere/6.0/_sources/com.vmware.content.txt @@ -0,0 +1,26 @@ +content Package +=============== + +:mod:`content` Package +---------------------- + +.. automodule:: com.vmware.content + :members: + :undoc-members: + :show-inheritance: + +:mod:`library_client` Module +---------------------------- + +.. automodule:: com.vmware.content.library_client + :members: + :undoc-members: + :show-inheritance: + +Subpackages +----------- + +.. toctree:: + + com.vmware.content.library + diff --git a/vsphere/6.0/_sources/com.vmware.txt b/vsphere/6.0/_sources/com.vmware.txt new file mode 100644 index 00000000..8b5d939a --- /dev/null +++ b/vsphere/6.0/_sources/com.vmware.txt @@ -0,0 +1,45 @@ +vmware Package +============== + +:mod:`vmware` Package +--------------------- + +.. automodule:: com.vmware + :members: + :undoc-members: + :show-inheritance: + +:mod:`cis_client` Module +------------------------ + +.. automodule:: com.vmware.cis_client + :members: + :undoc-members: + :show-inheritance: + +:mod:`content_client` Module +---------------------------- + +.. automodule:: com.vmware.content_client + :members: + :undoc-members: + :show-inheritance: + +:mod:`vapi_client` Module +------------------------- + +.. automodule:: com.vmware.vapi_client + :members: + :undoc-members: + :show-inheritance: + +Subpackages +----------- + +.. toctree:: + + com.vmware.cis + com.vmware.content + com.vmware.vapi + com.vmware.vcenter + diff --git a/vsphere/6.0/_sources/com.vmware.vapi.metadata.authentication.txt b/vsphere/6.0/_sources/com.vmware.vapi.metadata.authentication.txt new file mode 100644 index 00000000..a930bb8b --- /dev/null +++ b/vsphere/6.0/_sources/com.vmware.vapi.metadata.authentication.txt @@ -0,0 +1,19 @@ +authentication Package +====================== + +:mod:`authentication` Package +----------------------------- + +.. automodule:: com.vmware.vapi.metadata.authentication + :members: + :undoc-members: + :show-inheritance: + +:mod:`service_client` Module +---------------------------- + +.. automodule:: com.vmware.vapi.metadata.authentication.service_client + :members: + :undoc-members: + :show-inheritance: + diff --git a/vsphere/6.0/_sources/com.vmware.vapi.metadata.metamodel.txt b/vsphere/6.0/_sources/com.vmware.vapi.metadata.metamodel.txt new file mode 100644 index 00000000..80929768 --- /dev/null +++ b/vsphere/6.0/_sources/com.vmware.vapi.metadata.metamodel.txt @@ -0,0 +1,27 @@ +metamodel Package +================= + +:mod:`metamodel` Package +------------------------ + +.. automodule:: com.vmware.vapi.metadata.metamodel + :members: + :undoc-members: + :show-inheritance: + +:mod:`resource_client` Module +----------------------------- + +.. automodule:: com.vmware.vapi.metadata.metamodel.resource_client + :members: + :undoc-members: + :show-inheritance: + +:mod:`service_client` Module +---------------------------- + +.. automodule:: com.vmware.vapi.metadata.metamodel.service_client + :members: + :undoc-members: + :show-inheritance: + diff --git a/vsphere/6.0/_sources/com.vmware.vapi.metadata.privilege.txt b/vsphere/6.0/_sources/com.vmware.vapi.metadata.privilege.txt new file mode 100644 index 00000000..b5b4b201 --- /dev/null +++ b/vsphere/6.0/_sources/com.vmware.vapi.metadata.privilege.txt @@ -0,0 +1,19 @@ +privilege Package +================= + +:mod:`privilege` Package +------------------------ + +.. automodule:: com.vmware.vapi.metadata.privilege + :members: + :undoc-members: + :show-inheritance: + +:mod:`service_client` Module +---------------------------- + +.. automodule:: com.vmware.vapi.metadata.privilege.service_client + :members: + :undoc-members: + :show-inheritance: + diff --git a/vsphere/6.0/_sources/com.vmware.vapi.metadata.txt b/vsphere/6.0/_sources/com.vmware.vapi.metadata.txt new file mode 100644 index 00000000..37ed5bd6 --- /dev/null +++ b/vsphere/6.0/_sources/com.vmware.vapi.metadata.txt @@ -0,0 +1,52 @@ +metadata Package +================ + +:mod:`metadata` Package +----------------------- + +.. automodule:: com.vmware.vapi.metadata + :members: + :undoc-members: + :show-inheritance: + +:mod:`authentication_client` Module +----------------------------------- + +.. automodule:: com.vmware.vapi.metadata.authentication_client + :members: + :undoc-members: + :show-inheritance: + +:mod:`cli_client` Module +------------------------ + +.. automodule:: com.vmware.vapi.metadata.cli_client + :members: + :undoc-members: + :show-inheritance: + +:mod:`metamodel_client` Module +------------------------------ + +.. automodule:: com.vmware.vapi.metadata.metamodel_client + :members: + :undoc-members: + :show-inheritance: + +:mod:`privilege_client` Module +------------------------------ + +.. automodule:: com.vmware.vapi.metadata.privilege_client + :members: + :undoc-members: + :show-inheritance: + +Subpackages +----------- + +.. toctree:: + + com.vmware.vapi.metadata.authentication + com.vmware.vapi.metadata.metamodel + com.vmware.vapi.metadata.privilege + diff --git a/vsphere/6.0/_sources/com.vmware.vapi.std.txt b/vsphere/6.0/_sources/com.vmware.vapi.std.txt new file mode 100644 index 00000000..0ef639c5 --- /dev/null +++ b/vsphere/6.0/_sources/com.vmware.vapi.std.txt @@ -0,0 +1,19 @@ +std Package +=========== + +:mod:`std` Package +------------------ + +.. automodule:: com.vmware.vapi.std + :members: + :undoc-members: + :show-inheritance: + +:mod:`errors_client` Module +--------------------------- + +.. automodule:: com.vmware.vapi.std.errors_client + :members: + :undoc-members: + :show-inheritance: + diff --git a/vsphere/6.0/_sources/com.vmware.vapi.txt b/vsphere/6.0/_sources/com.vmware.vapi.txt new file mode 100644 index 00000000..62f10cbd --- /dev/null +++ b/vsphere/6.0/_sources/com.vmware.vapi.txt @@ -0,0 +1,43 @@ +vapi Package +============ + +:mod:`vapi` Package +------------------- + +.. automodule:: com.vmware.vapi + :members: + :undoc-members: + :show-inheritance: + +:mod:`metadata_client` Module +----------------------------- + +.. automodule:: com.vmware.vapi.metadata_client + :members: + :undoc-members: + :show-inheritance: + +:mod:`std_client` Module +------------------------ + +.. automodule:: com.vmware.vapi.std_client + :members: + :undoc-members: + :show-inheritance: + +:mod:`vcenter_client` Module +---------------------------- + +.. automodule:: com.vmware.vapi.vcenter_client + :members: + :undoc-members: + :show-inheritance: + +Subpackages +----------- + +.. toctree:: + + com.vmware.vapi.metadata + com.vmware.vapi.std + diff --git a/vsphere/6.0/_sources/com.vmware.vcenter.txt b/vsphere/6.0/_sources/com.vmware.vcenter.txt new file mode 100644 index 00000000..444d1fef --- /dev/null +++ b/vsphere/6.0/_sources/com.vmware.vcenter.txt @@ -0,0 +1,27 @@ +vcenter Package +=============== + +:mod:`vcenter` Package +---------------------- + +.. automodule:: com.vmware.vcenter + :members: + :undoc-members: + :show-inheritance: + +:mod:`inventory_client` Module +------------------------------ + +.. automodule:: com.vmware.vcenter.inventory_client + :members: + :undoc-members: + :show-inheritance: + +:mod:`ovf_client` Module +------------------------ + +.. automodule:: com.vmware.vcenter.ovf_client + :members: + :undoc-members: + :show-inheritance: + diff --git a/vsphere/6.0/_sources/custom/rst/enumeration.txt b/vsphere/6.0/_sources/custom/rst/enumeration.txt new file mode 100644 index 00000000..afe09e47 --- /dev/null +++ b/vsphere/6.0/_sources/custom/rst/enumeration.txt @@ -0,0 +1,82 @@ +.. _enumeration_description: + +Interface definition language to python mapping for enumerated types +-------------------------------------------------------------------- + +The interface language definition type system includes enumerated types. Python +SDK supports both 2.x and 3.x versions of Python. Since Python 2.x does +not have first class support for enumerations, special classes are +generated to represent enumerated types from the interface definition +language. The special class contains class attributes which represent +the values of the enumerated type. + +This documentation explains the following: + +* How the class variables are defined in the module. This specifies the names that you can use in your program. +* How you instantiate a class to use it for communication with future versions of the service. + +Example of an enumerated type documentation +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +*class* com.vmware.vapi.metadata_client. **SourceType** (string) + Bases: vmware.vapi.bindings.enum.Enum + + Metadata source type + + .. note:: + This class represents an enumerated type in the interface language definition type system. The class contains class attributes which represent the values in the current version of the enumerated type. Newer versions of the enumerated type may contain new values. To use new values of the enumerated type in communication with a server that supports a newer version of the API, you instantiate this class. See :ref:`enumerated type description page `. + + **Parameters** : **string** (``str``) – String value for the SourceType instance. + + **FILE** = *SourceType(string='FILE')* + If the source is backed by a file. + + **REMOTE** = *SourceType(string='REMOTE')* + If the source is backed by a remote service. + +Code Examples +^^^^^^^^^^^^^ + +The enumerated type classes are defined in python modules that your code +imports. You can use these in your code. + +1. If you want to pass an enumerated type value in a method to a server, specify the class variable of the enumerated type class. + +.. code-block:: python + + # SourceType is an enumerated type + from com.vmware.vapi.metadata_client import SourceType + + # SourceType has two class attrites, SourceType.FILE and SourceType.REMOTE + spec = Source.CreateSpec(type=SourceType.FILE, filepath='entity_metadata.json', description='Entity service') + source_svc.create(id='entity', spec=spec) + +2. When you receive an enumerated type value in the response from a server, allow for unknown enumerated type values. + +.. code-block:: python + + # SourceType is an enumerated type + from com.vmware.vapi.metadata_client import SourceType + + source_info = source_svc.get(id='entity') + if (source_info.type == SourceType.FILE) { + print 'Source is a file' + } else if (source_info.type == SourceType.REMOTE) { + print 'Source is a remote provider' + } else { + print 'Unknown source type: %s' % str(source_info.type) + } + +3. Sending a new enumerated type value to a server that has a newer version of the enumerated type. + +To use new values of the enumerated type in communication with a server that supports a newer version of the API, you instantiate the +enumerated type class. + +.. code-block:: python + + # If a newer version of SourceType has a new value FOLDER, FOLDER would be one + # of the class attributes for SourceType. In the older version, SourceType has + # only two class attributes, FILE and REMOTE + from com.vmware.vapi.metadata_client import SourceType + spec = Source.CreateSpec(type=SourceType('FOLDER'), filepath='entity_metadata', description='Entity service') + source_svc.create(id='entity', spec=spec) diff --git a/vsphere/6.0/_sources/index.txt b/vsphere/6.0/_sources/index.txt new file mode 100644 index 00000000..97f98e28 --- /dev/null +++ b/vsphere/6.0/_sources/index.txt @@ -0,0 +1,24 @@ +.. vCloud Suite SDK for Python documentation master file, created by + sphinx-quickstart on Wed Mar 4 03:04:19 2015. + You can adapt this file completely to your liking, but it should at least + contain the root `toctree` directive. + +Welcome to vCloud Suite SDK for Python's documentation! +======================================================= + +Contents: + +.. toctree:: + :maxdepth: 4 + + com + vmware + + +Indices and tables +================== + +* :ref:`genindex` +* :ref:`modindex` +* :ref:`search` + diff --git a/vsphere/6.0/_sources/vmware.txt b/vsphere/6.0/_sources/vmware.txt new file mode 100644 index 00000000..0e95e759 --- /dev/null +++ b/vsphere/6.0/_sources/vmware.txt @@ -0,0 +1,18 @@ +vmware Package +============== + +:mod:`vmware` Package +--------------------- + +.. automodule:: vmware + :members: + :undoc-members: + :show-inheritance: + +Subpackages +----------- + +.. toctree:: + + vmware.vapi + diff --git a/vsphere/6.0/_sources/vmware.vapi.bindings.txt b/vsphere/6.0/_sources/vmware.vapi.bindings.txt new file mode 100644 index 00000000..f1912a37 --- /dev/null +++ b/vsphere/6.0/_sources/vmware.vapi.bindings.txt @@ -0,0 +1,107 @@ +bindings Package +================ + +:mod:`bindings` Package +----------------------- + +.. automodule:: vmware.vapi.bindings + :members: + :undoc-members: + :show-inheritance: + +:mod:`common` Module +-------------------- + +.. automodule:: vmware.vapi.bindings.common + :members: + :undoc-members: + :show-inheritance: + +:mod:`converter` Module +----------------------- + +.. automodule:: vmware.vapi.bindings.converter + :members: + :undoc-members: + :show-inheritance: + +:mod:`datetime_helper` Module +----------------------------- + +.. automodule:: vmware.vapi.bindings.datetime_helper + :members: + :undoc-members: + :show-inheritance: + +:mod:`enum` Module +------------------ + +.. automodule:: vmware.vapi.bindings.enum + :members: + :undoc-members: + :show-inheritance: + +:mod:`error` Module +------------------- + +.. automodule:: vmware.vapi.bindings.error + :members: + :undoc-members: + :show-inheritance: + +:mod:`message` Module +--------------------- + +.. automodule:: vmware.vapi.bindings.message + :members: + :undoc-members: + :show-inheritance: + +:mod:`skeleton` Module +---------------------- + +.. automodule:: vmware.vapi.bindings.skeleton + :members: + :undoc-members: + :show-inheritance: + +:mod:`struct` Module +-------------------- + +.. automodule:: vmware.vapi.bindings.struct + :members: + :undoc-members: + :show-inheritance: + +:mod:`stub` Module +------------------ + +.. automodule:: vmware.vapi.bindings.stub + :members: + :undoc-members: + :show-inheritance: + +:mod:`type` Module +------------------ + +.. automodule:: vmware.vapi.bindings.type + :members: + :undoc-members: + :show-inheritance: + +:mod:`uri_helper` Module +------------------------ + +.. automodule:: vmware.vapi.bindings.uri_helper + :members: + :undoc-members: + :show-inheritance: + +:mod:`value` Module +------------------- + +.. automodule:: vmware.vapi.bindings.value + :members: + :undoc-members: + :show-inheritance: + diff --git a/vsphere/6.0/_sources/vmware.vapi.data.serializers.txt b/vsphere/6.0/_sources/vmware.vapi.data.serializers.txt new file mode 100644 index 00000000..5428dcc4 --- /dev/null +++ b/vsphere/6.0/_sources/vmware.vapi.data.serializers.txt @@ -0,0 +1,35 @@ +serializers Package +=================== + +:mod:`serializers` Package +-------------------------- + +.. automodule:: vmware.vapi.data.serializers + :members: + :undoc-members: + :show-inheritance: + +:mod:`introspection` Module +--------------------------- + +.. automodule:: vmware.vapi.data.serializers.introspection + :members: + :undoc-members: + :show-inheritance: + +:mod:`jsonrpc` Module +--------------------- + +.. automodule:: vmware.vapi.data.serializers.jsonrpc + :members: + :undoc-members: + :show-inheritance: + +:mod:`python` Module +-------------------- + +.. automodule:: vmware.vapi.data.serializers.python + :members: + :undoc-members: + :show-inheritance: + diff --git a/vsphere/6.0/_sources/vmware.vapi.data.txt b/vsphere/6.0/_sources/vmware.vapi.data.txt new file mode 100644 index 00000000..56926665 --- /dev/null +++ b/vsphere/6.0/_sources/vmware.vapi.data.txt @@ -0,0 +1,50 @@ +data Package +============ + +:mod:`data` Package +------------------- + +.. automodule:: vmware.vapi.data + :members: + :undoc-members: + :show-inheritance: + +:mod:`definition` Module +------------------------ + +.. automodule:: vmware.vapi.data.definition + :members: + :undoc-members: + :show-inheritance: + +:mod:`type` Module +------------------ + +.. automodule:: vmware.vapi.data.type + :members: + :undoc-members: + :show-inheritance: + +:mod:`validator` Module +----------------------- + +.. automodule:: vmware.vapi.data.validator + :members: + :undoc-members: + :show-inheritance: + +:mod:`value` Module +------------------- + +.. automodule:: vmware.vapi.data.value + :members: + :undoc-members: + :show-inheritance: + +Subpackages +----------- + +.. toctree:: + + vmware.vapi.data.serializers + diff --git a/vsphere/6.0/_sources/vmware.vapi.debug.txt b/vsphere/6.0/_sources/vmware.vapi.debug.txt new file mode 100644 index 00000000..617ff349 --- /dev/null +++ b/vsphere/6.0/_sources/vmware.vapi.debug.txt @@ -0,0 +1,19 @@ +debug Package +============= + +:mod:`debug` Package +-------------------- + +.. automodule:: vmware.vapi.debug + :members: + :undoc-members: + :show-inheritance: + +:mod:`livedump` Module +---------------------- + +.. automodule:: vmware.vapi.debug.livedump + :members: + :undoc-members: + :show-inheritance: + diff --git a/vsphere/6.0/_sources/vmware.vapi.l10n.txt b/vsphere/6.0/_sources/vmware.vapi.l10n.txt new file mode 100644 index 00000000..810dc99a --- /dev/null +++ b/vsphere/6.0/_sources/vmware.vapi.l10n.txt @@ -0,0 +1,51 @@ +l10n Package +============ + +:mod:`l10n` Package +------------------- + +.. automodule:: vmware.vapi.l10n + :members: + :undoc-members: + :show-inheritance: + +:mod:`bindings` Module +---------------------- + +.. automodule:: vmware.vapi.l10n.bindings + :members: + :undoc-members: + :show-inheritance: + +:mod:`bundle` Module +-------------------- + +.. automodule:: vmware.vapi.l10n.bundle + :members: + :undoc-members: + :show-inheritance: + +:mod:`constants` Module +----------------------- + +.. automodule:: vmware.vapi.l10n.constants + :members: + :undoc-members: + :show-inheritance: + +:mod:`formatter` Module +----------------------- + +.. automodule:: vmware.vapi.l10n.formatter + :members: + :undoc-members: + :show-inheritance: + +:mod:`runtime` Module +--------------------- + +.. automodule:: vmware.vapi.l10n.runtime + :members: + :undoc-members: + :show-inheritance: + diff --git a/vsphere/6.0/_sources/vmware.vapi.lib.txt b/vsphere/6.0/_sources/vmware.vapi.lib.txt new file mode 100644 index 00000000..7cdde0af --- /dev/null +++ b/vsphere/6.0/_sources/vmware.vapi.lib.txt @@ -0,0 +1,115 @@ +lib Package +=========== + +:mod:`lib` Package +------------------ + +.. automodule:: vmware.vapi.lib + :members: + :undoc-members: + :show-inheritance: + +:mod:`addr_url_parser` Module +----------------------------- + +.. automodule:: vmware.vapi.lib.addr_url_parser + :members: + :undoc-members: + :show-inheritance: + +:mod:`connect` Module +--------------------- + +.. automodule:: vmware.vapi.lib.connect + :members: + :undoc-members: + :show-inheritance: + +:mod:`constants` Module +----------------------- + +.. automodule:: vmware.vapi.lib.constants + :members: + :undoc-members: + :show-inheritance: + +:mod:`context` Module +--------------------- + +.. automodule:: vmware.vapi.lib.context + :members: + :undoc-members: + :show-inheritance: + +:mod:`converter` Module +----------------------- + +.. automodule:: vmware.vapi.lib.converter + :members: + :undoc-members: + :show-inheritance: + +:mod:`fingerprint` Module +------------------------- + +.. automodule:: vmware.vapi.lib.fingerprint + :members: + :undoc-members: + :show-inheritance: + +:mod:`load` Module +------------------ + +.. automodule:: vmware.vapi.lib.load + :members: + :undoc-members: + :show-inheritance: + +:mod:`profiler` Module +---------------------- + +.. automodule:: vmware.vapi.lib.profiler + :members: + :undoc-members: + :show-inheritance: + +:mod:`ssl` Module +----------------- + +.. automodule:: vmware.vapi.lib.ssl + :members: + :undoc-members: + :show-inheritance: + +:mod:`std` Module +----------------- + +.. automodule:: vmware.vapi.lib.std + :members: + :undoc-members: + :show-inheritance: + +:mod:`thread_pool` Module +------------------------- + +.. automodule:: vmware.vapi.lib.thread_pool + :members: + :undoc-members: + :show-inheritance: + +:mod:`visitor` Module +--------------------- + +.. automodule:: vmware.vapi.lib.visitor + :members: + :undoc-members: + :show-inheritance: + +:mod:`workers_pool` Module +-------------------------- + +.. automodule:: vmware.vapi.lib.workers_pool + :members: + :undoc-members: + :show-inheritance: + diff --git a/vsphere/6.0/_sources/vmware.vapi.protocol.client.msg.txt b/vsphere/6.0/_sources/vmware.vapi.protocol.client.msg.txt new file mode 100644 index 00000000..2a56bddb --- /dev/null +++ b/vsphere/6.0/_sources/vmware.vapi.protocol.client.msg.txt @@ -0,0 +1,35 @@ +msg Package +=========== + +:mod:`msg` Package +------------------ + +.. automodule:: vmware.vapi.protocol.client.msg + :members: + :undoc-members: + :show-inheritance: + +:mod:`connector_factory` Module +------------------------------- + +.. automodule:: vmware.vapi.protocol.client.msg.connector_factory + :members: + :undoc-members: + :show-inheritance: + +:mod:`generic_connector` Module +------------------------------- + +.. automodule:: vmware.vapi.protocol.client.msg.generic_connector + :members: + :undoc-members: + :show-inheritance: + +:mod:`json_connector` Module +---------------------------- + +.. automodule:: vmware.vapi.protocol.client.msg.json_connector + :members: + :undoc-members: + :show-inheritance: + diff --git a/vsphere/6.0/_sources/vmware.vapi.protocol.client.rpc.txt b/vsphere/6.0/_sources/vmware.vapi.protocol.client.rpc.txt new file mode 100644 index 00000000..8cc5d691 --- /dev/null +++ b/vsphere/6.0/_sources/vmware.vapi.protocol.client.rpc.txt @@ -0,0 +1,43 @@ +rpc Package +=========== + +:mod:`rpc` Package +------------------ + +.. automodule:: vmware.vapi.protocol.client.rpc + :members: + :undoc-members: + :show-inheritance: + +:mod:`http_provider` Module +--------------------------- + +.. automodule:: vmware.vapi.protocol.client.rpc.http_provider + :members: + :undoc-members: + :show-inheritance: + +:mod:`provider` Module +---------------------- + +.. automodule:: vmware.vapi.protocol.client.rpc.provider + :members: + :undoc-members: + :show-inheritance: + +:mod:`provider_factory` Module +------------------------------ + +.. automodule:: vmware.vapi.protocol.client.rpc.provider_factory + :members: + :undoc-members: + :show-inheritance: + +:mod:`requests_provider` Module +------------------------------- + +.. automodule:: vmware.vapi.protocol.client.rpc.requests_provider + :members: + :undoc-members: + :show-inheritance: + diff --git a/vsphere/6.0/_sources/vmware.vapi.protocol.client.txt b/vsphere/6.0/_sources/vmware.vapi.protocol.client.txt new file mode 100644 index 00000000..9c903d3c --- /dev/null +++ b/vsphere/6.0/_sources/vmware.vapi.protocol.client.txt @@ -0,0 +1,35 @@ +client Package +============== + +:mod:`client` Package +--------------------- + +.. automodule:: vmware.vapi.protocol.client + :members: + :undoc-members: + :show-inheritance: + +:mod:`connector` Module +----------------------- + +.. automodule:: vmware.vapi.protocol.client.connector + :members: + :undoc-members: + :show-inheritance: + +:mod:`local_connector` Module +----------------------------- + +.. automodule:: vmware.vapi.protocol.client.local_connector + :members: + :undoc-members: + :show-inheritance: + +Subpackages +----------- + +.. toctree:: + + vmware.vapi.protocol.client.msg + vmware.vapi.protocol.client.rpc + diff --git a/vsphere/6.0/_sources/vmware.vapi.protocol.common.msg.txt b/vsphere/6.0/_sources/vmware.vapi.protocol.common.msg.txt new file mode 100644 index 00000000..6228ad45 --- /dev/null +++ b/vsphere/6.0/_sources/vmware.vapi.protocol.common.msg.txt @@ -0,0 +1,11 @@ +msg Package +=========== + +:mod:`msg` Package +------------------ + +.. automodule:: vmware.vapi.protocol.common.msg + :members: + :undoc-members: + :show-inheritance: + diff --git a/vsphere/6.0/_sources/vmware.vapi.protocol.common.transport.txt b/vsphere/6.0/_sources/vmware.vapi.protocol.common.transport.txt new file mode 100644 index 00000000..84e8f66b --- /dev/null +++ b/vsphere/6.0/_sources/vmware.vapi.protocol.common.transport.txt @@ -0,0 +1,19 @@ +transport Package +================= + +:mod:`transport` Package +------------------------ + +.. automodule:: vmware.vapi.protocol.common.transport + :members: + :undoc-members: + :show-inheritance: + +:mod:`chunking` Module +---------------------- + +.. automodule:: vmware.vapi.protocol.common.transport.chunking + :members: + :undoc-members: + :show-inheritance: + diff --git a/vsphere/6.0/_sources/vmware.vapi.protocol.common.txt b/vsphere/6.0/_sources/vmware.vapi.protocol.common.txt new file mode 100644 index 00000000..ec81c720 --- /dev/null +++ b/vsphere/6.0/_sources/vmware.vapi.protocol.common.txt @@ -0,0 +1,27 @@ +common Package +============== + +:mod:`common` Package +--------------------- + +.. automodule:: vmware.vapi.protocol.common + :members: + :undoc-members: + :show-inheritance: + +:mod:`lib` Module +----------------- + +.. automodule:: vmware.vapi.protocol.common.lib + :members: + :undoc-members: + :show-inheritance: + +Subpackages +----------- + +.. toctree:: + + vmware.vapi.protocol.common.msg + vmware.vapi.protocol.common.transport + diff --git a/vsphere/6.0/_sources/vmware.vapi.protocol.server.msg.txt b/vsphere/6.0/_sources/vmware.vapi.protocol.server.msg.txt new file mode 100644 index 00000000..dacebaca --- /dev/null +++ b/vsphere/6.0/_sources/vmware.vapi.protocol.server.msg.txt @@ -0,0 +1,27 @@ +msg Package +=========== + +:mod:`msg` Package +------------------ + +.. automodule:: vmware.vapi.protocol.server.msg + :members: + :undoc-members: + :show-inheritance: + +:mod:`handler_factory` Module +----------------------------- + +.. automodule:: vmware.vapi.protocol.server.msg.handler_factory + :members: + :undoc-members: + :show-inheritance: + +:mod:`json_handler` Module +-------------------------- + +.. automodule:: vmware.vapi.protocol.server.msg.json_handler + :members: + :undoc-members: + :show-inheritance: + diff --git a/vsphere/6.0/_sources/vmware.vapi.protocol.server.transport.txt b/vsphere/6.0/_sources/vmware.vapi.protocol.server.transport.txt new file mode 100644 index 00000000..8e295a2c --- /dev/null +++ b/vsphere/6.0/_sources/vmware.vapi.protocol.server.transport.txt @@ -0,0 +1,35 @@ +transport Package +================= + +:mod:`transport` Package +------------------------ + +.. automodule:: vmware.vapi.protocol.server.transport + :members: + :undoc-members: + :show-inheritance: + +:mod:`async_protocol_handler` Module +------------------------------------ + +.. automodule:: vmware.vapi.protocol.server.transport.async_protocol_handler + :members: + :undoc-members: + :show-inheritance: + +:mod:`async_server_adapter_factory` Module +------------------------------------------ + +.. automodule:: vmware.vapi.protocol.server.transport.async_server_adapter_factory + :members: + :undoc-members: + :show-inheritance: + +:mod:`msg_handler` Module +------------------------- + +.. automodule:: vmware.vapi.protocol.server.transport.msg_handler + :members: + :undoc-members: + :show-inheritance: + diff --git a/vsphere/6.0/_sources/vmware.vapi.protocol.server.txt b/vsphere/6.0/_sources/vmware.vapi.protocol.server.txt new file mode 100644 index 00000000..4fe73346 --- /dev/null +++ b/vsphere/6.0/_sources/vmware.vapi.protocol.server.txt @@ -0,0 +1,35 @@ +server Package +============== + +:mod:`server` Package +--------------------- + +.. automodule:: vmware.vapi.protocol.server + :members: + :undoc-members: + :show-inheritance: + +:mod:`api_handler` Module +------------------------- + +.. automodule:: vmware.vapi.protocol.server.api_handler + :members: + :undoc-members: + :show-inheritance: + +:mod:`async_api_handler_adapter` Module +--------------------------------------- + +.. automodule:: vmware.vapi.protocol.server.async_api_handler_adapter + :members: + :undoc-members: + :show-inheritance: + +Subpackages +----------- + +.. toctree:: + + vmware.vapi.protocol.server.msg + vmware.vapi.protocol.server.transport + diff --git a/vsphere/6.0/_sources/vmware.vapi.protocol.txt b/vsphere/6.0/_sources/vmware.vapi.protocol.txt new file mode 100644 index 00000000..657a5666 --- /dev/null +++ b/vsphere/6.0/_sources/vmware.vapi.protocol.txt @@ -0,0 +1,20 @@ +protocol Package +================ + +:mod:`protocol` Package +----------------------- + +.. automodule:: vmware.vapi.protocol + :members: + :undoc-members: + :show-inheritance: + +Subpackages +----------- + +.. toctree:: + + vmware.vapi.protocol.client + vmware.vapi.protocol.common + vmware.vapi.protocol.server + diff --git a/vsphere/6.0/_sources/vmware.vapi.provider.txt b/vsphere/6.0/_sources/vmware.vapi.provider.txt new file mode 100644 index 00000000..e24390bc --- /dev/null +++ b/vsphere/6.0/_sources/vmware.vapi.provider.txt @@ -0,0 +1,75 @@ +provider Package +================ + +:mod:`provider` Package +----------------------- + +.. automodule:: vmware.vapi.provider + :members: + :undoc-members: + :show-inheritance: + +:mod:`aggregator` Module +------------------------ + +.. automodule:: vmware.vapi.provider.aggregator + :members: + :undoc-members: + :show-inheritance: + +:mod:`authentication` Module +---------------------------- + +.. automodule:: vmware.vapi.provider.authentication + :members: + :undoc-members: + :show-inheritance: + +:mod:`filter` Module +-------------------- + +.. automodule:: vmware.vapi.provider.filter + :members: + :undoc-members: + :show-inheritance: + +:mod:`interposer` Module +------------------------ + +.. automodule:: vmware.vapi.provider.interposer + :members: + :undoc-members: + :show-inheritance: + +:mod:`introspection` Module +--------------------------- + +.. automodule:: vmware.vapi.provider.introspection + :members: + :undoc-members: + :show-inheritance: + +:mod:`lib` Module +----------------- + +.. automodule:: vmware.vapi.provider.lib + :members: + :undoc-members: + :show-inheritance: + +:mod:`local` Module +------------------- + +.. automodule:: vmware.vapi.provider.local + :members: + :undoc-members: + :show-inheritance: + +:mod:`services` Module +---------------------- + +.. automodule:: vmware.vapi.provider.services + :members: + :undoc-members: + :show-inheritance: + diff --git a/vsphere/6.0/_sources/vmware.vapi.security.txt b/vsphere/6.0/_sources/vmware.vapi.security.txt new file mode 100644 index 00000000..c71d2bf5 --- /dev/null +++ b/vsphere/6.0/_sources/vmware.vapi.security.txt @@ -0,0 +1,51 @@ +security Package +================ + +:mod:`security` Package +----------------------- + +.. automodule:: vmware.vapi.security + :members: + :undoc-members: + :show-inheritance: + +:mod:`chain` Module +------------------- + +.. automodule:: vmware.vapi.security.chain + :members: + :undoc-members: + :show-inheritance: + +:mod:`lib` Module +----------------- + +.. automodule:: vmware.vapi.security.lib + :members: + :undoc-members: + :show-inheritance: + +:mod:`session` Module +--------------------- + +.. automodule:: vmware.vapi.security.session + :members: + :undoc-members: + :show-inheritance: + +:mod:`sso` Module +----------------- + +.. automodule:: vmware.vapi.security.sso + :members: + :undoc-members: + :show-inheritance: + +:mod:`user_password` Module +--------------------------- + +.. automodule:: vmware.vapi.security.user_password + :members: + :undoc-members: + :show-inheritance: + diff --git a/vsphere/6.0/_sources/vmware.vapi.server.txt b/vsphere/6.0/_sources/vmware.vapi.server.txt new file mode 100644 index 00000000..832d2efe --- /dev/null +++ b/vsphere/6.0/_sources/vmware.vapi.server.txt @@ -0,0 +1,75 @@ +server Package +============== + +:mod:`server` Package +--------------------- + +.. automodule:: vmware.vapi.server + :members: + :undoc-members: + :show-inheritance: + +:mod:`asyncore_http` Module +--------------------------- + +.. automodule:: vmware.vapi.server.asyncore_http + :members: + :undoc-members: + :show-inheritance: + +:mod:`asyncore_server` Module +----------------------------- + +.. automodule:: vmware.vapi.server.asyncore_server + :members: + :undoc-members: + :show-inheritance: + +:mod:`server_interface` Module +------------------------------ + +.. automodule:: vmware.vapi.server.server_interface + :members: + :undoc-members: + :show-inheritance: + +:mod:`stdio_server` Module +-------------------------- + +.. automodule:: vmware.vapi.server.stdio_server + :members: + :undoc-members: + :show-inheritance: + +:mod:`twisted_server` Module +---------------------------- + +.. automodule:: vmware.vapi.server.twisted_server + :members: + :undoc-members: + :show-inheritance: + +:mod:`vapid` Module +------------------- + +.. automodule:: vmware.vapi.server.vapid + :members: + :undoc-members: + :show-inheritance: + +:mod:`windows_vapid` Module +--------------------------- + +.. automodule:: vmware.vapi.server.windows_vapid + :members: + :undoc-members: + :show-inheritance: + +:mod:`wsgi_server` Module +------------------------- + +.. automodule:: vmware.vapi.server.wsgi_server + :members: + :undoc-members: + :show-inheritance: + diff --git a/vsphere/6.0/_sources/vmware.vapi.settings.txt b/vsphere/6.0/_sources/vmware.vapi.settings.txt new file mode 100644 index 00000000..517e6b88 --- /dev/null +++ b/vsphere/6.0/_sources/vmware.vapi.settings.txt @@ -0,0 +1,27 @@ +settings Package +================ + +:mod:`settings` Package +----------------------- + +.. automodule:: vmware.vapi.settings + :members: + :undoc-members: + :show-inheritance: + +:mod:`config` Module +-------------------- + +.. automodule:: vmware.vapi.settings.config + :members: + :undoc-members: + :show-inheritance: + +:mod:`sections` Module +---------------------- + +.. automodule:: vmware.vapi.settings.sections + :members: + :undoc-members: + :show-inheritance: + diff --git a/vsphere/6.0/_sources/vmware.vapi.stdlib.client.txt b/vsphere/6.0/_sources/vmware.vapi.stdlib.client.txt new file mode 100644 index 00000000..8d58f3c9 --- /dev/null +++ b/vsphere/6.0/_sources/vmware.vapi.stdlib.client.txt @@ -0,0 +1,35 @@ +client Package +============== + +:mod:`client` Package +--------------------- + +.. automodule:: vmware.vapi.stdlib.client + :members: + :undoc-members: + :show-inheritance: + +:mod:`factories` Module +----------------------- + +.. automodule:: vmware.vapi.stdlib.client.factories + :members: + :undoc-members: + :show-inheritance: + +:mod:`introspection` Module +--------------------------- + +.. automodule:: vmware.vapi.stdlib.client.introspection + :members: + :undoc-members: + :show-inheritance: + +:mod:`l10n` Module +------------------ + +.. automodule:: vmware.vapi.stdlib.client.l10n + :members: + :undoc-members: + :show-inheritance: + diff --git a/vsphere/6.0/_sources/vmware.vapi.stdlib.txt b/vsphere/6.0/_sources/vmware.vapi.stdlib.txt new file mode 100644 index 00000000..a85f5b7d --- /dev/null +++ b/vsphere/6.0/_sources/vmware.vapi.stdlib.txt @@ -0,0 +1,18 @@ +stdlib Package +============== + +:mod:`stdlib` Package +--------------------- + +.. automodule:: vmware.vapi.stdlib + :members: + :undoc-members: + :show-inheritance: + +Subpackages +----------- + +.. toctree:: + + vmware.vapi.stdlib.client + diff --git a/vsphere/6.0/_sources/vmware.vapi.txt b/vsphere/6.0/_sources/vmware.vapi.txt new file mode 100644 index 00000000..e55c52e1 --- /dev/null +++ b/vsphere/6.0/_sources/vmware.vapi.txt @@ -0,0 +1,52 @@ +vapi Package +============ + +:mod:`vapi` Package +------------------- + +.. automodule:: vmware.vapi + :members: + :undoc-members: + :show-inheritance: + +:mod:`core` Module +------------------ + +.. automodule:: vmware.vapi.core + :members: + :undoc-members: + :show-inheritance: + +:mod:`exception` Module +----------------------- + +.. automodule:: vmware.vapi.exception + :members: + :undoc-members: + :show-inheritance: + +:mod:`message` Module +--------------------- + +.. automodule:: vmware.vapi.message + :members: + :undoc-members: + :show-inheritance: + +Subpackages +----------- + +.. toctree:: + + vmware.vapi.bindings + vmware.vapi.data + vmware.vapi.debug + vmware.vapi.l10n + vmware.vapi.lib + vmware.vapi.protocol + vmware.vapi.provider + vmware.vapi.security + vmware.vapi.server + vmware.vapi.settings + vmware.vapi.stdlib + diff --git a/vsphere/6.0/_static/ajax-loader.gif b/vsphere/6.0/_static/ajax-loader.gif new file mode 100644 index 00000000..61faf8ca Binary files /dev/null and b/vsphere/6.0/_static/ajax-loader.gif differ diff --git a/vsphere/6.0/_static/basic.css b/vsphere/6.0/_static/basic.css new file mode 100644 index 00000000..43e8bafa --- /dev/null +++ b/vsphere/6.0/_static/basic.css @@ -0,0 +1,540 @@ +/* + * basic.css + * ~~~~~~~~~ + * + * Sphinx stylesheet -- basic theme. + * + * :copyright: Copyright 2007-2011 by the Sphinx team, see AUTHORS. + * :license: BSD, see LICENSE for details. + * + */ + +/* -- main layout ----------------------------------------------------------- */ + +div.clearer { + clear: both; +} + +/* -- relbar ---------------------------------------------------------------- */ + +div.related { + width: 100%; + font-size: 90%; +} + +div.related h3 { + display: none; +} + +div.related ul { + margin: 0; + padding: 0 0 0 10px; + list-style: none; +} + +div.related li { + display: inline; +} + +div.related li.right { + float: right; + margin-right: 5px; +} + +/* -- sidebar --------------------------------------------------------------- */ + +div.sphinxsidebarwrapper { + padding: 10px 5px 0 10px; +} + +div.sphinxsidebar { + float: left; + width: 230px; + margin-left: -100%; + font-size: 90%; +} + +div.sphinxsidebar ul { + list-style: none; +} + +div.sphinxsidebar ul ul, +div.sphinxsidebar ul.want-points { + margin-left: 20px; + list-style: square; +} + +div.sphinxsidebar ul ul { + margin-top: 0; + margin-bottom: 0; +} + +div.sphinxsidebar form { + margin-top: 10px; +} + +div.sphinxsidebar input { + border: 1px solid #98dbcc; + font-family: sans-serif; + font-size: 1em; +} + +div.sphinxsidebar #searchbox input[type="text"] { + width: 170px; +} + +div.sphinxsidebar #searchbox input[type="submit"] { + width: 30px; +} + +img { + border: 0; +} + +/* -- search page ----------------------------------------------------------- */ + +ul.search { + margin: 10px 0 0 20px; + padding: 0; +} + +ul.search li { + padding: 5px 0 5px 20px; + background-image: url(file.png); + background-repeat: no-repeat; + background-position: 0 7px; +} + +ul.search li a { + font-weight: bold; +} + +ul.search li div.context { + color: #888; + margin: 2px 0 0 30px; + text-align: left; +} + +ul.keywordmatches li.goodmatch a { + font-weight: bold; +} + +/* -- index page ------------------------------------------------------------ */ + +table.contentstable { + width: 90%; +} + +table.contentstable p.biglink { + line-height: 150%; +} + +a.biglink { + font-size: 1.3em; +} + +span.linkdescr { + font-style: italic; + padding-top: 5px; + font-size: 90%; +} + +/* -- general index --------------------------------------------------------- */ + +table.indextable { + width: 100%; +} + +table.indextable td { + text-align: left; + vertical-align: top; +} + +table.indextable dl, table.indextable dd { + margin-top: 0; + margin-bottom: 0; +} + +table.indextable tr.pcap { + height: 10px; +} + +table.indextable tr.cap { + margin-top: 10px; + background-color: #f2f2f2; +} + +img.toggler { + margin-right: 3px; + margin-top: 3px; + cursor: pointer; +} + +div.modindex-jumpbox { + border-top: 1px solid #ddd; + border-bottom: 1px solid #ddd; + margin: 1em 0 1em 0; + padding: 0.4em; +} + +div.genindex-jumpbox { + border-top: 1px solid #ddd; + border-bottom: 1px solid #ddd; + margin: 1em 0 1em 0; + padding: 0.4em; +} + +/* -- general body styles --------------------------------------------------- */ + +a.headerlink { + visibility: hidden; +} + +h1:hover > a.headerlink, +h2:hover > a.headerlink, +h3:hover > a.headerlink, +h4:hover > a.headerlink, +h5:hover > a.headerlink, +h6:hover > a.headerlink, +dt:hover > a.headerlink { + visibility: visible; +} + +div.body p.caption { + text-align: inherit; +} + +div.body td { + text-align: left; +} + +.field-list ul { + padding-left: 1em; +} + +.first { + margin-top: 0 !important; +} + +p.rubric { + margin-top: 30px; + font-weight: bold; +} + +img.align-left, .figure.align-left, object.align-left { + clear: left; + float: left; + margin-right: 1em; +} + +img.align-right, .figure.align-right, object.align-right { + clear: right; + float: right; + margin-left: 1em; +} + +img.align-center, .figure.align-center, object.align-center { + display: block; + margin-left: auto; + margin-right: auto; +} + +.align-left { + text-align: left; +} + +.align-center { + text-align: center; +} + +.align-right { + text-align: right; +} + +/* -- sidebars -------------------------------------------------------------- */ + +div.sidebar { + margin: 0 0 0.5em 1em; + border: 1px solid #ddb; + padding: 7px 7px 0 7px; + background-color: #ffe; + width: 40%; + float: right; +} + +p.sidebar-title { + font-weight: bold; +} + +/* -- topics ---------------------------------------------------------------- */ + +div.topic { + border: 1px solid #ccc; + padding: 7px 7px 0 7px; + margin: 10px 0 10px 0; +} + +p.topic-title { + font-size: 1.1em; + font-weight: bold; + margin-top: 10px; +} + +/* -- admonitions ----------------------------------------------------------- */ + +div.admonition { + margin-top: 10px; + margin-bottom: 10px; + padding: 7px; +} + +div.admonition dt { + font-weight: bold; +} + +div.admonition dl { + margin-bottom: 0; +} + +p.admonition-title { + margin: 0px 10px 5px 0px; + font-weight: bold; +} + +div.body p.centered { + text-align: center; + margin-top: 25px; +} + +/* -- tables ---------------------------------------------------------------- */ + +table.docutils { + border: 0; + border-collapse: collapse; +} + +table.docutils td, table.docutils th { + padding: 1px 8px 1px 5px; + border-top: 0; + border-left: 0; + border-right: 0; + border-bottom: 1px solid #aaa; +} + +table.field-list td, table.field-list th { + border: 0 !important; +} + +table.footnote td, table.footnote th { + border: 0 !important; +} + +th { + text-align: left; + padding-right: 5px; +} + +table.citation { + border-left: solid 1px gray; + margin-left: 1px; +} + +table.citation td { + border-bottom: none; +} + +/* -- other body styles ----------------------------------------------------- */ + +ol.arabic { + list-style: decimal; +} + +ol.loweralpha { + list-style: lower-alpha; +} + +ol.upperalpha { + list-style: upper-alpha; +} + +ol.lowerroman { + list-style: lower-roman; +} + +ol.upperroman { + list-style: upper-roman; +} + +dl { + margin-bottom: 15px; +} + +dd p { + margin-top: 0px; +} + +dd ul, dd table { + margin-bottom: 10px; +} + +dd { + margin-top: 3px; + margin-bottom: 10px; + margin-left: 30px; +} + +dt:target, .highlighted { + background-color: #fbe54e; +} + +dl.glossary dt { + font-weight: bold; + font-size: 1.1em; +} + +.field-list ul { + margin: 0; + padding-left: 1em; +} + +.field-list p { + margin: 0; +} + +.refcount { + color: #060; +} + +.optional { + font-size: 1.3em; +} + +.versionmodified { + font-style: italic; +} + +.system-message { + background-color: #fda; + padding: 5px; + border: 3px solid red; +} + +.footnote:target { + background-color: #ffa; +} + +.line-block { + display: block; + margin-top: 1em; + margin-bottom: 1em; +} + +.line-block .line-block { + margin-top: 0; + margin-bottom: 0; + margin-left: 1.5em; +} + +.guilabel, .menuselection { + font-family: sans-serif; +} + +.accelerator { + text-decoration: underline; +} + +.classifier { + font-style: oblique; +} + +abbr, acronym { + border-bottom: dotted 1px; + cursor: help; +} + +/* -- code displays --------------------------------------------------------- */ + +pre { + overflow: auto; + overflow-y: hidden; /* fixes display issues on Chrome browsers */ +} + +td.linenos pre { + padding: 5px 0px; + border: 0; + background-color: transparent; + color: #aaa; +} + +table.highlighttable { + margin-left: 0.5em; +} + +table.highlighttable td { + padding: 0 0.5em 0 0.5em; +} + +tt.descname { + background-color: transparent; + font-weight: bold; + font-size: 1.2em; +} + +tt.descclassname { + background-color: transparent; +} + +tt.xref, a tt { + background-color: transparent; + font-weight: bold; +} + +h1 tt, h2 tt, h3 tt, h4 tt, h5 tt, h6 tt { + background-color: transparent; +} + +.viewcode-link { + float: right; +} + +.viewcode-back { + float: right; + font-family: sans-serif; +} + +div.viewcode-block:target { + margin: -1px -10px; + padding: 0 10px; +} + +/* -- math display ---------------------------------------------------------- */ + +img.math { + vertical-align: middle; +} + +div.body div.math p { + text-align: center; +} + +span.eqno { + float: right; +} + +/* -- printout stylesheet --------------------------------------------------- */ + +@media print { + div.document, + div.documentwrapper, + div.bodywrapper { + margin: 0 !important; + width: 100%; + } + + div.sphinxsidebar, + div.related, + div.footer, + #top-link { + display: none; + } +} \ No newline at end of file diff --git a/vsphere/6.0/_static/comment-bright.png b/vsphere/6.0/_static/comment-bright.png new file mode 100644 index 00000000..551517b8 Binary files /dev/null and b/vsphere/6.0/_static/comment-bright.png differ diff --git a/vsphere/6.0/_static/comment-close.png b/vsphere/6.0/_static/comment-close.png new file mode 100644 index 00000000..09b54be4 Binary files /dev/null and b/vsphere/6.0/_static/comment-close.png differ diff --git a/vsphere/6.0/_static/comment.png b/vsphere/6.0/_static/comment.png new file mode 100644 index 00000000..92feb52b Binary files /dev/null and b/vsphere/6.0/_static/comment.png differ diff --git a/vsphere/6.0/_static/default.css b/vsphere/6.0/_static/default.css new file mode 100644 index 00000000..63531540 --- /dev/null +++ b/vsphere/6.0/_static/default.css @@ -0,0 +1,256 @@ +/* + * default.css_t + * ~~~~~~~~~~~~~ + * + * Sphinx stylesheet -- default theme. + * + * :copyright: Copyright 2007-2011 by the Sphinx team, see AUTHORS. + * :license: BSD, see LICENSE for details. + * + */ + +@import url("basic.css"); + +/* -- page layout ----------------------------------------------------------- */ + +body { + font-family: 'Lucida Grande', Arial, sans-serif; + font-size: 100%; + background-color: white; + color: #000; + margin: 0; + padding: 0; +} + +div.document { + background-color: white; +} + +div.documentwrapper { + float: left; + width: 100%; +} + +div.bodywrapper { + margin: 0 0 0 230px; +} + +div.body { + background-color: white; + color: #222222; + padding: 0 20px 30px 20px; +} + +div.footer { + color: #555555; + width: 100%; + padding: 9px 0 9px 0; + text-align: center; + font-size: 75%; +} + +div.footer a { + color: #555555; + text-decoration: underline; +} + +div.related { + background-color: white; + line-height: 30px; + color: #666666; +} + +div.related a { + color: #444444; +} + +div.sphinxsidebar { +} + +div.sphinxsidebar h3 { + font-family: 'Lucida Grande', Arial, sans-serif; + color: #444444; + font-size: 1.4em; + font-weight: normal; + margin: 0; + padding: 0; +} + +div.sphinxsidebar h3 a { + color: #444444; +} + +div.sphinxsidebar h4 { + font-family: 'Lucida Grande', Arial, sans-serif; + color: #444444; + font-size: 1.3em; + font-weight: normal; + margin: 5px 0 0 0; + padding: 0; +} + +div.sphinxsidebar p { + color: #444444; +} + +div.sphinxsidebar p.topless { + margin: 5px 10px 10px 10px; +} + +div.sphinxsidebar ul { + margin: 10px; + padding: 0; + color: #444444; +} + +div.sphinxsidebar a { + color: #444444; +} + +div.sphinxsidebar input { + border: 1px solid #444444; + font-family: sans-serif; + font-size: 1em; +} + + + +/* -- hyperlink styles ------------------------------------------------------ */ + +a { + color: #0090c0; + text-decoration: none; +} + +a:visited { + color: #00608f; + text-decoration: none; +} + +a:hover { + text-decoration: underline; +} + + + +/* -- body styles ----------------------------------------------------------- */ + +div.body h1, +div.body h2, +div.body h3, +div.body h4, +div.body h5, +div.body h6 { + font-family: 'Lucida Grande', Arial, sans-serif; + background-color: white; + font-weight: normal; + color: #1a1a1a; + border-bottom: 1px solid #ccc; + margin: 20px -20px 10px -20px; + padding: 3px 0 3px 10px; +} + +div.body h1 { margin-top: 0; font-size: 200%; } +div.body h2 { font-size: 160%; } +div.body h3 { font-size: 140%; } +div.body h4 { font-size: 120%; } +div.body h5 { font-size: 110%; } +div.body h6 { font-size: 100%; } + +a.headerlink { + color: #aaaaaa; + font-size: 0.8em; + padding: 0 4px 0 4px; + text-decoration: none; +} + +a.headerlink:hover { + background-color: #aaaaaa; + color: white; +} + +div.body p, div.body dd, div.body li { + text-align: justify; + line-height: 130%; +} + +div.admonition p.admonition-title + p { + display: inline; +} + +div.admonition p { + margin-bottom: 5px; +} + +div.admonition pre { + margin-bottom: 5px; +} + +div.admonition ul, div.admonition ol { + margin-bottom: 5px; +} + +div.note { + background-color: #eee; + border: 1px solid #ccc; +} + +div.seealso { + background-color: #ffc; + border: 1px solid #ff6; +} + +div.topic { + background-color: #eee; +} + +div.warning { + background-color: #ffe4e4; + border: 1px solid #f66; +} + +p.admonition-title { + display: inline; +} + +p.admonition-title:after { + content: ":"; +} + +pre { + padding: 5px; + background-color: #eeffcc; + color: #333333; + line-height: 120%; + border: 1px solid #ac9; + border-left: none; + border-right: none; +} + +tt { + background-color: #ecf0f3; + padding: 0 1px 0 1px; + font-size: 0.95em; +} + +th { + background-color: #ede; +} + +.warning tt { + background: #efc2c2; +} + +.note tt { + background: #d6d6d6; +} + +.viewcode-back { + font-family: 'Lucida Grande', Arial, sans-serif; +} + +div.viewcode-block:target { + background-color: #f4debf; + border-top: 1px solid #ac9; + border-bottom: 1px solid #ac9; +} \ No newline at end of file diff --git a/vsphere/6.0/_static/doctools.js b/vsphere/6.0/_static/doctools.js new file mode 100644 index 00000000..d4619fdf --- /dev/null +++ b/vsphere/6.0/_static/doctools.js @@ -0,0 +1,247 @@ +/* + * doctools.js + * ~~~~~~~~~~~ + * + * Sphinx JavaScript utilities for all documentation. + * + * :copyright: Copyright 2007-2011 by the Sphinx team, see AUTHORS. + * :license: BSD, see LICENSE for details. + * + */ + +/** + * select a different prefix for underscore + */ +$u = _.noConflict(); + +/** + * make the code below compatible with browsers without + * an installed firebug like debugger +if (!window.console || !console.firebug) { + var names = ["log", "debug", "info", "warn", "error", "assert", "dir", + "dirxml", "group", "groupEnd", "time", "timeEnd", "count", "trace", + "profile", "profileEnd"]; + window.console = {}; + for (var i = 0; i < names.length; ++i) + window.console[names[i]] = function() {}; +} + */ + +/** + * small helper function to urldecode strings + */ +jQuery.urldecode = function(x) { + return decodeURIComponent(x).replace(/\+/g, ' '); +} + +/** + * small helper function to urlencode strings + */ +jQuery.urlencode = encodeURIComponent; + +/** + * This function returns the parsed url parameters of the + * current request. Multiple values per key are supported, + * it will always return arrays of strings for the value parts. + */ +jQuery.getQueryParameters = function(s) { + if (typeof s == 'undefined') + s = document.location.search; + var parts = s.substr(s.indexOf('?') + 1).split('&'); + var result = {}; + for (var i = 0; i < parts.length; i++) { + var tmp = parts[i].split('=', 2); + var key = jQuery.urldecode(tmp[0]); + var value = jQuery.urldecode(tmp[1]); + if (key in result) + result[key].push(value); + else + result[key] = [value]; + } + return result; +}; + +/** + * small function to check if an array contains + * a given item. + */ +jQuery.contains = function(arr, item) { + for (var i = 0; i < arr.length; i++) { + if (arr[i] == item) + return true; + } + return false; +}; + +/** + * highlight a given string on a jquery object by wrapping it in + * span elements with the given class name. + */ +jQuery.fn.highlightText = function(text, className) { + function highlight(node) { + if (node.nodeType == 3) { + var val = node.nodeValue; + var pos = val.toLowerCase().indexOf(text); + if (pos >= 0 && !jQuery(node.parentNode).hasClass(className)) { + var span = document.createElement("span"); + span.className = className; + span.appendChild(document.createTextNode(val.substr(pos, text.length))); + node.parentNode.insertBefore(span, node.parentNode.insertBefore( + document.createTextNode(val.substr(pos + text.length)), + node.nextSibling)); + node.nodeValue = val.substr(0, pos); + } + } + else if (!jQuery(node).is("button, select, textarea")) { + jQuery.each(node.childNodes, function() { + highlight(this); + }); + } + } + return this.each(function() { + highlight(this); + }); +}; + +/** + * Small JavaScript module for the documentation. + */ +var Documentation = { + + init : function() { + this.fixFirefoxAnchorBug(); + this.highlightSearchWords(); + this.initIndexTable(); + }, + + /** + * i18n support + */ + TRANSLATIONS : {}, + PLURAL_EXPR : function(n) { return n == 1 ? 0 : 1; }, + LOCALE : 'unknown', + + // gettext and ngettext don't access this so that the functions + // can safely bound to a different name (_ = Documentation.gettext) + gettext : function(string) { + var translated = Documentation.TRANSLATIONS[string]; + if (typeof translated == 'undefined') + return string; + return (typeof translated == 'string') ? translated : translated[0]; + }, + + ngettext : function(singular, plural, n) { + var translated = Documentation.TRANSLATIONS[singular]; + if (typeof translated == 'undefined') + return (n == 1) ? singular : plural; + return translated[Documentation.PLURALEXPR(n)]; + }, + + addTranslations : function(catalog) { + for (var key in catalog.messages) + this.TRANSLATIONS[key] = catalog.messages[key]; + this.PLURAL_EXPR = new Function('n', 'return +(' + catalog.plural_expr + ')'); + this.LOCALE = catalog.locale; + }, + + /** + * add context elements like header anchor links + */ + addContextElements : function() { + $('div[id] > :header:first').each(function() { + $('\u00B6'). + attr('href', '#' + this.id). + attr('title', _('Permalink to this headline')). + appendTo(this); + }); + $('dt[id]').each(function() { + $('\u00B6'). + attr('href', '#' + this.id). + attr('title', _('Permalink to this definition')). + appendTo(this); + }); + }, + + /** + * workaround a firefox stupidity + */ + fixFirefoxAnchorBug : function() { + if (document.location.hash && $.browser.mozilla) + window.setTimeout(function() { + document.location.href += ''; + }, 10); + }, + + /** + * highlight the search words provided in the url in the text + */ + highlightSearchWords : function() { + var params = $.getQueryParameters(); + var terms = (params.highlight) ? params.highlight[0].split(/\s+/) : []; + if (terms.length) { + var body = $('div.body'); + window.setTimeout(function() { + $.each(terms, function() { + body.highlightText(this.toLowerCase(), 'highlighted'); + }); + }, 10); + $('') + .appendTo($('#searchbox')); + } + }, + + /** + * init the domain index toggle buttons + */ + initIndexTable : function() { + var togglers = $('img.toggler').click(function() { + var src = $(this).attr('src'); + var idnum = $(this).attr('id').substr(7); + $('tr.cg-' + idnum).toggle(); + if (src.substr(-9) == 'minus.png') + $(this).attr('src', src.substr(0, src.length-9) + 'plus.png'); + else + $(this).attr('src', src.substr(0, src.length-8) + 'minus.png'); + }).css('display', ''); + if (DOCUMENTATION_OPTIONS.COLLAPSE_INDEX) { + togglers.click(); + } + }, + + /** + * helper function to hide the search marks again + */ + hideSearchWords : function() { + $('#searchbox .highlight-link').fadeOut(300); + $('span.highlighted').removeClass('highlighted'); + }, + + /** + * make the url absolute + */ + makeURL : function(relativeURL) { + return DOCUMENTATION_OPTIONS.URL_ROOT + '/' + relativeURL; + }, + + /** + * get the current relative url + */ + getCurrentURL : function() { + var path = document.location.pathname; + var parts = path.split(/\//); + $.each(DOCUMENTATION_OPTIONS.URL_ROOT.split(/\//), function() { + if (this == '..') + parts.pop(); + }); + var url = parts.join('/'); + return path.substring(url.lastIndexOf('/') + 1, path.length - 1); + } +}; + +// quick alias for translations +_ = Documentation.gettext; + +$(document).ready(function() { + Documentation.init(); +}); diff --git a/vsphere/6.0/_static/down-pressed.png b/vsphere/6.0/_static/down-pressed.png new file mode 100644 index 00000000..6f7ad782 Binary files /dev/null and b/vsphere/6.0/_static/down-pressed.png differ diff --git a/vsphere/6.0/_static/down.png b/vsphere/6.0/_static/down.png new file mode 100644 index 00000000..3003a887 Binary files /dev/null and b/vsphere/6.0/_static/down.png differ diff --git a/vsphere/6.0/_static/file.png b/vsphere/6.0/_static/file.png new file mode 100644 index 00000000..d18082e3 Binary files /dev/null and b/vsphere/6.0/_static/file.png differ diff --git a/vsphere/6.0/_static/jquery.js b/vsphere/6.0/_static/jquery.js new file mode 100644 index 00000000..7c243080 --- /dev/null +++ b/vsphere/6.0/_static/jquery.js @@ -0,0 +1,154 @@ +/*! + * jQuery JavaScript Library v1.4.2 + * http://jquery.com/ + * + * Copyright 2010, John Resig + * Dual licensed under the MIT or GPL Version 2 licenses. + * http://jquery.org/license + * + * Includes Sizzle.js + * http://sizzlejs.com/ + * Copyright 2010, The Dojo Foundation + * Released under the MIT, BSD, and GPL Licenses. + * + * Date: Sat Feb 13 22:33:48 2010 -0500 + */ +(function(A,w){function ma(){if(!c.isReady){try{s.documentElement.doScroll("left")}catch(a){setTimeout(ma,1);return}c.ready()}}function Qa(a,b){b.src?c.ajax({url:b.src,async:false,dataType:"script"}):c.globalEval(b.text||b.textContent||b.innerHTML||"");b.parentNode&&b.parentNode.removeChild(b)}function X(a,b,d,f,e,j){var i=a.length;if(typeof b==="object"){for(var o in b)X(a,o,b[o],f,e,d);return a}if(d!==w){f=!j&&f&&c.isFunction(d);for(o=0;o)[^>]*$|^#([\w-]+)$/,Ua=/^.[^:#\[\.,]*$/,Va=/\S/, +Wa=/^(\s|\u00A0)+|(\s|\u00A0)+$/g,Xa=/^<(\w+)\s*\/?>(?:<\/\1>)?$/,P=navigator.userAgent,xa=false,Q=[],L,$=Object.prototype.toString,aa=Object.prototype.hasOwnProperty,ba=Array.prototype.push,R=Array.prototype.slice,ya=Array.prototype.indexOf;c.fn=c.prototype={init:function(a,b){var d,f;if(!a)return this;if(a.nodeType){this.context=this[0]=a;this.length=1;return this}if(a==="body"&&!b){this.context=s;this[0]=s.body;this.selector="body";this.length=1;return this}if(typeof a==="string")if((d=Ta.exec(a))&& +(d[1]||!b))if(d[1]){f=b?b.ownerDocument||b:s;if(a=Xa.exec(a))if(c.isPlainObject(b)){a=[s.createElement(a[1])];c.fn.attr.call(a,b,true)}else a=[f.createElement(a[1])];else{a=sa([d[1]],[f]);a=(a.cacheable?a.fragment.cloneNode(true):a.fragment).childNodes}return c.merge(this,a)}else{if(b=s.getElementById(d[2])){if(b.id!==d[2])return T.find(a);this.length=1;this[0]=b}this.context=s;this.selector=a;return this}else if(!b&&/^\w+$/.test(a)){this.selector=a;this.context=s;a=s.getElementsByTagName(a);return c.merge(this, +a)}else return!b||b.jquery?(b||T).find(a):c(b).find(a);else if(c.isFunction(a))return T.ready(a);if(a.selector!==w){this.selector=a.selector;this.context=a.context}return c.makeArray(a,this)},selector:"",jquery:"1.4.2",length:0,size:function(){return this.length},toArray:function(){return R.call(this,0)},get:function(a){return a==null?this.toArray():a<0?this.slice(a)[0]:this[a]},pushStack:function(a,b,d){var f=c();c.isArray(a)?ba.apply(f,a):c.merge(f,a);f.prevObject=this;f.context=this.context;if(b=== +"find")f.selector=this.selector+(this.selector?" ":"")+d;else if(b)f.selector=this.selector+"."+b+"("+d+")";return f},each:function(a,b){return c.each(this,a,b)},ready:function(a){c.bindReady();if(c.isReady)a.call(s,c);else Q&&Q.push(a);return this},eq:function(a){return a===-1?this.slice(a):this.slice(a,+a+1)},first:function(){return this.eq(0)},last:function(){return this.eq(-1)},slice:function(){return this.pushStack(R.apply(this,arguments),"slice",R.call(arguments).join(","))},map:function(a){return this.pushStack(c.map(this, +function(b,d){return a.call(b,d,b)}))},end:function(){return this.prevObject||c(null)},push:ba,sort:[].sort,splice:[].splice};c.fn.init.prototype=c.fn;c.extend=c.fn.extend=function(){var a=arguments[0]||{},b=1,d=arguments.length,f=false,e,j,i,o;if(typeof a==="boolean"){f=a;a=arguments[1]||{};b=2}if(typeof a!=="object"&&!c.isFunction(a))a={};if(d===b){a=this;--b}for(;b
a"; +var e=d.getElementsByTagName("*"),j=d.getElementsByTagName("a")[0];if(!(!e||!e.length||!j)){c.support={leadingWhitespace:d.firstChild.nodeType===3,tbody:!d.getElementsByTagName("tbody").length,htmlSerialize:!!d.getElementsByTagName("link").length,style:/red/.test(j.getAttribute("style")),hrefNormalized:j.getAttribute("href")==="/a",opacity:/^0.55$/.test(j.style.opacity),cssFloat:!!j.style.cssFloat,checkOn:d.getElementsByTagName("input")[0].value==="on",optSelected:s.createElement("select").appendChild(s.createElement("option")).selected, +parentNode:d.removeChild(d.appendChild(s.createElement("div"))).parentNode===null,deleteExpando:true,checkClone:false,scriptEval:false,noCloneEvent:true,boxModel:null};b.type="text/javascript";try{b.appendChild(s.createTextNode("window."+f+"=1;"))}catch(i){}a.insertBefore(b,a.firstChild);if(A[f]){c.support.scriptEval=true;delete A[f]}try{delete b.test}catch(o){c.support.deleteExpando=false}a.removeChild(b);if(d.attachEvent&&d.fireEvent){d.attachEvent("onclick",function k(){c.support.noCloneEvent= +false;d.detachEvent("onclick",k)});d.cloneNode(true).fireEvent("onclick")}d=s.createElement("div");d.innerHTML="";a=s.createDocumentFragment();a.appendChild(d.firstChild);c.support.checkClone=a.cloneNode(true).cloneNode(true).lastChild.checked;c(function(){var k=s.createElement("div");k.style.width=k.style.paddingLeft="1px";s.body.appendChild(k);c.boxModel=c.support.boxModel=k.offsetWidth===2;s.body.removeChild(k).style.display="none"});a=function(k){var n= +s.createElement("div");k="on"+k;var r=k in n;if(!r){n.setAttribute(k,"return;");r=typeof n[k]==="function"}return r};c.support.submitBubbles=a("submit");c.support.changeBubbles=a("change");a=b=d=e=j=null}})();c.props={"for":"htmlFor","class":"className",readonly:"readOnly",maxlength:"maxLength",cellspacing:"cellSpacing",rowspan:"rowSpan",colspan:"colSpan",tabindex:"tabIndex",usemap:"useMap",frameborder:"frameBorder"};var G="jQuery"+J(),Ya=0,za={};c.extend({cache:{},expando:G,noData:{embed:true,object:true, +applet:true},data:function(a,b,d){if(!(a.nodeName&&c.noData[a.nodeName.toLowerCase()])){a=a==A?za:a;var f=a[G],e=c.cache;if(!f&&typeof b==="string"&&d===w)return null;f||(f=++Ya);if(typeof b==="object"){a[G]=f;e[f]=c.extend(true,{},b)}else if(!e[f]){a[G]=f;e[f]={}}a=e[f];if(d!==w)a[b]=d;return typeof b==="string"?a[b]:a}},removeData:function(a,b){if(!(a.nodeName&&c.noData[a.nodeName.toLowerCase()])){a=a==A?za:a;var d=a[G],f=c.cache,e=f[d];if(b){if(e){delete e[b];c.isEmptyObject(e)&&c.removeData(a)}}else{if(c.support.deleteExpando)delete a[c.expando]; +else a.removeAttribute&&a.removeAttribute(c.expando);delete f[d]}}}});c.fn.extend({data:function(a,b){if(typeof a==="undefined"&&this.length)return c.data(this[0]);else if(typeof a==="object")return this.each(function(){c.data(this,a)});var d=a.split(".");d[1]=d[1]?"."+d[1]:"";if(b===w){var f=this.triggerHandler("getData"+d[1]+"!",[d[0]]);if(f===w&&this.length)f=c.data(this[0],a);return f===w&&d[1]?this.data(d[0]):f}else return this.trigger("setData"+d[1]+"!",[d[0],b]).each(function(){c.data(this, +a,b)})},removeData:function(a){return this.each(function(){c.removeData(this,a)})}});c.extend({queue:function(a,b,d){if(a){b=(b||"fx")+"queue";var f=c.data(a,b);if(!d)return f||[];if(!f||c.isArray(d))f=c.data(a,b,c.makeArray(d));else f.push(d);return f}},dequeue:function(a,b){b=b||"fx";var d=c.queue(a,b),f=d.shift();if(f==="inprogress")f=d.shift();if(f){b==="fx"&&d.unshift("inprogress");f.call(a,function(){c.dequeue(a,b)})}}});c.fn.extend({queue:function(a,b){if(typeof a!=="string"){b=a;a="fx"}if(b=== +w)return c.queue(this[0],a);return this.each(function(){var d=c.queue(this,a,b);a==="fx"&&d[0]!=="inprogress"&&c.dequeue(this,a)})},dequeue:function(a){return this.each(function(){c.dequeue(this,a)})},delay:function(a,b){a=c.fx?c.fx.speeds[a]||a:a;b=b||"fx";return this.queue(b,function(){var d=this;setTimeout(function(){c.dequeue(d,b)},a)})},clearQueue:function(a){return this.queue(a||"fx",[])}});var Aa=/[\n\t]/g,ca=/\s+/,Za=/\r/g,$a=/href|src|style/,ab=/(button|input)/i,bb=/(button|input|object|select|textarea)/i, +cb=/^(a|area)$/i,Ba=/radio|checkbox/;c.fn.extend({attr:function(a,b){return X(this,a,b,true,c.attr)},removeAttr:function(a){return this.each(function(){c.attr(this,a,"");this.nodeType===1&&this.removeAttribute(a)})},addClass:function(a){if(c.isFunction(a))return this.each(function(n){var r=c(this);r.addClass(a.call(this,n,r.attr("class")))});if(a&&typeof a==="string")for(var b=(a||"").split(ca),d=0,f=this.length;d-1)return true;return false},val:function(a){if(a===w){var b=this[0];if(b){if(c.nodeName(b,"option"))return(b.attributes.value||{}).specified?b.value:b.text;if(c.nodeName(b,"select")){var d=b.selectedIndex,f=[],e=b.options;b=b.type==="select-one";if(d<0)return null;var j=b?d:0;for(d=b?d+1:e.length;j=0;else if(c.nodeName(this,"select")){var u=c.makeArray(r);c("option",this).each(function(){this.selected= +c.inArray(c(this).val(),u)>=0});if(!u.length)this.selectedIndex=-1}else this.value=r}})}});c.extend({attrFn:{val:true,css:true,html:true,text:true,data:true,width:true,height:true,offset:true},attr:function(a,b,d,f){if(!a||a.nodeType===3||a.nodeType===8)return w;if(f&&b in c.attrFn)return c(a)[b](d);f=a.nodeType!==1||!c.isXMLDoc(a);var e=d!==w;b=f&&c.props[b]||b;if(a.nodeType===1){var j=$a.test(b);if(b in a&&f&&!j){if(e){b==="type"&&ab.test(a.nodeName)&&a.parentNode&&c.error("type property can't be changed"); +a[b]=d}if(c.nodeName(a,"form")&&a.getAttributeNode(b))return a.getAttributeNode(b).nodeValue;if(b==="tabIndex")return(b=a.getAttributeNode("tabIndex"))&&b.specified?b.value:bb.test(a.nodeName)||cb.test(a.nodeName)&&a.href?0:w;return a[b]}if(!c.support.style&&f&&b==="style"){if(e)a.style.cssText=""+d;return a.style.cssText}e&&a.setAttribute(b,""+d);a=!c.support.hrefNormalized&&f&&j?a.getAttribute(b,2):a.getAttribute(b);return a===null?w:a}return c.style(a,b,d)}});var O=/\.(.*)$/,db=function(a){return a.replace(/[^\w\s\.\|`]/g, +function(b){return"\\"+b})};c.event={add:function(a,b,d,f){if(!(a.nodeType===3||a.nodeType===8)){if(a.setInterval&&a!==A&&!a.frameElement)a=A;var e,j;if(d.handler){e=d;d=e.handler}if(!d.guid)d.guid=c.guid++;if(j=c.data(a)){var i=j.events=j.events||{},o=j.handle;if(!o)j.handle=o=function(){return typeof c!=="undefined"&&!c.event.triggered?c.event.handle.apply(o.elem,arguments):w};o.elem=a;b=b.split(" ");for(var k,n=0,r;k=b[n++];){j=e?c.extend({},e):{handler:d,data:f};if(k.indexOf(".")>-1){r=k.split("."); +k=r.shift();j.namespace=r.slice(0).sort().join(".")}else{r=[];j.namespace=""}j.type=k;j.guid=d.guid;var u=i[k],z=c.event.special[k]||{};if(!u){u=i[k]=[];if(!z.setup||z.setup.call(a,f,r,o)===false)if(a.addEventListener)a.addEventListener(k,o,false);else a.attachEvent&&a.attachEvent("on"+k,o)}if(z.add){z.add.call(a,j);if(!j.handler.guid)j.handler.guid=d.guid}u.push(j);c.event.global[k]=true}a=null}}},global:{},remove:function(a,b,d,f){if(!(a.nodeType===3||a.nodeType===8)){var e,j=0,i,o,k,n,r,u,z=c.data(a), +C=z&&z.events;if(z&&C){if(b&&b.type){d=b.handler;b=b.type}if(!b||typeof b==="string"&&b.charAt(0)==="."){b=b||"";for(e in C)c.event.remove(a,e+b)}else{for(b=b.split(" ");e=b[j++];){n=e;i=e.indexOf(".")<0;o=[];if(!i){o=e.split(".");e=o.shift();k=new RegExp("(^|\\.)"+c.map(o.slice(0).sort(),db).join("\\.(?:.*\\.)?")+"(\\.|$)")}if(r=C[e])if(d){n=c.event.special[e]||{};for(B=f||0;B=0){a.type= +e=e.slice(0,-1);a.exclusive=true}if(!d){a.stopPropagation();c.event.global[e]&&c.each(c.cache,function(){this.events&&this.events[e]&&c.event.trigger(a,b,this.handle.elem)})}if(!d||d.nodeType===3||d.nodeType===8)return w;a.result=w;a.target=d;b=c.makeArray(b);b.unshift(a)}a.currentTarget=d;(f=c.data(d,"handle"))&&f.apply(d,b);f=d.parentNode||d.ownerDocument;try{if(!(d&&d.nodeName&&c.noData[d.nodeName.toLowerCase()]))if(d["on"+e]&&d["on"+e].apply(d,b)===false)a.result=false}catch(j){}if(!a.isPropagationStopped()&& +f)c.event.trigger(a,b,f,true);else if(!a.isDefaultPrevented()){f=a.target;var i,o=c.nodeName(f,"a")&&e==="click",k=c.event.special[e]||{};if((!k._default||k._default.call(d,a)===false)&&!o&&!(f&&f.nodeName&&c.noData[f.nodeName.toLowerCase()])){try{if(f[e]){if(i=f["on"+e])f["on"+e]=null;c.event.triggered=true;f[e]()}}catch(n){}if(i)f["on"+e]=i;c.event.triggered=false}}},handle:function(a){var b,d,f,e;a=arguments[0]=c.event.fix(a||A.event);a.currentTarget=this;b=a.type.indexOf(".")<0&&!a.exclusive; +if(!b){d=a.type.split(".");a.type=d.shift();f=new RegExp("(^|\\.)"+d.slice(0).sort().join("\\.(?:.*\\.)?")+"(\\.|$)")}e=c.data(this,"events");d=e[a.type];if(e&&d){d=d.slice(0);e=0;for(var j=d.length;e-1?c.map(a.options,function(f){return f.selected}).join("-"):"";else if(a.nodeName.toLowerCase()==="select")d=a.selectedIndex;return d},fa=function(a,b){var d=a.target,f,e;if(!(!da.test(d.nodeName)||d.readOnly)){f=c.data(d,"_change_data");e=Fa(d);if(a.type!=="focusout"||d.type!=="radio")c.data(d,"_change_data", +e);if(!(f===w||e===f))if(f!=null||e){a.type="change";return c.event.trigger(a,b,d)}}};c.event.special.change={filters:{focusout:fa,click:function(a){var b=a.target,d=b.type;if(d==="radio"||d==="checkbox"||b.nodeName.toLowerCase()==="select")return fa.call(this,a)},keydown:function(a){var b=a.target,d=b.type;if(a.keyCode===13&&b.nodeName.toLowerCase()!=="textarea"||a.keyCode===32&&(d==="checkbox"||d==="radio")||d==="select-multiple")return fa.call(this,a)},beforeactivate:function(a){a=a.target;c.data(a, +"_change_data",Fa(a))}},setup:function(){if(this.type==="file")return false;for(var a in ea)c.event.add(this,a+".specialChange",ea[a]);return da.test(this.nodeName)},teardown:function(){c.event.remove(this,".specialChange");return da.test(this.nodeName)}};ea=c.event.special.change.filters}s.addEventListener&&c.each({focus:"focusin",blur:"focusout"},function(a,b){function d(f){f=c.event.fix(f);f.type=b;return c.event.handle.call(this,f)}c.event.special[b]={setup:function(){this.addEventListener(a, +d,true)},teardown:function(){this.removeEventListener(a,d,true)}}});c.each(["bind","one"],function(a,b){c.fn[b]=function(d,f,e){if(typeof d==="object"){for(var j in d)this[b](j,f,d[j],e);return this}if(c.isFunction(f)){e=f;f=w}var i=b==="one"?c.proxy(e,function(k){c(this).unbind(k,i);return e.apply(this,arguments)}):e;if(d==="unload"&&b!=="one")this.one(d,f,e);else{j=0;for(var o=this.length;j0){y=t;break}}t=t[g]}m[q]=y}}}var f=/((?:\((?:\([^()]+\)|[^()]+)+\)|\[(?:\[[^[\]]*\]|['"][^'"]*['"]|[^[\]'"]+)+\]|\\.|[^ >+~,(\[\\]+)+|[>+~])(\s*,\s*)?((?:.|\r|\n)*)/g, +e=0,j=Object.prototype.toString,i=false,o=true;[0,0].sort(function(){o=false;return 0});var k=function(g,h,l,m){l=l||[];var q=h=h||s;if(h.nodeType!==1&&h.nodeType!==9)return[];if(!g||typeof g!=="string")return l;for(var p=[],v,t,y,S,H=true,M=x(h),I=g;(f.exec(""),v=f.exec(I))!==null;){I=v[3];p.push(v[1]);if(v[2]){S=v[3];break}}if(p.length>1&&r.exec(g))if(p.length===2&&n.relative[p[0]])t=ga(p[0]+p[1],h);else for(t=n.relative[p[0]]?[h]:k(p.shift(),h);p.length;){g=p.shift();if(n.relative[g])g+=p.shift(); +t=ga(g,t)}else{if(!m&&p.length>1&&h.nodeType===9&&!M&&n.match.ID.test(p[0])&&!n.match.ID.test(p[p.length-1])){v=k.find(p.shift(),h,M);h=v.expr?k.filter(v.expr,v.set)[0]:v.set[0]}if(h){v=m?{expr:p.pop(),set:z(m)}:k.find(p.pop(),p.length===1&&(p[0]==="~"||p[0]==="+")&&h.parentNode?h.parentNode:h,M);t=v.expr?k.filter(v.expr,v.set):v.set;if(p.length>0)y=z(t);else H=false;for(;p.length;){var D=p.pop();v=D;if(n.relative[D])v=p.pop();else D="";if(v==null)v=h;n.relative[D](y,v,M)}}else y=[]}y||(y=t);y||k.error(D|| +g);if(j.call(y)==="[object Array]")if(H)if(h&&h.nodeType===1)for(g=0;y[g]!=null;g++){if(y[g]&&(y[g]===true||y[g].nodeType===1&&E(h,y[g])))l.push(t[g])}else for(g=0;y[g]!=null;g++)y[g]&&y[g].nodeType===1&&l.push(t[g]);else l.push.apply(l,y);else z(y,l);if(S){k(S,q,l,m);k.uniqueSort(l)}return l};k.uniqueSort=function(g){if(B){i=o;g.sort(B);if(i)for(var h=1;h":function(g,h){var l=typeof h==="string";if(l&&!/\W/.test(h)){h=h.toLowerCase();for(var m=0,q=g.length;m=0))l||m.push(v);else if(l)h[p]=false;return false},ID:function(g){return g[1].replace(/\\/g,"")},TAG:function(g){return g[1].toLowerCase()}, +CHILD:function(g){if(g[1]==="nth"){var h=/(-?)(\d*)n((?:\+|-)?\d*)/.exec(g[2]==="even"&&"2n"||g[2]==="odd"&&"2n+1"||!/\D/.test(g[2])&&"0n+"+g[2]||g[2]);g[2]=h[1]+(h[2]||1)-0;g[3]=h[3]-0}g[0]=e++;return g},ATTR:function(g,h,l,m,q,p){h=g[1].replace(/\\/g,"");if(!p&&n.attrMap[h])g[1]=n.attrMap[h];if(g[2]==="~=")g[4]=" "+g[4]+" ";return g},PSEUDO:function(g,h,l,m,q){if(g[1]==="not")if((f.exec(g[3])||"").length>1||/^\w/.test(g[3]))g[3]=k(g[3],null,null,h);else{g=k.filter(g[3],h,l,true^q);l||m.push.apply(m, +g);return false}else if(n.match.POS.test(g[0])||n.match.CHILD.test(g[0]))return true;return g},POS:function(g){g.unshift(true);return g}},filters:{enabled:function(g){return g.disabled===false&&g.type!=="hidden"},disabled:function(g){return g.disabled===true},checked:function(g){return g.checked===true},selected:function(g){return g.selected===true},parent:function(g){return!!g.firstChild},empty:function(g){return!g.firstChild},has:function(g,h,l){return!!k(l[3],g).length},header:function(g){return/h\d/i.test(g.nodeName)}, +text:function(g){return"text"===g.type},radio:function(g){return"radio"===g.type},checkbox:function(g){return"checkbox"===g.type},file:function(g){return"file"===g.type},password:function(g){return"password"===g.type},submit:function(g){return"submit"===g.type},image:function(g){return"image"===g.type},reset:function(g){return"reset"===g.type},button:function(g){return"button"===g.type||g.nodeName.toLowerCase()==="button"},input:function(g){return/input|select|textarea|button/i.test(g.nodeName)}}, +setFilters:{first:function(g,h){return h===0},last:function(g,h,l,m){return h===m.length-1},even:function(g,h){return h%2===0},odd:function(g,h){return h%2===1},lt:function(g,h,l){return hl[3]-0},nth:function(g,h,l){return l[3]-0===h},eq:function(g,h,l){return l[3]-0===h}},filter:{PSEUDO:function(g,h,l,m){var q=h[1],p=n.filters[q];if(p)return p(g,l,h,m);else if(q==="contains")return(g.textContent||g.innerText||a([g])||"").indexOf(h[3])>=0;else if(q==="not"){h= +h[3];l=0;for(m=h.length;l=0}},ID:function(g,h){return g.nodeType===1&&g.getAttribute("id")===h},TAG:function(g,h){return h==="*"&&g.nodeType===1||g.nodeName.toLowerCase()===h},CLASS:function(g,h){return(" "+(g.className||g.getAttribute("class"))+" ").indexOf(h)>-1},ATTR:function(g,h){var l=h[1];g=n.attrHandle[l]?n.attrHandle[l](g):g[l]!=null?g[l]:g.getAttribute(l);l=g+"";var m=h[2];h=h[4];return g==null?m==="!=":m=== +"="?l===h:m==="*="?l.indexOf(h)>=0:m==="~="?(" "+l+" ").indexOf(h)>=0:!h?l&&g!==false:m==="!="?l!==h:m==="^="?l.indexOf(h)===0:m==="$="?l.substr(l.length-h.length)===h:m==="|="?l===h||l.substr(0,h.length+1)===h+"-":false},POS:function(g,h,l,m){var q=n.setFilters[h[2]];if(q)return q(g,l,h,m)}}},r=n.match.POS;for(var u in n.match){n.match[u]=new RegExp(n.match[u].source+/(?![^\[]*\])(?![^\(]*\))/.source);n.leftMatch[u]=new RegExp(/(^(?:.|\r|\n)*?)/.source+n.match[u].source.replace(/\\(\d+)/g,function(g, +h){return"\\"+(h-0+1)}))}var z=function(g,h){g=Array.prototype.slice.call(g,0);if(h){h.push.apply(h,g);return h}return g};try{Array.prototype.slice.call(s.documentElement.childNodes,0)}catch(C){z=function(g,h){h=h||[];if(j.call(g)==="[object Array]")Array.prototype.push.apply(h,g);else if(typeof g.length==="number")for(var l=0,m=g.length;l";var l=s.documentElement;l.insertBefore(g,l.firstChild);if(s.getElementById(h)){n.find.ID=function(m,q,p){if(typeof q.getElementById!=="undefined"&&!p)return(q=q.getElementById(m[1]))?q.id===m[1]||typeof q.getAttributeNode!=="undefined"&& +q.getAttributeNode("id").nodeValue===m[1]?[q]:w:[]};n.filter.ID=function(m,q){var p=typeof m.getAttributeNode!=="undefined"&&m.getAttributeNode("id");return m.nodeType===1&&p&&p.nodeValue===q}}l.removeChild(g);l=g=null})();(function(){var g=s.createElement("div");g.appendChild(s.createComment(""));if(g.getElementsByTagName("*").length>0)n.find.TAG=function(h,l){l=l.getElementsByTagName(h[1]);if(h[1]==="*"){h=[];for(var m=0;l[m];m++)l[m].nodeType===1&&h.push(l[m]);l=h}return l};g.innerHTML=""; +if(g.firstChild&&typeof g.firstChild.getAttribute!=="undefined"&&g.firstChild.getAttribute("href")!=="#")n.attrHandle.href=function(h){return h.getAttribute("href",2)};g=null})();s.querySelectorAll&&function(){var g=k,h=s.createElement("div");h.innerHTML="

";if(!(h.querySelectorAll&&h.querySelectorAll(".TEST").length===0)){k=function(m,q,p,v){q=q||s;if(!v&&q.nodeType===9&&!x(q))try{return z(q.querySelectorAll(m),p)}catch(t){}return g(m,q,p,v)};for(var l in g)k[l]=g[l];h=null}}(); +(function(){var g=s.createElement("div");g.innerHTML="
";if(!(!g.getElementsByClassName||g.getElementsByClassName("e").length===0)){g.lastChild.className="e";if(g.getElementsByClassName("e").length!==1){n.order.splice(1,0,"CLASS");n.find.CLASS=function(h,l,m){if(typeof l.getElementsByClassName!=="undefined"&&!m)return l.getElementsByClassName(h[1])};g=null}}})();var E=s.compareDocumentPosition?function(g,h){return!!(g.compareDocumentPosition(h)&16)}: +function(g,h){return g!==h&&(g.contains?g.contains(h):true)},x=function(g){return(g=(g?g.ownerDocument||g:0).documentElement)?g.nodeName!=="HTML":false},ga=function(g,h){var l=[],m="",q;for(h=h.nodeType?[h]:h;q=n.match.PSEUDO.exec(g);){m+=q[0];g=g.replace(n.match.PSEUDO,"")}g=n.relative[g]?g+"*":g;q=0;for(var p=h.length;q=0===d})};c.fn.extend({find:function(a){for(var b=this.pushStack("","find",a),d=0,f=0,e=this.length;f0)for(var j=d;j0},closest:function(a,b){if(c.isArray(a)){var d=[],f=this[0],e,j= +{},i;if(f&&a.length){e=0;for(var o=a.length;e-1:c(f).is(e)){d.push({selector:i,elem:f});delete j[i]}}f=f.parentNode}}return d}var k=c.expr.match.POS.test(a)?c(a,b||this.context):null;return this.map(function(n,r){for(;r&&r.ownerDocument&&r!==b;){if(k?k.index(r)>-1:c(r).is(a))return r;r=r.parentNode}return null})},index:function(a){if(!a||typeof a=== +"string")return c.inArray(this[0],a?c(a):this.parent().children());return c.inArray(a.jquery?a[0]:a,this)},add:function(a,b){a=typeof a==="string"?c(a,b||this.context):c.makeArray(a);b=c.merge(this.get(),a);return this.pushStack(qa(a[0])||qa(b[0])?b:c.unique(b))},andSelf:function(){return this.add(this.prevObject)}});c.each({parent:function(a){return(a=a.parentNode)&&a.nodeType!==11?a:null},parents:function(a){return c.dir(a,"parentNode")},parentsUntil:function(a,b,d){return c.dir(a,"parentNode", +d)},next:function(a){return c.nth(a,2,"nextSibling")},prev:function(a){return c.nth(a,2,"previousSibling")},nextAll:function(a){return c.dir(a,"nextSibling")},prevAll:function(a){return c.dir(a,"previousSibling")},nextUntil:function(a,b,d){return c.dir(a,"nextSibling",d)},prevUntil:function(a,b,d){return c.dir(a,"previousSibling",d)},siblings:function(a){return c.sibling(a.parentNode.firstChild,a)},children:function(a){return c.sibling(a.firstChild)},contents:function(a){return c.nodeName(a,"iframe")? +a.contentDocument||a.contentWindow.document:c.makeArray(a.childNodes)}},function(a,b){c.fn[a]=function(d,f){var e=c.map(this,b,d);eb.test(a)||(f=d);if(f&&typeof f==="string")e=c.filter(f,e);e=this.length>1?c.unique(e):e;if((this.length>1||gb.test(f))&&fb.test(a))e=e.reverse();return this.pushStack(e,a,R.call(arguments).join(","))}});c.extend({filter:function(a,b,d){if(d)a=":not("+a+")";return c.find.matches(a,b)},dir:function(a,b,d){var f=[];for(a=a[b];a&&a.nodeType!==9&&(d===w||a.nodeType!==1||!c(a).is(d));){a.nodeType=== +1&&f.push(a);a=a[b]}return f},nth:function(a,b,d){b=b||1;for(var f=0;a;a=a[d])if(a.nodeType===1&&++f===b)break;return a},sibling:function(a,b){for(var d=[];a;a=a.nextSibling)a.nodeType===1&&a!==b&&d.push(a);return d}});var Ja=/ jQuery\d+="(?:\d+|null)"/g,V=/^\s+/,Ka=/(<([\w:]+)[^>]*?)\/>/g,hb=/^(?:area|br|col|embed|hr|img|input|link|meta|param)$/i,La=/<([\w:]+)/,ib=/"},F={option:[1,""],legend:[1,"
","
"],thead:[1,"","
"],tr:[2,"","
"],td:[3,"","
"],col:[2,"","
"],area:[1,"",""],_default:[0,"",""]};F.optgroup=F.option;F.tbody=F.tfoot=F.colgroup=F.caption=F.thead;F.th=F.td;if(!c.support.htmlSerialize)F._default=[1,"div
","
"];c.fn.extend({text:function(a){if(c.isFunction(a))return this.each(function(b){var d= +c(this);d.text(a.call(this,b,d.text()))});if(typeof a!=="object"&&a!==w)return this.empty().append((this[0]&&this[0].ownerDocument||s).createTextNode(a));return c.text(this)},wrapAll:function(a){if(c.isFunction(a))return this.each(function(d){c(this).wrapAll(a.call(this,d))});if(this[0]){var b=c(a,this[0].ownerDocument).eq(0).clone(true);this[0].parentNode&&b.insertBefore(this[0]);b.map(function(){for(var d=this;d.firstChild&&d.firstChild.nodeType===1;)d=d.firstChild;return d}).append(this)}return this}, +wrapInner:function(a){if(c.isFunction(a))return this.each(function(b){c(this).wrapInner(a.call(this,b))});return this.each(function(){var b=c(this),d=b.contents();d.length?d.wrapAll(a):b.append(a)})},wrap:function(a){return this.each(function(){c(this).wrapAll(a)})},unwrap:function(){return this.parent().each(function(){c.nodeName(this,"body")||c(this).replaceWith(this.childNodes)}).end()},append:function(){return this.domManip(arguments,true,function(a){this.nodeType===1&&this.appendChild(a)})}, +prepend:function(){return this.domManip(arguments,true,function(a){this.nodeType===1&&this.insertBefore(a,this.firstChild)})},before:function(){if(this[0]&&this[0].parentNode)return this.domManip(arguments,false,function(b){this.parentNode.insertBefore(b,this)});else if(arguments.length){var a=c(arguments[0]);a.push.apply(a,this.toArray());return this.pushStack(a,"before",arguments)}},after:function(){if(this[0]&&this[0].parentNode)return this.domManip(arguments,false,function(b){this.parentNode.insertBefore(b, +this.nextSibling)});else if(arguments.length){var a=this.pushStack(this,"after",arguments);a.push.apply(a,c(arguments[0]).toArray());return a}},remove:function(a,b){for(var d=0,f;(f=this[d])!=null;d++)if(!a||c.filter(a,[f]).length){if(!b&&f.nodeType===1){c.cleanData(f.getElementsByTagName("*"));c.cleanData([f])}f.parentNode&&f.parentNode.removeChild(f)}return this},empty:function(){for(var a=0,b;(b=this[a])!=null;a++)for(b.nodeType===1&&c.cleanData(b.getElementsByTagName("*"));b.firstChild;)b.removeChild(b.firstChild); +return this},clone:function(a){var b=this.map(function(){if(!c.support.noCloneEvent&&!c.isXMLDoc(this)){var d=this.outerHTML,f=this.ownerDocument;if(!d){d=f.createElement("div");d.appendChild(this.cloneNode(true));d=d.innerHTML}return c.clean([d.replace(Ja,"").replace(/=([^="'>\s]+\/)>/g,'="$1">').replace(V,"")],f)[0]}else return this.cloneNode(true)});if(a===true){ra(this,b);ra(this.find("*"),b.find("*"))}return b},html:function(a){if(a===w)return this[0]&&this[0].nodeType===1?this[0].innerHTML.replace(Ja, +""):null;else if(typeof a==="string"&&!ta.test(a)&&(c.support.leadingWhitespace||!V.test(a))&&!F[(La.exec(a)||["",""])[1].toLowerCase()]){a=a.replace(Ka,Ma);try{for(var b=0,d=this.length;b0||e.cacheable||this.length>1?k.cloneNode(true):k)}o.length&&c.each(o,Qa)}return this}});c.fragments={};c.each({appendTo:"append",prependTo:"prepend",insertBefore:"before",insertAfter:"after",replaceAll:"replaceWith"},function(a,b){c.fn[a]=function(d){var f=[];d=c(d);var e=this.length===1&&this[0].parentNode;if(e&&e.nodeType===11&&e.childNodes.length===1&&d.length===1){d[b](this[0]); +return this}else{e=0;for(var j=d.length;e0?this.clone(true):this).get();c.fn[b].apply(c(d[e]),i);f=f.concat(i)}return this.pushStack(f,a,d.selector)}}});c.extend({clean:function(a,b,d,f){b=b||s;if(typeof b.createElement==="undefined")b=b.ownerDocument||b[0]&&b[0].ownerDocument||s;for(var e=[],j=0,i;(i=a[j])!=null;j++){if(typeof i==="number")i+="";if(i){if(typeof i==="string"&&!jb.test(i))i=b.createTextNode(i);else if(typeof i==="string"){i=i.replace(Ka,Ma);var o=(La.exec(i)||["", +""])[1].toLowerCase(),k=F[o]||F._default,n=k[0],r=b.createElement("div");for(r.innerHTML=k[1]+i+k[2];n--;)r=r.lastChild;if(!c.support.tbody){n=ib.test(i);o=o==="table"&&!n?r.firstChild&&r.firstChild.childNodes:k[1]===""&&!n?r.childNodes:[];for(k=o.length-1;k>=0;--k)c.nodeName(o[k],"tbody")&&!o[k].childNodes.length&&o[k].parentNode.removeChild(o[k])}!c.support.leadingWhitespace&&V.test(i)&&r.insertBefore(b.createTextNode(V.exec(i)[0]),r.firstChild);i=r.childNodes}if(i.nodeType)e.push(i);else e= +c.merge(e,i)}}if(d)for(j=0;e[j];j++)if(f&&c.nodeName(e[j],"script")&&(!e[j].type||e[j].type.toLowerCase()==="text/javascript"))f.push(e[j].parentNode?e[j].parentNode.removeChild(e[j]):e[j]);else{e[j].nodeType===1&&e.splice.apply(e,[j+1,0].concat(c.makeArray(e[j].getElementsByTagName("script"))));d.appendChild(e[j])}return e},cleanData:function(a){for(var b,d,f=c.cache,e=c.event.special,j=c.support.deleteExpando,i=0,o;(o=a[i])!=null;i++)if(d=o[c.expando]){b=f[d];if(b.events)for(var k in b.events)e[k]? +c.event.remove(o,k):Ca(o,k,b.handle);if(j)delete o[c.expando];else o.removeAttribute&&o.removeAttribute(c.expando);delete f[d]}}});var kb=/z-?index|font-?weight|opacity|zoom|line-?height/i,Na=/alpha\([^)]*\)/,Oa=/opacity=([^)]*)/,ha=/float/i,ia=/-([a-z])/ig,lb=/([A-Z])/g,mb=/^-?\d+(?:px)?$/i,nb=/^-?\d/,ob={position:"absolute",visibility:"hidden",display:"block"},pb=["Left","Right"],qb=["Top","Bottom"],rb=s.defaultView&&s.defaultView.getComputedStyle,Pa=c.support.cssFloat?"cssFloat":"styleFloat",ja= +function(a,b){return b.toUpperCase()};c.fn.css=function(a,b){return X(this,a,b,true,function(d,f,e){if(e===w)return c.curCSS(d,f);if(typeof e==="number"&&!kb.test(f))e+="px";c.style(d,f,e)})};c.extend({style:function(a,b,d){if(!a||a.nodeType===3||a.nodeType===8)return w;if((b==="width"||b==="height")&&parseFloat(d)<0)d=w;var f=a.style||a,e=d!==w;if(!c.support.opacity&&b==="opacity"){if(e){f.zoom=1;b=parseInt(d,10)+""==="NaN"?"":"alpha(opacity="+d*100+")";a=f.filter||c.curCSS(a,"filter")||"";f.filter= +Na.test(a)?a.replace(Na,b):b}return f.filter&&f.filter.indexOf("opacity=")>=0?parseFloat(Oa.exec(f.filter)[1])/100+"":""}if(ha.test(b))b=Pa;b=b.replace(ia,ja);if(e)f[b]=d;return f[b]},css:function(a,b,d,f){if(b==="width"||b==="height"){var e,j=b==="width"?pb:qb;function i(){e=b==="width"?a.offsetWidth:a.offsetHeight;f!=="border"&&c.each(j,function(){f||(e-=parseFloat(c.curCSS(a,"padding"+this,true))||0);if(f==="margin")e+=parseFloat(c.curCSS(a,"margin"+this,true))||0;else e-=parseFloat(c.curCSS(a, +"border"+this+"Width",true))||0})}a.offsetWidth!==0?i():c.swap(a,ob,i);return Math.max(0,Math.round(e))}return c.curCSS(a,b,d)},curCSS:function(a,b,d){var f,e=a.style;if(!c.support.opacity&&b==="opacity"&&a.currentStyle){f=Oa.test(a.currentStyle.filter||"")?parseFloat(RegExp.$1)/100+"":"";return f===""?"1":f}if(ha.test(b))b=Pa;if(!d&&e&&e[b])f=e[b];else if(rb){if(ha.test(b))b="float";b=b.replace(lb,"-$1").toLowerCase();e=a.ownerDocument.defaultView;if(!e)return null;if(a=e.getComputedStyle(a,null))f= +a.getPropertyValue(b);if(b==="opacity"&&f==="")f="1"}else if(a.currentStyle){d=b.replace(ia,ja);f=a.currentStyle[b]||a.currentStyle[d];if(!mb.test(f)&&nb.test(f)){b=e.left;var j=a.runtimeStyle.left;a.runtimeStyle.left=a.currentStyle.left;e.left=d==="fontSize"?"1em":f||0;f=e.pixelLeft+"px";e.left=b;a.runtimeStyle.left=j}}return f},swap:function(a,b,d){var f={};for(var e in b){f[e]=a.style[e];a.style[e]=b[e]}d.call(a);for(e in b)a.style[e]=f[e]}});if(c.expr&&c.expr.filters){c.expr.filters.hidden=function(a){var b= +a.offsetWidth,d=a.offsetHeight,f=a.nodeName.toLowerCase()==="tr";return b===0&&d===0&&!f?true:b>0&&d>0&&!f?false:c.curCSS(a,"display")==="none"};c.expr.filters.visible=function(a){return!c.expr.filters.hidden(a)}}var sb=J(),tb=//gi,ub=/select|textarea/i,vb=/color|date|datetime|email|hidden|month|number|password|range|search|tel|text|time|url|week/i,N=/=\?(&|$)/,ka=/\?/,wb=/(\?|&)_=.*?(&|$)/,xb=/^(\w+:)?\/\/([^\/?#]+)/,yb=/%20/g,zb=c.fn.load;c.fn.extend({load:function(a,b,d){if(typeof a!== +"string")return zb.call(this,a);else if(!this.length)return this;var f=a.indexOf(" ");if(f>=0){var e=a.slice(f,a.length);a=a.slice(0,f)}f="GET";if(b)if(c.isFunction(b)){d=b;b=null}else if(typeof b==="object"){b=c.param(b,c.ajaxSettings.traditional);f="POST"}var j=this;c.ajax({url:a,type:f,dataType:"html",data:b,complete:function(i,o){if(o==="success"||o==="notmodified")j.html(e?c("
").append(i.responseText.replace(tb,"")).find(e):i.responseText);d&&j.each(d,[i.responseText,o,i])}});return this}, +serialize:function(){return c.param(this.serializeArray())},serializeArray:function(){return this.map(function(){return this.elements?c.makeArray(this.elements):this}).filter(function(){return this.name&&!this.disabled&&(this.checked||ub.test(this.nodeName)||vb.test(this.type))}).map(function(a,b){a=c(this).val();return a==null?null:c.isArray(a)?c.map(a,function(d){return{name:b.name,value:d}}):{name:b.name,value:a}}).get()}});c.each("ajaxStart ajaxStop ajaxComplete ajaxError ajaxSuccess ajaxSend".split(" "), +function(a,b){c.fn[b]=function(d){return this.bind(b,d)}});c.extend({get:function(a,b,d,f){if(c.isFunction(b)){f=f||d;d=b;b=null}return c.ajax({type:"GET",url:a,data:b,success:d,dataType:f})},getScript:function(a,b){return c.get(a,null,b,"script")},getJSON:function(a,b,d){return c.get(a,b,d,"json")},post:function(a,b,d,f){if(c.isFunction(b)){f=f||d;d=b;b={}}return c.ajax({type:"POST",url:a,data:b,success:d,dataType:f})},ajaxSetup:function(a){c.extend(c.ajaxSettings,a)},ajaxSettings:{url:location.href, +global:true,type:"GET",contentType:"application/x-www-form-urlencoded",processData:true,async:true,xhr:A.XMLHttpRequest&&(A.location.protocol!=="file:"||!A.ActiveXObject)?function(){return new A.XMLHttpRequest}:function(){try{return new A.ActiveXObject("Microsoft.XMLHTTP")}catch(a){}},accepts:{xml:"application/xml, text/xml",html:"text/html",script:"text/javascript, application/javascript",json:"application/json, text/javascript",text:"text/plain",_default:"*/*"}},lastModified:{},etag:{},ajax:function(a){function b(){e.success&& +e.success.call(k,o,i,x);e.global&&f("ajaxSuccess",[x,e])}function d(){e.complete&&e.complete.call(k,x,i);e.global&&f("ajaxComplete",[x,e]);e.global&&!--c.active&&c.event.trigger("ajaxStop")}function f(q,p){(e.context?c(e.context):c.event).trigger(q,p)}var e=c.extend(true,{},c.ajaxSettings,a),j,i,o,k=a&&a.context||e,n=e.type.toUpperCase();if(e.data&&e.processData&&typeof e.data!=="string")e.data=c.param(e.data,e.traditional);if(e.dataType==="jsonp"){if(n==="GET")N.test(e.url)||(e.url+=(ka.test(e.url)? +"&":"?")+(e.jsonp||"callback")+"=?");else if(!e.data||!N.test(e.data))e.data=(e.data?e.data+"&":"")+(e.jsonp||"callback")+"=?";e.dataType="json"}if(e.dataType==="json"&&(e.data&&N.test(e.data)||N.test(e.url))){j=e.jsonpCallback||"jsonp"+sb++;if(e.data)e.data=(e.data+"").replace(N,"="+j+"$1");e.url=e.url.replace(N,"="+j+"$1");e.dataType="script";A[j]=A[j]||function(q){o=q;b();d();A[j]=w;try{delete A[j]}catch(p){}z&&z.removeChild(C)}}if(e.dataType==="script"&&e.cache===null)e.cache=false;if(e.cache=== +false&&n==="GET"){var r=J(),u=e.url.replace(wb,"$1_="+r+"$2");e.url=u+(u===e.url?(ka.test(e.url)?"&":"?")+"_="+r:"")}if(e.data&&n==="GET")e.url+=(ka.test(e.url)?"&":"?")+e.data;e.global&&!c.active++&&c.event.trigger("ajaxStart");r=(r=xb.exec(e.url))&&(r[1]&&r[1]!==location.protocol||r[2]!==location.host);if(e.dataType==="script"&&n==="GET"&&r){var z=s.getElementsByTagName("head")[0]||s.documentElement,C=s.createElement("script");C.src=e.url;if(e.scriptCharset)C.charset=e.scriptCharset;if(!j){var B= +false;C.onload=C.onreadystatechange=function(){if(!B&&(!this.readyState||this.readyState==="loaded"||this.readyState==="complete")){B=true;b();d();C.onload=C.onreadystatechange=null;z&&C.parentNode&&z.removeChild(C)}}}z.insertBefore(C,z.firstChild);return w}var E=false,x=e.xhr();if(x){e.username?x.open(n,e.url,e.async,e.username,e.password):x.open(n,e.url,e.async);try{if(e.data||a&&a.contentType)x.setRequestHeader("Content-Type",e.contentType);if(e.ifModified){c.lastModified[e.url]&&x.setRequestHeader("If-Modified-Since", +c.lastModified[e.url]);c.etag[e.url]&&x.setRequestHeader("If-None-Match",c.etag[e.url])}r||x.setRequestHeader("X-Requested-With","XMLHttpRequest");x.setRequestHeader("Accept",e.dataType&&e.accepts[e.dataType]?e.accepts[e.dataType]+", */*":e.accepts._default)}catch(ga){}if(e.beforeSend&&e.beforeSend.call(k,x,e)===false){e.global&&!--c.active&&c.event.trigger("ajaxStop");x.abort();return false}e.global&&f("ajaxSend",[x,e]);var g=x.onreadystatechange=function(q){if(!x||x.readyState===0||q==="abort"){E|| +d();E=true;if(x)x.onreadystatechange=c.noop}else if(!E&&x&&(x.readyState===4||q==="timeout")){E=true;x.onreadystatechange=c.noop;i=q==="timeout"?"timeout":!c.httpSuccess(x)?"error":e.ifModified&&c.httpNotModified(x,e.url)?"notmodified":"success";var p;if(i==="success")try{o=c.httpData(x,e.dataType,e)}catch(v){i="parsererror";p=v}if(i==="success"||i==="notmodified")j||b();else c.handleError(e,x,i,p);d();q==="timeout"&&x.abort();if(e.async)x=null}};try{var h=x.abort;x.abort=function(){x&&h.call(x); +g("abort")}}catch(l){}e.async&&e.timeout>0&&setTimeout(function(){x&&!E&&g("timeout")},e.timeout);try{x.send(n==="POST"||n==="PUT"||n==="DELETE"?e.data:null)}catch(m){c.handleError(e,x,null,m);d()}e.async||g();return x}},handleError:function(a,b,d,f){if(a.error)a.error.call(a.context||a,b,d,f);if(a.global)(a.context?c(a.context):c.event).trigger("ajaxError",[b,a,f])},active:0,httpSuccess:function(a){try{return!a.status&&location.protocol==="file:"||a.status>=200&&a.status<300||a.status===304||a.status=== +1223||a.status===0}catch(b){}return false},httpNotModified:function(a,b){var d=a.getResponseHeader("Last-Modified"),f=a.getResponseHeader("Etag");if(d)c.lastModified[b]=d;if(f)c.etag[b]=f;return a.status===304||a.status===0},httpData:function(a,b,d){var f=a.getResponseHeader("content-type")||"",e=b==="xml"||!b&&f.indexOf("xml")>=0;a=e?a.responseXML:a.responseText;e&&a.documentElement.nodeName==="parsererror"&&c.error("parsererror");if(d&&d.dataFilter)a=d.dataFilter(a,b);if(typeof a==="string")if(b=== +"json"||!b&&f.indexOf("json")>=0)a=c.parseJSON(a);else if(b==="script"||!b&&f.indexOf("javascript")>=0)c.globalEval(a);return a},param:function(a,b){function d(i,o){if(c.isArray(o))c.each(o,function(k,n){b||/\[\]$/.test(i)?f(i,n):d(i+"["+(typeof n==="object"||c.isArray(n)?k:"")+"]",n)});else!b&&o!=null&&typeof o==="object"?c.each(o,function(k,n){d(i+"["+k+"]",n)}):f(i,o)}function f(i,o){o=c.isFunction(o)?o():o;e[e.length]=encodeURIComponent(i)+"="+encodeURIComponent(o)}var e=[];if(b===w)b=c.ajaxSettings.traditional; +if(c.isArray(a)||a.jquery)c.each(a,function(){f(this.name,this.value)});else for(var j in a)d(j,a[j]);return e.join("&").replace(yb,"+")}});var la={},Ab=/toggle|show|hide/,Bb=/^([+-]=)?([\d+-.]+)(.*)$/,W,va=[["height","marginTop","marginBottom","paddingTop","paddingBottom"],["width","marginLeft","marginRight","paddingLeft","paddingRight"],["opacity"]];c.fn.extend({show:function(a,b){if(a||a===0)return this.animate(K("show",3),a,b);else{a=0;for(b=this.length;a").appendTo("body");f=e.css("display");if(f==="none")f="block";e.remove();la[d]=f}c.data(this[a],"olddisplay",f)}}a=0;for(b=this.length;a=0;f--)if(d[f].elem===this){b&&d[f](true);d.splice(f,1)}});b||this.dequeue();return this}});c.each({slideDown:K("show",1),slideUp:K("hide",1),slideToggle:K("toggle",1),fadeIn:{opacity:"show"},fadeOut:{opacity:"hide"}},function(a,b){c.fn[a]=function(d,f){return this.animate(b,d,f)}});c.extend({speed:function(a,b,d){var f=a&&typeof a==="object"?a:{complete:d||!d&&b||c.isFunction(a)&&a,duration:a,easing:d&&b||b&&!c.isFunction(b)&&b};f.duration=c.fx.off?0:typeof f.duration=== +"number"?f.duration:c.fx.speeds[f.duration]||c.fx.speeds._default;f.old=f.complete;f.complete=function(){f.queue!==false&&c(this).dequeue();c.isFunction(f.old)&&f.old.call(this)};return f},easing:{linear:function(a,b,d,f){return d+f*a},swing:function(a,b,d,f){return(-Math.cos(a*Math.PI)/2+0.5)*f+d}},timers:[],fx:function(a,b,d){this.options=b;this.elem=a;this.prop=d;if(!b.orig)b.orig={}}});c.fx.prototype={update:function(){this.options.step&&this.options.step.call(this.elem,this.now,this);(c.fx.step[this.prop]|| +c.fx.step._default)(this);if((this.prop==="height"||this.prop==="width")&&this.elem.style)this.elem.style.display="block"},cur:function(a){if(this.elem[this.prop]!=null&&(!this.elem.style||this.elem.style[this.prop]==null))return this.elem[this.prop];return(a=parseFloat(c.css(this.elem,this.prop,a)))&&a>-10000?a:parseFloat(c.curCSS(this.elem,this.prop))||0},custom:function(a,b,d){function f(j){return e.step(j)}this.startTime=J();this.start=a;this.end=b;this.unit=d||this.unit||"px";this.now=this.start; +this.pos=this.state=0;var e=this;f.elem=this.elem;if(f()&&c.timers.push(f)&&!W)W=setInterval(c.fx.tick,13)},show:function(){this.options.orig[this.prop]=c.style(this.elem,this.prop);this.options.show=true;this.custom(this.prop==="width"||this.prop==="height"?1:0,this.cur());c(this.elem).show()},hide:function(){this.options.orig[this.prop]=c.style(this.elem,this.prop);this.options.hide=true;this.custom(this.cur(),0)},step:function(a){var b=J(),d=true;if(a||b>=this.options.duration+this.startTime){this.now= +this.end;this.pos=this.state=1;this.update();this.options.curAnim[this.prop]=true;for(var f in this.options.curAnim)if(this.options.curAnim[f]!==true)d=false;if(d){if(this.options.display!=null){this.elem.style.overflow=this.options.overflow;a=c.data(this.elem,"olddisplay");this.elem.style.display=a?a:this.options.display;if(c.css(this.elem,"display")==="none")this.elem.style.display="block"}this.options.hide&&c(this.elem).hide();if(this.options.hide||this.options.show)for(var e in this.options.curAnim)c.style(this.elem, +e,this.options.orig[e]);this.options.complete.call(this.elem)}return false}else{e=b-this.startTime;this.state=e/this.options.duration;a=this.options.easing||(c.easing.swing?"swing":"linear");this.pos=c.easing[this.options.specialEasing&&this.options.specialEasing[this.prop]||a](this.state,e,0,1,this.options.duration);this.now=this.start+(this.end-this.start)*this.pos;this.update()}return true}};c.extend(c.fx,{tick:function(){for(var a=c.timers,b=0;b
"; +a.insertBefore(b,a.firstChild);d=b.firstChild;f=d.firstChild;e=d.nextSibling.firstChild.firstChild;this.doesNotAddBorder=f.offsetTop!==5;this.doesAddBorderForTableAndCells=e.offsetTop===5;f.style.position="fixed";f.style.top="20px";this.supportsFixedPosition=f.offsetTop===20||f.offsetTop===15;f.style.position=f.style.top="";d.style.overflow="hidden";d.style.position="relative";this.subtractsBorderForOverflowNotVisible=f.offsetTop===-5;this.doesNotIncludeMarginInBodyOffset=a.offsetTop!==j;a.removeChild(b); +c.offset.initialize=c.noop},bodyOffset:function(a){var b=a.offsetTop,d=a.offsetLeft;c.offset.initialize();if(c.offset.doesNotIncludeMarginInBodyOffset){b+=parseFloat(c.curCSS(a,"marginTop",true))||0;d+=parseFloat(c.curCSS(a,"marginLeft",true))||0}return{top:b,left:d}},setOffset:function(a,b,d){if(/static/.test(c.curCSS(a,"position")))a.style.position="relative";var f=c(a),e=f.offset(),j=parseInt(c.curCSS(a,"top",true),10)||0,i=parseInt(c.curCSS(a,"left",true),10)||0;if(c.isFunction(b))b=b.call(a, +d,e);d={top:b.top-e.top+j,left:b.left-e.left+i};"using"in b?b.using.call(a,d):f.css(d)}};c.fn.extend({position:function(){if(!this[0])return null;var a=this[0],b=this.offsetParent(),d=this.offset(),f=/^body|html$/i.test(b[0].nodeName)?{top:0,left:0}:b.offset();d.top-=parseFloat(c.curCSS(a,"marginTop",true))||0;d.left-=parseFloat(c.curCSS(a,"marginLeft",true))||0;f.top+=parseFloat(c.curCSS(b[0],"borderTopWidth",true))||0;f.left+=parseFloat(c.curCSS(b[0],"borderLeftWidth",true))||0;return{top:d.top- +f.top,left:d.left-f.left}},offsetParent:function(){return this.map(function(){for(var a=this.offsetParent||s.body;a&&!/^body|html$/i.test(a.nodeName)&&c.css(a,"position")==="static";)a=a.offsetParent;return a})}});c.each(["Left","Top"],function(a,b){var d="scroll"+b;c.fn[d]=function(f){var e=this[0],j;if(!e)return null;if(f!==w)return this.each(function(){if(j=wa(this))j.scrollTo(!a?f:c(j).scrollLeft(),a?f:c(j).scrollTop());else this[d]=f});else return(j=wa(e))?"pageXOffset"in j?j[a?"pageYOffset": +"pageXOffset"]:c.support.boxModel&&j.document.documentElement[d]||j.document.body[d]:e[d]}});c.each(["Height","Width"],function(a,b){var d=b.toLowerCase();c.fn["inner"+b]=function(){return this[0]?c.css(this[0],d,false,"padding"):null};c.fn["outer"+b]=function(f){return this[0]?c.css(this[0],d,false,f?"margin":"border"):null};c.fn[d]=function(f){var e=this[0];if(!e)return f==null?null:this;if(c.isFunction(f))return this.each(function(j){var i=c(this);i[d](f.call(this,j,i[d]()))});return"scrollTo"in +e&&e.document?e.document.compatMode==="CSS1Compat"&&e.document.documentElement["client"+b]||e.document.body["client"+b]:e.nodeType===9?Math.max(e.documentElement["client"+b],e.body["scroll"+b],e.documentElement["scroll"+b],e.body["offset"+b],e.documentElement["offset"+b]):f===w?c.css(e,d):this.css(d,typeof f==="string"?f:f+"px")}});A.jQuery=A.$=c})(window); diff --git a/vsphere/6.0/_static/minus.png b/vsphere/6.0/_static/minus.png new file mode 100644 index 00000000..da1c5620 Binary files /dev/null and b/vsphere/6.0/_static/minus.png differ diff --git a/vsphere/6.0/_static/plus.png b/vsphere/6.0/_static/plus.png new file mode 100644 index 00000000..b3cb3742 Binary files /dev/null and b/vsphere/6.0/_static/plus.png differ diff --git a/vsphere/6.0/_static/pygments.css b/vsphere/6.0/_static/pygments.css new file mode 100644 index 00000000..1a14f2ae --- /dev/null +++ b/vsphere/6.0/_static/pygments.css @@ -0,0 +1,62 @@ +.highlight .hll { background-color: #ffffcc } +.highlight { background: #eeffcc; } +.highlight .c { color: #408090; font-style: italic } /* Comment */ +.highlight .err { border: 1px solid #FF0000 } /* Error */ +.highlight .k { color: #007020; font-weight: bold } /* Keyword */ +.highlight .o { color: #666666 } /* Operator */ +.highlight .cm { color: #408090; font-style: italic } /* Comment.Multiline */ +.highlight .cp { color: #007020 } /* Comment.Preproc */ +.highlight .c1 { color: #408090; font-style: italic } /* Comment.Single */ +.highlight .cs { color: #408090; background-color: #fff0f0 } /* Comment.Special */ +.highlight .gd { color: #A00000 } /* Generic.Deleted */ +.highlight .ge { font-style: italic } /* Generic.Emph */ +.highlight .gr { color: #FF0000 } /* Generic.Error */ +.highlight .gh { color: #000080; font-weight: bold } /* Generic.Heading */ +.highlight .gi { color: #00A000 } /* Generic.Inserted */ +.highlight .go { color: #303030 } /* Generic.Output */ +.highlight .gp { color: #c65d09; font-weight: bold } /* Generic.Prompt */ +.highlight .gs { font-weight: bold } /* Generic.Strong */ +.highlight .gu { color: #800080; font-weight: bold } /* Generic.Subheading */ +.highlight .gt { color: #0040D0 } /* Generic.Traceback */ +.highlight .kc { color: #007020; font-weight: bold } /* Keyword.Constant */ +.highlight .kd { color: #007020; font-weight: bold } /* Keyword.Declaration */ +.highlight .kn { color: #007020; font-weight: bold } /* Keyword.Namespace */ +.highlight .kp { color: #007020 } /* Keyword.Pseudo */ +.highlight .kr { color: #007020; font-weight: bold } /* Keyword.Reserved */ +.highlight .kt { color: #902000 } /* Keyword.Type */ +.highlight .m { color: #208050 } /* Literal.Number */ +.highlight .s { color: #4070a0 } /* Literal.String */ +.highlight .na { color: #4070a0 } /* Name.Attribute */ +.highlight .nb { color: #007020 } /* Name.Builtin */ +.highlight .nc { color: #0e84b5; font-weight: bold } /* Name.Class */ +.highlight .no { color: #60add5 } /* Name.Constant */ +.highlight .nd { color: #555555; font-weight: bold } /* Name.Decorator */ +.highlight .ni { color: #d55537; font-weight: bold } /* Name.Entity */ +.highlight .ne { color: #007020 } /* Name.Exception */ +.highlight .nf { color: #06287e } /* Name.Function */ +.highlight .nl { color: #002070; font-weight: bold } /* Name.Label */ +.highlight .nn { color: #0e84b5; font-weight: bold } /* Name.Namespace */ +.highlight .nt { color: #062873; font-weight: bold } /* Name.Tag */ +.highlight .nv { color: #bb60d5 } /* Name.Variable */ +.highlight .ow { color: #007020; font-weight: bold } /* Operator.Word */ +.highlight .w { color: #bbbbbb } /* Text.Whitespace */ +.highlight .mf { color: #208050 } /* Literal.Number.Float */ +.highlight .mh { color: #208050 } /* Literal.Number.Hex */ +.highlight .mi { color: #208050 } /* Literal.Number.Integer */ +.highlight .mo { color: #208050 } /* Literal.Number.Oct */ +.highlight .sb { color: #4070a0 } /* Literal.String.Backtick */ +.highlight .sc { color: #4070a0 } /* Literal.String.Char */ +.highlight .sd { color: #4070a0; font-style: italic } /* Literal.String.Doc */ +.highlight .s2 { color: #4070a0 } /* Literal.String.Double */ +.highlight .se { color: #4070a0; font-weight: bold } /* Literal.String.Escape */ +.highlight .sh { color: #4070a0 } /* Literal.String.Heredoc */ +.highlight .si { color: #70a0d0; font-style: italic } /* Literal.String.Interpol */ +.highlight .sx { color: #c65d09 } /* Literal.String.Other */ +.highlight .sr { color: #235388 } /* Literal.String.Regex */ +.highlight .s1 { color: #4070a0 } /* Literal.String.Single */ +.highlight .ss { color: #517918 } /* Literal.String.Symbol */ +.highlight .bp { color: #007020 } /* Name.Builtin.Pseudo */ +.highlight .vc { color: #bb60d5 } /* Name.Variable.Class */ +.highlight .vg { color: #bb60d5 } /* Name.Variable.Global */ +.highlight .vi { color: #bb60d5 } /* Name.Variable.Instance */ +.highlight .il { color: #208050 } /* Literal.Number.Integer.Long */ \ No newline at end of file diff --git a/vsphere/6.0/_static/searchtools.js b/vsphere/6.0/_static/searchtools.js new file mode 100644 index 00000000..663be4c9 --- /dev/null +++ b/vsphere/6.0/_static/searchtools.js @@ -0,0 +1,560 @@ +/* + * searchtools.js_t + * ~~~~~~~~~~~~~~~~ + * + * Sphinx JavaScript utilties for the full-text search. + * + * :copyright: Copyright 2007-2011 by the Sphinx team, see AUTHORS. + * :license: BSD, see LICENSE for details. + * + */ + +/** + * helper function to return a node containing the + * search summary for a given text. keywords is a list + * of stemmed words, hlwords is the list of normal, unstemmed + * words. the first one is used to find the occurance, the + * latter for highlighting it. + */ + +jQuery.makeSearchSummary = function(text, keywords, hlwords) { + var textLower = text.toLowerCase(); + var start = 0; + $.each(keywords, function() { + var i = textLower.indexOf(this.toLowerCase()); + if (i > -1) + start = i; + }); + start = Math.max(start - 120, 0); + var excerpt = ((start > 0) ? '...' : '') + + $.trim(text.substr(start, 240)) + + ((start + 240 - text.length) ? '...' : ''); + var rv = $('
').text(excerpt); + $.each(hlwords, function() { + rv = rv.highlightText(this, 'highlighted'); + }); + return rv; +} + + +/** + * Porter Stemmer + */ +var Stemmer = function() { + + var step2list = { + ational: 'ate', + tional: 'tion', + enci: 'ence', + anci: 'ance', + izer: 'ize', + bli: 'ble', + alli: 'al', + entli: 'ent', + eli: 'e', + ousli: 'ous', + ization: 'ize', + ation: 'ate', + ator: 'ate', + alism: 'al', + iveness: 'ive', + fulness: 'ful', + ousness: 'ous', + aliti: 'al', + iviti: 'ive', + biliti: 'ble', + logi: 'log' + }; + + var step3list = { + icate: 'ic', + ative: '', + alize: 'al', + iciti: 'ic', + ical: 'ic', + ful: '', + ness: '' + }; + + var c = "[^aeiou]"; // consonant + var v = "[aeiouy]"; // vowel + var C = c + "[^aeiouy]*"; // consonant sequence + var V = v + "[aeiou]*"; // vowel sequence + + var mgr0 = "^(" + C + ")?" + V + C; // [C]VC... is m>0 + var meq1 = "^(" + C + ")?" + V + C + "(" + V + ")?$"; // [C]VC[V] is m=1 + var mgr1 = "^(" + C + ")?" + V + C + V + C; // [C]VCVC... is m>1 + var s_v = "^(" + C + ")?" + v; // vowel in stem + + this.stemWord = function (w) { + var stem; + var suffix; + var firstch; + var origword = w; + + if (w.length < 3) + return w; + + var re; + var re2; + var re3; + var re4; + + firstch = w.substr(0,1); + if (firstch == "y") + w = firstch.toUpperCase() + w.substr(1); + + // Step 1a + re = /^(.+?)(ss|i)es$/; + re2 = /^(.+?)([^s])s$/; + + if (re.test(w)) + w = w.replace(re,"$1$2"); + else if (re2.test(w)) + w = w.replace(re2,"$1$2"); + + // Step 1b + re = /^(.+?)eed$/; + re2 = /^(.+?)(ed|ing)$/; + if (re.test(w)) { + var fp = re.exec(w); + re = new RegExp(mgr0); + if (re.test(fp[1])) { + re = /.$/; + w = w.replace(re,""); + } + } + else if (re2.test(w)) { + var fp = re2.exec(w); + stem = fp[1]; + re2 = new RegExp(s_v); + if (re2.test(stem)) { + w = stem; + re2 = /(at|bl|iz)$/; + re3 = new RegExp("([^aeiouylsz])\\1$"); + re4 = new RegExp("^" + C + v + "[^aeiouwxy]$"); + if (re2.test(w)) + w = w + "e"; + else if (re3.test(w)) { + re = /.$/; + w = w.replace(re,""); + } + else if (re4.test(w)) + w = w + "e"; + } + } + + // Step 1c + re = /^(.+?)y$/; + if (re.test(w)) { + var fp = re.exec(w); + stem = fp[1]; + re = new RegExp(s_v); + if (re.test(stem)) + w = stem + "i"; + } + + // Step 2 + re = /^(.+?)(ational|tional|enci|anci|izer|bli|alli|entli|eli|ousli|ization|ation|ator|alism|iveness|fulness|ousness|aliti|iviti|biliti|logi)$/; + if (re.test(w)) { + var fp = re.exec(w); + stem = fp[1]; + suffix = fp[2]; + re = new RegExp(mgr0); + if (re.test(stem)) + w = stem + step2list[suffix]; + } + + // Step 3 + re = /^(.+?)(icate|ative|alize|iciti|ical|ful|ness)$/; + if (re.test(w)) { + var fp = re.exec(w); + stem = fp[1]; + suffix = fp[2]; + re = new RegExp(mgr0); + if (re.test(stem)) + w = stem + step3list[suffix]; + } + + // Step 4 + re = /^(.+?)(al|ance|ence|er|ic|able|ible|ant|ement|ment|ent|ou|ism|ate|iti|ous|ive|ize)$/; + re2 = /^(.+?)(s|t)(ion)$/; + if (re.test(w)) { + var fp = re.exec(w); + stem = fp[1]; + re = new RegExp(mgr1); + if (re.test(stem)) + w = stem; + } + else if (re2.test(w)) { + var fp = re2.exec(w); + stem = fp[1] + fp[2]; + re2 = new RegExp(mgr1); + if (re2.test(stem)) + w = stem; + } + + // Step 5 + re = /^(.+?)e$/; + if (re.test(w)) { + var fp = re.exec(w); + stem = fp[1]; + re = new RegExp(mgr1); + re2 = new RegExp(meq1); + re3 = new RegExp("^" + C + v + "[^aeiouwxy]$"); + if (re.test(stem) || (re2.test(stem) && !(re3.test(stem)))) + w = stem; + } + re = /ll$/; + re2 = new RegExp(mgr1); + if (re.test(w) && re2.test(w)) { + re = /.$/; + w = w.replace(re,""); + } + + // and turn initial Y back to y + if (firstch == "y") + w = firstch.toLowerCase() + w.substr(1); + return w; + } +} + + +/** + * Search Module + */ +var Search = { + + _index : null, + _queued_query : null, + _pulse_status : -1, + + init : function() { + var params = $.getQueryParameters(); + if (params.q) { + var query = params.q[0]; + $('input[name="q"]')[0].value = query; + this.performSearch(query); + } + }, + + loadIndex : function(url) { + $.ajax({type: "GET", url: url, data: null, success: null, + dataType: "script", cache: true}); + }, + + setIndex : function(index) { + var q; + this._index = index; + if ((q = this._queued_query) !== null) { + this._queued_query = null; + Search.query(q); + } + }, + + hasIndex : function() { + return this._index !== null; + }, + + deferQuery : function(query) { + this._queued_query = query; + }, + + stopPulse : function() { + this._pulse_status = 0; + }, + + startPulse : function() { + if (this._pulse_status >= 0) + return; + function pulse() { + Search._pulse_status = (Search._pulse_status + 1) % 4; + var dotString = ''; + for (var i = 0; i < Search._pulse_status; i++) + dotString += '.'; + Search.dots.text(dotString); + if (Search._pulse_status > -1) + window.setTimeout(pulse, 500); + }; + pulse(); + }, + + /** + * perform a search for something + */ + performSearch : function(query) { + // create the required interface elements + this.out = $('#search-results'); + this.title = $('

' + _('Searching') + '

').appendTo(this.out); + this.dots = $('').appendTo(this.title); + this.status = $('

').appendTo(this.out); + this.output = $('