diff --git a/.github/workflows/build-pr-cmk.yml b/.github/workflows/build-pr-cmk.yml new file mode 100644 index 00000000..d6f97d0d --- /dev/null +++ b/.github/workflows/build-pr-cmk.yml @@ -0,0 +1,69 @@ +# Licensed to the Apache Software Foundation (ASF) under one +# or more contributor license agreements. See the NOTICE file +# distributed with this work for additional information +# regarding copyright ownership. The ASF licenses this file +# to you under the Apache License, Version 2.0 (the +# "License"); you may not use this file except in compliance +# with the License. You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, +# software distributed under the License is distributed on an +# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY +# KIND, either express or implied. See the License for the +# specific language governing permissions and limitations +# under the License. + +name: Build cmk binaries on PR + +on: + pull_request: + types: [opened, synchronize, reopened] + +concurrency: + group: ${{ github.workflow }}-${{ github.event.pull_request.number }} + cancel-in-progress: true + +jobs: + build: + permissions: + contents: read + runs-on: ubuntu-24.04 + env: + GITHUB_TOKEN: "" + outputs: + outcome: ${{ steps.meta.outputs.outcome }} + artifact_url: ${{ steps.meta.outputs.artifact_url }} + steps: + - name: Checkout PR code + uses: actions/checkout@v4 + with: + persist-credentials: false + + - name: Set up Go + uses: actions/setup-go@v5 + with: + go-version: '1.22' + + - name: Build dist + id: build + run: make dist + continue-on-error: true + + - name: Upload zipped dist artifact + id: upload_artifact + if: ${{ steps.build.outcome == 'success' }} # gate on build outcome + uses: actions/upload-artifact@v4 + with: + name: cmk-binaries.pr${{ github.event.pull_request.number }} + path: dist/ + if-no-files-found: error + retention-days: 10 + + - name: Expose build outcome & artifact link + id: meta + if: always() + run: | + echo "outcome=${{ steps.build.outcome }}" >> $GITHUB_OUTPUT + echo "artifact_url=${{ steps.upload_artifact.outputs.artifact-url }}" >> $GITHUB_OUTPUT diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml new file mode 100644 index 00000000..e4bdb90f --- /dev/null +++ b/.github/workflows/build.yml @@ -0,0 +1,45 @@ +# Licensed to the Apache Software Foundation (ASF) under one +# or more contributor license agreements. See the NOTICE file +# distributed with this work for additional information +# regarding copyright ownership. The ASF licenses this file +# to you under the Apache License, Version 2.0 (the +# "License"); you may not use this file except in compliance +# with the License. You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, +# software distributed under the License is distributed on an +# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY +# KIND, either express or implied. See the License for the +# specific language governing permissions and limitations +# under the License. + +name: Build + +on: [push, pull_request] + +concurrency: + group: ${{ github.workflow }}-${{ github.event.pull_request.number || github.ref }} + cancel-in-progress: true + +permissions: + contents: read + +jobs: + build: + runs-on: ubuntu-22.04 + + steps: + - uses: actions/checkout@v3 + + - name: Set up Go + uses: actions/setup-go@v3 + with: + go-version: 1.20.x + + - name: Run Script + run: make all + + env: + GO111MODULE: on diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml new file mode 100644 index 00000000..4fb3e132 --- /dev/null +++ b/.github/workflows/ci.yml @@ -0,0 +1,318 @@ +# Licensed to the Apache Software Foundation (ASF) under one +# or more contributor license agreements. See the NOTICE file +# distributed with this work for additional information +# regarding copyright ownership. The ASF licenses this file +# to you under the Apache License, Version 2.0 (the +# "License"); you may not use this file except in compliance +# with the License. You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, +# software distributed under the License is distributed on an +# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY +# KIND, either express or implied. See the License for the +# specific language governing permissions and limitations +# under the License. + +name: Simulator CI + +on: + pull_request: + +concurrency: + group: ${{ github.workflow }}-${{ github.event.pull_request.number }} + cancel-in-progress: true + +permissions: + contents: read + +jobs: + simulator-latest-ci: + runs-on: ubuntu-24.04 + timeout-minutes: 60 + + env: + GO111MODULE: on + CMK_BIN: bin/cmk + CLOUDSTACK_SIM_API: http://127.0.0.1:8096/client/api + CLOUDSTACK_UI_API: http://127.0.0.1:8080/client/api + MAVEN_OPTS: -Xmx4096m -XX:MaxMetaspaceSize=800m -Djava.security.egd=file:/dev/urandom --add-opens=java.base/java.lang=ALL-UNNAMED --add-exports=java.base/sun.security.x509=ALL-UNNAMED --add-opens=java.base/jdk.internal.reflect=ALL-UNNAMED + + steps: + - name: Check out CloudMonkey + uses: actions/checkout@v4 + + - name: Set up Go + uses: actions/setup-go@v5 + with: + go-version: '1.22' + + - name: Build cmk + run: | + make run + + - name: Fetch latest CloudStack release tag + id: csrel + run: | + TAG=$(curl -s https://api.github.com/repos/apache/cloudstack/releases/latest | jq -r .tag_name) + echo "tag=$TAG" >> $GITHUB_OUTPUT + echo "Latest CloudStack tag: $TAG" + + - name: Clone CloudStack at latest release + run: | + git clone --depth=1 --branch "${{ steps.csrel.outputs.tag }}" https://github.com/apache/cloudstack.git + + - name: Set up JDK 11 + Maven cache + uses: actions/setup-java@v4 + with: + java-version: '11' + distribution: 'temurin' + cache: maven + cache-dependency-path: cloudstack/pom.xml + + - name: Set up Python 3.10 + uses: actions/setup-python@v5 + with: + python-version: '3.10' + + - name: Install OS deps + run: | + sudo apt-get update + sudo apt-get install -y \ + mysql-server uuid-runtime genisoimage netcat-openbsd ipmitool \ + build-essential libgcrypt20 libgpg-error-dev libgpg-error0 \ + libopenipmi0 libssl-dev jq curl + + - name: Install Python deps + run: | + python3 -m pip install --upgrade pip + python3 -m pip install --user urllib3 lxml paramiko nose texttable ipmisim pyopenssl pycryptodome mock flask netaddr pylint pycodestyle six astroid mysql-connector-python + + - name: Setup MySQL Server + run: | + # https://github.com/actions/runner-images/blob/main/images/linux/Ubuntu2004-Readme.md#mysql + sudo systemctl start mysql + sudo mysql -uroot -proot -e "ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY ''; FLUSH PRIVILEGES;" + sudo systemctl restart mysql + sudo mysql -uroot -e "SELECT VERSION();" + + - name: Build CloudStack (simulator) + working-directory: cloudstack + run: | + mvn -B -P developer,systemvm -Dsimulator clean install -DskipTests=true -T$(nproc) + + - name: Deploy simulator DB + marvin + working-directory: cloudstack + run: | + mvn -q -Pdeveloper -pl developer -Ddeploydb + mvn -q -Pdeveloper -pl developer -Ddeploydb-simulator + python3 -m pip install --user --upgrade tools/marvin/dist/Marvin-*.tar.gz + + - name: Start CloudStack mgmt (Jetty) in background + id: start_ms + working-directory: cloudstack + run: | + set -euo pipefail + LOG=/tmp/jetty-log.txt + mvn -Dsimulator -Dorg.eclipse.jetty.annotations.maxWait=120 -pl :cloud-client-ui jetty:run > "$LOG" 2>&1 & + JETTY_PID=$! + echo "$JETTY_PID" > /tmp/jetty.pid + echo "Waiting for simulator API @ 8096…" + for i in $(seq 1 60); do + if nc -z 127.0.0.1 8096; then + echo "Simulator API is up." + break + fi + sleep 5 + tail -n 50 "$LOG" || true + if ! kill -0 "$JETTY_PID" 2>/dev/null; then + echo "Jetty exited early. Last 200 lines:" + tail -n 200 "$LOG" || true + exit 1 + fi + done + + - name: Deploy Advanced Zone via Marvin + working-directory: cloudstack + run: | + python3 tools/marvin/marvin/deployDataCenter.py -i setup/dev/advdualzone.cfg + + - name: Configure cmk profile + run: | + "${CMK_BIN}" set profile simulator + "${CMK_BIN}" set url "${CLOUDSTACK_UI_API}" + "${CMK_BIN}" set output json + + - name: API discovery parity (curl vs cmk) + run: | + CURL_COUNT=$(curl -s "${CLOUDSTACK_SIM_API}?command=listApis&response=json" | jq '.listapisresponse.count') + echo "curl count: $CURL_COUNT" + CMK_COUNT=$("${CMK_BIN}" listApis | jq '.count') + echo "cmk count: $CMK_COUNT" + test -n "$CURL_COUNT" -a -n "$CMK_COUNT" + [ "$CMK_COUNT" -ge 1 ] + + - name: List API + run: | + "${CMK_BIN}" set output table + OUT=$("${CMK_BIN}" listZones) + echo "$OUT" + if [ -z "$OUT" ]; then + echo "No output from listZones. Failing." + exit 1 + fi + "${CMK_BIN}" set output json + OUT=$("${CMK_BIN}" listZones) + echo "$OUT" + if [ -z "$OUT" ]; then + echo "No output from listZones. Failing." + exit 1 + fi + ZONE_ID=$(echo "$OUT" | jq -r '.zone[0].id') + echo "ZONE_ID=$ZONE_ID" >> $GITHUB_ENV + test -n "$ZONE_ID" + + - name: List API with filter + run: | + "${CMK_BIN}" set output json + OUT=$("${CMK_BIN}" listZones filter=id,name) + echo "$OUT" | jq -e ' + .zone and (.zone|length>=1) + and (all(.zone[]; has("id") and has("name") and ((. | keys - ["id","name"])|length==0))) + ' + + - name: List API with exclude + run: | + "${CMK_BIN}" set output json + OUT=$("${CMK_BIN}" listZones exclude=id,name) + echo "$OUT" | jq -e ' + .zone and (.zone|length>=1) + and (all(.zone[]; (has("id") or has("name"))|not)) + ' + + - name: "Create API" + run: | + "${CMK_BIN}" set output json + OUT=$("${CMK_BIN}" createUser account=admin email=testuser@example.com firstname=Test lastname=User password=password username=test || true) + echo "$OUT" + if [ -n "$OUT" ]; then + echo "$OUT" | jq -e ' + (.user // {}) as $p + | ($p|type=="object") + and ($p|has("id") and has("email")) + and ((($p|keys) - ["id","email"])|length>0) + ' + else + echo "No output. Failing strict check." + exit 1 + fi + + - name: Create API with filter + run: | + "${CMK_BIN}" set output json + OUT=$("${CMK_BIN}" createUser account=admin email=testuser@example.com firstname=Test lastname=User password=password username=test-filter filter=id,email || true) + echo "$OUT" + if [ -n "$OUT" ]; then + echo "$OUT" | jq -e ' + (.user // {}) as $p + | ($p|type=="object") + and ($p|has("id") and has("email")) + and ((($p|keys) - ["id","email"])|length==0) + ' + else + echo "No output. Failing strict check." + exit 1 + fi + + - name: Create API with exclude + run: | + "${CMK_BIN}" set output json + OUT=$("${CMK_BIN}" createUser account=admin email=testuser@example.com firstname=Test lastname=User password=password username=test-exclude exclude=id,email || true) + echo "$OUT" + if [ -n "$OUT" ]; then + echo "$OUT" | jq -e ' + (.user // {}) as $p + | ($p|type=="object") + and ((($p|has("id")) or ($p|has("email")))|not) + ' + else + echo "No output. Failing strict check." + exit 1 + fi + + - name: Get template and service offering IDs for Async API test + run: | + TID=$("${CMK_BIN}" listTemplates listall=true templatefilter=executable | jq -r '.template[0].id') + SOID=$("${CMK_BIN}" listServiceOfferings | jq -r '.serviceoffering[0].id') + echo "TEMPLATE_ID=$TID" >> $GITHUB_ENV + echo "SERVICE_OFFERING_ID=$SOID" >> $GITHUB_ENV + test -n "$TID" -a -n "$SOID" + + - name: Async API + run: | + "${CMK_BIN}" set output json + OUT=$("${CMK_BIN}" deployVirtualMachine zoneid=${ZONE_ID} templateid=${TEMPLATE_ID} serviceofferingid=${SERVICE_OFFERING_ID} || true) + if [ -n "$OUT" ]; then + echo "$OUT" | jq -e ' + (.virtualmachine // {}) as $p + | ($p|type=="object") + and ($p|has("id") and has("name")) + and ((($p|keys) - ["id","name"])|length>0) + ' + else + echo "No output. Failing strict check." + exit 1 + fi + + - name: Async API with filter + run: | + "${CMK_BIN}" set output json + OUT=$("${CMK_BIN}" deployVirtualMachine zoneid=${ZONE_ID} templateid=${TEMPLATE_ID} serviceofferingid=${SERVICE_OFFERING_ID} filter=id,name || true) + if [ -n "$OUT" ]; then + echo "$OUT" | jq -e ' + (.virtualmachine // {}) as $p + | ($p|type=="object") + and ($p|has("id") and has("name")) + and ((($p|keys) - ["id","name"])|length==0) + ' + else + echo "No output. Failing strict check." + exit 1 + fi + + - name: Async API with exclude + run: | + "${CMK_BIN}" set output json + OUT=$("${CMK_BIN}" deployVirtualMachine zoneid=${ZONE_ID} templateid=${TEMPLATE_ID} serviceofferingid=${SERVICE_OFFERING_ID} exclude=id,name || true) + echo "$OUT" + if [ -n "$OUT" ]; then + echo "$OUT" | jq -e ' + (.virtualmachine // {}) as $p + | ($p|type=="object") + and ((($p|has("id")) or ($p|has("name")))|not) + ' + else + echo "No output. Failing strict check." + exit 1 + fi + + - name: Change profile (user) and compare API surface + run: | + ADMIN_COUNT=$("${CMK_BIN}" listApis | jq '.count') + "${CMK_BIN}" createAccount username=user password=p@ssw0rd accounttype=0 domainid=1 firstname=Test lastname=User email=testuser@example.com || true + "${CMK_BIN}" set profile user + "${CMK_BIN}" set url "${CLOUDSTACK_UI_API}" + "${CMK_BIN}" set username user + "${CMK_BIN}" set password p@ssw0rd + USER_COUNT=$("${CMK_BIN}" listApis | jq '.count // 0') + echo "admin=${ADMIN_COUNT} user=${USER_COUNT}" + test $USER_COUNT -le $ADMIN_COUNT + + - name: Stop simulator MS + if: ${{ always() && steps.start_ms.outcome == 'success' }} + working-directory: cloudstack + run: | + echo -e "Stopping Simulator, integration tests run completed\n" + mvn -Dsimulator -pl client jetty:stop 2>&1 + diff --git a/.github/workflows/comment-pr-build.yml b/.github/workflows/comment-pr-build.yml new file mode 100644 index 00000000..661cdef1 --- /dev/null +++ b/.github/workflows/comment-pr-build.yml @@ -0,0 +1,165 @@ +# Licensed to the Apache Software Foundation (ASF) under one +# or more contributor license agreements. See the NOTICE file +# distributed with this work for additional information +# regarding copyright ownership. The ASF licenses this file +# to you under the Apache License, Version 2.0 (the +# "License"); you may not use this file except in compliance +# with the License. You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, +# software distributed under the License is distributed on an +# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY +# KIND, either express or implied. See the License for the +# specific language governing permissions and limitations +# under the License. + +name: Comment on PR build results + +on: + workflow_run: + workflows: ["Build cmk binaries on PR"] + types: + - completed + +permissions: + contents: read + issues: write + pull-requests: write + actions: read + +jobs: + comment: + runs-on: ubuntu-24.04 + if: > + github.event.workflow_run.event == 'pull_request' + steps: + - name: Download artifact metadata + uses: actions/github-script@v7 + id: artifact-metadata + with: + script: | + const artifacts = await github.rest.actions.listWorkflowRunArtifacts({ + owner: context.repo.owner, + repo: context.repo.repo, + run_id: context.payload.workflow_run.id, + }); + + const prArtifact = artifacts.data.artifacts.find(a => a.name.startsWith('cmk-binaries.pr')); + + if (prArtifact) { + const prNumber = prArtifact.name.match(/pr(\d+)/)?.[1]; + return { + artifact_url: prArtifact.archive_download_url, + pr_number: prNumber, + conclusion: context.payload.workflow_run.conclusion + }; + } + + return { + pr_number: null, + conclusion: context.payload.workflow_run.conclusion + }; + + - name: Get PR number from workflow run + id: get-pr + uses: actions/github-script@v7 + env: + METADATA: ${{ steps.artifact-metadata.outputs.result }} + with: + script: | + // Primary source: PRs attached to the workflow_run (for pull_request-triggered runs) + const runPRs = context.payload.workflow_run.pull_requests; + if (runPRs && runPRs.length > 0) { + return runPRs[0].number; + } + // Fallback 1: PR number discovered from artifact metadata + let metadata = {}; + if (process.env.METADATA) { + try { + metadata = JSON.parse(process.env.METADATA); + } catch (e) { + core.warning(`Failed to parse artifact metadata: ${e.message}`); + } + } + if (metadata.pr_number) { + return metadata.pr_number; + } + // Fallback 2: look up PRs associated with the workflow run head SHA + const associated = await github.rest.repos.listPullRequestsAssociatedWithCommit({ + owner: context.repo.owner, + repo: context.repo.repo, + commit_sha: context.payload.workflow_run.head_sha, + }); + if (associated.data.length > 0) { + return associated.data[0].number; + } + return null; + + - name: Comment or update build result on PR + uses: actions/github-script@v7 + with: + script: | + const { execSync } = require('child_process'); + const prNumber = ${{ steps.get-pr.outputs.result }}; + + if (!prNumber) { + core.warning('Could not determine PR number, skipping comment'); + return; + } + + const identifier = "cmk-build-artifact-comment"; + const owner = context.repo.owner; + const repo = context.repo.repo; + const conclusion = '${{ github.event.workflow_run.conclusion }}'; + const runId = '${{ github.event.workflow_run.id }}'; + const runUrl = `https://github.com/${owner}/${repo}/actions/runs/${runId}`; + + core.info(`Commenting on PR #${prNumber}`); + core.info(`Build conclusion: ${conclusion}`); + + let body = `\n`; + + if (conclusion === 'success') { + const expiryDate = execSync("date -d '+10 days' '+%B %d, %Y'").toString().trim(); + body += `✅ Build complete for PR #${prNumber}.\n\n`; + body += `📦 Binary artifacts are available in the [workflow run](${runUrl}) (expires on ${expiryDate}).\n\n`; + body += `> **Note:** Download artifacts by clicking on the workflow run link above, then scroll to the "Artifacts" section.\n`; + body += `> _Artifacts from PR builds are for testing only and may contain unreviewed, malicious code._`; + } else if (conclusion === 'failure') { + body += `❌ Build failed for PR #${prNumber}.\n\n`; + body += `See the [workflow run](${runUrl}) for details.`; + } else { + body += `⚠️ Build ${conclusion} for PR #${prNumber}.\n\n`; + body += `See the [workflow run](${runUrl}) for details.`; + } + + const { data: comments } = await github.rest.issues.listComments({ + owner, + repo, + issue_number: prNumber + }); + + const existing = comments.find(c => + c.user.login === 'github-actions[bot]' && + c.body.includes(identifier) + ); + + if (existing) { + core.info(`Updating existing comment id ${existing.id}`); + await github.rest.issues.updateComment({ + owner, + repo, + comment_id: existing.id, + body + }); + } else { + core.info(`Creating new comment`); + await github.rest.issues.createComment({ + owner, + repo, + issue_number: prNumber, + body + }); + } diff --git a/cloudmonkey/__init__.py b/.github/workflows/lint.yml similarity index 69% rename from cloudmonkey/__init__.py rename to .github/workflows/lint.yml index cf689e79..db98df71 100644 --- a/cloudmonkey/__init__.py +++ b/.github/workflows/lint.yml @@ -15,9 +15,24 @@ # specific language governing permissions and limitations # under the License. -try: - from config import __version__, __description__ - from config import __maintainer__, __maintaineremail__ - from config import __project__, __projecturl__, __projectemail__ -except ImportError, e: - print e +name: Lint Check + +on: [push, pull_request] + +jobs: + lint: + name: Run make lint + runs-on: ubuntu-24.04 + + steps: + - name: Checkout code + uses: actions/checkout@v4 + + - name: Set up Go + uses: actions/setup-go@v5 + with: + go-version: '1.22' + + - name: Run lint + run: | + make lint diff --git a/.github/workflows/rat.yaml b/.github/workflows/rat.yaml new file mode 100644 index 00000000..23ed6e94 --- /dev/null +++ b/.github/workflows/rat.yaml @@ -0,0 +1,53 @@ +# Licensed to the Apache Software Foundation (ASF) under one +# or more contributor license agreements. See the NOTICE file +# distributed with this work for additional information +# regarding copyright ownership. The ASF licenses this file +# to you under the Apache License, Version 2.0 (the +# "License"); you may not use this file except in compliance +# with the License. You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, +# software distributed under the License is distributed on an +# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY +# KIND, either express or implied. See the License for the +# specific language governing permissions and limitations +# under the License. + +name: RAT Check + +on: + push: + branches: + - main + pull_request: + branches: + - '**' + +jobs: + rat: + name: Apache RAT Check + runs-on: ubuntu-latest + + steps: + - name: Checkout repository + uses: actions/checkout@v4 + + - name: Set up Java + uses: actions/setup-java@v4 + with: + distribution: temurin + java-version: 17 + + - name: Download Apache RAT + run: | + curl -L -O https://downloads.apache.org/creadur/apache-rat-0.18/apache-rat-0.18-bin.tar.gz + tar -xzf apache-rat-0.18-bin.tar.gz + + - name: Run RAT + run: | + java -jar apache-rat-0.18/apache-rat-0.18.jar -d . -E .rat-excludes > rat-report.txt + cat rat-report.txt + # Fail if unapproved licenses are found + grep -qe '^\s*Unapproved:\s*0\s*A count of unapproved licenses.$' rat-report.txt && exit 0 || exit 1 diff --git a/.gitignore b/.gitignore index 63c8cd1e..67cb9505 100644 --- a/.gitignore +++ b/.gitignore @@ -15,14 +15,11 @@ # specific language governing permissions and limitations # under the License. -dist/ -*~ -*.log -*.pyc -*.egginfo/ -*.egg-info/ -.DS_Store -*.swp -build/ -.* -!.gitignore +bin +cmk +dist +*.exe +*.test +*.out +.gopath +.idea diff --git a/.rat-excludes b/.rat-excludes new file mode 100644 index 00000000..3ecb4024 --- /dev/null +++ b/.rat-excludes @@ -0,0 +1,7 @@ +.rat-excludes +CHANGES.md +apache-rat-0.17 +go.sum +rat-report.txt +/snap/snapcraft.yaml +vendor \ No newline at end of file diff --git a/CHANGES b/CHANGES deleted file mode 100644 index 4c718765..00000000 --- a/CHANGES +++ /dev/null @@ -1,40 +0,0 @@ -Apache CloudStack CloudMonkey Changelog ---------------------------------------- - -Version 5.2.0 -============= -This release includes - - In the config [server] section is deprecated now - - For missing keys, cloudmonkey will set default values - - Network requests, json decoding and shell related bugfixes - - Based on platform, it will install either pyreadline (Windows) or readline (OSX and Linux) - - Config options `protocol`, `host`, `port`, `path` are deprecated now - - Backward compatibilty exists for above options but we use `url` for the mgmt server URL - - Introduces server profiles so users can use cloudmonkey with different hosts and management server configs - - A default profile under the section [local] is added with default values - - Everytime `set` is called, cloudmonkey will write the config and reload config file - -Make sure you backup your config before you upgrade cloudmonkey from previous releases. -With this release `cloudmonkey` will automatically fix your config file, add missing -configuration parameters and save it as the upgraded versions starts for the first time. - -Version 5.1.0 -============= -This release includes - - support for using username and password instead of / in addition to api key and secret key - - Usage of signature version 3 for the api signing process. This reduces the chance of API replay attacks - - cleanup based on reporting from PEP8 and Flake8 - -If you upgrade from 5.0, then cloudmonkey will ask you to update your config file (~/.cloudmonkey/config) -Under the [user], you can add -username = -password = -Under the [server], you can add -expires = 600 - -Version 5.0.0 -============= -This is the first release of CloudMonkey independent from the Apache CloudStack core orchestration engine. The release -includes a precache of Apache CloudStack 4.2.0 API calls, and should be backward compatible with prior 3.x and 4.x -CloudStack installations (with the obvious caveat that previous versions will have a subset of the latest API commands / -parameters). diff --git a/CHANGES.md b/CHANGES.md new file mode 100644 index 00000000..9ef21cd0 --- /dev/null +++ b/CHANGES.md @@ -0,0 +1,168 @@ +Apache CloudStack CloudMonkey Changelog +--------------------------------------- + +Version 6.5.0 +============= +This release includes: +- Adds support for template/ISO file upload +- Adds support for Two-Factor Authentication (2FA) prompts +- Improves autocompletion filtering and listing for different resources, with name/detail-based suggestions +- Enables sending API requests using HTTP POST +- Improves output formatting for multiple formats and asynchronous APIs +- Enhances filtering output, with support for async APIs and reverse filtering via the excludefilter option +- Updates inbuilt API precache to ACS v4.21 +- Improves credential fallback for command-line scenario +- Hardens file permissions for config and history file access +- Improves validation when setting configuration values +- Improves overall linting, tests, and automated workflows for the repository + +Version 6.4.0 +============= +This release includes: +- Improve CLI mode usage and output handling +- Add support for http POST handling for password and user-data +- Optimise async API jobs polling +- Better interrupt handling of Ctrl+C to cancel on-going API request but not + crash `cmk` +- Remove unnecessary call to listApis (sync) when using CLI mode with url, + api key, secret key +- Updates inbuilt API precache to ACS v4.19 + +Version 6.3.0 +============= +This release includes: +- Fixes handling of invalid timeout value +- Fixes csv output +- Add support for ARM64 Darwin/OSX build in Makefile +- Autocompletion on storage pool related APIs +- Enable profile information passing through commandline +- Profile caching improvements and bugfixes +- Fix: reuse cmk's CLI params to call piped cmd +- Maintenance changes - github actions/travis migration, dependencies upgrades, +- Various bug fixes + +Version 6.2.0 +============= +This release includes: +- Validation of arguments while setting cloudmonkey configuration +- Verify user access to cloudmonkey configuration file +- Allow sync command to be used as a verb for cloudstack API calls +- Print response with newlines if output format chosen is "text" +- Map "default" output type to "json" +- Add autocompletion as an optional configuration +- Display output in human readable format +- Show meaningful metadata for id autocompletion for some APIs + +Version 6.1.0 +============= +This release includes +- Fix issue of required parameters for tags and details +- Fix issue of hostid parameter completing to show hosts with type=routing +- Statically building the binary to not depend on gcc compiler #59 +- Allow http/https web-proxy support #49 +- Show keys as per provided filter for table/csv/column output #63 +- Don't sort header when filter keys are provided + +Version 6.0.0 +============= +This release includes +- Rewrite cloudmonkey in golang +- Interactive parameter completion +- Simplification of configuration + +Version 5.3.3 +============= +This release includes +- Support for shell history +- Sort autocompletion suggestion based on names +- Improve CSV output and error handling + +Version 5.3.2 +============= +This release includes +- Spinner printing improvements +- Monkey patching SSL requests +- Encode publickey, privatekey and certificates in APIs +- Configurable signature version +- Fix tabular output mode +- Better response checking in the API response +- A new XML display output mode +- A new CSV display output mode + +Version 5.3.1 +============= +This release includes +- Users can specify domain when using username/password auth per server profile +- Autocompletion of args works when cursor is not at the end of the line +- CLOUDSTACK-7935: keep colons in the request to ACS +- Account parameters are sometimes UUIDs and sometimes string, CloudMonkey + now automatically autocompletes for both UUID and string account args +- Pass verifysslcert option while user logs in using username/password +- Importing readline no longer outputs escape characters +- CloudMonkey will not output extra empty lines in stdout output +- Filtered result output is uniform across output display formats +- Async blocked API now show a spinning cursor instead of print dots +- When finding missing API args, it does case insensitive search +- New command line arg: -p or --profile (load server profile) +- New command line arg: -b, --block-async (block and poll result on async API calls) +- New command line arg: -n, --noblock-async (do not block on async API calls) + +Version 5.3.0 +============= +This release includes +- CloudMonkey becomes unicode friendly +- Autocompletion for filters, precache changes +- Autocompletion for config 'set' options and boolean api args +- Current server profile displayed on prompt +- Server profile related bugfixes, blank profile names are not allowed +- Filtering support for default display output +- Filtering by single key only outputs results without key names +- Non-interactive commands from command line are outputted without colors +- Parameter completion uses list api heuristics and related APIs as fallback +- Parameter completion options are cached to speed up rendering of options +- CloudMonkey returns non-zero exit code when run on shell and a error is return + from management server, the error message is written to stderr +- Adds new config parameter 'verifysslcert' to enable/disable SSL cert checking +- New command line arg: -d for display (json, table or default) + +Make sure you backup your config before you upgrade cloudmonkey from previous releases. +With this release `cloudmonkey` will automatically fix your config file, add missing +configuration parameters and save it as the upgraded versions starts for the first time. + +Version 5.2.0 +============= +This release includes + - In the config [server] section is deprecated now + - For missing keys, cloudmonkey will set default values + - Network requests, json decoding and shell related bugfixes + - Based on platform, it will install either pyreadline (Windows) or readline (OSX and Linux) + - Config options `protocol`, `host`, `port`, `path` are deprecated now + - Backward compatibility exists for above options but we use `url` for the mgmt server URL + - Introduces server profiles so users can use cloudmonkey with different hosts and management server configs + - A default profile under the section [local] is added with default values + - Everytime `set` is called, cloudmonkey will write the config and reload config file + +Make sure you backup your config before you upgrade cloudmonkey from previous releases. +With this release `cloudmonkey` will automatically fix your config file, add missing +configuration parameters and save it as the upgraded versions starts for the first time. + +Version 5.1.0 +============= +This release includes + - support for using username and password instead of / in addition to api key and secret key + - Usage of signature version 3 for the api signing process. This reduces the chance of API replay attacks + - cleanup based on reporting from PEP8 and Flake8 + +If you upgrade from 5.0, then cloudmonkey will ask you to update your config file (~/.cloudmonkey/config) +Under the [user], you can add +username = +password = +Under the [server], you can add +expires = 600 + +Version 5.0.0 +============= +This is the first release of CloudMonkey independent from the Apache CloudStack core orchestration engine. The release +includes a precache of Apache CloudStack 4.2.0 API calls, and should be backward compatible with prior 3.x and 4.x +CloudStack installations (with the obvious caveat that previous versions will have a subset of the latest API commands / +parameters). diff --git a/Dockerfile b/Dockerfile new file mode 100644 index 00000000..0bf4a601 --- /dev/null +++ b/Dockerfile @@ -0,0 +1,38 @@ +# Licensed to the Apache Software Foundation (ASF) under one +# or more contributor license agreements. See the NOTICE file +# distributed with this work for additional information +# regarding copyright ownership. The ASF licenses this file +# to you under the Apache License, Version 2.0 (the +# "License"); you may not use this file except in compliance +# with the License. You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, +# software distributed under the License is distributed on an +# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY +# KIND, either express or implied. See the License for the +# specific language governing permissions and limitations +# under the License. + +FROM debian:sid as builder + +MAINTAINER "Apache CloudStack" +LABEL Description="Apache CloudStack CloudMonkey; Go based CloudStack command line interface" +LABEL Vendor="Apache.org" +LABEL License=ApacheV2 +LABEL Version=6.3.0 + +WORKDIR /work/ +RUN apt -y update && apt -y install git golang-go build-essential && \ + git clone https://github.com/apache/cloudstack-cloudmonkey.git && \ + go version && \ + cd cloudstack-cloudmonkey && \ + make all && \ + pwd && \ + ls -alh ./bin/cmk + +FROM debian:stable +COPY --from=builder /work/cloudstack-cloudmonkey/bin/cmk /usr/bin/ +RUN apt-get -y update && uname -a && mkdir -p /root/.cmk/ &&\ + cmk version && cmk help && ls -alh /root/ diff --git a/Makefile b/Makefile index 6356b0cd..ee8b6572 100644 --- a/Makefile +++ b/Makefile @@ -15,27 +15,143 @@ # specific language governing permissions and limitations # under the License. -all: clean buildwithcache +# Makefile referenced from github.com/vincentbernat/hellogopher +PACKAGE = cmk +DATE ?= $(shell date +%FT%T%z) +VERSION ?= $(shell git describe --tags --always --dirty --match=v* 2> /dev/null || \ + cat $(CURDIR)/.version 2> /dev/null || echo v0) +BIN = $(CURDIR)/bin +BASE = $(CURDIR) +PKGS = $(or $(PKG),$(shell $(GO) list ./... | grep -v "^$(PACKAGE)/vendor/")) +TESTPKGS = $(shell $(GO) list -f '{{ if or .TestGoFiles .XTestGoFiles }}{{ .ImportPath }}{{ end }}' $(PKGS)) +GIT_SHA = $(shell git rev-parse --short HEAD) -runtests: - nosetests -v --verbosity=3 +GO = CGO_ENABLED=0 go +GODOC = godoc +GOFMT = gofmt +TIMEOUT = 15 +V = 0 +Q = $(if $(filter 1,$V),,@) +M = $(shell printf "\033[34;1m▶\033[0m ") -buildwithcache: buildcache build +.PHONY: all +all: fmt ; $(info $(M) Building executable… $(GIT_SHA)) @ ## Build program binary + $Q $(GO) build -mod=vendor \ + -tags release \ + -ldflags '-s -w -X main.GitSHA=$(GIT_SHA) -X main.BuildDate=$(DATE)' \ + -o bin/$(PACKAGE) cmk.go + $(info $(M) Done!) @ -build: - python setup.py build - python setup.py sdist +run: all + ./bin/cmk -check: - pep8 cloudmonkey/*.py +debug: + $(GO) build -mod=vendor -gcflags='-N -l' -o cmk && dlv --listen=:2345 --headless=true --api-version=2 exec ./cmk -buildcache: - python cloudmonkey/cachemaker.py - mv -f precache.py cloudmonkey/ +dist-mkdir: all + rm -fr dist + mkdir -p dist -install: clean - python setup.py sdist - pip install dist/cloudmonkey-*.tar.gz +dist-linux: dist-mkdir + GOOS=linux GOARCH=amd64 $(GO) build -mod=vendor -ldflags='-s -w -X main.GitSHA=$(GIT_SHA) -X main.BuildDate=$(DATE)' -o dist/cmk.linux.x86-64 cmk.go + GOOS=linux GOARCH=386 $(GO) build -mod=vendor -ldflags='-s -w -X main.GitSHA=$(GIT_SHA) -X main.BuildDate=$(DATE)' -o dist/cmk.linux.x86 cmk.go + GOOS=linux GOARCH=arm $(GO) build -mod=vendor -ldflags='-s -w -X main.GitSHA=$(GIT_SHA) -X main.BuildDate=$(DATE)' -o dist/cmk.linux.arm32 cmk.go + GOOS=linux GOARCH=arm64 $(GO) build -mod=vendor -ldflags='-s -w -X main.GitSHA=$(GIT_SHA) -X main.BuildDate=$(DATE)' -o dist/cmk.linux.arm64 cmk.go -clean: - rm -frv build dist *egg-info + +dist: dist-linux + GOOS=windows GOARCH=386 $(GO) build -mod=vendor -ldflags='-s -w -X main.GitSHA=$(GIT_SHA) -X main.BuildDate=$(DATE)' -o dist/cmk.windows.x86.exe cmk.go + GOOS=windows GOARCH=amd64 $(GO) build -mod=vendor -ldflags='-s -w -X main.GitSHA=$(GIT_SHA) -X main.BuildDate=$(DATE)' -o dist/cmk.windows.x86-64.exe cmk.go + GOOS=darwin GOARCH=amd64 $(GO) build -mod=vendor -ldflags='-s -w -X main.GitSHA=$(GIT_SHA) -X main.BuildDate=$(DATE)' -o dist/cmk.darwin.x86-64 cmk.go + GOOS=darwin GOARCH=arm64 $(GO) build -mod=vendor -ldflags='-s -w -X main.GitSHA=$(GIT_SHA) -X main.BuildDate=$(DATE)' -o dist/cmk.darwin.arm64 cmk.go + +# Tools + +$(BIN): + @mkdir -p $(BIN) + +GOLINT = $(BIN)/golint +$(BIN)/golint: | $(BIN) ; $(info $(M) Building golint…) + $Q GOBIN=$(BIN) go install golang.org/x/lint/golint@latest + +GOCOVMERGE = $(BIN)/gocovmerge +$(BIN)/gocovmerge: | $(BASE) ; $(info $(M) building gocovmerge…) + $Q go get github.com/wadey/gocovmerge + +GOCOV = $(BIN)/gocov +$(BIN)/gocov: | $(BASE) ; $(info $(M) building gocov…) + $Q go get github.com/axw/gocov/... + +GOCOVXML = $(BIN)/gocov-xml +$(BIN)/gocov-xml: | $(BASE) ; $(info $(M) building gocov-xml…) + $Q go get github.com/AlekSi/gocov-xml + +GO2XUNIT = $(BIN)/go2xunit +$(BIN)/go2xunit: | $(BASE) ; $(info $(M) Building go2xunit…) + $Q go get github.com/tebeka/go2xunit + +# Tests + +TEST_TARGETS := test-default test-bench test-short test-verbose test-race +.PHONY: $(TEST_TARGETS) test-xml check test tests +test-bench: ARGS=-run=__absolutelynothing__ -bench=. ## Run benchmarks +test-short: ARGS=-short ## Run only short tests +test-verbose: ARGS=-v ## Run tests in verbose mode with coverage reporting +test-race: ARGS=-race ## Run tests with race detector +$(TEST_TARGETS): NAME=$(MAKECMDGOALS:test-%=%) +$(TEST_TARGETS): test +check test tests: fmt lint vendor | $(BASE) ; $(info $(M) Running $(NAME:%=% )tests…) @ ## Run tests + $Q cd $(BASE) && $(GO) test -timeout $(TIMEOUT)s $(ARGS) $(TESTPKGS) + +test-xml: fmt lint vendor | $(BASE) $(GO2XUNIT) ; $(info $(M) Running $(NAME:%=% )tests…) @ ## Run tests with xUnit output + $Q cd $(BASE) && 2>&1 $(GO) test -timeout 20s -v $(TESTPKGS) | tee test/tests.output + $(GO2XUNIT) -fail -input test/tests.output -output test/tests.xml + +COVERAGE_MODE = atomic +COVERAGE_PROFILE = $(COVERAGE_DIR)/profile.out +COVERAGE_XML = $(COVERAGE_DIR)/coverage.xml +COVERAGE_HTML = $(COVERAGE_DIR)/index.html +.PHONY: test-coverage test-coverage-tools +test-coverage-tools: | $(GOCOVMERGE) $(GOCOV) $(GOCOVXML) +test-coverage: COVERAGE_DIR := $(CURDIR)/test/coverage.$(shell date -u +"%Y-%m-%dT%H:%M:%SZ") +test-coverage: fmt lint vendor test-coverage-tools | $(BASE) ; $(info $(M) Running coverage tests…) @ ## Run coverage tests + $Q mkdir -p $(COVERAGE_DIR)/coverage + $Q cd $(BASE) && for pkg in $(TESTPKGS); do \ + $(GO) test \ + -coverpkg=$$($(GO) list -f '{{ join .Deps "\n" }}' $$pkg | \ + grep '^$(PACKAGE)/' | grep -v '^$(PACKAGE)/vendor/' | \ + tr '\n' ',')$$pkg \ + -covermode=$(COVERAGE_MODE) \ + -coverprofile="$(COVERAGE_DIR)/coverage/`echo $$pkg | tr "/" "-"`.cover" $$pkg ;\ + done + $Q $(GOCOVMERGE) $(COVERAGE_DIR)/coverage/*.cover > $(COVERAGE_PROFILE) + $Q $(GO) tool cover -html=$(COVERAGE_PROFILE) -o $(COVERAGE_HTML) + $Q $(GOCOV) convert $(COVERAGE_PROFILE) | $(GOCOVXML) > $(COVERAGE_XML) + +.PHONY: lint +lint: vendor | $(BASE) $(GOLINT) ; $(info $(M) Running golint…) @ ## Run golint + $Q cd $(BASE) && ret=0 && for pkg in $(PKGS); do \ + test -z "$$($(GOLINT) $$pkg | tee /dev/stderr)" || ret=1 ; \ + done ; exit $$ret + +.PHONY: fmt +fmt: ; $(info $(M) Running gofmt…) @ ## Run gofmt on all source files + @ret=0 && for d in $$($(GO) list -mod=vendor -f '{{.Dir}}' ./... | grep -v /vendor/); do \ + $(GOFMT) -l -w $$d/*.go || ret=$$? ; \ + done ; exit $$ret + +# Misc + +.PHONY: clean +clean: ; $(info $(M) Cleaning…) @ + @rm -rf bin dist cloudstack-cloudmonkey + @rm -rf test/tests.* test/coverage.* + +.PHONY: help +help: + @grep -E '^[ a-zA-Z_-]+:.*?## .*$$' $(MAKEFILE_LIST) | \ + awk 'BEGIN {FS = ":.*?## "}; {printf "\033[36m%-15s\033[0m %s\n", $$1, $$2}' + +.PHONY: version +version: + @echo cloudmonkey-$(VERSION) diff --git a/NOTICE b/NOTICE deleted file mode 100644 index 9a34d611..00000000 --- a/NOTICE +++ /dev/null @@ -1,5 +0,0 @@ -Apache CloudStack CloudMonkey -Copyright 2014 The Apache Software Foundation - -This product includes software developed at -The Apache Software Foundation (http://www.apache.org/). diff --git a/README.md b/README.md index cf31ea36..66f4dc6a 100644 --- a/README.md +++ b/README.md @@ -1,72 +1,83 @@ -## CloudMonkey +## CloudMonkey [![Build Status](https://github.com/apache/cloudstack/actions/workflows/build.yml/badge.svg?branch=main)](https://github.com/apache/cloudstack/actions/workflows/build.yml) [![RAT Check](https://github.com/apache/cloudstack-cloudmonkey/actions/workflows/rat.yaml/badge.svg?branch=main)](https://github.com/apache/cloudstack-cloudmonkey/actions/workflows/rat.yamll) [![Lint Check](https://github.com/apache/cloudstack-cloudmonkey/actions/workflows/lint.yml/badge.svg?branch=main)](https://github.com/apache/cloudstack-cloudmonkey/actions/workflows/lint.yml) [![](https://images.microbadger.com/badges/version/apache/cloudstack-cloudmonkey.svg)](https://hub.docker.com/r/apache/cloudstack-cloudmonkey) [![cloudmonkey](https://snapcraft.io/cloudmonkey/badge.svg)](https://snapcraft.io/cloudmonkey) -`cloudmonkey` is a command line interface for [Apache CloudStack](http://cloudstack.apache.org). -CloudMonkey can be use both as an interactive shell and as a command line tool -which simplifies Apache CloudStack configuration and management. It can be used -with Apache CloudStack 4.0-incubating and above. +`cloudmonkey` :cloud::monkey_face: is a command line interface (CLI) for +[Apache CloudStack](http://cloudstack.apache.org). +It can be used both as an interactive shell and as a command-line tool, simplifying Apache CloudStack configuration and management. -![version badge](https://badge.fury.io/py/cloudmonkey.png) ![download badge](http://img.shields.io/pypi/dm/cloudmonkey.png) +The modern CloudMonkey is a rewritten and simplified port in Go, compatible +with Apache CloudStack 4.9 and above. The legacy cloudmonkey written in Python +can be used with Apache CloudStack 4.0-incubating and above. -All: +For documentation, kindly see the [wiki](https://github.com/apache/cloudstack-cloudmonkey/wiki). - Cleans and then builds with precache - $ make all - -Build: - - $ make build - -Build Precache: - - $ make buildcache - -Build with Precache: +### Development - $ make buildwithcache +To develop CloudMonkey, you need Go 1.11 or later and a unix-like +environment. You can use the following targets for building: -Check changes, code styles: + $ make help - $ make check + all Build program binary + test-bench Run benchmarks + test-short Run only short tests + test-verbose Run tests in verbose mode with coverage reporting + test-race Run tests with race detector + check tests Run tests + test-xml Run tests with xUnit output + test-coverage Run coverage tests + debug Runs a debuggable binary using dlv + lint Run golint + fmt Run gofmt on all source files -Clean: +Build and run: - $ make clean + $ make run -Install: +Build and run manually: - $ make install - -### For users - -Install: - - $ pip install cloudmonkey + $ make all + $ ./bin/cmk -Upgrade: +To build for all distros and platforms, run: - $ pip install --upgrade cloudmonkey + $ make dist -Please see the [CloudMonkey Wiki](https://cwiki.apache.org/confluence/display/CLOUDSTACK/CloudStack+cloudmonkey+CLI) for usage. +### Community -### Mailing lists +You may join the relevant mailing list(s) for cloudmonkey related discussion: [Development Mailing List](mailto:dev-subscribe@cloudstack.apache.org) [Users Mailing List](mailto:users-subscribe@cloudstack.apache.org) -[Commits Mailing List](mailto:commits-subscribe@cloudstack.apache.org) +### Contribution + +Discuss issue(s) and feature(s) on CloudStack [development mailing list](mailto:dev-subscribe@cloudstack.apache.org). +Report issue(s) on the `user` mailing list and/or open a Github [issue](https://github.com/apache/cloudstack-cloudmonkey/issues). + +1. Fork the repository on Github +2. Create a named feature branch (like `add_component_x`) +3. Commit your change +4. Write tests for your change if applicable +5. Run the tests, ensuring they all pass +6. Submit a [Pull Request](https://github.com/apache/cloudstack-cloudmonkey/pull/new/main) using Github -[Issues Mailing List](mailto:issues-subscribe@cloudstack.apache.org) +### History -[Marketing Mailing List](mailto:marketing-subscribe@cloudstack.apache.org) +The original `cloudmonkey` was written in Python and contributed to Apache +CloudStack project by [Rohit Yadav](https://yadv.in) on 31 Oct 2012 +under the Apache License 2.0. -### Contributing +Starting version 6.0.0, the modern cloudmonkey `cmk` is a fast and simplified +Go-port of the original tool with some backward incompatibilities and reduced +feature set. It ships as a standalone 64-bit [executable binary for several +platforms such as Linux, Mac and Windows](https://github.com/apache/cloudstack-cloudmonkey/releases). -Send your patches on Apache [Review Board](https://reviews.apache.org/groups/cloudstack/) -for CloudStack CloudMonkey. +**NOTE:** -Discuss features development on the `Dev` mailing lists. -Report issues on the `User` mailing list and open issue on [JIRA](http://issues.apache.org/jira/browse/CLOUDSTACK). +If cloudmonkey is being upgraded from a version lower than v6.0.0, it must be noted +that the cloudmonkey configuration path is changed from `~/.cloudmonkey/config` to +`~/.cmk/config` and a default `localcloud` profile is created. One must first set up basic configurations such as apikey/secretkey/username/password/url for the required profile(s) as required ### License diff --git a/cli/completer.go b/cli/completer.go new file mode 100644 index 00000000..755cc7f2 --- /dev/null +++ b/cli/completer.go @@ -0,0 +1,494 @@ +// Licensed to the Apache Software Foundation (ASF) under one +// or more contributor license agreements. See the NOTICE file +// distributed with this work for additional information +// regarding copyright ownership. The ASF licenses this file +// to you under the Apache License, Version 2.0 (the +// "License"); you may not use this file except in compliance +// with the License. You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, +// software distributed under the License is distributed on an +// "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY +// KIND, either express or implied. See the License for the +// specific language governing permissions and limitations +// under the License. + +package cli + +import ( + "fmt" + "sort" + "strconv" + "strings" + "unicode" + + "github.com/apache/cloudstack-cloudmonkey/cmd" + "github.com/apache/cloudstack-cloudmonkey/config" +) + +var nameSupportingApis = []string{ + "configuration", +} + +func buildAPICacheMap(apiMap map[string][]*config.API) map[string][]*config.API { + for _, cmd := range cmd.AllCommands() { + verb := cmd.Name + if cmd.SubCommands != nil && len(cmd.SubCommands) > 0 { + for command, opts := range cmd.SubCommands { + var args []*config.APIArg + options := opts + if command == "profile" { + options = config.GetProfiles() + } + for _, opt := range options { + args = append(args, &config.APIArg{ + Name: opt, + }) + } + apiMap[verb] = append(apiMap[verb], &config.API{ + Name: command, + Verb: verb, + Noun: command, + Args: args, + }) + } + } else { + dummyAPI := &config.API{ + Name: "", + Verb: verb, + } + apiMap[verb] = append(apiMap[verb], dummyAPI) + } + } + return apiMap +} + +func trimSpaceLeft(in []rune) []rune { + firstIndex := len(in) + for i, r := range in { + if unicode.IsSpace(r) == false { + firstIndex = i + break + } + } + return in[firstIndex:] +} + +func equal(a, b []rune) bool { + if len(a) != len(b) { + return false + } + for i := 0; i < len(a); i++ { + if a[i] != b[i] { + return false + } + } + return true +} + +func hasPrefix(r, prefix []rune) bool { + if len(r) < len(prefix) { + return false + } + return equal(r[:len(prefix)], prefix) +} + +func inArray(s string, array []string) bool { + for _, item := range array { + if s == item { + return true + } + } + return false +} + +func lastString(array []string) string { + return array[len(array)-1] +} + +type argOption struct { + Value string + Detail string +} + +func buildArgOptions(response map[string]interface{}, hasID bool) []argOption { + argOptions := []argOption{} + for _, v := range response { + switch obj := v.(type) { + case []interface{}: + if obj == nil { + break + } + for _, item := range obj { + resource, ok := item.(map[string]interface{}) + if !ok { + continue + } + var id, name, detail string + if resource["id"] != nil { + switch rawID := resource["id"].(type) { + case string: + id = rawID + case float64: + id = strconv.FormatFloat(rawID, 'f', -1, 64) + default: + panic(fmt.Errorf("detected an invalid type at path (%v:%T). This should have been caught during validation, indicating a bug in CloudMonkey. Please report this issue", rawID, rawID)) + } + } + if resource["name"] != nil { + name = resource["name"].(string) + } else if resource["username"] != nil { + name = resource["username"].(string) + } else if resource["hypervisor"] != nil && resource["hypervisorversion"] != nil { + name = fmt.Sprintf("%s %s", resource["hypervisor"].(string), resource["hypervisorversion"].(string)) + if resource["osdisplayname"] != nil { + name = fmt.Sprintf("%s; %s", resource["osdisplayname"].(string), name) + } + } + if resource["displaytext"] != nil { + detail = resource["displaytext"].(string) + } + if len(detail) == 0 && resource["description"] != nil { + detail = resource["description"].(string) + } + if len(detail) == 0 && resource["ipaddress"] != nil { + detail = resource["ipaddress"].(string) + } + var opt argOption + if hasID { + opt.Value = id + opt.Detail = name + if len(name) == 0 { + opt.Detail = detail + } + } else { + opt.Value = name + opt.Detail = detail + if len(name) == 0 { + opt.Value = detail + } + } + argOptions = append(argOptions, opt) + } + break + } + } + return argOptions +} + +func doInternal(line []rune, pos int, lineLen int, argName []rune) (newLine [][]rune, offset int) { + offset = lineLen + if lineLen >= len(argName) { + if hasPrefix(line, argName) { + if lineLen == len(argName) { + newLine = append(newLine, []rune{' '}) + } else { + newLine = append(newLine, argName) + } + offset = offset - len(argName) - 1 + } + } else { + if hasPrefix(argName, line) { + newLine = append(newLine, argName[offset:]) + } + } + return +} + +func findAPI(apiMap map[string][]*config.API, relatedNoun string) *config.API { + var autocompleteAPI *config.API + for _, listAPI := range apiMap["list"] { + if relatedNoun == listAPI.Noun { + autocompleteAPI = listAPI + break + } + } + return autocompleteAPI +} + +func findAutocompleteAPI(arg *config.APIArg, apiFound *config.API, apiMap map[string][]*config.API) *config.API { + if arg.Type == "map" { + return nil + } + + var autocompleteAPI *config.API + argName := strings.Replace(arg.Name, "=", "", -1) + relatedNoun := argName + switch { + case argName == "id" || argName == "ids": + // Heuristic: user is trying to autocomplete for id/ids arg for a list API + relatedNoun = apiFound.Noun + if apiFound.Verb != "list" { + relatedNoun += "s" + } + case argName == "account": + // Heuristic: user is trying to autocomplete for accounts + relatedNoun = "accounts" + case argName == "ipaddressid": + // Heuristic: user is trying to autocomplete for ip addresses + relatedNoun = "publicipaddresses" + case argName == "storageid": + relatedNoun = "storagepools" + case argName == "associatednetworkid": + relatedNoun = "networks" + default: + // Heuristic: autocomplete for the arg for which a lists API exists + // For example, for zoneid arg, listZones API exists + base := argName + if strings.HasSuffix(argName, "id") { + base = strings.TrimSuffix(argName, "id") + } else if strings.HasSuffix(argName, "ids") { + base = strings.TrimSuffix(argName, "ids") + } else if argName == "name" { + for _, noun := range nameSupportingApis { + if strings.HasPrefix(apiFound.Noun, noun) { + base = noun + break + } + } + } + // Handle common cases where base ends with a vowel and needs "es" + if strings.HasSuffix(base, "s") || strings.HasSuffix(base, "x") || strings.HasSuffix(base, "z") || strings.HasSuffix(base, "ch") || strings.HasSuffix(base, "sh") { + relatedNoun = base + "es" + } else { + relatedNoun = base + "s" + } + } + + config.Debug("Possible related noun for the arg: ", relatedNoun, " and type: ", arg.Type) + autocompleteAPI = findAPI(apiMap, relatedNoun) + + if autocompleteAPI == nil { + if strings.Contains(strings.ToLower(relatedNoun), "storage") { + relatedNoun = "storagepools" + autocompleteAPI = findAPI(apiMap, relatedNoun) + } + } + + if autocompleteAPI != nil { + config.Debug("Autocomplete: API found using heuristics: ", autocompleteAPI.Name) + } + + if strings.HasSuffix(relatedNoun, "s") { + relatedNoun = relatedNoun[:len(relatedNoun)-1] + } + + // Heuristic: find any list API that contains the arg name + if autocompleteAPI == nil { + config.Debug("Finding possible API that have: ", argName, " related APIs: ", arg.Related) + possibleAPIs := []*config.API{} + for _, listAPI := range apiMap["list"] { + if strings.Contains(listAPI.Noun, argName) { + config.Debug("Found possible API: ", listAPI.Name) + possibleAPIs = append(possibleAPIs, listAPI) + } + } + if len(possibleAPIs) == 1 { + autocompleteAPI = possibleAPIs[0] + } + } + + return autocompleteAPI +} + +type autoCompleter struct { + Config *config.Config +} + +func (t *autoCompleter) Do(line []rune, pos int) (options [][]rune, offset int) { + apiMap := buildAPICacheMap(t.Config.GetAPIVerbMap()) + + var verbs []string + for verb := range apiMap { + verbs = append(verbs, verb) + sort.Slice(apiMap[verb], func(i, j int) bool { + return apiMap[verb][i].Name < apiMap[verb][j].Name + }) + } + sort.Strings(verbs) + + line = trimSpaceLeft(line[:pos]) + + // Auto-complete verb + var verbFound string + for _, verb := range verbs { + search := verb + " " + if !hasPrefix(line, []rune(search)) { + sLine, sOffset := doInternal(line, pos, len(line), []rune(search)) + options = append(options, sLine...) + offset = sOffset + } else { + verbFound = verb + break + } + } + if len(verbFound) == 0 { + return + } + + // Auto-complete noun + var nounFound string + line = trimSpaceLeft(line[len(verbFound):]) + for _, api := range apiMap[verbFound] { + search := api.Noun + " " + if !hasPrefix(line, []rune(search)) { + sLine, sOffset := doInternal(line, pos, len(line), []rune(search)) + options = append(options, sLine...) + offset = sOffset + } else { + nounFound = api.Noun + break + } + } + if len(nounFound) == 0 { + return + } + + // Find API + var apiFound *config.API + for _, api := range apiMap[verbFound] { + if api.Noun == nounFound { + apiFound = api + break + } + } + if apiFound == nil { + return + } + + // Auto-complete API arg + splitLine := strings.Split(string(line), " ") + line = trimSpaceLeft([]rune(splitLine[len(splitLine)-1])) + for _, arg := range apiFound.Args { + search := arg.Name + if !hasPrefix(line, []rune(search)) { + sLine, sOffset := doInternal(line, pos, len(line), []rune(search)) + options = append(options, sLine...) + offset = sOffset + } else { + words := strings.Split(string(line), "=") + argInput := lastString(words) + if arg.Type == "boolean" { + for _, search := range []string{"true ", "false "} { + offset = 0 + if strings.HasPrefix(search, argInput) { + options = append(options, []rune(search[len(argInput):])) + offset = len(argInput) + } + } + return + } + + if arg.Type == config.FAKE && arg.Name == "filter=" { + offset = 0 + filterInputs := strings.Split(strings.Replace(argInput, ",", ",|", -1), "|") + lastFilterInput := lastString(filterInputs) + for _, key := range apiFound.ResponseKeys { + if inArray(key, filterInputs) { + continue + } + if strings.HasPrefix(key, lastFilterInput) { + options = append(options, []rune(key[len(lastFilterInput):])) + offset = len(lastFilterInput) + } + } + return + } + + if arg.Type == config.FAKE && arg.Name == "exclude=" { + offset = 0 + excludeFilterInputs := strings.Split(strings.Replace(argInput, ",", ",|", -1), "|") + lastExcludeFilterInput := lastString(excludeFilterInputs) + for _, key := range apiFound.ResponseKeys { + if inArray(key, excludeFilterInputs) { + continue + } + if strings.HasPrefix(key, lastExcludeFilterInput) { + options = append(options, []rune(key[len(lastExcludeFilterInput):])) + offset = len(lastExcludeFilterInput) + } + } + return + } + + autocompleteAPI := findAutocompleteAPI(arg, apiFound, apiMap) + if autocompleteAPI == nil { + return nil, 0 + } + + completeArgs := t.Config.Core.AutoComplete + autocompleteAPIArgs := []string{} + argOptions := []argOption{} + if completeArgs { + autocompleteAPIArgs = []string{"listall=true"} + if autocompleteAPI.Noun == "templates" { + autocompleteAPIArgs = append(autocompleteAPIArgs, "templatefilter=executable") + } + if autocompleteAPI.Noun == "isos" { + autocompleteAPIArgs = append(autocompleteAPIArgs, "isofilter=executable") + } + + if apiFound.Name != "provisionCertificate" && autocompleteAPI.Name == "listHosts" { + autocompleteAPIArgs = append(autocompleteAPIArgs, "type=Routing") + } else if apiFound.Name == "migrateSystemVm" && autocompleteAPI.Name == "listVirtualMachines" { + autocompleteAPI.Name = "listSystemVms" + } else if apiFound.Name == "associateIpAddress" { + autocompleteAPIArgs = append(autocompleteAPIArgs, "state=Free") + } else if apiFound.Name == "listServiceOfferings" { + if arg.Name == "id=" && strings.Contains(strings.Join(splitLine, " "), "issystem=true") { + autocompleteAPIArgs = append(autocompleteAPIArgs, "issystem=true") + } + } + + spinner := t.Config.StartSpinner("fetching options, please wait...") + request := cmd.NewRequest(nil, completer.Config, nil, false) + response, _ := cmd.NewAPIRequest(request, autocompleteAPI.Name, autocompleteAPIArgs, false) + t.Config.StopSpinner(spinner) + + hasID := strings.HasSuffix(arg.Name, "id=") || strings.HasSuffix(arg.Name, "ids=") || autocompleteAPI.Name == "listUsageTypes" + argOptions = buildArgOptions(response, hasID) + } + + filteredOptions := []argOption{} + if len(argOptions) > 0 { + if autocompleteAPI.Name == "listUsageTypes" { + sort.Slice(argOptions, func(i, j int) bool { + i, _ = strconv.Atoi(argOptions[i].Value) + j, _ = strconv.Atoi(argOptions[j].Value) + return i < j + }) + } else { + sort.Slice(argOptions, func(i, j int) bool { + return argOptions[i].Value < argOptions[j].Value + }) + } + for _, item := range argOptions { + if strings.HasPrefix(item.Value, argInput) || (len(item.Detail) > 0 && strings.HasPrefix(item.Detail, argInput)) { + filteredOptions = append(filteredOptions, item) + } + } + } + offset = 0 + if len(filteredOptions) == 0 { + options = [][]rune{[]rune("")} + } + for _, item := range filteredOptions { + option := item.Value + " " + if len(filteredOptions) > 0 && len(item.Detail) > 0 { + option += fmt.Sprintf("(%v)", item.Detail) + } + if strings.HasPrefix(option, argInput) { + options = append(options, []rune(option[len(argInput):])) + offset = len(argInput) + } else if len(item.Detail) > 0 && strings.HasPrefix(item.Detail, argInput) { + options = append(options, []rune(option)) + } + } + return + } + } + + return options, offset +} diff --git a/cli/exec.go b/cli/exec.go new file mode 100644 index 00000000..1b4a0d47 --- /dev/null +++ b/cli/exec.go @@ -0,0 +1,69 @@ +// Licensed to the Apache Software Foundation (ASF) under one +// or more contributor license agreements. See the NOTICE file +// distributed with this work for additional information +// regarding copyright ownership. The ASF licenses this file +// to you under the Apache License, Version 2.0 (the +// "License"); you may not use this file except in compliance +// with the License. You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, +// software distributed under the License is distributed on an +// "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY +// KIND, either express or implied. See the License for the +// specific language governing permissions and limitations +// under the License. + +package cli + +import ( + "fmt" + "os" + "os/exec" + "runtime" + "strings" + + "github.com/apache/cloudstack-cloudmonkey/cmd" + "github.com/apache/cloudstack-cloudmonkey/config" + "github.com/google/shlex" +) + +// ExecLine executes a line of command +func ExecLine(line string) error { + config.Debug("ExecLine line:", line) + args, err := shlex.Split(line) + if err != nil { + return err + } + + if runtime.GOOS != "windows" { + for _, arg := range args { + if arg == "|" { + fullCommand := fmt.Sprintf("%s %v", strings.Join(os.Args, " "), line) + result, err := exec.Command("bash", "-c", fullCommand).Output() + fmt.Print(string(result)) + return err + } + } + } + + return ExecCmd(args, false) +} + +// ExecCmd executes a single provided command +func ExecCmd(args []string, credentialsSupplied bool) error { + config.Debug("ExecCmd args: ", strings.Join(args, ", ")) + if len(args) < 1 { + return nil + } + + command := cmd.FindCommand(args[0]) + if command != nil && !(args[0] == "sync" && len(args) > 1) { + r := cmd.NewRequest(command, cfg, args[1:], credentialsSupplied) + return command.Handle(r) + } + + catchAllHandler := cmd.GetAPIHandler() + return catchAllHandler.Handle(cmd.NewRequest(catchAllHandler, cfg, args, credentialsSupplied)) +} diff --git a/cli/prompt.go b/cli/prompt.go new file mode 100644 index 00000000..8d3813d2 --- /dev/null +++ b/cli/prompt.go @@ -0,0 +1,89 @@ +// Licensed to the Apache Software Foundation (ASF) under one +// or more contributor license agreements. See the NOTICE file +// distributed with this work for additional information +// regarding copyright ownership. The ASF licenses this file +// to you under the Apache License, Version 2.0 (the +// "License"); you may not use this file except in compliance +// with the License. You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, +// software distributed under the License is distributed on an +// "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY +// KIND, either express or implied. See the License for the +// specific language governing permissions and limitations +// under the License. + +package cli + +import ( + "fmt" + "io" + "strings" + + "github.com/apache/cloudstack-cloudmonkey/config" + "github.com/chzyer/readline" +) + +// CLI config instance +var cfg *config.Config + +// SetConfig allows to set a config.Config object to cli +func SetConfig(c *config.Config) { + cfg = c +} + +var completer *autoCompleter +var shell *readline.Instance + +// ExecPrompt starts a CLI prompt +func ExecPrompt() { + completer = &autoCompleter{ + Config: cfg, + } + shell, err := readline.NewEx(&readline.Config{ + Prompt: cfg.GetPrompt(), + HistoryFile: cfg.HistoryFile, + AutoComplete: completer, + InterruptPrompt: "^C", + EOFPrompt: "exit", + VimMode: false, + HistorySearchFold: true, + FuncFilterInputRune: func(r rune) (rune, bool) { + switch r { + case readline.CharCtrlZ: + return r, false + } + return r, true + }, + }) + + if err != nil { + panic(err) + } + defer shell.Close() + + cfg.HasShell = true + cfg.PrintHeader() + + for { + shell.SetPrompt(cfg.GetPrompt()) + line, err := shell.Readline() + if err == readline.ErrInterrupt { + continue + } else if err == io.EOF { + break + } + + line = strings.TrimSpace(line) + if len(line) < 1 { + continue + } + + if err = ExecLine(line); err != nil { + fmt.Println("🙈 Error:", err) + } + } + +} diff --git a/cloudmonkey/cachemaker.py b/cloudmonkey/cachemaker.py deleted file mode 100644 index 47749e5a..00000000 --- a/cloudmonkey/cachemaker.py +++ /dev/null @@ -1,181 +0,0 @@ -# -*- coding: utf-8 -*- -# Licensed to the Apache Software Foundation (ASF) under one -# or more contributor license agreements. See the NOTICE file -# distributed with this work for additional information -# regarding copyright ownership. The ASF licenses this file -# to you under the Apache License, Version 2.0 (the -# "License"); you may not use this file except in compliance -# with the License. You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, -# software distributed under the License is distributed on an -# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY -# KIND, either express or implied. See the License for the -# specific language governing permissions and limitations -# under the License. - -try: - import json - import os - import types - - from config import config_fields -except ImportError, e: - import sys - print "ImportError", e - sys.exit(1) - - -def getvalue(dictionary, key): - if key in dictionary: - return dictionary[key] - else: - return None - - -def splitcsvstring(string): - if string is not None: - return filter(lambda x: x.strip() != '', string.split(',')) - else: - return [] - - -def splitverbsubject(string): - idx = 0 - for char in string: - if char.islower(): - idx += 1 - else: - break - return string[:idx].lower(), string[idx:].lower() - - -def savecache(apicache, json_file): - """ - Saves apicache dictionary as json_file, returns dictionary as indented str - """ - if apicache is None or apicache is {}: - return "" - apicachestr = json.dumps(apicache, indent=2) - with open(json_file, 'w') as cache_file: - cache_file.write(apicachestr) - return apicachestr - - -def loadcache(json_file): - """ - Loads json file as dictionary, feeds it to monkeycache and spits result - """ - f = open(json_file, 'r') - data = f.read() - f.close() - try: - apicache = json.loads(data) - except ValueError, e: - print "Error processing json:", json_file, e - return {} - return apicache - - -def monkeycache(apis): - """ - Feed this a dictionary of api bananas, it spits out processed cache - """ - if isinstance(type(apis), types.NoneType) or apis is None: - return {} - - responsekey = filter(lambda x: 'response' in x, apis.keys()) - - if len(responsekey) == 0: - print "[monkeycache] Invalid dictionary, has no response" - return None - if len(responsekey) != 1: - print "[monkeycache] Multiple responsekeys, chosing first one" - - responsekey = responsekey[0] - verbs = set() - cache = {} - cache['count'] = getvalue(apis[responsekey], 'count') - cache['asyncapis'] = [] - - apilist = getvalue(apis[responsekey], 'api') - if apilist is None: - print "[monkeycache] Server response issue, no apis found" - - for api in apilist: - name = getvalue(api, 'name') - verb, subject = splitverbsubject(name) - - apidict = {} - apidict['name'] = name - apidict['description'] = getvalue(api, 'description') - apidict['isasync'] = getvalue(api, 'isasync') - if apidict['isasync']: - cache['asyncapis'].append(name) - apidict['related'] = splitcsvstring(getvalue(api, 'related')) - - required = [] - apiparams = [] - for param in getvalue(api, 'params'): - apiparam = {} - apiparam['name'] = getvalue(param, 'name') - apiparam['description'] = getvalue(param, 'description') - apiparam['required'] = (getvalue(param, 'required') is True) - apiparam['length'] = int(getvalue(param, 'length')) - apiparam['type'] = getvalue(param, 'type') - apiparam['related'] = splitcsvstring(getvalue(param, 'related')) - if apiparam['required']: - required.append(apiparam['name']) - apiparams.append(apiparam) - - apidict['requiredparams'] = required - apidict['params'] = apiparams - if verb not in cache: - cache[verb] = {} - cache[verb][subject] = apidict - verbs.add(verb) - - cache['verbs'] = list(verbs) - return cache - - -def main(json_file): - """ - cachemaker.py creates a precache datastore of all available apis of - CloudStack and dumps the precache dictionary in an - importable python module. This way we cheat on the runtime overhead of - completing commands and help docs. This reduces the overall search and - cache_miss (computation) complexity from O(n) to O(1) for any valid cmd. - """ - f = open("precache.py", "w") - f.write("""# -*- coding: utf-8 -*- -# Auto-generated code by cachemaker.py -# Licensed to the Apache Software Foundation (ASF) under one -# or more contributor license agreements. See the NOTICE file -# distributed with this work for additional information -# regarding copyright ownership. The ASF licenses this file -# to you under the Apache License, Version 2.0 (the -# "License"); you may not use this file except in compliance -# with the License. You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, -# software distributed under the License is distributed on an -# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY -# KIND, either express or implied. See the License for the -# specific language governing permissions and limitations -# under the License.""") - f.write("\napicache = %s" % loadcache(json_file)) - f.close() - -if __name__ == "__main__": - cache_file = config_fields['core']['cache_file'] - print "[cachemaker] Pre-caching using user's cloudmonkey cache", cache_file - if os.path.exists(cache_file): - main(cache_file) - else: - print "[cachemaker] Unable to cache apis, file not found", cache_file - print "[cachemaker] Run cloudmonkey sync to generate cache" diff --git a/cloudmonkey/cloudmonkey.py b/cloudmonkey/cloudmonkey.py deleted file mode 100644 index 16172b3c..00000000 --- a/cloudmonkey/cloudmonkey.py +++ /dev/null @@ -1,634 +0,0 @@ -#!/usr/bin/python -# -*- coding: utf-8 -*- -# Licensed to the Apache Software Foundation (ASF) under one -# or more contributor license agreements. See the NOTICE file -# distributed with this work for additional information -# regarding copyright ownership. The ASF licenses this file -# to you under the Apache License, Version 2.0 (the -# "License"); you may not use this file except in compliance -# with the License. You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, -# software distributed under the License is distributed on an -# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY -# KIND, either express or implied. See the License for the -# specific language governing permissions and limitations -# under the License. - -try: - import argcomplete - import argparse - import atexit - import cmd - import json - import logging - import os - import shlex - import sys - import types - import copy - import urllib - - from cachemaker import loadcache, savecache, monkeycache, splitverbsubject - from config import __version__, __description__, __projecturl__ - from config import read_config, write_config, config_file, default_profile - from optparse import OptionParser - from prettytable import PrettyTable - from printer import monkeyprint - from requester import monkeyrequest - from requester import login - from requester import logout - from urlparse import urlparse -except ImportError, e: - print("Import error in %s : %s" % (__name__, e)) - import sys - sys.exit() - -try: - from precache import apicache -except ImportError: - apicache = {'count': 0, 'verbs': [], 'asyncapis': []} - -try: - import readline -except ImportError, e: - print("Module readline not found, autocompletions will fail", e) -else: - import rlcompleter - if 'libedit' in readline.__doc__: - readline.parse_and_bind("bind ^I rl_complete") - else: - readline.parse_and_bind("tab: complete") - -log_fmt = '%(asctime)s - %(filename)s:%(lineno)s - [%(levelname)s] %(message)s' -logger = logging.getLogger(__name__) - - -class CloudMonkeyShell(cmd.Cmd, object): - intro = ("☁ Apache CloudStack 🐵 cloudmonkey " + __version__ + - ". Type help or ? to list commands.\n") - ruler = "=" - config_options = [] - profile_names = [] - verbs = [] - prompt = "🐵 > " - protocol = "http" - host = "localhost" - port = "8080" - path = "/client/api" - - def __init__(self, pname, cfile): - self.program_name = pname - self.config_file = cfile - self.config_options = read_config(self.get_attr, self.set_attr, - self.config_file) - self.loadcache() - self.init_credential_store() - logging.basicConfig(filename=self.log_file, - level=logging.DEBUG, format=log_fmt) - logger.debug("Loaded config fields:\n%s" % map(lambda x: "%s=%s" % - (x, getattr(self, x)), - self.config_options)) - cmd.Cmd.__init__(self) - - try: - if os.path.exists(self.history_file): - readline.read_history_file(self.history_file) - except IOError, e: - logger.debug("Error: Unable to read history. " + str(e)) - atexit.register(readline.write_history_file, self.history_file) - - def init_credential_store(self): - self.credentials = {'apikey': self.apikey, 'secretkey': self.secretkey, - 'username': self.username, - 'password': self.password} - parsed_url = urlparse(self.url) - self.protocol = "http" if not parsed_url.scheme else parsed_url.scheme - self.host = parsed_url.netloc - self.port = "8080" if not parsed_url.port else parsed_url.port - self.path = parsed_url.path - self.set_prompt() - - def get_prompt(self): - return self.prompt.split(") ")[-1] - - def set_prompt(self): - self.prompt = "(%s) %s" % (self.profile, self.get_prompt()) - - def get_attr(self, field): - return getattr(self, field) - - def set_attr(self, field, value): - return setattr(self, field, value) - - def emptyline(self): - pass - - def cmdloop(self, intro=None): - print(self.intro) - print "Using management server profile:", self.profile, "\n" - while True: - try: - super(CloudMonkeyShell, self).cmdloop(intro="") - except KeyboardInterrupt: - print("^C") - - def loadcache(self): - if os.path.exists(self.cache_file): - self.apicache = loadcache(self.cache_file) - else: - self.apicache = apicache - if 'verbs' in self.apicache: - self.verbs = self.apicache['verbs'] - - for verb in self.verbs: - def add_grammar(verb): - def grammar_closure(self, args): - if args is None: - return - if self.pipe_runner("%s %s" % (verb, args)): - return - if ' --help' in args or ' -h' in args: - self.do_help("%s %s" % (verb, args)) - return - try: - args_partition = args.partition(" ") - cmd = self.apicache[verb][args_partition[0]]['name'] - args = args_partition[2] - except KeyError, e: - self.monkeyprint("Error: invalid %s api arg" % verb, e) - return - self.default("%s %s" % (cmd, args)) - return grammar_closure - - grammar_handler = add_grammar(verb) - grammar_handler.__doc__ = "%ss resources" % verb.capitalize() - grammar_handler.__name__ = 'do_' + str(verb) - setattr(self.__class__, grammar_handler.__name__, grammar_handler) - - def monkeyprint(self, *args): - output = "" - try: - for arg in args: - if isinstance(type(arg), types.NoneType): - continue - output += str(arg) - except Exception, e: - print(e) - - if self.color == 'true': - monkeyprint(output) - else: - if output.startswith("Error"): - sys.stderr.write(output + "\n") - else: - print output - - def print_result(self, result, result_filter=[]): - if result is None or len(result) == 0: - return - - def printer_helper(printer, toprow): - if printer: - self.monkeyprint(printer) - return PrettyTable(toprow) - - def print_result_json(result, result_filter=None): - tfilter = {} # temp var to hold a dict of the filters - tresult = copy.deepcopy(result) # dupe the result to filter - if result_filter is not None: - for res in result_filter: - tfilter[res] = 1 - for okey, oval in result.iteritems(): - if isinstance(oval, dict): - for tkey in oval: - if tkey not in tfilter: - try: - del(tresult[okey][oval][tkey]) - except: - pass - elif isinstance(oval, list): - for x in range(len(oval)): - if isinstance(oval[x], dict): - for tkey in oval[x]: - if tkey not in tfilter: - try: - del(tresult[okey][x][tkey]) - except: - pass - else: - try: - del(tresult[okey][x]) - except: - pass - print json.dumps(tresult, - sort_keys=True, - indent=2, - separators=(',', ': ')) - - def print_result_tabular(result, result_filter=None): - toprow = None - printer = None - for node in result: - if toprow != node.keys(): - if result_filter is not None and len(result_filter) != 0: - commonkeys = filter(lambda x: x in node.keys(), - result_filter) - if commonkeys != toprow: - toprow = commonkeys - printer = printer_helper(printer, toprow) - else: - toprow = node.keys() - printer = printer_helper(printer, toprow) - row = map(lambda x: node[x], toprow) - if printer and row: - printer.add_row(row) - if printer: - self.monkeyprint(printer) - - def print_result_as_dict(result, result_filter=[]): - if self.display == "json": - print_result_json(result, result_filter) - return - - for key in sorted(result.keys(), key=lambda x: - x not in ['id', 'count', 'name'] and x): - if not (isinstance(result[key], list) or - isinstance(result[key], dict)): - if result_filter is not None and key not in result_filter: - continue - if result_filter is not None and len(result_filter) == 1: - self.monkeyprint(result[key]) - else: - self.monkeyprint("%s = %s" % (key, result[key])) - else: - if result_filter is not None and key not in result_filter: - self.print_result(result[key], result_filter) - continue - self.monkeyprint(key + ":") - self.print_result(result[key], result_filter) - - def print_result_as_list(result, filter=[]): - for node in result: - if isinstance(node, dict) and self.display == 'table': - print_result_tabular(result, filter) - break - self.print_result(node, filter) - if result and (filter is None or len(filter) != 1): - self.monkeyprint(self.ruler * 80) - - if isinstance(result, dict): - print_result_as_dict(result, result_filter) - elif isinstance(result, list): - print_result_as_list(result, result_filter) - elif isinstance(result, str): - print result - elif not (str(result) is None): - self.monkeyprint(result) - - def make_request(self, command, args={}, isasync=False): - response, error = monkeyrequest(command, args, isasync, - self.asyncblock, logger, - self.url, self.credentials, - self.timeout, self.expires) - if error is not None: - self.monkeyprint("Error " + error) - return response - - def default(self, args): - if self.pipe_runner(args): - return - - apiname = args.partition(' ')[0] - verb, subject = splitverbsubject(apiname) - - lexp = shlex.shlex(args.strip()) - lexp.whitespace = " " - lexp.whitespace_split = True - lexp.posix = True - args = [] - while True: - next_val = lexp.next() - if next_val is None: - break - args.append(next_val.replace('\x00', '')) - - args_dict = dict(map(lambda x: [x.partition("=")[0], - x.partition("=")[2]], - args[1:])[x] for x in range(len(args) - 1)) - field_filter = None - if 'filter' in args_dict: - field_filter = filter(lambda x: x is not '', - map(lambda x: x.strip(), - args_dict.pop('filter').split(','))) - - missing = [] - if verb in self.apicache and subject in self.apicache[verb]: - missing = filter(lambda x: x not in [key.split('[')[0] - for key in args_dict], - self.apicache[verb][subject]['requiredparams']) - - if len(missing) > 0: - self.monkeyprint("Missing arguments: ", ' '.join(missing)) - return - - isasync = False - if 'asyncapis' in self.apicache: - isasync = apiname in self.apicache['asyncapis'] - - for key in args_dict.keys(): - args_dict[key] = urllib.quote(args_dict[key]) - - result = self.make_request(apiname, args_dict, isasync) - - if result is None: - return - try: - responsekeys = filter(lambda x: 'response' in x, result.keys()) - for responsekey in responsekeys: - self.print_result(result[responsekey], field_filter) - print - except Exception as e: - self.monkeyprint("Error on parsing and printing", e) - - def completedefault(self, text, line, begidx, endidx): - partitions = line.partition(" ") - verb = partitions[0].strip() - rline = partitions[2].lstrip().partition(" ") - subject = rline[0] - separator = rline[1] - params = rline[2].lstrip() - - if verb not in self.verbs: - return [] - - autocompletions = [] - search_string = "" - - if separator != " ": # Complete verb subjects - autocompletions = self.apicache[verb].keys() - search_string = subject - else: # Complete subject params - autocompletions = map(lambda x: x + "=", - map(lambda x: x['name'], - self.apicache[verb][subject]['params'])) - search_string = text - if self.paramcompletion == 'true': - param = line.split(" ")[-1] - idx = param.find("=") - value = param[idx + 1:] - param = param[:idx] - if len(value) < 36 and idx != -1: - params = self.apicache[verb][subject]['params'] - related = filter(lambda x: x['name'] == param, - params)[0]['related'] - api = min(filter(lambda x: 'list' in x, related), key=len) - response = self.make_request(api, args={'listall': 'true'}) - responsekey = filter(lambda x: 'response' in x, - response.keys())[0] - result = response[responsekey] - uuids = [] - for key in result.keys(): - if isinstance(result[key], list): - for element in result[key]: - if 'id' in element.keys(): - uuids.append(element['id']) - autocompletions = uuids - search_string = value - - if subject != "": - autocompletions.append("filter=") - return [s for s in autocompletions if s.startswith(search_string)] - - def do_sync(self, args): - """ - Asks cloudmonkey to discovery and sync apis available on user specified - CloudStack host server which has the API discovery plugin, on failure - it rollbacks last datastore or api precached datastore. - """ - response = self.make_request("listApis") - if response is None: - monkeyprint("Failed to sync apis, please check your config?") - monkeyprint("Note: `sync` requires api discovery service enabled" + - " on the CloudStack management server") - return - self.apicache = monkeycache(response) - savecache(self.apicache, self.cache_file) - monkeyprint("%s APIs discovered and cached" % self.apicache["count"]) - self.loadcache() - - def do_api(self, args): - """ - Make raw api calls. Syntax: api =. - - Example: - api listAccount listall=true - """ - if len(args) > 0: - return self.default(args) - else: - self.monkeyprint("Please use a valid syntax") - - def do_set(self, args): - """ - Set config for cloudmonkey. For example, options can be: - url, auth, log_file, history_file - You may also edit your ~/.cloudmonkey_config instead of using set. - - Example: - set url http://localhost:8080/client/api - set prompt 🐵 cloudmonkey> - set log_file /var/log/cloudmonkey.log - """ - args = args.strip().partition(" ") - key, value = (args[0].strip(), args[2].strip()) - if not key: - return - if not value: - print "Blank value of %s is not allowed" % key - return - - self.prompt = self.get_prompt() - setattr(self, key, value) - if key in ['host', 'port', 'path', 'protocol']: - key = 'url' - self.url = "%s://%s:%s%s" % (self.protocol, self.host, - self.port, self.path) - print "This option has been deprecated, please set 'url' instead" - print "This server url will be used:", self.url - write_config(self.get_attr, self.config_file) - read_config(self.get_attr, self.set_attr, self.config_file) - self.init_credential_store() - if key.strip() == 'profile': - print "\nLoaded server profile '%s' with options:" % value - for option in default_profile.keys(): - print " %s = %s" % (option, self.get_attr(option)) - print - - def complete_set(self, text, line, begidx, endidx): - mline = line.partition(" ")[2].lstrip().partition(" ") - option = mline[0].strip() - separator = mline[1] - value = mline[2].lstrip() - if separator == "": - return [s for s in self.config_options if s.startswith(option)] - elif option == "profile": - return [s for s in self.profile_names if s.startswith(value)] - elif option == "display": - return [s for s in ["default", "table", "json"] - if s.startswith(value)] - elif option == "asyncblock" or option == "color": - return [s for s in ["true", "false"] if s.startswith(value)] - - return [] - - def do_login(self, args): - """ - Login using stored credentials. Starts a session to be reused for - subsequent api calls - """ - try: - session, sessionkey = login(self.url, self.username, self.password) - self.credentials['session'] = session - self.credentials['sessionkey'] = sessionkey - except Exception, e: - self.monkeyprint("Error: Login failed to the server: ", str(e)) - - def do_logout(self, args): - """ - Logout of session started with login with username and password - """ - try: - logout(self.url, self.credentials.get('session')) - except Exception, e: - pass - self.credentials['session'] = None - self.credentials['sessionkey'] = None - - def pipe_runner(self, args): - if args.find(' |') > -1: - pname = self.program_name - if '.py' in pname: - pname = "python " + pname - self.do_shell("%s %s" % (pname, args)) - return True - return False - - def do_shell(self, args): - """ - Execute shell commands using shell or ! - - Example: - !ls - shell ls - !for((i=0; i<10; i++)); do cloudmonkey create user account=admin \ - email=test@test.tt firstname=user$i lastname=user$i \ - password=password username=user$i; done - """ - os.system(args) - - def do_help(self, args): - """ - Show help docs for various topics - - Example: - help list - help list users - ?list - ?list users - """ - fields = args.partition(" ") - if fields[2] == "": - cmd.Cmd.do_help(self, args) - else: - verb = fields[0] - subject = fields[2].partition(" ")[0] - if subject in self.apicache[verb]: - api = self.apicache[verb][subject] - helpdoc = "(%s) %s" % (api['name'], api['description']) - if api['isasync']: - helpdoc += "\nThis API is asynchronous." - required = api['requiredparams'] - if len(required) > 0: - helpdoc += "\nRequired params are %s" % ' '.join(required) - helpdoc += "\nParameters\n" + "=" * 10 - for param in api['params']: - helpdoc += "\n%s = (%s) %s" % ( - param['name'], param['type'], - param['description']) - self.monkeyprint(helpdoc) - else: - self.monkeyprint("Error: no such api (%s) on %s" % - (subject, verb)) - - def complete_help(self, text, line, begidx, endidx): - fields = line.partition(" ") - subfields = fields[2].partition(" ") - - if subfields[1] != " ": - return cmd.Cmd.complete_help(self, text, line, begidx, endidx) - else: - line = fields[2] - text = subfields[2] - return self.completedefault(text, line, begidx, endidx) - - def do_EOF(self, args): - """ - Quit on Ctrl+d or EOF - """ - self.do_logout(None) - sys.exit() - - def do_exit(self, args): - """ - Quit CloudMonkey CLI - """ - return self.do_quit(args) - - def do_quit(self, args): - """ - Quit CloudMonkey CLI - """ - self.monkeyprint("Bye!") - return self.do_EOF(args) - - -def main(): - displayTypes = ["json", "table", "default"] - parser = argparse.ArgumentParser(usage="cloudmonkey [options] [commands]", - version="cloudmonkey " + __version__, - description=__description__, - epilog="Try cloudmonkey [help|?]") - - parser.add_argument("-c", "--config-file", - dest="configFile", default=config_file, - help="Config file for cloudmonkey", metavar="FILE") - - parser.add_argument("-d", "--display-type", - dest="displayType", default=None, - help="Output display type, json, table or default", - choices=tuple(displayTypes)) - - parser.add_argument("commands", nargs=argparse.REMAINDER, - help="API commands") - - argcomplete.autocomplete(parser) - args = parser.parse_args() - - shell = CloudMonkeyShell(sys.argv[0], args.configFile) - - if args.displayType is not None and args.displayType in displayTypes: - shell.set_attr("display", args.displayType) - - if len(args.commands) > 0: - shell.set_attr("color", "false") - shell.onecmd(" ".join(map(lambda x: x.replace("\\ ", " ") - .replace(" ", "\\ "), - args.commands))) - else: - shell.cmdloop() - -if __name__ == "__main__": - main() diff --git a/cloudmonkey/config.py b/cloudmonkey/config.py deleted file mode 100644 index 33362743..00000000 --- a/cloudmonkey/config.py +++ /dev/null @@ -1,197 +0,0 @@ -# -*- coding: utf-8 -*- -# Licensed to the Apache Software Foundation (ASF) under one -# or more contributor license agreements. See the NOTICE file -# distributed with this work for additional information -# regarding copyright ownership. The ASF licenses this file -# to you under the Apache License, Version 2.0 (the -# "License"); you may not use this file except in compliance -# with the License. You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, -# software distributed under the License is distributed on an -# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY -# KIND, either express or implied. See the License for the -# specific language governing permissions and limitations -# under the License. - -__version__ = "5.3.0" -__description__ = "Command Line Interface for Apache CloudStack" -__maintainer__ = "The Apache CloudStack Team" -__maintaineremail__ = "dev@cloudstack.apache.org" -__project__ = "The Apache CloudStack Team" -__projectemail__ = "dev@cloudstack.apache.org" -__projecturl__ = "http://cloudstack.apache.org" - -try: - import os - import sys - - from ConfigParser import ConfigParser - from os.path import expanduser -except ImportError, e: - print "ImportError", e - -param_type = ['boolean', 'date', 'float', 'integer', 'short', 'list', - 'long', 'object', 'map', 'string', 'tzdate', 'uuid'] - -iterable_type = ['set', 'list', 'object'] - -config_dir = expanduser('~/.cloudmonkey') -config_file = expanduser(config_dir + '/config') - -# cloudmonkey config fields -mandatory_sections = ['core', 'ui'] -default_profile_name = 'local' -config_fields = {'core': {}, 'ui': {}} - -# core -config_fields['core']['asyncblock'] = 'true' -config_fields['core']['paramcompletion'] = 'false' -config_fields['core']['cache_file'] = expanduser(config_dir + '/cache') -config_fields['core']['history_file'] = expanduser(config_dir + '/history') -config_fields['core']['log_file'] = expanduser(config_dir + '/log') -config_fields['core']['profile'] = default_profile_name - -# ui -config_fields['ui']['color'] = 'true' -config_fields['ui']['prompt'] = '🐵 > ' -config_fields['ui']['display'] = 'default' - -# default profile -default_profile = {} -default_profile['url'] = 'http://localhost:8080/client/api' -default_profile['timeout'] = '3600' -default_profile['expires'] = '600' -default_profile['username'] = 'admin' -default_profile['password'] = 'password' -default_profile['apikey'] = '' -default_profile['secretkey'] = '' - - -def write_config(get_attr, config_file): - global config_fields, mandatory_sections - global default_profile, default_profile_name - config = ConfigParser() - if os.path.exists(config_file): - try: - with open(config_file, 'r') as cfg: - config.readfp(cfg) - except IOError, e: - print "Error: config_file not found", e - - profile = None - try: - profile = get_attr('profile') - except AttributeError, e: - pass - if profile is None or profile == '': - profile = default_profile_name - if profile in mandatory_sections: - print "Server profile name cannot be", profile - sys.exit(1) - - has_profile_changed = False - profile_in_use = default_profile_name - try: - profile_in_use = config.get('core', 'profile') - except Exception: - pass - if profile_in_use != profile: - has_profile_changed = True - - for section in (mandatory_sections + [profile]): - if not config.has_section(section): - try: - config.add_section(section) - if section not in mandatory_sections: - for key in default_profile.keys(): - config.set(section, key, default_profile[key]) - else: - for key in config_fields[section].keys(): - config.set(section, key, config_fields[section][key]) - except ValueError, e: - print "Server profile name cannot be", profile - sys.exit(1) - if section in mandatory_sections: - section_keys = config_fields[section].keys() - else: - section_keys = default_profile.keys() - for key in section_keys: - try: - if not (has_profile_changed and section == profile): - config.set(section, key, get_attr(key)) - except Exception: - pass - with open(config_file, 'w') as cfg: - config.write(cfg) - return config - - -def read_config(get_attr, set_attr, config_file): - global config_fields, config_dir, mandatory_sections - global default_profile, default_profile_name - if not os.path.exists(config_dir): - os.makedirs(config_dir) - - config_options = reduce(lambda x, y: x + y, map(lambda x: - config_fields[x].keys(), config_fields.keys())) - config_options += default_profile.keys() - - config = ConfigParser() - if os.path.exists(config_file): - try: - with open(config_file, 'r') as cfg: - config.readfp(cfg) - except IOError, e: - print "Error: config_file not found", e - else: - config = write_config(get_attr, config_file) - print "Welcome! Use the `set` command to configure options" - print "Config file:", config_file - print "After setting up, run the `sync` command to sync apis\n" - - missing_keys = [] - profile = config.get('core', 'profile') - if profile is None or profile == '' or profile in mandatory_sections: - print "Server profile cannot be", profile - sys.exit(1) - - set_attr("profile_names", filter(lambda x: x != "core" and x != "ui", - config.sections())) - - if not config.has_section(profile): - print "Selected profile (%s) does not exist, using defaults" % profile - try: - config.add_section(profile) - except ValueError, e: - print "Server profile name cannot be", profile - sys.exit(1) - for key in default_profile.keys(): - config.set(profile, key, default_profile[key]) - - for section in (mandatory_sections + [profile]): - if section in mandatory_sections: - section_keys = config_fields[section].keys() - else: - section_keys = default_profile.keys() - for key in section_keys: - try: - set_attr(key, config.get(section, key)) - except Exception, e: - if section in mandatory_sections: - set_attr(key, config_fields[section][key]) - else: - set_attr(key, default_profile[key]) - missing_keys.append(key) - # Cosmetic fix for prompt - if key == 'prompt': - set_attr(key, get_attr('prompt').strip() + " ") - - if len(missing_keys) > 0: - print "Missing configuration was set using default values for keys:" - print "`%s` in %s" % (', '.join(missing_keys), config_file) - write_config(get_attr, config_file) - - return config_options diff --git a/cloudmonkey/precache.py b/cloudmonkey/precache.py deleted file mode 100644 index 6780f580..00000000 --- a/cloudmonkey/precache.py +++ /dev/null @@ -1,19 +0,0 @@ -# -*- coding: utf-8 -*- -# Auto-generated code by cachemaker.py -# Licensed to the Apache Software Foundation (ASF) under one -# or more contributor license agreements. See the NOTICE file -# distributed with this work for additional information -# regarding copyright ownership. The ASF licenses this file -# to you under the Apache License, Version 2.0 (the -# "License"); you may not use this file except in compliance -# with the License. You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, -# software distributed under the License is distributed on an -# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY -# KIND, either express or implied. See the License for the -# specific language governing permissions and limitations -# under the License. -apicache = {u'authorize': {u'securitygroupingress': {u'name': u'authorizeSecurityGroupIngress', u'related': [u'authorizeSecurityGroupEgress'], u'isasync': True, u'params': [{u'name': u'projectid', u'required': False, u'related': [u'listProjects', u'activateProject', u'updateProject', u'listProjectAccounts', u'createProject'], u'length': 255, u'type': u'uuid', u'description': u'an optional project of the security group'}, {u'name': u'securitygroupid', u'required': False, u'related': [u'listSecurityGroups', u'createSecurityGroup'], u'length': 255, u'type': u'uuid', u'description': u'The ID of the security group. Mutually exclusive with securityGroupName parameter'}, {u'name': u'icmptype', u'required': False, u'related': [], u'length': 255, u'type': u'integer', u'description': u'type of the icmp message being sent'}, {u'name': u'icmpcode', u'required': False, u'related': [], u'length': 255, u'type': u'integer', u'description': u'error code for this icmp message'}, {u'name': u'usersecuritygrouplist', u'required': False, u'related': [], u'length': 255, u'type': u'map', u'description': u'user to security group mapping'}, {u'name': u'protocol', u'required': False, u'related': [], u'length': 255, u'type': u'string', u'description': u'TCP is default. UDP is the other supported protocol'}, {u'name': u'account', u'required': False, u'related': [], u'length': 255, u'type': u'string', u'description': u'an optional account for the security group. Must be used with domainId.'}, {u'name': u'domainid', u'required': False, u'related': [u'listDomains', u'updateDomain', u'createDomain', u'listDomainChildren'], u'length': 255, u'type': u'uuid', u'description': u'an optional domainId for the security group. If the account parameter is used, domainId must also be used.'}, {u'name': u'endport', u'required': False, u'related': [], u'length': 255, u'type': u'integer', u'description': u'end port for this ingress rule'}, {u'name': u'securitygroupname', u'required': False, u'related': [], u'length': 255, u'type': u'string', u'description': u'The name of the security group. Mutually exclusive with securityGroupName parameter'}, {u'name': u'startport', u'required': False, u'related': [], u'length': 255, u'type': u'integer', u'description': u'start port for this ingress rule'}, {u'name': u'cidrlist', u'required': False, u'related': [], u'length': 255, u'type': u'list', u'description': u'the cidr list associated'}], u'requiredparams': [], u'description': u'Authorizes a particular ingress rule for this security group'}, u'securitygroupegress': {u'name': u'authorizeSecurityGroupEgress', u'related': [], u'isasync': True, u'params': [{u'name': u'cidrlist', u'required': False, u'related': [], u'length': 255, u'type': u'list', u'description': u'the cidr list associated'}, {u'name': u'usersecuritygrouplist', u'required': False, u'related': [], u'length': 255, u'type': u'map', u'description': u'user to security group mapping'}, {u'name': u'domainid', u'required': False, u'related': [u'listDomains', u'updateDomain', u'listDomainChildren'], u'length': 255, u'type': u'uuid', u'description': u'an optional domainId for the security group. If the account parameter is used, domainId must also be used.'}, {u'name': u'projectid', u'required': False, u'related': [u'updateProject', u'createProject'], u'length': 255, u'type': u'uuid', u'description': u'an optional project of the security group'}, {u'name': u'protocol', u'required': False, u'related': [], u'length': 255, u'type': u'string', u'description': u'TCP is default. UDP is the other supported protocol'}, {u'name': u'securitygroupid', u'required': False, u'related': [u'listSecurityGroups'], u'length': 255, u'type': u'uuid', u'description': u'The ID of the security group. Mutually exclusive with securityGroupName parameter'}, {u'name': u'securitygroupname', u'required': False, u'related': [], u'length': 255, u'type': u'string', u'description': u'The name of the security group. Mutually exclusive with securityGroupName parameter'}, {u'name': u'icmpcode', u'required': False, u'related': [], u'length': 255, u'type': u'integer', u'description': u'error code for this icmp message'}, {u'name': u'icmptype', u'required': False, u'related': [], u'length': 255, u'type': u'integer', u'description': u'type of the icmp message being sent'}, {u'name': u'endport', u'required': False, u'related': [], u'length': 255, u'type': u'integer', u'description': u'end port for this egress rule'}, {u'name': u'account', u'required': False, u'related': [], u'length': 255, u'type': u'string', u'description': u'an optional account for the security group. Must be used with domainId.'}, {u'name': u'startport', u'required': False, u'related': [], u'length': 255, u'type': u'integer', u'description': u'start port for this egress rule'}], u'requiredparams': [], u'description': u'Authorizes a particular egress rule for this security group'}}, u'restore': {u'virtualmachine': {u'name': u'restoreVirtualMachine', u'related': [u'updateDefaultNicForVirtualMachine', u'revertToVMSnapshot', u'resetPasswordForVirtualMachine', u'stopVirtualMachine', u'listVirtualMachines', u'migrateVirtualMachineWithVolume', u'destroyVirtualMachine', u'startVirtualMachine', u'listVirtualMachines', u'updateVMAffinityGroup', u'removeNicFromVirtualMachine', u'deployVirtualMachine', u'revertToVMSnapshot', u'addNicToVirtualMachine', u'restoreVirtualMachine', u'stopVirtualMachine', u'changeServiceForVirtualMachine', u'destroyVirtualMachine', u'updateVirtualMachine', u'detachIso', u'resetSSHKeyForVirtualMachine', u'attachIso', u'rebootVirtualMachine'], u'isasync': True, u'params': [{u'name': u'virtualmachineid', u'required': True, u'related': [u'updateDefaultNicForVirtualMachine', u'revertToVMSnapshot', u'resetPasswordForVirtualMachine', u'stopVirtualMachine', u'listVirtualMachines', u'migrateVirtualMachineWithVolume', u'destroyVirtualMachine', u'startVirtualMachine', u'listVirtualMachines', u'updateVMAffinityGroup', u'removeNicFromVirtualMachine', u'deployVirtualMachine', u'revertToVMSnapshot', u'addNicToVirtualMachine', u'restoreVirtualMachine', u'restoreVirtualMachine', u'stopVirtualMachine', u'changeServiceForVirtualMachine', u'destroyVirtualMachine', u'updateVirtualMachine', u'detachIso', u'resetSSHKeyForVirtualMachine', u'attachIso', u'rebootVirtualMachine'], u'length': 255, u'type': u'uuid', u'description': u'Virtual Machine ID'}, {u'name': u'templateid', u'required': False, u'related': [u'registerIso', u'registerTemplate', u'copyIso', u'createTemplate', u'listIsos', u'copyTemplate', u'copyIso', u'listIsos', u'updateIso', u'listTemplates'], u'length': 255, u'type': u'uuid', u'description': u'an optional template Id to restore vm from the new template. This can be an ISO id in case of restore vm deployed using ISO'}], u'requiredparams': [u'virtualmachineid'], u'description': u'Restore a VM to original template/ISO or new template/ISO'}}, u'suspend': {u'project': {u'name': u'suspendProject', u'related': [u'listProjects', u'activateProject', u'updateProject', u'listProjectAccounts', u'createProject'], u'isasync': True, u'params': [{u'name': u'id', u'required': True, u'related': [u'listProjects', u'activateProject', u'suspendProject', u'updateProject', u'listProjectAccounts', u'createProject'], u'length': 255, u'type': u'uuid', u'description': u'id of the project to be suspended'}], u'requiredparams': [u'id'], u'description': u'Suspends a project'}}, u'revoke': {u'securitygroupingress': {u'name': u'revokeSecurityGroupIngress', u'related': [], u'isasync': True, u'params': [{u'name': u'id', u'required': True, u'related': [], u'length': 255, u'type': u'uuid', u'description': u'The ID of the ingress rule'}], u'requiredparams': [u'id'], u'description': u'Deletes a particular ingress rule from this security group'}, u'securitygroupegress': {u'name': u'revokeSecurityGroupEgress', u'related': [], u'isasync': True, u'params': [{u'name': u'id', u'required': True, u'related': [u'authorizeSecurityGroupEgress'], u'length': 255, u'type': u'uuid', u'description': u'The ID of the egress rule'}], u'requiredparams': [u'id'], u'description': u'Deletes a particular egress rule from this security group'}}, u'disassociate': {u'ipaddress': {u'name': u'disassociateIpAddress', u'related': [], u'isasync': True, u'params': [{u'name': u'id', u'required': True, u'related': [u'associateIpAddress', u'listPublicIpAddresses', u'associateIpAddress'], u'length': 255, u'type': u'uuid', u'description': u'the id of the public ip address to disassociate'}], u'requiredparams': [u'id'], u'description': u'Disassociates an ip address from the account.'}}, u'migrate': {u'volume': {u'name': u'migrateVolume', u'related': [u'uploadVolume', u'attachVolume', u'createVolume', u'detachVolume', u'createVolume', u'updateVolume', u'resizeVolume', u'attachVolume', u'updateVolume', u'migrateVolume', u'resizeVolume', u'uploadVolume', u'detachVolume', u'listVolumes'], u'isasync': True, u'params': [{u'name': u'volumeid', u'required': True, u'related': [u'uploadVolume', u'attachVolume', u'createVolume', u'detachVolume', u'createVolume', u'updateVolume', u'migrateVolume', u'resizeVolume', u'attachVolume', u'updateVolume', u'migrateVolume', u'resizeVolume', u'uploadVolume', u'detachVolume', u'listVolumes'], u'length': 255, u'type': u'uuid', u'description': u'the ID of the volume'}, {u'name': u'storageid', u'required': True, u'related': [u'findStoragePoolsForMigration', u'createStoragePool', u'cancelStorageMaintenance', u'enableStorageMaintenance', u'updateStoragePool', u'listStoragePools'], u'length': 255, u'type': u'uuid', u'description': u'destination storage pool ID to migrate the volume to'}, {u'name': u'livemigrate', u'required': False, u'related': [], u'length': 255, u'type': u'boolean', u'description': u'if the volume should be live migrated when it is attached to a running vm'}], u'requiredparams': [u'volumeid', u'storageid'], u'description': u'Migrate volume'}, u'systemvm': {u'name': u'migrateSystemVm', u'related': [u'scaleSystemVm', u'listSystemVms', u'rebootSystemVm'], u'isasync': True, u'params': [{u'name': u'hostid', u'required': True, u'related': [u'listHosts'], u'length': 255, u'type': u'uuid', u'description': u'destination Host ID to migrate VM to'}, {u'name': u'virtualmachineid', u'required': True, u'related': [u'migrateSystemVm', u'scaleSystemVm', u'listSystemVms', u'rebootSystemVm'], u'length': 255, u'type': u'uuid', u'description': u'the ID of the virtual machine'}], u'requiredparams': [u'hostid', u'virtualmachineid'], u'description': u'Attempts Migration of a system virtual machine to the host specified.'}, u'virtualmachine': {u'name': u'migrateVirtualMachine', u'related': [u'updateVirtualMachine', u'assignVirtualMachine', u'updateDefaultNicForVirtualMachine', u'revertToVMSnapshot', u'resetPasswordForVirtualMachine', u'stopVirtualMachine', u'listVirtualMachines', u'migrateVirtualMachineWithVolume', u'destroyVirtualMachine', u'startVirtualMachine', u'listVirtualMachines', u'updateVMAffinityGroup', u'removeNicFromVirtualMachine', u'deployVirtualMachine', u'revertToVMSnapshot', u'addNicToVirtualMachine', u'restoreVirtualMachine', u'restoreVirtualMachine', u'stopVirtualMachine', u'changeServiceForVirtualMachine', u'destroyVirtualMachine', u'updateVirtualMachine', u'detachIso', u'resetSSHKeyForVirtualMachine', u'attachIso', u'rebootVirtualMachine'], u'isasync': True, u'params': [{u'name': u'storageid', u'required': False, u'related': [u'findStoragePoolsForMigration'], u'length': 255, u'type': u'uuid', u'description': u'Destination storage pool ID to migrate VM volumes to. Required for migrating the root disk volume'}, {u'name': u'virtualmachineid', u'required': True, u'related': [u'updateVirtualMachine', u'assignVirtualMachine', u'updateDefaultNicForVirtualMachine', u'revertToVMSnapshot', u'resetPasswordForVirtualMachine', u'stopVirtualMachine', u'listVirtualMachines', u'migrateVirtualMachineWithVolume', u'destroyVirtualMachine', u'startVirtualMachine', u'listVirtualMachines', u'updateVMAffinityGroup', u'removeNicFromVirtualMachine', u'deployVirtualMachine', u'revertToVMSnapshot', u'addNicToVirtualMachine', u'restoreVirtualMachine', u'restoreVirtualMachine', u'stopVirtualMachine', u'changeServiceForVirtualMachine', u'destroyVirtualMachine', u'migrateVirtualMachine', u'updateVirtualMachine', u'detachIso', u'resetSSHKeyForVirtualMachine', u'attachIso', u'rebootVirtualMachine'], u'length': 255, u'type': u'uuid', u'description': u'the ID of the virtual machine'}, {u'name': u'hostid', u'required': False, u'related': [u'listHosts'], u'length': 255, u'type': u'uuid', u'description': u'Destination Host ID to migrate VM to. Required for live migrating a VM from host to host'}], u'requiredparams': [u'virtualmachineid'], u'description': u'Attempts Migration of a VM to a different host or Root volume of the vm to a different storage pool'}, u'virtualmachinewithvolume': {u'name': u'migrateVirtualMachineWithVolume', u'related': [u'updateDefaultNicForVirtualMachine', u'revertToVMSnapshot', u'resetPasswordForVirtualMachine', u'stopVirtualMachine', u'listVirtualMachines', u'destroyVirtualMachine', u'startVirtualMachine', u'listVirtualMachines', u'updateVMAffinityGroup', u'removeNicFromVirtualMachine', u'deployVirtualMachine', u'revertToVMSnapshot', u'addNicToVirtualMachine', u'restoreVirtualMachine', u'stopVirtualMachine', u'changeServiceForVirtualMachine', u'destroyVirtualMachine', u'updateVirtualMachine', u'detachIso', u'resetSSHKeyForVirtualMachine', u'attachIso', u'rebootVirtualMachine'], u'isasync': True, u'params': [{u'name': u'migrateto', u'required': False, u'related': [], u'length': 255, u'type': u'map', u'description': u'Map of pool to which each volume should be migrated (volume/pool pair)'}, {u'name': u'virtualmachineid', u'required': True, u'related': [u'updateDefaultNicForVirtualMachine', u'revertToVMSnapshot', u'resetPasswordForVirtualMachine', u'stopVirtualMachine', u'listVirtualMachines', u'migrateVirtualMachineWithVolume', u'destroyVirtualMachine', u'startVirtualMachine', u'listVirtualMachines', u'updateVMAffinityGroup', u'removeNicFromVirtualMachine', u'deployVirtualMachine', u'revertToVMSnapshot', u'addNicToVirtualMachine', u'restoreVirtualMachine', u'stopVirtualMachine', u'changeServiceForVirtualMachine', u'destroyVirtualMachine', u'updateVirtualMachine', u'detachIso', u'resetSSHKeyForVirtualMachine', u'attachIso', u'rebootVirtualMachine'], u'length': 255, u'type': u'uuid', u'description': u'the ID of the virtual machine'}, {u'name': u'hostid', u'required': True, u'related': [u'listHosts'], u'length': 255, u'type': u'uuid', u'description': u'Destination Host ID to migrate VM to.'}], u'requiredparams': [u'virtualmachineid', u'hostid'], u'description': u'Attempts Migration of a VM with its volumes to a different host'}}, u'lock': {u'account': {u'name': u'lockAccount', u'related': [u'listAccounts', u'createAccount', u'markDefaultZoneForAccount', u'listAccounts', u'ldapCreateAccount', u'disableAccount'], u'isasync': False, u'params': [{u'name': u'account', u'required': True, u'related': [], u'length': 255, u'type': u'string', u'description': u'Locks the specified account.'}, {u'name': u'domainid', u'required': True, u'related': [u'listDomains', u'updateDomain', u'listDomainChildren'], u'length': 255, u'type': u'uuid', u'description': u'Locks the specified account on this domain.'}], u'requiredparams': [u'account', u'domainid'], u'description': u'Locks an account'}, u'user': {u'name': u'lockUser', u'related': [u'listUsers'], u'isasync': False, u'params': [{u'name': u'id', u'required': True, u'related': [u'lockUser', u'listUsers'], u'length': 255, u'type': u'uuid', u'description': u'Locks user by user ID.'}], u'requiredparams': [u'id'], u'description': u'Locks a user account'}}, u'copy': {u'iso': {u'name': u'copyIso', u'related': [u'registerIso', u'registerTemplate', u'createTemplate', u'listIsos', u'copyTemplate', u'copyIso', u'listIsos', u'updateIso', u'listTemplates'], u'isasync': True, u'params': [{u'name': u'destzoneid', u'required': True, u'related': [u'listZones'], u'length': 255, u'type': u'uuid', u'description': u'ID of the zone the template is being copied to.'}, {u'name': u'id', u'required': True, u'related': [u'registerIso', u'registerTemplate', u'copyIso', u'createTemplate', u'listIsos', u'copyTemplate', u'copyIso', u'listIsos', u'updateIso', u'listTemplates'], u'length': 255, u'type': u'uuid', u'description': u'Template ID.'}, {u'name': u'sourcezoneid', u'required': False, u'related': [u'listZones'], u'length': 255, u'type': u'uuid', u'description': u'ID of the zone the template is currently hosted on. If not specified and template is cross-zone, then we will sync this template to region wide image store.'}], u'requiredparams': [u'destzoneid', u'id'], u'description': u'Copies an iso from one zone to another.'}, u'template': {u'name': u'copyTemplate', u'related': [u'registerIso', u'registerIso', u'prepareTemplate', u'createTemplate', u'updateTemplate', u'registerTemplate', u'registerTemplate', u'copyIso', u'listTemplates', u'createTemplate', u'listIsos', u'copyTemplate', u'copyIso', u'listIsos', u'updateIso', u'listTemplates'], u'isasync': True, u'params': [{u'name': u'destzoneid', u'required': True, u'related': [u'listZones', u'updateZone', u'createZone', u'listZones'], u'length': 255, u'type': u'uuid', u'description': u'ID of the zone the template is being copied to.'}, {u'name': u'sourcezoneid', u'required': False, u'related': [u'listZones', u'updateZone', u'createZone', u'listZones'], u'length': 255, u'type': u'uuid', u'description': u'ID of the zone the template is currently hosted on. If not specified and template is cross-zone, then we will sync this template to region wide image store.'}, {u'name': u'id', u'required': True, u'related': [u'registerIso', u'registerIso', u'prepareTemplate', u'createTemplate', u'updateTemplate', u'copyTemplate', u'registerTemplate', u'registerTemplate', u'copyIso', u'listTemplates', u'createTemplate', u'listIsos', u'copyTemplate', u'copyIso', u'listIsos', u'updateIso', u'listTemplates'], u'length': 255, u'type': u'uuid', u'description': u'Template ID.'}], u'requiredparams': [u'destzoneid', u'id'], u'description': u'Copies a template from one zone to another.'}}, u'replace': {u'networkacllist': {u'name': u'replaceNetworkACLList', u'related': [], u'isasync': True, u'params': [{u'name': u'aclid', u'required': True, u'related': [], u'length': 255, u'type': u'uuid', u'description': u'the ID of the network ACL'}, {u'name': u'networkid', u'required': False, u'related': [u'updateNetwork', u'listNetworks', u'createNetwork'], u'length': 255, u'type': u'uuid', u'description': u'the ID of the network'}, {u'name': u'gatewayid', u'required': False, u'related': [], u'length': 255, u'type': u'uuid', u'description': u'the ID of the private gateway'}], u'requiredparams': [u'aclid'], u'description': u'Replaces ACL associated with a Network or private gateway'}}, u'list': {u'lbhealthcheckpolicies': {u'name': u'listLBHealthCheckPolicies', u'related': [u'createLBHealthCheckPolicy', u'updateLBHealthCheckPolicy'], u'isasync': False, u'params': [{u'name': u'page', u'required': False, u'related': [], u'length': 255, u'type': u'integer', u'description': u''}, {u'name': u'pagesize', u'required': False, u'related': [], u'length': 255, u'type': u'integer', u'description': u''}, {u'name': u'id', u'required': False, u'related': [u'createLBHealthCheckPolicy', u'listLBHealthCheckPolicies', u'updateLBHealthCheckPolicy'], u'length': 255, u'type': u'uuid', u'description': u'the ID of the healthcheck policy'}, {u'name': u'lbruleid', u'required': False, u'related': [u'listIpForwardingRules'], u'length': 255, u'type': u'uuid', u'description': u'the ID of the load balancer rule'}, {u'name': u'fordisplay', u'required': False, u'related': [], u'length': 255, u'type': u'boolean', u'description': u'list resources by display flag; only ROOT admin is eligible to pass this parameter'}, {u'name': u'keyword', u'required': False, u'related': [], u'length': 255, u'type': u'string', u'description': u'List by keyword'}], u'requiredparams': [], u'description': u'Lists load balancer HealthCheck policies.'}, u'instancegroups': {u'name': u'listInstanceGroups', u'related': [u'createInstanceGroup', u'updateInstanceGroup'], u'isasync': False, u'params': [{u'name': u'account', u'required': False, u'related': [], u'length': 255, u'type': u'string', u'description': u'list resources by account. Must be used with the domainId parameter.'}, {u'name': u'name', u'required': False, u'related': [], u'length': 255, u'type': u'string', u'description': u'list instance groups by name'}, {u'name': u'pagesize', u'required': False, u'related': [], u'length': 255, u'type': u'integer', u'description': u''}, {u'name': u'domainid', u'required': False, u'related': [u'listDomains', u'updateDomain', u'createDomain', u'listDomainChildren'], u'length': 255, u'type': u'uuid', u'description': u'list only resources belonging to the domain specified'}, {u'name': u'projectid', u'required': False, u'related': [u'listProjects', u'activateProject', u'updateProject', u'listProjectAccounts', u'createProject'], u'length': 255, u'type': u'uuid', u'description': u'list objects by project'}, {u'name': u'page', u'required': False, u'related': [], u'length': 255, u'type': u'integer', u'description': u''}, {u'name': u'isrecursive', u'required': False, u'related': [], u'length': 255, u'type': u'boolean', u'description': u'defaults to false, but if true, lists all resources from the parent specified by the domainId till leaves.'}, {u'name': u'listall', u'required': False, u'related': [], u'length': 255, u'type': u'boolean', u'description': u"If set to false, list only resources belonging to the command's caller; if set to true - list resources that the caller is authorized to see. Default value is false"}, {u'name': u'keyword', u'required': False, u'related': [], u'length': 255, u'type': u'string', u'description': u'List by keyword'}, {u'name': u'id', u'required': False, u'related': [u'createInstanceGroup', u'updateInstanceGroup', u'listInstanceGroups'], u'length': 255, u'type': u'uuid', u'description': u'list instance groups by ID'}], u'requiredparams': [], u'description': u'Lists vm groups'}, u'ucsmanagers': {u'name': u'listUcsManagers', u'related': [u'addUcsManager'], u'isasync': False, u'params': [{u'name': u'page', u'required': False, u'related': [], u'length': 255, u'type': u'integer', u'description': u''}, {u'name': u'id', u'required': False, u'related': [u'listUcsManagers', u'addUcsManager'], u'length': 255, u'type': u'uuid', u'description': u'the ID of the ucs manager'}, {u'name': u'zoneid', u'required': False, u'related': [u'listZones', u'updateZone', u'createZone', u'listZones'], u'length': 255, u'type': u'uuid', u'description': u'the zone id'}, {u'name': u'keyword', u'required': False, u'related': [], u'length': 255, u'type': u'string', u'description': u'List by keyword'}, {u'name': u'pagesize', u'required': False, u'related': [], u'length': 255, u'type': u'integer', u'description': u''}], u'requiredparams': [], u'description': u'List ucs manager'}, u'physicalnetworks': {u'name': u'listPhysicalNetworks', u'related': [], u'isasync': False, u'params': [{u'name': u'name', u'required': False, u'related': [], u'length': 255, u'type': u'string', u'description': u'search by name'}, {u'name': u'zoneid', u'required': False, u'related': [u'listZones'], u'length': 255, u'type': u'uuid', u'description': u'the Zone ID for the physical network'}, {u'name': u'pagesize', u'required': False, u'related': [], u'length': 255, u'type': u'integer', u'description': u''}, {u'name': u'page', u'required': False, u'related': [], u'length': 255, u'type': u'integer', u'description': u''}, {u'name': u'keyword', u'required': False, u'related': [], u'length': 255, u'type': u'string', u'description': u'List by keyword'}, {u'name': u'id', u'required': False, u'related': [u'listPhysicalNetworks'], u'length': 255, u'type': u'uuid', u'description': u'list physical network by id'}], u'requiredparams': [], u'description': u'Lists physical networks'}, u'networks': {u'name': u'listNetworks', u'related': [u'updateNetwork', u'updateNetwork', u'listNetscalerLoadBalancerNetworks', u'listPaloAltoFirewallNetworks', u'listNetworks', u'createNetwork'], u'isasync': False, u'params': [{u'name': u'listall', u'required': False, u'related': [], u'length': 255, u'type': u'boolean', u'description': u"If set to false, list only resources belonging to the command's caller; if set to true - list resources that the caller is authorized to see. Default value is false"}, {u'name': u'specifyipranges', u'required': False, u'related': [], u'length': 255, u'type': u'boolean', u'description': u'true if need to list only networks which support specifying ip ranges'}, {u'name': u'acltype', u'required': False, u'related': [], u'length': 255, u'type': u'string', u'description': u'list networks by ACL (access control list) type. Supported values are Account and Domain'}, {u'name': u'forvpc', u'required': False, u'related': [], u'length': 255, u'type': u'boolean', u'description': u'the network belongs to vpc'}, {u'name': u'vpcid', u'required': False, u'related': [u'listVPCs', u'updateVPC', u'updateVPC', u'restartVPC', u'createVPC', u'createVPC', u'listVPCs'], u'length': 255, u'type': u'uuid', u'description': u'List networks by VPC'}, {u'name': u'supportedservices', u'required': False, u'related': [], u'length': 255, u'type': u'list', u'description': u'list networks supporting certain services'}, {u'name': u'domainid', u'required': False, u'related': [u'listDomains', u'updateDomain', u'createDomain', u'listDomainChildren'], u'length': 255, u'type': u'uuid', u'description': u'list only resources belonging to the domain specified'}, {u'name': u'tags', u'required': False, u'related': [], u'length': 255, u'type': u'map', u'description': u'List resources by tags (key/value pairs)'}, {u'name': u'pagesize', u'required': False, u'related': [], u'length': 255, u'type': u'integer', u'description': u''}, {u'name': u'physicalnetworkid', u'required': False, u'related': [u'listPhysicalNetworks', u'createPhysicalNetwork'], u'length': 255, u'type': u'uuid', u'description': u'list networks by physical network id'}, {u'name': u'account', u'required': False, u'related': [], u'length': 255, u'type': u'string', u'description': u'list resources by account. Must be used with the domainId parameter.'}, {u'name': u'id', u'required': False, u'related': [u'updateNetwork', u'listNetworks', u'updateNetwork', u'listNetscalerLoadBalancerNetworks', u'listPaloAltoFirewallNetworks', u'listNetworks', u'createNetwork'], u'length': 255, u'type': u'uuid', u'description': u'list networks by id'}, {u'name': u'page', u'required': False, u'related': [], u'length': 255, u'type': u'integer', u'description': u''}, {u'name': u'projectid', u'required': False, u'related': [u'activateProject', u'updateProject', u'listProjectAccounts', u'createProject'], u'length': 255, u'type': u'uuid', u'description': u'list objects by project'}, {u'name': u'isrecursive', u'required': False, u'related': [], u'length': 255, u'type': u'boolean', u'description': u'defaults to false, but if true, lists all resources from the parent specified by the domainId till leaves.'}, {u'name': u'keyword', u'required': False, u'related': [], u'length': 255, u'type': u'string', u'description': u'List by keyword'}, {u'name': u'zoneid', u'required': False, u'related': [u'listZones', u'updateZone', u'createZone', u'listZones'], u'length': 255, u'type': u'uuid', u'description': u'the Zone ID of the network'}, {u'name': u'canusefordeploy', u'required': False, u'related': [], u'length': 255, u'type': u'boolean', u'description': u'list networks available for vm deployment'}, {u'name': u'restartrequired', u'required': False, u'related': [], u'length': 255, u'type': u'boolean', u'description': u'list networks by restartRequired'}, {u'name': u'type', u'required': False, u'related': [], u'length': 255, u'type': u'string', u'description': u'the type of the network. Supported values are: Isolated and Shared'}, {u'name': u'traffictype', u'required': False, u'related': [], u'length': 255, u'type': u'string', u'description': u'type of the traffic'}, {u'name': u'issystem', u'required': False, u'related': [], u'length': 255, u'type': u'boolean', u'description': u'true if network is system, false otherwise'}, {u'name': u'displaynetwork', u'required': False, u'related': [], u'length': 255, u'type': u'boolean', u'description': u'list resources by display flag; only ROOT admin is eligible to pass this parameter'}], u'requiredparams': [], u'description': u'Lists all available networks.'}, u'ldapconfigurations': {u'name': u'listLdapConfigurations', u'related': [u'deleteLdapConfiguration', u'addLdapConfiguration'], u'isasync': False, u'params': [{u'name': u'page', u'required': False, u'related': [], u'length': 255, u'type': u'integer', u'description': u''}, {u'name': u'port', u'required': False, u'related': [], u'length': 255, u'type': u'integer', u'description': u'Port'}, {u'name': u'keyword', u'required': False, u'related': [], u'length': 255, u'type': u'string', u'description': u'List by keyword'}, {u'name': u'hostname', u'required': False, u'related': [], u'length': 255, u'type': u'string', u'description': u'Hostname'}, {u'name': u'pagesize', u'required': False, u'related': [], u'length': 255, u'type': u'integer', u'description': u''}], u'requiredparams': [], u'description': u'Lists all LDAP configurations'}, u'capabilities': {u'name': u'listCapabilities', u'related': [], u'isasync': False, u'params': [], u'requiredparams': [], u'description': u'Lists capabilities'}, u'clusters': {u'name': u'listClusters', u'related': [u'updateCluster'], u'isasync': False, u'params': [{u'name': u'zoneid', u'required': False, u'related': [u'listZones', u'updateZone', u'createZone', u'listZones'], u'length': 255, u'type': u'uuid', u'description': u'lists clusters by Zone ID'}, {u'name': u'page', u'required': False, u'related': [], u'length': 255, u'type': u'integer', u'description': u''}, {u'name': u'hypervisor', u'required': False, u'related': [], u'length': 255, u'type': u'string', u'description': u'lists clusters by hypervisor type'}, {u'name': u'name', u'required': False, u'related': [], u'length': 255, u'type': u'string', u'description': u'lists clusters by the cluster name'}, {u'name': u'id', u'required': False, u'related': [u'listClusters', u'updateCluster'], u'length': 255, u'type': u'uuid', u'description': u'lists clusters by the cluster ID'}, {u'name': u'managedstate', u'required': False, u'related': [], u'length': 255, u'type': u'string', u'description': u'whether this cluster is managed by cloudstack'}, {u'name': u'allocationstate', u'required': False, u'related': [], u'length': 255, u'type': u'string', u'description': u'lists clusters by allocation state'}, {u'name': u'podid', u'required': False, u'related': [u'updatePod', u'createPod', u'listPods'], u'length': 255, u'type': u'uuid', u'description': u'lists clusters by Pod ID'}, {u'name': u'keyword', u'required': False, u'related': [], u'length': 255, u'type': u'string', u'description': u'List by keyword'}, {u'name': u'pagesize', u'required': False, u'related': [], u'length': 255, u'type': u'integer', u'description': u''}, {u'name': u'showcapacities', u'required': False, u'related': [], u'length': 255, u'type': u'boolean', u'description': u'flag to display the capacity of the clusters'}, {u'name': u'clustertype', u'required': False, u'related': [], u'length': 255, u'type': u'string', u'description': u'lists clusters by cluster type'}], u'requiredparams': [], u'description': u'Lists clusters.'}, u'resourcelimits': {u'name': u'listResourceLimits', u'related': [], u'isasync': False, u'params': [{u'name': u'id', u'required': False, u'related': [], u'length': 255, u'type': u'long', u'description': u'Lists resource limits by ID.'}, {u'name': u'listall', u'required': False, u'related': [], u'length': 255, u'type': u'boolean', u'description': u"If set to false, list only resources belonging to the command's caller; if set to true - list resources that the caller is authorized to see. Default value is false"}, {u'name': u'isrecursive', u'required': False, u'related': [], u'length': 255, u'type': u'boolean', u'description': u'defaults to false, but if true, lists all resources from the parent specified by the domainId till leaves.'}, {u'name': u'pagesize', u'required': False, u'related': [], u'length': 255, u'type': u'integer', u'description': u''}, {u'name': u'domainid', u'required': False, u'related': [u'listDomainChildren'], u'length': 255, u'type': u'uuid', u'description': u'list only resources belonging to the domain specified'}, {u'name': u'keyword', u'required': False, u'related': [], u'length': 255, u'type': u'string', u'description': u'List by keyword'}, {u'name': u'projectid', u'required': False, u'related': [u'createProject'], u'length': 255, u'type': u'uuid', u'description': u'list objects by project'}, {u'name': u'page', u'required': False, u'related': [], u'length': 255, u'type': u'integer', u'description': u''}, {u'name': u'resourcetype', u'required': False, u'related': [], u'length': 255, u'type': u'integer', u'description': u'Type of resource to update. Values are 0, 1, 2, 3, and 4.0 - Instance. Number of instances a user can create. 1 - IP. Number of public IP addresses an account can own. 2 - Volume. Number of disk volumes an account can own.3 - Snapshot. Number of snapshots an account can own.4 - Template. Number of templates an account can register/create.5 - Project. Number of projects an account can own.6 - Network. Number of networks an account can own.7 - VPC. Number of VPC an account can own.8 - CPU. Number of CPU an account can allocate for his resources.9 - Memory. Amount of RAM an account can allocate for his resources.10 - Primary Storage. Amount of Primary storage an account can allocate for his resoruces.11 - Secondary Storage. Amount of Secondary storage an account can allocate for his resources.'}, {u'name': u'account', u'required': False, u'related': [], u'length': 255, u'type': u'string', u'description': u'list resources by account. Must be used with the domainId parameter.'}], u'requiredparams': [], u'description': u'Lists resource limits.'}, u'firewallrules': {u'name': u'listFirewallRules', u'related': [u'updateFirewallRule', u'createFirewallRule', u'listEgressFirewallRules'], u'isasync': False, u'params': [{u'name': u'page', u'required': False, u'related': [], u'length': 255, u'type': u'integer', u'description': u''}, {u'name': u'isrecursive', u'required': False, u'related': [], u'length': 255, u'type': u'boolean', u'description': u'defaults to false, but if true, lists all resources from the parent specified by the domainId till leaves.'}, {u'name': u'projectid', u'required': False, u'related': [u'updateProject', u'createProject'], u'length': 255, u'type': u'uuid', u'description': u'list objects by project'}, {u'name': u'ipaddressid', u'required': False, u'related': [u'associateIpAddress', u'listPublicIpAddresses', u'associateIpAddress'], u'length': 255, u'type': u'uuid', u'description': u'the id of IP address of the firwall services'}, {u'name': u'tags', u'required': False, u'related': [], u'length': 255, u'type': u'map', u'description': u'List resources by tags (key/value pairs)'}, {u'name': u'pagesize', u'required': False, u'related': [], u'length': 255, u'type': u'integer', u'description': u''}, {u'name': u'id', u'required': False, u'related': [u'listIpForwardingRules'], u'length': 255, u'type': u'uuid', u'description': u'Lists rule with the specified ID.'}, {u'name': u'listall', u'required': False, u'related': [], u'length': 255, u'type': u'boolean', u'description': u"If set to false, list only resources belonging to the command's caller; if set to true - list resources that the caller is authorized to see. Default value is false"}, {u'name': u'networkid', u'required': False, u'related': [u'updateNetwork', u'updateNetwork', u'listNetscalerLoadBalancerNetworks', u'listNetworks', u'createNetwork'], u'length': 255, u'type': u'uuid', u'description': u'list firewall rules for ceratin network'}, {u'name': u'fordisplay', u'required': False, u'related': [], u'length': 255, u'type': u'boolean', u'description': u'list resources by display flag; only ROOT admin is eligible to pass this parameter'}, {u'name': u'account', u'required': False, u'related': [], u'length': 255, u'type': u'string', u'description': u'list resources by account. Must be used with the domainId parameter.'}, {u'name': u'keyword', u'required': False, u'related': [], u'length': 255, u'type': u'string', u'description': u'List by keyword'}, {u'name': u'domainid', u'required': False, u'related': [u'updateDomain', u'listDomainChildren'], u'length': 255, u'type': u'uuid', u'description': u'list only resources belonging to the domain specified'}], u'requiredparams': [], u'description': u'Lists all firewall rules for an IP address.'}, u'dedicatedzones': {u'name': u'listDedicatedZones', u'related': [], u'isasync': False, u'params': [{u'name': u'domainid', u'required': False, u'related': [u'listDomainChildren'], u'length': 255, u'type': u'uuid', u'description': u'the ID of the domain associated with the zone'}, {u'name': u'account', u'required': False, u'related': [], u'length': 255, u'type': u'string', u'description': u'the name of the account associated with the zone. Must be used with domainId.'}, {u'name': u'pagesize', u'required': False, u'related': [], u'length': 255, u'type': u'integer', u'description': u''}, {u'name': u'affinitygroupid', u'required': False, u'related': [], u'length': 255, u'type': u'uuid', u'description': u'list dedicated zones by affinity group'}, {u'name': u'keyword', u'required': False, u'related': [], u'length': 255, u'type': u'string', u'description': u'List by keyword'}, {u'name': u'zoneid', u'required': False, u'related': [u'listZones'], u'length': 255, u'type': u'uuid', u'description': u'the ID of the Zone'}, {u'name': u'page', u'required': False, u'related': [], u'length': 255, u'type': u'integer', u'description': u''}], u'requiredparams': [], u'description': u'List dedicated zones.'}, u'supportednetworkservices': {u'name': u'listSupportedNetworkServices', u'related': [], u'isasync': False, u'params': [{u'name': u'provider', u'required': False, u'related': [], u'length': 255, u'type': u'string', u'description': u'network service provider name'}, {u'name': u'keyword', u'required': False, u'related': [], u'length': 255, u'type': u'string', u'description': u'List by keyword'}, {u'name': u'page', u'required': False, u'related': [], u'length': 255, u'type': u'integer', u'description': u''}, {u'name': u'pagesize', u'required': False, u'related': [], u'length': 255, u'type': u'integer', u'description': u''}, {u'name': u'service', u'required': False, u'related': [], u'length': 255, u'type': u'string', u'description': u'network service name to list providers and capabilities of'}], u'requiredparams': [], u'description': u'Lists all network services provided by CloudStack or for the given Provider.'}, u'loadbalancerrules': {u'name': u'listLoadBalancerRules', u'related': [u'createLoadBalancerRule'], u'isasync': False, u'params': [{u'name': u'domainid', u'required': False, u'related': [u'updateDomain', u'listDomainChildren'], u'length': 255, u'type': u'uuid', u'description': u'list only resources belonging to the domain specified'}, {u'name': u'networkid', u'required': False, u'related': [u'updateNetwork', u'updateNetwork', u'listNetscalerLoadBalancerNetworks', u'listPaloAltoFirewallNetworks', u'listNetworks', u'createNetwork'], u'length': 255, u'type': u'uuid', u'description': u'list by network id the rule belongs to'}, {u'name': u'publicipid', u'required': False, u'related': [u'associateIpAddress', u'listPublicIpAddresses', u'restartNetwork', u'associateIpAddress'], u'length': 255, u'type': u'uuid', u'description': u'the public IP address id of the load balancer rule '}, {u'name': u'isrecursive', u'required': False, u'related': [], u'length': 255, u'type': u'boolean', u'description': u'defaults to false, but if true, lists all resources from the parent specified by the domainId till leaves.'}, {u'name': u'keyword', u'required': False, u'related': [], u'length': 255, u'type': u'string', u'description': u'List by keyword'}, {u'name': u'fordisplay', u'required': False, u'related': [], u'length': 255, u'type': u'boolean', u'description': u'list resources by display flag; only ROOT admin is eligible to pass this parameter'}, {u'name': u'listall', u'required': False, u'related': [], u'length': 255, u'type': u'boolean', u'description': u"If set to false, list only resources belonging to the command's caller; if set to true - list resources that the caller is authorized to see. Default value is false"}, {u'name': u'page', u'required': False, u'related': [], u'length': 255, u'type': u'integer', u'description': u''}, {u'name': u'id', u'required': False, u'related': [u'listIpForwardingRules'], u'length': 255, u'type': u'uuid', u'description': u'the ID of the load balancer rule'}, {u'name': u'tags', u'required': False, u'related': [], u'length': 255, u'type': u'map', u'description': u'List resources by tags (key/value pairs)'}, {u'name': u'name', u'required': False, u'related': [], u'length': 255, u'type': u'string', u'description': u'the name of the load balancer rule'}, {u'name': u'virtualmachineid', u'required': False, u'related': [u'updateVirtualMachine', u'removeNicFromVirtualMachine', u'assignVirtualMachine', u'detachIso', u'updateDefaultNicForVirtualMachine', u'updateDefaultNicForVirtualMachine', u'revertToVMSnapshot', u'startVirtualMachine', u'resetPasswordForVirtualMachine', u'resetPasswordForVirtualMachine', u'updateVMAffinityGroup', u'stopVirtualMachine', u'listVirtualMachines', u'migrateVirtualMachineWithVolume', u'destroyVirtualMachine', u'rebootVirtualMachine', u'startVirtualMachine', u'listVirtualMachines', u'changeServiceForVirtualMachine', u'updateVMAffinityGroup', u'removeNicFromVirtualMachine', u'deployVirtualMachine', u'revertToVMSnapshot', u'addNicToVirtualMachine', u'restoreVirtualMachine', u'restoreVirtualMachine', u'stopVirtualMachine', u'changeServiceForVirtualMachine', u'destroyVirtualMachine', u'migrateVirtualMachine', u'updateVirtualMachine', u'detachIso', u'resetSSHKeyForVirtualMachine', u'attachIso', u'rebootVirtualMachine'], u'length': 255, u'type': u'uuid', u'description': u'the ID of the virtual machine of the load balancer rule'}, {u'name': u'zoneid', u'required': False, u'related': [u'listZones', u'updateZone', u'createZone', u'listZones'], u'length': 255, u'type': u'uuid', u'description': u'the availability zone ID'}, {u'name': u'pagesize', u'required': False, u'related': [], u'length': 255, u'type': u'integer', u'description': u''}, {u'name': u'projectid', u'required': False, u'related': [u'updateProject', u'createProject'], u'length': 255, u'type': u'uuid', u'description': u'list objects by project'}, {u'name': u'account', u'required': False, u'related': [], u'length': 255, u'type': u'string', u'description': u'list resources by account. Must be used with the domainId parameter.'}], u'requiredparams': [], u'description': u'Lists load balancer rules.'}, u'autoscalepolicies': {u'name': u'listAutoScalePolicies', u'related': [u'createAutoScalePolicy', u'updateAutoScalePolicy'], u'isasync': False, u'params': [{u'name': u'pagesize', u'required': False, u'related': [], u'length': 255, u'type': u'integer', u'description': u''}, {u'name': u'domainid', u'required': False, u'related': [u'listDomains', u'updateDomain', u'createDomain', u'listDomainChildren'], u'length': 255, u'type': u'uuid', u'description': u'list only resources belonging to the domain specified'}, {u'name': u'account', u'required': False, u'related': [], u'length': 255, u'type': u'string', u'description': u'list resources by account. Must be used with the domainId parameter.'}, {u'name': u'page', u'required': False, u'related': [], u'length': 255, u'type': u'integer', u'description': u''}, {u'name': u'vmgroupid', u'required': False, u'related': [u'updateAutoScaleVmGroup', u'createAutoScaleVmGroup', u'enableAutoScaleVmGroup', u'disableAutoScaleVmGroup'], u'length': 255, u'type': u'uuid', u'description': u'the ID of the autoscale vm group'}, {u'name': u'id', u'required': False, u'related': [u'createAutoScalePolicy', u'updateAutoScalePolicy', u'listAutoScalePolicies'], u'length': 255, u'type': u'uuid', u'description': u'the ID of the autoscale policy'}, {u'name': u'isrecursive', u'required': False, u'related': [], u'length': 255, u'type': u'boolean', u'description': u'defaults to false, but if true, lists all resources from the parent specified by the domainId till leaves.'}, {u'name': u'conditionid', u'required': False, u'related': [u'listConditions'], u'length': 255, u'type': u'uuid', u'description': u'the ID of the condition of the policy'}, {u'name': u'keyword', u'required': False, u'related': [], u'length': 255, u'type': u'string', u'description': u'List by keyword'}, {u'name': u'listall', u'required': False, u'related': [], u'length': 255, u'type': u'boolean', u'description': u"If set to false, list only resources belonging to the command's caller; if set to true - list resources that the caller is authorized to see. Default value is false"}, {u'name': u'action', u'required': False, u'related': [], u'length': 255, u'type': u'string', u'description': u'the action to be executed if all the conditions evaluate to true for the specified duration.'}], u'requiredparams': [], u'description': u'Lists autoscale policies.'}, u'niciranvpdevices': {u'name': u'listNiciraNvpDevices', u'related': [u'addNiciraNvpDevice'], u'isasync': False, u'params': [{u'name': u'page', u'required': False, u'related': [], u'length': 255, u'type': u'integer', u'description': u''}, {u'name': u'nvpdeviceid', u'required': False, u'related': [u'addNiciraNvpDevice', u'listNiciraNvpDevices'], u'length': 255, u'type': u'uuid', u'description': u'nicira nvp device ID'}, {u'name': u'physicalnetworkid', u'required': False, u'related': [u'listPhysicalNetworks', u'createPhysicalNetwork'], u'length': 255, u'type': u'uuid', u'description': u'the Physical Network ID'}, {u'name': u'pagesize', u'required': False, u'related': [], u'length': 255, u'type': u'integer', u'description': u''}, {u'name': u'keyword', u'required': False, u'related': [], u'length': 255, u'type': u'string', u'description': u'List by keyword'}], u'requiredparams': [], u'description': u'Lists Nicira NVP devices'}, u'internalloadbalancerelements': {u'name': u'listInternalLoadBalancerElements', u'related': [u'createInternalLoadBalancerElement', u'configureInternalLoadBalancerElement'], u'isasync': False, u'params': [{u'name': u'pagesize', u'required': False, u'related': [], u'length': 255, u'type': u'integer', u'description': u''}, {u'name': u'page', u'required': False, u'related': [], u'length': 255, u'type': u'integer', u'description': u''}, {u'name': u'enabled', u'required': False, u'related': [], u'length': 255, u'type': u'boolean', u'description': u'list internal load balancer elements by enabled state'}, {u'name': u'nspid', u'required': False, u'related': [u'addNetworkServiceProvider', u'updateNetworkServiceProvider', u'listTrafficTypes'], u'length': 255, u'type': u'uuid', u'description': u'list internal load balancer elements by network service provider id'}, {u'name': u'id', u'required': False, u'related': [u'createInternalLoadBalancerElement', u'configureInternalLoadBalancerElement', u'listInternalLoadBalancerElements'], u'length': 255, u'type': u'uuid', u'description': u'list internal load balancer elements by id'}, {u'name': u'keyword', u'required': False, u'related': [], u'length': 255, u'type': u'string', u'description': u'List by keyword'}], u'requiredparams': [], u'description': u'Lists all available Internal Load Balancer elements.'}, u'templatepermissions': {u'name': u'listTemplatePermissions', u'related': [u'listTemplatePermissions', u'listIsoPermissions', u'listIsoPermissions'], u'isasync': False, u'params': [{u'name': u'id', u'required': True, u'related': [u'listTemplatePermissions', u'listTemplatePermissions', u'listIsoPermissions', u'listIsoPermissions'], u'length': 255, u'type': u'uuid', u'description': u'the template ID'}], u'requiredparams': [u'id'], u'description': u'List template visibility and all accounts that have permissions to view this template.'}, u'projects': {u'name': u'listProjects', u'related': [u'activateProject', u'updateProject', u'listProjectAccounts', u'createProject'], u'isasync': False, u'params': [{u'name': u'listall', u'required': False, u'related': [], u'length': 255, u'type': u'boolean', u'description': u"If set to false, list only resources belonging to the command's caller; if set to true - list resources that the caller is authorized to see. Default value is false"}, {u'name': u'domainid', u'required': False, u'related': [u'listDomains', u'updateDomain', u'createDomain', u'listDomainChildren'], u'length': 255, u'type': u'uuid', u'description': u'list only resources belonging to the domain specified'}, {u'name': u'id', u'required': False, u'related': [u'listProjects', u'activateProject', u'updateProject', u'listProjectAccounts', u'createProject'], u'length': 255, u'type': u'uuid', u'description': u'list projects by project ID'}, {u'name': u'account', u'required': False, u'related': [], u'length': 255, u'type': u'string', u'description': u'list resources by account. Must be used with the domainId parameter.'}, {u'name': u'isrecursive', u'required': False, u'related': [], u'length': 255, u'type': u'boolean', u'description': u'defaults to false, but if true, lists all resources from the parent specified by the domainId till leaves.'}, {u'name': u'tags', u'required': False, u'related': [], u'length': 255, u'type': u'map', u'description': u'List projects by tags (key/value pairs)'}, {u'name': u'name', u'required': False, u'related': [], u'length': 255, u'type': u'string', u'description': u'list projects by name'}, {u'name': u'page', u'required': False, u'related': [], u'length': 255, u'type': u'integer', u'description': u''}, {u'name': u'pagesize', u'required': False, u'related': [], u'length': 255, u'type': u'integer', u'description': u''}, {u'name': u'state', u'required': False, u'related': [], u'length': 255, u'type': u'string', u'description': u'list projects by state'}, {u'name': u'keyword', u'required': False, u'related': [], u'length': 255, u'type': u'string', u'description': u'List by keyword'}, {u'name': u'displaytext', u'required': False, u'related': [], u'length': 255, u'type': u'string', u'description': u'list projects by display text'}], u'requiredparams': [], u'description': u'Lists projects and provides detailed information for listed projects'}, u'systemvms': {u'name': u'listSystemVms', u'related': [u'scaleSystemVm', u'rebootSystemVm'], u'isasync': False, u'params': [{u'name': u'pagesize', u'required': False, u'related': [], u'length': 255, u'type': u'integer', u'description': u''}, {u'name': u'systemvmtype', u'required': False, u'related': [], u'length': 255, u'type': u'string', u'description': u'the system VM type. Possible types are "consoleproxy" and "secondarystoragevm".'}, {u'name': u'state', u'required': False, u'related': [], u'length': 255, u'type': u'string', u'description': u'the state of the system VM'}, {u'name': u'hostid', u'required': False, u'related': [u'listHosts'], u'length': 255, u'type': u'uuid', u'description': u'the host ID of the system VM'}, {u'name': u'podid', u'required': False, u'related': [u'updatePod'], u'length': 255, u'type': u'uuid', u'description': u'the Pod ID of the system VM'}, {u'name': u'zoneid', u'required': False, u'related': [u'listZones'], u'length': 255, u'type': u'uuid', u'description': u'the Zone ID of the system VM'}, {u'name': u'id', u'required': False, u'related': [u'scaleSystemVm', u'listSystemVms', u'rebootSystemVm'], u'length': 255, u'type': u'uuid', u'description': u'the ID of the system VM'}, {u'name': u'keyword', u'required': False, u'related': [], u'length': 255, u'type': u'string', u'description': u'List by keyword'}, {u'name': u'page', u'required': False, u'related': [], u'length': 255, u'type': u'integer', u'description': u''}, {u'name': u'name', u'required': False, u'related': [], u'length': 255, u'type': u'string', u'description': u'the name of the system VM'}, {u'name': u'storageid', u'required': False, u'related': [u'findStoragePoolsForMigration'], u'length': 255, u'type': u'uuid', u'description': u"the storage ID where vm's volumes belong to"}], u'requiredparams': [], u'description': u'List system virtual machines.'}, u'portforwardingrules': {u'name': u'listPortForwardingRules', u'related': [u'createPortForwardingRule', u'listIpForwardingRules'], u'isasync': False, u'params': [{u'name': u'page', u'required': False, u'related': [], u'length': 255, u'type': u'integer', u'description': u''}, {u'name': u'projectid', u'required': False, u'related': [u'updateProject', u'createProject'], u'length': 255, u'type': u'uuid', u'description': u'list objects by project'}, {u'name': u'domainid', u'required': False, u'related': [u'listDomains', u'updateDomain', u'createDomain', u'listDomainChildren'], u'length': 255, u'type': u'uuid', u'description': u'list only resources belonging to the domain specified'}, {u'name': u'ipaddressid', u'required': False, u'related': [u'associateIpAddress', u'listPublicIpAddresses', u'restartNetwork', u'associateIpAddress'], u'length': 255, u'type': u'uuid', u'description': u'the id of IP address of the port forwarding services'}, {u'name': u'pagesize', u'required': False, u'related': [], u'length': 255, u'type': u'integer', u'description': u''}, {u'name': u'networkid', u'required': False, u'related': [u'updateNetwork', u'updateNetwork', u'listNetscalerLoadBalancerNetworks', u'listPaloAltoFirewallNetworks', u'listNetworks', u'createNetwork'], u'length': 255, u'type': u'uuid', u'description': u'list port forwarding rules for ceratin network'}, {u'name': u'keyword', u'required': False, u'related': [], u'length': 255, u'type': u'string', u'description': u'List by keyword'}, {u'name': u'listall', u'required': False, u'related': [], u'length': 255, u'type': u'boolean', u'description': u"If set to false, list only resources belonging to the command's caller; if set to true - list resources that the caller is authorized to see. Default value is false"}, {u'name': u'account', u'required': False, u'related': [], u'length': 255, u'type': u'string', u'description': u'list resources by account. Must be used with the domainId parameter.'}, {u'name': u'tags', u'required': False, u'related': [], u'length': 255, u'type': u'map', u'description': u'List resources by tags (key/value pairs)'}, {u'name': u'isrecursive', u'required': False, u'related': [], u'length': 255, u'type': u'boolean', u'description': u'defaults to false, but if true, lists all resources from the parent specified by the domainId till leaves.'}, {u'name': u'id', u'required': False, u'related': [u'listPortForwardingRules', u'createPortForwardingRule', u'listIpForwardingRules'], u'length': 255, u'type': u'uuid', u'description': u'Lists rule with the specified ID.'}, {u'name': u'fordisplay', u'required': False, u'related': [], u'length': 255, u'type': u'boolean', u'description': u'list resources by display flag; only ROOT admin is eligible to pass this parameter'}], u'requiredparams': [], u'description': u'Lists all port forwarding rules for an IP address.'}, u'bigswitchvnsdevices': {u'name': u'listBigSwitchVnsDevices', u'related': [], u'isasync': False, u'params': [{u'name': u'page', u'required': False, u'related': [], u'length': 255, u'type': u'integer', u'description': u''}, {u'name': u'pagesize', u'required': False, u'related': [], u'length': 255, u'type': u'integer', u'description': u''}, {u'name': u'vnsdeviceid', u'required': False, u'related': [u'listBigSwitchVnsDevices'], u'length': 255, u'type': u'uuid', u'description': u'bigswitch vns device ID'}, {u'name': u'physicalnetworkid', u'required': False, u'related': [u'listPhysicalNetworks'], u'length': 255, u'type': u'uuid', u'description': u'the Physical Network ID'}, {u'name': u'keyword', u'required': False, u'related': [], u'length': 255, u'type': u'string', u'description': u'List by keyword'}], u'requiredparams': [], u'description': u'Lists BigSwitch Vns devices'}, u'networkacllists': {u'name': u'listNetworkACLLists', u'related': [u'createNetworkACLList'], u'isasync': False, u'params': [{u'name': u'keyword', u'required': False, u'related': [], u'length': 255, u'type': u'string', u'description': u'List by keyword'}, {u'name': u'name', u'required': False, u'related': [], u'length': 255, u'type': u'string', u'description': u'list network ACLs by specified name'}, {u'name': u'account', u'required': False, u'related': [], u'length': 255, u'type': u'string', u'description': u'list resources by account. Must be used with the domainId parameter.'}, {u'name': u'domainid', u'required': False, u'related': [u'listDomains', u'updateDomain', u'createDomain', u'listDomainChildren'], u'length': 255, u'type': u'uuid', u'description': u'list only resources belonging to the domain specified'}, {u'name': u'page', u'required': False, u'related': [], u'length': 255, u'type': u'integer', u'description': u''}, {u'name': u'fordisplay', u'required': False, u'related': [], u'length': 255, u'type': u'boolean', u'description': u'list resources by display flag; only ROOT admin is eligible to pass this parameter'}, {u'name': u'listall', u'required': False, u'related': [], u'length': 255, u'type': u'boolean', u'description': u"If set to false, list only resources belonging to the command's caller; if set to true - list resources that the caller is authorized to see. Default value is false"}, {u'name': u'networkid', u'required': False, u'related': [u'updateNetwork', u'updateNetwork', u'listNetscalerLoadBalancerNetworks', u'listPaloAltoFirewallNetworks', u'listNetworks', u'createNetwork'], u'length': 255, u'type': u'uuid', u'description': u'list network ACLs by network Id'}, {u'name': u'pagesize', u'required': False, u'related': [], u'length': 255, u'type': u'integer', u'description': u''}, {u'name': u'projectid', u'required': False, u'related': [u'updateProject', u'listProjectAccounts', u'createProject'], u'length': 255, u'type': u'uuid', u'description': u'list objects by project'}, {u'name': u'vpcid', u'required': False, u'related': [u'listVPCs', u'updateVPC', u'updateVPC', u'restartVPC', u'createVPC', u'createVPC', u'listVPCs'], u'length': 255, u'type': u'uuid', u'description': u'list network ACLs by Vpc Id'}, {u'name': u'isrecursive', u'required': False, u'related': [], u'length': 255, u'type': u'boolean', u'description': u'defaults to false, but if true, lists all resources from the parent specified by the domainId till leaves.'}, {u'name': u'id', u'required': False, u'related': [u'createNetworkACLList', u'listNetworkACLLists'], u'length': 255, u'type': u'uuid', u'description': u'Lists network ACL with the specified ID.'}], u'requiredparams': [], u'description': u'Lists all network ACLs'}, u'storageproviders': {u'name': u'listStorageProviders', u'related': [], u'isasync': False, u'params': [{u'name': u'page', u'required': False, u'related': [], u'length': 255, u'type': u'integer', u'description': u''}, {u'name': u'keyword', u'required': False, u'related': [], u'length': 255, u'type': u'string', u'description': u'List by keyword'}, {u'name': u'pagesize', u'required': False, u'related': [], u'length': 255, u'type': u'integer', u'description': u''}, {u'name': u'type', u'required': True, u'related': [], u'length': 255, u'type': u'string', u'description': u'the type of storage provider: either primary or image'}], u'requiredparams': [u'type'], u'description': u'Lists storage providers.'}, u'vpngateways': {u'name': u'listVpnGateways', u'related': [u'createVpnGateway', u'updateVpnGateway'], u'isasync': False, u'params': [{u'name': u'listall', u'required': False, u'related': [], u'length': 255, u'type': u'boolean', u'description': u"If set to false, list only resources belonging to the command's caller; if set to true - list resources that the caller is authorized to see. Default value is false"}, {u'name': u'account', u'required': False, u'related': [], u'length': 255, u'type': u'string', u'description': u'list resources by account. Must be used with the domainId parameter.'}, {u'name': u'projectid', u'required': False, u'related': [u'activateProject', u'updateProject', u'listProjectAccounts', u'createProject'], u'length': 255, u'type': u'uuid', u'description': u'list objects by project'}, {u'name': u'fordisplay', u'required': False, u'related': [], u'length': 255, u'type': u'boolean', u'description': u'list resources by display flag; only ROOT admin is eligible to pass this parameter'}, {u'name': u'vpcid', u'required': False, u'related': [u'listVPCs', u'updateVPC', u'updateVPC', u'restartVPC', u'createVPC', u'createVPC', u'listVPCs'], u'length': 255, u'type': u'uuid', u'description': u'id of vpc'}, {u'name': u'id', u'required': False, u'related': [u'createVpnGateway', u'updateVpnGateway', u'listVpnGateways'], u'length': 255, u'type': u'uuid', u'description': u'id of the vpn gateway'}, {u'name': u'isrecursive', u'required': False, u'related': [], u'length': 255, u'type': u'boolean', u'description': u'defaults to false, but if true, lists all resources from the parent specified by the domainId till leaves.'}, {u'name': u'keyword', u'required': False, u'related': [], u'length': 255, u'type': u'string', u'description': u'List by keyword'}, {u'name': u'pagesize', u'required': False, u'related': [], u'length': 255, u'type': u'integer', u'description': u''}, {u'name': u'domainid', u'required': False, u'related': [u'listDomains', u'updateDomain', u'createDomain', u'listDomainChildren'], u'length': 255, u'type': u'uuid', u'description': u'list only resources belonging to the domain specified'}, {u'name': u'page', u'required': False, u'related': [], u'length': 255, u'type': u'integer', u'description': u''}], u'requiredparams': [], u'description': u'Lists site 2 site vpn gateways'}, u'events': {u'name': u'listEvents', u'related': [], u'isasync': False, u'params': [{u'name': u'type', u'required': False, u'related': [], u'length': 255, u'type': u'string', u'description': u'the event type (see event types)'}, {u'name': u'id', u'required': False, u'related': [u'listEvents'], u'length': 255, u'type': u'uuid', u'description': u'the ID of the event'}, {u'name': u'enddate', u'required': False, u'related': [], u'length': 255, u'type': u'date', u'description': u'the end date range of the list you want to retrieve (use format "yyyy-MM-dd" or the new format "yyyy-MM-dd HH:mm:ss")'}, {u'name': u'entrytime', u'required': False, u'related': [], u'length': 255, u'type': u'integer', u'description': u'the time the event was entered'}, {u'name': u'duration', u'required': False, u'related': [], u'length': 255, u'type': u'integer', u'description': u'the duration of the event'}, {u'name': u'isrecursive', u'required': False, u'related': [], u'length': 255, u'type': u'boolean', u'description': u'defaults to false, but if true, lists all resources from the parent specified by the domainId till leaves.'}, {u'name': u'projectid', u'required': False, u'related': [u'updateProject', u'createProject'], u'length': 255, u'type': u'uuid', u'description': u'list objects by project'}, {u'name': u'account', u'required': False, u'related': [], u'length': 255, u'type': u'string', u'description': u'list resources by account. Must be used with the domainId parameter.'}, {u'name': u'startdate', u'required': False, u'related': [], u'length': 255, u'type': u'date', u'description': u'the start date range of the list you want to retrieve (use format "yyyy-MM-dd" or the new format "yyyy-MM-dd HH:mm:ss")'}, {u'name': u'page', u'required': False, u'related': [], u'length': 255, u'type': u'integer', u'description': u''}, {u'name': u'domainid', u'required': False, u'related': [u'listDomains', u'updateDomain', u'listDomainChildren'], u'length': 255, u'type': u'uuid', u'description': u'list only resources belonging to the domain specified'}, {u'name': u'level', u'required': False, u'related': [], u'length': 255, u'type': u'string', u'description': u'the event level (INFO, WARN, ERROR)'}, {u'name': u'listall', u'required': False, u'related': [], u'length': 255, u'type': u'boolean', u'description': u"If set to false, list only resources belonging to the command's caller; if set to true - list resources that the caller is authorized to see. Default value is false"}, {u'name': u'pagesize', u'required': False, u'related': [], u'length': 255, u'type': u'integer', u'description': u''}, {u'name': u'keyword', u'required': False, u'related': [], u'length': 255, u'type': u'string', u'description': u'List by keyword'}], u'requiredparams': [], u'description': u'A command to list events.'}, u'loadbalancerruleinstances': {u'name': u'listLoadBalancerRuleInstances', u'related': [u'listLoadBalancerRuleInstances'], u'isasync': False, u'params': [{u'name': u'lbvmips', u'required': False, u'related': [], u'length': 255, u'type': u'boolean', u'description': u'true if lb rule vm ip information to be included; default is false'}, {u'name': u'page', u'required': False, u'related': [], u'length': 255, u'type': u'integer', u'description': u''}, {u'name': u'keyword', u'required': False, u'related': [], u'length': 255, u'type': u'string', u'description': u'List by keyword'}, {u'name': u'pagesize', u'required': False, u'related': [], u'length': 255, u'type': u'integer', u'description': u''}, {u'name': u'applied', u'required': False, u'related': [], u'length': 255, u'type': u'boolean', u'description': u'true if listing all virtual machines currently applied to the load balancer rule; default is true'}, {u'name': u'id', u'required': True, u'related': [u'listPortForwardingRules', u'createPortForwardingRule', u'listIpForwardingRules', u'createIpForwardingRule', u'updatePortForwardingRule'], u'length': 255, u'type': u'uuid', u'description': u'the ID of the load balancer rule'}], u'requiredparams': [u'id'], u'description': u'List all virtual machine instances that are assigned to a load balancer rule.'}, u'hosts': {u'name': u'listHosts', u'related': [], u'isasync': False, u'params': [{u'name': u'hahost', u'required': False, u'related': [], u'length': 255, u'type': u'boolean', u'description': u'if true, list only hosts dedicated to HA'}, {u'name': u'details', u'required': False, u'related': [], u'length': 255, u'type': u'list', u'description': u'comma separated list of host details requested, value can be a list of [ min, all, capacity, events, stats]'}, {u'name': u'zoneid', u'required': False, u'related': [u'listZones'], u'length': 255, u'type': u'uuid', u'description': u'the Zone ID for the host'}, {u'name': u'type', u'required': False, u'related': [], u'length': 255, u'type': u'string', u'description': u'the host type'}, {u'name': u'id', u'required': False, u'related': [u'listHosts'], u'length': 255, u'type': u'uuid', u'description': u'the id of the host'}, {u'name': u'clusterid', u'required': False, u'related': [], u'length': 255, u'type': u'uuid', u'description': u'lists hosts existing in particular cluster'}, {u'name': u'hypervisor', u'required': False, u'related': [], u'length': 255, u'type': u'string', u'description': u'hypervisor type of host: XenServer,KVM,VMware,Hyperv,BareMetal,Simulator'}, {u'name': u'pagesize', u'required': False, u'related': [], u'length': 255, u'type': u'integer', u'description': u''}, {u'name': u'state', u'required': False, u'related': [], u'length': 255, u'type': u'string', u'description': u'the state of the host'}, {u'name': u'page', u'required': False, u'related': [], u'length': 255, u'type': u'integer', u'description': u''}, {u'name': u'name', u'required': False, u'related': [], u'length': 255, u'type': u'string', u'description': u'the name of the host'}, {u'name': u'keyword', u'required': False, u'related': [], u'length': 255, u'type': u'string', u'description': u'List by keyword'}, {u'name': u'podid', u'required': False, u'related': [u'updatePod'], u'length': 255, u'type': u'uuid', u'description': u'the Pod ID for the host'}, {u'name': u'virtualmachineid', u'required': False, u'related': [u'updateDefaultNicForVirtualMachine', u'resetPasswordForVirtualMachine', u'startVirtualMachine', u'listVirtualMachines', u'updateVMAffinityGroup', u'removeNicFromVirtualMachine', u'deployVirtualMachine', u'revertToVMSnapshot', u'addNicToVirtualMachine', u'restoreVirtualMachine', u'stopVirtualMachine', u'changeServiceForVirtualMachine', u'destroyVirtualMachine', u'updateVirtualMachine', u'detachIso', u'resetSSHKeyForVirtualMachine', u'attachIso', u'rebootVirtualMachine'], u'length': 255, u'type': u'uuid', u'description': u'lists hosts in the same cluster as this VM and flag hosts with enough CPU/RAm to host this VM'}, {u'name': u'resourcestate', u'required': False, u'related': [], u'length': 255, u'type': u'string', u'description': u'list hosts by resource state. Resource state represents current state determined by admin of host, valule can be one of [Enabled, Disabled, Unmanaged, PrepareForMaintenance, ErrorInMaintenance, Maintenance, Error]'}], u'requiredparams': [], u'description': u'Lists hosts.'}, u'hypervisorcapabilities': {u'name': u'listHypervisorCapabilities', u'related': [], u'isasync': False, u'params': [{u'name': u'page', u'required': False, u'related': [], u'length': 255, u'type': u'integer', u'description': u''}, {u'name': u'pagesize', u'required': False, u'related': [], u'length': 255, u'type': u'integer', u'description': u''}, {u'name': u'keyword', u'required': False, u'related': [], u'length': 255, u'type': u'string', u'description': u'List by keyword'}, {u'name': u'id', u'required': False, u'related': [u'listHypervisorCapabilities'], u'length': 255, u'type': u'uuid', u'description': u'ID of the hypervisor capability'}, {u'name': u'hypervisor', u'required': False, u'related': [], u'length': 255, u'type': u'string', u'description': u'the hypervisor for which to restrict the search'}], u'requiredparams': [], u'description': u'Lists all hypervisor capabilities.'}, u'configurations': {u'name': u'listConfigurations', u'related': [], u'isasync': False, u'params': [{u'name': u'name', u'required': False, u'related': [], u'length': 255, u'type': u'string', u'description': u'lists configuration by name'}, {u'name': u'keyword', u'required': False, u'related': [], u'length': 255, u'type': u'string', u'description': u'List by keyword'}, {u'name': u'storageid', u'required': False, u'related': [u'findStoragePoolsForMigration', u'createStoragePool', u'listStoragePools'], u'length': 255, u'type': u'uuid', u'description': u'the ID of the Storage pool to update the parameter value for corresponding storage pool'}, {u'name': u'clusterid', u'required': False, u'related': [u'updateCluster'], u'length': 255, u'type': u'uuid', u'description': u'the ID of the Cluster to update the parameter value for corresponding cluster'}, {u'name': u'zoneid', u'required': False, u'related': [u'listZones', u'updateZone', u'createZone', u'listZones'], u'length': 255, u'type': u'uuid', u'description': u'the ID of the Zone to update the parameter value for corresponding zone'}, {u'name': u'accountid', u'required': False, u'related': [u'listAccounts', u'createAccount', u'markDefaultZoneForAccount', u'listAccounts', u'ldapCreateAccount', u'disableAccount', u'lockAccount'], u'length': 255, u'type': u'uuid', u'description': u'the ID of the Account to update the parameter value for corresponding account'}, {u'name': u'page', u'required': False, u'related': [], u'length': 255, u'type': u'integer', u'description': u''}, {u'name': u'category', u'required': False, u'related': [], u'length': 255, u'type': u'string', u'description': u'lists configurations by category'}, {u'name': u'pagesize', u'required': False, u'related': [], u'length': 255, u'type': u'integer', u'description': u''}], u'requiredparams': [], u'description': u'Lists all configurations.'}, u'paloaltofirewalls': {u'name': u'listPaloAltoFirewalls', u'related': [u'configurePaloAltoFirewall'], u'isasync': False, u'params': [{u'name': u'physicalnetworkid', u'required': False, u'related': [u'listPhysicalNetworks'], u'length': 255, u'type': u'uuid', u'description': u'the Physical Network ID'}, {u'name': u'fwdeviceid', u'required': False, u'related': [u'configurePaloAltoFirewall', u'listPaloAltoFirewalls'], u'length': 255, u'type': u'uuid', u'description': u'Palo Alto firewall device ID'}, {u'name': u'keyword', u'required': False, u'related': [], u'length': 255, u'type': u'string', u'description': u'List by keyword'}, {u'name': u'pagesize', u'required': False, u'related': [], u'length': 255, u'type': u'integer', u'description': u''}, {u'name': u'page', u'required': False, u'related': [], u'length': 255, u'type': u'integer', u'description': u''}], u'requiredparams': [], u'description': u'lists Palo Alto firewall devices in a physical network'}, u'usagerecords': {u'name': u'listUsageRecords', u'related': [], u'isasync': False, u'params': [{u'name': u'projectid', u'required': False, u'related': [u'updateProject', u'createProject'], u'length': 255, u'type': u'uuid', u'description': u'List usage records for specified project'}, {u'name': u'domainid', u'required': False, u'related': [u'listDomains', u'updateDomain', u'createDomain', u'listDomainChildren'], u'length': 255, u'type': u'uuid', u'description': u'List usage records for the specified domain.'}, {u'name': u'startdate', u'required': True, u'related': [], u'length': 255, u'type': u'date', u'description': u'Start date range for usage record query. Use yyyy-MM-dd as the date format, e.g. startDate=2009-06-01.'}, {u'name': u'account', u'required': False, u'related': [], u'length': 255, u'type': u'string', u'description': u'List usage records for the specified user.'}, {u'name': u'page', u'required': False, u'related': [], u'length': 255, u'type': u'integer', u'description': u''}, {u'name': u'accountid', u'required': False, u'related': [u'listAccounts', u'createAccount', u'markDefaultZoneForAccount', u'listAccounts', u'updateAccount', u'ldapCreateAccount', u'disableAccount', u'lockAccount'], u'length': 255, u'type': u'uuid', u'description': u'List usage records for the specified account'}, {u'name': u'keyword', u'required': False, u'related': [], u'length': 255, u'type': u'string', u'description': u'List by keyword'}, {u'name': u'type', u'required': False, u'related': [], u'length': 255, u'type': u'long', u'description': u'List usage records for the specified usage type'}, {u'name': u'enddate', u'required': True, u'related': [], u'length': 255, u'type': u'date', u'description': u'End date range for usage record query. Use yyyy-MM-dd as the date format, e.g. startDate=2009-06-03.'}, {u'name': u'pagesize', u'required': False, u'related': [], u'length': 255, u'type': u'integer', u'description': u''}], u'requiredparams': [u'startdate', u'enddate'], u'description': u'Lists usage records for accounts'}, u'storagepools': {u'name': u'listStoragePools', u'related': [u'findStoragePoolsForMigration'], u'isasync': False, u'params': [{u'name': u'path', u'required': False, u'related': [], u'length': 255, u'type': u'string', u'description': u'the storage pool path'}, {u'name': u'clusterid', u'required': False, u'related': [], u'length': 255, u'type': u'uuid', u'description': u'list storage pools belongig to the specific cluster'}, {u'name': u'page', u'required': False, u'related': [], u'length': 255, u'type': u'integer', u'description': u''}, {u'name': u'zoneid', u'required': False, u'related': [u'listZones'], u'length': 255, u'type': u'uuid', u'description': u'the Zone ID for the storage pool'}, {u'name': u'name', u'required': False, u'related': [], u'length': 255, u'type': u'string', u'description': u'the name of the storage pool'}, {u'name': u'podid', u'required': False, u'related': [u'updatePod'], u'length': 255, u'type': u'uuid', u'description': u'the Pod ID for the storage pool'}, {u'name': u'pagesize', u'required': False, u'related': [], u'length': 255, u'type': u'integer', u'description': u''}, {u'name': u'scope', u'required': False, u'related': [u'findStoragePoolsForMigration', u'listStoragePools'], u'length': 255, u'type': u'string', u'description': u'the ID of the storage pool'}, {u'name': u'ipaddress', u'required': False, u'related': [], u'length': 255, u'type': u'string', u'description': u'the IP address for the storage pool'}, {u'name': u'id', u'required': False, u'related': [u'findStoragePoolsForMigration', u'listStoragePools'], u'length': 255, u'type': u'uuid', u'description': u'the ID of the storage pool'}, {u'name': u'keyword', u'required': False, u'related': [], u'length': 255, u'type': u'string', u'description': u'List by keyword'}], u'requiredparams': [], u'description': u'Lists storage pools.'}, u'ucsblades': {u'name': u'listUcsBlades', u'related': [], u'isasync': False, u'params': [{u'name': u'page', u'required': False, u'related': [], u'length': 255, u'type': u'integer', u'description': u''}, {u'name': u'ucsmanagerid', u'required': True, u'related': [u'addUcsManager'], u'length': 255, u'type': u'uuid', u'description': u'ucs manager id'}, {u'name': u'keyword', u'required': False, u'related': [], u'length': 255, u'type': u'string', u'description': u'List by keyword'}, {u'name': u'pagesize', u'required': False, u'related': [], u'length': 255, u'type': u'integer', u'description': u''}], u'requiredparams': [u'ucsmanagerid'], u'description': u'List ucs blades'}, u'snapshots': {u'name': u'listSnapshots', u'related': [u'revertSnapshot', u'createSnapshot'], u'isasync': False, u'params': [{u'name': u'tags', u'required': False, u'related': [], u'length': 255, u'type': u'map', u'description': u'List resources by tags (key/value pairs)'}, {u'name': u'snapshottype', u'required': False, u'related': [], u'length': 255, u'type': u'string', u'description': u'valid values are MANUAL or RECURRING.'}, {u'name': u'volumeid', u'required': False, u'related': [u'uploadVolume', u'createVolume', u'createVolume', u'attachVolume', u'updateVolume', u'migrateVolume', u'resizeVolume', u'uploadVolume', u'detachVolume', u'listVolumes'], u'length': 255, u'type': u'uuid', u'description': u'the ID of the disk volume'}, {u'name': u'isrecursive', u'required': False, u'related': [], u'length': 255, u'type': u'boolean', u'description': u'defaults to false, but if true, lists all resources from the parent specified by the domainId till leaves.'}, {u'name': u'keyword', u'required': False, u'related': [], u'length': 255, u'type': u'string', u'description': u'List by keyword'}, {u'name': u'listall', u'required': False, u'related': [], u'length': 255, u'type': u'boolean', u'description': u"If set to false, list only resources belonging to the command's caller; if set to true - list resources that the caller is authorized to see. Default value is false"}, {u'name': u'account', u'required': False, u'related': [], u'length': 255, u'type': u'string', u'description': u'list resources by account. Must be used with the domainId parameter.'}, {u'name': u'pagesize', u'required': False, u'related': [], u'length': 255, u'type': u'integer', u'description': u''}, {u'name': u'id', u'required': False, u'related': [u'revertSnapshot', u'listSnapshots', u'createSnapshot'], u'length': 255, u'type': u'uuid', u'description': u'lists snapshot by snapshot ID'}, {u'name': u'zoneid', u'required': False, u'related': [u'listZones', u'updateZone', u'createZone', u'listZones'], u'length': 255, u'type': u'uuid', u'description': u'list snapshots by zone id'}, {u'name': u'projectid', u'required': False, u'related': [u'updateProject', u'createProject'], u'length': 255, u'type': u'uuid', u'description': u'list objects by project'}, {u'name': u'page', u'required': False, u'related': [], u'length': 255, u'type': u'integer', u'description': u''}, {u'name': u'domainid', u'required': False, u'related': [u'listDomains', u'updateDomain', u'listDomainChildren'], u'length': 255, u'type': u'uuid', u'description': u'list only resources belonging to the domain specified'}, {u'name': u'intervaltype', u'required': False, u'related': [], u'length': 255, u'type': u'string', u'description': u'valid values are HOURLY, DAILY, WEEKLY, and MONTHLY.'}, {u'name': u'name', u'required': False, u'related': [], u'length': 255, u'type': u'string', u'description': u'lists snapshot by snapshot name'}], u'requiredparams': [], u'description': u'Lists all available snapshots for the account.'}, u'dedicatedguestvlanranges': {u'name': u'listDedicatedGuestVlanRanges', u'related': [u'dedicateGuestVlanRange'], u'isasync': False, u'params': [{u'name': u'physicalnetworkid', u'required': False, u'related': [u'listPhysicalNetworks'], u'length': 255, u'type': u'uuid', u'description': u'physical network id of the guest VLAN range'}, {u'name': u'keyword', u'required': False, u'related': [], u'length': 255, u'type': u'string', u'description': u'List by keyword'}, {u'name': u'account', u'required': False, u'related': [], u'length': 255, u'type': u'string', u'description': u'the account with which the guest VLAN range is associated. Must be used with the domainId parameter.'}, {u'name': u'guestvlanrange', u'required': False, u'related': [], u'length': 255, u'type': u'string', u'description': u'the dedicated guest vlan range'}, {u'name': u'projectid', u'required': False, u'related': [u'updateProject', u'createProject'], u'length': 255, u'type': u'uuid', u'description': u'project who will own the guest VLAN range'}, {u'name': u'zoneid', u'required': False, u'related': [u'listZones', u'updateZone', u'createZone', u'listZones'], u'length': 255, u'type': u'uuid', u'description': u'zone of the guest VLAN range'}, {u'name': u'id', u'required': False, u'related': [u'dedicateGuestVlanRange', u'listDedicatedGuestVlanRanges'], u'length': 255, u'type': u'uuid', u'description': u'list dedicated guest vlan ranges by id'}, {u'name': u'page', u'required': False, u'related': [], u'length': 255, u'type': u'integer', u'description': u''}, {u'name': u'pagesize', u'required': False, u'related': [], u'length': 255, u'type': u'integer', u'description': u''}, {u'name': u'domainid', u'required': False, u'related': [u'updateDomain', u'listDomainChildren'], u'length': 255, u'type': u'uuid', u'description': u'the domain ID with which the guest VLAN range is associated. If used with the account parameter, returns all guest VLAN ranges for that account in the specified domain.'}], u'requiredparams': [], u'description': u'Lists dedicated guest vlan ranges'}, u'serviceofferings': {u'name': u'listServiceOfferings', u'related': [], u'isasync': False, u'params': [{u'name': u'name', u'required': False, u'related': [], u'length': 255, u'type': u'string', u'description': u'name of the service offering'}, {u'name': u'id', u'required': False, u'related': [u'listServiceOfferings'], u'length': 255, u'type': u'uuid', u'description': u'ID of the service offering'}, {u'name': u'virtualmachineid', u'required': False, u'related': [u'updateDefaultNicForVirtualMachine', u'revertToVMSnapshot', u'resetPasswordForVirtualMachine', u'stopVirtualMachine', u'listVirtualMachines', u'migrateVirtualMachineWithVolume', u'destroyVirtualMachine', u'startVirtualMachine', u'listVirtualMachines', u'updateVMAffinityGroup', u'removeNicFromVirtualMachine', u'deployVirtualMachine', u'revertToVMSnapshot', u'addNicToVirtualMachine', u'restoreVirtualMachine', u'restoreVirtualMachine', u'stopVirtualMachine', u'changeServiceForVirtualMachine', u'destroyVirtualMachine', u'updateVirtualMachine', u'detachIso', u'resetSSHKeyForVirtualMachine', u'attachIso', u'rebootVirtualMachine'], u'length': 255, u'type': u'uuid', u'description': u'the ID of the virtual machine. Pass this in if you want to see the available service offering that a virtual machine can be changed to.'}, {u'name': u'keyword', u'required': False, u'related': [], u'length': 255, u'type': u'string', u'description': u'List by keyword'}, {u'name': u'systemvmtype', u'required': False, u'related': [], u'length': 255, u'type': u'string', u'description': u'the system VM type. Possible types are "consoleproxy", "secondarystoragevm" or "domainrouter".'}, {u'name': u'domainid', u'required': False, u'related': [u'listDomainChildren'], u'length': 255, u'type': u'uuid', u'description': u'the ID of the domain associated with the service offering'}, {u'name': u'pagesize', u'required': False, u'related': [], u'length': 255, u'type': u'integer', u'description': u''}, {u'name': u'issystem', u'required': False, u'related': [], u'length': 255, u'type': u'boolean', u'description': u'is this a system vm offering'}, {u'name': u'page', u'required': False, u'related': [], u'length': 255, u'type': u'integer', u'description': u''}], u'requiredparams': [], u'description': u'Lists all available service offerings.'}, u'affinitygrouptypes': {u'name': u'listAffinityGroupTypes', u'related': [], u'isasync': False, u'params': [{u'name': u'keyword', u'required': False, u'related': [], u'length': 255, u'type': u'string', u'description': u'List by keyword'}, {u'name': u'page', u'required': False, u'related': [], u'length': 255, u'type': u'integer', u'description': u''}, {u'name': u'pagesize', u'required': False, u'related': [], u'length': 255, u'type': u'integer', u'description': u''}], u'requiredparams': [], u'description': u'Lists affinity group types available'}, u'publicipaddresses': {u'name': u'listPublicIpAddresses', u'related': [u'associateIpAddress', u'updateIpAddress', u'listPublicIpAddresses', u'restartNetwork', u'associateIpAddress'], u'isasync': False, u'params': [{u'name': u'physicalnetworkid', u'required': False, u'related': [u'listPhysicalNetworks', u'createPhysicalNetwork'], u'length': 255, u'type': u'uuid', u'description': u'lists all public IP addresses by physical network id'}, {u'name': u'account', u'required': False, u'related': [], u'length': 255, u'type': u'string', u'description': u'list resources by account. Must be used with the domainId parameter.'}, {u'name': u'vpcid', u'required': False, u'related': [u'listVPCs', u'updateVPC', u'updateVPC', u'restartVPC', u'createVPC', u'createVPC', u'listVPCs'], u'length': 255, u'type': u'uuid', u'description': u'List ips belonging to the VPC'}, {u'name': u'allocatedonly', u'required': False, u'related': [], u'length': 255, u'type': u'boolean', u'description': u'limits search results to allocated public IP addresses'}, {u'name': u'isrecursive', u'required': False, u'related': [], u'length': 255, u'type': u'boolean', u'description': u'defaults to false, but if true, lists all resources from the parent specified by the domainId till leaves.'}, {u'name': u'keyword', u'required': False, u'related': [], u'length': 255, u'type': u'string', u'description': u'List by keyword'}, {u'name': u'id', u'required': False, u'related': [u'associateIpAddress', u'listPublicIpAddresses', u'updateIpAddress', u'listPublicIpAddresses', u'restartNetwork', u'associateIpAddress'], u'length': 255, u'type': u'uuid', u'description': u'lists ip address by id'}, {u'name': u'projectid', u'required': False, u'related': [u'activateProject', u'updateProject', u'listProjectAccounts', u'createProject'], u'length': 255, u'type': u'uuid', u'description': u'list objects by project'}, {u'name': u'pagesize', u'required': False, u'related': [], u'length': 255, u'type': u'integer', u'description': u''}, {u'name': u'vlanid', u'required': False, u'related': [u'createVlanIpRange', u'dedicatePublicIpRange', u'listVlanIpRanges'], u'length': 255, u'type': u'uuid', u'description': u'lists all public IP addresses by VLAN ID'}, {u'name': u'isstaticnat', u'required': False, u'related': [], u'length': 255, u'type': u'boolean', u'description': u'list only static nat ip addresses'}, {u'name': u'forloadbalancing', u'required': False, u'related': [], u'length': 255, u'type': u'boolean', u'description': u'list only ips used for load balancing'}, {u'name': u'page', u'required': False, u'related': [], u'length': 255, u'type': u'integer', u'description': u''}, {u'name': u'associatednetworkid', u'required': False, u'related': [u'updateNetwork', u'listNetworks', u'updateNetwork', u'listNetscalerLoadBalancerNetworks', u'listPaloAltoFirewallNetworks', u'listNetworks', u'createNetwork'], u'length': 255, u'type': u'uuid', u'description': u'lists all public IP addresses associated to the network specified'}, {u'name': u'forvirtualnetwork', u'required': False, u'related': [], u'length': 255, u'type': u'boolean', u'description': u'the virtual network for the IP address'}, {u'name': u'ipaddress', u'required': False, u'related': [], u'length': 255, u'type': u'string', u'description': u'lists the specified IP address'}, {u'name': u'tags', u'required': False, u'related': [], u'length': 255, u'type': u'map', u'description': u'List resources by tags (key/value pairs)'}, {u'name': u'zoneid', u'required': False, u'related': [u'listZones', u'updateZone', u'createZone', u'listZones'], u'length': 255, u'type': u'uuid', u'description': u'lists all public IP addresses by Zone ID'}, {u'name': u'issourcenat', u'required': False, u'related': [], u'length': 255, u'type': u'boolean', u'description': u'list only source nat ip addresses'}, {u'name': u'listall', u'required': False, u'related': [], u'length': 255, u'type': u'boolean', u'description': u"If set to false, list only resources belonging to the command's caller; if set to true - list resources that the caller is authorized to see. Default value is false"}, {u'name': u'fordisplay', u'required': False, u'related': [], u'length': 255, u'type': u'boolean', u'description': u'list resources by display flag; only ROOT admin is eligible to pass this parameter'}, {u'name': u'domainid', u'required': False, u'related': [u'listDomains', u'updateDomain', u'createDomain', u'listDomainChildren'], u'length': 255, u'type': u'uuid', u'description': u'list only resources belonging to the domain specified'}], u'requiredparams': [], u'description': u'Lists all public ip addresses'}, u'networkserviceproviders': {u'name': u'listNetworkServiceProviders', u'related': [u'addNetworkServiceProvider', u'updateNetworkServiceProvider', u'listTrafficTypes'], u'isasync': False, u'params': [{u'name': u'page', u'required': False, u'related': [], u'length': 255, u'type': u'integer', u'description': u''}, {u'name': u'name', u'required': False, u'related': [], u'length': 255, u'type': u'string', u'description': u'list providers by name'}, {u'name': u'physicalnetworkid', u'required': False, u'related': [u'listPhysicalNetworks', u'updatePhysicalNetwork', u'createPhysicalNetwork'], u'length': 255, u'type': u'uuid', u'description': u'the Physical Network ID'}, {u'name': u'keyword', u'required': False, u'related': [], u'length': 255, u'type': u'string', u'description': u'List by keyword'}, {u'name': u'pagesize', u'required': False, u'related': [], u'length': 255, u'type': u'integer', u'description': u''}, {u'name': u'state', u'required': False, u'related': [], u'length': 255, u'type': u'string', u'description': u'list providers by state'}], u'requiredparams': [], u'description': u'Lists network serviceproviders for a given physical network.'}, u'capacity': {u'name': u'listCapacity', u'related': [], u'isasync': False, u'params': [{u'name': u'type', u'required': False, u'related': [], u'length': 255, u'type': u'integer', u'description': u'lists capacity by type* CAPACITY_TYPE_MEMORY = 0* CAPACITY_TYPE_CPU = 1* CAPACITY_TYPE_STORAGE = 2* CAPACITY_TYPE_STORAGE_ALLOCATED = 3* CAPACITY_TYPE_VIRTUAL_NETWORK_PUBLIC_IP = 4* CAPACITY_TYPE_PRIVATE_IP = 5* CAPACITY_TYPE_SECONDARY_STORAGE = 6* CAPACITY_TYPE_VLAN = 7* CAPACITY_TYPE_DIRECT_ATTACHED_PUBLIC_IP = 8* CAPACITY_TYPE_LOCAL_STORAGE = 9.'}, {u'name': u'podid', u'required': False, u'related': [u'updatePod', u'createPod', u'listPods'], u'length': 255, u'type': u'uuid', u'description': u'lists capacity by the Pod ID'}, {u'name': u'zoneid', u'required': False, u'related': [u'listZones', u'updateZone', u'createZone', u'listZones'], u'length': 255, u'type': u'uuid', u'description': u'lists capacity by the Zone ID'}, {u'name': u'sortby', u'required': False, u'related': [], u'length': 255, u'type': u'string', u'description': u'Sort the results. Available values: Usage'}, {u'name': u'fetchlatest', u'required': False, u'related': [], u'length': 255, u'type': u'boolean', u'description': u'recalculate capacities and fetch the latest'}, {u'name': u'clusterid', u'required': False, u'related': [u'updateCluster'], u'length': 255, u'type': u'uuid', u'description': u'lists capacity by the Cluster ID'}, {u'name': u'pagesize', u'required': False, u'related': [], u'length': 255, u'type': u'integer', u'description': u''}, {u'name': u'keyword', u'required': False, u'related': [], u'length': 255, u'type': u'string', u'description': u'List by keyword'}, {u'name': u'page', u'required': False, u'related': [], u'length': 255, u'type': u'integer', u'description': u''}], u'requiredparams': [], u'description': u'Lists all the system wide capacities.'}, u'diskofferings': {u'name': u'listDiskOfferings', u'related': [u'createDiskOffering'], u'isasync': False, u'params': [{u'name': u'pagesize', u'required': False, u'related': [], u'length': 255, u'type': u'integer', u'description': u''}, {u'name': u'page', u'required': False, u'related': [], u'length': 255, u'type': u'integer', u'description': u''}, {u'name': u'name', u'required': False, u'related': [], u'length': 255, u'type': u'string', u'description': u'name of the disk offering'}, {u'name': u'keyword', u'required': False, u'related': [], u'length': 255, u'type': u'string', u'description': u'List by keyword'}, {u'name': u'domainid', u'required': False, u'related': [u'listDomains', u'updateDomain', u'listDomainChildren'], u'length': 255, u'type': u'uuid', u'description': u'the ID of the domain of the disk offering.'}, {u'name': u'id', u'required': False, u'related': [u'createDiskOffering', u'listDiskOfferings'], u'length': 255, u'type': u'uuid', u'description': u'ID of the disk offering'}], u'requiredparams': [], u'description': u'Lists all available disk offerings.'}, u'lbstickinesspolicies': {u'name': u'listLBStickinessPolicies', u'related': [u'createLBStickinessPolicy'], u'isasync': False, u'params': [{u'name': u'lbruleid', u'required': False, u'related': [u'listIpForwardingRules'], u'length': 255, u'type': u'uuid', u'description': u'the ID of the load balancer rule'}, {u'name': u'id', u'required': False, u'related': [u'createLBStickinessPolicy', u'listLBStickinessPolicies'], u'length': 255, u'type': u'uuid', u'description': u'the ID of the load balancer stickiness policy'}, {u'name': u'page', u'required': False, u'related': [], u'length': 255, u'type': u'integer', u'description': u''}, {u'name': u'pagesize', u'required': False, u'related': [], u'length': 255, u'type': u'integer', u'description': u''}, {u'name': u'keyword', u'required': False, u'related': [], u'length': 255, u'type': u'string', u'description': u'List by keyword'}, {u'name': u'fordisplay', u'required': False, u'related': [], u'length': 255, u'type': u'boolean', u'description': u'list resources by display flag; only ROOT admin is eligible to pass this parameter'}], u'requiredparams': [], u'description': u'Lists LBStickiness policies.'}, u'vmsnapshot': {u'name': u'listVMSnapshot', u'related': [], u'isasync': False, u'params': [{u'name': u'keyword', u'required': False, u'related': [], u'length': 255, u'type': u'string', u'description': u'List by keyword'}, {u'name': u'name', u'required': False, u'related': [], u'length': 255, u'type': u'string', u'description': u'lists snapshot by snapshot name or display name'}, {u'name': u'virtualmachineid', u'required': False, u'related': [u'updateVirtualMachine', u'assignVirtualMachine', u'updateDefaultNicForVirtualMachine', u'revertToVMSnapshot', u'resetPasswordForVirtualMachine', u'stopVirtualMachine', u'listVirtualMachines', u'migrateVirtualMachineWithVolume', u'destroyVirtualMachine', u'startVirtualMachine', u'listVirtualMachines', u'updateVMAffinityGroup', u'removeNicFromVirtualMachine', u'deployVirtualMachine', u'revertToVMSnapshot', u'addNicToVirtualMachine', u'restoreVirtualMachine', u'restoreVirtualMachine', u'stopVirtualMachine', u'changeServiceForVirtualMachine', u'destroyVirtualMachine', u'updateVirtualMachine', u'detachIso', u'resetSSHKeyForVirtualMachine', u'attachIso', u'rebootVirtualMachine'], u'length': 255, u'type': u'uuid', u'description': u'the ID of the vm'}, {u'name': u'tags', u'required': False, u'related': [], u'length': 255, u'type': u'map', u'description': u'List resources by tags (key/value pairs)'}, {u'name': u'projectid', u'required': False, u'related': [u'createProject'], u'length': 255, u'type': u'uuid', u'description': u'list objects by project'}, {u'name': u'account', u'required': False, u'related': [], u'length': 255, u'type': u'string', u'description': u'list resources by account. Must be used with the domainId parameter.'}, {u'name': u'isrecursive', u'required': False, u'related': [], u'length': 255, u'type': u'boolean', u'description': u'defaults to false, but if true, lists all resources from the parent specified by the domainId till leaves.'}, {u'name': u'state', u'required': False, u'related': [], u'length': 255, u'type': u'string', u'description': u'state of the virtual machine snapshot'}, {u'name': u'listall', u'required': False, u'related': [], u'length': 255, u'type': u'boolean', u'description': u"If set to false, list only resources belonging to the command's caller; if set to true - list resources that the caller is authorized to see. Default value is false"}, {u'name': u'vmsnapshotid', u'required': False, u'related': [u'listVMSnapshot'], u'length': 255, u'type': u'uuid', u'description': u'The ID of the VM snapshot'}, {u'name': u'pagesize', u'required': False, u'related': [], u'length': 255, u'type': u'integer', u'description': u''}, {u'name': u'page', u'required': False, u'related': [], u'length': 255, u'type': u'integer', u'description': u''}, {u'name': u'domainid', u'required': False, u'related': [u'updateDomain', u'listDomainChildren'], u'length': 255, u'type': u'uuid', u'description': u'list only resources belonging to the domain specified'}], u'requiredparams': [], u'description': u'List virtual machine snapshot by conditions'}, u'securitygroups': {u'name': u'listSecurityGroups', u'related': [], u'isasync': False, u'params': [{u'name': u'securitygroupname', u'required': False, u'related': [], u'length': 255, u'type': u'string', u'description': u'lists security groups by name'}, {u'name': u'id', u'required': False, u'related': [u'listSecurityGroups'], u'length': 255, u'type': u'uuid', u'description': u'list the security group by the id provided'}, {u'name': u'virtualmachineid', u'required': False, u'related': [u'updateVirtualMachine', u'removeNicFromVirtualMachine', u'assignVirtualMachine', u'detachIso', u'updateDefaultNicForVirtualMachine', u'updateDefaultNicForVirtualMachine', u'revertToVMSnapshot', u'startVirtualMachine', u'resetPasswordForVirtualMachine', u'resetPasswordForVirtualMachine', u'updateVMAffinityGroup', u'stopVirtualMachine', u'listVirtualMachines', u'migrateVirtualMachineWithVolume', u'destroyVirtualMachine', u'startVirtualMachine', u'listVirtualMachines', u'changeServiceForVirtualMachine', u'updateVMAffinityGroup', u'removeNicFromVirtualMachine', u'deployVirtualMachine', u'revertToVMSnapshot', u'addNicToVirtualMachine', u'restoreVirtualMachine', u'restoreVirtualMachine', u'stopVirtualMachine', u'changeServiceForVirtualMachine', u'destroyVirtualMachine', u'migrateVirtualMachine', u'updateVirtualMachine', u'detachIso', u'resetSSHKeyForVirtualMachine', u'attachIso', u'rebootVirtualMachine'], u'length': 255, u'type': u'uuid', u'description': u'lists security groups by virtual machine id'}, {u'name': u'page', u'required': False, u'related': [], u'length': 255, u'type': u'integer', u'description': u''}, {u'name': u'projectid', u'required': False, u'related': [u'updateProject', u'createProject'], u'length': 255, u'type': u'uuid', u'description': u'list objects by project'}, {u'name': u'tags', u'required': False, u'related': [], u'length': 255, u'type': u'map', u'description': u'List resources by tags (key/value pairs)'}, {u'name': u'listall', u'required': False, u'related': [], u'length': 255, u'type': u'boolean', u'description': u"If set to false, list only resources belonging to the command's caller; if set to true - list resources that the caller is authorized to see. Default value is false"}, {u'name': u'keyword', u'required': False, u'related': [], u'length': 255, u'type': u'string', u'description': u'List by keyword'}, {u'name': u'pagesize', u'required': False, u'related': [], u'length': 255, u'type': u'integer', u'description': u''}, {u'name': u'account', u'required': False, u'related': [], u'length': 255, u'type': u'string', u'description': u'list resources by account. Must be used with the domainId parameter.'}, {u'name': u'domainid', u'required': False, u'related': [u'updateDomain', u'listDomainChildren'], u'length': 255, u'type': u'uuid', u'description': u'list only resources belonging to the domain specified'}, {u'name': u'isrecursive', u'required': False, u'related': [], u'length': 255, u'type': u'boolean', u'description': u'defaults to false, but if true, lists all resources from the parent specified by the domainId till leaves.'}], u'requiredparams': [], u'description': u'Lists security groups'}, u'ovselements': {u'name': u'listOvsElements', u'related': [u'configureOvsElement'], u'isasync': False, u'params': [{u'name': u'keyword', u'required': False, u'related': [], u'length': 255, u'type': u'string', u'description': u'List by keyword'}, {u'name': u'pagesize', u'required': False, u'related': [], u'length': 255, u'type': u'integer', u'description': u''}, {u'name': u'enabled', u'required': False, u'related': [], u'length': 255, u'type': u'boolean', u'description': u'list network offerings by enabled state'}, {u'name': u'page', u'required': False, u'related': [], u'length': 255, u'type': u'integer', u'description': u''}, {u'name': u'nspid', u'required': False, u'related': [u'addNetworkServiceProvider', u'updateNetworkServiceProvider', u'listTrafficTypes'], u'length': 255, u'type': u'uuid', u'description': u'list ovs elements by network service provider id'}, {u'name': u'id', u'required': False, u'related': [u'listOvsElements', u'configureOvsElement'], u'length': 255, u'type': u'uuid', u'description': u'list ovs elements by id'}], u'requiredparams': [], u'description': u'Lists all available ovs elements.'}, u'baremetaldhcp': {u'name': u'listBaremetalDhcp', u'related': [u'addBaremetalDhcp'], u'isasync': False, u'params': [{u'name': u'dhcpservertype', u'required': False, u'related': [], u'length': 255, u'type': u'string', u'description': u'Type of DHCP device'}, {u'name': u'id', u'required': False, u'related': [], u'length': 255, u'type': u'long', u'description': u'DHCP server device ID'}, {u'name': u'pagesize', u'required': False, u'related': [], u'length': 255, u'type': u'integer', u'description': u''}, {u'name': u'keyword', u'required': False, u'related': [], u'length': 255, u'type': u'string', u'description': u'List by keyword'}, {u'name': u'page', u'required': False, u'related': [], u'length': 255, u'type': u'integer', u'description': u''}], u'requiredparams': [], u'description': u'list baremetal dhcp servers'}, u'conditions': {u'name': u'listConditions', u'related': [], u'isasync': False, u'params': [{u'name': u'account', u'required': False, u'related': [], u'length': 255, u'type': u'string', u'description': u'list resources by account. Must be used with the domainId parameter.'}, {u'name': u'isrecursive', u'required': False, u'related': [], u'length': 255, u'type': u'boolean', u'description': u'defaults to false, but if true, lists all resources from the parent specified by the domainId till leaves.'}, {u'name': u'id', u'required': False, u'related': [u'listConditions'], u'length': 255, u'type': u'uuid', u'description': u'ID of the Condition.'}, {u'name': u'domainid', u'required': False, u'related': [u'listDomainChildren'], u'length': 255, u'type': u'uuid', u'description': u'list only resources belonging to the domain specified'}, {u'name': u'counterid', u'required': False, u'related': [u'createCounter'], u'length': 255, u'type': u'uuid', u'description': u'Counter-id of the condition.'}, {u'name': u'listall', u'required': False, u'related': [], u'length': 255, u'type': u'boolean', u'description': u"If set to false, list only resources belonging to the command's caller; if set to true - list resources that the caller is authorized to see. Default value is false"}, {u'name': u'pagesize', u'required': False, u'related': [], u'length': 255, u'type': u'integer', u'description': u''}, {u'name': u'keyword', u'required': False, u'related': [], u'length': 255, u'type': u'string', u'description': u'List by keyword'}, {u'name': u'page', u'required': False, u'related': [], u'length': 255, u'type': u'integer', u'description': u''}, {u'name': u'policyid', u'required': False, u'related': [u'createAutoScalePolicy'], u'length': 255, u'type': u'uuid', u'description': u'the ID of the policy'}], u'requiredparams': [], u'description': u'List Conditions for the specific user'}, u'swifts': {u'name': u'listSwifts', u'related': [], u'isasync': False, u'params': [{u'name': u'keyword', u'required': False, u'related': [], u'length': 255, u'type': u'string', u'description': u'List by keyword'}, {u'name': u'id', u'required': False, u'related': [], u'length': 255, u'type': u'long', u'description': u'the id of the swift'}, {u'name': u'page', u'required': False, u'related': [], u'length': 255, u'type': u'integer', u'description': u''}, {u'name': u'pagesize', u'required': False, u'related': [], u'length': 255, u'type': u'integer', u'description': u''}], u'requiredparams': [], u'description': u'List Swift.'}, u'counters': {u'name': u'listCounters', u'related': [u'createCounter'], u'isasync': False, u'params': [{u'name': u'keyword', u'required': False, u'related': [], u'length': 255, u'type': u'string', u'description': u'List by keyword'}, {u'name': u'name', u'required': False, u'related': [], u'length': 255, u'type': u'string', u'description': u'Name of the counter.'}, {u'name': u'source', u'required': False, u'related': [], u'length': 255, u'type': u'string', u'description': u'Source of the counter.'}, {u'name': u'pagesize', u'required': False, u'related': [], u'length': 255, u'type': u'integer', u'description': u''}, {u'name': u'id', u'required': False, u'related': [u'createCounter', u'listCounters'], u'length': 255, u'type': u'uuid', u'description': u'ID of the Counter.'}, {u'name': u'page', u'required': False, u'related': [], u'length': 255, u'type': u'integer', u'description': u''}], u'requiredparams': [], u'description': u'List the counters'}, u'tags': {u'name': u'listTags', u'related': [u'listResourceDetails'], u'isasync': False, u'params': [{u'name': u'domainid', u'required': False, u'related': [u'listDomains', u'updateDomain', u'listDomainChildren'], u'length': 255, u'type': u'uuid', u'description': u'list only resources belonging to the domain specified'}, {u'name': u'isrecursive', u'required': False, u'related': [], u'length': 255, u'type': u'boolean', u'description': u'defaults to false, but if true, lists all resources from the parent specified by the domainId till leaves.'}, {u'name': u'keyword', u'required': False, u'related': [], u'length': 255, u'type': u'string', u'description': u'List by keyword'}, {u'name': u'account', u'required': False, u'related': [], u'length': 255, u'type': u'string', u'description': u'list resources by account. Must be used with the domainId parameter.'}, {u'name': u'key', u'required': False, u'related': [], u'length': 255, u'type': u'string', u'description': u'list by key'}, {u'name': u'value', u'required': False, u'related': [], u'length': 255, u'type': u'string', u'description': u'list by value'}, {u'name': u'pagesize', u'required': False, u'related': [], u'length': 255, u'type': u'integer', u'description': u''}, {u'name': u'resourcetype', u'required': False, u'related': [], u'length': 255, u'type': u'string', u'description': u'list by resource type'}, {u'name': u'listall', u'required': False, u'related': [], u'length': 255, u'type': u'boolean', u'description': u"If set to false, list only resources belonging to the command's caller; if set to true - list resources that the caller is authorized to see. Default value is false"}, {u'name': u'page', u'required': False, u'related': [], u'length': 255, u'type': u'integer', u'description': u''}, {u'name': u'projectid', u'required': False, u'related': [u'updateProject', u'createProject'], u'length': 255, u'type': u'uuid', u'description': u'list objects by project'}, {u'name': u'customer', u'required': False, u'related': [], u'length': 255, u'type': u'string', u'description': u'list by customer name'}, {u'name': u'resourceid', u'required': False, u'related': [], u'length': 255, u'type': u'string', u'description': u'list by resource id'}], u'requiredparams': [], u'description': u'List resource tag(s)'}, u'routers': {u'name': u'listRouters', u'related': [u'stopRouter', u'destroyRouter', u'startInternalLoadBalancerVM', u'changeServiceForRouter', u'stopInternalLoadBalancerVM', u'rebootRouter', u'startRouter', u'listInternalLoadBalancerVMs'], u'isasync': False, u'params': [{u'name': u'id', u'required': False, u'related': [u'updateVirtualMachine', u'removeNicFromVirtualMachine', u'assignVirtualMachine', u'detachIso', u'updateDefaultNicForVirtualMachine', u'updateDefaultNicForVirtualMachine', u'revertToVMSnapshot', u'recoverVirtualMachine', u'startVirtualMachine', u'resetPasswordForVirtualMachine', u'resetPasswordForVirtualMachine', u'updateVMAffinityGroup', u'stopVirtualMachine', u'listVirtualMachines', u'deployVirtualMachine', u'migrateVirtualMachineWithVolume', u'destroyVirtualMachine', u'attachIso', u'rebootVirtualMachine', u'startVirtualMachine', u'listVirtualMachines', u'changeServiceForVirtualMachine', u'updateVMAffinityGroup', u'removeNicFromVirtualMachine', u'deployVirtualMachine', u'addNicToVirtualMachine', u'revertToVMSnapshot', u'addNicToVirtualMachine', u'restoreVirtualMachine', u'restoreVirtualMachine', u'stopVirtualMachine', u'changeServiceForVirtualMachine', u'destroyVirtualMachine', u'migrateVirtualMachine', u'updateVirtualMachine', u'detachIso', u'resetSSHKeyForVirtualMachine', u'resetSSHKeyForVirtualMachine', u'attachIso', u'rebootVirtualMachine'], u'length': 255, u'type': u'uuid', u'description': u'the ID of the disk router'}, {u'name': u'zoneid', u'required': False, u'related': [u'listZones', u'updateZone', u'createZone', u'listZones'], u'length': 255, u'type': u'uuid', u'description': u'the Zone ID of the router'}, {u'name': u'listall', u'required': False, u'related': [], u'length': 255, u'type': u'boolean', u'description': u"If set to false, list only resources belonging to the command's caller; if set to true - list resources that the caller is authorized to see. Default value is false"}, {u'name': u'name', u'required': False, u'related': [], u'length': 255, u'type': u'string', u'description': u'the name of the router'}, {u'name': u'isrecursive', u'required': False, u'related': [], u'length': 255, u'type': u'boolean', u'description': u'defaults to false, but if true, lists all resources from the parent specified by the domainId till leaves.'}, {u'name': u'state', u'required': False, u'related': [], u'length': 255, u'type': u'string', u'description': u'the state of the router'}, {u'name': u'page', u'required': False, u'related': [], u'length': 255, u'type': u'integer', u'description': u''}, {u'name': u'version', u'required': False, u'related': [], u'length': 255, u'type': u'string', u'description': u'list virtual router elements by version'}, {u'name': u'keyword', u'required': False, u'related': [], u'length': 255, u'type': u'string', u'description': u'List by keyword'}, {u'name': u'pagesize', u'required': False, u'related': [], u'length': 255, u'type': u'integer', u'description': u''}, {u'name': u'account', u'required': False, u'related': [], u'length': 255, u'type': u'string', u'description': u'list resources by account. Must be used with the domainId parameter.'}, {u'name': u'vpcid', u'required': False, u'related': [u'listVPCs', u'updateVPC', u'updateVPC', u'restartVPC', u'createVPC', u'createVPC', u'listVPCs'], u'length': 255, u'type': u'uuid', u'description': u'List networks by VPC'}, {u'name': u'forvpc', u'required': False, u'related': [], u'length': 255, u'type': u'boolean', u'description': u'if true is passed for this parameter, list only VPC routers'}, {u'name': u'networkid', u'required': False, u'related': [u'createNetwork', u'updateNetwork', u'listNetworks', u'listNiciraNvpDeviceNetworks', u'updateNetwork', u'listNetscalerLoadBalancerNetworks', u'listPaloAltoFirewallNetworks', u'listNetworks', u'createNetwork'], u'length': 255, u'type': u'uuid', u'description': u'list by network id'}, {u'name': u'podid', u'required': False, u'related': [u'updatePod', u'createPod', u'listPods'], u'length': 255, u'type': u'uuid', u'description': u'the Pod ID of the router'}, {u'name': u'hostid', u'required': False, u'related': [u'cancelHostMaintenance', u'updateHost', u'prepareHostForMaintenance', u'listHosts', u'addHost', u'addBaremetalHost'], u'length': 255, u'type': u'uuid', u'description': u'the host ID of the router'}, {u'name': u'domainid', u'required': False, u'related': [u'listDomains', u'updateDomain', u'createDomain', u'listDomainChildren'], u'length': 255, u'type': u'uuid', u'description': u'list only resources belonging to the domain specified'}, {u'name': u'clusterid', u'required': False, u'related': [u'listClusters', u'addCluster', u'updateCluster'], u'length': 255, u'type': u'uuid', u'description': u'the cluster ID of the router'}, {u'name': u'projectid', u'required': False, u'related': [u'listProjects', u'activateProject', u'suspendProject', u'updateProject', u'listProjectAccounts', u'createProject'], u'length': 255, u'type': u'uuid', u'description': u'list objects by project'}], u'requiredparams': [], u'description': u'List routers.'}, u'traffictypes': {u'name': u'listTrafficTypes', u'related': [u'addNetworkServiceProvider', u'updateNetworkServiceProvider'], u'isasync': False, u'params': [{u'name': u'page', u'required': False, u'related': [], u'length': 255, u'type': u'integer', u'description': u''}, {u'name': u'pagesize', u'required': False, u'related': [], u'length': 255, u'type': u'integer', u'description': u''}, {u'name': u'physicalnetworkid', u'required': True, u'related': [u'listPhysicalNetworks', u'createPhysicalNetwork'], u'length': 255, u'type': u'uuid', u'description': u'the Physical Network ID'}, {u'name': u'keyword', u'required': False, u'related': [], u'length': 255, u'type': u'string', u'description': u'List by keyword'}], u'requiredparams': [u'physicalnetworkid'], u'description': u'Lists traffic types of a given physical network.'}, u'projectinvitations': {u'name': u'listProjectInvitations', u'related': [], u'isasync': False, u'params': [{u'name': u'isrecursive', u'required': False, u'related': [], u'length': 255, u'type': u'boolean', u'description': u'defaults to false, but if true, lists all resources from the parent specified by the domainId till leaves.'}, {u'name': u'domainid', u'required': False, u'related': [u'listDomains', u'updateDomain', u'listDomainChildren'], u'length': 255, u'type': u'uuid', u'description': u'list only resources belonging to the domain specified'}, {u'name': u'keyword', u'required': False, u'related': [], u'length': 255, u'type': u'string', u'description': u'List by keyword'}, {u'name': u'projectid', u'required': False, u'related': [u'updateProject', u'createProject'], u'length': 255, u'type': u'uuid', u'description': u'list by project id'}, {u'name': u'id', u'required': False, u'related': [u'listProjectInvitations'], u'length': 255, u'type': u'uuid', u'description': u'list invitations by id'}, {u'name': u'state', u'required': False, u'related': [], u'length': 255, u'type': u'string', u'description': u'list invitations by state'}, {u'name': u'page', u'required': False, u'related': [], u'length': 255, u'type': u'integer', u'description': u''}, {u'name': u'listall', u'required': False, u'related': [], u'length': 255, u'type': u'boolean', u'description': u"If set to false, list only resources belonging to the command's caller; if set to true - list resources that the caller is authorized to see. Default value is false"}, {u'name': u'pagesize', u'required': False, u'related': [], u'length': 255, u'type': u'integer', u'description': u''}, {u'name': u'account', u'required': False, u'related': [], u'length': 255, u'type': u'string', u'description': u'list resources by account. Must be used with the domainId parameter.'}, {u'name': u'activeonly', u'required': False, u'related': [], u'length': 255, u'type': u'boolean', u'description': u'if true, list only active invitations - having Pending state and ones that are not timed out yet'}], u'requiredparams': [], u'description': u'Lists projects and provides detailed information for listed projects'}, u'isos': {u'name': u'listIsos', u'related': [u'registerIso', u'registerTemplate', u'createTemplate', u'copyTemplate', u'copyIso', u'listIsos', u'listTemplates'], u'isasync': False, u'params': [{u'name': u'ispublic', u'required': False, u'related': [], u'length': 255, u'type': u'boolean', u'description': u'true if the ISO is publicly available to all users, false otherwise.'}, {u'name': u'showremoved', u'required': False, u'related': [], u'length': 255, u'type': u'boolean', u'description': u'show removed ISOs as well'}, {u'name': u'page', u'required': False, u'related': [], u'length': 255, u'type': u'integer', u'description': u''}, {u'name': u'isready', u'required': False, u'related': [], u'length': 255, u'type': u'boolean', u'description': u'true if this ISO is ready to be deployed'}, {u'name': u'keyword', u'required': False, u'related': [], u'length': 255, u'type': u'string', u'description': u'List by keyword'}, {u'name': u'domainid', u'required': False, u'related': [], u'length': 255, u'type': u'uuid', u'description': u'list only resources belonging to the domain specified'}, {u'name': u'listall', u'required': False, u'related': [], u'length': 255, u'type': u'boolean', u'description': u"If set to false, list only resources belonging to the command's caller; if set to true - list resources that the caller is authorized to see. Default value is false"}, {u'name': u'pagesize', u'required': False, u'related': [], u'length': 255, u'type': u'integer', u'description': u''}, {u'name': u'name', u'required': False, u'related': [], u'length': 255, u'type': u'string', u'description': u'list all isos by name'}, {u'name': u'hypervisor', u'required': False, u'related': [], u'length': 255, u'type': u'string', u'description': u'the hypervisor for which to restrict the search'}, {u'name': u'isofilter', u'required': False, u'related': [], u'length': 255, u'type': u'string', u'description': u'possible values are "featured", "self", "selfexecutable","sharedexecutable","executable", and "community". * featured : templates that have been marked as featured and public. * self : templates that have been registered or created by the calling user. * selfexecutable : same as self, but only returns templates that can be used to deploy a new VM. * sharedexecutable : templates ready to be deployed that have been granted to the calling user by another user. * executable : templates that are owned by the calling user, or public templates, that can be used to deploy a VM. * community : templates that have been marked as public but not featured. * all : all templates (only usable by admins).'}, {u'name': u'bootable', u'required': False, u'related': [], u'length': 255, u'type': u'boolean', u'description': u'true if the ISO is bootable, false otherwise'}, {u'name': u'projectid', u'required': False, u'related': [], u'length': 255, u'type': u'uuid', u'description': u'list objects by project'}, {u'name': u'isrecursive', u'required': False, u'related': [], u'length': 255, u'type': u'boolean', u'description': u'defaults to false, but if true, lists all resources from the parent specified by the domainId till leaves.'}, {u'name': u'account', u'required': False, u'related': [], u'length': 255, u'type': u'string', u'description': u'list resources by account. Must be used with the domainId parameter.'}, {u'name': u'zoneid', u'required': False, u'related': [u'listZones'], u'length': 255, u'type': u'uuid', u'description': u'the ID of the zone'}, {u'name': u'tags', u'required': False, u'related': [], u'length': 255, u'type': u'map', u'description': u'List resources by tags (key/value pairs)'}, {u'name': u'id', u'required': False, u'related': [u'registerIso', u'registerTemplate', u'createTemplate', u'listIsos', u'copyTemplate', u'copyIso', u'listIsos', u'listTemplates'], u'length': 255, u'type': u'uuid', u'description': u'list ISO by id'}], u'requiredparams': [], u'description': u'Lists all available ISO files.'}, u'storagenetworkiprange': {u'name': u'listStorageNetworkIpRange', u'related': [], u'isasync': False, u'params': [{u'name': u'keyword', u'required': False, u'related': [], u'length': 255, u'type': u'string', u'description': u'List by keyword'}, {u'name': u'zoneid', u'required': False, u'related': [u'listZones'], u'length': 255, u'type': u'uuid', u'description': u'optional parameter. Zone uuid, if specicied and both pod uuid and range uuid are absent, using it to search the range.'}, {u'name': u'pagesize', u'required': False, u'related': [], u'length': 255, u'type': u'integer', u'description': u''}, {u'name': u'id', u'required': False, u'related': [u'listStorageNetworkIpRange'], u'length': 255, u'type': u'uuid', u'description': u'optional parameter. Storaget network IP range uuid, if specicied, using it to search the range.'}, {u'name': u'page', u'required': False, u'related': [], u'length': 255, u'type': u'integer', u'description': u''}, {u'name': u'podid', u'required': False, u'related': [u'updatePod'], u'length': 255, u'type': u'uuid', u'description': u'optional parameter. Pod uuid, if specicied and range uuid is absent, using it to search the range.'}], u'requiredparams': [], u'description': u'List a storage network IP range.'}, u'sshkeypairs': {u'name': u'listSSHKeyPairs', u'related': [], u'isasync': False, u'params': [{u'name': u'page', u'required': False, u'related': [], u'length': 255, u'type': u'integer', u'description': u''}, {u'name': u'isrecursive', u'required': False, u'related': [], u'length': 255, u'type': u'boolean', u'description': u'defaults to false, but if true, lists all resources from the parent specified by the domainId till leaves.'}, {u'name': u'projectid', u'required': False, u'related': [u'activateProject', u'updateProject', u'listProjectAccounts', u'createProject'], u'length': 255, u'type': u'uuid', u'description': u'list objects by project'}, {u'name': u'keyword', u'required': False, u'related': [], u'length': 255, u'type': u'string', u'description': u'List by keyword'}, {u'name': u'account', u'required': False, u'related': [], u'length': 255, u'type': u'string', u'description': u'list resources by account. Must be used with the domainId parameter.'}, {u'name': u'pagesize', u'required': False, u'related': [], u'length': 255, u'type': u'integer', u'description': u''}, {u'name': u'domainid', u'required': False, u'related': [u'listDomains', u'updateDomain', u'createDomain', u'listDomainChildren'], u'length': 255, u'type': u'uuid', u'description': u'list only resources belonging to the domain specified'}, {u'name': u'fingerprint', u'required': False, u'related': [], u'length': 255, u'type': u'string', u'description': u'A public key fingerprint to look for'}, {u'name': u'listall', u'required': False, u'related': [], u'length': 255, u'type': u'boolean', u'description': u"If set to false, list only resources belonging to the command's caller; if set to true - list resources that the caller is authorized to see. Default value is false"}, {u'name': u'name', u'required': False, u'related': [], u'length': 255, u'type': u'string', u'description': u'A key pair name to look for'}], u'requiredparams': [], u'description': u'List registered keypairs'}, u'privategateways': {u'name': u'listPrivateGateways', u'related': [u'createPrivateGateway'], u'isasync': False, u'params': [{u'name': u'account', u'required': False, u'related': [], u'length': 255, u'type': u'string', u'description': u'list resources by account. Must be used with the domainId parameter.'}, {u'name': u'pagesize', u'required': False, u'related': [], u'length': 255, u'type': u'integer', u'description': u''}, {u'name': u'id', u'required': False, u'related': [u'listPrivateGateways', u'createPrivateGateway'], u'length': 255, u'type': u'uuid', u'description': u'list private gateway by id'}, {u'name': u'page', u'required': False, u'related': [], u'length': 255, u'type': u'integer', u'description': u''}, {u'name': u'isrecursive', u'required': False, u'related': [], u'length': 255, u'type': u'boolean', u'description': u'defaults to false, but if true, lists all resources from the parent specified by the domainId till leaves.'}, {u'name': u'domainid', u'required': False, u'related': [u'listDomains', u'updateDomain', u'createDomain', u'listDomainChildren'], u'length': 255, u'type': u'uuid', u'description': u'list only resources belonging to the domain specified'}, {u'name': u'keyword', u'required': False, u'related': [], u'length': 255, u'type': u'string', u'description': u'List by keyword'}, {u'name': u'listall', u'required': False, u'related': [], u'length': 255, u'type': u'boolean', u'description': u"If set to false, list only resources belonging to the command's caller; if set to true - list resources that the caller is authorized to see. Default value is false"}, {u'name': u'vpcid', u'required': False, u'related': [u'listVPCs', u'updateVPC', u'updateVPC', u'restartVPC', u'createVPC', u'createVPC', u'listVPCs'], u'length': 255, u'type': u'uuid', u'description': u'list gateways by vpc'}, {u'name': u'ipaddress', u'required': False, u'related': [], u'length': 255, u'type': u'string', u'description': u'list gateways by ip address'}, {u'name': u'vlan', u'required': False, u'related': [], u'length': 255, u'type': u'string', u'description': u'list gateways by vlan'}, {u'name': u'projectid', u'required': False, u'related': [u'activateProject', u'updateProject', u'listProjectAccounts', u'createProject'], u'length': 255, u'type': u'uuid', u'description': u'list objects by project'}, {u'name': u'state', u'required': False, u'related': [], u'length': 255, u'type': u'string', u'description': u'list gateways by state'}], u'requiredparams': [], u'description': u'List private gateways'}, u'internalloadbalancervms': {u'name': u'listInternalLoadBalancerVMs', u'related': [], u'isasync': False, u'params': [{u'name': u'networkid', u'required': False, u'related': [u'updateNetwork', u'listNetworks', u'createNetwork'], u'length': 255, u'type': u'uuid', u'description': u'list by network id'}, {u'name': u'hostid', u'required': False, u'related': [u'listHosts'], u'length': 255, u'type': u'uuid', u'description': u'the host ID of the Internal LB VM'}, {u'name': u'keyword', u'required': False, u'related': [], u'length': 255, u'type': u'string', u'description': u'List by keyword'}, {u'name': u'listall', u'required': False, u'related': [], u'length': 255, u'type': u'boolean', u'description': u"If set to false, list only resources belonging to the command's caller; if set to true - list resources that the caller is authorized to see. Default value is false"}, {u'name': u'vpcid', u'required': False, u'related': [u'updateVPC', u'restartVPC', u'createVPC', u'listVPCs'], u'length': 255, u'type': u'uuid', u'description': u'List Internal LB VMs by VPC'}, {u'name': u'isrecursive', u'required': False, u'related': [], u'length': 255, u'type': u'boolean', u'description': u'defaults to false, but if true, lists all resources from the parent specified by the domainId till leaves.'}, {u'name': u'zoneid', u'required': False, u'related': [u'listZones'], u'length': 255, u'type': u'uuid', u'description': u'the Zone ID of the Internal LB VM'}, {u'name': u'account', u'required': False, u'related': [], u'length': 255, u'type': u'string', u'description': u'list resources by account. Must be used with the domainId parameter.'}, {u'name': u'domainid', u'required': False, u'related': [], u'length': 255, u'type': u'uuid', u'description': u'list only resources belonging to the domain specified'}, {u'name': u'pagesize', u'required': False, u'related': [], u'length': 255, u'type': u'integer', u'description': u''}, {u'name': u'id', u'required': False, u'related': [u'updateDefaultNicForVirtualMachine', u'revertToVMSnapshot', u'resetPasswordForVirtualMachine', u'listVirtualMachines', u'startVirtualMachine', u'listVirtualMachines', u'updateVMAffinityGroup', u'removeNicFromVirtualMachine', u'deployVirtualMachine', u'revertToVMSnapshot', u'addNicToVirtualMachine', u'restoreVirtualMachine', u'stopVirtualMachine', u'changeServiceForVirtualMachine', u'destroyVirtualMachine', u'updateVirtualMachine', u'detachIso', u'resetSSHKeyForVirtualMachine', u'attachIso', u'rebootVirtualMachine'], u'length': 255, u'type': u'uuid', u'description': u'the ID of the Internal LB VM'}, {u'name': u'page', u'required': False, u'related': [], u'length': 255, u'type': u'integer', u'description': u''}, {u'name': u'name', u'required': False, u'related': [], u'length': 255, u'type': u'string', u'description': u'the name of the Internal LB VM'}, {u'name': u'podid', u'required': False, u'related': [u'updatePod'], u'length': 255, u'type': u'uuid', u'description': u'the Pod ID of the Internal LB VM'}, {u'name': u'forvpc', u'required': False, u'related': [], u'length': 255, u'type': u'boolean', u'description': u'if true is passed for this parameter, list only VPC Internal LB VMs'}, {u'name': u'state', u'required': False, u'related': [], u'length': 255, u'type': u'string', u'description': u'the state of the Internal LB VM'}, {u'name': u'projectid', u'required': False, u'related': [], u'length': 255, u'type': u'uuid', u'description': u'list objects by project'}], u'requiredparams': [], u'description': u'List internal LB VMs.'}, u'dedicatedpods': {u'name': u'listDedicatedPods', u'related': [u'dedicatePod'], u'isasync': False, u'params': [{u'name': u'affinitygroupid', u'required': False, u'related': [u'listAffinityGroups', u'createAffinityGroup'], u'length': 255, u'type': u'uuid', u'description': u'list dedicated pods by affinity group'}, {u'name': u'keyword', u'required': False, u'related': [], u'length': 255, u'type': u'string', u'description': u'List by keyword'}, {u'name': u'podid', u'required': False, u'related': [u'updatePod', u'createPod', u'listPods'], u'length': 255, u'type': u'uuid', u'description': u'the ID of the pod'}, {u'name': u'account', u'required': False, u'related': [], u'length': 255, u'type': u'string', u'description': u'the name of the account associated with the pod. Must be used with domainId.'}, {u'name': u'pagesize', u'required': False, u'related': [], u'length': 255, u'type': u'integer', u'description': u''}, {u'name': u'domainid', u'required': False, u'related': [u'listDomains', u'updateDomain', u'createDomain', u'listDomainChildren'], u'length': 255, u'type': u'uuid', u'description': u'the ID of the domain associated with the pod'}, {u'name': u'page', u'required': False, u'related': [], u'length': 255, u'type': u'integer', u'description': u''}], u'requiredparams': [], u'description': u'Lists dedicated pods.'}, u'dedicatedclusters': {u'name': u'listDedicatedClusters', u'related': [u'dedicateCluster'], u'isasync': False, u'params': [{u'name': u'affinitygroupid', u'required': False, u'related': [u'listAffinityGroups'], u'length': 255, u'type': u'uuid', u'description': u'list dedicated clusters by affinity group'}, {u'name': u'clusterid', u'required': False, u'related': [u'updateCluster'], u'length': 255, u'type': u'uuid', u'description': u'the ID of the cluster'}, {u'name': u'page', u'required': False, u'related': [], u'length': 255, u'type': u'integer', u'description': u''}, {u'name': u'pagesize', u'required': False, u'related': [], u'length': 255, u'type': u'integer', u'description': u''}, {u'name': u'keyword', u'required': False, u'related': [], u'length': 255, u'type': u'string', u'description': u'List by keyword'}, {u'name': u'account', u'required': False, u'related': [], u'length': 255, u'type': u'string', u'description': u'the name of the account associated with the cluster. Must be used with domainId.'}, {u'name': u'domainid', u'required': False, u'related': [u'listDomains', u'updateDomain', u'listDomainChildren'], u'length': 255, u'type': u'uuid', u'description': u'the ID of the domain associated with the cluster'}], u'requiredparams': [], u'description': u'Lists dedicated clusters.'}, u'usagetypes': {u'name': u'listUsageTypes', u'related': [], u'isasync': False, u'params': [], u'requiredparams': [], u'description': u'List Usage Types'}, u'domainchildren': {u'name': u'listDomainChildren', u'related': [], u'isasync': False, u'params': [{u'name': u'keyword', u'required': False, u'related': [], u'length': 255, u'type': u'string', u'description': u'List by keyword'}, {u'name': u'name', u'required': False, u'related': [], u'length': 255, u'type': u'string', u'description': u'list children domains by name'}, {u'name': u'page', u'required': False, u'related': [], u'length': 255, u'type': u'integer', u'description': u''}, {u'name': u'id', u'required': False, u'related': [u'listDomainChildren'], u'length': 255, u'type': u'uuid', u'description': u'list children domain by parent domain ID.'}, {u'name': u'listall', u'required': False, u'related': [], u'length': 255, u'type': u'boolean', u'description': u"If set to false, list only resources belonging to the command's caller; if set to true - list resources that the caller is authorized to see. Default value is false"}, {u'name': u'pagesize', u'required': False, u'related': [], u'length': 255, u'type': u'integer', u'description': u''}, {u'name': u'isrecursive', u'required': False, u'related': [], u'length': 255, u'type': u'boolean', u'description': u'to return the entire tree, use the value "true". To return the first level children, use the value "false".'}], u'requiredparams': [], u'description': u'Lists all children domains belonging to a specified domain'}, u'domains': {u'name': u'listDomains', u'related': [u'updateDomain', u'listDomainChildren'], u'isasync': False, u'params': [{u'name': u'keyword', u'required': False, u'related': [], u'length': 255, u'type': u'string', u'description': u'List by keyword'}, {u'name': u'id', u'required': False, u'related': [u'listDomains', u'updateDomain', u'listDomainChildren'], u'length': 255, u'type': u'uuid', u'description': u'List domain by domain ID.'}, {u'name': u'level', u'required': False, u'related': [], u'length': 255, u'type': u'integer', u'description': u'List domains by domain level.'}, {u'name': u'name', u'required': False, u'related': [], u'length': 255, u'type': u'string', u'description': u'List domain by domain name.'}, {u'name': u'listall', u'required': False, u'related': [], u'length': 255, u'type': u'boolean', u'description': u"If set to false, list only resources belonging to the command's caller; if set to true - list resources that the caller is authorized to see. Default value is false"}, {u'name': u'pagesize', u'required': False, u'related': [], u'length': 255, u'type': u'integer', u'description': u''}, {u'name': u'page', u'required': False, u'related': [], u'length': 255, u'type': u'integer', u'description': u''}], u'requiredparams': [], u'description': u'Lists domains and provides detailed information for listed domains'}, u'networkisolationmethods': {u'name': u'listNetworkIsolationMethods', u'related': [], u'isasync': False, u'params': [{u'name': u'page', u'required': False, u'related': [], u'length': 255, u'type': u'integer', u'description': u''}, {u'name': u'pagesize', u'required': False, u'related': [], u'length': 255, u'type': u'integer', u'description': u''}, {u'name': u'keyword', u'required': False, u'related': [], u'length': 255, u'type': u'string', u'description': u'List by keyword'}], u'requiredparams': [], u'description': u'Lists supported methods of network isolation'}, u'netscalerloadbalancers': {u'name': u'listNetscalerLoadBalancers', u'related': [], u'isasync': False, u'params': [{u'name': u'page', u'required': False, u'related': [], u'length': 255, u'type': u'integer', u'description': u''}, {u'name': u'keyword', u'required': False, u'related': [], u'length': 255, u'type': u'string', u'description': u'List by keyword'}, {u'name': u'pagesize', u'required': False, u'related': [], u'length': 255, u'type': u'integer', u'description': u''}, {u'name': u'lbdeviceid', u'required': False, u'related': [u'listNetscalerLoadBalancers'], u'length': 255, u'type': u'uuid', u'description': u'netscaler load balancer device ID'}, {u'name': u'physicalnetworkid', u'required': False, u'related': [u'listPhysicalNetworks', u'createPhysicalNetwork'], u'length': 255, u'type': u'uuid', u'description': u'the Physical Network ID'}], u'requiredparams': [], u'description': u'lists netscaler load balancer devices'}, u's3s': {u'name': u'listS3s', u'related': [u'addS3', u'createSecondaryStagingStore', u'listSecondaryStagingStores', u'addImageStore', u'listSwifts', u'addSwift'], u'isasync': False, u'params': [{u'name': u'keyword', u'required': False, u'related': [], u'length': 255, u'type': u'string', u'description': u'List by keyword'}, {u'name': u'page', u'required': False, u'related': [], u'length': 255, u'type': u'integer', u'description': u''}, {u'name': u'pagesize', u'required': False, u'related': [], u'length': 255, u'type': u'integer', u'description': u''}], u'requiredparams': [], u'description': u'Lists S3s'}, u'hypervisors': {u'name': u'listHypervisors', u'related': [], u'isasync': False, u'params': [{u'name': u'zoneid', u'required': False, u'related': [u'listZones', u'updateZone', u'createZone', u'listZones'], u'length': 255, u'type': u'uuid', u'description': u'the zone id for listing hypervisors.'}], u'requiredparams': [], u'description': u'List hypervisors'}, u'accounts': {u'name': u'listAccounts', u'related': [u'markDefaultZoneForAccount', u'listAccounts'], u'isasync': False, u'params': [{u'name': u'state', u'required': False, u'related': [], u'length': 255, u'type': u'string', u'description': u'list accounts by state. Valid states are enabled, disabled, and locked.'}, {u'name': u'id', u'required': False, u'related': [u'listAccounts', u'markDefaultZoneForAccount', u'listAccounts'], u'length': 255, u'type': u'uuid', u'description': u'list account by account ID'}, {u'name': u'pagesize', u'required': False, u'related': [], u'length': 255, u'type': u'integer', u'description': u''}, {u'name': u'name', u'required': False, u'related': [], u'length': 255, u'type': u'string', u'description': u'list account by account name'}, {u'name': u'domainid', u'required': False, u'related': [], u'length': 255, u'type': u'uuid', u'description': u'list only resources belonging to the domain specified'}, {u'name': u'listall', u'required': False, u'related': [], u'length': 255, u'type': u'boolean', u'description': u"If set to false, list only resources belonging to the command's caller; if set to true - list resources that the caller is authorized to see. Default value is false"}, {u'name': u'iscleanuprequired', u'required': False, u'related': [], u'length': 255, u'type': u'boolean', u'description': u'list accounts by cleanuprequred attribute (values are true or false)'}, {u'name': u'keyword', u'required': False, u'related': [], u'length': 255, u'type': u'string', u'description': u'List by keyword'}, {u'name': u'accounttype', u'required': False, u'related': [], u'length': 255, u'type': u'long', u'description': u'list accounts by account type. Valid account types are 1 (admin), 2 (domain-admin), and 0 (user).'}, {u'name': u'isrecursive', u'required': False, u'related': [], u'length': 255, u'type': u'boolean', u'description': u'defaults to false, but if true, lists all resources from the parent specified by the domainId till leaves.'}, {u'name': u'page', u'required': False, u'related': [], u'length': 255, u'type': u'integer', u'description': u''}], u'requiredparams': [], u'description': u'Lists accounts and provides detailed account information for listed accounts'}, u'networkdevice': {u'name': u'listNetworkDevice', u'related': [], u'isasync': False, u'params': [{u'name': u'pagesize', u'required': False, u'related': [], u'length': 255, u'type': u'integer', u'description': u''}, {u'name': u'page', u'required': False, u'related': [], u'length': 255, u'type': u'integer', u'description': u''}, {u'name': u'keyword', u'required': False, u'related': [], u'length': 255, u'type': u'string', u'description': u'List by keyword'}, {u'name': u'networkdevicetype', u'required': False, u'related': [], u'length': 255, u'type': u'string', u'description': u'Network device type, now supports ExternalDhcp, PxeServer, NetscalerMPXLoadBalancer, NetscalerVPXLoadBalancer, NetscalerSDXLoadBalancer, F5BigIpLoadBalancer, JuniperSRXFirewall, PaloAltoFirewall'}, {u'name': u'networkdeviceparameterlist', u'required': False, u'related': [], u'length': 255, u'type': u'map', u'description': u'parameters for network device'}], u'requiredparams': [], u'description': u'List network devices'}, u'vlanipranges': {u'name': u'listVlanIpRanges', u'related': [], u'isasync': False, u'params': [{u'name': u'vlan', u'required': False, u'related': [], u'length': 255, u'type': u'string', u'description': u'the ID or VID of the VLAN. Default is an "untagged" VLAN.'}, {u'name': u'keyword', u'required': False, u'related': [], u'length': 255, u'type': u'string', u'description': u'List by keyword'}, {u'name': u'pagesize', u'required': False, u'related': [], u'length': 255, u'type': u'integer', u'description': u''}, {u'name': u'podid', u'required': False, u'related': [u'updatePod'], u'length': 255, u'type': u'uuid', u'description': u'the Pod ID of the VLAN IP range'}, {u'name': u'projectid', u'required': False, u'related': [], u'length': 255, u'type': u'uuid', u'description': u'project who will own the VLAN'}, {u'name': u'networkid', u'required': False, u'related': [u'updateNetwork', u'listNetworks', u'createNetwork'], u'length': 255, u'type': u'uuid', u'description': u'network id of the VLAN IP range'}, {u'name': u'domainid', u'required': False, u'related': [], u'length': 255, u'type': u'uuid', u'description': u'the domain ID with which the VLAN IP range is associated. If used with the account parameter, returns all VLAN IP ranges for that account in the specified domain.'}, {u'name': u'account', u'required': False, u'related': [], u'length': 255, u'type': u'string', u'description': u'the account with which the VLAN IP range is associated. Must be used with the domainId parameter.'}, {u'name': u'zoneid', u'required': False, u'related': [u'listZones'], u'length': 255, u'type': u'uuid', u'description': u'the Zone ID of the VLAN IP range'}, {u'name': u'physicalnetworkid', u'required': False, u'related': [u'listPhysicalNetworks'], u'length': 255, u'type': u'uuid', u'description': u'physical network id of the VLAN IP range'}, {u'name': u'forvirtualnetwork', u'required': False, u'related': [], u'length': 255, u'type': u'boolean', u'description': u'true if VLAN is of Virtual type, false if Direct'}, {u'name': u'id', u'required': False, u'related': [u'listVlanIpRanges'], u'length': 255, u'type': u'uuid', u'description': u'the ID of the VLAN IP range'}, {u'name': u'page', u'required': False, u'related': [], u'length': 255, u'type': u'integer', u'description': u''}], u'requiredparams': [], u'description': u'Lists all VLAN IP ranges.'}, u'traffictypeimplementors': {u'name': u'listTrafficTypeImplementors', u'related': [], u'isasync': False, u'params': [{u'name': u'traffictype', u'required': False, u'related': [], u'length': 255, u'type': u'string', u'description': u'Optional. The network traffic type, if specified, return its implementor. Otherwise, return all traffic types with their implementor'}, {u'name': u'pagesize', u'required': False, u'related': [], u'length': 255, u'type': u'integer', u'description': u''}, {u'name': u'page', u'required': False, u'related': [], u'length': 255, u'type': u'integer', u'description': u''}, {u'name': u'keyword', u'required': False, u'related': [], u'length': 255, u'type': u'string', u'description': u'List by keyword'}], u'requiredparams': [], u'description': u'Lists implementors of implementor of a network traffic type or implementors of all network traffic types'}, u'isopermissions': {u'name': u'listIsoPermissions', u'related': [u'listTemplatePermissions', u'listIsoPermissions'], u'isasync': False, u'params': [{u'name': u'id', u'required': True, u'related': [u'listTemplatePermissions', u'listIsoPermissions', u'listIsoPermissions'], u'length': 255, u'type': u'uuid', u'description': u'the template ID'}], u'requiredparams': [u'id'], u'description': u'List iso visibility and all accounts that have permissions to view this iso.'}, u'snapshotpolicies': {u'name': u'listSnapshotPolicies', u'related': [u'createSnapshotPolicy'], u'isasync': False, u'params': [{u'name': u'page', u'required': False, u'related': [], u'length': 255, u'type': u'integer', u'description': u''}, {u'name': u'keyword', u'required': False, u'related': [], u'length': 255, u'type': u'string', u'description': u'List by keyword'}, {u'name': u'pagesize', u'required': False, u'related': [], u'length': 255, u'type': u'integer', u'description': u''}, {u'name': u'fordisplay', u'required': False, u'related': [], u'length': 255, u'type': u'boolean', u'description': u'list resources by display flag; only ROOT admin is eligible to pass this parameter'}, {u'name': u'volumeid', u'required': False, u'related': [u'uploadVolume', u'createVolume', u'detachVolume', u'createVolume', u'attachVolume', u'updateVolume', u'migrateVolume', u'resizeVolume', u'uploadVolume', u'detachVolume', u'listVolumes'], u'length': 255, u'type': u'uuid', u'description': u'the ID of the disk volume'}, {u'name': u'id', u'required': False, u'related': [u'createSnapshotPolicy', u'listSnapshotPolicies'], u'length': 255, u'type': u'uuid', u'description': u'the ID of the snapshot policy'}], u'requiredparams': [], u'description': u'Lists snapshot policies.'}, u'loadbalancers': {u'name': u'listLoadBalancers', u'related': [u'createLoadBalancer', u'updateLoadBalancer'], u'isasync': False, u'params': [{u'name': u'projectid', u'required': False, u'related': [u'listProjects', u'activateProject', u'updateProject', u'listProjectAccounts', u'createProject'], u'length': 255, u'type': u'uuid', u'description': u'list objects by project'}, {u'name': u'isrecursive', u'required': False, u'related': [], u'length': 255, u'type': u'boolean', u'description': u'defaults to false, but if true, lists all resources from the parent specified by the domainId till leaves.'}, {u'name': u'keyword', u'required': False, u'related': [], u'length': 255, u'type': u'string', u'description': u'List by keyword'}, {u'name': u'id', u'required': False, u'related': [u'listPortForwardingRules', u'createPortForwardingRule', u'listIpForwardingRules', u'createIpForwardingRule', u'updatePortForwardingRule'], u'length': 255, u'type': u'uuid', u'description': u'the ID of the Load Balancer'}, {u'name': u'pagesize', u'required': False, u'related': [], u'length': 255, u'type': u'integer', u'description': u''}, {u'name': u'name', u'required': False, u'related': [], u'length': 255, u'type': u'string', u'description': u'the name of the Load Balancer'}, {u'name': u'account', u'required': False, u'related': [], u'length': 255, u'type': u'string', u'description': u'list resources by account. Must be used with the domainId parameter.'}, {u'name': u'domainid', u'required': False, u'related': [u'listDomains', u'updateDomain', u'createDomain', u'listDomainChildren'], u'length': 255, u'type': u'uuid', u'description': u'list only resources belonging to the domain specified'}, {u'name': u'sourceipaddressnetworkid', u'required': False, u'related': [u'createNetwork', u'updateNetwork', u'listNetworks', u'updateNetwork', u'listNetscalerLoadBalancerNetworks', u'listPaloAltoFirewallNetworks', u'listNetworks', u'createNetwork'], u'length': 255, u'type': u'uuid', u'description': u'the network id of the source ip address'}, {u'name': u'fordisplay', u'required': False, u'related': [], u'length': 255, u'type': u'boolean', u'description': u'list resources by display flag; only ROOT admin is eligible to pass this parameter'}, {u'name': u'networkid', u'required': False, u'related': [u'createNetwork', u'updateNetwork', u'listNetworks', u'updateNetwork', u'listNetscalerLoadBalancerNetworks', u'listPaloAltoFirewallNetworks', u'listNetworks', u'createNetwork'], u'length': 255, u'type': u'uuid', u'description': u'the network id of the Load Balancer'}, {u'name': u'sourceipaddress', u'required': False, u'related': [], u'length': 255, u'type': u'string', u'description': u'the source ip address of the Load Balancer'}, {u'name': u'scheme', u'required': False, u'related': [], u'length': 255, u'type': u'string', u'description': u'the scheme of the Load Balancer. Supported value is Internal in the current release'}, {u'name': u'listall', u'required': False, u'related': [], u'length': 255, u'type': u'boolean', u'description': u"If set to false, list only resources belonging to the command's caller; if set to true - list resources that the caller is authorized to see. Default value is false"}, {u'name': u'tags', u'required': False, u'related': [], u'length': 255, u'type': u'map', u'description': u'List resources by tags (key/value pairs)'}, {u'name': u'page', u'required': False, u'related': [], u'length': 255, u'type': u'integer', u'description': u''}], u'requiredparams': [], u'description': u'Lists Load Balancers'}, u'guestosmapping': {u'name': u'listGuestOsMapping', u'related': [u'addGuestOsMapping', u'updateGuestOsMapping'], u'isasync': False, u'params': [{u'name': u'page', u'required': False, u'related': [], u'length': 255, u'type': u'integer', u'description': u''}, {u'name': u'id', u'required': False, u'related': [u'addGuestOsMapping', u'updateGuestOsMapping', u'listGuestOsMapping'], u'length': 255, u'type': u'uuid', u'description': u'list mapping by its UUID'}, {u'name': u'ostypeid', u'required': False, u'related': [u'addGuestOs', u'listOsTypes', u'updateGuestOs'], u'length': 255, u'type': u'uuid', u'description': u'list mapping by Guest OS Type UUID'}, {u'name': u'pagesize', u'required': False, u'related': [], u'length': 255, u'type': u'integer', u'description': u''}, {u'name': u'hypervisor', u'required': False, u'related': [], u'length': 255, u'type': u'string', u'description': u'list Guest OS mapping by hypervisor'}, {u'name': u'hypervisorversion', u'required': False, u'related': [], u'length': 255, u'type': u'string', u'description': u'list Guest OS mapping by hypervisor version. Must be used with hypervisor parameter'}, {u'name': u'keyword', u'required': False, u'related': [], u'length': 255, u'type': u'string', u'description': u'List by keyword'}], u'requiredparams': [], u'description': u'Lists all available OS mappings for given hypervisor'}, u'paloaltofirewallnetworks': {u'name': u'listPaloAltoFirewallNetworks', u'related': [u'updateNetwork', u'updateNetwork', u'listNetscalerLoadBalancerNetworks', u'listNetworks', u'createNetwork'], u'isasync': False, u'params': [{u'name': u'keyword', u'required': False, u'related': [], u'length': 255, u'type': u'string', u'description': u'List by keyword'}, {u'name': u'page', u'required': False, u'related': [], u'length': 255, u'type': u'integer', u'description': u''}, {u'name': u'pagesize', u'required': False, u'related': [], u'length': 255, u'type': u'integer', u'description': u''}, {u'name': u'lbdeviceid', u'required': True, u'related': [u'configurePaloAltoFirewall'], u'length': 255, u'type': u'uuid', u'description': u'palo alto balancer device ID'}], u'requiredparams': [u'lbdeviceid'], u'description': u'lists network that are using Palo Alto firewall device'}, u'imagestores': {u'name': u'listImageStores', u'related': [u'addS3', u'createSecondaryStagingStore', u'listSecondaryStagingStores', u'addImageStore', u'listSwifts', u'listS3s', u'addSwift'], u'isasync': False, u'params': [{u'name': u'protocol', u'required': False, u'related': [], u'length': 255, u'type': u'string', u'description': u'the image store protocol'}, {u'name': u'provider', u'required': False, u'related': [], u'length': 255, u'type': u'string', u'description': u'the image store provider'}, {u'name': u'keyword', u'required': False, u'related': [], u'length': 255, u'type': u'string', u'description': u'List by keyword'}, {u'name': u'zoneid', u'required': False, u'related': [u'listZones', u'updateZone', u'createZone', u'listZones'], u'length': 255, u'type': u'uuid', u'description': u'the Zone ID for the image store'}, {u'name': u'pagesize', u'required': False, u'related': [], u'length': 255, u'type': u'integer', u'description': u''}, {u'name': u'name', u'required': False, u'related': [], u'length': 255, u'type': u'string', u'description': u'the name of the image store'}, {u'name': u'id', u'required': False, u'related': [u'addS3', u'createSecondaryStagingStore', u'listSecondaryStagingStores', u'addImageStore', u'listSwifts', u'listImageStores', u'listS3s', u'addSwift'], u'length': 255, u'type': u'uuid', u'description': u'the ID of the storage pool'}, {u'name': u'page', u'required': False, u'related': [], u'length': 255, u'type': u'integer', u'description': u''}], u'requiredparams': [], u'description': u'Lists image stores.'}, u'autoscalevmgroups': {u'name': u'listAutoScaleVmGroups', u'related': [u'updateAutoScaleVmGroup', u'createAutoScaleVmGroup', u'enableAutoScaleVmGroup', u'disableAutoScaleVmGroup'], u'isasync': False, u'params': [{u'name': u'account', u'required': False, u'related': [], u'length': 255, u'type': u'string', u'description': u'list resources by account. Must be used with the domainId parameter.'}, {u'name': u'listall', u'required': False, u'related': [], u'length': 255, u'type': u'boolean', u'description': u"If set to false, list only resources belonging to the command's caller; if set to true - list resources that the caller is authorized to see. Default value is false"}, {u'name': u'vmprofileid', u'required': False, u'related': [u'createAutoScaleVmProfile', u'updateAutoScaleVmProfile', u'listAutoScaleVmProfiles'], u'length': 255, u'type': u'uuid', u'description': u'the ID of the profile'}, {u'name': u'id', u'required': False, u'related': [u'updateAutoScaleVmGroup', u'createAutoScaleVmGroup', u'listAutoScaleVmGroups', u'enableAutoScaleVmGroup', u'disableAutoScaleVmGroup'], u'length': 255, u'type': u'uuid', u'description': u'the ID of the autoscale vm group'}, {u'name': u'pagesize', u'required': False, u'related': [], u'length': 255, u'type': u'integer', u'description': u''}, {u'name': u'lbruleid', u'required': False, u'related': [u'listPortForwardingRules', u'createPortForwardingRule', u'listIpForwardingRules', u'createIpForwardingRule', u'updatePortForwardingRule'], u'length': 255, u'type': u'uuid', u'description': u'the ID of the loadbalancer'}, {u'name': u'fordisplay', u'required': False, u'related': [], u'length': 255, u'type': u'boolean', u'description': u'list resources by display flag; only ROOT admin is eligible to pass this parameter'}, {u'name': u'page', u'required': False, u'related': [], u'length': 255, u'type': u'integer', u'description': u''}, {u'name': u'projectid', u'required': False, u'related': [u'listProjects', u'activateProject', u'updateProject', u'listProjectAccounts', u'createProject'], u'length': 255, u'type': u'uuid', u'description': u'list objects by project'}, {u'name': u'zoneid', u'required': False, u'related': [u'listZones', u'updateZone', u'createZone', u'listZones'], u'length': 255, u'type': u'uuid', u'description': u'the availability zone ID'}, {u'name': u'keyword', u'required': False, u'related': [], u'length': 255, u'type': u'string', u'description': u'List by keyword'}, {u'name': u'policyid', u'required': False, u'related': [u'createAutoScalePolicy', u'updateAutoScalePolicy', u'listAutoScalePolicies'], u'length': 255, u'type': u'uuid', u'description': u'the ID of the policy'}, {u'name': u'isrecursive', u'required': False, u'related': [], u'length': 255, u'type': u'boolean', u'description': u'defaults to false, but if true, lists all resources from the parent specified by the domainId till leaves.'}, {u'name': u'domainid', u'required': False, u'related': [u'listDomains', u'updateDomain', u'createDomain', u'listDomainChildren'], u'length': 255, u'type': u'uuid', u'description': u'list only resources belonging to the domain specified'}], u'requiredparams': [], u'description': u'Lists autoscale vm groups.'}, u'projectaccounts': {u'name': u'listProjectAccounts', u'related': [u'updateProject', u'createProject'], u'isasync': False, u'params': [{u'name': u'page', u'required': False, u'related': [], u'length': 255, u'type': u'integer', u'description': u''}, {u'name': u'projectid', u'required': True, u'related': [u'updateProject', u'listProjectAccounts', u'createProject'], u'length': 255, u'type': u'uuid', u'description': u'id of the project'}, {u'name': u'role', u'required': False, u'related': [], u'length': 255, u'type': u'string', u'description': u'list accounts of the project by role'}, {u'name': u'pagesize', u'required': False, u'related': [], u'length': 255, u'type': u'integer', u'description': u''}, {u'name': u'account', u'required': False, u'related': [], u'length': 255, u'type': u'string', u'description': u'list accounts of the project by account name'}, {u'name': u'keyword', u'required': False, u'related': [], u'length': 255, u'type': u'string', u'description': u'List by keyword'}], u'requiredparams': [u'projectid'], u'description': u"Lists project's accounts"}, u'autoscalevmprofiles': {u'name': u'listAutoScaleVmProfiles', u'related': [], u'isasync': False, u'params': [{u'name': u'serviceofferingid', u'required': False, u'related': [], u'length': 255, u'type': u'uuid', u'description': u'list profiles by service offering id'}, {u'name': u'keyword', u'required': False, u'related': [], u'length': 255, u'type': u'string', u'description': u'List by keyword'}, {u'name': u'isrecursive', u'required': False, u'related': [], u'length': 255, u'type': u'boolean', u'description': u'defaults to false, but if true, lists all resources from the parent specified by the domainId till leaves.'}, {u'name': u'templateid', u'required': False, u'related': [u'registerIso', u'registerTemplate', u'createTemplate', u'listIsos', u'copyTemplate', u'copyIso', u'listIsos', u'updateIso', u'listTemplates'], u'length': 255, u'type': u'uuid', u'description': u'the templateid of the autoscale vm profile'}, {u'name': u'id', u'required': False, u'related': [u'listAutoScaleVmProfiles'], u'length': 255, u'type': u'uuid', u'description': u'the ID of the autoscale vm profile'}, {u'name': u'account', u'required': False, u'related': [], u'length': 255, u'type': u'string', u'description': u'list resources by account. Must be used with the domainId parameter.'}, {u'name': u'projectid', u'required': False, u'related': [], u'length': 255, u'type': u'uuid', u'description': u'list objects by project'}, {u'name': u'zoneid', u'required': False, u'related': [u'listZones'], u'length': 255, u'type': u'uuid', u'description': u'availability zone for the auto deployed virtual machine'}, {u'name': u'otherdeployparams', u'required': False, u'related': [], u'length': 255, u'type': u'string', u'description': u'the otherdeployparameters of the autoscale vm profile'}, {u'name': u'page', u'required': False, u'related': [], u'length': 255, u'type': u'integer', u'description': u''}, {u'name': u'listall', u'required': False, u'related': [], u'length': 255, u'type': u'boolean', u'description': u"If set to false, list only resources belonging to the command's caller; if set to true - list resources that the caller is authorized to see. Default value is false"}, {u'name': u'pagesize', u'required': False, u'related': [], u'length': 255, u'type': u'integer', u'description': u''}, {u'name': u'domainid', u'required': False, u'related': [], u'length': 255, u'type': u'uuid', u'description': u'list only resources belonging to the domain specified'}, {u'name': u'fordisplay', u'required': False, u'related': [], u'length': 255, u'type': u'boolean', u'description': u'list resources by display flag; only ROOT admin is eligible to pass this parameter'}], u'requiredparams': [], u'description': u'Lists autoscale vm profiles.'}, u'apis': {u'name': u'listApis', u'related': [], u'isasync': False, u'params': [{u'name': u'name', u'required': False, u'related': [], u'length': 255, u'type': u'string', u'description': u'API name'}], u'requiredparams': [], u'description': u'lists all available apis on the server, provided by the Api Discovery plugin'}, u'vpcs': {u'name': u'listVPCs', u'related': [u'updateVPC', u'restartVPC', u'createVPC', u'listVPCs'], u'isasync': False, u'params': [{u'name': u'id', u'required': False, u'related': [u'listVPCs', u'updateVPC', u'restartVPC', u'createVPC', u'listVPCs'], u'length': 255, u'type': u'uuid', u'description': u'list VPC by id'}, {u'name': u'isrecursive', u'required': False, u'related': [], u'length': 255, u'type': u'boolean', u'description': u'defaults to false, but if true, lists all resources from the parent specified by the domainId till leaves.'}, {u'name': u'page', u'required': False, u'related': [], u'length': 255, u'type': u'integer', u'description': u''}, {u'name': u'fordisplay', u'required': False, u'related': [], u'length': 255, u'type': u'boolean', u'description': u'list resources by display flag; only ROOT admin is eligible to pass this parameter'}, {u'name': u'restartrequired', u'required': False, u'related': [], u'length': 255, u'type': u'boolean', u'description': u'list VPCs by restartRequired option'}, {u'name': u'state', u'required': False, u'related': [], u'length': 255, u'type': u'string', u'description': u'list VPCs by state'}, {u'name': u'supportedservices', u'required': False, u'related': [], u'length': 255, u'type': u'list', u'description': u'list VPC supporting certain services'}, {u'name': u'pagesize', u'required': False, u'related': [], u'length': 255, u'type': u'integer', u'description': u''}, {u'name': u'account', u'required': False, u'related': [], u'length': 255, u'type': u'string', u'description': u'list resources by account. Must be used with the domainId parameter.'}, {u'name': u'projectid', u'required': False, u'related': [u'createProject'], u'length': 255, u'type': u'uuid', u'description': u'list objects by project'}, {u'name': u'cidr', u'required': False, u'related': [], u'length': 255, u'type': u'string', u'description': u"list by cidr of the VPC. All VPC guest networks' cidrs should be within this CIDR"}, {u'name': u'displaytext', u'required': False, u'related': [], u'length': 255, u'type': u'string', u'description': u'List by display text of the VPC'}, {u'name': u'domainid', u'required': False, u'related': [u'listDomainChildren'], u'length': 255, u'type': u'uuid', u'description': u'list only resources belonging to the domain specified'}, {u'name': u'zoneid', u'required': False, u'related': [u'listZones'], u'length': 255, u'type': u'uuid', u'description': u'list by zone'}, {u'name': u'listall', u'required': False, u'related': [], u'length': 255, u'type': u'boolean', u'description': u"If set to false, list only resources belonging to the command's caller; if set to true - list resources that the caller is authorized to see. Default value is false"}, {u'name': u'keyword', u'required': False, u'related': [], u'length': 255, u'type': u'string', u'description': u'List by keyword'}, {u'name': u'name', u'required': False, u'related': [], u'length': 255, u'type': u'string', u'description': u'list by name of the VPC'}, {u'name': u'vpcofferingid', u'required': False, u'related': [u'listVPCOfferings'], u'length': 255, u'type': u'uuid', u'description': u'list by ID of the VPC offering'}, {u'name': u'tags', u'required': False, u'related': [], u'length': 255, u'type': u'map', u'description': u'List resources by tags (key/value pairs)'}], u'requiredparams': [], u'description': u'Lists VPCs'}, u'resourcedetails': {u'name': u'listResourceDetails', u'related': [], u'isasync': False, u'params': [{u'name': u'key', u'required': False, u'related': [], u'length': 255, u'type': u'string', u'description': u'list by key'}, {u'name': u'value', u'required': False, u'related': [], u'length': 255, u'type': u'string', u'description': u'list by key, value. Needs to be passed only along with key'}, {u'name': u'resourceid', u'required': False, u'related': [], u'length': 255, u'type': u'string', u'description': u'list by resource id'}, {u'name': u'domainid', u'required': False, u'related': [u'updateDomain', u'listDomainChildren'], u'length': 255, u'type': u'uuid', u'description': u'list only resources belonging to the domain specified'}, {u'name': u'account', u'required': False, u'related': [], u'length': 255, u'type': u'string', u'description': u'list resources by account. Must be used with the domainId parameter.'}, {u'name': u'page', u'required': False, u'related': [], u'length': 255, u'type': u'integer', u'description': u''}, {u'name': u'keyword', u'required': False, u'related': [], u'length': 255, u'type': u'string', u'description': u'List by keyword'}, {u'name': u'fordisplay', u'required': False, u'related': [], u'length': 255, u'type': u'boolean', u'description': u'if set to true, only details marked with display=true, are returned. False by default'}, {u'name': u'isrecursive', u'required': False, u'related': [], u'length': 255, u'type': u'boolean', u'description': u'defaults to false, but if true, lists all resources from the parent specified by the domainId till leaves.'}, {u'name': u'pagesize', u'required': False, u'related': [], u'length': 255, u'type': u'integer', u'description': u''}, {u'name': u'listall', u'required': False, u'related': [], u'length': 255, u'type': u'boolean', u'description': u"If set to false, list only resources belonging to the command's caller; if set to true - list resources that the caller is authorized to see. Default value is false"}, {u'name': u'projectid', u'required': False, u'related': [u'updateProject', u'createProject'], u'length': 255, u'type': u'uuid', u'description': u'list objects by project'}, {u'name': u'resourcetype', u'required': True, u'related': [], u'length': 255, u'type': u'string', u'description': u'list by resource type'}], u'requiredparams': [u'resourcetype'], u'description': u'List resource detail(s)'}, u'vpncustomergateways': {u'name': u'listVpnCustomerGateways', u'related': [u'updateVpnCustomerGateway'], u'isasync': False, u'params': [{u'name': u'domainid', u'required': False, u'related': [u'listDomains', u'updateDomain', u'listDomainChildren'], u'length': 255, u'type': u'uuid', u'description': u'list only resources belonging to the domain specified'}, {u'name': u'keyword', u'required': False, u'related': [], u'length': 255, u'type': u'string', u'description': u'List by keyword'}, {u'name': u'pagesize', u'required': False, u'related': [], u'length': 255, u'type': u'integer', u'description': u''}, {u'name': u'isrecursive', u'required': False, u'related': [], u'length': 255, u'type': u'boolean', u'description': u'defaults to false, but if true, lists all resources from the parent specified by the domainId till leaves.'}, {u'name': u'page', u'required': False, u'related': [], u'length': 255, u'type': u'integer', u'description': u''}, {u'name': u'id', u'required': False, u'related': [u'updateVpnCustomerGateway', u'listVpnCustomerGateways'], u'length': 255, u'type': u'uuid', u'description': u'id of the customer gateway'}, {u'name': u'projectid', u'required': False, u'related': [u'updateProject', u'createProject'], u'length': 255, u'type': u'uuid', u'description': u'list objects by project'}, {u'name': u'listall', u'required': False, u'related': [], u'length': 255, u'type': u'boolean', u'description': u"If set to false, list only resources belonging to the command's caller; if set to true - list resources that the caller is authorized to see. Default value is false"}, {u'name': u'account', u'required': False, u'related': [], u'length': 255, u'type': u'string', u'description': u'list resources by account. Must be used with the domainId parameter.'}], u'requiredparams': [], u'description': u'Lists site to site vpn customer gateways'}, u'dedicatedhosts': {u'name': u'listDedicatedHosts', u'related': [u'dedicateHost'], u'isasync': False, u'params': [{u'name': u'account', u'required': False, u'related': [], u'length': 255, u'type': u'string', u'description': u'the name of the account associated with the host. Must be used with domainId.'}, {u'name': u'hostid', u'required': False, u'related': [u'updateHost', u'prepareHostForMaintenance', u'listHosts', u'addHost'], u'length': 255, u'type': u'uuid', u'description': u'the ID of the host'}, {u'name': u'pagesize', u'required': False, u'related': [], u'length': 255, u'type': u'integer', u'description': u''}, {u'name': u'page', u'required': False, u'related': [], u'length': 255, u'type': u'integer', u'description': u''}, {u'name': u'keyword', u'required': False, u'related': [], u'length': 255, u'type': u'string', u'description': u'List by keyword'}, {u'name': u'domainid', u'required': False, u'related': [u'listDomains', u'updateDomain', u'createDomain', u'listDomainChildren'], u'length': 255, u'type': u'uuid', u'description': u'the ID of the domain associated with the host'}, {u'name': u'affinitygroupid', u'required': False, u'related': [u'listAffinityGroups'], u'length': 255, u'type': u'uuid', u'description': u'list dedicated hosts by affinity group'}], u'requiredparams': [], u'description': u'Lists dedicated hosts.'}, u'networkofferings': {u'name': u'listNetworkOfferings', u'related': [u'createNetworkOffering', u'updateNetworkOffering'], u'isasync': False, u'params': [{u'name': u'zoneid', u'required': False, u'related': [u'listZones', u'updateZone', u'createZone', u'listZones'], u'length': 255, u'type': u'uuid', u'description': u'list netowrk offerings available for network creation in specific zone'}, {u'name': u'availability', u'required': False, u'related': [], u'length': 255, u'type': u'string', u'description': u'the availability of network offering. Default value is Required'}, {u'name': u'supportedservices', u'required': False, u'related': [], u'length': 255, u'type': u'list', u'description': u'list network offerings supporting certain services'}, {u'name': u'networkid', u'required': False, u'related': [u'createNetwork', u'updateNetwork', u'listNetworks', u'updateNetwork', u'listNetscalerLoadBalancerNetworks', u'listPaloAltoFirewallNetworks', u'listNetworks', u'createNetwork'], u'length': 255, u'type': u'uuid', u'description': u'the ID of the network. Pass this in if you want to see the available network offering that a network can be changed to.'}, {u'name': u'id', u'required': False, u'related': [u'listNetworkOfferings', u'createNetworkOffering', u'updateNetworkOffering'], u'length': 255, u'type': u'uuid', u'description': u'list network offerings by id'}, {u'name': u'isdefault', u'required': False, u'related': [], u'length': 255, u'type': u'boolean', u'description': u'true if need to list only default network offerings. Default value is false'}, {u'name': u'page', u'required': False, u'related': [], u'length': 255, u'type': u'integer', u'description': u''}, {u'name': u'name', u'required': False, u'related': [], u'length': 255, u'type': u'string', u'description': u'list network offerings by name'}, {u'name': u'istagged', u'required': False, u'related': [], u'length': 255, u'type': u'boolean', u'description': u'true if offering has tags specified'}, {u'name': u'specifyvlan', u'required': False, u'related': [], u'length': 255, u'type': u'boolean', u'description': u'the tags for the network offering.'}, {u'name': u'displaytext', u'required': False, u'related': [], u'length': 255, u'type': u'string', u'description': u'list network offerings by display text'}, {u'name': u'keyword', u'required': False, u'related': [], u'length': 255, u'type': u'string', u'description': u'List by keyword'}, {u'name': u'specifyipranges', u'required': False, u'related': [], u'length': 255, u'type': u'boolean', u'description': u'true if need to list only network offerings which support specifying ip ranges'}, {u'name': u'state', u'required': False, u'related': [], u'length': 255, u'type': u'string', u'description': u'list network offerings by state'}, {u'name': u'tags', u'required': False, u'related': [], u'length': 4096, u'type': u'string', u'description': u'list network offerings by tags'}, {u'name': u'forvpc', u'required': False, u'related': [], u'length': 255, u'type': u'boolean', u'description': u'the network offering can be used only for network creation inside the VPC'}, {u'name': u'pagesize', u'required': False, u'related': [], u'length': 255, u'type': u'integer', u'description': u''}, {u'name': u'guestiptype', u'required': False, u'related': [], u'length': 255, u'type': u'string', u'description': u'list network offerings by guest type: Shared or Isolated'}, {u'name': u'traffictype', u'required': False, u'related': [], u'length': 255, u'type': u'string', u'description': u'list by traffic type'}, {u'name': u'sourcenatsupported', u'required': False, u'related': [], u'length': 255, u'type': u'boolean', u'description': u'true if need to list only netwok offerings where source nat is supported, false otherwise'}], u'requiredparams': [], u'description': u'Lists all available network offerings.'}, u'zones': {u'name': u'listZones', u'related': [u'listZones'], u'isasync': False, u'params': [{u'name': u'networktype', u'required': False, u'related': [], u'length': 255, u'type': u'string', u'description': u'the network type of the zone that the virtual machine belongs to'}, {u'name': u'showcapacities', u'required': False, u'related': [], u'length': 255, u'type': u'boolean', u'description': u'flag to display the capacity of the zones'}, {u'name': u'page', u'required': False, u'related': [], u'length': 255, u'type': u'integer', u'description': u''}, {u'name': u'pagesize', u'required': False, u'related': [], u'length': 255, u'type': u'integer', u'description': u''}, {u'name': u'keyword', u'required': False, u'related': [], u'length': 255, u'type': u'string', u'description': u'List by keyword'}, {u'name': u'domainid', u'required': False, u'related': [u'updateDomain', u'listDomainChildren'], u'length': 255, u'type': u'uuid', u'description': u'the ID of the domain associated with the zone'}, {u'name': u'available', u'required': False, u'related': [], u'length': 255, u'type': u'boolean', u'description': u'true if you want to retrieve all available Zones. False if you only want to return the Zones from which you have at least one VM. Default is false.'}, {u'name': u'tags', u'required': False, u'related': [], u'length': 255, u'type': u'map', u'description': u'List zones by resource tags (key/value pairs)'}, {u'name': u'id', u'required': False, u'related': [u'listZones', u'listZones'], u'length': 255, u'type': u'uuid', u'description': u'the ID of the zone'}, {u'name': u'name', u'required': False, u'related': [], u'length': 255, u'type': u'string', u'description': u'the name of the zone'}], u'requiredparams': [], u'description': u'Lists zones'}, u'virtualmachines': {u'name': u'listVirtualMachines', u'related': [u'updateDefaultNicForVirtualMachine', u'resetPasswordForVirtualMachine', u'startVirtualMachine', u'listVirtualMachines', u'updateVMAffinityGroup', u'removeNicFromVirtualMachine', u'deployVirtualMachine', u'revertToVMSnapshot', u'addNicToVirtualMachine', u'restoreVirtualMachine', u'stopVirtualMachine', u'changeServiceForVirtualMachine', u'destroyVirtualMachine', u'updateVirtualMachine', u'detachIso', u'resetSSHKeyForVirtualMachine', u'attachIso', u'rebootVirtualMachine'], u'isasync': False, u'params': [{u'name': u'hostid', u'required': False, u'related': [u'listHosts'], u'length': 255, u'type': u'uuid', u'description': u'the host ID'}, {u'name': u'ids', u'required': False, u'related': [u'updateDefaultNicForVirtualMachine', u'resetPasswordForVirtualMachine', u'listVirtualMachines', u'startVirtualMachine', u'listVirtualMachines', u'updateVMAffinityGroup', u'removeNicFromVirtualMachine', u'deployVirtualMachine', u'revertToVMSnapshot', u'addNicToVirtualMachine', u'restoreVirtualMachine', u'stopVirtualMachine', u'changeServiceForVirtualMachine', u'destroyVirtualMachine', u'updateVirtualMachine', u'detachIso', u'resetSSHKeyForVirtualMachine', u'attachIso', u'rebootVirtualMachine'], u'length': 255, u'type': u'list', u'description': u'the IDs of the virtual machines, mutually exclusive with id'}, {u'name': u'id', u'required': False, u'related': [u'updateDefaultNicForVirtualMachine', u'resetPasswordForVirtualMachine', u'listVirtualMachines', u'startVirtualMachine', u'listVirtualMachines', u'updateVMAffinityGroup', u'removeNicFromVirtualMachine', u'deployVirtualMachine', u'revertToVMSnapshot', u'addNicToVirtualMachine', u'restoreVirtualMachine', u'stopVirtualMachine', u'changeServiceForVirtualMachine', u'destroyVirtualMachine', u'updateVirtualMachine', u'detachIso', u'resetSSHKeyForVirtualMachine', u'attachIso', u'rebootVirtualMachine'], u'length': 255, u'type': u'uuid', u'description': u'the ID of the virtual machine'}, {u'name': u'networkid', u'required': False, u'related': [u'updateNetwork', u'listNetworks', u'createNetwork'], u'length': 255, u'type': u'uuid', u'description': u'list by network id'}, {u'name': u'isrecursive', u'required': False, u'related': [], u'length': 255, u'type': u'boolean', u'description': u'defaults to false, but if true, lists all resources from the parent specified by the domainId till leaves.'}, {u'name': u'listall', u'required': False, u'related': [], u'length': 255, u'type': u'boolean', u'description': u"If set to false, list only resources belonging to the command's caller; if set to true - list resources that the caller is authorized to see. Default value is false"}, {u'name': u'podid', u'required': False, u'related': [u'updatePod'], u'length': 255, u'type': u'uuid', u'description': u'the pod ID'}, {u'name': u'storageid', u'required': False, u'related': [u'findStoragePoolsForMigration'], u'length': 255, u'type': u'uuid', u'description': u"the storage ID where vm's volumes belong to"}, {u'name': u'groupid', u'required': False, u'related': [], u'length': 255, u'type': u'uuid', u'description': u'the group ID'}, {u'name': u'serviceofferingid', u'required': False, u'related': [], u'length': 255, u'type': u'uuid', u'description': u'list by the service offering'}, {u'name': u'displayvm', u'required': False, u'related': [], u'length': 255, u'type': u'boolean', u'description': u'list resources by display flag; only ROOT admin is eligible to pass this parameter'}, {u'name': u'page', u'required': False, u'related': [], u'length': 255, u'type': u'integer', u'description': u''}, {u'name': u'tags', u'required': False, u'related': [], u'length': 255, u'type': u'map', u'description': u'List resources by tags (key/value pairs)'}, {u'name': u'templateid', u'required': False, u'related': [u'registerIso', u'registerTemplate', u'createTemplate', u'listIsos', u'copyTemplate', u'copyIso', u'listIsos', u'listTemplates'], u'length': 255, u'type': u'uuid', u'description': u'list vms by template'}, {u'name': u'details', u'required': False, u'related': [], u'length': 255, u'type': u'list', u'description': u'comma separated list of host details requested, value can be a list of [all, group, nics, stats, secgrp, tmpl, servoff, diskoff, iso, volume, min, affgrp]. If no parameter is passed in, the details will be defaulted to all'}, {u'name': u'vpcid', u'required': False, u'related': [u'updateVPC', u'restartVPC', u'createVPC', u'listVPCs'], u'length': 255, u'type': u'uuid', u'description': u'list vms by vpc'}, {u'name': u'hostid', u'required': False, u'related': [u'listHosts'], u'length': 255, u'type': u'uuid', u'description': u'the host ID'}, {u'name': u'keyword', u'required': False, u'related': [], u'length': 255, u'type': u'string', u'description': u'List by keyword'}, {u'name': u'storageid', u'required': False, u'related': [u'findStoragePoolsForMigration'], u'length': 255, u'type': u'uuid', u'description': u"the storage ID where vm's volumes belong to"}, {u'name': u'affinitygroupid', u'required': False, u'related': [], u'length': 255, u'type': u'uuid', u'description': u'list vms by affinity group'}, {u'name': u'domainid', u'required': False, u'related': [], u'length': 255, u'type': u'uuid', u'description': u'list only resources belonging to the domain specified'}, {u'name': u'hypervisor', u'required': False, u'related': [], u'length': 255, u'type': u'string', u'description': u'the target hypervisor for the template'}, {u'name': u'zoneid', u'required': False, u'related': [u'listZones'], u'length': 255, u'type': u'uuid', u'description': u'the availability zone ID'}, {u'name': u'name', u'required': False, u'related': [], u'length': 255, u'type': u'string', u'description': u'name of the virtual machine'}, {u'name': u'pagesize', u'required': False, u'related': [], u'length': 255, u'type': u'integer', u'description': u''}, {u'name': u'podid', u'required': False, u'related': [u'updatePod'], u'length': 255, u'type': u'uuid', u'description': u'the pod ID'}, {u'name': u'account', u'required': False, u'related': [], u'length': 255, u'type': u'string', u'description': u'list resources by account. Must be used with the domainId parameter.'}, {u'name': u'isoid', u'required': False, u'related': [], u'length': 255, u'type': u'uuid', u'description': u'list vms by iso'}, {u'name': u'projectid', u'required': False, u'related': [], u'length': 255, u'type': u'uuid', u'description': u'list objects by project'}, {u'name': u'forvirtualnetwork', u'required': False, u'related': [], u'length': 255, u'type': u'boolean', u'description': u'list by network type; true if need to list vms using Virtual Network, false otherwise'}, {u'name': u'state', u'required': False, u'related': [], u'length': 255, u'type': u'string', u'description': u'state of the virtual machine'}], u'requiredparams': [], u'description': u'List the virtual machines owned by the account.'}, u'netscalerloadbalancernetworks': {u'name': u'listNetscalerLoadBalancerNetworks', u'related': [u'updateNetwork', u'listNetworks', u'createNetwork'], u'isasync': False, u'params': [{u'name': u'keyword', u'required': False, u'related': [], u'length': 255, u'type': u'string', u'description': u'List by keyword'}, {u'name': u'pagesize', u'required': False, u'related': [], u'length': 255, u'type': u'integer', u'description': u''}, {u'name': u'page', u'required': False, u'related': [], u'length': 255, u'type': u'integer', u'description': u''}, {u'name': u'lbdeviceid', u'required': True, u'related': [], u'length': 255, u'type': u'uuid', u'description': u'netscaler load balancer device ID'}], u'requiredparams': [u'lbdeviceid'], u'description': u'lists network that are using a netscaler load balancer device'}, u'oscategories': {u'name': u'listOsCategories', u'related': [], u'isasync': False, u'params': [{u'name': u'keyword', u'required': False, u'related': [], u'length': 255, u'type': u'string', u'description': u'List by keyword'}, {u'name': u'id', u'required': False, u'related': [u'listOsCategories'], u'length': 255, u'type': u'uuid', u'description': u'list Os category by id'}, {u'name': u'pagesize', u'required': False, u'related': [], u'length': 255, u'type': u'integer', u'description': u''}, {u'name': u'page', u'required': False, u'related': [], u'length': 255, u'type': u'integer', u'description': u''}, {u'name': u'name', u'required': False, u'related': [], u'length': 255, u'type': u'string', u'description': u'list os category by name'}], u'requiredparams': [], u'description': u'Lists all supported OS categories for this cloud.'}, u'ldapusers': {u'name': u'listLdapUsers', u'related': [u'searchLdap'], u'isasync': False, u'params': [{u'name': u'pagesize', u'required': False, u'related': [], u'length': 255, u'type': u'integer', u'description': u''}, {u'name': u'page', u'required': False, u'related': [], u'length': 255, u'type': u'integer', u'description': u''}, {u'name': u'listtype', u'required': False, u'related': [], u'length': 255, u'type': u'string', u'description': u'Determines whether all ldap users are returned or just non-cloudstack users'}, {u'name': u'keyword', u'required': False, u'related': [], u'length': 255, u'type': u'string', u'description': u'List by keyword'}], u'requiredparams': [], u'description': u'Lists all LDAP Users'}, u'affinitygroups': {u'name': u'listAffinityGroups', u'related': [], u'isasync': False, u'params': [{u'name': u'isrecursive', u'required': False, u'related': [], u'length': 255, u'type': u'boolean', u'description': u'defaults to false, but if true, lists all resources from the parent specified by the domainId till leaves.'}, {u'name': u'page', u'required': False, u'related': [], u'length': 255, u'type': u'integer', u'description': u''}, {u'name': u'name', u'required': False, u'related': [], u'length': 255, u'type': u'string', u'description': u'lists affinity groups by name'}, {u'name': u'domainid', u'required': False, u'related': [u'updateDomain', u'listDomainChildren'], u'length': 255, u'type': u'uuid', u'description': u'list only resources belonging to the domain specified'}, {u'name': u'keyword', u'required': False, u'related': [], u'length': 255, u'type': u'string', u'description': u'List by keyword'}, {u'name': u'pagesize', u'required': False, u'related': [], u'length': 255, u'type': u'integer', u'description': u''}, {u'name': u'id', u'required': False, u'related': [u'listAffinityGroups'], u'length': 255, u'type': u'uuid', u'description': u'list the affinity group by the id provided'}, {u'name': u'type', u'required': False, u'related': [], u'length': 255, u'type': u'string', u'description': u'lists affinity groups by type'}, {u'name': u'listall', u'required': False, u'related': [], u'length': 255, u'type': u'boolean', u'description': u"If set to false, list only resources belonging to the command's caller; if set to true - list resources that the caller is authorized to see. Default value is false"}, {u'name': u'virtualmachineid', u'required': False, u'related': [u'updateVirtualMachine', u'removeNicFromVirtualMachine', u'assignVirtualMachine', u'detachIso', u'updateDefaultNicForVirtualMachine', u'updateDefaultNicForVirtualMachine', u'revertToVMSnapshot', u'startVirtualMachine', u'resetPasswordForVirtualMachine', u'resetPasswordForVirtualMachine', u'stopVirtualMachine', u'listVirtualMachines', u'migrateVirtualMachineWithVolume', u'destroyVirtualMachine', u'startVirtualMachine', u'listVirtualMachines', u'changeServiceForVirtualMachine', u'updateVMAffinityGroup', u'removeNicFromVirtualMachine', u'deployVirtualMachine', u'revertToVMSnapshot', u'addNicToVirtualMachine', u'restoreVirtualMachine', u'restoreVirtualMachine', u'stopVirtualMachine', u'changeServiceForVirtualMachine', u'destroyVirtualMachine', u'migrateVirtualMachine', u'updateVirtualMachine', u'detachIso', u'resetSSHKeyForVirtualMachine', u'attachIso', u'rebootVirtualMachine'], u'length': 255, u'type': u'uuid', u'description': u'lists affinity groups by virtual machine id'}, {u'name': u'account', u'required': False, u'related': [], u'length': 255, u'type': u'string', u'description': u'list resources by account. Must be used with the domainId parameter.'}], u'requiredparams': [], u'description': u'Lists affinity groups'}, u'secondarystagingstores': {u'name': u'listSecondaryStagingStores', u'related': [u'createSecondaryStagingStore', u'addImageStore', u'listSwifts'], u'isasync': False, u'params': [{u'name': u'page', u'required': False, u'related': [], u'length': 255, u'type': u'integer', u'description': u''}, {u'name': u'protocol', u'required': False, u'related': [], u'length': 255, u'type': u'string', u'description': u'the staging store protocol'}, {u'name': u'id', u'required': False, u'related': [u'createSecondaryStagingStore', u'listSecondaryStagingStores', u'addImageStore', u'listSwifts'], u'length': 255, u'type': u'uuid', u'description': u'the ID of the staging store'}, {u'name': u'zoneid', u'required': False, u'related': [u'listZones', u'updateZone', u'createZone', u'listZones'], u'length': 255, u'type': u'uuid', u'description': u'the Zone ID for the staging store'}, {u'name': u'pagesize', u'required': False, u'related': [], u'length': 255, u'type': u'integer', u'description': u''}, {u'name': u'name', u'required': False, u'related': [], u'length': 255, u'type': u'string', u'description': u'the name of the staging store'}, {u'name': u'keyword', u'required': False, u'related': [], u'length': 255, u'type': u'string', u'description': u'List by keyword'}, {u'name': u'provider', u'required': False, u'related': [], u'length': 255, u'type': u'string', u'description': u'the staging store provider'}], u'requiredparams': [], u'description': u'Lists secondary staging stores.'}, u'virtualrouterelements': {u'name': u'listVirtualRouterElements', u'related': [u'configureVirtualRouterElement', u'createVirtualRouterElement'], u'isasync': False, u'params': [{u'name': u'page', u'required': False, u'related': [], u'length': 255, u'type': u'integer', u'description': u''}, {u'name': u'nspid', u'required': False, u'related': [u'addNetworkServiceProvider', u'updateNetworkServiceProvider', u'listTrafficTypes'], u'length': 255, u'type': u'uuid', u'description': u'list virtual router elements by network service provider id'}, {u'name': u'keyword', u'required': False, u'related': [], u'length': 255, u'type': u'string', u'description': u'List by keyword'}, {u'name': u'id', u'required': False, u'related': [u'listVirtualRouterElements', u'configureVirtualRouterElement', u'createVirtualRouterElement'], u'length': 255, u'type': u'uuid', u'description': u'list virtual router elements by id'}, {u'name': u'pagesize', u'required': False, u'related': [], u'length': 255, u'type': u'integer', u'description': u''}, {u'name': u'enabled', u'required': False, u'related': [], u'length': 255, u'type': u'boolean', u'description': u'list network offerings by enabled state'}], u'requiredparams': [], u'description': u'Lists all available virtual router elements.'}, u'asyncjobs': {u'name': u'listAsyncJobs', u'related': [], u'isasync': False, u'params': [{u'name': u'keyword', u'required': False, u'related': [], u'length': 255, u'type': u'string', u'description': u'List by keyword'}, {u'name': u'pagesize', u'required': False, u'related': [], u'length': 255, u'type': u'integer', u'description': u''}, {u'name': u'account', u'required': False, u'related': [], u'length': 255, u'type': u'string', u'description': u'list resources by account. Must be used with the domainId parameter.'}, {u'name': u'isrecursive', u'required': False, u'related': [], u'length': 255, u'type': u'boolean', u'description': u'defaults to false, but if true, lists all resources from the parent specified by the domainId till leaves.'}, {u'name': u'startdate', u'required': False, u'related': [], u'length': 255, u'type': u'tzdate', u'description': u'the start date of the async job'}, {u'name': u'listall', u'required': False, u'related': [], u'length': 255, u'type': u'boolean', u'description': u"If set to false, list only resources belonging to the command's caller; if set to true - list resources that the caller is authorized to see. Default value is false"}, {u'name': u'domainid', u'required': False, u'related': [u'listDomains', u'updateDomain', u'listDomainChildren'], u'length': 255, u'type': u'uuid', u'description': u'list only resources belonging to the domain specified'}, {u'name': u'page', u'required': False, u'related': [], u'length': 255, u'type': u'integer', u'description': u''}], u'requiredparams': [], u'description': u'Lists all pending asynchronous jobs for the account.'}, u'ostypes': {u'name': u'listOsTypes', u'related': [u'addGuestOs'], u'isasync': False, u'params': [{u'name': u'description', u'required': False, u'related': [], u'length': 255, u'type': u'string', u'description': u'list os by description'}, {u'name': u'keyword', u'required': False, u'related': [], u'length': 255, u'type': u'string', u'description': u'List by keyword'}, {u'name': u'oscategoryid', u'required': False, u'related': [], u'length': 255, u'type': u'uuid', u'description': u'list by Os Category id'}, {u'name': u'page', u'required': False, u'related': [], u'length': 255, u'type': u'integer', u'description': u''}, {u'name': u'pagesize', u'required': False, u'related': [], u'length': 255, u'type': u'integer', u'description': u''}, {u'name': u'id', u'required': False, u'related': [u'addGuestOs', u'listOsTypes'], u'length': 255, u'type': u'uuid', u'description': u'list by Os type Id'}], u'requiredparams': [], u'description': u'Lists all supported OS types for this cloud.'}, u'globalloadbalancerrules': {u'name': u'listGlobalLoadBalancerRules', u'related': [], u'isasync': False, u'params': [{u'name': u'regionid', u'required': False, u'related': [u'addRegion'], u'length': 255, u'type': u'integer', u'description': u'region ID'}, {u'name': u'keyword', u'required': False, u'related': [], u'length': 255, u'type': u'string', u'description': u'List by keyword'}, {u'name': u'pagesize', u'required': False, u'related': [], u'length': 255, u'type': u'integer', u'description': u''}, {u'name': u'projectid', u'required': False, u'related': [u'updateProject', u'createProject'], u'length': 255, u'type': u'uuid', u'description': u'list objects by project'}, {u'name': u'id', u'required': False, u'related': [u'listGlobalLoadBalancerRules'], u'length': 255, u'type': u'uuid', u'description': u'the ID of the global load balancer rule'}, {u'name': u'domainid', u'required': False, u'related': [u'updateDomain', u'listDomainChildren'], u'length': 255, u'type': u'uuid', u'description': u'list only resources belonging to the domain specified'}, {u'name': u'tags', u'required': False, u'related': [], u'length': 255, u'type': u'map', u'description': u'List resources by tags (key/value pairs)'}, {u'name': u'page', u'required': False, u'related': [], u'length': 255, u'type': u'integer', u'description': u''}, {u'name': u'listall', u'required': False, u'related': [], u'length': 255, u'type': u'boolean', u'description': u"If set to false, list only resources belonging to the command's caller; if set to true - list resources that the caller is authorized to see. Default value is false"}, {u'name': u'isrecursive', u'required': False, u'related': [], u'length': 255, u'type': u'boolean', u'description': u'defaults to false, but if true, lists all resources from the parent specified by the domainId till leaves.'}, {u'name': u'account', u'required': False, u'related': [], u'length': 255, u'type': u'string', u'description': u'list resources by account. Must be used with the domainId parameter.'}], u'requiredparams': [], u'description': u'Lists load balancer rules.'}, u'networkacls': {u'name': u'listNetworkACLs', u'related': [u'updateNetworkACLItem', u'createNetworkACL'], u'isasync': False, u'params': [{u'name': u'protocol', u'required': False, u'related': [], u'length': 255, u'type': u'string', u'description': u'list network ACL Items by Protocol'}, {u'name': u'page', u'required': False, u'related': [], u'length': 255, u'type': u'integer', u'description': u''}, {u'name': u'networkid', u'required': False, u'related': [u'createNetwork', u'updateNetwork', u'listNetworks', u'listNiciraNvpDeviceNetworks', u'updateNetwork', u'listNetscalerLoadBalancerNetworks', u'listPaloAltoFirewallNetworks', u'listNetworks', u'createNetwork'], u'length': 255, u'type': u'uuid', u'description': u'list network ACL Items by network Id'}, {u'name': u'action', u'required': False, u'related': [], u'length': 255, u'type': u'string', u'description': u'list network ACL Items by Action'}, {u'name': u'domainid', u'required': False, u'related': [u'listDomains', u'updateDomain', u'createDomain', u'listDomainChildren'], u'length': 255, u'type': u'uuid', u'description': u'list only resources belonging to the domain specified'}, {u'name': u'aclid', u'required': False, u'related': [u'createNetworkACLList', u'listNetworkACLLists'], u'length': 255, u'type': u'uuid', u'description': u'list network ACL Items by ACL Id'}, {u'name': u'projectid', u'required': False, u'related': [u'listProjects', u'activateProject', u'suspendProject', u'updateProject', u'listProjectAccounts', u'createProject'], u'length': 255, u'type': u'uuid', u'description': u'list objects by project'}, {u'name': u'listall', u'required': False, u'related': [], u'length': 255, u'type': u'boolean', u'description': u"If set to false, list only resources belonging to the command's caller; if set to true - list resources that the caller is authorized to see. Default value is false"}, {u'name': u'pagesize', u'required': False, u'related': [], u'length': 255, u'type': u'integer', u'description': u''}, {u'name': u'account', u'required': False, u'related': [], u'length': 255, u'type': u'string', u'description': u'list resources by account. Must be used with the domainId parameter.'}, {u'name': u'id', u'required': False, u'related': [u'updateNetworkACLItem', u'createNetworkACL', u'listNetworkACLs'], u'length': 255, u'type': u'uuid', u'description': u'Lists network ACL Item with the specified ID'}, {u'name': u'tags', u'required': False, u'related': [], u'length': 255, u'type': u'map', u'description': u'List resources by tags (key/value pairs)'}, {u'name': u'keyword', u'required': False, u'related': [], u'length': 255, u'type': u'string', u'description': u'List by keyword'}, {u'name': u'fordisplay', u'required': False, u'related': [], u'length': 255, u'type': u'boolean', u'description': u'list resources by display flag; only ROOT admin is eligible to pass this parameter'}, {u'name': u'isrecursive', u'required': False, u'related': [], u'length': 255, u'type': u'boolean', u'description': u'defaults to false, but if true, lists all resources from the parent specified by the domainId till leaves.'}, {u'name': u'traffictype', u'required': False, u'related': [], u'length': 255, u'type': u'string', u'description': u'list network ACL Items by traffic type - Ingress or Egress'}], u'requiredparams': [], u'description': u'Lists all network ACL items'}, u'eventtypes': {u'name': u'listEventTypes', u'related': [], u'isasync': False, u'params': [], u'requiredparams': [], u'description': u'List Event Types'}, u'remoteaccessvpns': {u'name': u'listRemoteAccessVpns', u'related': [u'createRemoteAccessVpn'], u'isasync': False, u'params': [{u'name': u'domainid', u'required': False, u'related': [u'listDomains', u'updateDomain', u'listDomainChildren'], u'length': 255, u'type': u'uuid', u'description': u'list only resources belonging to the domain specified'}, {u'name': u'fordisplay', u'required': False, u'related': [], u'length': 255, u'type': u'boolean', u'description': u'list resources by display flag; only ROOT admin is eligible to pass this parameter'}, {u'name': u'projectid', u'required': False, u'related': [u'updateProject', u'createProject'], u'length': 255, u'type': u'uuid', u'description': u'list objects by project'}, {u'name': u'id', u'required': False, u'related': [u'createRemoteAccessVpn', u'listRemoteAccessVpns'], u'length': 255, u'type': u'uuid', u'description': u'Lists remote access vpn rule with the specified ID'}, {u'name': u'keyword', u'required': False, u'related': [], u'length': 255, u'type': u'string', u'description': u'List by keyword'}, {u'name': u'account', u'required': False, u'related': [], u'length': 255, u'type': u'string', u'description': u'list resources by account. Must be used with the domainId parameter.'}, {u'name': u'publicipid', u'required': False, u'related': [u'associateIpAddress', u'listPublicIpAddresses', u'restartNetwork', u'associateIpAddress'], u'length': 255, u'type': u'uuid', u'description': u'public ip address id of the vpn server'}, {u'name': u'isrecursive', u'required': False, u'related': [], u'length': 255, u'type': u'boolean', u'description': u'defaults to false, but if true, lists all resources from the parent specified by the domainId till leaves.'}, {u'name': u'networkid', u'required': False, u'related': [u'updateNetwork', u'updateNetwork', u'listNetscalerLoadBalancerNetworks', u'listPaloAltoFirewallNetworks', u'listNetworks', u'createNetwork'], u'length': 255, u'type': u'uuid', u'description': u'list remote access VPNs for ceratin network'}, {u'name': u'listall', u'required': False, u'related': [], u'length': 255, u'type': u'boolean', u'description': u"If set to false, list only resources belonging to the command's caller; if set to true - list resources that the caller is authorized to see. Default value is false"}, {u'name': u'pagesize', u'required': False, u'related': [], u'length': 255, u'type': u'integer', u'description': u''}, {u'name': u'page', u'required': False, u'related': [], u'length': 255, u'type': u'integer', u'description': u''}], u'requiredparams': [], u'description': u'Lists remote access vpns'}, u'ucsprofiles': {u'name': u'listUcsProfiles', u'related': [], u'isasync': False, u'params': [{u'name': u'ucsmanagerid', u'required': True, u'related': [u'addUcsManager'], u'length': 255, u'type': u'uuid', u'description': u'the id for the ucs manager'}, {u'name': u'page', u'required': False, u'related': [], u'length': 255, u'type': u'integer', u'description': u''}, {u'name': u'pagesize', u'required': False, u'related': [], u'length': 255, u'type': u'integer', u'description': u''}, {u'name': u'keyword', u'required': False, u'related': [], u'length': 255, u'type': u'string', u'description': u'List by keyword'}], u'requiredparams': [u'ucsmanagerid'], u'description': u'List profile in ucs manager'}, u'nics': {u'name': u'listNics', u'related': [], u'isasync': False, u'params': [{u'name': u'fordisplay', u'required': False, u'related': [], u'length': 255, u'type': u'boolean', u'description': u'list resources by display flag; only ROOT admin is eligible to pass this parameter'}, {u'name': u'keyword', u'required': False, u'related': [], u'length': 255, u'type': u'string', u'description': u'List by keyword'}, {u'name': u'networkid', u'required': False, u'related': [u'updateNetwork', u'updateNetwork', u'listNetscalerLoadBalancerNetworks', u'listNetworks', u'createNetwork'], u'length': 255, u'type': u'uuid', u'description': u"list nic of the specific vm's network"}, {u'name': u'page', u'required': False, u'related': [], u'length': 255, u'type': u'integer', u'description': u''}, {u'name': u'virtualmachineid', u'required': True, u'related': [u'updateVirtualMachine', u'removeNicFromVirtualMachine', u'assignVirtualMachine', u'detachIso', u'updateDefaultNicForVirtualMachine', u'updateDefaultNicForVirtualMachine', u'revertToVMSnapshot', u'startVirtualMachine', u'resetPasswordForVirtualMachine', u'resetPasswordForVirtualMachine', u'stopVirtualMachine', u'listVirtualMachines', u'migrateVirtualMachineWithVolume', u'destroyVirtualMachine', u'startVirtualMachine', u'listVirtualMachines', u'changeServiceForVirtualMachine', u'updateVMAffinityGroup', u'removeNicFromVirtualMachine', u'deployVirtualMachine', u'revertToVMSnapshot', u'addNicToVirtualMachine', u'restoreVirtualMachine', u'restoreVirtualMachine', u'stopVirtualMachine', u'changeServiceForVirtualMachine', u'destroyVirtualMachine', u'migrateVirtualMachine', u'updateVirtualMachine', u'detachIso', u'resetSSHKeyForVirtualMachine', u'attachIso', u'rebootVirtualMachine'], u'length': 255, u'type': u'uuid', u'description': u'the ID of the vm'}, {u'name': u'nicid', u'required': False, u'related': [u'listNics'], u'length': 255, u'type': u'uuid', u'description': u'the ID of the nic to to list IPs'}, {u'name': u'pagesize', u'required': False, u'related': [], u'length': 255, u'type': u'integer', u'description': u''}], u'requiredparams': [u'virtualmachineid'], u'description': u'list the vm nics IP to NIC'}, u'alerts': {u'name': u'listAlerts', u'related': [], u'isasync': False, u'params': [{u'name': u'keyword', u'required': False, u'related': [], u'length': 255, u'type': u'string', u'description': u'List by keyword'}, {u'name': u'pagesize', u'required': False, u'related': [], u'length': 255, u'type': u'integer', u'description': u''}, {u'name': u'page', u'required': False, u'related': [], u'length': 255, u'type': u'integer', u'description': u''}, {u'name': u'name', u'required': False, u'related': [], u'length': 255, u'type': u'string', u'description': u'list by alert name'}, {u'name': u'type', u'required': False, u'related': [], u'length': 255, u'type': u'string', u'description': u'list by alert type'}, {u'name': u'id', u'required': False, u'related': [u'listAlerts'], u'length': 255, u'type': u'uuid', u'description': u'the ID of the alert'}], u'requiredparams': [], u'description': u'Lists all alerts.'}, u'regions': {u'name': u'listRegions', u'related': [u'addRegion'], u'isasync': False, u'params': [{u'name': u'page', u'required': False, u'related': [], u'length': 255, u'type': u'integer', u'description': u''}, {u'name': u'name', u'required': False, u'related': [], u'length': 255, u'type': u'string', u'description': u'List Region by region name.'}, {u'name': u'keyword', u'required': False, u'related': [], u'length': 255, u'type': u'string', u'description': u'List by keyword'}, {u'name': u'id', u'required': False, u'related': [], u'length': 255, u'type': u'integer', u'description': u'List Region by region ID.'}, {u'name': u'pagesize', u'required': False, u'related': [], u'length': 255, u'type': u'integer', u'description': u''}], u'requiredparams': [], u'description': u'Lists Regions'}, u'vpcofferings': {u'name': u'listVPCOfferings', u'related': [], u'isasync': False, u'params': [{u'name': u'state', u'required': False, u'related': [], u'length': 255, u'type': u'string', u'description': u'list VPC offerings by state'}, {u'name': u'keyword', u'required': False, u'related': [], u'length': 255, u'type': u'string', u'description': u'List by keyword'}, {u'name': u'name', u'required': False, u'related': [], u'length': 255, u'type': u'string', u'description': u'list VPC offerings by name'}, {u'name': u'page', u'required': False, u'related': [], u'length': 255, u'type': u'integer', u'description': u''}, {u'name': u'displaytext', u'required': False, u'related': [], u'length': 255, u'type': u'string', u'description': u'list VPC offerings by display text'}, {u'name': u'supportedservices', u'required': False, u'related': [], u'length': 255, u'type': u'list', u'description': u'list VPC offerings supporting certain services'}, {u'name': u'pagesize', u'required': False, u'related': [], u'length': 255, u'type': u'integer', u'description': u''}, {u'name': u'isdefault', u'required': False, u'related': [], u'length': 255, u'type': u'boolean', u'description': u'true if need to list only default VPC offerings. Default value is false'}, {u'name': u'id', u'required': False, u'related': [u'listVPCOfferings'], u'length': 255, u'type': u'uuid', u'description': u'list VPC offerings by id'}], u'requiredparams': [], u'description': u'Lists VPC offerings'}, u'sslcerts': {u'name': u'listSslCerts', u'related': [], u'isasync': False, u'params': [{u'name': u'accountid', u'required': False, u'related': [u'listAccounts', u'markDefaultZoneForAccount', u'listAccounts', u'disableAccount'], u'length': 255, u'type': u'uuid', u'description': u'Account Id'}, {u'name': u'lbruleid', u'required': False, u'related': [u'listIpForwardingRules'], u'length': 255, u'type': u'uuid', u'description': u'Loadbalancer Rule Id'}, {u'name': u'certid', u'required': False, u'related': [u'listSslCerts'], u'length': 255, u'type': u'uuid', u'description': u'Id of SSL certificate'}], u'requiredparams': [], u'description': u'Lists SSL certificates'}, u'niciranvpdevicenetworks': {u'name': u'listNiciraNvpDeviceNetworks', u'related': [u'createNetwork', u'updateNetwork', u'listNetworks', u'updateNetwork', u'listNetscalerLoadBalancerNetworks', u'listPaloAltoFirewallNetworks', u'listNetworks', u'createNetwork'], u'isasync': False, u'params': [{u'name': u'pagesize', u'required': False, u'related': [], u'length': 255, u'type': u'integer', u'description': u''}, {u'name': u'nvpdeviceid', u'required': True, u'related': [u'addNiciraNvpDevice', u'listNiciraNvpDevices'], u'length': 255, u'type': u'uuid', u'description': u'nicira nvp device ID'}, {u'name': u'page', u'required': False, u'related': [], u'length': 255, u'type': u'integer', u'description': u''}, {u'name': u'keyword', u'required': False, u'related': [], u'length': 255, u'type': u'string', u'description': u'List by keyword'}], u'requiredparams': [u'nvpdeviceid'], u'description': u'lists network that are using a nicira nvp device'}, u'baremetalpxeservers': {u'name': u'listBaremetalPxeServers', u'related': [], u'isasync': False, u'params': [{u'name': u'page', u'required': False, u'related': [], u'length': 255, u'type': u'integer', u'description': u''}, {u'name': u'pagesize', u'required': False, u'related': [], u'length': 255, u'type': u'integer', u'description': u''}, {u'name': u'keyword', u'required': False, u'related': [], u'length': 255, u'type': u'string', u'description': u'List by keyword'}, {u'name': u'id', u'required': False, u'related': [], u'length': 255, u'type': u'long', u'description': u'Pxe server device ID'}], u'requiredparams': [], u'description': u'list baremetal pxe server'}, u'templates': {u'name': u'listTemplates', u'related': [u'registerIso', u'registerIso', u'prepareTemplate', u'updateTemplate', u'registerTemplate', u'copyIso', u'createTemplate', u'listIsos', u'copyTemplate', u'copyIso', u'listIsos', u'updateIso', u'listTemplates'], u'isasync': False, u'params': [{u'name': u'listall', u'required': False, u'related': [], u'length': 255, u'type': u'boolean', u'description': u"If set to false, list only resources belonging to the command's caller; if set to true - list resources that the caller is authorized to see. Default value is false"}, {u'name': u'keyword', u'required': False, u'related': [], u'length': 255, u'type': u'string', u'description': u'List by keyword'}, {u'name': u'page', u'required': False, u'related': [], u'length': 255, u'type': u'integer', u'description': u''}, {u'name': u'domainid', u'required': False, u'related': [u'updateDomain', u'listDomainChildren'], u'length': 255, u'type': u'uuid', u'description': u'list only resources belonging to the domain specified'}, {u'name': u'showremoved', u'required': False, u'related': [], u'length': 255, u'type': u'boolean', u'description': u'show removed templates as well'}, {u'name': u'hypervisor', u'required': False, u'related': [], u'length': 255, u'type': u'string', u'description': u'the hypervisor for which to restrict the search'}, {u'name': u'id', u'required': False, u'related': [u'registerIso', u'registerIso', u'prepareTemplate', u'updateTemplate', u'registerTemplate', u'copyIso', u'listTemplates', u'createTemplate', u'listIsos', u'copyTemplate', u'copyIso', u'listIsos', u'updateIso', u'listTemplates'], u'length': 255, u'type': u'uuid', u'description': u'the template ID'}, {u'name': u'tags', u'required': False, u'related': [], u'length': 255, u'type': u'map', u'description': u'List resources by tags (key/value pairs)'}, {u'name': u'isrecursive', u'required': False, u'related': [], u'length': 255, u'type': u'boolean', u'description': u'defaults to false, but if true, lists all resources from the parent specified by the domainId till leaves.'}, {u'name': u'name', u'required': False, u'related': [], u'length': 255, u'type': u'string', u'description': u'the template name'}, {u'name': u'projectid', u'required': False, u'related': [u'updateProject', u'createProject'], u'length': 255, u'type': u'uuid', u'description': u'list objects by project'}, {u'name': u'templatefilter', u'required': True, u'related': [], u'length': 255, u'type': u'string', u'description': u'possible values are "featured", "self", "selfexecutable","sharedexecutable","executable", and "community". * featured : templates that have been marked as featured and public. * self : templates that have been registered or created by the calling user. * selfexecutable : same as self, but only returns templates that can be used to deploy a new VM. * sharedexecutable : templates ready to be deployed that have been granted to the calling user by another user. * executable : templates that are owned by the calling user, or public templates, that can be used to deploy a VM. * community : templates that have been marked as public but not featured. * all : all templates (only usable by admins).'}, {u'name': u'pagesize', u'required': False, u'related': [], u'length': 255, u'type': u'integer', u'description': u''}, {u'name': u'account', u'required': False, u'related': [], u'length': 255, u'type': u'string', u'description': u'list resources by account. Must be used with the domainId parameter.'}, {u'name': u'zoneid', u'required': False, u'related': [u'listZones', u'updateZone', u'createZone', u'listZones'], u'length': 255, u'type': u'uuid', u'description': u'list templates by zoneId'}], u'requiredparams': [u'templatefilter'], u'description': u'List all public, private, and privileged templates.'}, u'users': {u'name': u'listUsers', u'related': [], u'isasync': False, u'params': [{u'name': u'keyword', u'required': False, u'related': [], u'length': 255, u'type': u'string', u'description': u'List by keyword'}, {u'name': u'id', u'required': False, u'related': [u'listUsers'], u'length': 255, u'type': u'uuid', u'description': u'List user by ID.'}, {u'name': u'state', u'required': False, u'related': [], u'length': 255, u'type': u'string', u'description': u'List users by state of the user account.'}, {u'name': u'page', u'required': False, u'related': [], u'length': 255, u'type': u'integer', u'description': u''}, {u'name': u'accounttype', u'required': False, u'related': [], u'length': 255, u'type': u'long', u'description': u'List users by account type. Valid types include admin, domain-admin, read-only-admin, or user.'}, {u'name': u'username', u'required': False, u'related': [], u'length': 255, u'type': u'string', u'description': u'List user by the username'}, {u'name': u'listall', u'required': False, u'related': [], u'length': 255, u'type': u'boolean', u'description': u"If set to false, list only resources belonging to the command's caller; if set to true - list resources that the caller is authorized to see. Default value is false"}, {u'name': u'domainid', u'required': False, u'related': [], u'length': 255, u'type': u'uuid', u'description': u'list only resources belonging to the domain specified'}, {u'name': u'account', u'required': False, u'related': [], u'length': 255, u'type': u'string', u'description': u'list resources by account. Must be used with the domainId parameter.'}, {u'name': u'pagesize', u'required': False, u'related': [], u'length': 255, u'type': u'integer', u'description': u''}, {u'name': u'isrecursive', u'required': False, u'related': [], u'length': 255, u'type': u'boolean', u'description': u'defaults to false, but if true, lists all resources from the parent specified by the domainId till leaves.'}], u'requiredparams': [], u'description': u'Lists user accounts'}, u'ipforwardingrules': {u'name': u'listIpForwardingRules', u'related': [], u'isasync': False, u'params': [{u'name': u'keyword', u'required': False, u'related': [], u'length': 255, u'type': u'string', u'description': u'List by keyword'}, {u'name': u'pagesize', u'required': False, u'related': [], u'length': 255, u'type': u'integer', u'description': u''}, {u'name': u'page', u'required': False, u'related': [], u'length': 255, u'type': u'integer', u'description': u''}, {u'name': u'isrecursive', u'required': False, u'related': [], u'length': 255, u'type': u'boolean', u'description': u'defaults to false, but if true, lists all resources from the parent specified by the domainId till leaves.'}, {u'name': u'ipaddressid', u'required': False, u'related': [u'listPublicIpAddresses', u'associateIpAddress'], u'length': 255, u'type': u'uuid', u'description': u'list the rule belonging to this public ip address'}, {u'name': u'virtualmachineid', u'required': False, u'related': [u'updateDefaultNicForVirtualMachine', u'revertToVMSnapshot', u'resetPasswordForVirtualMachine', u'listVirtualMachines', u'destroyVirtualMachine', u'startVirtualMachine', u'listVirtualMachines', u'updateVMAffinityGroup', u'removeNicFromVirtualMachine', u'deployVirtualMachine', u'revertToVMSnapshot', u'addNicToVirtualMachine', u'restoreVirtualMachine', u'stopVirtualMachine', u'changeServiceForVirtualMachine', u'destroyVirtualMachine', u'updateVirtualMachine', u'detachIso', u'resetSSHKeyForVirtualMachine', u'attachIso', u'rebootVirtualMachine'], u'length': 255, u'type': u'uuid', u'description': u'Lists all rules applied to the specified Vm.'}, {u'name': u'projectid', u'required': False, u'related': [], u'length': 255, u'type': u'uuid', u'description': u'list objects by project'}, {u'name': u'listall', u'required': False, u'related': [], u'length': 255, u'type': u'boolean', u'description': u"If set to false, list only resources belonging to the command's caller; if set to true - list resources that the caller is authorized to see. Default value is false"}, {u'name': u'domainid', u'required': False, u'related': [], u'length': 255, u'type': u'uuid', u'description': u'list only resources belonging to the domain specified'}, {u'name': u'account', u'required': False, u'related': [], u'length': 255, u'type': u'string', u'description': u'list resources by account. Must be used with the domainId parameter.'}, {u'name': u'id', u'required': False, u'related': [u'listIpForwardingRules'], u'length': 255, u'type': u'uuid', u'description': u'Lists rule with the specified ID.'}], u'requiredparams': [], u'description': u'List the ip forwarding rules'}, u'deploymentplanners': {u'name': u'listDeploymentPlanners', u'related': [], u'isasync': False, u'params': [{u'name': u'pagesize', u'required': False, u'related': [], u'length': 255, u'type': u'integer', u'description': u''}, {u'name': u'page', u'required': False, u'related': [], u'length': 255, u'type': u'integer', u'description': u''}, {u'name': u'keyword', u'required': False, u'related': [], u'length': 255, u'type': u'string', u'description': u'List by keyword'}], u'requiredparams': [], u'description': u'Lists all DeploymentPlanners available.'}, u'vpnconnections': {u'name': u'listVpnConnections', u'related': [], u'isasync': False, u'params': [{u'name': u'id', u'required': False, u'related': [u'listVpnConnections'], u'length': 255, u'type': u'uuid', u'description': u'id of the vpn connection'}, {u'name': u'pagesize', u'required': False, u'related': [], u'length': 255, u'type': u'integer', u'description': u''}, {u'name': u'listall', u'required': False, u'related': [], u'length': 255, u'type': u'boolean', u'description': u"If set to false, list only resources belonging to the command's caller; if set to true - list resources that the caller is authorized to see. Default value is false"}, {u'name': u'keyword', u'required': False, u'related': [], u'length': 255, u'type': u'string', u'description': u'List by keyword'}, {u'name': u'vpcid', u'required': False, u'related': [u'updateVPC', u'createVPC', u'listVPCs'], u'length': 255, u'type': u'uuid', u'description': u'id of vpc'}, {u'name': u'page', u'required': False, u'related': [], u'length': 255, u'type': u'integer', u'description': u''}, {u'name': u'account', u'required': False, u'related': [], u'length': 255, u'type': u'string', u'description': u'list resources by account. Must be used with the domainId parameter.'}, {u'name': u'fordisplay', u'required': False, u'related': [], u'length': 255, u'type': u'boolean', u'description': u'list resources by display flag; only ROOT admin is eligible to pass this parameter'}, {u'name': u'projectid', u'required': False, u'related': [], u'length': 255, u'type': u'uuid', u'description': u'list objects by project'}, {u'name': u'domainid', u'required': False, u'related': [], u'length': 255, u'type': u'uuid', u'description': u'list only resources belonging to the domain specified'}, {u'name': u'isrecursive', u'required': False, u'related': [], u'length': 255, u'type': u'boolean', u'description': u'defaults to false, but if true, lists all resources from the parent specified by the domainId till leaves.'}], u'requiredparams': [], u'description': u'Lists site to site vpn connection gateways'}, u'trafficmonitors': {u'name': u'listTrafficMonitors', u'related': [], u'isasync': False, u'params': [{u'name': u'zoneid', u'required': True, u'related': [u'listZones', u'updateZone', u'createZone', u'listZones'], u'length': 255, u'type': u'uuid', u'description': u'zone Id'}, {u'name': u'pagesize', u'required': False, u'related': [], u'length': 255, u'type': u'integer', u'description': u''}, {u'name': u'keyword', u'required': False, u'related': [], u'length': 255, u'type': u'string', u'description': u'List by keyword'}, {u'name': u'page', u'required': False, u'related': [], u'length': 255, u'type': u'integer', u'description': u''}], u'requiredparams': [u'zoneid'], u'description': u'List traffic monitor Hosts.'}, u'vpnusers': {u'name': u'listVpnUsers', u'related': [], u'isasync': False, u'params': [{u'name': u'domainid', u'required': False, u'related': [], u'length': 255, u'type': u'uuid', u'description': u'list only resources belonging to the domain specified'}, {u'name': u'username', u'required': False, u'related': [], u'length': 255, u'type': u'string', u'description': u'the username of the vpn user.'}, {u'name': u'keyword', u'required': False, u'related': [], u'length': 255, u'type': u'string', u'description': u'List by keyword'}, {u'name': u'projectid', u'required': False, u'related': [], u'length': 255, u'type': u'uuid', u'description': u'list objects by project'}, {u'name': u'listall', u'required': False, u'related': [], u'length': 255, u'type': u'boolean', u'description': u"If set to false, list only resources belonging to the command's caller; if set to true - list resources that the caller is authorized to see. Default value is false"}, {u'name': u'isrecursive', u'required': False, u'related': [], u'length': 255, u'type': u'boolean', u'description': u'defaults to false, but if true, lists all resources from the parent specified by the domainId till leaves.'}, {u'name': u'pagesize', u'required': False, u'related': [], u'length': 255, u'type': u'integer', u'description': u''}, {u'name': u'page', u'required': False, u'related': [], u'length': 255, u'type': u'integer', u'description': u''}, {u'name': u'id', u'required': False, u'related': [u'listVpnUsers'], u'length': 255, u'type': u'uuid', u'description': u'The uuid of the Vpn user'}, {u'name': u'account', u'required': False, u'related': [], u'length': 255, u'type': u'string', u'description': u'list resources by account. Must be used with the domainId parameter.'}], u'requiredparams': [], u'description': u'Lists vpn users'}, u'egressfirewallrules': {u'name': u'listEgressFirewallRules', u'related': [], u'isasync': False, u'params': [{u'name': u'fordisplay', u'required': False, u'related': [], u'length': 255, u'type': u'boolean', u'description': u'list resources by display flag; only ROOT admin is eligible to pass this parameter'}, {u'name': u'account', u'required': False, u'related': [], u'length': 255, u'type': u'string', u'description': u'list resources by account. Must be used with the domainId parameter.'}, {u'name': u'isrecursive', u'required': False, u'related': [], u'length': 255, u'type': u'boolean', u'description': u'defaults to false, but if true, lists all resources from the parent specified by the domainId till leaves.'}, {u'name': u'page', u'required': False, u'related': [], u'length': 255, u'type': u'integer', u'description': u''}, {u'name': u'networkid', u'required': False, u'related': [u'updateNetwork', u'listNetworks', u'createNetwork'], u'length': 255, u'type': u'uuid', u'description': u'list firewall rules for ceratin network'}, {u'name': u'id', u'required': False, u'related': [], u'length': 255, u'type': u'uuid', u'description': u'Lists rule with the specified ID.'}, {u'name': u'id', u'required': False, u'related': [], u'length': 255, u'type': u'uuid', u'description': u'Lists rule with the specified ID.'}, {u'name': u'projectid', u'required': False, u'related': [], u'length': 255, u'type': u'uuid', u'description': u'list objects by project'}, {u'name': u'keyword', u'required': False, u'related': [], u'length': 255, u'type': u'string', u'description': u'List by keyword'}, {u'name': u'networkid', u'required': False, u'related': [u'updateNetwork', u'listNetworks', u'createNetwork'], u'length': 255, u'type': u'uuid', u'description': u'the id network network for the egress firwall services'}, {u'name': u'ipaddressid', u'required': False, u'related': [u'listPublicIpAddresses', u'associateIpAddress'], u'length': 255, u'type': u'uuid', u'description': u'the id of IP address of the firwall services'}, {u'name': u'pagesize', u'required': False, u'related': [], u'length': 255, u'type': u'integer', u'description': u''}, {u'name': u'domainid', u'required': False, u'related': [], u'length': 255, u'type': u'uuid', u'description': u'list only resources belonging to the domain specified'}, {u'name': u'listall', u'required': False, u'related': [], u'length': 255, u'type': u'boolean', u'description': u"If set to false, list only resources belonging to the command's caller; if set to true - list resources that the caller is authorized to see. Default value is false"}, {u'name': u'tags', u'required': False, u'related': [], u'length': 255, u'type': u'map', u'description': u'List resources by tags (key/value pairs)'}], u'requiredparams': [], u'description': u'Lists all egress firewall rules for network id.'}, u'opendaylightcontrollers': {u'name': u'listOpenDaylightControllers', u'related': [u'deleteOpenDaylightController'], u'isasync': False, u'params': [{u'name': u'physicalnetworkid', u'required': False, u'related': [u'listPhysicalNetworks'], u'length': 255, u'type': u'uuid', u'description': u'the Physical Network ID'}, {u'name': u'id', u'required': False, u'related': [u'deleteOpenDaylightController', u'listOpenDaylightControllers'], u'length': 255, u'type': u'uuid', u'description': u'the ID of a OpenDaylight Controller'}], u'requiredparams': [], u'description': u'Lists OpenDyalight controllers'}, u'staticroutes': {u'name': u'listStaticRoutes', u'related': [], u'isasync': False, u'params': [{u'name': u'keyword', u'required': False, u'related': [], u'length': 255, u'type': u'string', u'description': u'List by keyword'}, {u'name': u'listall', u'required': False, u'related': [], u'length': 255, u'type': u'boolean', u'description': u"If set to false, list only resources belonging to the command's caller; if set to true - list resources that the caller is authorized to see. Default value is false"}, {u'name': u'domainid', u'required': False, u'related': [u'updateDomain', u'listDomainChildren'], u'length': 255, u'type': u'uuid', u'description': u'list only resources belonging to the domain specified'}, {u'name': u'isrecursive', u'required': False, u'related': [], u'length': 255, u'type': u'boolean', u'description': u'defaults to false, but if true, lists all resources from the parent specified by the domainId till leaves.'}, {u'name': u'account', u'required': False, u'related': [], u'length': 255, u'type': u'string', u'description': u'list resources by account. Must be used with the domainId parameter.'}, {u'name': u'tags', u'required': False, u'related': [], u'length': 255, u'type': u'map', u'description': u'List resources by tags (key/value pairs)'}, {u'name': u'id', u'required': False, u'related': [u'listStaticRoutes'], u'length': 255, u'type': u'uuid', u'description': u'list static route by id'}, {u'name': u'vpcid', u'required': False, u'related': [u'listVPCs', u'updateVPC', u'restartVPC', u'createVPC', u'createVPC', u'listVPCs'], u'length': 255, u'type': u'uuid', u'description': u'list static routes by vpc id'}, {u'name': u'pagesize', u'required': False, u'related': [], u'length': 255, u'type': u'integer', u'description': u''}, {u'name': u'projectid', u'required': False, u'related': [u'createProject'], u'length': 255, u'type': u'uuid', u'description': u'list objects by project'}, {u'name': u'gatewayid', u'required': False, u'related': [u'createPrivateGateway'], u'length': 255, u'type': u'uuid', u'description': u'list static routes by gateway id'}, {u'name': u'page', u'required': False, u'related': [], u'length': 255, u'type': u'integer', u'description': u''}], u'requiredparams': [], u'description': u'Lists all static routes'}, u'portableipranges': {u'name': u'listPortableIpRanges', u'related': [], u'isasync': False, u'params': [{u'name': u'id', u'required': False, u'related': [u'listPortableIpRanges'], u'length': 255, u'type': u'uuid', u'description': u'Id of the portable ip range'}, {u'name': u'page', u'required': False, u'related': [], u'length': 255, u'type': u'integer', u'description': u''}, {u'name': u'regionid', u'required': False, u'related': [], u'length': 255, u'type': u'integer', u'description': u'Id of a Region'}, {u'name': u'keyword', u'required': False, u'related': [], u'length': 255, u'type': u'string', u'description': u'List by keyword'}, {u'name': u'pagesize', u'required': False, u'related': [], u'length': 255, u'type': u'integer', u'description': u''}], u'requiredparams': [], u'description': u'list portable IP ranges'}, u'volumes': {u'name': u'listVolumes', u'related': [u'uploadVolume', u'attachVolume', u'createVolume', u'detachVolume', u'createVolume', u'updateVolume', u'migrateVolume', u'resizeVolume', u'attachVolume', u'updateVolume', u'migrateVolume', u'resizeVolume', u'uploadVolume', u'detachVolume', u'listVolumes'], u'isasync': False, u'params': [{u'name': u'displayvolume', u'required': False, u'related': [], u'length': 255, u'type': u'boolean', u'description': u'list resources by display flag; only ROOT admin is eligible to pass this parameter'}, {u'name': u'keyword', u'required': False, u'related': [], u'length': 255, u'type': u'string', u'description': u'List by keyword'}, {u'name': u'page', u'required': False, u'related': [], u'length': 255, u'type': u'integer', u'description': u''}, {u'name': u'domainid', u'required': False, u'related': [u'listDomains', u'updateDomain', u'createDomain', u'listDomainChildren'], u'length': 255, u'type': u'uuid', u'description': u'list only resources belonging to the domain specified'}, {u'name': u'type', u'required': False, u'related': [], u'length': 255, u'type': u'string', u'description': u'the type of disk volume'}, {u'name': u'storageid', u'required': False, u'related': [u'findStoragePoolsForMigration', u'createStoragePool', u'cancelStorageMaintenance', u'enableStorageMaintenance', u'updateStoragePool', u'listStoragePools'], u'length': 255, u'type': u'uuid', u'description': u'the ID of the storage pool, available to ROOT admin only'}, {u'name': u'diskofferingid', u'required': False, u'related': [u'updateDiskOffering', u'createDiskOffering', u'listDiskOfferings'], u'length': 255, u'type': u'uuid', u'description': u'list volumes by disk offering'}, {u'name': u'podid', u'required': False, u'related': [u'updatePod', u'createPod', u'listPods'], u'length': 255, u'type': u'uuid', u'description': u'the pod id the disk volume belongs to'}, {u'name': u'isrecursive', u'required': False, u'related': [], u'length': 255, u'type': u'boolean', u'description': u'defaults to false, but if true, lists all resources from the parent specified by the domainId till leaves.'}, {u'name': u'tags', u'required': False, u'related': [], u'length': 255, u'type': u'map', u'description': u'List resources by tags (key/value pairs)'}, {u'name': u'hostid', u'required': False, u'related': [u'cancelHostMaintenance', u'updateHost', u'prepareHostForMaintenance', u'listHosts', u'addHost', u'addBaremetalHost'], u'length': 255, u'type': u'uuid', u'description': u'list volumes on specified host'}, {u'name': u'virtualmachineid', u'required': False, u'related': [u'updateVirtualMachine', u'removeNicFromVirtualMachine', u'assignVirtualMachine', u'detachIso', u'updateDefaultNicForVirtualMachine', u'updateDefaultNicForVirtualMachine', u'revertToVMSnapshot', u'recoverVirtualMachine', u'startVirtualMachine', u'resetPasswordForVirtualMachine', u'resetPasswordForVirtualMachine', u'updateVMAffinityGroup', u'stopVirtualMachine', u'listVirtualMachines', u'deployVirtualMachine', u'migrateVirtualMachineWithVolume', u'destroyVirtualMachine', u'attachIso', u'rebootVirtualMachine', u'startVirtualMachine', u'listVirtualMachines', u'changeServiceForVirtualMachine', u'updateVMAffinityGroup', u'removeNicFromVirtualMachine', u'deployVirtualMachine', u'revertToVMSnapshot', u'addNicToVirtualMachine', u'restoreVirtualMachine', u'restoreVirtualMachine', u'stopVirtualMachine', u'changeServiceForVirtualMachine', u'destroyVirtualMachine', u'migrateVirtualMachine', u'updateVirtualMachine', u'detachIso', u'resetSSHKeyForVirtualMachine', u'resetSSHKeyForVirtualMachine', u'attachIso', u'rebootVirtualMachine'], u'length': 255, u'type': u'uuid', u'description': u'the ID of the virtual machine'}, {u'name': u'id', u'required': False, u'related': [u'uploadVolume', u'attachVolume', u'createVolume', u'detachVolume', u'createVolume', u'updateVolume', u'migrateVolume', u'resizeVolume', u'attachVolume', u'updateVolume', u'migrateVolume', u'listVolumes', u'resizeVolume', u'uploadVolume', u'detachVolume', u'listVolumes'], u'length': 255, u'type': u'uuid', u'description': u'the ID of the disk volume'}, {u'name': u'listall', u'required': False, u'related': [], u'length': 255, u'type': u'boolean', u'description': u"If set to false, list only resources belonging to the command's caller; if set to true - list resources that the caller is authorized to see. Default value is false"}, {u'name': u'zoneid', u'required': False, u'related': [u'listZones', u'updateZone', u'createZone', u'listZones'], u'length': 255, u'type': u'uuid', u'description': u'the ID of the availability zone'}, {u'name': u'pagesize', u'required': False, u'related': [], u'length': 255, u'type': u'integer', u'description': u''}, {u'name': u'projectid', u'required': False, u'related': [u'listProjects', u'activateProject', u'suspendProject', u'updateProject', u'listProjectAccounts', u'createProject'], u'length': 255, u'type': u'uuid', u'description': u'list objects by project'}, {u'name': u'name', u'required': False, u'related': [], u'length': 255, u'type': u'string', u'description': u'the name of the disk volume'}, {u'name': u'account', u'required': False, u'related': [], u'length': 255, u'type': u'string', u'description': u'list resources by account. Must be used with the domainId parameter.'}], u'requiredparams': [], u'description': u'Lists all volumes.'}, u'pods': {u'name': u'listPods', u'related': [u'updatePod', u'createPod'], u'isasync': False, u'params': [{u'name': u'id', u'required': False, u'related': [u'updatePod', u'createPod', u'listPods'], u'length': 255, u'type': u'uuid', u'description': u'list Pods by ID'}, {u'name': u'allocationstate', u'required': False, u'related': [], u'length': 255, u'type': u'string', u'description': u'list pods by allocation state'}, {u'name': u'keyword', u'required': False, u'related': [], u'length': 255, u'type': u'string', u'description': u'List by keyword'}, {u'name': u'page', u'required': False, u'related': [], u'length': 255, u'type': u'integer', u'description': u''}, {u'name': u'name', u'required': False, u'related': [], u'length': 255, u'type': u'string', u'description': u'list Pods by name'}, {u'name': u'showcapacities', u'required': False, u'related': [], u'length': 255, u'type': u'boolean', u'description': u'flag to display the capacity of the pods'}, {u'name': u'pagesize', u'required': False, u'related': [], u'length': 255, u'type': u'integer', u'description': u''}, {u'name': u'zoneid', u'required': False, u'related': [u'listZones', u'updateZone', u'createZone', u'listZones'], u'length': 255, u'type': u'uuid', u'description': u'list Pods by Zone ID'}], u'requiredparams': [], u'description': u'Lists all Pods.'}}, u'activate': {u'project': {u'name': u'activateProject', u'related': [u'updateProject', u'listProjectAccounts', u'createProject'], u'isasync': True, u'params': [{u'name': u'id', u'required': True, u'related': [u'activateProject', u'updateProject', u'listProjectAccounts', u'createProject'], u'length': 255, u'type': u'uuid', u'description': u'id of the project to be modified'}], u'requiredparams': [u'id'], u'description': u'Activates a project'}}, u'reconnect': {u'host': {u'name': u'reconnectHost', u'related': [u'cancelHostMaintenance', u'updateHost', u'prepareHostForMaintenance', u'listHosts', u'addHost', u'addBaremetalHost'], u'isasync': True, u'params': [{u'name': u'id', u'required': True, u'related': [u'cancelHostMaintenance', u'updateHost', u'prepareHostForMaintenance', u'listHosts', u'addHost', u'addBaremetalHost', u'reconnectHost'], u'length': 255, u'type': u'uuid', u'description': u'the host ID'}], u'requiredparams': [u'id'], u'description': u'Reconnects a host.'}}, u'cancel': {u'hostmaintenance': {u'name': u'cancelHostMaintenance', u'related': [u'updateHost', u'prepareHostForMaintenance', u'listHosts', u'addHost', u'addBaremetalHost'], u'isasync': True, u'params': [{u'name': u'id', u'required': True, u'related': [u'cancelHostMaintenance', u'updateHost', u'prepareHostForMaintenance', u'listHosts', u'addHost', u'addBaremetalHost'], u'length': 255, u'type': u'uuid', u'description': u'the host ID'}], u'requiredparams': [u'id'], u'description': u'Cancels host maintenance.'}, u'storagemaintenance': {u'name': u'cancelStorageMaintenance', u'related': [u'findStoragePoolsForMigration', u'createStoragePool', u'listStoragePools'], u'isasync': True, u'params': [{u'name': u'id', u'required': True, u'related': [u'findStoragePoolsForMigration', u'createStoragePool', u'cancelStorageMaintenance', u'listStoragePools'], u'length': 255, u'type': u'uuid', u'description': u'the primary storage ID'}], u'requiredparams': [u'id'], u'description': u'Cancels maintenance for primary storage'}}, u'query': {u'asyncjobresult': {u'name': u'queryAsyncJobResult', u'related': [u'listAsyncJobs'], u'isasync': False, u'params': [{u'name': u'jobid', u'required': True, u'related': [u'queryAsyncJobResult', u'listAsyncJobs'], u'length': 255, u'type': u'uuid', u'description': u'the ID of the asychronous job'}], u'requiredparams': [u'jobid'], u'description': u'Retrieves the current status of asynchronous job.'}}, u'recover': {u'virtualmachine': {u'name': u'recoverVirtualMachine', u'related': [u'updateVirtualMachine', u'removeNicFromVirtualMachine', u'assignVirtualMachine', u'detachIso', u'updateDefaultNicForVirtualMachine', u'updateDefaultNicForVirtualMachine', u'revertToVMSnapshot', u'startVirtualMachine', u'resetPasswordForVirtualMachine', u'resetPasswordForVirtualMachine', u'updateVMAffinityGroup', u'stopVirtualMachine', u'listVirtualMachines', u'deployVirtualMachine', u'migrateVirtualMachineWithVolume', u'destroyVirtualMachine', u'attachIso', u'rebootVirtualMachine', u'startVirtualMachine', u'listVirtualMachines', u'changeServiceForVirtualMachine', u'updateVMAffinityGroup', u'removeNicFromVirtualMachine', u'deployVirtualMachine', u'revertToVMSnapshot', u'addNicToVirtualMachine', u'restoreVirtualMachine', u'restoreVirtualMachine', u'stopVirtualMachine', u'changeServiceForVirtualMachine', u'destroyVirtualMachine', u'migrateVirtualMachine', u'updateVirtualMachine', u'detachIso', u'resetSSHKeyForVirtualMachine', u'attachIso', u'rebootVirtualMachine'], u'isasync': False, u'params': [{u'name': u'id', u'required': True, u'related': [u'updateVirtualMachine', u'removeNicFromVirtualMachine', u'assignVirtualMachine', u'detachIso', u'updateDefaultNicForVirtualMachine', u'updateDefaultNicForVirtualMachine', u'revertToVMSnapshot', u'recoverVirtualMachine', u'startVirtualMachine', u'resetPasswordForVirtualMachine', u'resetPasswordForVirtualMachine', u'updateVMAffinityGroup', u'stopVirtualMachine', u'listVirtualMachines', u'deployVirtualMachine', u'migrateVirtualMachineWithVolume', u'destroyVirtualMachine', u'attachIso', u'rebootVirtualMachine', u'startVirtualMachine', u'listVirtualMachines', u'changeServiceForVirtualMachine', u'updateVMAffinityGroup', u'removeNicFromVirtualMachine', u'deployVirtualMachine', u'revertToVMSnapshot', u'addNicToVirtualMachine', u'restoreVirtualMachine', u'restoreVirtualMachine', u'stopVirtualMachine', u'changeServiceForVirtualMachine', u'destroyVirtualMachine', u'migrateVirtualMachine', u'updateVirtualMachine', u'detachIso', u'resetSSHKeyForVirtualMachine', u'attachIso', u'rebootVirtualMachine'], u'length': 255, u'type': u'uuid', u'description': u'The ID of the virtual machine'}], u'requiredparams': [u'id'], u'description': u'Recovers a virtual machine.'}}, u'extract': {u'volume': {u'name': u'extractVolume', u'related': [u'extractTemplate', u'extractIso'], u'isasync': True, u'params': [{u'name': u'id', u'required': True, u'related': [u'uploadVolume', u'attachVolume', u'createVolume', u'detachVolume', u'createVolume', u'updateVolume', u'migrateVolume', u'resizeVolume', u'attachVolume', u'updateVolume', u'migrateVolume', u'listVolumes', u'resizeVolume', u'uploadVolume', u'detachVolume', u'listVolumes'], u'length': 255, u'type': u'uuid', u'description': u'the ID of the volume'}, {u'name': u'url', u'required': False, u'related': [], u'length': 255, u'type': u'string', u'description': u'the url to which the volume would be extracted'}, {u'name': u'zoneid', u'required': True, u'related': [u'listZones', u'updateZone', u'createZone', u'listZones'], u'length': 255, u'type': u'uuid', u'description': u'the ID of the zone where the volume is located'}, {u'name': u'mode', u'required': True, u'related': [], u'length': 255, u'type': u'string', u'description': u'the mode of extraction - HTTP_DOWNLOAD or FTP_UPLOAD'}], u'requiredparams': [u'id', u'zoneid', u'mode'], u'description': u'Extracts volume'}, u'iso': {u'name': u'extractIso', u'related': [u'extractTemplate'], u'isasync': True, u'params': [{u'name': u'mode', u'required': True, u'related': [], u'length': 255, u'type': u'string', u'description': u'the mode of extraction - HTTP_DOWNLOAD or FTP_UPLOAD'}, {u'name': u'zoneid', u'required': False, u'related': [u'listZones'], u'length': 255, u'type': u'uuid', u'description': u'the ID of the zone where the ISO is originally located'}, {u'name': u'id', u'required': True, u'related': [u'registerIso', u'registerTemplate', u'copyIso', u'createTemplate', u'listIsos', u'copyTemplate', u'copyIso', u'listIsos', u'updateIso', u'listTemplates'], u'length': 255, u'type': u'uuid', u'description': u'the ID of the ISO file'}, {u'name': u'url', u'required': False, u'related': [], u'length': 255, u'type': u'string', u'description': u'the url to which the ISO would be extracted'}], u'requiredparams': [u'mode', u'id'], u'description': u'Extracts an ISO'}, u'template': {u'name': u'extractTemplate', u'related': [], u'isasync': True, u'params': [{u'name': u'zoneid', u'required': False, u'related': [u'listZones'], u'length': 255, u'type': u'uuid', u'description': u'the ID of the zone where the ISO is originally located'}, {u'name': u'url', u'required': False, u'related': [], u'length': 255, u'type': u'string', u'description': u'the url to which the ISO would be extracted'}, {u'name': u'id', u'required': True, u'related': [u'registerIso', u'registerTemplate', u'copyIso', u'createTemplate', u'listIsos', u'copyTemplate', u'copyIso', u'listIsos', u'updateIso', u'listTemplates'], u'length': 255, u'type': u'uuid', u'description': u'the ID of the template'}, {u'name': u'mode', u'required': True, u'related': [], u'length': 255, u'type': u'string', u'description': u'the mode of extraction - HTTP_DOWNLOAD or FTP_UPLOAD'}], u'requiredparams': [u'id', u'mode'], u'description': u'Extracts a template'}}, u'archive': {u'alerts': {u'name': u'archiveAlerts', u'related': [], u'isasync': False, u'params': [{u'name': u'startdate', u'required': False, u'related': [], u'length': 255, u'type': u'date', u'description': u'start date range to archive alerts (including) this date (use format "yyyy-MM-dd" or the new format "yyyy-MM-ddThh:mm:ss")'}, {u'name': u'type', u'required': False, u'related': [], u'length': 255, u'type': u'string', u'description': u'archive by alert type'}, {u'name': u'ids', u'required': False, u'related': [], u'length': 255, u'type': u'list', u'description': u'the IDs of the alerts'}, {u'name': u'enddate', u'required': False, u'related': [], u'length': 255, u'type': u'date', u'description': u'end date range to archive alerts (including) this date (use format "yyyy-MM-dd" or the new format "yyyy-MM-ddThh:mm:ss")'}], u'requiredparams': [], u'description': u'Archive one or more alerts.'}, u'events': {u'name': u'archiveEvents', u'related': [], u'isasync': False, u'params': [{u'name': u'enddate', u'required': False, u'related': [], u'length': 255, u'type': u'date', u'description': u'end date range to archive events (including) this date (use format "yyyy-MM-dd" or the new format "yyyy-MM-ddThh:mm:ss")'}, {u'name': u'startdate', u'required': False, u'related': [], u'length': 255, u'type': u'date', u'description': u'start date range to archive events (including) this date (use format "yyyy-MM-dd" or the new format "yyyy-MM-ddThh:mm:ss")'}, {u'name': u'ids', u'required': False, u'related': [], u'length': 255, u'type': u'list', u'description': u'the IDs of the events'}, {u'name': u'type', u'required': False, u'related': [], u'length': 255, u'type': u'string', u'description': u'archive by event type'}], u'requiredparams': [], u'description': u'Archive one or more events.'}}, u'scale': {u'systemvm': {u'name': u'scaleSystemVm', u'related': [], u'isasync': True, u'params': [{u'name': u'id', u'required': True, u'related': [u'scaleSystemVm'], u'length': 255, u'type': u'uuid', u'description': u'The ID of the system vm'}, {u'name': u'details', u'required': False, u'related': [], u'length': 255, u'type': u'map', u'description': u'name value pairs of custom parameters for cpu, memory and cpunumber. example details[i].name=value'}, {u'name': u'serviceofferingid', u'required': True, u'related': [], u'length': 255, u'type': u'uuid', u'description': u'the service offering ID to apply to the system vm'}], u'requiredparams': [u'id', u'serviceofferingid'], u'description': u'Scale the service offering for a system vm (console proxy or secondary storage). The system vm must be in a "Stopped" state for this command to take effect.'}, u'virtualmachine': {u'name': u'scaleVirtualMachine', u'related': [], u'isasync': True, u'params': [{u'name': u'details', u'required': False, u'related': [], u'length': 255, u'type': u'map', u'description': u'name value pairs of custom parameters for cpu,memory and cpunumber. example details[i].name=value'}, {u'name': u'id', u'required': True, u'related': [u'updateVirtualMachine', u'removeNicFromVirtualMachine', u'assignVirtualMachine', u'detachIso', u'updateDefaultNicForVirtualMachine', u'updateDefaultNicForVirtualMachine', u'revertToVMSnapshot', u'startVirtualMachine', u'resetPasswordForVirtualMachine', u'resetPasswordForVirtualMachine', u'updateVMAffinityGroup', u'stopVirtualMachine', u'listVirtualMachines', u'migrateVirtualMachineWithVolume', u'destroyVirtualMachine', u'rebootVirtualMachine', u'startVirtualMachine', u'listVirtualMachines', u'changeServiceForVirtualMachine', u'updateVMAffinityGroup', u'removeNicFromVirtualMachine', u'deployVirtualMachine', u'revertToVMSnapshot', u'addNicToVirtualMachine', u'restoreVirtualMachine', u'restoreVirtualMachine', u'stopVirtualMachine', u'changeServiceForVirtualMachine', u'destroyVirtualMachine', u'migrateVirtualMachine', u'updateVirtualMachine', u'detachIso', u'resetSSHKeyForVirtualMachine', u'attachIso', u'rebootVirtualMachine'], u'length': 255, u'type': u'uuid', u'description': u'The ID of the virtual machine'}, {u'name': u'serviceofferingid', u'required': True, u'related': [u'createServiceOffering', u'listServiceOfferings'], u'length': 255, u'type': u'uuid', u'description': u'the ID of the service offering for the virtual machine'}], u'requiredparams': [u'id', u'serviceofferingid'], u'description': u'Scales the virtual machine to a new service offering.'}}, u'prepare': {u'hostformaintenance': {u'name': u'prepareHostForMaintenance', u'related': [u'listHosts'], u'isasync': True, u'params': [{u'name': u'id', u'required': True, u'related': [u'prepareHostForMaintenance', u'listHosts'], u'length': 255, u'type': u'uuid', u'description': u'the host ID'}], u'requiredparams': [u'id'], u'description': u'Prepares a host for maintenance.'}, u'template': {u'name': u'prepareTemplate', u'related': [u'registerIso', u'registerIso', u'updateTemplate', u'registerTemplate', u'copyIso', u'createTemplate', u'listIsos', u'copyTemplate', u'copyIso', u'listIsos', u'updateIso', u'listTemplates'], u'isasync': False, u'params': [{u'name': u'zoneid', u'required': True, u'related': [u'listZones', u'updateZone', u'createZone', u'listZones'], u'length': 255, u'type': u'uuid', u'description': u'zone ID of the template to be prepared in primary storage(s).'}, {u'name': u'templateid', u'required': True, u'related': [u'registerIso', u'registerIso', u'prepareTemplate', u'updateTemplate', u'registerTemplate', u'copyIso', u'createTemplate', u'listIsos', u'copyTemplate', u'copyIso', u'listIsos', u'updateIso', u'listTemplates'], u'length': 255, u'type': u'uuid', u'description': u'template ID of the template to be prepared in primary storage(s).'}], u'requiredparams': [u'zoneid', u'templateid'], u'description': u'load template into primary storage'}}, u'attach': {u'volume': {u'name': u'attachVolume', u'related': [u'uploadVolume', u'createVolume', u'detachVolume', u'createVolume', u'updateVolume', u'resizeVolume', u'attachVolume', u'updateVolume', u'migrateVolume', u'resizeVolume', u'uploadVolume', u'detachVolume', u'listVolumes'], u'isasync': True, u'params': [{u'name': u'virtualmachineid', u'required': True, u'related': [u'updateVirtualMachine', u'removeNicFromVirtualMachine', u'assignVirtualMachine', u'detachIso', u'updateDefaultNicForVirtualMachine', u'updateDefaultNicForVirtualMachine', u'revertToVMSnapshot', u'recoverVirtualMachine', u'startVirtualMachine', u'resetPasswordForVirtualMachine', u'resetPasswordForVirtualMachine', u'updateVMAffinityGroup', u'stopVirtualMachine', u'listVirtualMachines', u'deployVirtualMachine', u'migrateVirtualMachineWithVolume', u'destroyVirtualMachine', u'attachIso', u'rebootVirtualMachine', u'startVirtualMachine', u'listVirtualMachines', u'changeServiceForVirtualMachine', u'updateVMAffinityGroup', u'removeNicFromVirtualMachine', u'deployVirtualMachine', u'revertToVMSnapshot', u'addNicToVirtualMachine', u'restoreVirtualMachine', u'restoreVirtualMachine', u'stopVirtualMachine', u'changeServiceForVirtualMachine', u'destroyVirtualMachine', u'migrateVirtualMachine', u'updateVirtualMachine', u'detachIso', u'resetSSHKeyForVirtualMachine', u'resetSSHKeyForVirtualMachine', u'attachIso', u'rebootVirtualMachine'], u'length': 255, u'type': u'uuid', u'description': u' the ID of the virtual machine'}, {u'name': u'deviceid', u'required': False, u'related': [], u'length': 255, u'type': u'long', u'description': u'the ID of the device to map the volume to within the guest OS. If no deviceId is passed in, the next available deviceId will be chosen. Possible values for a Linux OS are:* 1 - /dev/xvdb* 2 - /dev/xvdc* 4 - /dev/xvde* 5 - /dev/xvdf* 6 - /dev/xvdg* 7 - /dev/xvdh* 8 - /dev/xvdi* 9 - /dev/xvdj'}, {u'name': u'id', u'required': True, u'related': [u'uploadVolume', u'attachVolume', u'createVolume', u'detachVolume', u'createVolume', u'updateVolume', u'resizeVolume', u'attachVolume', u'updateVolume', u'migrateVolume', u'resizeVolume', u'uploadVolume', u'detachVolume', u'listVolumes'], u'length': 255, u'type': u'uuid', u'description': u'the ID of the disk volume'}], u'requiredparams': [u'virtualmachineid', u'id'], u'description': u'Attaches a disk volume to a virtual machine.'}, u'iso': {u'name': u'attachIso', u'related': [u'updateVirtualMachine', u'removeNicFromVirtualMachine', u'assignVirtualMachine', u'detachIso', u'updateDefaultNicForVirtualMachine', u'updateDefaultNicForVirtualMachine', u'revertToVMSnapshot', u'startVirtualMachine', u'resetPasswordForVirtualMachine', u'resetPasswordForVirtualMachine', u'updateVMAffinityGroup', u'stopVirtualMachine', u'listVirtualMachines', u'migrateVirtualMachineWithVolume', u'destroyVirtualMachine', u'rebootVirtualMachine', u'startVirtualMachine', u'listVirtualMachines', u'changeServiceForVirtualMachine', u'updateVMAffinityGroup', u'removeNicFromVirtualMachine', u'deployVirtualMachine', u'revertToVMSnapshot', u'addNicToVirtualMachine', u'restoreVirtualMachine', u'restoreVirtualMachine', u'stopVirtualMachine', u'changeServiceForVirtualMachine', u'destroyVirtualMachine', u'migrateVirtualMachine', u'updateVirtualMachine', u'detachIso', u'resetSSHKeyForVirtualMachine', u'attachIso', u'rebootVirtualMachine'], u'isasync': True, u'params': [{u'name': u'virtualmachineid', u'required': True, u'related': [u'updateVirtualMachine', u'removeNicFromVirtualMachine', u'assignVirtualMachine', u'detachIso', u'updateDefaultNicForVirtualMachine', u'updateDefaultNicForVirtualMachine', u'revertToVMSnapshot', u'startVirtualMachine', u'resetPasswordForVirtualMachine', u'resetPasswordForVirtualMachine', u'updateVMAffinityGroup', u'stopVirtualMachine', u'listVirtualMachines', u'migrateVirtualMachineWithVolume', u'destroyVirtualMachine', u'attachIso', u'rebootVirtualMachine', u'startVirtualMachine', u'listVirtualMachines', u'changeServiceForVirtualMachine', u'updateVMAffinityGroup', u'removeNicFromVirtualMachine', u'deployVirtualMachine', u'revertToVMSnapshot', u'addNicToVirtualMachine', u'restoreVirtualMachine', u'restoreVirtualMachine', u'stopVirtualMachine', u'changeServiceForVirtualMachine', u'destroyVirtualMachine', u'migrateVirtualMachine', u'updateVirtualMachine', u'detachIso', u'resetSSHKeyForVirtualMachine', u'attachIso', u'rebootVirtualMachine'], u'length': 255, u'type': u'uuid', u'description': u'the ID of the virtual machine'}, {u'name': u'id', u'required': True, u'related': [u'registerIso', u'registerIso', u'prepareTemplate', u'updateTemplate', u'registerTemplate', u'copyIso', u'listTemplates', u'createTemplate', u'listIsos', u'copyTemplate', u'copyIso', u'listIsos', u'updateIso', u'listTemplates'], u'length': 255, u'type': u'uuid', u'description': u'the ID of the ISO file'}], u'requiredparams': [u'virtualmachineid', u'id'], u'description': u'Attaches an ISO to a virtual machine.'}}, u'create': {u'loadbalancerrule': {u'name': u'createLoadBalancerRule', u'related': [], u'isasync': True, u'params': [{u'name': u'privateport', u'required': True, u'related': [], u'length': 255, u'type': u'integer', u'description': u'the private port of the private ip address/virtual machine where the network traffic will be load balanced to'}, {u'name': u'account', u'required': False, u'related': [], u'length': 255, u'type': u'string', u'description': u'the account associated with the load balancer. Must be used with the domainId parameter.'}, {u'name': u'zoneid', u'required': False, u'related': [u'listZones'], u'length': 255, u'type': u'uuid', u'description': u'zone where the load balancer is going to be created. This parameter is required when LB service provider is ElasticLoadBalancerVm'}, {u'name': u'domainid', u'required': False, u'related': [u'listDomainChildren'], u'length': 255, u'type': u'uuid', u'description': u'the domain ID associated with the load balancer'}, {u'name': u'publicipid', u'required': False, u'related': [u'listPublicIpAddresses', u'associateIpAddress'], u'length': 255, u'type': u'uuid', u'description': u'public ip address id from where the network traffic will be load balanced from'}, {u'name': u'fordisplay', u'required': False, u'related': [], u'length': 255, u'type': u'boolean', u'description': u'an optional field, whether to the display the rule to the end user or not'}, {u'name': u'description', u'required': False, u'related': [], u'length': 4096, u'type': u'string', u'description': u'the description of the load balancer rule'}, {u'name': u'networkid', u'required': False, u'related': [u'updateNetwork', u'updateNetwork', u'listNetscalerLoadBalancerNetworks', u'listNetworks', u'createNetwork'], u'length': 255, u'type': u'uuid', u'description': u'The guest network this rule will be created for. Required when public Ip address is not associated with any Guest network yet (VPC case)'}, {u'name': u'protocol', u'required': False, u'related': [], u'length': 255, u'type': u'string', u'description': u'The protocol for the LB'}, {u'name': u'openfirewall', u'required': False, u'related': [], u'length': 255, u'type': u'boolean', u'description': u'if true, firewall rule for source/end pubic port is automatically created; if false - firewall rule has to be created explicitely. If not specified 1) defaulted to false when LB rule is being created for VPC guest network 2) in all other cases defaulted to true'}, {u'name': u'algorithm', u'required': True, u'related': [], u'length': 255, u'type': u'string', u'description': u'load balancer algorithm (source, roundrobin, leastconn)'}, {u'name': u'name', u'required': True, u'related': [], u'length': 255, u'type': u'string', u'description': u'name of the load balancer rule'}, {u'name': u'cidrlist', u'required': False, u'related': [], u'length': 255, u'type': u'list', u'description': u'the cidr list to forward traffic from'}, {u'name': u'publicport', u'required': True, u'related': [], u'length': 255, u'type': u'integer', u'description': u'the public port from where the network traffic will be load balanced from'}], u'requiredparams': [u'privateport', u'algorithm', u'name', u'publicport'], u'description': u'Creates a load balancer rule'}, u'domain': {u'name': u'createDomain', u'related': [u'listDomains', u'updateDomain', u'listDomainChildren'], u'isasync': False, u'params': [{u'name': u'name', u'required': True, u'related': [], u'length': 255, u'type': u'string', u'description': u'creates domain with this name'}, {u'name': u'parentdomainid', u'required': False, u'related': [u'listDomains', u'updateDomain', u'createDomain', u'listDomainChildren'], u'length': 255, u'type': u'uuid', u'description': u'assigns new domain a parent domain by domain ID of the parent. If no parent domain is specied, the ROOT domain is assumed.'}, {u'name': u'networkdomain', u'required': False, u'related': [], u'length': 255, u'type': u'string', u'description': u'Network domain for networks in the domain'}, {u'name': u'domainid', u'required': False, u'related': [], u'length': 255, u'type': u'string', u'description': u'Domain UUID, required for adding domain from another Region'}], u'requiredparams': [u'name'], u'description': u'Creates a domain'}, u'snapshotpolicy': {u'name': u'createSnapshotPolicy', u'related': [], u'isasync': False, u'params': [{u'name': u'schedule', u'required': True, u'related': [], u'length': 255, u'type': u'string', u'description': u'time the snapshot is scheduled to be taken. Format is:* if HOURLY, MM* if DAILY, MM:HH* if WEEKLY, MM:HH:DD (1-7)* if MONTHLY, MM:HH:DD (1-28)'}, {u'name': u'intervaltype', u'required': True, u'related': [], u'length': 255, u'type': u'string', u'description': u'valid values are HOURLY, DAILY, WEEKLY, and MONTHLY'}, {u'name': u'timezone', u'required': True, u'related': [], u'length': 255, u'type': u'string', u'description': u'Specifies a timezone for this command. For more information on the timezone parameter, see Time Zone Format.'}, {u'name': u'maxsnaps', u'required': True, u'related': [], u'length': 255, u'type': u'integer', u'description': u'maximum number of snapshots to retain'}, {u'name': u'fordisplay', u'required': False, u'related': [], u'length': 255, u'type': u'boolean', u'description': u'an optional field, whether to the display the policy to the end user or not'}, {u'name': u'volumeid', u'required': True, u'related': [u'uploadVolume', u'createVolume', u'createVolume', u'attachVolume', u'updateVolume', u'migrateVolume', u'resizeVolume', u'uploadVolume', u'detachVolume', u'listVolumes'], u'length': 255, u'type': u'uuid', u'description': u'the ID of the disk volume'}], u'requiredparams': [u'schedule', u'intervaltype', u'timezone', u'maxsnaps', u'volumeid'], u'description': u'Creates a snapshot policy for the account.'}, u'diskoffering': {u'name': u'createDiskOffering', u'related': [], u'isasync': False, u'params': [{u'name': u'customized', u'required': False, u'related': [], u'length': 255, u'type': u'boolean', u'description': u'whether disk offering size is custom or not'}, {u'name': u'displayoffering', u'required': False, u'related': [], u'length': 255, u'type': u'boolean', u'description': u'an optional field, whether to display the offering to the end user or not.'}, {u'name': u'byteswriterate', u'required': False, u'related': [], u'length': 255, u'type': u'long', u'description': u'bytes write rate of the disk offering'}, {u'name': u'hypervisorsnapshotreserve', u'required': False, u'related': [], u'length': 255, u'type': u'integer', u'description': u'Hypervisor snapshot reserve space as a percent of a volume (for managed storage using Xen or VMware)'}, {u'name': u'tags', u'required': False, u'related': [], u'length': 4096, u'type': u'string', u'description': u'tags for the disk offering'}, {u'name': u'maxiops', u'required': False, u'related': [], u'length': 255, u'type': u'long', u'description': u'max iops of the disk offering'}, {u'name': u'storagetype', u'required': False, u'related': [], u'length': 255, u'type': u'string', u'description': u'the storage type of the disk offering. Values are local and shared.'}, {u'name': u'customizediops', u'required': False, u'related': [], u'length': 255, u'type': u'boolean', u'description': u'whether disk offering iops is custom or not'}, {u'name': u'disksize', u'required': False, u'related': [], u'length': 255, u'type': u'long', u'description': u'size of the disk offering in GB'}, {u'name': u'name', u'required': True, u'related': [], u'length': 255, u'type': u'string', u'description': u'name of the disk offering'}, {u'name': u'miniops', u'required': False, u'related': [], u'length': 255, u'type': u'long', u'description': u'min iops of the disk offering'}, {u'name': u'bytesreadrate', u'required': False, u'related': [], u'length': 255, u'type': u'long', u'description': u'bytes read rate of the disk offering'}, {u'name': u'displaytext', u'required': True, u'related': [], u'length': 4096, u'type': u'string', u'description': u'alternate display text of the disk offering'}, {u'name': u'iopswriterate', u'required': False, u'related': [], u'length': 255, u'type': u'long', u'description': u'io requests write rate of the disk offering'}, {u'name': u'domainid', u'required': False, u'related': [], u'length': 255, u'type': u'uuid', u'description': u'the ID of the containing domain, null for public offerings'}, {u'name': u'iopsreadrate', u'required': False, u'related': [], u'length': 255, u'type': u'long', u'description': u'io requests read rate of the disk offering'}], u'requiredparams': [u'name', u'displaytext'], u'description': u'Creates a disk offering.'}, u'securitygroup': {u'name': u'createSecurityGroup', u'related': [u'listSecurityGroups'], u'isasync': False, u'params': [{u'name': u'account', u'required': False, u'related': [], u'length': 255, u'type': u'string', u'description': u'an optional account for the security group. Must be used with domainId.'}, {u'name': u'name', u'required': True, u'related': [], u'length': 255, u'type': u'string', u'description': u'name of the security group'}, {u'name': u'projectid', u'required': False, u'related': [u'activateProject', u'updateProject', u'listProjectAccounts', u'createProject'], u'length': 255, u'type': u'uuid', u'description': u'Create security group for project'}, {u'name': u'domainid', u'required': False, u'related': [u'listDomains', u'updateDomain', u'createDomain', u'listDomainChildren'], u'length': 255, u'type': u'uuid', u'description': u'an optional domainId for the security group. If the account parameter is used, domainId must also be used.'}, {u'name': u'description', u'required': False, u'related': [], u'length': 255, u'type': u'string', u'description': u'the description of the security group'}], u'requiredparams': [u'name'], u'description': u'Creates a security group'}, u'portforwardingrule': {u'name': u'createPortForwardingRule', u'related': [u'listIpForwardingRules'], u'isasync': True, u'params': [{u'name': u'protocol', u'required': True, u'related': [], u'length': 255, u'type': u'string', u'description': u'the protocol for the port fowarding rule. Valid values are TCP or UDP.'}, {u'name': u'vmguestip', u'required': False, u'related': [], u'length': 255, u'type': u'string', u'description': u'VM guest nic Secondary ip address for the port forwarding rule'}, {u'name': u'openfirewall', u'required': False, u'related': [], u'length': 255, u'type': u'boolean', u'description': u'if true, firewall rule for source/end pubic port is automatically created; if false - firewall rule has to be created explicitely. If not specified 1) defaulted to false when PF rule is being created for VPC guest network 2) in all other cases defaulted to true'}, {u'name': u'privateport', u'required': True, u'related': [], u'length': 255, u'type': u'integer', u'description': u"the starting port of port forwarding rule's private port range"}, {u'name': u'networkid', u'required': False, u'related': [u'updateNetwork', u'updateNetwork', u'listNetscalerLoadBalancerNetworks', u'listPaloAltoFirewallNetworks', u'listNetworks', u'createNetwork'], u'length': 255, u'type': u'uuid', u'description': u'The network of the vm the Port Forwarding rule will be created for. Required when public Ip address is not associated with any Guest network yet (VPC case)'}, {u'name': u'virtualmachineid', u'required': True, u'related': [u'updateVirtualMachine', u'removeNicFromVirtualMachine', u'assignVirtualMachine', u'detachIso', u'updateDefaultNicForVirtualMachine', u'updateDefaultNicForVirtualMachine', u'revertToVMSnapshot', u'startVirtualMachine', u'resetPasswordForVirtualMachine', u'resetPasswordForVirtualMachine', u'updateVMAffinityGroup', u'stopVirtualMachine', u'listVirtualMachines', u'migrateVirtualMachineWithVolume', u'destroyVirtualMachine', u'attachIso', u'rebootVirtualMachine', u'startVirtualMachine', u'listVirtualMachines', u'changeServiceForVirtualMachine', u'updateVMAffinityGroup', u'removeNicFromVirtualMachine', u'deployVirtualMachine', u'revertToVMSnapshot', u'addNicToVirtualMachine', u'restoreVirtualMachine', u'restoreVirtualMachine', u'stopVirtualMachine', u'changeServiceForVirtualMachine', u'destroyVirtualMachine', u'migrateVirtualMachine', u'updateVirtualMachine', u'detachIso', u'resetSSHKeyForVirtualMachine', u'attachIso', u'rebootVirtualMachine'], u'length': 255, u'type': u'uuid', u'description': u'the ID of the virtual machine for the port forwarding rule'}, {u'name': u'ipaddressid', u'required': True, u'related': [u'associateIpAddress', u'listPublicIpAddresses', u'restartNetwork', u'associateIpAddress'], u'length': 255, u'type': u'uuid', u'description': u'the IP address id of the port forwarding rule'}, {u'name': u'publicendport', u'required': False, u'related': [], u'length': 255, u'type': u'integer', u'description': u"the ending port of port forwarding rule's private port range"}, {u'name': u'publicport', u'required': True, u'related': [], u'length': 255, u'type': u'integer', u'description': u"the starting port of port forwarding rule's public port range"}, {u'name': u'cidrlist', u'required': False, u'related': [], u'length': 255, u'type': u'list', u'description': u'the cidr list to forward traffic from'}, {u'name': u'privateendport', u'required': False, u'related': [], u'length': 255, u'type': u'integer', u'description': u"the ending port of port forwarding rule's private port range"}, {u'name': u'fordisplay', u'required': False, u'related': [], u'length': 255, u'type': u'boolean', u'description': u'an optional field, whether to the display the rule to the end user or not'}], u'requiredparams': [u'protocol', u'privateport', u'virtualmachineid', u'ipaddressid', u'publicport'], u'description': u'Creates a port forwarding rule'}, u'pod': {u'name': u'createPod', u'related': [u'updatePod'], u'isasync': False, u'params': [{u'name': u'startip', u'required': True, u'related': [], u'length': 255, u'type': u'string', u'description': u'the starting IP address for the Pod'}, {u'name': u'endip', u'required': False, u'related': [], u'length': 255, u'type': u'string', u'description': u'the ending IP address for the Pod'}, {u'name': u'zoneid', u'required': True, u'related': [u'listZones', u'listZones'], u'length': 255, u'type': u'uuid', u'description': u'the Zone ID in which the Pod will be created'}, {u'name': u'name', u'required': True, u'related': [], u'length': 255, u'type': u'string', u'description': u'the name of the Pod'}, {u'name': u'allocationstate', u'required': False, u'related': [], u'length': 255, u'type': u'string', u'description': u'Allocation state of this Pod for allocation of new resources'}, {u'name': u'gateway', u'required': True, u'related': [], u'length': 255, u'type': u'string', u'description': u'the gateway for the Pod'}, {u'name': u'netmask', u'required': True, u'related': [], u'length': 255, u'type': u'string', u'description': u'the netmask for the Pod'}], u'requiredparams': [u'startip', u'zoneid', u'name', u'gateway', u'netmask'], u'description': u'Creates a new Pod.'}, u'ipforwardingrule': {u'name': u'createIpForwardingRule', u'related': [u'listPortForwardingRules', u'createPortForwardingRule', u'listIpForwardingRules', u'updatePortForwardingRule'], u'isasync': True, u'params': [{u'name': u'openfirewall', u'required': False, u'related': [], u'length': 255, u'type': u'boolean', u'description': u'if true, firewall rule for source/end pubic port is automatically created; if false - firewall rule has to be created explicitely. Has value true by default'}, {u'name': u'endport', u'required': False, u'related': [], u'length': 255, u'type': u'integer', u'description': u'the end port for the rule'}, {u'name': u'cidrlist', u'required': False, u'related': [], u'length': 255, u'type': u'list', u'description': u'the cidr list to forward traffic from'}, {u'name': u'startport', u'required': True, u'related': [], u'length': 255, u'type': u'integer', u'description': u'the start port for the rule'}, {u'name': u'ipaddressid', u'required': True, u'related': [u'associateIpAddress', u'updateIpAddress', u'listPublicIpAddresses', u'restartNetwork', u'associateIpAddress'], u'length': 255, u'type': u'uuid', u'description': u'the public IP address id of the forwarding rule, already associated via associateIp'}, {u'name': u'protocol', u'required': True, u'related': [], u'length': 255, u'type': u'string', u'description': u'the protocol for the rule. Valid values are TCP or UDP.'}], u'requiredparams': [u'startport', u'ipaddressid', u'protocol'], u'description': u'Creates an ip forwarding rule'}, u'secondarystagingstore': {u'name': u'createSecondaryStagingStore', u'related': [u'listSwifts'], u'isasync': False, u'params': [{u'name': u'provider', u'required': False, u'related': [], u'length': 255, u'type': u'string', u'description': u'the staging store provider name'}, {u'name': u'url', u'required': True, u'related': [], u'length': 255, u'type': u'string', u'description': u'the URL for the staging store'}, {u'name': u'details', u'required': False, u'related': [], u'length': 255, u'type': u'map', u'description': u'the details for the staging store'}, {u'name': u'zoneid', u'required': False, u'related': [u'listZones', u'updateZone', u'createZone', u'listZones'], u'length': 255, u'type': u'uuid', u'description': u'the Zone ID for the staging store'}, {u'name': u'scope', u'required': False, u'related': [], u'length': 255, u'type': u'string', u'description': u'the scope of the staging store: zone only for now'}], u'requiredparams': [u'url'], u'description': u'create secondary staging store.'}, u'lbstickinesspolicy': {u'name': u'createLBStickinessPolicy', u'related': [], u'isasync': True, u'params': [{u'name': u'lbruleid', u'required': True, u'related': [u'listIpForwardingRules'], u'length': 255, u'type': u'uuid', u'description': u'the ID of the load balancer rule'}, {u'name': u'description', u'required': False, u'related': [], u'length': 255, u'type': u'string', u'description': u'the description of the LB Stickiness policy'}, {u'name': u'param', u'required': False, u'related': [], u'length': 255, u'type': u'map', u'description': u'param list. Example: param[0].name=cookiename¶m[0].value=LBCookie '}, {u'name': u'name', u'required': True, u'related': [], u'length': 255, u'type': u'string', u'description': u'name of the LB Stickiness policy'}, {u'name': u'methodname', u'required': True, u'related': [], u'length': 255, u'type': u'string', u'description': u'name of the LB Stickiness policy method, possible values can be obtained from ListNetworks API '}, {u'name': u'fordisplay', u'required': False, u'related': [], u'length': 255, u'type': u'boolean', u'description': u'an optional field, whether to the display the rule to the end user or not'}], u'requiredparams': [u'lbruleid', u'name', u'methodname'], u'description': u'Creates a Load Balancer stickiness policy '}, u'vpcoffering': {u'name': u'createVPCOffering', u'related': [u'listVPCOfferings'], u'isasync': True, u'params': [{u'name': u'displaytext', u'required': True, u'related': [], u'length': 255, u'type': u'string', u'description': u'the display text of the vpc offering'}, {u'name': u'supportedservices', u'required': True, u'related': [], u'length': 255, u'type': u'list', u'description': u'services supported by the vpc offering'}, {u'name': u'serviceofferingid', u'required': False, u'related': [u'createServiceOffering', u'listServiceOfferings'], u'length': 255, u'type': u'uuid', u'description': u'the ID of the service offering for the VPC router appliance'}, {u'name': u'servicecapabilitylist', u'required': False, u'related': [], u'length': 255, u'type': u'map', u'description': u'desired service capabilities as part of vpc offering'}, {u'name': u'name', u'required': True, u'related': [], u'length': 255, u'type': u'string', u'description': u'the name of the vpc offering'}, {u'name': u'serviceproviderlist', u'required': False, u'related': [], u'length': 255, u'type': u'map', u'description': u'provider to service mapping. If not specified, the provider for the service will be mapped to the default provider on the physical network'}], u'requiredparams': [u'displaytext', u'supportedservices', u'name'], u'description': u'Creates VPC offering'}, u'network': {u'name': u'createNetwork', u'related': [u'updateNetwork', u'listNetworks', u'updateNetwork', u'listNetscalerLoadBalancerNetworks', u'listPaloAltoFirewallNetworks', u'listNetworks', u'createNetwork'], u'isasync': False, u'params': [{u'name': u'account', u'required': False, u'related': [], u'length': 255, u'type': u'string', u'description': u'account who will own the network'}, {u'name': u'vlan', u'required': False, u'related': [], u'length': 255, u'type': u'string', u'description': u'the ID or VID of the network'}, {u'name': u'vpcid', u'required': False, u'related': [u'listVPCs', u'updateVPC', u'updateVPC', u'restartVPC', u'createVPC', u'createVPC', u'listVPCs'], u'length': 255, u'type': u'uuid', u'description': u'the VPC network belongs to'}, {u'name': u'subdomainaccess', u'required': False, u'related': [], u'length': 255, u'type': u'boolean', u'description': u'Defines whether to allow subdomains to use networks dedicated to their parent domain(s). Should be used with aclType=Domain, defaulted to allow.subdomain.network.access global config if not specified'}, {u'name': u'netmask', u'required': False, u'related': [], u'length': 255, u'type': u'string', u'description': u'the netmask of the network. Required for Shared networks and Isolated networks when it belongs to VPC'}, {u'name': u'startip', u'required': False, u'related': [], u'length': 255, u'type': u'string', u'description': u'the beginning IP address in the network IP range'}, {u'name': u'acltype', u'required': False, u'related': [], u'length': 255, u'type': u'string', u'description': u'Access control type; supported values are account and domain. In 3.0 all shared networks should have aclType=Domain, and all Isolated networks - Account. Account means that only the account owner can use the network, domain - all accouns in the domain can use the network'}, {u'name': u'endip', u'required': False, u'related': [], u'length': 255, u'type': u'string', u'description': u'the ending IP address in the network IP range. If not specified, will be defaulted to startIP'}, {u'name': u'endipv6', u'required': False, u'related': [], u'length': 255, u'type': u'string', u'description': u'the ending IPv6 address in the IPv6 network range'}, {u'name': u'startipv6', u'required': False, u'related': [], u'length': 255, u'type': u'string', u'description': u'the beginning IPv6 address in the IPv6 network range'}, {u'name': u'gateway', u'required': False, u'related': [], u'length': 255, u'type': u'string', u'description': u'the gateway of the network. Required for Shared networks and Isolated networks when it belongs to VPC'}, {u'name': u'ip6gateway', u'required': False, u'related': [], u'length': 255, u'type': u'string', u'description': u'the gateway of the IPv6 network. Required for Shared networks and Isolated networks when it belongs to VPC'}, {u'name': u'ip6cidr', u'required': False, u'related': [], u'length': 255, u'type': u'string', u'description': u'the CIDR of IPv6 network, must be at least /64'}, {u'name': u'name', u'required': True, u'related': [], u'length': 255, u'type': u'string', u'description': u'the name of the network'}, {u'name': u'displaynetwork', u'required': False, u'related': [], u'length': 255, u'type': u'boolean', u'description': u'an optional field, whether to the display the network to the end user or not.'}, {u'name': u'isolatedpvlan', u'required': False, u'related': [], u'length': 255, u'type': u'string', u'description': u'the isolated private vlan for this network'}, {u'name': u'domainid', u'required': False, u'related': [u'listDomains', u'updateDomain', u'createDomain', u'listDomainChildren'], u'length': 255, u'type': u'uuid', u'description': u'domain ID of the account owning a network'}, {u'name': u'physicalnetworkid', u'required': False, u'related': [u'listPhysicalNetworks', u'createPhysicalNetwork'], u'length': 255, u'type': u'uuid', u'description': u'the Physical Network ID the network belongs to'}, {u'name': u'displaytext', u'required': True, u'related': [], u'length': 255, u'type': u'string', u'description': u'the display text of the network'}, {u'name': u'projectid', u'required': False, u'related': [u'listProjects', u'activateProject', u'updateProject', u'listProjectAccounts', u'createProject'], u'length': 255, u'type': u'uuid', u'description': u'an optional project for the ssh key'}, {u'name': u'networkdomain', u'required': False, u'related': [], u'length': 255, u'type': u'string', u'description': u'network domain'}, {u'name': u'zoneid', u'required': True, u'related': [u'listZones', u'updateZone', u'createZone', u'listZones'], u'length': 255, u'type': u'uuid', u'description': u'the Zone ID for the network'}, {u'name': u'networkofferingid', u'required': True, u'related': [u'createNetworkOffering', u'updateNetworkOffering'], u'length': 255, u'type': u'uuid', u'description': u'the network offering id'}, {u'name': u'aclid', u'required': False, u'related': [u'createNetworkACLList', u'listNetworkACLLists'], u'length': 255, u'type': u'uuid', u'description': u'Network ACL Id associated for the network'}], u'requiredparams': [u'name', u'displaytext', u'zoneid', u'networkofferingid'], u'description': u'Creates a network'}, u'zone': {u'name': u'createZone', u'related': [u'listZones', u'listZones'], u'isasync': False, u'params': [{u'name': u'internaldns2', u'required': False, u'related': [], u'length': 255, u'type': u'string', u'description': u'the second internal DNS for the Zone'}, {u'name': u'domain', u'required': False, u'related': [], u'length': 255, u'type': u'string', u'description': u'Network domain name for the networks in the zone'}, {u'name': u'ip6dns1', u'required': False, u'related': [], u'length': 255, u'type': u'string', u'description': u'the first DNS for IPv6 network in the Zone'}, {u'name': u'networktype', u'required': True, u'related': [], u'length': 255, u'type': u'string', u'description': u'network type of the zone, can be Basic or Advanced'}, {u'name': u'allocationstate', u'required': False, u'related': [], u'length': 255, u'type': u'string', u'description': u'Allocation state of this Zone for allocation of new resources'}, {u'name': u'localstorageenabled', u'required': False, u'related': [], u'length': 255, u'type': u'boolean', u'description': u'true if local storage offering enabled, false otherwise'}, {u'name': u'dns1', u'required': True, u'related': [], u'length': 255, u'type': u'string', u'description': u'the first DNS for the Zone'}, {u'name': u'securitygroupenabled', u'required': False, u'related': [], u'length': 255, u'type': u'boolean', u'description': u'true if network is security group enabled, false otherwise'}, {u'name': u'dns2', u'required': False, u'related': [], u'length': 255, u'type': u'string', u'description': u'the second DNS for the Zone'}, {u'name': u'ip6dns2', u'required': False, u'related': [], u'length': 255, u'type': u'string', u'description': u'the second DNS for IPv6 network in the Zone'}, {u'name': u'guestcidraddress', u'required': False, u'related': [], u'length': 255, u'type': u'string', u'description': u'the guest CIDR address for the Zone'}, {u'name': u'internaldns1', u'required': True, u'related': [], u'length': 255, u'type': u'string', u'description': u'the first internal DNS for the Zone'}, {u'name': u'domainid', u'required': False, u'related': [u'updateDomain', u'listDomainChildren'], u'length': 255, u'type': u'uuid', u'description': u'the ID of the containing domain, null for public zones'}, {u'name': u'name', u'required': True, u'related': [], u'length': 255, u'type': u'string', u'description': u'the name of the Zone'}], u'requiredparams': [u'networktype', u'dns1', u'internaldns1', u'name'], u'description': u'Creates a Zone.'}, u'remoteaccessvpn': {u'name': u'createRemoteAccessVpn', u'related': [], u'isasync': True, u'params': [{u'name': u'account', u'required': False, u'related': [], u'length': 255, u'type': u'string', u'description': u'an optional account for the VPN. Must be used with domainId.'}, {u'name': u'domainid', u'required': False, u'related': [u'updateDomain', u'listDomainChildren'], u'length': 255, u'type': u'uuid', u'description': u'an optional domainId for the VPN. If the account parameter is used, domainId must also be used.'}, {u'name': u'openfirewall', u'required': False, u'related': [], u'length': 255, u'type': u'boolean', u'description': u'if true, firewall rule for source/end pubic port is automatically created; if false - firewall rule has to be created explicitely. Has value true by default'}, {u'name': u'iprange', u'required': False, u'related': [], u'length': 255, u'type': u'string', u'description': u'the range of ip addresses to allocate to vpn clients. The first ip in the range will be taken by the vpn server'}, {u'name': u'publicipid', u'required': True, u'related': [u'associateIpAddress', u'listPublicIpAddresses', u'associateIpAddress'], u'length': 255, u'type': u'uuid', u'description': u'public ip address id of the vpn server'}, {u'name': u'fordisplay', u'required': False, u'related': [], u'length': 255, u'type': u'boolean', u'description': u'an optional field, whether to the display the vpn to the end user or not'}], u'requiredparams': [u'publicipid'], u'description': u'Creates a l2tp/ipsec remote access vpn'}, u'instancegroup': {u'name': u'createInstanceGroup', u'related': [u'updateInstanceGroup'], u'isasync': False, u'params': [{u'name': u'projectid', u'required': False, u'related': [u'updateProject', u'createProject'], u'length': 255, u'type': u'uuid', u'description': u'The project of the instance group'}, {u'name': u'name', u'required': True, u'related': [], u'length': 255, u'type': u'string', u'description': u'the name of the instance group'}, {u'name': u'domainid', u'required': False, u'related': [u'listDomains', u'updateDomain', u'createDomain', u'listDomainChildren'], u'length': 255, u'type': u'uuid', u'description': u'the domain ID of account owning the instance group'}, {u'name': u'account', u'required': False, u'related': [], u'length': 255, u'type': u'string', u'description': u'the account of the instance group. The account parameter must be used with the domainId parameter.'}], u'requiredparams': [u'name'], u'description': u'Creates a vm group'}, u'autoscalepolicy': {u'name': u'createAutoScalePolicy', u'related': [], u'isasync': True, u'params': [{u'name': u'duration', u'required': True, u'related': [], u'length': 255, u'type': u'integer', u'description': u'the duration for which the conditions have to be true before action is taken'}, {u'name': u'quiettime', u'required': False, u'related': [], u'length': 255, u'type': u'integer', u'description': u'the cool down period for which the policy should not be evaluated after the action has been taken'}, {u'name': u'conditionids', u'required': True, u'related': [], u'length': 255, u'type': u'list', u'description': u'the list of IDs of the conditions that are being evaluated on every interval'}, {u'name': u'action', u'required': True, u'related': [], u'length': 255, u'type': u'string', u'description': u'the action to be executed if all the conditions evaluate to true for the specified duration.'}], u'requiredparams': [u'duration', u'conditionids', u'action'], u'description': u'Creates an autoscale policy for a provision or deprovision action, the action is taken when the all the conditions evaluates to true for the specified duration. The policy is in effect once it is attached to a autscale vm group.'}, u'globalloadbalancerrule': {u'name': u'createGlobalLoadBalancerRule', u'related': [u'listGlobalLoadBalancerRules', u'updateGlobalLoadBalancerRule'], u'isasync': True, u'params': [{u'name': u'account', u'required': False, u'related': [], u'length': 255, u'type': u'string', u'description': u'the account associated with the global load balancer. Must be used with the domainId parameter.'}, {u'name': u'name', u'required': True, u'related': [], u'length': 255, u'type': u'string', u'description': u'name of the load balancer rule'}, {u'name': u'gslblbmethod', u'required': False, u'related': [], u'length': 255, u'type': u'string', u'description': u"load balancer algorithm (roundrobin, leastconn, proximity) that method is used to distribute traffic across the zones participating in global server load balancing, if not specified defaults to 'round robin'"}, {u'name': u'gslbdomainname', u'required': True, u'related': [], u'length': 255, u'type': u'string', u'description': u'domain name for the GSLB service.'}, {u'name': u'regionid', u'required': True, u'related': [u'listRegions', u'addRegion'], u'length': 255, u'type': u'integer', u'description': u'region where the global load balancer is going to be created.'}, {u'name': u'gslbservicetype', u'required': True, u'related': [], u'length': 255, u'type': u'string', u'description': u'GSLB service type (tcp, udp, http)'}, {u'name': u'description', u'required': False, u'related': [], u'length': 4096, u'type': u'string', u'description': u'the description of the load balancer rule'}, {u'name': u'gslbstickysessionmethodname', u'required': False, u'related': [], u'length': 255, u'type': u'string', u'description': u'session sticky method (sourceip) if not specified defaults to sourceip'}, {u'name': u'domainid', u'required': False, u'related': [u'listDomains', u'updateDomain', u'createDomain', u'listDomainChildren'], u'length': 255, u'type': u'uuid', u'description': u'the domain ID associated with the load balancer'}], u'requiredparams': [u'name', u'gslbdomainname', u'regionid', u'gslbservicetype'], u'description': u'Creates a global load balancer rule'}, u'portableiprange': {u'name': u'createPortableIpRange', u'related': [u'listPortableIpRanges'], u'isasync': True, u'params': [{u'name': u'startip', u'required': True, u'related': [], u'length': 255, u'type': u'string', u'description': u'the beginning IP address in the portable IP range'}, {u'name': u'netmask', u'required': True, u'related': [], u'length': 255, u'type': u'string', u'description': u'the netmask of the portable IP range'}, {u'name': u'regionid', u'required': True, u'related': [u'listRegions', u'addRegion', u'updateRegion'], u'length': 255, u'type': u'integer', u'description': u'Id of the Region'}, {u'name': u'vlan', u'required': False, u'related': [], u'length': 255, u'type': u'string', u'description': u'VLAN id, if not specified defaulted to untagged'}, {u'name': u'endip', u'required': True, u'related': [], u'length': 255, u'type': u'string', u'description': u'the ending IP address in the portable IP range'}, {u'name': u'gateway', u'required': True, u'related': [], u'length': 255, u'type': u'string', u'description': u'the gateway for the portable IP range'}], u'requiredparams': [u'startip', u'netmask', u'regionid', u'endip', u'gateway'], u'description': u"adds a range of portable public IP's to a region"}, u'serviceoffering': {u'name': u'createServiceOffering', u'related': [u'listServiceOfferings'], u'isasync': False, u'params': [{u'name': u'deploymentplanner', u'required': False, u'related': [], u'length': 255, u'type': u'string', u'description': u'The deployment planner heuristics used to deploy a VM of this offering. If null, value of global config vm.deployment.planner is used'}, {u'name': u'tags', u'required': False, u'related': [], u'length': 255, u'type': u'string', u'description': u'the tags for this service offering.'}, {u'name': u'networkrate', u'required': False, u'related': [], u'length': 255, u'type': u'integer', u'description': u'data transfer rate in megabits per second allowed. Supported only for non-System offering and system offerings having "domainrouter" systemvmtype'}, {u'name': u'iopsreadrate', u'required': False, u'related': [], u'length': 255, u'type': u'long', u'description': u'io requests read rate of the disk offering'}, {u'name': u'limitcpuuse', u'required': False, u'related': [], u'length': 255, u'type': u'boolean', u'description': u'restrict the CPU usage to committed service offering'}, {u'name': u'cpunumber', u'required': False, u'related': [], u'length': 255, u'type': u'integer', u'description': u'the CPU number of the service offering'}, {u'name': u'domainid', u'required': False, u'related': [u'updateDomain', u'listDomainChildren'], u'length': 255, u'type': u'uuid', u'description': u'the ID of the containing domain, null for public offerings'}, {u'name': u'cpuspeed', u'required': False, u'related': [], u'length': 255, u'type': u'integer', u'description': u'the CPU speed of the service offering in MHz.'}, {u'name': u'bytesreadrate', u'required': False, u'related': [], u'length': 255, u'type': u'long', u'description': u'bytes read rate of the disk offering'}, {u'name': u'serviceofferingdetails', u'required': False, u'related': [], u'length': 255, u'type': u'map', u'description': u'details for planner, used to store specific parameters'}, {u'name': u'memory', u'required': False, u'related': [], u'length': 255, u'type': u'integer', u'description': u'the total memory of the service offering in MB'}, {u'name': u'hypervisorsnapshotreserve', u'required': False, u'related': [], u'length': 255, u'type': u'integer', u'description': u'Hypervisor snapshot reserve space as a percent of a volume (for managed storage using Xen or VMware)'}, {u'name': u'displaytext', u'required': True, u'related': [], u'length': 255, u'type': u'string', u'description': u'the display text of the service offering'}, {u'name': u'iopswriterate', u'required': False, u'related': [], u'length': 255, u'type': u'long', u'description': u'io requests write rate of the disk offering'}, {u'name': u'systemvmtype', u'required': False, u'related': [], u'length': 255, u'type': u'string', u'description': u'the system VM type. Possible types are "domainrouter", "consoleproxy" and "secondarystoragevm".'}, {u'name': u'name', u'required': True, u'related': [], u'length': 255, u'type': u'string', u'description': u'the name of the service offering'}, {u'name': u'offerha', u'required': False, u'related': [], u'length': 255, u'type': u'boolean', u'description': u'the HA for the service offering'}, {u'name': u'hosttags', u'required': False, u'related': [], u'length': 255, u'type': u'string', u'description': u'the host tag for this service offering.'}, {u'name': u'issystem', u'required': False, u'related': [], u'length': 255, u'type': u'boolean', u'description': u'is this a system vm offering'}, {u'name': u'byteswriterate', u'required': False, u'related': [], u'length': 255, u'type': u'long', u'description': u'bytes write rate of the disk offering'}, {u'name': u'customizediops', u'required': False, u'related': [], u'length': 255, u'type': u'boolean', u'description': u'whether compute offering iops is custom or not'}, {u'name': u'storagetype', u'required': False, u'related': [], u'length': 255, u'type': u'string', u'description': u'the storage type of the service offering. Values are local and shared.'}, {u'name': u'maxiops', u'required': False, u'related': [], u'length': 255, u'type': u'long', u'description': u'max iops of the compute offering'}, {u'name': u'miniops', u'required': False, u'related': [], u'length': 255, u'type': u'long', u'description': u'min iops of the compute offering'}, {u'name': u'isvolatile', u'required': False, u'related': [], u'length': 255, u'type': u'boolean', u'description': u'true if the virtual machine needs to be volatile so that on every reboot of VM, original root disk is dettached then destroyed and a fresh root disk is created and attached to VM'}], u'requiredparams': [u'displaytext', u'name'], u'description': u'Creates a service offering.'}, u'template': {u'name': u'createTemplate', u'related': [u'registerIso', u'registerIso', u'prepareTemplate', u'updateTemplate', u'registerTemplate', u'registerTemplate', u'copyIso', u'listTemplates', u'createTemplate', u'listIsos', u'copyTemplate', u'copyIso', u'listIsos', u'updateIso', u'listTemplates'], u'isasync': True, u'params': [{u'name': u'url', u'required': False, u'related': [], u'length': 255, u'type': u'string', u'description': u'Optional, only for baremetal hypervisor. The directory name where template stored on CIFS server'}, {u'name': u'templatetag', u'required': False, u'related': [], u'length': 255, u'type': u'string', u'description': u'the tag for this template.'}, {u'name': u'snapshotid', u'required': False, u'related': [u'revertSnapshot', u'listSnapshots', u'createSnapshot'], u'length': 255, u'type': u'uuid', u'description': u'the ID of the snapshot the template is being created from. Either this parameter, or volumeId has to be passed in'}, {u'name': u'name', u'required': True, u'related': [], u'length': 255, u'type': u'string', u'description': u'the name of the template'}, {u'name': u'isfeatured', u'required': False, u'related': [], u'length': 255, u'type': u'boolean', u'description': u'true if this template is a featured template, false otherwise'}, {u'name': u'volumeid', u'required': False, u'related': [u'uploadVolume', u'attachVolume', u'createVolume', u'detachVolume', u'createVolume', u'updateVolume', u'migrateVolume', u'resizeVolume', u'attachVolume', u'updateVolume', u'migrateVolume', u'resizeVolume', u'uploadVolume', u'detachVolume', u'listVolumes'], u'length': 255, u'type': u'uuid', u'description': u'the ID of the disk volume the template is being created from. Either this parameter, or snapshotId has to be passed in'}, {u'name': u'ostypeid', u'required': True, u'related': [u'addGuestOs', u'listOsTypes', u'updateGuestOs'], u'length': 255, u'type': u'uuid', u'description': u'the ID of the OS Type that best represents the OS of this template.'}, {u'name': u'passwordenabled', u'required': False, u'related': [], u'length': 255, u'type': u'boolean', u'description': u'true if the template supports the password reset feature; default is false'}, {u'name': u'details', u'required': False, u'related': [], u'length': 255, u'type': u'map', u'description': u'Template details in key/value pairs.'}, {u'name': u'ispublic', u'required': False, u'related': [], u'length': 255, u'type': u'boolean', u'description': u'true if this template is a public template, false otherwise'}, {u'name': u'bits', u'required': False, u'related': [], u'length': 255, u'type': u'integer', u'description': u'32 or 64 bit'}, {u'name': u'isdynamicallyscalable', u'required': False, u'related': [], u'length': 255, u'type': u'boolean', u'description': u'true if template contains XS/VMWare tools inorder to support dynamic scaling of VM cpu/memory'}, {u'name': u'displaytext', u'required': True, u'related': [], u'length': 4096, u'type': u'string', u'description': u'the display text of the template. This is usually used for display purposes.'}, {u'name': u'requireshvm', u'required': False, u'related': [], u'length': 255, u'type': u'boolean', u'description': u'true if the template requres HVM, false otherwise'}, {u'name': u'virtualmachineid', u'required': False, u'related': [u'updateVirtualMachine', u'removeNicFromVirtualMachine', u'assignVirtualMachine', u'detachIso', u'updateDefaultNicForVirtualMachine', u'updateDefaultNicForVirtualMachine', u'revertToVMSnapshot', u'recoverVirtualMachine', u'startVirtualMachine', u'resetPasswordForVirtualMachine', u'resetPasswordForVirtualMachine', u'updateVMAffinityGroup', u'stopVirtualMachine', u'listVirtualMachines', u'deployVirtualMachine', u'migrateVirtualMachineWithVolume', u'destroyVirtualMachine', u'attachIso', u'rebootVirtualMachine', u'startVirtualMachine', u'listVirtualMachines', u'changeServiceForVirtualMachine', u'updateVMAffinityGroup', u'removeNicFromVirtualMachine', u'deployVirtualMachine', u'revertToVMSnapshot', u'addNicToVirtualMachine', u'restoreVirtualMachine', u'restoreVirtualMachine', u'stopVirtualMachine', u'changeServiceForVirtualMachine', u'destroyVirtualMachine', u'migrateVirtualMachine', u'updateVirtualMachine', u'detachIso', u'resetSSHKeyForVirtualMachine', u'resetSSHKeyForVirtualMachine', u'attachIso', u'rebootVirtualMachine'], u'length': 255, u'type': u'uuid', u'description': u'Optional, VM ID. If this presents, it is going to create a baremetal template for VM this ID refers to. This is only for VM whose hypervisor type is BareMetal'}], u'requiredparams': [u'name', u'ostypeid', u'displaytext'], u'description': u'Creates a template of a virtual machine. The virtual machine must be in a STOPPED state. A template created from this command is automatically designated as a private template visible to the account that created it.'}, u'vpngateway': {u'name': u'createVpnGateway', u'related': [u'updateVpnGateway'], u'isasync': True, u'params': [{u'name': u'fordisplay', u'required': False, u'related': [], u'length': 255, u'type': u'boolean', u'description': u'an optional field, whether to the display the vpn to the end user or not'}, {u'name': u'vpcid', u'required': True, u'related': [u'listVPCs', u'updateVPC', u'restartVPC', u'createVPC', u'createVPC', u'listVPCs'], u'length': 255, u'type': u'uuid', u'description': u'public ip address id of the vpn gateway'}], u'requiredparams': [u'vpcid'], u'description': u'Creates site to site vpn local gateway'}, u'networkacllist': {u'name': u'createNetworkACLList', u'related': [], u'isasync': True, u'params': [{u'name': u'description', u'required': False, u'related': [], u'length': 255, u'type': u'string', u'description': u'Description of the network ACL List'}, {u'name': u'vpcid', u'required': True, u'related': [u'listVPCs', u'updateVPC', u'restartVPC', u'createVPC', u'createVPC', u'listVPCs'], u'length': 255, u'type': u'uuid', u'description': u'Id of the VPC associated with this network ACL List'}, {u'name': u'name', u'required': True, u'related': [], u'length': 255, u'type': u'string', u'description': u'Name of the network ACL List'}, {u'name': u'fordisplay', u'required': False, u'related': [], u'length': 255, u'type': u'boolean', u'description': u'an optional field, whether to the display the list to the end user or not'}], u'requiredparams': [u'vpcid', u'name'], u'description': u'Creates a Network ACL for the given VPC'}, u'autoscalevmgroup': {u'name': u'createAutoScaleVmGroup', u'related': [u'updateAutoScaleVmGroup', u'enableAutoScaleVmGroup', u'disableAutoScaleVmGroup'], u'isasync': True, u'params': [{u'name': u'interval', u'required': False, u'related': [], u'length': 255, u'type': u'integer', u'description': u'the frequency at which the conditions have to be evaluated'}, {u'name': u'minmembers', u'required': True, u'related': [], u'length': 255, u'type': u'integer', u'description': u'the minimum number of members in the vmgroup, the number of instances in the vm group will be equal to or more than this number.'}, {u'name': u'fordisplay', u'required': False, u'related': [], u'length': 255, u'type': u'boolean', u'description': u'an optional field, whether to the display the group to the end user or not'}, {u'name': u'scaleuppolicyids', u'required': True, u'related': [u'createAutoScalePolicy', u'updateAutoScalePolicy'], u'length': 255, u'type': u'list', u'description': u'list of scaleup autoscale policies'}, {u'name': u'vmprofileid', u'required': True, u'related': [u'listAutoScaleVmProfiles'], u'length': 255, u'type': u'uuid', u'description': u'the autoscale profile that contains information about the vms in the vm group.'}, {u'name': u'maxmembers', u'required': True, u'related': [], u'length': 255, u'type': u'integer', u'description': u'the maximum number of members in the vmgroup, The number of instances in the vm group will be equal to or less than this number.'}, {u'name': u'lbruleid', u'required': True, u'related': [u'listIpForwardingRules'], u'length': 255, u'type': u'uuid', u'description': u'the ID of the load balancer rule'}, {u'name': u'scaledownpolicyids', u'required': True, u'related': [u'createAutoScalePolicy', u'updateAutoScalePolicy'], u'length': 255, u'type': u'list', u'description': u'list of scaledown autoscale policies'}], u'requiredparams': [u'minmembers', u'scaleuppolicyids', u'vmprofileid', u'maxmembers', u'lbruleid', u'scaledownpolicyids'], u'description': u'Creates and automatically starts a virtual machine based on a service offering, disk offering, and template.'}, u'vpnconnection': {u'name': u'createVpnConnection', u'related': [u'resetVpnConnection', u'listVpnConnections', u'updateVpnConnection'], u'isasync': True, u'params': [{u'name': u's2svpngatewayid', u'required': True, u'related': [u'createVpnGateway', u'updateVpnGateway', u'listVpnGateways'], u'length': 255, u'type': u'uuid', u'description': u'id of the vpn gateway'}, {u'name': u'fordisplay', u'required': False, u'related': [], u'length': 255, u'type': u'boolean', u'description': u'an optional field, whether to the display the vpn to the end user or not'}, {u'name': u's2scustomergatewayid', u'required': True, u'related': [u'createVpnCustomerGateway', u'updateVpnCustomerGateway', u'listVpnCustomerGateways'], u'length': 255, u'type': u'uuid', u'description': u'id of the customer gateway'}, {u'name': u'passive', u'required': False, u'related': [], u'length': 255, u'type': u'boolean', u'description': u'connection is passive or not'}], u'requiredparams': [u's2svpngatewayid', u's2scustomergatewayid'], u'description': u'Create site to site vpn connection'}, u'networkacl': {u'name': u'createNetworkACL', u'related': [], u'isasync': True, u'params': [{u'name': u'startport', u'required': False, u'related': [], u'length': 255, u'type': u'integer', u'description': u'the starting port of ACL'}, {u'name': u'icmpcode', u'required': False, u'related': [], u'length': 255, u'type': u'integer', u'description': u'error code for this icmp message'}, {u'name': u'icmptype', u'required': False, u'related': [], u'length': 255, u'type': u'integer', u'description': u'type of the icmp message being sent'}, {u'name': u'protocol', u'required': True, u'related': [], u'length': 255, u'type': u'string', u'description': u'the protocol for the ACL rule. Valid values are TCP/UDP/ICMP/ALL or valid protocol number'}, {u'name': u'aclid', u'required': False, u'related': [], u'length': 255, u'type': u'uuid', u'description': u'The network of the vm the ACL will be created for'}, {u'name': u'endport', u'required': False, u'related': [], u'length': 255, u'type': u'integer', u'description': u'the ending port of ACL'}, {u'name': u'networkid', u'required': False, u'related': [u'updateNetwork', u'updateNetwork', u'listNetscalerLoadBalancerNetworks', u'listNetworks', u'createNetwork'], u'length': 255, u'type': u'uuid', u'description': u'The network of the vm the ACL will be created for'}, {u'name': u'fordisplay', u'required': False, u'related': [], u'length': 255, u'type': u'boolean', u'description': u'an optional field, whether to the display the rule to the end user or not'}, {u'name': u'action', u'required': False, u'related': [], u'length': 255, u'type': u'string', u'description': u'scl entry action, allow or deny'}, {u'name': u'number', u'required': False, u'related': [], u'length': 255, u'type': u'integer', u'description': u'The network of the vm the ACL will be created for'}, {u'name': u'traffictype', u'required': False, u'related': [], u'length': 255, u'type': u'string', u'description': u'the traffic type for the ACL,can be Ingress or Egress, defaulted to Ingress if not specified'}, {u'name': u'cidrlist', u'required': False, u'related': [], u'length': 255, u'type': u'list', u'description': u'the cidr list to allow traffic from/to'}], u'requiredparams': [u'protocol'], u'description': u'Creates a ACL rule in the given network (the network has to belong to VPC)'}, u'storagepool': {u'name': u'createStoragePool', u'related': [u'findStoragePoolsForMigration', u'listStoragePools'], u'isasync': False, u'params': [{u'name': u'managed', u'required': False, u'related': [], u'length': 255, u'type': u'boolean', u'description': u'whether the storage should be managed by CloudStack'}, {u'name': u'clusterid', u'required': False, u'related': [], u'length': 255, u'type': u'uuid', u'description': u'the cluster ID for the storage pool'}, {u'name': u'capacityiops', u'required': False, u'related': [], u'length': 255, u'type': u'long', u'description': u'IOPS CloudStack can provision from this storage pool'}, {u'name': u'scope', u'required': False, u'related': [], u'length': 255, u'type': u'string', u'description': u'the scope of the storage: cluster or zone'}, {u'name': u'capacitybytes', u'required': False, u'related': [], u'length': 255, u'type': u'long', u'description': u'bytes CloudStack can provision from this storage pool'}, {u'name': u'zoneid', u'required': True, u'related': [u'listZones', u'listZones'], u'length': 255, u'type': u'uuid', u'description': u'the Zone ID for the storage pool'}, {u'name': u'provider', u'required': False, u'related': [], u'length': 255, u'type': u'string', u'description': u'the storage provider name'}, {u'name': u'name', u'required': True, u'related': [], u'length': 255, u'type': u'string', u'description': u'the name for the storage pool'}, {u'name': u'tags', u'required': False, u'related': [], u'length': 255, u'type': u'string', u'description': u'the tags for the storage pool'}, {u'name': u'podid', u'required': False, u'related': [u'updatePod', u'createPod'], u'length': 255, u'type': u'uuid', u'description': u'the Pod ID for the storage pool'}, {u'name': u'hypervisor', u'required': False, u'related': [], u'length': 255, u'type': u'string', u'description': u'hypervisor type of the hosts in zone that will be attached to this storage pool. KVM, VMware supported as of now.'}, {u'name': u'url', u'required': True, u'related': [], u'length': 255, u'type': u'string', u'description': u'the URL of the storage pool'}, {u'name': u'details', u'required': False, u'related': [], u'length': 255, u'type': u'map', u'description': u'the details for the storage pool'}], u'requiredparams': [u'zoneid', u'name', u'url'], u'description': u'Creates a storage pool.'}, u'vmsnapshot': {u'name': u'createVMSnapshot', u'related': [u'listVMSnapshot'], u'isasync': True, u'params': [{u'name': u'name', u'required': False, u'related': [], u'length': 255, u'type': u'string', u'description': u'The display name of the snapshot'}, {u'name': u'virtualmachineid', u'required': True, u'related': [u'updateVirtualMachine', u'removeNicFromVirtualMachine', u'assignVirtualMachine', u'detachIso', u'updateDefaultNicForVirtualMachine', u'updateDefaultNicForVirtualMachine', u'revertToVMSnapshot', u'recoverVirtualMachine', u'startVirtualMachine', u'resetPasswordForVirtualMachine', u'resetPasswordForVirtualMachine', u'updateVMAffinityGroup', u'stopVirtualMachine', u'listVirtualMachines', u'deployVirtualMachine', u'migrateVirtualMachineWithVolume', u'destroyVirtualMachine', u'attachIso', u'rebootVirtualMachine', u'startVirtualMachine', u'listVirtualMachines', u'changeServiceForVirtualMachine', u'updateVMAffinityGroup', u'removeNicFromVirtualMachine', u'deployVirtualMachine', u'revertToVMSnapshot', u'addNicToVirtualMachine', u'restoreVirtualMachine', u'restoreVirtualMachine', u'stopVirtualMachine', u'changeServiceForVirtualMachine', u'destroyVirtualMachine', u'migrateVirtualMachine', u'updateVirtualMachine', u'detachIso', u'resetSSHKeyForVirtualMachine', u'attachIso', u'rebootVirtualMachine'], u'length': 255, u'type': u'uuid', u'description': u'The ID of the vm'}, {u'name': u'description', u'required': False, u'related': [], u'length': 255, u'type': u'string', u'description': u'The discription of the snapshot'}, {u'name': u'quiescevm', u'required': False, u'related': [], u'length': 255, u'type': u'boolean', u'description': u'quiesce vm if true'}, {u'name': u'snapshotmemory', u'required': False, u'related': [], u'length': 255, u'type': u'boolean', u'description': u'snapshot memory if true'}], u'requiredparams': [u'virtualmachineid'], u'description': u'Creates snapshot for a vm.'}, u'tags': {u'name': u'createTags', u'related': [], u'isasync': True, u'params': [{u'name': u'customer', u'required': False, u'related': [], u'length': 255, u'type': u'string', u'description': u"identifies client specific tag. When the value is not null, the tag can't be used by cloudStack code internally"}, {u'name': u'resourcetype', u'required': True, u'related': [], u'length': 255, u'type': u'string', u'description': u'type of the resource'}, {u'name': u'tags', u'required': True, u'related': [], u'length': 255, u'type': u'map', u'description': u'Map of tags (key/value pairs)'}, {u'name': u'resourceids', u'required': True, u'related': [], u'length': 255, u'type': u'list', u'description': u'list of resources to create the tags for'}], u'requiredparams': [u'resourcetype', u'tags', u'resourceids'], u'description': u'Creates resource tag(s)'}, u'staticroute': {u'name': u'createStaticRoute', u'related': [u'listStaticRoutes'], u'isasync': True, u'params': [{u'name': u'cidr', u'required': True, u'related': [], u'length': 255, u'type': u'string', u'description': u'static route cidr'}, {u'name': u'gatewayid', u'required': True, u'related': [u'createPrivateGateway'], u'length': 255, u'type': u'uuid', u'description': u'the gateway id we are creating static route for'}], u'requiredparams': [u'cidr', u'gatewayid'], u'description': u'Creates a static route'}, u'volume': {u'name': u'createVolume', u'related': [u'uploadVolume', u'createVolume', u'attachVolume', u'updateVolume', u'migrateVolume', u'resizeVolume', u'uploadVolume', u'detachVolume', u'listVolumes'], u'isasync': True, u'params': [{u'name': u'projectid', u'required': False, u'related': [u'createProject'], u'length': 255, u'type': u'uuid', u'description': u'the project associated with the volume. Mutually exclusive with account parameter'}, {u'name': u'name', u'required': True, u'related': [], u'length': 255, u'type': u'string', u'description': u'the name of the disk volume'}, {u'name': u'snapshotid', u'required': False, u'related': [u'revertSnapshot', u'createSnapshot'], u'length': 255, u'type': u'uuid', u'description': u'the snapshot ID for the disk volume. Either diskOfferingId or snapshotId must be passed in.'}, {u'name': u'maxiops', u'required': False, u'related': [], u'length': 255, u'type': u'long', u'description': u'max iops'}, {u'name': u'size', u'required': False, u'related': [], u'length': 255, u'type': u'long', u'description': u'Arbitrary volume size'}, {u'name': u'displayvolume', u'required': False, u'related': [], u'length': 255, u'type': u'boolean', u'description': u'an optional field, whether to display the volume to the end user or not.'}, {u'name': u'domainid', u'required': False, u'related': [u'updateDomain', u'listDomainChildren'], u'length': 255, u'type': u'uuid', u'description': u'the domain ID associated with the disk offering. If used with the account parameter returns the disk volume associated with the account for the specified domain.'}, {u'name': u'zoneid', u'required': False, u'related': [u'listZones'], u'length': 255, u'type': u'uuid', u'description': u'the ID of the availability zone'}, {u'name': u'account', u'required': False, u'related': [], u'length': 255, u'type': u'string', u'description': u'the account associated with the disk volume. Must be used with the domainId parameter.'}, {u'name': u'virtualmachineid', u'required': False, u'related': [u'updateVirtualMachine', u'assignVirtualMachine', u'detachIso', u'updateDefaultNicForVirtualMachine', u'revertToVMSnapshot', u'startVirtualMachine', u'resetPasswordForVirtualMachine', u'stopVirtualMachine', u'listVirtualMachines', u'migrateVirtualMachineWithVolume', u'destroyVirtualMachine', u'startVirtualMachine', u'listVirtualMachines', u'changeServiceForVirtualMachine', u'updateVMAffinityGroup', u'removeNicFromVirtualMachine', u'deployVirtualMachine', u'revertToVMSnapshot', u'addNicToVirtualMachine', u'restoreVirtualMachine', u'restoreVirtualMachine', u'stopVirtualMachine', u'changeServiceForVirtualMachine', u'destroyVirtualMachine', u'migrateVirtualMachine', u'updateVirtualMachine', u'detachIso', u'resetSSHKeyForVirtualMachine', u'attachIso', u'rebootVirtualMachine'], u'length': 255, u'type': u'uuid', u'description': u'the ID of the virtual machine; to be used with snapshot Id, VM to which the volume gets attached after creation'}, {u'name': u'diskofferingid', u'required': False, u'related': [u'createDiskOffering'], u'length': 255, u'type': u'uuid', u'description': u'the ID of the disk offering. Either diskOfferingId or snapshotId must be passed in.'}, {u'name': u'miniops', u'required': False, u'related': [], u'length': 255, u'type': u'long', u'description': u'min iops'}, {u'name': u'customid', u'required': False, u'related': [], u'length': 255, u'type': u'string', u'description': u'an optional field, in case you want to set a custom id to the resource. Allowed to Root Admins only'}], u'requiredparams': [u'name'], u'description': u'Creates a disk volume from a disk offering. This disk volume must still be attached to a virtual machine to make use of it.'}, u'user': {u'name': u'createUser', u'related': [u'disableUser', u'lockUser', u'listUsers', u'updateUser', u'getUser'], u'isasync': False, u'params': [{u'name': u'domainid', u'required': False, u'related': [u'listDomains', u'updateDomain', u'listDomainChildren'], u'length': 255, u'type': u'uuid', u'description': u'Creates the user under the specified domain. Has to be accompanied with the account parameter'}, {u'name': u'firstname', u'required': True, u'related': [], u'length': 255, u'type': u'string', u'description': u'firstname'}, {u'name': u'account', u'required': True, u'related': [], u'length': 255, u'type': u'string', u'description': u'Creates the user under the specified account. If no account is specified, the username will be used as the account name.'}, {u'name': u'timezone', u'required': False, u'related': [], u'length': 255, u'type': u'string', u'description': u'Specifies a timezone for this command. For more information on the timezone parameter, see Time Zone Format.'}, {u'name': u'email', u'required': True, u'related': [], u'length': 255, u'type': u'string', u'description': u'email'}, {u'name': u'username', u'required': True, u'related': [], u'length': 255, u'type': u'string', u'description': u'Unique username.'}, {u'name': u'lastname', u'required': True, u'related': [], u'length': 255, u'type': u'string', u'description': u'lastname'}, {u'name': u'userid', u'required': False, u'related': [], u'length': 255, u'type': u'string', u'description': u'User UUID, required for adding account from external provisioning system'}, {u'name': u'password', u'required': True, u'related': [], u'length': 255, u'type': u'string', u'description': u'Clear text password (Default hashed to SHA256SALT). If you wish to use any other hashing algorithm, you would need to write a custom authentication adapter See Docs section.'}], u'requiredparams': [u'firstname', u'account', u'email', u'username', u'lastname', u'password'], u'description': u'Creates a user for an account that already exists'}, u'vpc': {u'name': u'createVPC', u'related': [u'listVPCs', u'updateVPC', u'restartVPC', u'createVPC', u'listVPCs'], u'isasync': True, u'params': [{u'name': u'projectid', u'required': False, u'related': [u'createProject'], u'length': 255, u'type': u'uuid', u'description': u'create VPC for the project'}, {u'name': u'domainid', u'required': False, u'related': [u'updateDomain', u'listDomainChildren'], u'length': 255, u'type': u'uuid', u'description': u'the domain ID associated with the VPC. If used with the account parameter returns the VPC associated with the account for the specified domain.'}, {u'name': u'networkdomain', u'required': False, u'related': [], u'length': 255, u'type': u'string', u'description': u'VPC network domain. All networks inside the VPC will belong to this domain'}, {u'name': u'displaytext', u'required': True, u'related': [], u'length': 255, u'type': u'string', u'description': u'the display text of the VPC'}, {u'name': u'start', u'required': False, u'related': [], u'length': 255, u'type': u'boolean', u'description': u"If set to false, the VPC won't start (VPC VR will not get allocated) until its first network gets implemented. True by default."}, {u'name': u'zoneid', u'required': True, u'related': [u'listZones', u'listZones'], u'length': 255, u'type': u'uuid', u'description': u'the ID of the availability zone'}, {u'name': u'account', u'required': False, u'related': [], u'length': 255, u'type': u'string', u'description': u'the account associated with the VPC. Must be used with the domainId parameter.'}, {u'name': u'fordisplay', u'required': False, u'related': [], u'length': 255, u'type': u'boolean', u'description': u'an optional field, whether to the display the vpc to the end user or not'}, {u'name': u'cidr', u'required': True, u'related': [], u'length': 255, u'type': u'string', u'description': u"the cidr of the VPC. All VPC guest networks' cidrs should be within this CIDR"}, {u'name': u'name', u'required': True, u'related': [], u'length': 255, u'type': u'string', u'description': u'the name of the VPC'}, {u'name': u'vpcofferingid', u'required': True, u'related': [u'listVPCOfferings'], u'length': 255, u'type': u'uuid', u'description': u'the ID of the VPC offering'}], u'requiredparams': [u'displaytext', u'zoneid', u'cidr', u'name', u'vpcofferingid'], u'description': u'Creates a VPC'}, u'storagenetworkiprange': {u'name': u'createStorageNetworkIpRange', u'related': [u'listStorageNetworkIpRange', u'updateStorageNetworkIpRange'], u'isasync': True, u'params': [{u'name': u'endip', u'required': False, u'related': [], u'length': 255, u'type': u'string', u'description': u'the ending IP address'}, {u'name': u'startip', u'required': True, u'related': [], u'length': 255, u'type': u'string', u'description': u'the beginning IP address'}, {u'name': u'podid', u'required': True, u'related': [u'updatePod', u'createPod', u'listPods'], u'length': 255, u'type': u'uuid', u'description': u'UUID of pod where the ip range belongs to'}, {u'name': u'gateway', u'required': True, u'related': [], u'length': 255, u'type': u'string', u'description': u'the gateway for storage network'}, {u'name': u'netmask', u'required': True, u'related': [], u'length': 255, u'type': u'string', u'description': u'the netmask for storage network'}, {u'name': u'vlan', u'required': False, u'related': [], u'length': 255, u'type': u'integer', u'description': u'Optional. The vlan the ip range sits on, default to Null when it is not specificed which means you network is not on any Vlan. This is mainly for Vmware as other hypervisors can directly reterive bridge from pyhsical network traffic type table'}], u'requiredparams': [u'startip', u'podid', u'gateway', u'netmask'], u'description': u'Creates a Storage network IP range.'}, u'condition': {u'name': u'createCondition', u'related': [u'listConditions'], u'isasync': True, u'params': [{u'name': u'domainid', u'required': False, u'related': [u'listDomains', u'updateDomain', u'createDomain', u'listDomainChildren'], u'length': 255, u'type': u'uuid', u'description': u'the domain ID of the account.'}, {u'name': u'counterid', u'required': True, u'related': [u'createCounter', u'listCounters'], u'length': 255, u'type': u'uuid', u'description': u'ID of the Counter.'}, {u'name': u'relationaloperator', u'required': True, u'related': [], u'length': 255, u'type': u'string', u'description': u'Relational Operator to be used with threshold.'}, {u'name': u'threshold', u'required': True, u'related': [], u'length': 255, u'type': u'long', u'description': u'Threshold value.'}, {u'name': u'account', u'required': False, u'related': [], u'length': 255, u'type': u'string', u'description': u'the account of the condition. Must be used with the domainId parameter.'}], u'requiredparams': [u'counterid', u'relationaloperator', u'threshold'], u'description': u'Creates a condition'}, u'autoscalevmprofile': {u'name': u'createAutoScaleVmProfile', u'related': [u'updateAutoScaleVmProfile', u'listAutoScaleVmProfiles'], u'isasync': True, u'params': [{u'name': u'serviceofferingid', u'required': True, u'related': [u'updateServiceOffering', u'createServiceOffering', u'listServiceOfferings'], u'length': 255, u'type': u'uuid', u'description': u'the service offering of the auto deployed virtual machine'}, {u'name': u'fordisplay', u'required': False, u'related': [], u'length': 255, u'type': u'boolean', u'description': u'an optional field, whether to the display the profile to the end user or not'}, {u'name': u'counterparam', u'required': False, u'related': [], u'length': 255, u'type': u'map', u'description': u'counterparam list. Example: counterparam[0].name=snmpcommunity&counterparam[0].value=public&counterparam[1].name=snmpport&counterparam[1].value=161'}, {u'name': u'zoneid', u'required': True, u'related': [u'listZones', u'updateZone', u'createZone', u'listZones'], u'length': 255, u'type': u'uuid', u'description': u'availability zone for the auto deployed virtual machine'}, {u'name': u'templateid', u'required': True, u'related': [u'registerIso', u'registerIso', u'prepareTemplate', u'updateTemplate', u'registerTemplate', u'registerTemplate', u'copyIso', u'listTemplates', u'createTemplate', u'listIsos', u'copyTemplate', u'copyIso', u'listIsos', u'updateIso', u'listTemplates'], u'length': 255, u'type': u'uuid', u'description': u'the template of the auto deployed virtual machine'}, {u'name': u'otherdeployparams', u'required': False, u'related': [], u'length': 255, u'type': u'string', u'description': u'parameters other than zoneId/serviceOfferringId/templateId of the auto deployed virtual machine'}, {u'name': u'destroyvmgraceperiod', u'required': False, u'related': [], u'length': 255, u'type': u'integer', u'description': u'the time allowed for existing connections to get closed before a vm is destroyed'}, {u'name': u'autoscaleuserid', u'required': False, u'related': [u'createUser', u'enableUser', u'disableUser', u'lockUser', u'listUsers', u'updateUser', u'getUser'], u'length': 255, u'type': u'uuid', u'description': u'the ID of the user used to launch and destroy the VMs'}], u'requiredparams': [u'serviceofferingid', u'zoneid', u'templateid'], u'description': u'Creates a profile that contains information about the virtual machine which will be provisioned automatically by autoscale feature.'}, u'affinitygroup': {u'name': u'createAffinityGroup', u'related': [u'listAffinityGroups'], u'isasync': True, u'params': [{u'name': u'name', u'required': True, u'related': [], u'length': 255, u'type': u'string', u'description': u'name of the affinity group'}, {u'name': u'description', u'required': False, u'related': [], u'length': 255, u'type': u'string', u'description': u'optional description of the affinity group'}, {u'name': u'account', u'required': False, u'related': [], u'length': 255, u'type': u'string', u'description': u'an account for the affinity group. Must be used with domainId.'}, {u'name': u'type', u'required': True, u'related': [], u'length': 255, u'type': u'string', u'description': u'Type of the affinity group from the available affinity/anti-affinity group types'}, {u'name': u'domainid', u'required': False, u'related': [u'listDomains', u'updateDomain', u'createDomain', u'listDomainChildren'], u'length': 255, u'type': u'uuid', u'description': u'domainId of the account owning the affinity group'}], u'requiredparams': [u'name', u'type'], u'description': u'Creates an affinity/anti-affinity group'}, u'account': {u'name': u'createAccount', u'related': [u'listAccounts', u'markDefaultZoneForAccount', u'listAccounts', u'disableAccount'], u'isasync': False, u'params': [{u'name': u'account', u'required': False, u'related': [], u'length': 255, u'type': u'string', u'description': u'Creates the user under the specified account. If no account is specified, the username will be used as the account name.'}, {u'name': u'accountdetails', u'required': False, u'related': [], u'length': 255, u'type': u'map', u'description': u'details for account used to store specific parameters'}, {u'name': u'firstname', u'required': True, u'related': [], u'length': 255, u'type': u'string', u'description': u'firstname'}, {u'name': u'domainid', u'required': False, u'related': [u'listDomains', u'updateDomain', u'listDomainChildren'], u'length': 255, u'type': u'uuid', u'description': u'Creates the user under the specified domain.'}, {u'name': u'username', u'required': True, u'related': [], u'length': 255, u'type': u'string', u'description': u'Unique username.'}, {u'name': u'userid', u'required': False, u'related': [], u'length': 255, u'type': u'string', u'description': u'User UUID, required for adding account from external provisioning system'}, {u'name': u'timezone', u'required': False, u'related': [], u'length': 255, u'type': u'string', u'description': u'Specifies a timezone for this command. For more information on the timezone parameter, see Time Zone Format.'}, {u'name': u'accounttype', u'required': True, u'related': [], u'length': 255, u'type': u'short', u'description': u'Type of the account. Specify 0 for user, 1 for root admin, and 2 for domain admin'}, {u'name': u'password', u'required': True, u'related': [], u'length': 255, u'type': u'string', u'description': u'Clear text password (Default hashed to SHA256SALT). If you wish to use any other hashing algorithm, you would need to write a custom authentication adapter See Docs section.'}, {u'name': u'email', u'required': True, u'related': [], u'length': 255, u'type': u'string', u'description': u'email'}, {u'name': u'networkdomain', u'required': False, u'related': [], u'length': 255, u'type': u'string', u'description': u"Network domain for the account's networks"}, {u'name': u'accountid', u'required': False, u'related': [], u'length': 255, u'type': u'string', u'description': u'Account UUID, required for adding account from external provisioning system'}, {u'name': u'lastname', u'required': True, u'related': [], u'length': 255, u'type': u'string', u'description': u'lastname'}], u'requiredparams': [u'firstname', u'username', u'accounttype', u'password', u'email', u'lastname'], u'description': u'Creates an account'}, u'firewallrule': {u'name': u'createFirewallRule', u'related': [u'listEgressFirewallRules'], u'isasync': True, u'params': [{u'name': u'cidrlist', u'required': False, u'related': [], u'length': 255, u'type': u'list', u'description': u'the cidr list to forward traffic from'}, {u'name': u'ipaddressid', u'required': True, u'related': [u'listPublicIpAddresses', u'associateIpAddress'], u'length': 255, u'type': u'uuid', u'description': u'the IP address id of the port forwarding rule'}, {u'name': u'fordisplay', u'required': False, u'related': [], u'length': 255, u'type': u'boolean', u'description': u'an optional field, whether to the display the rule to the end user or not'}, {u'name': u'endport', u'required': False, u'related': [], u'length': 255, u'type': u'integer', u'description': u'the ending port of firewall rule'}, {u'name': u'startport', u'required': False, u'related': [], u'length': 255, u'type': u'integer', u'description': u'the starting port of firewall rule'}, {u'name': u'icmptype', u'required': False, u'related': [], u'length': 255, u'type': u'integer', u'description': u'type of the icmp message being sent'}, {u'name': u'type', u'required': False, u'related': [], u'length': 255, u'type': u'string', u'description': u'type of firewallrule: system/user'}, {u'name': u'icmpcode', u'required': False, u'related': [], u'length': 255, u'type': u'integer', u'description': u'error code for this icmp message'}, {u'name': u'protocol', u'required': True, u'related': [], u'length': 255, u'type': u'string', u'description': u'the protocol for the firewall rule. Valid values are TCP/UDP/ICMP.'}], u'requiredparams': [u'ipaddressid', u'protocol'], u'description': u'Creates a firewall rule for a given ip address'}, u'networkoffering': {u'name': u'createNetworkOffering', u'related': [u'updateNetworkOffering'], u'isasync': False, u'params': [{u'name': u'details', u'required': False, u'related': [], u'length': 255, u'type': u'map', u'description': u'Network offering details in key/value pairs. Supported keys are internallbprovider/publiclbprovider with service provider as a value'}, {u'name': u'networkrate', u'required': False, u'related': [], u'length': 255, u'type': u'integer', u'description': u'data transfer rate in megabits per second allowed'}, {u'name': u'serviceofferingid', u'required': False, u'related': [], u'length': 255, u'type': u'uuid', u'description': u'the service offering ID used by virtual router provider'}, {u'name': u'supportedservices', u'required': True, u'related': [], u'length': 255, u'type': u'list', u'description': u'services supported by the network offering'}, {u'name': u'conservemode', u'required': False, u'related': [], u'length': 255, u'type': u'boolean', u'description': u'true if the network offering is IP conserve mode enabled'}, {u'name': u'serviceproviderlist', u'required': False, u'related': [], u'length': 255, u'type': u'map', u'description': u'provider to service mapping. If not specified, the provider for the service will be mapped to the default provider on the physical network'}, {u'name': u'availability', u'required': False, u'related': [], u'length': 255, u'type': u'string', u'description': u'the availability of network offering. Default value is Optional'}, {u'name': u'name', u'required': True, u'related': [], u'length': 255, u'type': u'string', u'description': u'the name of the network offering'}, {u'name': u'keepaliveenabled', u'required': False, u'related': [], u'length': 255, u'type': u'boolean', u'description': u'if true keepalive will be turned on in the loadbalancer. At the time of writing this has only an effect on haproxy; the mode http and httpclose options are unset in the haproxy conf file.'}, {u'name': u'servicecapabilitylist', u'required': False, u'related': [], u'length': 255, u'type': u'map', u'description': u'desired service capabilities as part of network offering'}, {u'name': u'guestiptype', u'required': True, u'related': [], u'length': 255, u'type': u'string', u'description': u'guest type of the network offering: Shared or Isolated'}, {u'name': u'displaytext', u'required': True, u'related': [], u'length': 255, u'type': u'string', u'description': u'the display text of the network offering'}, {u'name': u'ispersistent', u'required': False, u'related': [], u'length': 255, u'type': u'boolean', u'description': u'true if network offering supports persistent networks; defaulted to false if not specified'}, {u'name': u'specifyvlan', u'required': False, u'related': [], u'length': 255, u'type': u'boolean', u'description': u'true if network offering supports vlans'}, {u'name': u'specifyipranges', u'required': False, u'related': [], u'length': 255, u'type': u'boolean', u'description': u'true if network offering supports specifying ip ranges; defaulted to false if not specified'}, {u'name': u'maxconnections', u'required': False, u'related': [], u'length': 255, u'type': u'integer', u'description': u'maximum number of concurrent connections supported by the network offering'}, {u'name': u'tags', u'required': False, u'related': [], u'length': 4096, u'type': u'string', u'description': u'the tags for the network offering.'}, {u'name': u'traffictype', u'required': True, u'related': [], u'length': 255, u'type': u'string', u'description': u'the traffic type for the network offering. Supported type in current release is GUEST only'}, {u'name': u'egressdefaultpolicy', u'required': False, u'related': [], u'length': 255, u'type': u'boolean', u'description': u'true if guest network default egress policy is allow; false if default egress policy is deny'}], u'requiredparams': [u'supportedservices', u'name', u'guestiptype', u'displaytext', u'traffictype'], u'description': u'Creates a network offering.'}, u'vlaniprange': {u'name': u'createVlanIpRange', u'related': [u'dedicatePublicIpRange', u'listVlanIpRanges'], u'isasync': False, u'params': [{u'name': u'podid', u'required': False, u'related': [u'updatePod', u'createPod'], u'length': 255, u'type': u'uuid', u'description': u'optional parameter. Have to be specified for Direct Untagged vlan only.'}, {u'name': u'ip6gateway', u'required': False, u'related': [], u'length': 255, u'type': u'string', u'description': u'the gateway of the IPv6 network. Required for Shared networks and Isolated networks when it belongs to VPC'}, {u'name': u'projectid', u'required': False, u'related': [u'updateProject', u'createProject'], u'length': 255, u'type': u'uuid', u'description': u'project who will own the VLAN. If VLAN is Zone wide, this parameter should be ommited'}, {u'name': u'domainid', u'required': False, u'related': [u'listDomains', u'updateDomain', u'listDomainChildren'], u'length': 255, u'type': u'uuid', u'description': u'domain ID of the account owning a VLAN'}, {u'name': u'forvirtualnetwork', u'required': False, u'related': [], u'length': 255, u'type': u'boolean', u'description': u'true if VLAN is of Virtual type, false if Direct'}, {u'name': u'vlan', u'required': False, u'related': [], u'length': 255, u'type': u'string', u'description': u'the ID or VID of the VLAN. If not specified, will be defaulted to the vlan of the network or if vlan of the network is null - to Untagged'}, {u'name': u'networkid', u'required': False, u'related': [u'updateNetwork', u'updateNetwork', u'listNetscalerLoadBalancerNetworks', u'listPaloAltoFirewallNetworks', u'listNetworks', u'createNetwork'], u'length': 255, u'type': u'uuid', u'description': u'the network id'}, {u'name': u'zoneid', u'required': False, u'related': [u'listZones', u'updateZone', u'createZone', u'listZones'], u'length': 255, u'type': u'uuid', u'description': u'the Zone ID of the VLAN IP range'}, {u'name': u'startip', u'required': False, u'related': [], u'length': 255, u'type': u'string', u'description': u'the beginning IP address in the VLAN IP range'}, {u'name': u'endipv6', u'required': False, u'related': [], u'length': 255, u'type': u'string', u'description': u'the ending IPv6 address in the IPv6 network range'}, {u'name': u'physicalnetworkid', u'required': False, u'related': [u'listPhysicalNetworks'], u'length': 255, u'type': u'uuid', u'description': u'the physical network id'}, {u'name': u'endip', u'required': False, u'related': [], u'length': 255, u'type': u'string', u'description': u'the ending IP address in the VLAN IP range'}, {u'name': u'ip6cidr', u'required': False, u'related': [], u'length': 255, u'type': u'string', u'description': u'the CIDR of IPv6 network, must be at least /64'}, {u'name': u'netmask', u'required': False, u'related': [], u'length': 255, u'type': u'string', u'description': u'the netmask of the VLAN IP range'}, {u'name': u'gateway', u'required': False, u'related': [], u'length': 255, u'type': u'string', u'description': u'the gateway of the VLAN IP range'}, {u'name': u'account', u'required': False, u'related': [], u'length': 255, u'type': u'string', u'description': u'account who will own the VLAN. If VLAN is Zone wide, this parameter should be ommited'}, {u'name': u'startipv6', u'required': False, u'related': [], u'length': 255, u'type': u'string', u'description': u'the beginning IPv6 address in the IPv6 network range'}], u'requiredparams': [], u'description': u'Creates a VLAN IP range.'}, u'internalloadbalancerelement': {u'name': u'createInternalLoadBalancerElement', u'related': [u'configureInternalLoadBalancerElement'], u'isasync': True, u'params': [{u'name': u'nspid', u'required': True, u'related': [u'addNetworkServiceProvider', u'updateNetworkServiceProvider', u'listTrafficTypes'], u'length': 255, u'type': u'uuid', u'description': u'the network service provider ID of the internal load balancer element'}], u'requiredparams': [u'nspid'], u'description': u'Create an Internal Load Balancer element.'}, u'counter': {u'name': u'createCounter', u'related': [], u'isasync': True, u'params': [{u'name': u'source', u'required': True, u'related': [], u'length': 255, u'type': u'string', u'description': u'Source of the counter.'}, {u'name': u'value', u'required': True, u'related': [], u'length': 255, u'type': u'string', u'description': u'Value of the counter e.g. oid in case of snmp.'}, {u'name': u'name', u'required': True, u'related': [], u'length': 255, u'type': u'string', u'description': u'Name of the counter.'}], u'requiredparams': [u'source', u'value', u'name'], u'description': u'Adds metric counter'}, u'lbhealthcheckpolicy': {u'name': u'createLBHealthCheckPolicy', u'related': [u'updateLBHealthCheckPolicy'], u'isasync': True, u'params': [{u'name': u'description', u'required': False, u'related': [], u'length': 255, u'type': u'string', u'description': u'the description of the load balancer HealthCheck policy'}, {u'name': u'fordisplay', u'required': False, u'related': [], u'length': 255, u'type': u'boolean', u'description': u'an optional field, whether to the display the rule to the end user or not'}, {u'name': u'unhealthythreshold', u'required': False, u'related': [], u'length': 255, u'type': u'integer', u'description': u'Number of consecutive health check failures before declaring an instance unhealthy'}, {u'name': u'lbruleid', u'required': True, u'related': [u'listIpForwardingRules'], u'length': 255, u'type': u'uuid', u'description': u'the ID of the load balancer rule'}, {u'name': u'pingpath', u'required': False, u'related': [], u'length': 255, u'type': u'string', u'description': u'HTTP Ping Path'}, {u'name': u'responsetimeout', u'required': False, u'related': [], u'length': 255, u'type': u'integer', u'description': u'Time to wait when receiving a response from the health check (2sec - 60 sec)'}, {u'name': u'intervaltime', u'required': False, u'related': [], u'length': 255, u'type': u'integer', u'description': u'Amount of time between health checks (1 sec - 20940 sec)'}, {u'name': u'healthythreshold', u'required': False, u'related': [], u'length': 255, u'type': u'integer', u'description': u'Number of consecutive health check success before declaring an instance healthy'}], u'requiredparams': [u'lbruleid'], u'description': u'Creates a Load Balancer healthcheck policy '}, u'project': {u'name': u'createProject', u'related': [], u'isasync': True, u'params': [{u'name': u'name', u'required': True, u'related': [], u'length': 255, u'type': u'string', u'description': u'name of the project'}, {u'name': u'domainid', u'required': False, u'related': [u'listDomainChildren'], u'length': 255, u'type': u'uuid', u'description': u'domain ID of the account owning a project'}, {u'name': u'displaytext', u'required': True, u'related': [], u'length': 255, u'type': u'string', u'description': u'display text of the project'}, {u'name': u'account', u'required': False, u'related': [], u'length': 255, u'type': u'string', u'description': u'account who will be Admin for the project'}], u'requiredparams': [u'name', u'displaytext'], u'description': u'Creates a project'}, u'vpncustomergateway': {u'name': u'createVpnCustomerGateway', u'related': [u'updateVpnCustomerGateway', u'listVpnCustomerGateways'], u'isasync': True, u'params': [{u'name': u'domainid', u'required': False, u'related': [u'listDomains', u'updateDomain', u'listDomainChildren'], u'length': 255, u'type': u'uuid', u'description': u'the domain ID associated with the gateway. If used with the account parameter returns the gateway associated with the account for the specified domain.'}, {u'name': u'cidrlist', u'required': True, u'related': [], u'length': 255, u'type': u'string', u'description': u'guest cidr list of the customer gateway'}, {u'name': u'account', u'required': False, u'related': [], u'length': 255, u'type': u'string', u'description': u'the account associated with the gateway. Must be used with the domainId parameter.'}, {u'name': u'dpd', u'required': False, u'related': [], u'length': 255, u'type': u'boolean', u'description': u'If DPD is enabled for VPN connection'}, {u'name': u'ikelifetime', u'required': False, u'related': [], u'length': 255, u'type': u'long', u'description': u'Lifetime of phase 1 VPN connection to the customer gateway, in seconds'}, {u'name': u'esplifetime', u'required': False, u'related': [], u'length': 255, u'type': u'long', u'description': u'Lifetime of phase 2 VPN connection to the customer gateway, in seconds'}, {u'name': u'name', u'required': False, u'related': [], u'length': 255, u'type': u'string', u'description': u'name of this customer gateway'}, {u'name': u'esppolicy', u'required': True, u'related': [], u'length': 255, u'type': u'string', u'description': u'ESP policy of the customer gateway'}, {u'name': u'ikepolicy', u'required': True, u'related': [], u'length': 255, u'type': u'string', u'description': u'IKE policy of the customer gateway'}, {u'name': u'ipsecpsk', u'required': True, u'related': [], u'length': 255, u'type': u'string', u'description': u'IPsec Preshared-Key of the customer gateway'}, {u'name': u'gateway', u'required': True, u'related': [], u'length': 255, u'type': u'string', u'description': u'public ip address id of the customer gateway'}], u'requiredparams': [u'cidrlist', u'esppolicy', u'ikepolicy', u'ipsecpsk', u'gateway'], u'description': u'Creates site to site vpn customer gateway'}, u'snapshot': {u'name': u'createSnapshot', u'related': [u'revertSnapshot'], u'isasync': True, u'params': [{u'name': u'domainid', u'required': False, u'related': [], u'length': 255, u'type': u'uuid', u'description': u'The domain ID of the snapshot. If used with the account parameter, specifies a domain for the account associated with the disk volume.'}, {u'name': u'policyid', u'required': False, u'related': [], u'length': 255, u'type': u'uuid', u'description': u'policy id of the snapshot, if this is null, then use MANUAL_POLICY.'}, {u'name': u'quiescevm', u'required': False, u'related': [], u'length': 255, u'type': u'boolean', u'description': u'quiesce vm if true'}, {u'name': u'account', u'required': False, u'related': [], u'length': 255, u'type': u'string', u'description': u'The account of the snapshot. The account parameter must be used with the domainId parameter.'}, {u'name': u'volumeid', u'required': True, u'related': [u'createVolume', u'attachVolume', u'updateVolume', u'migrateVolume', u'resizeVolume', u'uploadVolume', u'detachVolume', u'listVolumes'], u'length': 255, u'type': u'uuid', u'description': u'The ID of the disk volume'}], u'requiredparams': [u'volumeid'], u'description': u'Creates an instant snapshot of a volume.'}, u'loadbalancer': {u'name': u'createLoadBalancer', u'related': [], u'isasync': True, u'params': [{u'name': u'sourceport', u'required': True, u'related': [], u'length': 255, u'type': u'integer', u'description': u'the source port the network traffic will be load balanced from'}, {u'name': u'sourceipaddress', u'required': False, u'related': [], u'length': 255, u'type': u'string', u'description': u'the source ip address the network traffic will be load balanced from'}, {u'name': u'fordisplay', u'required': False, u'related': [], u'length': 255, u'type': u'boolean', u'description': u'an optional field, whether to the display the rule to the end user or not'}, {u'name': u'sourceipaddressnetworkid', u'required': True, u'related': [u'updateNetwork', u'updateNetwork', u'listNetscalerLoadBalancerNetworks', u'listPaloAltoFirewallNetworks', u'listNetworks', u'createNetwork'], u'length': 255, u'type': u'uuid', u'description': u'the network id of the source ip address'}, {u'name': u'name', u'required': True, u'related': [], u'length': 255, u'type': u'string', u'description': u'name of the Load Balancer'}, {u'name': u'networkid', u'required': True, u'related': [u'updateNetwork', u'updateNetwork', u'listNetscalerLoadBalancerNetworks', u'listPaloAltoFirewallNetworks', u'listNetworks', u'createNetwork'], u'length': 255, u'type': u'uuid', u'description': u'The guest network the Load Balancer will be created for'}, {u'name': u'algorithm', u'required': True, u'related': [], u'length': 255, u'type': u'string', u'description': u'load balancer algorithm (source, roundrobin, leastconn)'}, {u'name': u'scheme', u'required': True, u'related': [], u'length': 255, u'type': u'string', u'description': u'the load balancer scheme. Supported value in this release is Internal'}, {u'name': u'description', u'required': False, u'related': [], u'length': 4096, u'type': u'string', u'description': u'the description of the Load Balancer'}, {u'name': u'instanceport', u'required': True, u'related': [], u'length': 255, u'type': u'integer', u'description': u'the TCP port of the virtual machine where the network traffic will be load balanced to'}], u'requiredparams': [u'sourceport', u'sourceipaddressnetworkid', u'name', u'networkid', u'algorithm', u'scheme', u'instanceport'], u'description': u'Creates a Load Balancer'}, u'virtualrouterelement': {u'name': u'createVirtualRouterElement', u'related': [u'configureVirtualRouterElement'], u'isasync': True, u'params': [{u'name': u'nspid', u'required': True, u'related': [u'addNetworkServiceProvider', u'updateNetworkServiceProvider'], u'length': 255, u'type': u'uuid', u'description': u'the network service provider ID of the virtual router element'}, {u'name': u'providertype', u'required': False, u'related': [u'addNetworkServiceProvider', u'updateNetworkServiceProvider'], u'length': 255, u'type': u'uuid', u'description': u'The provider type. Supported types are VirtualRouter (default) and VPCVirtualRouter'}], u'requiredparams': [u'nspid'], u'description': u'Create a virtual router element.'}, u'egressfirewallrule': {u'name': u'createEgressFirewallRule', u'related': [u'updateFirewallRule', u'createFirewallRule', u'updateEgressFirewallRule', u'listEgressFirewallRules', u'listFirewallRules'], u'isasync': True, u'params': [{u'name': u'icmpcode', u'required': False, u'related': [], u'length': 255, u'type': u'integer', u'description': u'error code for this icmp message'}, {u'name': u'fordisplay', u'required': False, u'related': [], u'length': 255, u'type': u'boolean', u'description': u'an optional field, whether to the display the rule to the end user or not'}, {u'name': u'networkid', u'required': True, u'related': [u'updateNetwork', u'updateNetwork', u'listNetscalerLoadBalancerNetworks', u'listPaloAltoFirewallNetworks', u'listNetworks', u'createNetwork'], u'length': 255, u'type': u'uuid', u'description': u'the network id of the port forwarding rule'}, {u'name': u'type', u'required': False, u'related': [], u'length': 255, u'type': u'string', u'description': u'type of firewallrule: system/user'}, {u'name': u'icmptype', u'required': False, u'related': [], u'length': 255, u'type': u'integer', u'description': u'type of the icmp message being sent'}, {u'name': u'protocol', u'required': True, u'related': [], u'length': 255, u'type': u'string', u'description': u'the protocol for the firewall rule. Valid values are TCP/UDP/ICMP.'}, {u'name': u'endport', u'required': False, u'related': [], u'length': 255, u'type': u'integer', u'description': u'the ending port of firewall rule'}, {u'name': u'startport', u'required': False, u'related': [], u'length': 255, u'type': u'integer', u'description': u'the starting port of firewall rule'}, {u'name': u'cidrlist', u'required': False, u'related': [], u'length': 255, u'type': u'list', u'description': u'the cidr list to forward traffic from'}], u'requiredparams': [u'networkid', u'protocol'], u'description': u'Creates a egress firewall rule for a given network '}, u'physicalnetwork': {u'name': u'createPhysicalNetwork', u'related': [u'listPhysicalNetworks'], u'isasync': True, u'params': [{u'name': u'zoneid', u'required': True, u'related': [u'listZones', u'updateZone', u'createZone', u'listZones'], u'length': 255, u'type': u'uuid', u'description': u'the Zone ID for the physical network'}, {u'name': u'name', u'required': True, u'related': [], u'length': 255, u'type': u'string', u'description': u'the name of the physical network'}, {u'name': u'networkspeed', u'required': False, u'related': [], u'length': 255, u'type': u'string', u'description': u'the speed for the physical network[1G/10G]'}, {u'name': u'domainid', u'required': False, u'related': [u'listDomains', u'updateDomain', u'listDomainChildren'], u'length': 255, u'type': u'uuid', u'description': u'domain ID of the account owning a physical network'}, {u'name': u'tags', u'required': False, u'related': [], u'length': 255, u'type': u'list', u'description': u'Tag the physical network'}, {u'name': u'vlan', u'required': False, u'related': [], u'length': 255, u'type': u'string', u'description': u'the VLAN for the physical network'}, {u'name': u'isolationmethods', u'required': False, u'related': [], u'length': 255, u'type': u'list', u'description': u'the isolation method for the physical network[VLAN/L3/GRE]'}, {u'name': u'broadcastdomainrange', u'required': False, u'related': [], u'length': 255, u'type': u'string', u'description': u'the broadcast domain range for the physical network[Pod or Zone]. In Acton release it can be Zone only in Advance zone, and Pod in Basic'}], u'requiredparams': [u'zoneid', u'name'], u'description': u'Creates a physical network'}, u'sshkeypair': {u'name': u'createSSHKeyPair', u'related': [], u'isasync': False, u'params': [{u'name': u'account', u'required': False, u'related': [], u'length': 255, u'type': u'string', u'description': u'an optional account for the ssh key. Must be used with domainId.'}, {u'name': u'projectid', u'required': False, u'related': [u'activateProject', u'updateProject', u'listProjectAccounts', u'createProject'], u'length': 255, u'type': u'uuid', u'description': u'an optional project for the ssh key'}, {u'name': u'name', u'required': True, u'related': [], u'length': 255, u'type': u'string', u'description': u'Name of the keypair'}, {u'name': u'domainid', u'required': False, u'related': [u'listDomains', u'updateDomain', u'createDomain', u'listDomainChildren'], u'length': 255, u'type': u'uuid', u'description': u'an optional domainId for the ssh key. If the account parameter is used, domainId must also be used.'}], u'requiredparams': [u'name'], u'description': u'Create a new keypair and returns the private key'}, u'privategateway': {u'name': u'createPrivateGateway', u'related': [], u'isasync': True, u'params': [{u'name': u'vpcid', u'required': True, u'related': [u'updateVPC', u'restartVPC', u'createVPC', u'listVPCs'], u'length': 255, u'type': u'uuid', u'description': u'the VPC network belongs to'}, {u'name': u'physicalnetworkid', u'required': False, u'related': [u'listPhysicalNetworks'], u'length': 255, u'type': u'uuid', u'description': u'the Physical Network ID the network belongs to'}, {u'name': u'gateway', u'required': True, u'related': [], u'length': 255, u'type': u'string', u'description': u'the gateway of the Private gateway'}, {u'name': u'networkofferingid', u'required': False, u'related': [u'createNetworkOffering', u'updateNetworkOffering'], u'length': 255, u'type': u'uuid', u'description': u'the uuid of the network offering to use for the private gateways network connection'}, {u'name': u'vlan', u'required': True, u'related': [], u'length': 255, u'type': u'string', u'description': u'the network implementation uri for the private gateway'}, {u'name': u'netmask', u'required': True, u'related': [], u'length': 255, u'type': u'string', u'description': u'the netmask of the Private gateway'}, {u'name': u'sourcenatsupported', u'required': False, u'related': [], u'length': 255, u'type': u'boolean', u'description': u"source NAT supported value. Default value false. If 'true' source NAT is enabled on the private gateway 'false': sourcenat is not supported"}, {u'name': u'aclid', u'required': False, u'related': [], u'length': 255, u'type': u'uuid', u'description': u'the ID of the network ACL'}, {u'name': u'ipaddress', u'required': True, u'related': [], u'length': 255, u'type': u'string', u'description': u'the IP address of the Private gateaway'}], u'requiredparams': [u'vpcid', u'gateway', u'vlan', u'netmask', u'ipaddress'], u'description': u'Creates a private gateway'}, u'serviceinstance': {u'name': u'createServiceInstance', u'related': [], u'isasync': True, u'params': [{u'name': u'templateid', u'required': True, u'related': [u'registerIso', u'registerIso', u'prepareTemplate', u'updateTemplate', u'registerTemplate', u'copyIso', u'listTemplates', u'createTemplate', u'listIsos', u'copyTemplate', u'copyIso', u'listIsos', u'updateIso', u'listTemplates'], u'length': 255, u'type': u'uuid', u'description': u'The template ID that specifies the image for the service appliance'}, {u'name': u'domainid', u'required': False, u'related': [u'listDomains', u'updateDomain', u'listDomainChildren'], u'length': 255, u'type': u'uuid', u'description': u'An optional domainId for the virtual machine. If the account parameter is used, domainId must also be used.'}, {u'name': u'zoneid', u'required': True, u'related': [u'listZones', u'updateZone', u'createZone', u'listZones'], u'length': 255, u'type': u'uuid', u'description': u'Availability zone for the service instance'}, {u'name': u'rightnetworkid', u'required': True, u'related': [u'updateNetwork', u'updateNetwork', u'listNetscalerLoadBalancerNetworks', u'listPaloAltoFirewallNetworks', u'listNetworks', u'createNetwork'], u'length': 255, u'type': u'uuid', u'description': u'The right (outside) network ID for the service instance'}, {u'name': u'leftnetworkid', u'required': True, u'related': [u'updateNetwork', u'updateNetwork', u'listNetscalerLoadBalancerNetworks', u'listPaloAltoFirewallNetworks', u'listNetworks', u'createNetwork'], u'length': 255, u'type': u'uuid', u'description': u'The left (inside) network for service instance'}, {u'name': u'projectid', u'required': False, u'related': [u'updateProject', u'createProject'], u'length': 255, u'type': u'uuid', u'description': u'Project ID for the service instance'}, {u'name': u'account', u'required': False, u'related': [], u'length': 255, u'type': u'string', u'description': u'An optional account for the virtual machine. Must be used with domainId.'}, {u'name': u'name', u'required': True, u'related': [], u'length': 255, u'type': u'string', u'description': u'The name of the service instance'}, {u'name': u'serviceofferingid', u'required': True, u'related': [u'createServiceOffering', u'listServiceOfferings'], u'length': 255, u'type': u'uuid', u'description': u'The service offering ID that defines the resources consumed by the service appliance'}], u'requiredparams': [u'templateid', u'zoneid', u'rightnetworkid', u'leftnetworkid', u'name', u'serviceofferingid'], u'description': u'Creates a system virtual-machine that implements network services'}}, u'deploy': {u'virtualmachine': {u'name': u'deployVirtualMachine', u'related': [u'updateVirtualMachine', u'removeNicFromVirtualMachine', u'assignVirtualMachine', u'detachIso', u'updateDefaultNicForVirtualMachine', u'updateDefaultNicForVirtualMachine', u'revertToVMSnapshot', u'startVirtualMachine', u'resetPasswordForVirtualMachine', u'resetPasswordForVirtualMachine', u'updateVMAffinityGroup', u'stopVirtualMachine', u'listVirtualMachines', u'migrateVirtualMachineWithVolume', u'destroyVirtualMachine', u'attachIso', u'rebootVirtualMachine', u'startVirtualMachine', u'listVirtualMachines', u'changeServiceForVirtualMachine', u'updateVMAffinityGroup', u'removeNicFromVirtualMachine', u'deployVirtualMachine', u'revertToVMSnapshot', u'addNicToVirtualMachine', u'restoreVirtualMachine', u'restoreVirtualMachine', u'stopVirtualMachine', u'changeServiceForVirtualMachine', u'destroyVirtualMachine', u'migrateVirtualMachine', u'updateVirtualMachine', u'detachIso', u'resetSSHKeyForVirtualMachine', u'attachIso', u'rebootVirtualMachine'], u'isasync': True, u'params': [{u'name': u'ip6address', u'required': False, u'related': [], u'length': 255, u'type': u'string', u'description': u"the ipv6 address for default vm's network"}, {u'name': u'name', u'required': False, u'related': [], u'length': 255, u'type': u'string', u'description': u'host name for the virtual machine'}, {u'name': u'projectid', u'required': False, u'related': [u'updateProject', u'createProject'], u'length': 255, u'type': u'uuid', u'description': u'Deploy vm for the project'}, {u'name': u'rootdisksize', u'required': False, u'related': [], u'length': 255, u'type': u'long', u'description': u'Optional field to resize root disk on deploy. Only applies to template-based deployments. Analogous to details[0].rootdisksize, which takes precedence over this parameter if both are provided'}, {u'name': u'details', u'required': False, u'related': [], u'length': 255, u'type': u'map', u'description': u'used to specify the custom parameters.'}, {u'name': u'serviceofferingid', u'required': True, u'related': [u'createServiceOffering', u'listServiceOfferings'], u'length': 255, u'type': u'uuid', u'description': u'the ID of the service offering for the virtual machine'}, {u'name': u'hypervisor', u'required': False, u'related': [], u'length': 255, u'type': u'string', u'description': u'the hypervisor on which to deploy the virtual machine'}, {u'name': u'securitygroupids', u'required': False, u'related': [u'listSecurityGroups'], u'length': 255, u'type': u'list', u'description': u'comma separated list of security groups id that going to be applied to the virtual machine. Should be passed only when vm is created from a zone with Basic Network support. Mutually exclusive with securitygroupnames parameter'}, {u'name': u'securitygroupnames', u'required': False, u'related': [u'listSecurityGroups'], u'length': 255, u'type': u'list', u'description': u'comma separated list of security groups names that going to be applied to the virtual machine. Should be passed only when vm is created from a zone with Basic Network support. Mutually exclusive with securitygroupids parameter'}, {u'name': u'startvm', u'required': False, u'related': [], u'length': 255, u'type': u'boolean', u'description': u'true if network offering supports specifying ip ranges; defaulted to true if not specified'}, {u'name': u'group', u'required': False, u'related': [], u'length': 255, u'type': u'string', u'description': u'an optional group for the virtual machine'}, {u'name': u'displayvm', u'required': False, u'related': [], u'length': 255, u'type': u'boolean', u'description': u'an optional field, whether to the display the vm to the end user or not.'}, {u'name': u'templateid', u'required': True, u'related': [u'registerIso', u'registerIso', u'prepareTemplate', u'updateTemplate', u'registerTemplate', u'registerTemplate', u'copyIso', u'listTemplates', u'createTemplate', u'listIsos', u'copyTemplate', u'copyIso', u'listIsos', u'updateIso', u'listTemplates'], u'length': 255, u'type': u'uuid', u'description': u'the ID of the template for the virtual machine'}, {u'name': u'diskofferingid', u'required': False, u'related': [u'createDiskOffering', u'listDiskOfferings'], u'length': 255, u'type': u'uuid', u'description': u'the ID of the disk offering for the virtual machine. If the template is of ISO format, the diskOfferingId is for the root disk volume. Otherwise this parameter is used to indicate the offering for the data disk volume. If the templateId parameter passed is from a Template object, the diskOfferingId refers to a DATA Disk Volume created. If the templateId parameter passed is from an ISO object, the diskOfferingId refers to a ROOT Disk Volume created.'}, {u'name': u'affinitygroupnames', u'required': False, u'related': [u'listAffinityGroups'], u'length': 255, u'type': u'list', u'description': u'comma separated list of affinity groups names that are going to be applied to the virtual machine.Mutually exclusive with affinitygroupids parameter'}, {u'name': u'zoneid', u'required': True, u'related': [u'listZones', u'updateZone', u'createZone', u'listZones'], u'length': 255, u'type': u'uuid', u'description': u'availability zone for the virtual machine'}, {u'name': u'keypair', u'required': False, u'related': [], u'length': 255, u'type': u'string', u'description': u'name of the ssh key pair used to login to the virtual machine'}, {u'name': u'keyboard', u'required': False, u'related': [], u'length': 255, u'type': u'string', u'description': u'an optional keyboard device type for the virtual machine. valid value can be one of de,de-ch,es,fi,fr,fr-be,fr-ch,is,it,jp,nl-be,no,pt,uk,us'}, {u'name': u'userdata', u'required': False, u'related': [], u'length': 32768, u'type': u'string', u'description': u'an optional binary data that can be sent to the virtual machine upon a successful deployment. This binary data must be base64 encoded before adding it to the request. Using HTTP GET (via querystring), you can send up to 2KB of data after base64 encoding. Using HTTP POST(via POST body), you can send up to 32K of data after base64 encoding.'}, {u'name': u'domainid', u'required': False, u'related': [u'listDomains', u'updateDomain', u'createDomain', u'listDomainChildren'], u'length': 255, u'type': u'uuid', u'description': u'an optional domainId for the virtual machine. If the account parameter is used, domainId must also be used.'}, {u'name': u'customid', u'required': False, u'related': [], u'length': 255, u'type': u'string', u'description': u'an optional field, in case you want to set a custom id to the resource. Allowed to Root Admins only'}, {u'name': u'affinitygroupids', u'required': False, u'related': [u'listAffinityGroups'], u'length': 255, u'type': u'list', u'description': u'comma separated list of affinity groups id that are going to be applied to the virtual machine. Mutually exclusive with affinitygroupnames parameter'}, {u'name': u'ipaddress', u'required': False, u'related': [], u'length': 255, u'type': u'string', u'description': u"the ip address for default vm's network"}, {u'name': u'displayname', u'required': False, u'related': [], u'length': 255, u'type': u'string', u'description': u'an optional user generated name for the virtual machine'}, {u'name': u'account', u'required': False, u'related': [], u'length': 255, u'type': u'string', u'description': u'an optional account for the virtual machine. Must be used with domainId.'}, {u'name': u'networkids', u'required': False, u'related': [u'updateNetwork', u'updateNetwork', u'listNetscalerLoadBalancerNetworks', u'listPaloAltoFirewallNetworks', u'listNetworks', u'createNetwork'], u'length': 255, u'type': u'list', u'description': u"list of network ids used by virtual machine. Can't be specified with ipToNetworkList parameter"}, {u'name': u'hostid', u'required': False, u'related': [u'updateHost', u'prepareHostForMaintenance', u'listHosts', u'addHost'], u'length': 255, u'type': u'uuid', u'description': u'destination Host ID to deploy the VM to - parameter available for root admin only'}, {u'name': u'iptonetworklist', u'required': False, u'related': [], u'length': 255, u'type': u'map', u'description': u"ip to network mapping. Can't be specified with networkIds parameter. Example: iptonetworklist[0].ip=10.10.10.11&iptonetworklist[0].ipv6=fc00:1234:5678::abcd&iptonetworklist[0].networkid=uuid - requests to use ip 10.10.10.11 in network id=uuid"}, {u'name': u'deploymentplanner', u'required': False, u'related': [], u'length': 255, u'type': u'string', u'description': u'Deployment planner to use for vm allocation. Available to ROOT admin only'}, {u'name': u'size', u'required': False, u'related': [], u'length': 255, u'type': u'long', u'description': u'the arbitrary size for the DATADISK volume. Mutually exclusive with diskOfferingId'}], u'requiredparams': [u'serviceofferingid', u'templateid', u'zoneid'], u'description': u'Creates and automatically starts a virtual machine based on a service offering, disk offering, and template.'}}, u'reboot': {u'systemvm': {u'name': u'rebootSystemVm', u'related': [u'scaleSystemVm'], u'isasync': True, u'params': [{u'name': u'id', u'required': True, u'related': [u'scaleSystemVm', u'rebootSystemVm'], u'length': 255, u'type': u'uuid', u'description': u'The ID of the system virtual machine'}], u'requiredparams': [u'id'], u'description': u'Reboots a system VM.'}, u'router': {u'name': u'rebootRouter', u'related': [u'changeServiceForRouter', u'stopInternalLoadBalancerVM', u'startRouter', u'listInternalLoadBalancerVMs'], u'isasync': True, u'params': [{u'name': u'id', u'required': True, u'related': [u'changeServiceForRouter', u'stopInternalLoadBalancerVM', u'rebootRouter', u'startRouter', u'listInternalLoadBalancerVMs'], u'length': 255, u'type': u'uuid', u'description': u'the ID of the router'}], u'requiredparams': [u'id'], u'description': u'Starts a router.'}, u'virtualmachine': {u'name': u'rebootVirtualMachine', u'related': [u'updateVirtualMachine', u'removeNicFromVirtualMachine', u'assignVirtualMachine', u'detachIso', u'updateDefaultNicForVirtualMachine', u'updateDefaultNicForVirtualMachine', u'revertToVMSnapshot', u'startVirtualMachine', u'resetPasswordForVirtualMachine', u'resetPasswordForVirtualMachine', u'updateVMAffinityGroup', u'stopVirtualMachine', u'listVirtualMachines', u'migrateVirtualMachineWithVolume', u'destroyVirtualMachine', u'startVirtualMachine', u'listVirtualMachines', u'changeServiceForVirtualMachine', u'updateVMAffinityGroup', u'removeNicFromVirtualMachine', u'deployVirtualMachine', u'revertToVMSnapshot', u'addNicToVirtualMachine', u'restoreVirtualMachine', u'restoreVirtualMachine', u'stopVirtualMachine', u'changeServiceForVirtualMachine', u'destroyVirtualMachine', u'migrateVirtualMachine', u'updateVirtualMachine', u'detachIso', u'resetSSHKeyForVirtualMachine', u'attachIso', u'rebootVirtualMachine'], u'isasync': True, u'params': [{u'name': u'id', u'required': True, u'related': [u'updateVirtualMachine', u'removeNicFromVirtualMachine', u'assignVirtualMachine', u'detachIso', u'updateDefaultNicForVirtualMachine', u'updateDefaultNicForVirtualMachine', u'revertToVMSnapshot', u'startVirtualMachine', u'resetPasswordForVirtualMachine', u'resetPasswordForVirtualMachine', u'updateVMAffinityGroup', u'stopVirtualMachine', u'listVirtualMachines', u'migrateVirtualMachineWithVolume', u'destroyVirtualMachine', u'rebootVirtualMachine', u'startVirtualMachine', u'listVirtualMachines', u'changeServiceForVirtualMachine', u'updateVMAffinityGroup', u'removeNicFromVirtualMachine', u'deployVirtualMachine', u'revertToVMSnapshot', u'addNicToVirtualMachine', u'restoreVirtualMachine', u'restoreVirtualMachine', u'stopVirtualMachine', u'changeServiceForVirtualMachine', u'destroyVirtualMachine', u'migrateVirtualMachine', u'updateVirtualMachine', u'detachIso', u'resetSSHKeyForVirtualMachine', u'attachIso', u'rebootVirtualMachine'], u'length': 255, u'type': u'uuid', u'description': u'The ID of the virtual machine'}], u'requiredparams': [u'id'], u'description': u'Reboots a virtual machine.'}}, u'find': {u'hostsformigration': {u'name': u'findHostsForMigration', u'related': [], u'isasync': False, u'params': [{u'name': u'virtualmachineid', u'required': True, u'related': [u'updateVirtualMachine', u'removeNicFromVirtualMachine', u'assignVirtualMachine', u'detachIso', u'updateDefaultNicForVirtualMachine', u'updateDefaultNicForVirtualMachine', u'revertToVMSnapshot', u'startVirtualMachine', u'resetPasswordForVirtualMachine', u'resetPasswordForVirtualMachine', u'updateVMAffinityGroup', u'stopVirtualMachine', u'listVirtualMachines', u'migrateVirtualMachineWithVolume', u'destroyVirtualMachine', u'attachIso', u'rebootVirtualMachine', u'startVirtualMachine', u'listVirtualMachines', u'changeServiceForVirtualMachine', u'updateVMAffinityGroup', u'removeNicFromVirtualMachine', u'deployVirtualMachine', u'revertToVMSnapshot', u'addNicToVirtualMachine', u'restoreVirtualMachine', u'restoreVirtualMachine', u'stopVirtualMachine', u'changeServiceForVirtualMachine', u'destroyVirtualMachine', u'migrateVirtualMachine', u'updateVirtualMachine', u'detachIso', u'resetSSHKeyForVirtualMachine', u'attachIso', u'rebootVirtualMachine'], u'length': 255, u'type': u'uuid', u'description': u'find hosts to which this VM can be migrated and flag the hosts with enough CPU/RAM to host the VM'}, {u'name': u'page', u'required': False, u'related': [], u'length': 255, u'type': u'integer', u'description': u''}, {u'name': u'pagesize', u'required': False, u'related': [], u'length': 255, u'type': u'integer', u'description': u''}, {u'name': u'keyword', u'required': False, u'related': [], u'length': 255, u'type': u'string', u'description': u'List by keyword'}], u'requiredparams': [u'virtualmachineid'], u'description': u'Find hosts suitable for migrating a virtual machine.'}, u'storagepoolsformigration': {u'name': u'findStoragePoolsForMigration', u'related': [], u'isasync': False, u'params': [{u'name': u'pagesize', u'required': False, u'related': [], u'length': 255, u'type': u'integer', u'description': u''}, {u'name': u'id', u'required': True, u'related': [u'createVolume', u'attachVolume', u'updateVolume', u'migrateVolume', u'resizeVolume', u'uploadVolume', u'detachVolume', u'listVolumes'], u'length': 255, u'type': u'uuid', u'description': u'the ID of the volume'}, {u'name': u'page', u'required': False, u'related': [], u'length': 255, u'type': u'integer', u'description': u''}, {u'name': u'keyword', u'required': False, u'related': [], u'length': 255, u'type': u'string', u'description': u'List by keyword'}], u'requiredparams': [u'id'], u'description': u'Lists storage pools available for migration of a volume.'}}, u'start': {u'systemvm': {u'name': u'startSystemVm', u'related': [u'migrateSystemVm', u'scaleSystemVm', u'changeServiceForSystemVm', u'listSystemVms', u'rebootSystemVm'], u'isasync': True, u'params': [{u'name': u'id', u'required': True, u'related': [u'migrateSystemVm', u'startSystemVm', u'scaleSystemVm', u'changeServiceForSystemVm', u'listSystemVms', u'rebootSystemVm'], u'length': 255, u'type': u'uuid', u'description': u'The ID of the system virtual machine'}], u'requiredparams': [u'id'], u'description': u'Starts a system virtual machine.'}, u'router': {u'name': u'startRouter', u'related': [u'listInternalLoadBalancerVMs'], u'isasync': True, u'params': [{u'name': u'id', u'required': True, u'related': [u'startRouter', u'listInternalLoadBalancerVMs'], u'length': 255, u'type': u'uuid', u'description': u'the ID of the router'}], u'requiredparams': [u'id'], u'description': u'Starts a router.'}, u'internalloadbalancervm': {u'name': u'startInternalLoadBalancerVM', u'related': [u'destroyRouter', u'changeServiceForRouter', u'stopInternalLoadBalancerVM', u'rebootRouter', u'startRouter', u'listInternalLoadBalancerVMs'], u'isasync': True, u'params': [{u'name': u'id', u'required': True, u'related': [u'destroyRouter', u'startInternalLoadBalancerVM', u'changeServiceForRouter', u'stopInternalLoadBalancerVM', u'rebootRouter', u'startRouter', u'listInternalLoadBalancerVMs'], u'length': 255, u'type': u'uuid', u'description': u'the ID of the internal lb vm'}], u'requiredparams': [u'id'], u'description': u'Starts an existing internal lb vm.'}, u'virtualmachine': {u'name': u'startVirtualMachine', u'related': [u'updateVirtualMachine', u'assignVirtualMachine', u'detachIso', u'updateDefaultNicForVirtualMachine', u'revertToVMSnapshot', u'resetPasswordForVirtualMachine', u'stopVirtualMachine', u'listVirtualMachines', u'migrateVirtualMachineWithVolume', u'destroyVirtualMachine', u'startVirtualMachine', u'listVirtualMachines', u'updateVMAffinityGroup', u'removeNicFromVirtualMachine', u'deployVirtualMachine', u'revertToVMSnapshot', u'addNicToVirtualMachine', u'restoreVirtualMachine', u'restoreVirtualMachine', u'stopVirtualMachine', u'changeServiceForVirtualMachine', u'destroyVirtualMachine', u'migrateVirtualMachine', u'updateVirtualMachine', u'detachIso', u'resetSSHKeyForVirtualMachine', u'attachIso', u'rebootVirtualMachine'], u'isasync': True, u'params': [{u'name': u'deploymentplanner', u'required': False, u'related': [], u'length': 255, u'type': u'string', u'description': u'Deployment planner to use for vm allocation. Available to ROOT admin only'}, {u'name': u'id', u'required': True, u'related': [u'updateVirtualMachine', u'assignVirtualMachine', u'detachIso', u'updateDefaultNicForVirtualMachine', u'revertToVMSnapshot', u'startVirtualMachine', u'resetPasswordForVirtualMachine', u'stopVirtualMachine', u'listVirtualMachines', u'migrateVirtualMachineWithVolume', u'destroyVirtualMachine', u'startVirtualMachine', u'listVirtualMachines', u'updateVMAffinityGroup', u'removeNicFromVirtualMachine', u'deployVirtualMachine', u'revertToVMSnapshot', u'addNicToVirtualMachine', u'restoreVirtualMachine', u'restoreVirtualMachine', u'stopVirtualMachine', u'changeServiceForVirtualMachine', u'destroyVirtualMachine', u'migrateVirtualMachine', u'updateVirtualMachine', u'detachIso', u'resetSSHKeyForVirtualMachine', u'attachIso', u'rebootVirtualMachine'], u'length': 255, u'type': u'uuid', u'description': u'The ID of the virtual machine'}, {u'name': u'hostid', u'required': False, u'related': [u'listHosts'], u'length': 255, u'type': u'uuid', u'description': u'destination Host ID to deploy the VM to - parameter available for root admin only'}], u'requiredparams': [u'id'], u'description': u'Starts a virtual machine.'}}, u'add': {u'nictovirtualmachine': {u'name': u'addNicToVirtualMachine', u'related': [u'updateVirtualMachine', u'removeNicFromVirtualMachine', u'assignVirtualMachine', u'detachIso', u'updateDefaultNicForVirtualMachine', u'updateDefaultNicForVirtualMachine', u'revertToVMSnapshot', u'recoverVirtualMachine', u'startVirtualMachine', u'resetPasswordForVirtualMachine', u'resetPasswordForVirtualMachine', u'updateVMAffinityGroup', u'stopVirtualMachine', u'listVirtualMachines', u'deployVirtualMachine', u'migrateVirtualMachineWithVolume', u'destroyVirtualMachine', u'attachIso', u'rebootVirtualMachine', u'startVirtualMachine', u'listVirtualMachines', u'changeServiceForVirtualMachine', u'updateVMAffinityGroup', u'removeNicFromVirtualMachine', u'deployVirtualMachine', u'revertToVMSnapshot', u'addNicToVirtualMachine', u'restoreVirtualMachine', u'restoreVirtualMachine', u'stopVirtualMachine', u'changeServiceForVirtualMachine', u'destroyVirtualMachine', u'migrateVirtualMachine', u'updateVirtualMachine', u'detachIso', u'resetSSHKeyForVirtualMachine', u'resetSSHKeyForVirtualMachine', u'attachIso', u'rebootVirtualMachine'], u'isasync': True, u'params': [{u'name': u'virtualmachineid', u'required': True, u'related': [u'updateVirtualMachine', u'removeNicFromVirtualMachine', u'assignVirtualMachine', u'detachIso', u'updateDefaultNicForVirtualMachine', u'updateDefaultNicForVirtualMachine', u'revertToVMSnapshot', u'recoverVirtualMachine', u'startVirtualMachine', u'resetPasswordForVirtualMachine', u'resetPasswordForVirtualMachine', u'updateVMAffinityGroup', u'stopVirtualMachine', u'listVirtualMachines', u'deployVirtualMachine', u'migrateVirtualMachineWithVolume', u'destroyVirtualMachine', u'attachIso', u'rebootVirtualMachine', u'startVirtualMachine', u'listVirtualMachines', u'changeServiceForVirtualMachine', u'updateVMAffinityGroup', u'removeNicFromVirtualMachine', u'deployVirtualMachine', u'addNicToVirtualMachine', u'revertToVMSnapshot', u'addNicToVirtualMachine', u'restoreVirtualMachine', u'restoreVirtualMachine', u'stopVirtualMachine', u'changeServiceForVirtualMachine', u'destroyVirtualMachine', u'migrateVirtualMachine', u'updateVirtualMachine', u'detachIso', u'resetSSHKeyForVirtualMachine', u'resetSSHKeyForVirtualMachine', u'attachIso', u'rebootVirtualMachine'], u'length': 255, u'type': u'uuid', u'description': u'Virtual Machine ID'}, {u'name': u'networkid', u'required': True, u'related': [u'createNetwork', u'updateNetwork', u'listNetworks', u'updateNetwork', u'listNetscalerLoadBalancerNetworks', u'listPaloAltoFirewallNetworks', u'listNetworks', u'createNetwork'], u'length': 255, u'type': u'uuid', u'description': u'Network ID'}, {u'name': u'ipaddress', u'required': False, u'related': [], u'length': 255, u'type': u'string', u'description': u'IP Address for the new network'}], u'requiredparams': [u'virtualmachineid', u'networkid'], u'description': u'Adds VM to specified network by creating a NIC'}, u'accounttoproject': {u'name': u'addAccountToProject', u'related': [], u'isasync': True, u'params': [{u'name': u'projectid', u'required': True, u'related': [u'listProjects', u'activateProject', u'suspendProject', u'updateProject', u'listProjectAccounts', u'createProject'], u'length': 255, u'type': u'uuid', u'description': u'id of the project to add the account to'}, {u'name': u'email', u'required': False, u'related': [], u'length': 255, u'type': u'string', u'description': u'email to which invitation to the project is going to be sent'}, {u'name': u'account', u'required': False, u'related': [], u'length': 255, u'type': u'string', u'description': u'name of the account to be added to the project'}], u'requiredparams': [u'projectid'], u'description': u'Adds acoount to a project'}, u'cluster': {u'name': u'addCluster', u'related': [u'listClusters', u'updateCluster'], u'isasync': False, u'params': [{u'name': u'clustertype', u'required': True, u'related': [], u'length': 255, u'type': u'string', u'description': u'type of the cluster: CloudManaged, ExternalManaged'}, {u'name': u'url', u'required': False, u'related': [], u'length': 255, u'type': u'string', u'description': u'the URL'}, {u'name': u'guestvswitchname', u'required': False, u'related': [], u'length': 255, u'type': u'string', u'description': u'Name of virtual switch used for guest traffic in the cluster. This would override zone wide traffic label setting.'}, {u'name': u'podid', u'required': True, u'related': [u'updatePod', u'createPod', u'listPods'], u'length': 255, u'type': u'uuid', u'description': u'the Pod ID for the host'}, {u'name': u'allocationstate', u'required': False, u'related': [], u'length': 255, u'type': u'string', u'description': u'Allocation state of this cluster for allocation of new resources'}, {u'name': u'password', u'required': False, u'related': [], u'length': 255, u'type': u'string', u'description': u'the password for the host'}, {u'name': u'publicvswitchtype', u'required': False, u'related': [], u'length': 255, u'type': u'string', u'description': u'Type of virtual switch used for public traffic in the cluster. Allowed values are, vmwaresvs (for VMware standard vSwitch) and vmwaredvs (for VMware distributed vSwitch)'}, {u'name': u'vsmusername', u'required': False, u'related': [], u'length': 255, u'type': u'string', u'description': u'the username for the VSM associated with this cluster'}, {u'name': u'vsmpassword', u'required': False, u'related': [], u'length': 255, u'type': u'string', u'description': u'the password for the VSM associated with this cluster'}, {u'name': u'vsmipaddress', u'required': False, u'related': [], u'length': 255, u'type': u'string', u'description': u'the ipaddress of the VSM associated with this cluster'}, {u'name': u'zoneid', u'required': True, u'related': [u'listZones', u'updateZone', u'createZone', u'listZones'], u'length': 255, u'type': u'uuid', u'description': u'the Zone ID for the cluster'}, {u'name': u'guestvswitchtype', u'required': False, u'related': [], u'length': 255, u'type': u'string', u'description': u'Type of virtual switch used for guest traffic in the cluster. Allowed values are, vmwaresvs (for VMware standard vSwitch) and vmwaredvs (for VMware distributed vSwitch)'}, {u'name': u'hypervisor', u'required': True, u'related': [], u'length': 255, u'type': u'string', u'description': u'hypervisor type of the cluster: XenServer,KVM,VMware,Hyperv,BareMetal,Simulator'}, {u'name': u'username', u'required': False, u'related': [], u'length': 255, u'type': u'string', u'description': u'the username for the cluster'}, {u'name': u'publicvswitchname', u'required': False, u'related': [], u'length': 255, u'type': u'string', u'description': u'Name of virtual switch used for public traffic in the cluster. This would override zone wide traffic label setting.'}, {u'name': u'clustername', u'required': True, u'related': [], u'length': 255, u'type': u'string', u'description': u'the cluster name'}], u'requiredparams': [u'clustertype', u'podid', u'zoneid', u'hypervisor', u'clustername'], u'description': u'Adds a new cluster'}, u'opendaylightcontroller': {u'name': u'addOpenDaylightController', u'related': [u'deleteOpenDaylightController', u'listOpenDaylightControllers'], u'isasync': True, u'params': [{u'name': u'url', u'required': True, u'related': [], u'length': 255, u'type': u'string', u'description': u'Api URL of the OpenDaylight Controller.'}, {u'name': u'username', u'required': True, u'related': [], u'length': 255, u'type': u'string', u'description': u'Username to access the OpenDaylight API'}, {u'name': u'physicalnetworkid', u'required': True, u'related': [u'listPhysicalNetworks'], u'length': 255, u'type': u'uuid', u'description': u'the Physical Network ID'}, {u'name': u'password', u'required': True, u'related': [], u'length': 255, u'type': u'string', u'description': u'Credential to access the OpenDaylight API'}], u'requiredparams': [u'url', u'username', u'physicalnetworkid', u'password'], u'description': u'Adds an OpenDyalight controler'}, u'networkdevice': {u'name': u'addNetworkDevice', u'related': [u'listNetworkDevice'], u'isasync': False, u'params': [{u'name': u'networkdeviceparameterlist', u'required': False, u'related': [], u'length': 255, u'type': u'map', u'description': u'parameters for network device'}, {u'name': u'networkdevicetype', u'required': False, u'related': [], u'length': 255, u'type': u'string', u'description': u'Network device type, now supports ExternalDhcp, PxeServer, NetscalerMPXLoadBalancer, NetscalerVPXLoadBalancer, NetscalerSDXLoadBalancer, F5BigIpLoadBalancer, JuniperSRXFirewall, PaloAltoFirewall'}], u'requiredparams': [], u'description': u'Adds a network device of one of the following types: ExternalDhcp, ExternalFirewall, ExternalLoadBalancer, PxeServer'}, u'guestos': {u'name': u'addGuestOs', u'related': [], u'isasync': True, u'params': [{u'name': u'osdisplayname', u'required': True, u'related': [], u'length': 255, u'type': u'string', u'description': u'Unique display name for Guest OS'}, {u'name': u'oscategoryid', u'required': True, u'related': [], u'length': 255, u'type': u'uuid', u'description': u'ID of Guest OS category'}, {u'name': u'name', u'required': False, u'related': [], u'length': 255, u'type': u'string', u'description': u'Optional name for Guest OS'}], u'requiredparams': [u'osdisplayname', u'oscategoryid'], u'description': u'Add a new guest OS type'}, u'baremetalpxekickstartserver': {u'name': u'addBaremetalPxeKickStartServer', u'related': [], u'isasync': True, u'params': [{u'name': u'username', u'required': True, u'related': [], u'length': 255, u'type': u'string', u'description': u'Credentials to reach external pxe device'}, {u'name': u'physicalnetworkid', u'required': True, u'related': [u'listPhysicalNetworks'], u'length': 255, u'type': u'uuid', u'description': u'the Physical Network ID'}, {u'name': u'password', u'required': True, u'related': [], u'length': 255, u'type': u'string', u'description': u'Credentials to reach external pxe device'}, {u'name': u'pxeservertype', u'required': True, u'related': [], u'length': 255, u'type': u'string', u'description': u'type of pxe device'}, {u'name': u'podid', u'required': False, u'related': [u'updatePod'], u'length': 255, u'type': u'uuid', u'description': u'Pod Id'}, {u'name': u'url', u'required': True, u'related': [], u'length': 255, u'type': u'string', u'description': u'URL of the external pxe device'}, {u'name': u'tftpdir', u'required': True, u'related': [], u'length': 255, u'type': u'string', u'description': u'Tftp root directory of PXE server'}], u'requiredparams': [u'username', u'physicalnetworkid', u'password', u'pxeservertype', u'url', u'tftpdir'], u'description': u'add a baremetal pxe server'}, u'baremetalpxepingserver': {u'name': u'addBaremetalPxePingServer', u'related': [], u'isasync': True, u'params': [{u'name': u'pingcifsusername', u'required': False, u'related': [], u'length': 255, u'type': u'string', u'description': u'Username of PING storage server'}, {u'name': u'tftpdir', u'required': True, u'related': [], u'length': 255, u'type': u'string', u'description': u'Tftp root directory of PXE server'}, {u'name': u'pxeservertype', u'required': True, u'related': [], u'length': 255, u'type': u'string', u'description': u'type of pxe device'}, {u'name': u'username', u'required': True, u'related': [], u'length': 255, u'type': u'string', u'description': u'Credentials to reach external pxe device'}, {u'name': u'url', u'required': True, u'related': [], u'length': 255, u'type': u'string', u'description': u'URL of the external pxe device'}, {u'name': u'podid', u'required': False, u'related': [u'updatePod', u'createPod', u'listPods'], u'length': 255, u'type': u'uuid', u'description': u'Pod Id'}, {u'name': u'physicalnetworkid', u'required': True, u'related': [u'listPhysicalNetworks', u'createPhysicalNetwork'], u'length': 255, u'type': u'uuid', u'description': u'the Physical Network ID'}, {u'name': u'pingstorageserverip', u'required': True, u'related': [], u'length': 255, u'type': u'string', u'description': u'PING storage server ip'}, {u'name': u'password', u'required': True, u'related': [], u'length': 255, u'type': u'string', u'description': u'Credentials to reach external pxe device'}, {u'name': u'pingdir', u'required': True, u'related': [], u'length': 255, u'type': u'string', u'description': u'Root directory on PING storage server'}, {u'name': u'pingcifspassword', u'required': False, u'related': [], u'length': 255, u'type': u'string', u'description': u'Password of PING storage server'}], u'requiredparams': [u'tftpdir', u'pxeservertype', u'username', u'url', u'physicalnetworkid', u'pingstorageserverip', u'password', u'pingdir'], u'description': u'add a baremetal ping pxe server'}, u's3': {u'name': u'addS3', u'related': [u'createSecondaryStagingStore', u'listSecondaryStagingStores', u'addImageStore', u'listSwifts'], u'isasync': False, u'params': [{u'name': u'endpoint', u'required': False, u'related': [], u'length': 255, u'type': u'string', u'description': u'S3 host name'}, {u'name': u'connectiontimeout', u'required': False, u'related': [], u'length': 255, u'type': u'integer', u'description': u'connection timeout (milliseconds)'}, {u'name': u'bucket', u'required': True, u'related': [], u'length': 255, u'type': u'string', u'description': u'name of the template storage bucket'}, {u'name': u'sockettimeout', u'required': False, u'related': [], u'length': 255, u'type': u'integer', u'description': u'socket timeout (milliseconds)'}, {u'name': u'usehttps', u'required': False, u'related': [], u'length': 255, u'type': u'boolean', u'description': u'connect to the S3 endpoint via HTTPS?'}, {u'name': u'secretkey', u'required': True, u'related': [], u'length': 255, u'type': u'string', u'description': u'S3 secret key'}, {u'name': u'accesskey', u'required': True, u'related': [], u'length': 255, u'type': u'string', u'description': u'S3 access key'}, {u'name': u'maxerrorretry', u'required': False, u'related': [], u'length': 255, u'type': u'integer', u'description': u'maximum number of times to retry on error'}], u'requiredparams': [u'bucket', u'secretkey', u'accesskey'], u'description': u'Adds S3'}, u'resourcedetail': {u'name': u'addResourceDetail', u'related': [], u'isasync': True, u'params': [{u'name': u'resourcetype', u'required': True, u'related': [], u'length': 255, u'type': u'string', u'description': u'type of the resource'}, {u'name': u'details', u'required': True, u'related': [], u'length': 255, u'type': u'map', u'description': u'Map of (key/value pairs)'}, {u'name': u'fordisplay', u'required': False, u'related': [], u'length': 255, u'type': u'boolean', u'description': u'pass false if you want this detail to be disabled for the regular user. True by default'}, {u'name': u'resourceid', u'required': True, u'related': [], u'length': 255, u'type': u'string', u'description': u'resource id to create the details for'}], u'requiredparams': [u'resourcetype', u'details', u'resourceid'], u'description': u'Adds detail for the Resource.'}, u'guestosmapping': {u'name': u'addGuestOsMapping', u'related': [], u'isasync': True, u'params': [{u'name': u'hypervisor', u'required': True, u'related': [], u'length': 255, u'type': u'string', u'description': u'Hypervisor type. One of : XenServer, KVM, VMWare'}, {u'name': u'osnameforhypervisor', u'required': True, u'related': [], u'length': 255, u'type': u'string', u'description': u'OS name specific to the hypervisor'}, {u'name': u'hypervisorversion', u'required': True, u'related': [], u'length': 255, u'type': u'string', u'description': u"Hypervisor version to create the mapping for. Use 'default' for default versions"}, {u'name': u'ostypeid', u'required': False, u'related': [u'addGuestOs'], u'length': 255, u'type': u'uuid', u'description': u'UUID of Guest OS type. Either the UUID or Display Name must be passed'}, {u'name': u'osdisplayname', u'required': False, u'related': [], u'length': 255, u'type': u'string', u'description': u'Display Name of Guest OS standard type. Either Display Name or UUID must be passed'}], u'requiredparams': [u'hypervisor', u'osnameforhypervisor', u'hypervisorversion'], u'description': u'Adds a guest OS name to hypervisor OS name mapping'}, u'ucsmanager': {u'name': u'addUcsManager', u'related': [], u'isasync': False, u'params': [{u'name': u'zoneid', u'required': True, u'related': [u'listZones'], u'length': 255, u'type': u'uuid', u'description': u'the Zone id for the ucs manager'}, {u'name': u'url', u'required': True, u'related': [], u'length': 255, u'type': u'string', u'description': u'the name of UCS url'}, {u'name': u'name', u'required': False, u'related': [], u'length': 255, u'type': u'string', u'description': u'the name of UCS manager'}, {u'name': u'username', u'required': True, u'related': [], u'length': 255, u'type': u'string', u'description': u'the username of UCS'}, {u'name': u'password', u'required': True, u'related': [], u'length': 255, u'type': u'string', u'description': u'the password of UCS'}], u'requiredparams': [u'zoneid', u'url', u'username', u'password'], u'description': u'Adds a Ucs manager'}, u'niciranvpdevice': {u'name': u'addNiciraNvpDevice', u'related': [], u'isasync': True, u'params': [{u'name': u'password', u'required': True, u'related': [], u'length': 255, u'type': u'string', u'description': u'Credentials to access the Nicira Controller API'}, {u'name': u'hostname', u'required': True, u'related': [], u'length': 255, u'type': u'string', u'description': u'Hostname of ip address of the Nicira NVP Controller.'}, {u'name': u'physicalnetworkid', u'required': True, u'related': [u'listPhysicalNetworks', u'createPhysicalNetwork'], u'length': 255, u'type': u'uuid', u'description': u'the Physical Network ID'}, {u'name': u'transportzoneuuid', u'required': True, u'related': [], u'length': 255, u'type': u'string', u'description': u'The Transportzone UUID configured on the Nicira Controller'}, {u'name': u'username', u'required': True, u'related': [], u'length': 255, u'type': u'string', u'description': u'Credentials to access the Nicira Controller API'}, {u'name': u'l3gatewayserviceuuid', u'required': False, u'related': [], u'length': 255, u'type': u'string', u'description': u'The L3 Gateway Service UUID configured on the Nicira Controller'}], u'requiredparams': [u'password', u'hostname', u'physicalnetworkid', u'transportzoneuuid', u'username'], u'description': u'Adds a Nicira NVP device'}, u'baremetaldhcp': {u'name': u'addBaremetalDhcp', u'related': [], u'isasync': True, u'params': [{u'name': u'physicalnetworkid', u'required': True, u'related': [], u'length': 255, u'type': u'uuid', u'description': u'the Physical Network ID'}, {u'name': u'password', u'required': True, u'related': [], u'length': 255, u'type': u'string', u'description': u'Credentials to reach external dhcp device'}, {u'name': u'username', u'required': True, u'related': [], u'length': 255, u'type': u'string', u'description': u'Credentials to reach external dhcp device'}, {u'name': u'dhcpservertype', u'required': True, u'related': [], u'length': 255, u'type': u'string', u'description': u'Type of dhcp device'}, {u'name': u'url', u'required': True, u'related': [], u'length': 255, u'type': u'string', u'description': u'URL of the external dhcp appliance.'}], u'requiredparams': [u'physicalnetworkid', u'password', u'username', u'dhcpservertype', u'url'], u'description': u'adds a baremetal dhcp server'}, u'trafficmonitor': {u'name': u'addTrafficMonitor', u'related': [u'listTrafficMonitors'], u'isasync': False, u'params': [{u'name': u'includezones', u'required': False, u'related': [], u'length': 255, u'type': u'string', u'description': u'Traffic going into the listed zones will be metered'}, {u'name': u'zoneid', u'required': True, u'related': [u'listZones', u'updateZone', u'createZone', u'listZones'], u'length': 255, u'type': u'uuid', u'description': u'Zone in which to add the external firewall appliance.'}, {u'name': u'excludezones', u'required': False, u'related': [], u'length': 255, u'type': u'string', u'description': u'Traffic going into the listed zones will not be metered'}, {u'name': u'url', u'required': True, u'related': [], u'length': 255, u'type': u'string', u'description': u'URL of the traffic monitor Host'}], u'requiredparams': [u'zoneid', u'url'], u'description': u'Adds Traffic Monitor Host for Direct Network Usage'}, u'ldapconfiguration': {u'name': u'addLdapConfiguration', u'related': [], u'isasync': False, u'params': [{u'name': u'hostname', u'required': True, u'related': [], u'length': 255, u'type': u'string', u'description': u'Hostname'}, {u'name': u'port', u'required': True, u'related': [], u'length': 255, u'type': u'integer', u'description': u'Port'}], u'requiredparams': [u'hostname', u'port'], u'description': u'Add a new Ldap Configuration'}, u'vpnuser': {u'name': u'addVpnUser', u'related': [u'listVpnUsers'], u'isasync': True, u'params': [{u'name': u'projectid', u'required': False, u'related': [u'createProject'], u'length': 255, u'type': u'uuid', u'description': u'add vpn user to the specific project'}, {u'name': u'account', u'required': False, u'related': [], u'length': 255, u'type': u'string', u'description': u'an optional account for the vpn user. Must be used with domainId.'}, {u'name': u'domainid', u'required': False, u'related': [u'listDomainChildren'], u'length': 255, u'type': u'uuid', u'description': u'an optional domainId for the vpn user. If the account parameter is used, domainId must also be used.'}, {u'name': u'password', u'required': True, u'related': [], u'length': 255, u'type': u'string', u'description': u'password for the username'}, {u'name': u'username', u'required': True, u'related': [], u'length': 255, u'type': u'string', u'description': u'username for the vpn user'}], u'requiredparams': [u'password', u'username'], u'description': u'Adds vpn users'}, u'traffictype': {u'name': u'addTrafficType', u'related': [], u'isasync': True, u'params': [{u'name': u'vlan', u'required': False, u'related': [], u'length': 255, u'type': u'string', u'description': u'The VLAN id to be used for Management traffic by VMware host'}, {u'name': u'kvmnetworklabel', u'required': False, u'related': [], u'length': 255, u'type': u'string', u'description': u'The network name label of the physical device dedicated to this traffic on a KVM host'}, {u'name': u'xennetworklabel', u'required': False, u'related': [], u'length': 255, u'type': u'string', u'description': u'The network name label of the physical device dedicated to this traffic on a XenServer host'}, {u'name': u'hypervnetworklabel', u'required': False, u'related': [], u'length': 255, u'type': u'string', u'description': u'The network name label of the physical device dedicated to this traffic on a Hyperv host'}, {u'name': u'isolationmethod', u'required': False, u'related': [], u'length': 255, u'type': u'string', u'description': u"Used if physical network has multiple isolation types and traffic type is public. Choose which isolation method. Valid options currently 'vlan' or 'vxlan', defaults to 'vlan'."}, {u'name': u'traffictype', u'required': True, u'related': [], u'length': 255, u'type': u'string', u'description': u'the trafficType to be added to the physical network'}, {u'name': u'vmwarenetworklabel', u'required': False, u'related': [], u'length': 255, u'type': u'string', u'description': u'The network name label of the physical device dedicated to this traffic on a VMware host'}, {u'name': u'physicalnetworkid', u'required': True, u'related': [u'listPhysicalNetworks'], u'length': 255, u'type': u'uuid', u'description': u'the Physical Network ID'}], u'requiredparams': [u'traffictype', u'physicalnetworkid'], u'description': u'Adds traffic type to a physical network'}, u'host': {u'name': u'addHost', u'related': [u'updateHost', u'prepareHostForMaintenance', u'listHosts'], u'isasync': False, u'params': [{u'name': u'url', u'required': True, u'related': [], u'length': 255, u'type': u'string', u'description': u'the host URL'}, {u'name': u'podid', u'required': True, u'related': [u'updatePod', u'createPod'], u'length': 255, u'type': u'uuid', u'description': u'the Pod ID for the host'}, {u'name': u'password', u'required': True, u'related': [], u'length': 255, u'type': u'string', u'description': u'the password for the host'}, {u'name': u'zoneid', u'required': True, u'related': [u'listZones', u'updateZone', u'createZone', u'listZones'], u'length': 255, u'type': u'uuid', u'description': u'the Zone ID for the host'}, {u'name': u'username', u'required': True, u'related': [], u'length': 255, u'type': u'string', u'description': u'the username for the host'}, {u'name': u'clusterid', u'required': False, u'related': [u'updateCluster'], u'length': 255, u'type': u'uuid', u'description': u'the cluster ID for the host'}, {u'name': u'hypervisor', u'required': True, u'related': [], u'length': 255, u'type': u'string', u'description': u'hypervisor type of the host'}, {u'name': u'clustername', u'required': False, u'related': [], u'length': 255, u'type': u'string', u'description': u'the cluster name for the host'}, {u'name': u'allocationstate', u'required': False, u'related': [], u'length': 255, u'type': u'string', u'description': u'Allocation state of this Host for allocation of new resources'}, {u'name': u'hosttags', u'required': False, u'related': [], u'length': 255, u'type': u'list', u'description': u'list of tags to be added to the host'}], u'requiredparams': [u'url', u'podid', u'password', u'zoneid', u'username', u'hypervisor'], u'description': u'Adds a new host.'}, u'swift': {u'name': u'addSwift', u'related': [u'addS3', u'createSecondaryStagingStore', u'listSecondaryStagingStores', u'addImageStore', u'listSwifts'], u'isasync': False, u'params': [{u'name': u'username', u'required': False, u'related': [], u'length': 255, u'type': u'string', u'description': u'the username for swift'}, {u'name': u'account', u'required': False, u'related': [], u'length': 255, u'type': u'string', u'description': u'the account for swift'}, {u'name': u'key', u'required': False, u'related': [], u'length': 255, u'type': u'string', u'description': u' key for the user for swift'}, {u'name': u'url', u'required': True, u'related': [], u'length': 255, u'type': u'string', u'description': u'the URL for swift'}], u'requiredparams': [u'url'], u'description': u'Adds Swift.'}, u'baremetalhost': {u'name': u'addBaremetalHost', u'related': [u'updateHost', u'prepareHostForMaintenance', u'listHosts', u'addHost'], u'isasync': False, u'params': [{u'name': u'url', u'required': True, u'related': [], u'length': 255, u'type': u'string', u'description': u'the host URL'}, {u'name': u'ipaddress', u'required': False, u'related': [], u'length': 255, u'type': u'string', u'description': u'ip address intentionally allocated to this host after provisioning'}, {u'name': u'clustername', u'required': False, u'related': [], u'length': 255, u'type': u'string', u'description': u'the cluster name for the host'}, {u'name': u'clusterid', u'required': False, u'related': [u'updateCluster'], u'length': 255, u'type': u'uuid', u'description': u'the cluster ID for the host'}, {u'name': u'hosttags', u'required': False, u'related': [], u'length': 255, u'type': u'list', u'description': u'list of tags to be added to the host'}, {u'name': u'password', u'required': True, u'related': [], u'length': 255, u'type': u'string', u'description': u'the password for the host'}, {u'name': u'zoneid', u'required': True, u'related': [u'listZones', u'updateZone', u'createZone', u'listZones'], u'length': 255, u'type': u'uuid', u'description': u'the Zone ID for the host'}, {u'name': u'username', u'required': True, u'related': [], u'length': 255, u'type': u'string', u'description': u'the username for the host'}, {u'name': u'allocationstate', u'required': False, u'related': [], u'length': 255, u'type': u'string', u'description': u'Allocation state of this Host for allocation of new resources'}, {u'name': u'hypervisor', u'required': True, u'related': [], u'length': 255, u'type': u'string', u'description': u'hypervisor type of the host'}, {u'name': u'podid', u'required': True, u'related': [u'updatePod', u'createPod', u'listPods'], u'length': 255, u'type': u'uuid', u'description': u'the Pod ID for the host'}], u'requiredparams': [u'url', u'password', u'zoneid', u'username', u'hypervisor', u'podid'], u'description': u'add a baremetal host'}, u'netscalerloadbalancer': {u'name': u'addNetscalerLoadBalancer', u'related': [u'listNetscalerLoadBalancers', u'configureNetscalerLoadBalancer'], u'isasync': True, u'params': [{u'name': u'networkdevicetype', u'required': True, u'related': [], u'length': 255, u'type': u'string', u'description': u'Netscaler device type supports NetscalerMPXLoadBalancer, NetscalerVPXLoadBalancer, NetscalerSDXLoadBalancer'}, {u'name': u'gslbproviderprivateip', u'required': False, u'related': [], u'length': 255, u'type': u'string', u'description': u'public IP of the site'}, {u'name': u'gslbprovider', u'required': False, u'related': [], u'length': 255, u'type': u'boolean', u'description': u'true if NetScaler device being added is for providing GSLB service'}, {u'name': u'isexclusivegslbprovider', u'required': False, u'related': [], u'length': 255, u'type': u'boolean', u'description': u'true if NetScaler device being added is for providing GSLB service exclusively and can not be used for LB'}, {u'name': u'gslbproviderpublicip', u'required': False, u'related': [], u'length': 255, u'type': u'string', u'description': u'public IP of the site'}, {u'name': u'username', u'required': True, u'related': [], u'length': 255, u'type': u'string', u'description': u'Credentials to reach netscaler load balancer device'}, {u'name': u'password', u'required': True, u'related': [], u'length': 255, u'type': u'string', u'description': u'Credentials to reach netscaler load balancer device'}, {u'name': u'url', u'required': True, u'related': [], u'length': 255, u'type': u'string', u'description': u'URL of the netscaler load balancer appliance.'}, {u'name': u'physicalnetworkid', u'required': True, u'related': [u'listPhysicalNetworks', u'updatePhysicalNetwork', u'createPhysicalNetwork'], u'length': 255, u'type': u'uuid', u'description': u'the Physical Network ID'}], u'requiredparams': [u'networkdevicetype', u'username', u'password', u'url', u'physicalnetworkid'], u'description': u'Adds a netscaler load balancer device'}, u'paloaltofirewall': {u'name': u'addPaloAltoFirewall', u'related': [u'configurePaloAltoFirewall', u'listPaloAltoFirewalls'], u'isasync': True, u'params': [{u'name': u'username', u'required': True, u'related': [], u'length': 255, u'type': u'string', u'description': u'Credentials to reach Palo Alto firewall device'}, {u'name': u'networkdevicetype', u'required': True, u'related': [], u'length': 255, u'type': u'string', u'description': u'supports only PaloAltoFirewall'}, {u'name': u'url', u'required': True, u'related': [], u'length': 255, u'type': u'string', u'description': u'URL of the Palo Alto appliance.'}, {u'name': u'physicalnetworkid', u'required': True, u'related': [u'listPhysicalNetworks', u'createPhysicalNetwork'], u'length': 255, u'type': u'uuid', u'description': u'the Physical Network ID'}, {u'name': u'password', u'required': True, u'related': [], u'length': 255, u'type': u'string', u'description': u'Credentials to reach Palo Alto firewall device'}], u'requiredparams': [u'username', u'networkdevicetype', u'url', u'physicalnetworkid', u'password'], u'description': u'Adds a Palo Alto firewall device'}, u'region': {u'name': u'addRegion', u'related': [], u'isasync': False, u'params': [{u'name': u'endpoint', u'required': True, u'related': [], u'length': 255, u'type': u'string', u'description': u'Region service endpoint'}, {u'name': u'id', u'required': True, u'related': [], u'length': 255, u'type': u'integer', u'description': u'Id of the Region'}, {u'name': u'name', u'required': True, u'related': [], u'length': 255, u'type': u'string', u'description': u'Name of the region'}], u'requiredparams': [u'endpoint', u'id', u'name'], u'description': u'Adds a Region'}, u'stratospheressp': {u'name': u'addStratosphereSsp', u'related': [], u'isasync': False, u'params': [{u'name': u'password', u'required': False, u'related': [], u'length': 255, u'type': u'string', u'description': u'stratosphere ssp api password'}, {u'name': u'zoneid', u'required': True, u'related': [u'listZones'], u'length': 255, u'type': u'uuid', u'description': u'the zone ID'}, {u'name': u'username', u'required': False, u'related': [], u'length': 255, u'type': u'string', u'description': u'stratosphere ssp api username'}, {u'name': u'tenantuuid', u'required': False, u'related': [], u'length': 255, u'type': u'string', u'description': u'stratosphere ssp tenant uuid'}, {u'name': u'name', u'required': True, u'related': [], u'length': 255, u'type': u'string', u'description': u'stratosphere ssp api name'}, {u'name': u'url', u'required': True, u'related': [], u'length': 255, u'type': u'string', u'description': u'stratosphere ssp server url'}], u'requiredparams': [u'zoneid', u'name', u'url'], u'description': u'Adds stratosphere ssp server'}, u'iptonic': {u'name': u'addIpToNic', u'related': [], u'isasync': True, u'params': [{u'name': u'ipaddress', u'required': False, u'related': [], u'length': 255, u'type': u'string', u'description': u'Secondary IP Address'}, {u'name': u'nicid', u'required': True, u'related': [u'listNics'], u'length': 255, u'type': u'uuid', u'description': u'the ID of the nic to which you want to assign private IP'}], u'requiredparams': [u'nicid'], u'description': u'Assigns secondary IP to NIC'}, u'bigswitchvnsdevice': {u'name': u'addBigSwitchVnsDevice', u'related': [u'listBigSwitchVnsDevices'], u'isasync': True, u'params': [{u'name': u'physicalnetworkid', u'required': True, u'related': [u'listPhysicalNetworks'], u'length': 255, u'type': u'uuid', u'description': u'the Physical Network ID'}, {u'name': u'hostname', u'required': True, u'related': [], u'length': 255, u'type': u'string', u'description': u'Hostname of ip address of the BigSwitch VNS Controller.'}], u'requiredparams': [u'physicalnetworkid', u'hostname'], u'description': u'Adds a BigSwitch VNS device'}, u'imagestore': {u'name': u'addImageStore', u'related': [u'createSecondaryStagingStore', u'listSwifts'], u'isasync': False, u'params': [{u'name': u'provider', u'required': True, u'related': [], u'length': 255, u'type': u'string', u'description': u'the image store provider name'}, {u'name': u'name', u'required': False, u'related': [], u'length': 255, u'type': u'string', u'description': u'the name for the image store'}, {u'name': u'zoneid', u'required': False, u'related': [u'listZones', u'updateZone', u'createZone', u'listZones'], u'length': 255, u'type': u'uuid', u'description': u'the Zone ID for the image store'}, {u'name': u'url', u'required': False, u'related': [], u'length': 255, u'type': u'string', u'description': u'the URL for the image store'}, {u'name': u'details', u'required': False, u'related': [], u'length': 255, u'type': u'map', u'description': u'the details for the image store. Example: details[0].key=accesskey&details[0].value=s389ddssaa&details[1].key=secretkey&details[1].value=8dshfsss'}], u'requiredparams': [u'provider'], u'description': u'Adds backup image store.'}, u'networkserviceprovider': {u'name': u'addNetworkServiceProvider', u'related': [u'updateNetworkServiceProvider'], u'isasync': True, u'params': [{u'name': u'name', u'required': True, u'related': [], u'length': 255, u'type': u'string', u'description': u'the name for the physical network service provider'}, {u'name': u'servicelist', u'required': False, u'related': [], u'length': 255, u'type': u'list', u'description': u'the list of services to be enabled for this physical network service provider'}, {u'name': u'destinationphysicalnetworkid', u'required': False, u'related': [u'listPhysicalNetworks'], u'length': 255, u'type': u'uuid', u'description': u'the destination Physical Network ID to bridge to'}, {u'name': u'physicalnetworkid', u'required': True, u'related': [u'listPhysicalNetworks'], u'length': 255, u'type': u'uuid', u'description': u'the Physical Network ID to add the provider to'}], u'requiredparams': [u'name', u'physicalnetworkid'], u'description': u'Adds a network serviceProvider to a physical network'}, u'secondarystorage': {u'name': u'addSecondaryStorage', u'related': [u'addS3', u'createSecondaryStagingStore', u'listSecondaryStagingStores', u'addImageStore', u'listSwifts', u'listImageStores', u'listS3s', u'addSwift'], u'isasync': False, u'params': [{u'name': u'url', u'required': True, u'related': [], u'length': 255, u'type': u'string', u'description': u'the URL for the secondary storage'}, {u'name': u'zoneid', u'required': False, u'related': [u'listZones', u'updateZone', u'createZone', u'listZones'], u'length': 255, u'type': u'uuid', u'description': u'the Zone ID for the secondary storage'}], u'requiredparams': [u'url'], u'description': u'Adds secondary storage.'}}, u'verbs': [u'authorize', u'restore', u'suspend', u'revoke', u'disassociate', u'migrate', u'lock', u'dedicate', u'activate', u'reconnect', u'cancel', u'query', u'recover', u'extract', u'archive', u'detach', u'prepare', u'start', u'revert', u'create', u'associate', u'reboot', u'find', u'attach', u'add', u'restart', u'deploy', u'ldap', u'destroy', u'enable', u'configure', u'get', u'stop', u'update', u'change', u'replace', u'disable', u'scale', u'import', u'copy', u'generate', u'resize', u'reset', u'expunge', u'upgrade', u'register', u'list', u'upload', u'remove', u'mark', u'clean', u'release', u'assign', u'delete'], u'change': {u'serviceforvirtualmachine': {u'name': u'changeServiceForVirtualMachine', u'related': [u'updateVirtualMachine', u'assignVirtualMachine', u'detachIso', u'updateDefaultNicForVirtualMachine', u'revertToVMSnapshot', u'startVirtualMachine', u'resetPasswordForVirtualMachine', u'stopVirtualMachine', u'listVirtualMachines', u'migrateVirtualMachineWithVolume', u'destroyVirtualMachine', u'startVirtualMachine', u'listVirtualMachines', u'updateVMAffinityGroup', u'removeNicFromVirtualMachine', u'deployVirtualMachine', u'revertToVMSnapshot', u'addNicToVirtualMachine', u'restoreVirtualMachine', u'restoreVirtualMachine', u'stopVirtualMachine', u'changeServiceForVirtualMachine', u'destroyVirtualMachine', u'migrateVirtualMachine', u'updateVirtualMachine', u'detachIso', u'resetSSHKeyForVirtualMachine', u'attachIso', u'rebootVirtualMachine'], u'isasync': False, u'params': [{u'name': u'details', u'required': False, u'related': [], u'length': 255, u'type': u'map', u'description': u'name value pairs of custom parameters for cpu, memory and cpunumber. example details[i].name=value'}, {u'name': u'serviceofferingid', u'required': True, u'related': [u'listServiceOfferings'], u'length': 255, u'type': u'uuid', u'description': u'the service offering ID to apply to the virtual machine'}, {u'name': u'id', u'required': True, u'related': [u'updateVirtualMachine', u'assignVirtualMachine', u'detachIso', u'updateDefaultNicForVirtualMachine', u'revertToVMSnapshot', u'startVirtualMachine', u'resetPasswordForVirtualMachine', u'stopVirtualMachine', u'listVirtualMachines', u'migrateVirtualMachineWithVolume', u'destroyVirtualMachine', u'startVirtualMachine', u'listVirtualMachines', u'changeServiceForVirtualMachine', u'updateVMAffinityGroup', u'removeNicFromVirtualMachine', u'deployVirtualMachine', u'revertToVMSnapshot', u'addNicToVirtualMachine', u'restoreVirtualMachine', u'restoreVirtualMachine', u'stopVirtualMachine', u'changeServiceForVirtualMachine', u'destroyVirtualMachine', u'migrateVirtualMachine', u'updateVirtualMachine', u'detachIso', u'resetSSHKeyForVirtualMachine', u'attachIso', u'rebootVirtualMachine'], u'length': 255, u'type': u'uuid', u'description': u'The ID of the virtual machine'}], u'requiredparams': [u'serviceofferingid', u'id'], u'description': u'Changes the service offering for a virtual machine. The virtual machine must be in a "Stopped" state for this command to take effect.'}, u'serviceforsystemvm': {u'name': u'changeServiceForSystemVm', u'related': [u'migrateSystemVm', u'scaleSystemVm', u'listSystemVms', u'rebootSystemVm'], u'isasync': False, u'params': [{u'name': u'details', u'required': False, u'related': [], u'length': 255, u'type': u'map', u'description': u'name value pairs of custom parameters for cpu, memory and cpunumber. example details[i].name=value'}, {u'name': u'serviceofferingid', u'required': True, u'related': [u'createServiceOffering', u'listServiceOfferings'], u'length': 255, u'type': u'uuid', u'description': u'the service offering ID to apply to the system vm'}, {u'name': u'id', u'required': True, u'related': [u'migrateSystemVm', u'scaleSystemVm', u'changeServiceForSystemVm', u'listSystemVms', u'rebootSystemVm'], u'length': 255, u'type': u'uuid', u'description': u'The ID of the system vm'}], u'requiredparams': [u'serviceofferingid', u'id'], u'description': u'Changes the service offering for a system vm (console proxy or secondary storage). The system vm must be in a "Stopped" state for this command to take effect.'}, u'serviceforrouter': {u'name': u'changeServiceForRouter', u'related': [u'startRouter', u'listInternalLoadBalancerVMs'], u'isasync': False, u'params': [{u'name': u'id', u'required': True, u'related': [u'changeServiceForRouter', u'startRouter', u'listInternalLoadBalancerVMs'], u'length': 255, u'type': u'uuid', u'description': u'The ID of the router'}, {u'name': u'serviceofferingid', u'required': True, u'related': [u'createServiceOffering', u'listServiceOfferings'], u'length': 255, u'type': u'uuid', u'description': u'the service offering ID to apply to the domain router'}], u'requiredparams': [u'id', u'serviceofferingid'], u'description': u'Upgrades domain router to a new service offering'}}, u'ldap': {u'createaccount': {u'name': u'ldapCreateAccount', u'related': [u'listAccounts', u'createAccount', u'markDefaultZoneForAccount', u'listAccounts', u'disableAccount'], u'isasync': False, u'params': [{u'name': u'userid', u'required': False, u'related': [], u'length': 255, u'type': u'string', u'description': u'User UUID, required for adding account from external provisioning system'}, {u'name': u'accountid', u'required': False, u'related': [], u'length': 255, u'type': u'string', u'description': u'Account UUID, required for adding account from external provisioning system'}, {u'name': u'username', u'required': True, u'related': [], u'length': 255, u'type': u'string', u'description': u'Unique username.'}, {u'name': u'account', u'required': False, u'related': [], u'length': 255, u'type': u'string', u'description': u'Creates the user under the specified account. If no account is specified, the username will be used as the account name.'}, {u'name': u'domainid', u'required': False, u'related': [u'listDomains', u'updateDomain', u'listDomainChildren'], u'length': 255, u'type': u'uuid', u'description': u'Creates the user under the specified domain.'}, {u'name': u'networkdomain', u'required': False, u'related': [], u'length': 255, u'type': u'string', u'description': u"Network domain for the account's networks"}, {u'name': u'accounttype', u'required': True, u'related': [], u'length': 255, u'type': u'short', u'description': u'Type of the account. Specify 0 for user, 1 for root admin, and 2 for domain admin'}, {u'name': u'timezone', u'required': False, u'related': [], u'length': 255, u'type': u'string', u'description': u'Specifies a timezone for this command. For more information on the timezone parameter, see Time Zone Format.'}, {u'name': u'accountdetails', u'required': False, u'related': [], u'length': 255, u'type': u'map', u'description': u'details for account used to store specific parameters'}], u'requiredparams': [u'username', u'accounttype'], u'description': u'Creates an account from an LDAP user'}}, u'destroy': {u'systemvm': {u'name': u'destroySystemVm', u'related': [u'migrateSystemVm', u'startSystemVm', u'scaleSystemVm', u'changeServiceForSystemVm', u'listSystemVms', u'rebootSystemVm', u'stopSystemVm'], u'isasync': True, u'params': [{u'name': u'id', u'required': True, u'related': [u'destroySystemVm', u'migrateSystemVm', u'startSystemVm', u'scaleSystemVm', u'changeServiceForSystemVm', u'listSystemVms', u'rebootSystemVm', u'stopSystemVm'], u'length': 255, u'type': u'uuid', u'description': u'The ID of the system virtual machine'}], u'requiredparams': [u'id'], u'description': u'Destroyes a system virtual machine.'}, u'router': {u'name': u'destroyRouter', u'related': [u'changeServiceForRouter', u'stopInternalLoadBalancerVM', u'rebootRouter', u'startRouter', u'listInternalLoadBalancerVMs'], u'isasync': True, u'params': [{u'name': u'id', u'required': True, u'related': [u'destroyRouter', u'changeServiceForRouter', u'stopInternalLoadBalancerVM', u'rebootRouter', u'startRouter', u'listInternalLoadBalancerVMs'], u'length': 255, u'type': u'uuid', u'description': u'the ID of the router'}], u'requiredparams': [u'id'], u'description': u'Destroys a router.'}, u'virtualmachine': {u'name': u'destroyVirtualMachine', u'related': [u'updateDefaultNicForVirtualMachine', u'revertToVMSnapshot', u'resetPasswordForVirtualMachine', u'listVirtualMachines', u'startVirtualMachine', u'listVirtualMachines', u'updateVMAffinityGroup', u'removeNicFromVirtualMachine', u'deployVirtualMachine', u'revertToVMSnapshot', u'addNicToVirtualMachine', u'restoreVirtualMachine', u'stopVirtualMachine', u'changeServiceForVirtualMachine', u'destroyVirtualMachine', u'updateVirtualMachine', u'detachIso', u'resetSSHKeyForVirtualMachine', u'attachIso', u'rebootVirtualMachine'], u'isasync': True, u'params': [{u'name': u'expunge', u'required': False, u'related': [], u'length': 255, u'type': u'boolean', u'description': u'If true is passed, the vm is expunged immediately. False by default. Parameter can be passed to the call by ROOT/Domain admin only'}, {u'name': u'id', u'required': True, u'related': [u'updateDefaultNicForVirtualMachine', u'revertToVMSnapshot', u'resetPasswordForVirtualMachine', u'listVirtualMachines', u'destroyVirtualMachine', u'startVirtualMachine', u'listVirtualMachines', u'updateVMAffinityGroup', u'removeNicFromVirtualMachine', u'deployVirtualMachine', u'revertToVMSnapshot', u'addNicToVirtualMachine', u'restoreVirtualMachine', u'stopVirtualMachine', u'changeServiceForVirtualMachine', u'destroyVirtualMachine', u'updateVirtualMachine', u'detachIso', u'resetSSHKeyForVirtualMachine', u'attachIso', u'rebootVirtualMachine'], u'length': 255, u'type': u'uuid', u'description': u'The ID of the virtual machine'}], u'requiredparams': [u'id'], u'description': u'Destroys a virtual machine. Once destroyed, only the administrator can recover it.'}}, u'get': {u'apilimit': {u'name': u'getApiLimit', u'related': [u'resetApiLimit'], u'isasync': False, u'params': [], u'requiredparams': [], u'description': u'Get API limit count for the caller'}, u'vmpassword': {u'name': u'getVMPassword', u'related': [], u'isasync': False, u'params': [{u'name': u'id', u'required': True, u'related': [u'updateVirtualMachine', u'removeNicFromVirtualMachine', u'assignVirtualMachine', u'detachIso', u'updateDefaultNicForVirtualMachine', u'updateDefaultNicForVirtualMachine', u'revertToVMSnapshot', u'recoverVirtualMachine', u'startVirtualMachine', u'resetPasswordForVirtualMachine', u'resetPasswordForVirtualMachine', u'updateVMAffinityGroup', u'stopVirtualMachine', u'listVirtualMachines', u'deployVirtualMachine', u'migrateVirtualMachineWithVolume', u'destroyVirtualMachine', u'attachIso', u'rebootVirtualMachine', u'startVirtualMachine', u'listVirtualMachines', u'changeServiceForVirtualMachine', u'updateVMAffinityGroup', u'removeNicFromVirtualMachine', u'deployVirtualMachine', u'revertToVMSnapshot', u'addNicToVirtualMachine', u'restoreVirtualMachine', u'restoreVirtualMachine', u'stopVirtualMachine', u'changeServiceForVirtualMachine', u'destroyVirtualMachine', u'migrateVirtualMachine', u'updateVirtualMachine', u'detachIso', u'resetSSHKeyForVirtualMachine', u'resetSSHKeyForVirtualMachine', u'attachIso', u'rebootVirtualMachine'], u'length': 255, u'type': u'uuid', u'description': u'The ID of the virtual machine'}], u'requiredparams': [u'id'], u'description': u'Returns an encrypted password for the VM'}, u'virtualmachineuserdata': {u'name': u'getVirtualMachineUserData', u'related': [], u'isasync': False, u'params': [{u'name': u'virtualmachineid', u'required': True, u'related': [u'updateVirtualMachine', u'removeNicFromVirtualMachine', u'assignVirtualMachine', u'detachIso', u'updateDefaultNicForVirtualMachine', u'updateDefaultNicForVirtualMachine', u'revertToVMSnapshot', u'recoverVirtualMachine', u'startVirtualMachine', u'resetPasswordForVirtualMachine', u'resetPasswordForVirtualMachine', u'updateVMAffinityGroup', u'stopVirtualMachine', u'listVirtualMachines', u'deployVirtualMachine', u'migrateVirtualMachineWithVolume', u'destroyVirtualMachine', u'attachIso', u'rebootVirtualMachine', u'startVirtualMachine', u'listVirtualMachines', u'changeServiceForVirtualMachine', u'updateVMAffinityGroup', u'removeNicFromVirtualMachine', u'deployVirtualMachine', u'revertToVMSnapshot', u'addNicToVirtualMachine', u'restoreVirtualMachine', u'restoreVirtualMachine', u'stopVirtualMachine', u'changeServiceForVirtualMachine', u'destroyVirtualMachine', u'migrateVirtualMachine', u'updateVirtualMachine', u'detachIso', u'resetSSHKeyForVirtualMachine', u'attachIso', u'rebootVirtualMachine'], u'length': 255, u'type': u'uuid', u'description': u'The ID of the virtual machine'}], u'requiredparams': [u'virtualmachineid'], u'description': u'Returns user data associated with the VM'}, u'user': {u'name': u'getUser', u'related': [u'disableUser', u'lockUser', u'listUsers', u'updateUser'], u'isasync': False, u'params': [{u'name': u'userapikey', u'required': True, u'related': [], u'length': 255, u'type': u'string', u'description': u'API key of the user'}], u'requiredparams': [u'userapikey'], u'description': u'Find user account by API key'}, u'cloudidentifier': {u'name': u'getCloudIdentifier', u'related': [], u'isasync': False, u'params': [{u'name': u'userid', u'required': True, u'related': [u'lockUser', u'listUsers'], u'length': 255, u'type': u'uuid', u'description': u'the user ID for the cloud identifier'}], u'requiredparams': [u'userid'], u'description': u'Retrieves a cloud identifier.'}}, u'count': 457, u'enable': {u'user': {u'name': u'enableUser', u'related': [u'createUser', u'disableUser', u'lockUser', u'listUsers', u'updateUser', u'getUser'], u'isasync': False, u'params': [{u'name': u'id', u'required': True, u'related': [u'createUser', u'enableUser', u'disableUser', u'lockUser', u'listUsers', u'updateUser', u'getUser'], u'length': 255, u'type': u'uuid', u'description': u'Enables user by user ID.'}], u'requiredparams': [u'id'], u'description': u'Enables a user account'}, u'account': {u'name': u'enableAccount', u'related': [u'listAccounts', u'createAccount', u'markDefaultZoneForAccount', u'listAccounts', u'updateAccount', u'ldapCreateAccount', u'disableAccount', u'lockAccount'], u'isasync': False, u'params': [{u'name': u'domainid', u'required': False, u'related': [u'listDomains', u'updateDomain', u'createDomain', u'listDomainChildren'], u'length': 255, u'type': u'uuid', u'description': u'Enables specified account in this domain.'}, {u'name': u'account', u'required': False, u'related': [], u'length': 255, u'type': u'string', u'description': u'Enables specified account.'}, {u'name': u'id', u'required': False, u'related': [u'listAccounts', u'enableAccount', u'createAccount', u'markDefaultZoneForAccount', u'listAccounts', u'updateAccount', u'ldapCreateAccount', u'disableAccount', u'lockAccount'], u'length': 255, u'type': u'uuid', u'description': u'Account id'}], u'requiredparams': [], u'description': u'Enables an account'}, u'storagemaintenance': {u'name': u'enableStorageMaintenance', u'related': [u'findStoragePoolsForMigration', u'createStoragePool', u'cancelStorageMaintenance', u'updateStoragePool', u'listStoragePools'], u'isasync': True, u'params': [{u'name': u'id', u'required': True, u'related': [u'findStoragePoolsForMigration', u'createStoragePool', u'cancelStorageMaintenance', u'enableStorageMaintenance', u'updateStoragePool', u'listStoragePools'], u'length': 255, u'type': u'uuid', u'description': u'Primary storage ID'}], u'requiredparams': [u'id'], u'description': u'Puts storage pool into maintenance state'}, u'staticnat': {u'name': u'enableStaticNat', u'related': [], u'isasync': False, u'params': [{u'name': u'vmguestip', u'required': False, u'related': [], u'length': 255, u'type': u'string', u'description': u'VM guest nic Secondary ip address for the port forwarding rule'}, {u'name': u'ipaddressid', u'required': True, u'related': [u'associateIpAddress', u'updateIpAddress', u'listPublicIpAddresses', u'restartNetwork', u'associateIpAddress'], u'length': 255, u'type': u'uuid', u'description': u'the public IP address id for which static nat feature is being enabled'}, {u'name': u'networkid', u'required': False, u'related': [u'updateNetwork', u'updateNetwork', u'listNetscalerLoadBalancerNetworks', u'listPaloAltoFirewallNetworks', u'listNetworks', u'createNetwork'], u'length': 255, u'type': u'uuid', u'description': u'The network of the vm the static nat will be enabled for. Required when public Ip address is not associated with any Guest network yet (VPC case)'}, {u'name': u'virtualmachineid', u'required': True, u'related': [u'updateVirtualMachine', u'removeNicFromVirtualMachine', u'assignVirtualMachine', u'detachIso', u'updateDefaultNicForVirtualMachine', u'updateDefaultNicForVirtualMachine', u'revertToVMSnapshot', u'recoverVirtualMachine', u'startVirtualMachine', u'resetPasswordForVirtualMachine', u'resetPasswordForVirtualMachine', u'updateVMAffinityGroup', u'stopVirtualMachine', u'listVirtualMachines', u'deployVirtualMachine', u'migrateVirtualMachineWithVolume', u'destroyVirtualMachine', u'attachIso', u'rebootVirtualMachine', u'startVirtualMachine', u'listVirtualMachines', u'changeServiceForVirtualMachine', u'updateVMAffinityGroup', u'removeNicFromVirtualMachine', u'deployVirtualMachine', u'revertToVMSnapshot', u'addNicToVirtualMachine', u'restoreVirtualMachine', u'restoreVirtualMachine', u'stopVirtualMachine', u'changeServiceForVirtualMachine', u'destroyVirtualMachine', u'migrateVirtualMachine', u'updateVirtualMachine', u'detachIso', u'resetSSHKeyForVirtualMachine', u'attachIso', u'rebootVirtualMachine'], u'length': 255, u'type': u'uuid', u'description': u'the ID of the virtual machine for enabling static nat feature'}], u'requiredparams': [u'ipaddressid', u'virtualmachineid'], u'description': u'Enables static nat for given ip address'}, u'autoscalevmgroup': {u'name': u'enableAutoScaleVmGroup', u'related': [u'updateAutoScaleVmGroup'], u'isasync': True, u'params': [{u'name': u'id', u'required': True, u'related': [u'updateAutoScaleVmGroup', u'enableAutoScaleVmGroup'], u'length': 255, u'type': u'uuid', u'description': u'the ID of the autoscale group'}], u'requiredparams': [u'id'], u'description': u'Enables an AutoScale Vm Group'}}, u'configure': {u'ovselement': {u'name': u'configureOvsElement', u'related': [], u'isasync': True, u'params': [{u'name': u'id', u'required': True, u'related': [u'configureOvsElement'], u'length': 255, u'type': u'uuid', u'description': u'the ID of the ovs provider'}, {u'name': u'enabled', u'required': True, u'related': [], u'length': 255, u'type': u'boolean', u'description': u'Enabled/Disabled the service provider'}], u'requiredparams': [u'id', u'enabled'], u'description': u'Configures an ovs element.'}, u'netscalerloadbalancer': {u'name': u'configureNetscalerLoadBalancer', u'related': [u'listNetscalerLoadBalancers'], u'isasync': True, u'params': [{u'name': u'podids', u'required': False, u'related': [u'updatePod', u'createPod', u'listPods'], u'length': 255, u'type': u'list', u'description': u"Used when NetScaler device is provider of EIP service. This parameter represents the list of pod's, for which there exists a policy based route on datacenter L3 router to route pod's subnet IP to a NetScaler device."}, {u'name': u'inline', u'required': False, u'related': [], u'length': 255, u'type': u'boolean', u'description': u'true if netscaler load balancer is intended to be used in in-line with firewall, false if netscaler load balancer will side-by-side with firewall'}, {u'name': u'lbdevicededicated', u'required': False, u'related': [], u'length': 255, u'type': u'boolean', u'description': u'true if this netscaler device to dedicated for a account, false if the netscaler device will be shared by multiple accounts'}, {u'name': u'lbdevicecapacity', u'required': False, u'related': [], u'length': 255, u'type': u'long', u'description': u'capacity of the device, Capacity will be interpreted as number of networks device can handle'}, {u'name': u'lbdeviceid', u'required': True, u'related': [u'listNetscalerLoadBalancers', u'configureNetscalerLoadBalancer'], u'length': 255, u'type': u'uuid', u'description': u'Netscaler load balancer device ID'}], u'requiredparams': [u'lbdeviceid'], u'description': u'configures a netscaler load balancer device'}, u'internalloadbalancerelement': {u'name': u'configureInternalLoadBalancerElement', u'related': [], u'isasync': True, u'params': [{u'name': u'enabled', u'required': True, u'related': [], u'length': 255, u'type': u'boolean', u'description': u'Enables/Disables the Internal Load Balancer element'}, {u'name': u'id', u'required': True, u'related': [u'configureInternalLoadBalancerElement'], u'length': 255, u'type': u'uuid', u'description': u'the ID of the internal lb provider'}], u'requiredparams': [u'enabled', u'id'], u'description': u'Configures an Internal Load Balancer element.'}, u'paloaltofirewall': {u'name': u'configurePaloAltoFirewall', u'related': [], u'isasync': True, u'params': [{u'name': u'fwdevicecapacity', u'required': False, u'related': [], u'length': 255, u'type': u'long', u'description': u'capacity of the firewall device, Capacity will be interpreted as number of networks device can handle'}, {u'name': u'fwdeviceid', u'required': True, u'related': [u'configurePaloAltoFirewall'], u'length': 255, u'type': u'uuid', u'description': u'Palo Alto firewall device ID'}], u'requiredparams': [u'fwdeviceid'], u'description': u'Configures a Palo Alto firewall device'}, u'virtualrouterelement': {u'name': u'configureVirtualRouterElement', u'related': [], u'isasync': True, u'params': [{u'name': u'id', u'required': True, u'related': [u'configureVirtualRouterElement'], u'length': 255, u'type': u'uuid', u'description': u'the ID of the virtual router provider'}, {u'name': u'enabled', u'required': True, u'related': [], u'length': 255, u'type': u'boolean', u'description': u'Enabled/Disabled the service provider'}], u'requiredparams': [u'id', u'enabled'], u'description': u'Configures a virtual router element.'}}, u'associate': {u'ucsprofiletoblade': {u'name': u'associateUcsProfileToBlade', u'related': [u'listUcsBlades'], u'isasync': True, u'params': [{u'name': u'ucsmanagerid', u'required': True, u'related': [u'addUcsManager'], u'length': 255, u'type': u'uuid', u'description': u'ucs manager id'}, {u'name': u'profiledn', u'required': True, u'related': [], u'length': 255, u'type': u'string', u'description': u'profile dn'}, {u'name': u'bladeid', u'required': True, u'related': [u'associateUcsProfileToBlade', u'listUcsBlades'], u'length': 255, u'type': u'uuid', u'description': u'blade id'}], u'requiredparams': [u'ucsmanagerid', u'profiledn', u'bladeid'], u'description': u'associate a profile to a blade'}, u'ipaddress': {u'name': u'associateIpAddress', u'related': [u'listPublicIpAddresses', u'associateIpAddress'], u'isasync': True, u'params': [{u'name': u'zoneid', u'required': False, u'related': [u'listZones'], u'length': 255, u'type': u'uuid', u'description': u'the ID of the availability zone you want to acquire an public IP address from'}, {u'name': u'fordisplay', u'required': False, u'related': [], u'length': 255, u'type': u'boolean', u'description': u'an optional field, whether to the display the ip to the end user or not'}, {u'name': u'regionid', u'required': False, u'related': [u'addRegion'], u'length': 255, u'type': u'integer', u'description': u'region ID from where portable ip is to be associated.'}, {u'name': u'domainid', u'required': False, u'related': [u'updateDomain', u'listDomainChildren'], u'length': 255, u'type': u'uuid', u'description': u'the ID of the domain to associate with this IP address'}, {u'name': u'account', u'required': False, u'related': [], u'length': 255, u'type': u'string', u'description': u'the account to associate with this IP address'}, {u'name': u'isportable', u'required': False, u'related': [], u'length': 255, u'type': u'boolean', u'description': u'should be set to true if public IP is required to be transferable across zones, if not specified defaults to false'}, {u'name': u'projectid', u'required': False, u'related': [u'createProject'], u'length': 255, u'type': u'uuid', u'description': u'Deploy vm for the project'}, {u'name': u'networkid', u'required': False, u'related': [u'updateNetwork', u'updateNetwork', u'listNetscalerLoadBalancerNetworks', u'listNetworks', u'createNetwork'], u'length': 255, u'type': u'uuid', u'description': u'The network this ip address should be associated to.'}, {u'name': u'vpcid', u'required': False, u'related': [u'listVPCs', u'updateVPC', u'restartVPC', u'createVPC', u'listVPCs'], u'length': 255, u'type': u'uuid', u'description': u'the VPC you want the ip address to be associated with'}], u'requiredparams': [], u'description': u'Acquires and associates a public IP to an account.'}}, u'stop': {u'systemvm': {u'name': u'stopSystemVm', u'related': [u'migrateSystemVm', u'startSystemVm', u'scaleSystemVm', u'changeServiceForSystemVm', u'listSystemVms', u'rebootSystemVm'], u'isasync': True, u'params': [{u'name': u'forced', u'required': False, u'related': [], u'length': 255, u'type': u'boolean', u'description': u'Force stop the VM. The caller knows the VM is stopped.'}, {u'name': u'id', u'required': True, u'related': [u'migrateSystemVm', u'startSystemVm', u'scaleSystemVm', u'changeServiceForSystemVm', u'listSystemVms', u'rebootSystemVm', u'stopSystemVm'], u'length': 255, u'type': u'uuid', u'description': u'The ID of the system virtual machine'}], u'requiredparams': [u'id'], u'description': u'Stops a system VM.'}, u'router': {u'name': u'stopRouter', u'related': [u'destroyRouter', u'startInternalLoadBalancerVM', u'changeServiceForRouter', u'stopInternalLoadBalancerVM', u'rebootRouter', u'startRouter', u'listInternalLoadBalancerVMs'], u'isasync': True, u'params': [{u'name': u'forced', u'required': False, u'related': [], u'length': 255, u'type': u'boolean', u'description': u'Force stop the VM. The caller knows the VM is stopped.'}, {u'name': u'id', u'required': True, u'related': [u'stopRouter', u'destroyRouter', u'startInternalLoadBalancerVM', u'changeServiceForRouter', u'stopInternalLoadBalancerVM', u'rebootRouter', u'startRouter', u'listInternalLoadBalancerVMs'], u'length': 255, u'type': u'uuid', u'description': u'the ID of the router'}], u'requiredparams': [u'id'], u'description': u'Stops a router.'}, u'internalloadbalancervm': {u'name': u'stopInternalLoadBalancerVM', u'related': [u'changeServiceForRouter', u'startRouter', u'listInternalLoadBalancerVMs'], u'isasync': True, u'params': [{u'name': u'forced', u'required': False, u'related': [], u'length': 255, u'type': u'boolean', u'description': u'Force stop the VM. The caller knows the VM is stopped.'}, {u'name': u'id', u'required': True, u'related': [u'changeServiceForRouter', u'stopInternalLoadBalancerVM', u'startRouter', u'listInternalLoadBalancerVMs'], u'length': 255, u'type': u'uuid', u'description': u'the ID of the internal lb vm'}], u'requiredparams': [u'id'], u'description': u'Stops an Internal LB vm.'}, u'virtualmachine': {u'name': u'stopVirtualMachine', u'related': [u'updateDefaultNicForVirtualMachine', u'revertToVMSnapshot', u'resetPasswordForVirtualMachine', u'listVirtualMachines', u'destroyVirtualMachine', u'startVirtualMachine', u'listVirtualMachines', u'updateVMAffinityGroup', u'removeNicFromVirtualMachine', u'deployVirtualMachine', u'revertToVMSnapshot', u'addNicToVirtualMachine', u'restoreVirtualMachine', u'stopVirtualMachine', u'changeServiceForVirtualMachine', u'destroyVirtualMachine', u'updateVirtualMachine', u'detachIso', u'resetSSHKeyForVirtualMachine', u'attachIso', u'rebootVirtualMachine'], u'isasync': True, u'params': [{u'name': u'id', u'required': True, u'related': [u'updateDefaultNicForVirtualMachine', u'revertToVMSnapshot', u'resetPasswordForVirtualMachine', u'stopVirtualMachine', u'listVirtualMachines', u'destroyVirtualMachine', u'startVirtualMachine', u'listVirtualMachines', u'updateVMAffinityGroup', u'removeNicFromVirtualMachine', u'deployVirtualMachine', u'revertToVMSnapshot', u'addNicToVirtualMachine', u'restoreVirtualMachine', u'stopVirtualMachine', u'changeServiceForVirtualMachine', u'destroyVirtualMachine', u'updateVirtualMachine', u'detachIso', u'resetSSHKeyForVirtualMachine', u'attachIso', u'rebootVirtualMachine'], u'length': 255, u'type': u'uuid', u'description': u'The ID of the virtual machine'}, {u'name': u'forced', u'required': False, u'related': [], u'length': 255, u'type': u'boolean', u'description': u'Force stop the VM (vm is marked as Stopped even when command fails to be send to the backend). The caller knows the VM is stopped.'}], u'requiredparams': [u'id'], u'description': u'Stops a virtual machine.'}}, u'update': {u'loadbalancerrule': {u'name': u'updateLoadBalancerRule', u'related': [u'createLoadBalancerRule', u'listLoadBalancerRules'], u'isasync': True, u'params': [{u'name': u'name', u'required': False, u'related': [], u'length': 255, u'type': u'string', u'description': u'the name of the load balancer rule'}, {u'name': u'id', u'required': True, u'related': [u'listIpForwardingRules'], u'length': 255, u'type': u'uuid', u'description': u'the id of the load balancer rule to update'}, {u'name': u'customid', u'required': False, u'related': [], u'length': 255, u'type': u'string', u'description': u'an optional field, in case you want to set a custom id to the resource. Allowed to Root Admins only'}, {u'name': u'algorithm', u'required': False, u'related': [], u'length': 255, u'type': u'string', u'description': u'load balancer algorithm (source, roundrobin, leastconn)'}, {u'name': u'description', u'required': False, u'related': [], u'length': 4096, u'type': u'string', u'description': u'the description of the load balancer rule'}, {u'name': u'fordisplay', u'required': False, u'related': [], u'length': 255, u'type': u'boolean', u'description': u'an optional field, whether to the display the rule to the end user or not'}], u'requiredparams': [u'id'], u'description': u'Updates load balancer'}, u'domain': {u'name': u'updateDomain', u'related': [u'listDomainChildren'], u'isasync': False, u'params': [{u'name': u'name', u'required': False, u'related': [], u'length': 255, u'type': u'string', u'description': u'updates domain with this name'}, {u'name': u'networkdomain', u'required': False, u'related': [], u'length': 255, u'type': u'string', u'description': u"Network domain for the domain's networks; empty string will update domainName with NULL value"}, {u'name': u'id', u'required': True, u'related': [u'updateDomain', u'listDomainChildren'], u'length': 255, u'type': u'uuid', u'description': u'ID of domain to update'}], u'requiredparams': [u'id'], u'description': u'Updates a domain with a new name'}, u'projectinvitation': {u'name': u'updateProjectInvitation', u'related': [], u'isasync': True, u'params': [{u'name': u'accept', u'required': False, u'related': [], u'length': 255, u'type': u'boolean', u'description': u'if true, accept the invitation, decline if false. True by default'}, {u'name': u'token', u'required': False, u'related': [], u'length': 255, u'type': u'string', u'description': u'list invitations for specified account; this parameter has to be specified with domainId'}, {u'name': u'projectid', u'required': True, u'related': [u'updateProject', u'createProject'], u'length': 255, u'type': u'uuid', u'description': u'id of the project to join'}, {u'name': u'account', u'required': False, u'related': [], u'length': 255, u'type': u'string', u'description': u'account that is joining the project'}], u'requiredparams': [u'projectid'], u'description': u'Accepts or declines project invitation'}, u'snapshotpolicy': {u'name': u'updateSnapshotPolicy', u'related': [u'createSnapshotPolicy', u'listSnapshotPolicies'], u'isasync': True, u'params': [{u'name': u'customid', u'required': False, u'related': [], u'length': 255, u'type': u'string', u'description': u'an optional field, in case you want to set a custom id to the resource. Allowed to Root Admins only'}, {u'name': u'fordisplay', u'required': False, u'related': [], u'length': 255, u'type': u'boolean', u'description': u'an optional field, whether to the display the snapshot policy to the end user or not.'}, {u'name': u'id', u'required': False, u'related': [u'createSnapshotPolicy', u'listSnapshotPolicies', u'updateSnapshotPolicy'], u'length': 255, u'type': u'uuid', u'description': u'the ID of the snapshot policy'}], u'requiredparams': [], u'description': u'Updates the snapshot policy.'}, u'diskoffering': {u'name': u'updateDiskOffering', u'related': [u'createDiskOffering', u'listDiskOfferings'], u'isasync': False, u'params': [{u'name': u'name', u'required': False, u'related': [], u'length': 255, u'type': u'string', u'description': u'updates name of the disk offering with this value'}, {u'name': u'sortkey', u'required': False, u'related': [], u'length': 255, u'type': u'integer', u'description': u'sort key of the disk offering, integer'}, {u'name': u'displaytext', u'required': False, u'related': [], u'length': 4096, u'type': u'string', u'description': u'updates alternate display text of the disk offering with this value'}, {u'name': u'displayoffering', u'required': False, u'related': [], u'length': 255, u'type': u'boolean', u'description': u'an optional field, whether to display the offering to the end user or not.'}, {u'name': u'id', u'required': True, u'related': [u'updateDiskOffering', u'createDiskOffering', u'listDiskOfferings'], u'length': 255, u'type': u'uuid', u'description': u'ID of the disk offering'}], u'requiredparams': [u'id'], u'description': u'Updates a disk offering.'}, u'virtualmachine': {u'name': u'updateVirtualMachine', u'related': [u'updateDefaultNicForVirtualMachine', u'revertToVMSnapshot', u'resetPasswordForVirtualMachine', u'stopVirtualMachine', u'listVirtualMachines', u'migrateVirtualMachineWithVolume', u'destroyVirtualMachine', u'startVirtualMachine', u'listVirtualMachines', u'updateVMAffinityGroup', u'removeNicFromVirtualMachine', u'deployVirtualMachine', u'revertToVMSnapshot', u'addNicToVirtualMachine', u'restoreVirtualMachine', u'restoreVirtualMachine', u'stopVirtualMachine', u'changeServiceForVirtualMachine', u'destroyVirtualMachine', u'updateVirtualMachine', u'detachIso', u'resetSSHKeyForVirtualMachine', u'attachIso', u'rebootVirtualMachine'], u'isasync': False, u'params': [{u'name': u'haenable', u'required': False, u'related': [], u'length': 255, u'type': u'boolean', u'description': u'true if high-availability is enabled for the virtual machine, false otherwise'}, {u'name': u'id', u'required': True, u'related': [u'updateVirtualMachine', u'updateDefaultNicForVirtualMachine', u'revertToVMSnapshot', u'resetPasswordForVirtualMachine', u'stopVirtualMachine', u'listVirtualMachines', u'migrateVirtualMachineWithVolume', u'destroyVirtualMachine', u'startVirtualMachine', u'listVirtualMachines', u'updateVMAffinityGroup', u'removeNicFromVirtualMachine', u'deployVirtualMachine', u'revertToVMSnapshot', u'addNicToVirtualMachine', u'restoreVirtualMachine', u'restoreVirtualMachine', u'stopVirtualMachine', u'changeServiceForVirtualMachine', u'destroyVirtualMachine', u'updateVirtualMachine', u'detachIso', u'resetSSHKeyForVirtualMachine', u'attachIso', u'rebootVirtualMachine'], u'length': 255, u'type': u'uuid', u'description': u'The ID of the virtual machine'}, {u'name': u'customid', u'required': False, u'related': [], u'length': 255, u'type': u'string', u'description': u'an optional field, in case you want to set a custom id to the resource. Allowed to Root Admins only'}, {u'name': u'name', u'required': False, u'related': [], u'length': 255, u'type': u'string', u'description': u'new host name of the vm. The VM has to be stopped/started for this update to take affect'}, {u'name': u'displayname', u'required': False, u'related': [], u'length': 255, u'type': u'string', u'description': u'user generated name'}, {u'name': u'isdynamicallyscalable', u'required': False, u'related': [], u'length': 255, u'type': u'boolean', u'description': u'true if VM contains XS/VMWare tools inorder to support dynamic scaling of VM cpu/memory'}, {u'name': u'userdata', u'required': False, u'related': [], u'length': 32768, u'type': u'string', u'description': u'an optional binary data that can be sent to the virtual machine upon a successful deployment. This binary data must be base64 encoded before adding it to the request. Using HTTP GET (via querystring), you can send up to 2KB of data after base64 encoding. Using HTTP POST(via POST body), you can send up to 32K of data after base64 encoding.'}, {u'name': u'ostypeid', u'required': False, u'related': [u'addGuestOs'], u'length': 255, u'type': u'uuid', u'description': u'the ID of the OS type that best represents this VM.'}, {u'name': u'group', u'required': False, u'related': [], u'length': 255, u'type': u'string', u'description': u'group of the virtual machine'}, {u'name': u'displayvm', u'required': False, u'related': [], u'length': 255, u'type': u'boolean', u'description': u'an optional field, whether to the display the vm to the end user or not.'}], u'requiredparams': [u'id'], u'description': u'Updates properties of a virtual machine. The VM has to be stopped and restarted for the new properties to take effect. UpdateVirtualMachine does not first check whether the VM is stopped. Therefore, stop the VM manually before issuing this call.'}, u'portforwardingrule': {u'name': u'updatePortForwardingRule', u'related': [u'listPortForwardingRules', u'createPortForwardingRule', u'listIpForwardingRules'], u'isasync': True, u'params': [{u'name': u'customid', u'required': False, u'related': [], u'length': 255, u'type': u'string', u'description': u'an optional field, in case you want to set a custom id to the resource. Allowed to Root Admins only'}, {u'name': u'fordisplay', u'required': False, u'related': [], u'length': 255, u'type': u'boolean', u'description': u'an optional field, whether to the display the rule to the end user or not'}, {u'name': u'privateport', u'required': False, u'related': [], u'length': 255, u'type': u'string', u'description': u'the private port of the port forwarding rule'}, {u'name': u'protocol', u'required': False, u'related': [], u'length': 255, u'type': u'string', u'description': u'the protocol for the port fowarding rule. Valid values are TCP or UDP.'}, {u'name': u'ipaddressid', u'required': False, u'related': [u'associateIpAddress', u'listPublicIpAddresses', u'restartNetwork', u'associateIpAddress'], u'length': 255, u'type': u'uuid', u'description': u'the IP address id of the port forwarding rule'}, {u'name': u'id', u'required': True, u'related': [u'listPortForwardingRules', u'createPortForwardingRule', u'listIpForwardingRules', u'updatePortForwardingRule'], u'length': 255, u'type': u'uuid', u'description': u'the ID of the port forwarding rule'}, {u'name': u'virtualmachineid', u'required': False, u'related': [u'updateVirtualMachine', u'removeNicFromVirtualMachine', u'assignVirtualMachine', u'detachIso', u'updateDefaultNicForVirtualMachine', u'updateDefaultNicForVirtualMachine', u'revertToVMSnapshot', u'startVirtualMachine', u'resetPasswordForVirtualMachine', u'resetPasswordForVirtualMachine', u'updateVMAffinityGroup', u'stopVirtualMachine', u'listVirtualMachines', u'deployVirtualMachine', u'migrateVirtualMachineWithVolume', u'destroyVirtualMachine', u'attachIso', u'rebootVirtualMachine', u'startVirtualMachine', u'listVirtualMachines', u'changeServiceForVirtualMachine', u'updateVMAffinityGroup', u'removeNicFromVirtualMachine', u'deployVirtualMachine', u'revertToVMSnapshot', u'addNicToVirtualMachine', u'restoreVirtualMachine', u'restoreVirtualMachine', u'stopVirtualMachine', u'changeServiceForVirtualMachine', u'destroyVirtualMachine', u'migrateVirtualMachine', u'updateVirtualMachine', u'detachIso', u'resetSSHKeyForVirtualMachine', u'attachIso', u'rebootVirtualMachine'], u'length': 255, u'type': u'uuid', u'description': u'the ID of the virtual machine for the port forwarding rule'}, {u'name': u'privateip', u'required': False, u'related': [], u'length': 255, u'type': u'string', u'description': u'the private IP address of the port forwarding rule'}, {u'name': u'publicport', u'required': False, u'related': [], u'length': 255, u'type': u'string', u'description': u'the public port of the port forwarding rule'}], u'requiredparams': [u'id'], u'description': u'Updates a port forwarding rule. Only the private port and the virtual machine can be updated.'}, u'cluster': {u'name': u'updateCluster', u'related': [], u'isasync': False, u'params': [{u'name': u'managedstate', u'required': False, u'related': [], u'length': 255, u'type': u'string', u'description': u'whether this cluster is managed by cloudstack'}, {u'name': u'hypervisor', u'required': False, u'related': [], u'length': 255, u'type': u'string', u'description': u'hypervisor type of the cluster'}, {u'name': u'allocationstate', u'required': False, u'related': [], u'length': 255, u'type': u'string', u'description': u'Allocation state of this cluster for allocation of new resources'}, {u'name': u'clustertype', u'required': False, u'related': [], u'length': 255, u'type': u'string', u'description': u'hypervisor type of the cluster'}, {u'name': u'id', u'required': True, u'related': [u'updateCluster'], u'length': 255, u'type': u'uuid', u'description': u'the ID of the Cluster'}, {u'name': u'clustername', u'required': False, u'related': [], u'length': 255, u'type': u'string', u'description': u'the cluster name'}], u'requiredparams': [u'id'], u'description': u'Updates an existing cluster'}, u'guestos': {u'name': u'updateGuestOs', u'related': [u'addGuestOs', u'listOsTypes'], u'isasync': True, u'params': [{u'name': u'osdisplayname', u'required': True, u'related': [], u'length': 255, u'type': u'string', u'description': u'Unique display name for Guest OS'}, {u'name': u'id', u'required': True, u'related': [u'addGuestOs', u'listOsTypes', u'updateGuestOs'], u'length': 255, u'type': u'uuid', u'description': u'UUID of the Guest OS'}], u'requiredparams': [u'osdisplayname', u'id'], u'description': u'Updates the information about Guest OS'}, u'hostpassword': {u'name': u'updateHostPassword', u'related': [], u'isasync': False, u'params': [{u'name': u'hostid', u'required': False, u'related': [u'updateHost', u'prepareHostForMaintenance', u'listHosts', u'addHost'], u'length': 255, u'type': u'uuid', u'description': u'the host ID'}, {u'name': u'username', u'required': True, u'related': [], u'length': 255, u'type': u'string', u'description': u'the username for the host/cluster'}, {u'name': u'clusterid', u'required': False, u'related': [u'updateCluster'], u'length': 255, u'type': u'uuid', u'description': u'the cluster ID'}, {u'name': u'password', u'required': True, u'related': [], u'length': 255, u'type': u'string', u'description': u'the new password for the host/cluster'}], u'requiredparams': [u'username', u'password'], u'description': u'Update password of a host/pool on management server.'}, u'pod': {u'name': u'updatePod', u'related': [], u'isasync': False, u'params': [{u'name': u'id', u'required': True, u'related': [u'updatePod'], u'length': 255, u'type': u'uuid', u'description': u'the ID of the Pod'}, {u'name': u'startip', u'required': False, u'related': [], u'length': 255, u'type': u'string', u'description': u'the starting IP address for the Pod'}, {u'name': u'allocationstate', u'required': False, u'related': [], u'length': 255, u'type': u'string', u'description': u'Allocation state of this cluster for allocation of new resources'}, {u'name': u'name', u'required': False, u'related': [], u'length': 255, u'type': u'string', u'description': u'the name of the Pod'}, {u'name': u'gateway', u'required': False, u'related': [], u'length': 255, u'type': u'string', u'description': u'the gateway for the Pod'}, {u'name': u'endip', u'required': False, u'related': [], u'length': 255, u'type': u'string', u'description': u'the ending IP address for the Pod'}, {u'name': u'netmask', u'required': False, u'related': [], u'length': 255, u'type': u'string', u'description': u'the netmask of the Pod'}], u'requiredparams': [u'id'], u'description': u'Updates a Pod.'}, u'vpnconnection': {u'name': u'updateVpnConnection', u'related': [u'resetVpnConnection', u'listVpnConnections'], u'isasync': True, u'params': [{u'name': u'fordisplay', u'required': False, u'related': [], u'length': 255, u'type': u'boolean', u'description': u'an optional field, whether to the display the vpn to the end user or not'}, {u'name': u'customid', u'required': False, u'related': [], u'length': 255, u'type': u'string', u'description': u'an optional field, in case you want to set a custom id to the resource. Allowed to Root Admins only'}, {u'name': u'id', u'required': True, u'related': [u'resetVpnConnection', u'listVpnConnections', u'updateVpnConnection'], u'length': 255, u'type': u'uuid', u'description': u'id of vpn connection'}], u'requiredparams': [u'id'], u'description': u'Updates site to site vpn connection'}, u'isopermissions': {u'name': u'updateIsoPermissions', u'related': [], u'isasync': False, u'params': [{u'name': u'ispublic', u'required': False, u'related': [], u'length': 255, u'type': u'boolean', u'description': u'true for public template/iso, false for private templates/isos'}, {u'name': u'projectids', u'required': False, u'related': [u'updateProject', u'createProject'], u'length': 255, u'type': u'list', u'description': u'a comma delimited list of projects. If specified, "op" parameter has to be passed in.'}, {u'name': u'id', u'required': True, u'related': [u'registerIso', u'registerIso', u'prepareTemplate', u'updateTemplate', u'registerTemplate', u'copyIso', u'createTemplate', u'listIsos', u'copyTemplate', u'copyIso', u'listIsos', u'updateIso', u'listTemplates'], u'length': 255, u'type': u'uuid', u'description': u'the template ID'}, {u'name': u'accounts', u'required': False, u'related': [], u'length': 255, u'type': u'list', u'description': u'a comma delimited list of accounts. If specified, "op" parameter has to be passed in.'}, {u'name': u'op', u'required': False, u'related': [], u'length': 255, u'type': u'string', u'description': u'permission operator (add, remove, reset)'}, {u'name': u'isfeatured', u'required': False, u'related': [], u'length': 255, u'type': u'boolean', u'description': u'true for featured template/iso, false otherwise'}, {u'name': u'isextractable', u'required': False, u'related': [], u'length': 255, u'type': u'boolean', u'description': u'true if the template/iso is extractable, false other wise. Can be set only by root admin'}], u'requiredparams': [u'id'], u'description': u'Updates iso permissions'}, u'resourcelimit': {u'name': u'updateResourceLimit', u'related': [u'listResourceLimits'], u'isasync': False, u'params': [{u'name': u'resourcetype', u'required': True, u'related': [], u'length': 255, u'type': u'integer', u'description': u'Type of resource to update. Values are 0, 1, 2, 3, 4, 6, 7, 8, 9, 10 and 11. 0 - Instance. Number of instances a user can create. 1 - IP. Number of public IP addresses a user can own. 2 - Volume. Number of disk volumes a user can create.3 - Snapshot. Number of snapshots a user can create.4 - Template. Number of templates that a user can register/create.6 - Network. Number of guest network a user can create.7 - VPC. Number of VPC a user can create.8 - CPU. Total number of CPU cores a user can use.9 - Memory. Total Memory (in MB) a user can use.10 - PrimaryStorage. Total primary storage space (in GiB) a user can use.11 - SecondaryStorage. Total secondary storage space (in GiB) a user can use.'}, {u'name': u'domainid', u'required': False, u'related': [u'listDomains', u'updateDomain', u'listDomainChildren'], u'length': 255, u'type': u'uuid', u'description': u'Update resource limits for all accounts in specified domain. If used with the account parameter, updates resource limits for a specified account in specified domain.'}, {u'name': u'projectid', u'required': False, u'related': [u'updateProject', u'createProject'], u'length': 255, u'type': u'uuid', u'description': u'Update resource limits for project'}, {u'name': u'max', u'required': False, u'related': [], u'length': 255, u'type': u'long', u'description': u' Maximum resource limit.'}, {u'name': u'account', u'required': False, u'related': [], u'length': 255, u'type': u'string', u'description': u'Update resource for a specified account. Must be used with the domainId parameter.'}], u'requiredparams': [u'resourcetype'], u'description': u'Updates resource limits for an account or domain.'}, u'lbstickinesspolicy': {u'name': u'updateLBStickinessPolicy', u'related': [u'createLBStickinessPolicy', u'listLBStickinessPolicies'], u'isasync': True, u'params': [{u'name': u'fordisplay', u'required': False, u'related': [], u'length': 255, u'type': u'boolean', u'description': u'an optional field, whether to the display the policy to the end user or not'}, {u'name': u'customid', u'required': False, u'related': [], u'length': 255, u'type': u'string', u'description': u'an optional field, in case you want to set a custom id to the resource. Allowed to Root Admins only'}, {u'name': u'id', u'required': True, u'related': [u'updateLBStickinessPolicy', u'createLBStickinessPolicy', u'listLBStickinessPolicies'], u'length': 255, u'type': u'uuid', u'description': u'id of lb stickiness policy'}], u'requiredparams': [u'id'], u'description': u'Updates LB Stickiness policy'}, u'vpcoffering': {u'name': u'updateVPCOffering', u'related': [u'createVPCOffering', u'listVPCOfferings'], u'isasync': True, u'params': [{u'name': u'state', u'required': False, u'related': [], u'length': 255, u'type': u'string', u'description': u'update state for the VPC offering; supported states - Enabled/Disabled'}, {u'name': u'name', u'required': False, u'related': [], u'length': 255, u'type': u'string', u'description': u'the name of the VPC offering'}, {u'name': u'displaytext', u'required': False, u'related': [], u'length': 255, u'type': u'string', u'description': u'the display text of the VPC offering'}, {u'name': u'id', u'required': True, u'related': [u'createVPCOffering', u'updateVPCOffering', u'listVPCOfferings'], u'length': 255, u'type': u'uuid', u'description': u'the id of the VPC offering'}], u'requiredparams': [u'id'], u'description': u'Updates VPC offering'}, u'network': {u'name': u'updateNetwork', u'related': [u'updateNetwork', u'listNetscalerLoadBalancerNetworks', u'listNetworks', u'createNetwork'], u'isasync': True, u'params': [{u'name': u'guestvmcidr', u'required': False, u'related': [], u'length': 255, u'type': u'string', u'description': u'CIDR for Guest VMs,Cloudstack allocates IPs to Guest VMs only from this CIDR'}, {u'name': u'networkofferingid', u'required': False, u'related': [u'updateNetworkOffering'], u'length': 255, u'type': u'uuid', u'description': u'network offering ID'}, {u'name': u'changecidr', u'required': False, u'related': [], u'length': 255, u'type': u'boolean', u'description': u'Force update even if cidr type is different'}, {u'name': u'displaynetwork', u'required': False, u'related': [], u'length': 255, u'type': u'boolean', u'description': u'an optional field, whether to the display the network to the end user or not.'}, {u'name': u'name', u'required': False, u'related': [], u'length': 255, u'type': u'string', u'description': u'the new name for the network'}, {u'name': u'networkdomain', u'required': False, u'related': [], u'length': 255, u'type': u'string', u'description': u'network domain'}, {u'name': u'id', u'required': True, u'related': [u'updateNetwork', u'updateNetwork', u'listNetscalerLoadBalancerNetworks', u'listNetworks', u'createNetwork'], u'length': 255, u'type': u'uuid', u'description': u'the ID of the network'}, {u'name': u'customid', u'required': False, u'related': [], u'length': 255, u'type': u'string', u'description': u'an optional field, in case you want to set a custom id to the resource. Allowed to Root Admins only'}, {u'name': u'displaytext', u'required': False, u'related': [], u'length': 255, u'type': u'string', u'description': u'the new display text for the network'}], u'requiredparams': [u'id'], u'description': u'Updates a network'}, u'cloudtouseobjectstore': {u'name': u'updateCloudToUseObjectStore', u'related': [u'addSecondaryStorage', u'addS3', u'createSecondaryStagingStore', u'listSecondaryStagingStores', u'addImageStore', u'listSwifts', u'listImageStores', u'listS3s', u'addSwift'], u'isasync': False, u'params': [{u'name': u'details', u'required': False, u'related': [], u'length': 255, u'type': u'map', u'description': u'the details for the image store. Example: details[0].key=accesskey&details[0].value=s389ddssaa&details[1].key=secretkey&details[1].value=8dshfsss'}, {u'name': u'url', u'required': False, u'related': [], u'length': 255, u'type': u'string', u'description': u'the URL for the image store'}, {u'name': u'provider', u'required': True, u'related': [], u'length': 255, u'type': u'string', u'description': u'the image store provider name'}, {u'name': u'name', u'required': False, u'related': [], u'length': 255, u'type': u'string', u'description': u'the name for the image store'}], u'requiredparams': [u'provider'], u'description': u'Migrate current NFS secondary storages to use object store.'}, u'remoteaccessvpn': {u'name': u'updateRemoteAccessVpn', u'related': [u'createRemoteAccessVpn', u'listRemoteAccessVpns'], u'isasync': True, u'params': [{u'name': u'customid', u'required': False, u'related': [], u'length': 255, u'type': u'string', u'description': u'an optional field, in case you want to set a custom id to the resource. Allowed to Root Admins only'}, {u'name': u'fordisplay', u'required': False, u'related': [], u'length': 255, u'type': u'boolean', u'description': u'an optional field, whether to the display the vpn to the end user or not'}, {u'name': u'id', u'required': True, u'related': [u'createRemoteAccessVpn', u'listRemoteAccessVpns', u'updateRemoteAccessVpn'], u'length': 255, u'type': u'uuid', u'description': u'id of the remote access vpn'}], u'requiredparams': [u'id'], u'description': u'Updates remote access vpn'}, u'guestosmapping': {u'name': u'updateGuestOsMapping', u'related': [u'addGuestOsMapping'], u'isasync': True, u'params': [{u'name': u'osnameforhypervisor', u'required': True, u'related': [], u'length': 255, u'type': u'string', u'description': u'Hypervisor specific name for this Guest OS'}, {u'name': u'id', u'required': True, u'related': [u'addGuestOsMapping', u'updateGuestOsMapping'], u'length': 255, u'type': u'uuid', u'description': u'UUID of the Guest OS to hypervisor name Mapping'}], u'requiredparams': [u'osnameforhypervisor', u'id'], u'description': u'Updates the information about Guest OS to Hypervisor specific name mapping'}, u'instancegroup': {u'name': u'updateInstanceGroup', u'related': [], u'isasync': False, u'params': [{u'name': u'id', u'required': True, u'related': [u'updateInstanceGroup'], u'length': 255, u'type': u'uuid', u'description': u'Instance group ID'}, {u'name': u'name', u'required': False, u'related': [], u'length': 255, u'type': u'string', u'description': u'new instance group name'}], u'requiredparams': [u'id'], u'description': u'Updates a vm group'}, u'autoscalepolicy': {u'name': u'updateAutoScalePolicy', u'related': [u'createAutoScalePolicy'], u'isasync': True, u'params': [{u'name': u'id', u'required': True, u'related': [u'createAutoScalePolicy', u'updateAutoScalePolicy'], u'length': 255, u'type': u'uuid', u'description': u'the ID of the autoscale policy'}, {u'name': u'quiettime', u'required': False, u'related': [], u'length': 255, u'type': u'integer', u'description': u'the cool down period for which the policy should not be evaluated after the action has been taken'}, {u'name': u'conditionids', u'required': False, u'related': [u'listConditions'], u'length': 255, u'type': u'list', u'description': u'the list of IDs of the conditions that are being evaluated on every interval'}, {u'name': u'duration', u'required': False, u'related': [], u'length': 255, u'type': u'integer', u'description': u'the duration for which the conditions have to be true before action is taken'}], u'requiredparams': [u'id'], u'description': u'Updates an existing autoscale policy.'}, u'globalloadbalancerrule': {u'name': u'updateGlobalLoadBalancerRule', u'related': [u'listGlobalLoadBalancerRules'], u'isasync': True, u'params': [{u'name': u'description', u'required': False, u'related': [], u'length': 4096, u'type': u'string', u'description': u'the description of the load balancer rule'}, {u'name': u'id', u'required': True, u'related': [u'listGlobalLoadBalancerRules', u'updateGlobalLoadBalancerRule'], u'length': 255, u'type': u'uuid', u'description': u'the ID of the global load balancer rule'}, {u'name': u'gslbstickysessionmethodname', u'required': False, u'related': [], u'length': 255, u'type': u'string', u'description': u'session sticky method (sourceip) if not specified defaults to sourceip'}, {u'name': u'gslblbmethod', u'required': False, u'related': [], u'length': 255, u'type': u'string', u'description': u"load balancer algorithm (roundrobin, leastconn, proximity) that is used to distributed traffic across the zones participating in global server load balancing, if not specified defaults to 'round robin'"}], u'requiredparams': [u'id'], u'description': u'update global load balancer rules.'}, u'serviceoffering': {u'name': u'updateServiceOffering', u'related': [u'createServiceOffering', u'listServiceOfferings'], u'isasync': False, u'params': [{u'name': u'displaytext', u'required': False, u'related': [], u'length': 255, u'type': u'string', u'description': u'the display text of the service offering to be updated'}, {u'name': u'sortkey', u'required': False, u'related': [], u'length': 255, u'type': u'integer', u'description': u'sort key of the service offering, integer'}, {u'name': u'id', u'required': True, u'related': [u'updateServiceOffering', u'createServiceOffering', u'listServiceOfferings'], u'length': 255, u'type': u'uuid', u'description': u'the ID of the service offering to be updated'}, {u'name': u'name', u'required': False, u'related': [], u'length': 255, u'type': u'string', u'description': u'the name of the service offering to be updated'}], u'requiredparams': [u'id'], u'description': u'Updates a service offering.'}, u'storagepool': {u'name': u'updateStoragePool', u'related': [u'findStoragePoolsForMigration', u'createStoragePool', u'cancelStorageMaintenance', u'listStoragePools'], u'isasync': False, u'params': [{u'name': u'tags', u'required': False, u'related': [], u'length': 255, u'type': u'list', u'description': u'comma-separated list of tags for the storage pool'}, {u'name': u'capacityiops', u'required': False, u'related': [], u'length': 255, u'type': u'long', u'description': u'IOPS CloudStack can provision from this storage pool'}, {u'name': u'id', u'required': True, u'related': [u'findStoragePoolsForMigration', u'createStoragePool', u'cancelStorageMaintenance', u'updateStoragePool', u'listStoragePools'], u'length': 255, u'type': u'uuid', u'description': u'the Id of the storage pool'}, {u'name': u'capacitybytes', u'required': False, u'related': [], u'length': 255, u'type': u'long', u'description': u'bytes CloudStack can provision from this storage pool'}], u'requiredparams': [u'id'], u'description': u'Updates a storage pool.'}, u'vpngateway': {u'name': u'updateVpnGateway', u'related': [], u'isasync': True, u'params': [{u'name': u'fordisplay', u'required': False, u'related': [], u'length': 255, u'type': u'boolean', u'description': u'an optional field, whether to the display the vpn to the end user or not'}, {u'name': u'id', u'required': True, u'related': [u'updateVpnGateway'], u'length': 255, u'type': u'uuid', u'description': u'id of customer gateway'}, {u'name': u'customid', u'required': False, u'related': [], u'length': 255, u'type': u'string', u'description': u'an optional field, in case you want to set a custom id to the resource. Allowed to Root Admins only'}], u'requiredparams': [u'id'], u'description': u'Updates site to site vpn local gateway'}, u'networkacllist': {u'name': u'updateNetworkACLList', u'related': [], u'isasync': True, u'params': [{u'name': u'fordisplay', u'required': False, u'related': [], u'length': 255, u'type': u'boolean', u'description': u'an optional field, whether to the display the list to the end user or not'}, {u'name': u'customid', u'required': False, u'related': [], u'length': 255, u'type': u'string', u'description': u'an optional field, in case you want to set a custom id to the resource. Allowed to Root Admins only'}, {u'name': u'id', u'required': True, u'related': [], u'length': 255, u'type': u'uuid', u'description': u'the ID of the network ACL'}], u'requiredparams': [u'id'], u'description': u'Updates Network ACL list'}, u'hypervisorcapabilities': {u'name': u'updateHypervisorCapabilities', u'related': [u'listHypervisorCapabilities'], u'isasync': False, u'params': [{u'name': u'id', u'required': False, u'related': [u'listHypervisorCapabilities', u'updateHypervisorCapabilities'], u'length': 255, u'type': u'uuid', u'description': u'ID of the hypervisor capability'}, {u'name': u'maxguestslimit', u'required': False, u'related': [], u'length': 255, u'type': u'long', u'description': u'the max number of Guest VMs per host for this hypervisor.'}, {u'name': u'securitygroupenabled', u'required': False, u'related': [], u'length': 255, u'type': u'boolean', u'description': u'set true to enable security group for this hypervisor.'}], u'requiredparams': [], u'description': u'Updates a hypervisor capabilities.'}, u'template': {u'name': u'updateTemplate', u'related': [u'registerIso', u'registerIso', u'registerTemplate', u'copyIso', u'createTemplate', u'listIsos', u'copyTemplate', u'copyIso', u'listIsos', u'updateIso', u'listTemplates'], u'isasync': False, u'params': [{u'name': u'format', u'required': False, u'related': [], u'length': 255, u'type': u'string', u'description': u'the format for the image'}, {u'name': u'bootable', u'required': False, u'related': [], u'length': 255, u'type': u'boolean', u'description': u'true if image is bootable, false otherwise'}, {u'name': u'sortkey', u'required': False, u'related': [], u'length': 255, u'type': u'integer', u'description': u'sort key of the template, integer'}, {u'name': u'name', u'required': False, u'related': [], u'length': 255, u'type': u'string', u'description': u'the name of the image file'}, {u'name': u'displaytext', u'required': False, u'related': [], u'length': 4096, u'type': u'string', u'description': u'the display text of the image'}, {u'name': u'id', u'required': True, u'related': [u'registerIso', u'registerIso', u'updateTemplate', u'registerTemplate', u'copyIso', u'createTemplate', u'listIsos', u'copyTemplate', u'copyIso', u'listIsos', u'updateIso', u'listTemplates'], u'length': 255, u'type': u'uuid', u'description': u'the ID of the image file'}, {u'name': u'ostypeid', u'required': False, u'related': [u'addGuestOs', u'listOsTypes'], u'length': 255, u'type': u'uuid', u'description': u'the ID of the OS type that best represents the OS of this image.'}, {u'name': u'isrouting', u'required': False, u'related': [], u'length': 255, u'type': u'boolean', u'description': u'true if the template type is routing i.e., if template is used to deploy router'}, {u'name': u'isdynamicallyscalable', u'required': False, u'related': [], u'length': 255, u'type': u'boolean', u'description': u'true if template/ISO contains XS/VMWare tools inorder to support dynamic scaling of VM cpu/memory'}, {u'name': u'passwordenabled', u'required': False, u'related': [], u'length': 255, u'type': u'boolean', u'description': u'true if the image supports the password reset feature; default is false'}], u'requiredparams': [u'id'], u'description': u'Updates attributes of a template.'}, u'defaultnicforvirtualmachine': {u'name': u'updateDefaultNicForVirtualMachine', u'related': [u'updateVirtualMachine', u'assignVirtualMachine', u'detachIso', u'updateDefaultNicForVirtualMachine', u'revertToVMSnapshot', u'startVirtualMachine', u'resetPasswordForVirtualMachine', u'resetPasswordForVirtualMachine', u'stopVirtualMachine', u'listVirtualMachines', u'migrateVirtualMachineWithVolume', u'destroyVirtualMachine', u'startVirtualMachine', u'listVirtualMachines', u'changeServiceForVirtualMachine', u'updateVMAffinityGroup', u'removeNicFromVirtualMachine', u'deployVirtualMachine', u'revertToVMSnapshot', u'addNicToVirtualMachine', u'restoreVirtualMachine', u'restoreVirtualMachine', u'stopVirtualMachine', u'changeServiceForVirtualMachine', u'destroyVirtualMachine', u'migrateVirtualMachine', u'updateVirtualMachine', u'detachIso', u'resetSSHKeyForVirtualMachine', u'attachIso', u'rebootVirtualMachine'], u'isasync': True, u'params': [{u'name': u'nicid', u'required': True, u'related': [], u'length': 255, u'type': u'uuid', u'description': u'NIC ID'}, {u'name': u'virtualmachineid', u'required': True, u'related': [u'updateVirtualMachine', u'assignVirtualMachine', u'detachIso', u'updateDefaultNicForVirtualMachine', u'updateDefaultNicForVirtualMachine', u'revertToVMSnapshot', u'startVirtualMachine', u'resetPasswordForVirtualMachine', u'resetPasswordForVirtualMachine', u'stopVirtualMachine', u'listVirtualMachines', u'migrateVirtualMachineWithVolume', u'destroyVirtualMachine', u'startVirtualMachine', u'listVirtualMachines', u'changeServiceForVirtualMachine', u'updateVMAffinityGroup', u'removeNicFromVirtualMachine', u'deployVirtualMachine', u'revertToVMSnapshot', u'addNicToVirtualMachine', u'restoreVirtualMachine', u'restoreVirtualMachine', u'stopVirtualMachine', u'changeServiceForVirtualMachine', u'destroyVirtualMachine', u'migrateVirtualMachine', u'updateVirtualMachine', u'detachIso', u'resetSSHKeyForVirtualMachine', u'attachIso', u'rebootVirtualMachine'], u'length': 255, u'type': u'uuid', u'description': u'Virtual Machine ID'}], u'requiredparams': [u'nicid', u'virtualmachineid'], u'description': u'Changes the default NIC on a VM'}, u'volume': {u'name': u'updateVolume', u'related': [u'uploadVolume', u'createVolume', u'detachVolume', u'createVolume', u'resizeVolume', u'attachVolume', u'updateVolume', u'migrateVolume', u'resizeVolume', u'uploadVolume', u'detachVolume', u'listVolumes'], u'isasync': True, u'params': [{u'name': u'displayvolume', u'required': False, u'related': [], u'length': 255, u'type': u'boolean', u'description': u'an optional field, whether to the display the volume to the end user or not.'}, {u'name': u'customid', u'required': False, u'related': [], u'length': 255, u'type': u'string', u'description': u'an optional field, in case you want to set a custom id to the resource. Allowed to Root Admins only'}, {u'name': u'storageid', u'required': False, u'related': [u'findStoragePoolsForMigration', u'createStoragePool', u'cancelStorageMaintenance', u'updateStoragePool', u'listStoragePools'], u'length': 255, u'type': u'uuid', u'description': u'Destination storage pool UUID for the volume'}, {u'name': u'id', u'required': False, u'related': [u'uploadVolume', u'createVolume', u'detachVolume', u'createVolume', u'updateVolume', u'resizeVolume', u'attachVolume', u'updateVolume', u'migrateVolume', u'resizeVolume', u'uploadVolume', u'detachVolume', u'listVolumes'], u'length': 255, u'type': u'uuid', u'description': u'the ID of the disk volume'}, {u'name': u'chaininfo', u'required': False, u'related': [], u'length': 255, u'type': u'string', u'description': u'The chain info of the volume'}, {u'name': u'path', u'required': False, u'related': [], u'length': 255, u'type': u'string', u'description': u'The path of the volume'}, {u'name': u'state', u'required': False, u'related': [], u'length': 255, u'type': u'string', u'description': u'The state of the volume'}], u'requiredparams': [], u'description': u'Updates the volume.'}, u'host': {u'name': u'updateHost', u'related': [u'prepareHostForMaintenance', u'listHosts'], u'isasync': False, u'params': [{u'name': u'oscategoryid', u'required': False, u'related': [], u'length': 255, u'type': u'uuid', u'description': u'the id of Os category to update the host with'}, {u'name': u'hosttags', u'required': False, u'related': [], u'length': 255, u'type': u'list', u'description': u'list of tags to be added to the host'}, {u'name': u'allocationstate', u'required': False, u'related': [], u'length': 255, u'type': u'string', u'description': u'Change resource state of host, valid values are [Enable, Disable]. Operation may failed if host in states not allowing Enable/Disable'}, {u'name': u'url', u'required': False, u'related': [], u'length': 255, u'type': u'string', u'description': u'the new uri for the secondary storage: nfs://host/path'}, {u'name': u'id', u'required': True, u'related': [u'updateHost', u'prepareHostForMaintenance', u'listHosts'], u'length': 255, u'type': u'uuid', u'description': u'the ID of the host to update'}], u'requiredparams': [u'id'], u'description': u'Updates a host.'}, u'networkaclitem': {u'name': u'updateNetworkACLItem', u'related': [u'createNetworkACL'], u'isasync': True, u'params': [{u'name': u'startport', u'required': False, u'related': [], u'length': 255, u'type': u'integer', u'description': u'the starting port of ACL'}, {u'name': u'id', u'required': True, u'related': [u'updateNetworkACLItem', u'createNetworkACL'], u'length': 255, u'type': u'uuid', u'description': u'the ID of the network ACL Item'}, {u'name': u'cidrlist', u'required': False, u'related': [], u'length': 255, u'type': u'list', u'description': u'the cidr list to allow traffic from/to'}, {u'name': u'icmptype', u'required': False, u'related': [], u'length': 255, u'type': u'integer', u'description': u'type of the icmp message being sent'}, {u'name': u'icmpcode', u'required': False, u'related': [], u'length': 255, u'type': u'integer', u'description': u'error code for this icmp message'}, {u'name': u'endport', u'required': False, u'related': [], u'length': 255, u'type': u'integer', u'description': u'the ending port of ACL'}, {u'name': u'number', u'required': False, u'related': [], u'length': 255, u'type': u'integer', u'description': u'The network of the vm the ACL will be created for'}, {u'name': u'fordisplay', u'required': False, u'related': [], u'length': 255, u'type': u'boolean', u'description': u'an optional field, whether to the display the rule to the end user or not'}, {u'name': u'traffictype', u'required': False, u'related': [], u'length': 255, u'type': u'string', u'description': u'the traffic type for the ACL,can be Ingress or Egress, defaulted to Ingress if not specified'}, {u'name': u'action', u'required': False, u'related': [], u'length': 255, u'type': u'string', u'description': u'scl entry action, allow or deny'}, {u'name': u'customid', u'required': False, u'related': [], u'length': 255, u'type': u'string', u'description': u'an optional field, in case you want to set a custom id to the resource. Allowed to Root Admins only'}, {u'name': u'protocol', u'required': False, u'related': [], u'length': 255, u'type': u'string', u'description': u'the protocol for the ACL rule. Valid values are TCP/UDP/ICMP/ALL or valid protocol number'}], u'requiredparams': [u'id'], u'description': u'Updates ACL Item with specified Id'}, u'vpc': {u'name': u'updateVPC', u'related': [u'listVPCs', u'updateVPC', u'restartVPC', u'createVPC', u'createVPC', u'listVPCs'], u'isasync': True, u'params': [{u'name': u'displaytext', u'required': False, u'related': [], u'length': 255, u'type': u'string', u'description': u'the display text of the VPC'}, {u'name': u'id', u'required': True, u'related': [u'listVPCs', u'updateVPC', u'updateVPC', u'restartVPC', u'createVPC', u'createVPC', u'listVPCs'], u'length': 255, u'type': u'uuid', u'description': u'the id of the VPC'}, {u'name': u'customid', u'required': False, u'related': [], u'length': 255, u'type': u'string', u'description': u'an optional field, in case you want to set a custom id to the resource. Allowed to Root Admins only'}, {u'name': u'name', u'required': False, u'related': [], u'length': 255, u'type': u'string', u'description': u'the name of the VPC'}, {u'name': u'fordisplay', u'required': False, u'related': [], u'length': 255, u'type': u'boolean', u'description': u'an optional field, whether to the display the vpc to the end user or not'}], u'requiredparams': [u'id'], u'description': u'Updates a VPC'}, u'resourcecount': {u'name': u'updateResourceCount', u'related': [], u'isasync': False, u'params': [{u'name': u'account', u'required': False, u'related': [], u'length': 255, u'type': u'string', u'description': u'Update resource count for a specified account. Must be used with the domainId parameter.'}, {u'name': u'domainid', u'required': True, u'related': [], u'length': 255, u'type': u'uuid', u'description': u'If account parameter specified then updates resource counts for a specified account in this domain else update resource counts for all accounts & child domains in specified domain.'}, {u'name': u'resourcetype', u'required': False, u'related': [], u'length': 255, u'type': u'integer', u'description': u'Type of resource to update. If specifies valid values are 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10 and 11. If not specified will update all resource counts0 - Instance. Number of instances a user can create. 1 - IP. Number of public IP addresses a user can own. 2 - Volume. Number of disk volumes a user can create.3 - Snapshot. Number of snapshots a user can create.4 - Template. Number of templates that a user can register/create.5 - Project. Number of projects that a user can create.6 - Network. Number of guest network a user can create.7 - VPC. Number of VPC a user can create.8 - CPU. Total number of CPU cores a user can use.9 - Memory. Total Memory (in MB) a user can use.10 - PrimaryStorage. Total primary storage space (in GiB) a user can use.11 - SecondaryStorage. Total secondary storage space (in GiB) a user can use.'}, {u'name': u'projectid', u'required': False, u'related': [], u'length': 255, u'type': u'uuid', u'description': u'Update resource limits for project'}], u'requiredparams': [u'domainid'], u'description': u'Recalculate and update resource count for an account or domain.'}, u'storagenetworkiprange': {u'name': u'updateStorageNetworkIpRange', u'related': [u'listStorageNetworkIpRange'], u'isasync': True, u'params': [{u'name': u'vlan', u'required': False, u'related': [], u'length': 255, u'type': u'integer', u'description': u'Optional. the vlan the ip range sits on'}, {u'name': u'id', u'required': True, u'related': [u'listStorageNetworkIpRange', u'updateStorageNetworkIpRange'], u'length': 255, u'type': u'uuid', u'description': u'UUID of storage network ip range'}, {u'name': u'startip', u'required': False, u'related': [], u'length': 255, u'type': u'string', u'description': u'the beginning IP address'}, {u'name': u'endip', u'required': False, u'related': [], u'length': 255, u'type': u'string', u'description': u'the ending IP address'}, {u'name': u'netmask', u'required': False, u'related': [], u'length': 255, u'type': u'string', u'description': u'the netmask for storage network'}], u'requiredparams': [u'id'], u'description': u'Update a Storage network IP range, only allowed when no IPs in this range have been allocated.'}, u'configuration': {u'name': u'updateConfiguration', u'related': [u'listConfigurations'], u'isasync': False, u'params': [{u'name': u'zoneid', u'required': False, u'related': [u'listZones', u'updateZone', u'createZone', u'listZones'], u'length': 255, u'type': u'uuid', u'description': u'the ID of the Zone to update the parameter value for corresponding zone'}, {u'name': u'accountid', u'required': False, u'related': [u'listAccounts', u'enableAccount', u'createAccount', u'markDefaultZoneForAccount', u'listAccounts', u'updateAccount', u'ldapCreateAccount', u'disableAccount', u'lockAccount'], u'length': 255, u'type': u'uuid', u'description': u'the ID of the Account to update the parameter value for corresponding account'}, {u'name': u'name', u'required': True, u'related': [], u'length': 255, u'type': u'string', u'description': u'the name of the configuration'}, {u'name': u'clusterid', u'required': False, u'related': [u'listClusters', u'updateCluster'], u'length': 255, u'type': u'uuid', u'description': u'the ID of the Cluster to update the parameter value for corresponding cluster'}, {u'name': u'storageid', u'required': False, u'related': [u'findStoragePoolsForMigration', u'createStoragePool', u'cancelStorageMaintenance', u'enableStorageMaintenance', u'updateStoragePool', u'listStoragePools'], u'length': 255, u'type': u'uuid', u'description': u'the ID of the Storage pool to update the parameter value for corresponding storage pool'}, {u'name': u'value', u'required': False, u'related': [], u'length': 4095, u'type': u'string', u'description': u'the value of the configuration'}], u'requiredparams': [u'name'], u'description': u'Updates a configuration.'}, u'ipaddress': {u'name': u'updateIpAddress', u'related': [u'associateIpAddress', u'listPublicIpAddresses', u'restartNetwork', u'associateIpAddress'], u'isasync': True, u'params': [{u'name': u'customid', u'required': False, u'related': [], u'length': 255, u'type': u'string', u'description': u'an optional field, in case you want to set a custom id to the resource. Allowed to Root Admins only'}, {u'name': u'id', u'required': True, u'related': [u'associateIpAddress', u'updateIpAddress', u'listPublicIpAddresses', u'restartNetwork', u'associateIpAddress'], u'length': 255, u'type': u'uuid', u'description': u'the id of the public ip address to update'}, {u'name': u'fordisplay', u'required': False, u'related': [], u'length': 255, u'type': u'boolean', u'description': u'an optional field, whether to the display the ip to the end user or not'}], u'requiredparams': [u'id'], u'description': u'Updates an ip address'}, u'templatepermissions': {u'name': u'updateTemplatePermissions', u'related': [], u'isasync': False, u'params': [{u'name': u'op', u'required': False, u'related': [], u'length': 255, u'type': u'string', u'description': u'permission operator (add, remove, reset)'}, {u'name': u'isfeatured', u'required': False, u'related': [], u'length': 255, u'type': u'boolean', u'description': u'true for featured template/iso, false otherwise'}, {u'name': u'id', u'required': True, u'related': [u'registerIso', u'registerTemplate', u'createTemplate', u'listIsos', u'copyTemplate', u'copyIso', u'listIsos', u'listTemplates'], u'length': 255, u'type': u'uuid', u'description': u'the template ID'}, {u'name': u'accounts', u'required': False, u'related': [], u'length': 255, u'type': u'list', u'description': u'a comma delimited list of accounts. If specified, "op" parameter has to be passed in.'}, {u'name': u'isextractable', u'required': False, u'related': [], u'length': 255, u'type': u'boolean', u'description': u'true if the template/iso is extractable, false other wise. Can be set only by root admin'}, {u'name': u'projectids', u'required': False, u'related': [], u'length': 255, u'type': u'list', u'description': u'a comma delimited list of projects. If specified, "op" parameter has to be passed in.'}, {u'name': u'ispublic', u'required': False, u'related': [], u'length': 255, u'type': u'boolean', u'description': u'true for public template/iso, false for private templates/isos'}], u'requiredparams': [u'id'], u'description': u'Updates a template visibility permissions. A public template is visible to all accounts within the same domain. A private template is visible only to the owner of the template. A priviledged template is a private template with account permissions added. Only accounts specified under the template permissions are visible to them.'}, u'autoscalevmprofile': {u'name': u'updateAutoScaleVmProfile', u'related': [u'listAutoScaleVmProfiles'], u'isasync': True, u'params': [{u'name': u'id', u'required': True, u'related': [u'updateAutoScaleVmProfile', u'listAutoScaleVmProfiles'], u'length': 255, u'type': u'uuid', u'description': u'the ID of the autoscale vm profile'}, {u'name': u'customid', u'required': False, u'related': [], u'length': 255, u'type': u'string', u'description': u'an optional field, in case you want to set a custom id to the resource. Allowed to Root Admins only'}, {u'name': u'templateid', u'required': False, u'related': [u'registerIso', u'registerIso', u'prepareTemplate', u'updateTemplate', u'registerTemplate', u'registerTemplate', u'copyIso', u'listTemplates', u'createTemplate', u'listIsos', u'copyTemplate', u'copyIso', u'listIsos', u'updateIso', u'listTemplates'], u'length': 255, u'type': u'uuid', u'description': u'the template of the auto deployed virtual machine'}, {u'name': u'destroyvmgraceperiod', u'required': False, u'related': [], u'length': 255, u'type': u'integer', u'description': u'the time allowed for existing connections to get closed before a vm is destroyed'}, {u'name': u'counterparam', u'required': False, u'related': [], u'length': 255, u'type': u'map', u'description': u'counterparam list. Example: counterparam[0].name=snmpcommunity&counterparam[0].value=public&counterparam[1].name=snmpport&counterparam[1].value=161'}, {u'name': u'autoscaleuserid', u'required': False, u'related': [u'createUser', u'enableUser', u'disableUser', u'lockUser', u'listUsers', u'updateUser', u'getUser'], u'length': 255, u'type': u'uuid', u'description': u'the ID of the user used to launch and destroy the VMs'}, {u'name': u'fordisplay', u'required': False, u'related': [], u'length': 255, u'type': u'boolean', u'description': u'an optional field, whether to the display the profile to the end user or not'}], u'requiredparams': [u'id'], u'description': u'Updates an existing autoscale vm profile.'}, u'traffictype': {u'name': u'updateTrafficType', u'related': [u'addTrafficType'], u'isasync': True, u'params': [{u'name': u'id', u'required': True, u'related': [u'updateTrafficType', u'addTrafficType'], u'length': 255, u'type': u'uuid', u'description': u'traffic type id'}, {u'name': u'hypervnetworklabel', u'required': False, u'related': [], u'length': 255, u'type': u'string', u'description': u'The network name label of the physical device dedicated to this traffic on a Hyperv host'}, {u'name': u'xennetworklabel', u'required': False, u'related': [], u'length': 255, u'type': u'string', u'description': u'The network name label of the physical device dedicated to this traffic on a XenServer host'}, {u'name': u'kvmnetworklabel', u'required': False, u'related': [], u'length': 255, u'type': u'string', u'description': u'The network name label of the physical device dedicated to this traffic on a KVM host'}, {u'name': u'vmwarenetworklabel', u'required': False, u'related': [], u'length': 255, u'type': u'string', u'description': u'The network name label of the physical device dedicated to this traffic on a VMware host'}], u'requiredparams': [u'id'], u'description': u'Updates traffic type of a physical network'}, u'account': {u'name': u'updateAccount', u'related': [u'listAccounts', u'createAccount', u'markDefaultZoneForAccount', u'listAccounts', u'ldapCreateAccount', u'disableAccount', u'lockAccount'], u'isasync': False, u'params': [{u'name': u'domainid', u'required': False, u'related': [u'listDomains', u'updateDomain', u'createDomain', u'listDomainChildren'], u'length': 255, u'type': u'uuid', u'description': u'the ID of the domain where the account exists'}, {u'name': u'account', u'required': False, u'related': [], u'length': 255, u'type': u'string', u'description': u'the current account name'}, {u'name': u'accountdetails', u'required': False, u'related': [], u'length': 255, u'type': u'map', u'description': u'details for account used to store specific parameters'}, {u'name': u'newname', u'required': True, u'related': [], u'length': 255, u'type': u'string', u'description': u'new name for the account'}, {u'name': u'networkdomain', u'required': False, u'related': [], u'length': 255, u'type': u'string', u'description': u"Network domain for the account's networks; empty string will update domainName with NULL value"}, {u'name': u'id', u'required': False, u'related': [u'listAccounts', u'createAccount', u'markDefaultZoneForAccount', u'listAccounts', u'updateAccount', u'ldapCreateAccount', u'disableAccount', u'lockAccount'], u'length': 255, u'type': u'uuid', u'description': u'Account id'}], u'requiredparams': [u'newname'], u'description': u'Updates account information for the authenticated user'}, u'zone': {u'name': u'updateZone', u'related': [u'listZones', u'createZone', u'listZones'], u'isasync': False, u'params': [{u'name': u'name', u'required': False, u'related': [], u'length': 255, u'type': u'string', u'description': u'the name of the Zone'}, {u'name': u'dhcpprovider', u'required': False, u'related': [], u'length': 255, u'type': u'string', u'description': u'the dhcp Provider for the Zone'}, {u'name': u'localstorageenabled', u'required': False, u'related': [], u'length': 255, u'type': u'boolean', u'description': u'true if local storage offering enabled, false otherwise'}, {u'name': u'dns2', u'required': False, u'related': [], u'length': 255, u'type': u'string', u'description': u'the second DNS for the Zone'}, {u'name': u'ip6dns1', u'required': False, u'related': [], u'length': 255, u'type': u'string', u'description': u'the first DNS for IPv6 network in the Zone'}, {u'name': u'details', u'required': False, u'related': [], u'length': 255, u'type': u'map', u'description': u'the details for the Zone'}, {u'name': u'allocationstate', u'required': False, u'related': [], u'length': 255, u'type': u'string', u'description': u'Allocation state of this cluster for allocation of new resources'}, {u'name': u'internaldns2', u'required': False, u'related': [], u'length': 255, u'type': u'string', u'description': u'the second internal DNS for the Zone'}, {u'name': u'internaldns1', u'required': False, u'related': [], u'length': 255, u'type': u'string', u'description': u'the first internal DNS for the Zone'}, {u'name': u'dnssearchorder', u'required': False, u'related': [], u'length': 255, u'type': u'list', u'description': u'the dns search order list'}, {u'name': u'guestcidraddress', u'required': False, u'related': [], u'length': 255, u'type': u'string', u'description': u'the guest CIDR address for the Zone'}, {u'name': u'id', u'required': True, u'related': [u'listZones', u'updateZone', u'createZone', u'listZones'], u'length': 255, u'type': u'uuid', u'description': u'the ID of the Zone'}, {u'name': u'ip6dns2', u'required': False, u'related': [], u'length': 255, u'type': u'string', u'description': u'the second DNS for IPv6 network in the Zone'}, {u'name': u'dns1', u'required': False, u'related': [], u'length': 255, u'type': u'string', u'description': u'the first DNS for the Zone'}, {u'name': u'domain', u'required': False, u'related': [], u'length': 255, u'type': u'string', u'description': u'Network domain name for the networks in the zone; empty string will update domain with NULL value'}, {u'name': u'ispublic', u'required': False, u'related': [], u'length': 255, u'type': u'boolean', u'description': u'updates a private zone to public if set, but not vice-versa'}], u'requiredparams': [u'id'], u'description': u'Updates a Zone.'}, u'firewallrule': {u'name': u'updateFirewallRule', u'related': [u'createFirewallRule', u'listEgressFirewallRules'], u'isasync': True, u'params': [{u'name': u'fordisplay', u'required': False, u'related': [], u'length': 255, u'type': u'boolean', u'description': u'an optional field, whether to the display the rule to the end user or not'}, {u'name': u'customid', u'required': False, u'related': [], u'length': 255, u'type': u'string', u'description': u'an optional field, in case you want to set a custom id to the resource. Allowed to Root Admins only'}, {u'name': u'id', u'required': True, u'related': [u'listIpForwardingRules'], u'length': 255, u'type': u'uuid', u'description': u'the ID of the firewall rule'}], u'requiredparams': [u'id'], u'description': u'Updates firewall rule '}, u'vmaffinitygroup': {u'name': u'updateVMAffinityGroup', u'related': [u'updateVirtualMachine', u'removeNicFromVirtualMachine', u'assignVirtualMachine', u'detachIso', u'updateDefaultNicForVirtualMachine', u'updateDefaultNicForVirtualMachine', u'revertToVMSnapshot', u'startVirtualMachine', u'resetPasswordForVirtualMachine', u'resetPasswordForVirtualMachine', u'stopVirtualMachine', u'listVirtualMachines', u'migrateVirtualMachineWithVolume', u'destroyVirtualMachine', u'startVirtualMachine', u'listVirtualMachines', u'changeServiceForVirtualMachine', u'updateVMAffinityGroup', u'removeNicFromVirtualMachine', u'deployVirtualMachine', u'revertToVMSnapshot', u'addNicToVirtualMachine', u'restoreVirtualMachine', u'restoreVirtualMachine', u'stopVirtualMachine', u'changeServiceForVirtualMachine', u'destroyVirtualMachine', u'migrateVirtualMachine', u'updateVirtualMachine', u'detachIso', u'resetSSHKeyForVirtualMachine', u'attachIso', u'rebootVirtualMachine'], u'isasync': True, u'params': [{u'name': u'id', u'required': True, u'related': [u'updateVirtualMachine', u'removeNicFromVirtualMachine', u'assignVirtualMachine', u'detachIso', u'updateDefaultNicForVirtualMachine', u'updateDefaultNicForVirtualMachine', u'revertToVMSnapshot', u'startVirtualMachine', u'resetPasswordForVirtualMachine', u'resetPasswordForVirtualMachine', u'updateVMAffinityGroup', u'stopVirtualMachine', u'listVirtualMachines', u'migrateVirtualMachineWithVolume', u'destroyVirtualMachine', u'startVirtualMachine', u'listVirtualMachines', u'changeServiceForVirtualMachine', u'updateVMAffinityGroup', u'removeNicFromVirtualMachine', u'deployVirtualMachine', u'revertToVMSnapshot', u'addNicToVirtualMachine', u'restoreVirtualMachine', u'restoreVirtualMachine', u'stopVirtualMachine', u'changeServiceForVirtualMachine', u'destroyVirtualMachine', u'migrateVirtualMachine', u'updateVirtualMachine', u'detachIso', u'resetSSHKeyForVirtualMachine', u'attachIso', u'rebootVirtualMachine'], u'length': 255, u'type': u'uuid', u'description': u'The ID of the virtual machine'}, {u'name': u'affinitygroupnames', u'required': False, u'related': [u'listAffinityGroups'], u'length': 255, u'type': u'list', u'description': u'comma separated list of affinity groups names that are going to be applied to the virtual machine. Should be passed only when vm is created from a zone with Basic Network support. Mutually exclusive with securitygroupids parameter'}, {u'name': u'affinitygroupids', u'required': False, u'related': [u'listAffinityGroups'], u'length': 255, u'type': u'list', u'description': u'comma separated list of affinity groups id that are going to be applied to the virtual machine. Should be passed only when vm is created from a zone with Basic Network support. Mutually exclusive with securitygroupnames parameter'}], u'requiredparams': [u'id'], u'description': u'Updates the affinity/anti-affinity group associations of a virtual machine. The VM has to be stopped and restarted for the new properties to take effect.'}, u'physicalnetwork': {u'name': u'updatePhysicalNetwork', u'related': [u'listPhysicalNetworks', u'createPhysicalNetwork'], u'isasync': True, u'params': [{u'name': u'tags', u'required': False, u'related': [], u'length': 255, u'type': u'list', u'description': u'Tag the physical network'}, {u'name': u'vlan', u'required': False, u'related': [], u'length': 255, u'type': u'string', u'description': u'the VLAN for the physical network'}, {u'name': u'networkspeed', u'required': False, u'related': [], u'length': 255, u'type': u'string', u'description': u'the speed for the physical network[1G/10G]'}, {u'name': u'id', u'required': True, u'related': [u'listPhysicalNetworks', u'updatePhysicalNetwork', u'createPhysicalNetwork'], u'length': 255, u'type': u'uuid', u'description': u'physical network id'}, {u'name': u'state', u'required': False, u'related': [], u'length': 255, u'type': u'string', u'description': u'Enabled/Disabled'}], u'requiredparams': [u'id'], u'description': u'Updates a physical network'}, u'region': {u'name': u'updateRegion', u'related': [u'listRegions', u'addRegion'], u'isasync': False, u'params': [{u'name': u'endpoint', u'required': False, u'related': [], u'length': 255, u'type': u'string', u'description': u'updates region with this end point'}, {u'name': u'name', u'required': False, u'related': [], u'length': 255, u'type': u'string', u'description': u'updates region with this name'}, {u'name': u'id', u'required': True, u'related': [], u'length': 255, u'type': u'integer', u'description': u'Id of region to update'}], u'requiredparams': [u'id'], u'description': u'Updates a region'}, u'networkoffering': {u'name': u'updateNetworkOffering', u'related': [], u'isasync': False, u'params': [{u'name': u'sortkey', u'required': False, u'related': [], u'length': 255, u'type': u'integer', u'description': u'sort key of the network offering, integer'}, {u'name': u'id', u'required': False, u'related': [u'updateNetworkOffering'], u'length': 255, u'type': u'uuid', u'description': u'the id of the network offering'}, {u'name': u'availability', u'required': False, u'related': [], u'length': 255, u'type': u'string', u'description': u'the availability of network offering. Default value is Required for Guest Virtual network offering; Optional for Guest Direct network offering'}, {u'name': u'keepaliveenabled', u'required': False, u'related': [], u'length': 255, u'type': u'boolean', u'description': u'if true keepalive will be turned on in the loadbalancer. At the time of writing this has only an effect on haproxy; the mode http and httpclose options are unset in the haproxy conf file.'}, {u'name': u'maxconnections', u'required': False, u'related': [], u'length': 255, u'type': u'integer', u'description': u'maximum number of concurrent connections supported by the network offering'}, {u'name': u'name', u'required': False, u'related': [], u'length': 255, u'type': u'string', u'description': u'the name of the network offering'}, {u'name': u'displaytext', u'required': False, u'related': [], u'length': 255, u'type': u'string', u'description': u'the display text of the network offering'}, {u'name': u'state', u'required': False, u'related': [], u'length': 255, u'type': u'string', u'description': u'update state for the network offering'}], u'requiredparams': [], u'description': u'Updates a network offering.'}, u'lbhealthcheckpolicy': {u'name': u'updateLBHealthCheckPolicy', u'related': [], u'isasync': True, u'params': [{u'name': u'customid', u'required': False, u'related': [], u'length': 255, u'type': u'string', u'description': u'an optional field, in case you want to set a custom id to the resource. Allowed to Root Admins only'}, {u'name': u'id', u'required': True, u'related': [u'updateLBHealthCheckPolicy'], u'length': 255, u'type': u'uuid', u'description': u'id of lb healthcheck policy'}, {u'name': u'fordisplay', u'required': False, u'related': [], u'length': 255, u'type': u'boolean', u'description': u'an optional field, whether to the display the policy to the end user or not'}], u'requiredparams': [u'id'], u'description': u'Updates LB HealthCheck policy'}, u'project': {u'name': u'updateProject', u'related': [u'createProject'], u'isasync': True, u'params': [{u'name': u'account', u'required': False, u'related': [], u'length': 255, u'type': u'string', u'description': u'new Admin account for the project'}, {u'name': u'displaytext', u'required': False, u'related': [], u'length': 255, u'type': u'string', u'description': u'display text of the project'}, {u'name': u'id', u'required': True, u'related': [u'updateProject', u'createProject'], u'length': 255, u'type': u'uuid', u'description': u'id of the project to be modified'}], u'requiredparams': [u'id'], u'description': u'Updates a project'}, u'vpncustomergateway': {u'name': u'updateVpnCustomerGateway', u'related': [], u'isasync': True, u'params': [{u'name': u'esplifetime', u'required': False, u'related': [], u'length': 255, u'type': u'long', u'description': u'Lifetime of phase 2 VPN connection to the customer gateway, in seconds'}, {u'name': u'id', u'required': True, u'related': [u'updateVpnCustomerGateway'], u'length': 255, u'type': u'uuid', u'description': u'id of customer gateway'}, {u'name': u'name', u'required': False, u'related': [], u'length': 255, u'type': u'string', u'description': u'name of this customer gateway'}, {u'name': u'ipsecpsk', u'required': True, u'related': [], u'length': 255, u'type': u'string', u'description': u'IPsec Preshared-Key of the customer gateway'}, {u'name': u'dpd', u'required': False, u'related': [], u'length': 255, u'type': u'boolean', u'description': u'If DPD is enabled for VPN connection'}, {u'name': u'ikepolicy', u'required': True, u'related': [], u'length': 255, u'type': u'string', u'description': u'IKE policy of the customer gateway'}, {u'name': u'account', u'required': False, u'related': [], u'length': 255, u'type': u'string', u'description': u'the account associated with the gateway. Must be used with the domainId parameter.'}, {u'name': u'domainid', u'required': False, u'related': [u'updateDomain', u'listDomainChildren'], u'length': 255, u'type': u'uuid', u'description': u'the domain ID associated with the gateway. If used with the account parameter returns the gateway associated with the account for the specified domain.'}, {u'name': u'gateway', u'required': True, u'related': [], u'length': 255, u'type': u'string', u'description': u'public ip address id of the customer gateway'}, {u'name': u'esppolicy', u'required': True, u'related': [], u'length': 255, u'type': u'string', u'description': u'ESP policy of the customer gateway'}, {u'name': u'ikelifetime', u'required': False, u'related': [], u'length': 255, u'type': u'long', u'description': u'Lifetime of phase 1 VPN connection to the customer gateway, in seconds'}, {u'name': u'cidrlist', u'required': True, u'related': [], u'length': 255, u'type': u'string', u'description': u'guest cidr of the customer gateway'}], u'requiredparams': [u'id', u'ipsecpsk', u'ikepolicy', u'gateway', u'esppolicy', u'cidrlist'], u'description': u'Update site to site vpn customer gateway'}, u'iso': {u'name': u'updateIso', u'related': [u'registerIso', u'registerTemplate', u'createTemplate', u'listIsos', u'copyTemplate', u'copyIso', u'listIsos', u'listTemplates'], u'isasync': False, u'params': [{u'name': u'displaytext', u'required': False, u'related': [], u'length': 4096, u'type': u'string', u'description': u'the display text of the image'}, {u'name': u'ostypeid', u'required': False, u'related': [u'addGuestOs'], u'length': 255, u'type': u'uuid', u'description': u'the ID of the OS type that best represents the OS of this image.'}, {u'name': u'bootable', u'required': False, u'related': [], u'length': 255, u'type': u'boolean', u'description': u'true if image is bootable, false otherwise'}, {u'name': u'isdynamicallyscalable', u'required': False, u'related': [], u'length': 255, u'type': u'boolean', u'description': u'true if template/ISO contains XS/VMWare tools inorder to support dynamic scaling of VM cpu/memory'}, {u'name': u'passwordenabled', u'required': False, u'related': [], u'length': 255, u'type': u'boolean', u'description': u'true if the image supports the password reset feature; default is false'}, {u'name': u'isrouting', u'required': False, u'related': [], u'length': 255, u'type': u'boolean', u'description': u'true if the template type is routing i.e., if template is used to deploy router'}, {u'name': u'id', u'required': True, u'related': [u'registerIso', u'registerTemplate', u'createTemplate', u'listIsos', u'copyTemplate', u'copyIso', u'listIsos', u'updateIso', u'listTemplates'], u'length': 255, u'type': u'uuid', u'description': u'the ID of the image file'}, {u'name': u'format', u'required': False, u'related': [], u'length': 255, u'type': u'string', u'description': u'the format for the image'}, {u'name': u'sortkey', u'required': False, u'related': [], u'length': 255, u'type': u'integer', u'description': u'sort key of the template, integer'}, {u'name': u'name', u'required': False, u'related': [], u'length': 255, u'type': u'string', u'description': u'the name of the image file'}], u'requiredparams': [u'id'], u'description': u'Updates an ISO file.'}, u'egressfirewallrule': {u'name': u'updateEgressFirewallRule', u'related': [u'updateFirewallRule', u'createFirewallRule', u'listEgressFirewallRules', u'listFirewallRules'], u'isasync': True, u'params': [{u'name': u'customid', u'required': False, u'related': [], u'length': 255, u'type': u'string', u'description': u'an optional field, in case you want to set a custom id to the resource. Allowed to Root Admins only'}, {u'name': u'id', u'required': True, u'related': [u'listIpForwardingRules'], u'length': 255, u'type': u'uuid', u'description': u'the ID of the egress firewall rule'}, {u'name': u'fordisplay', u'required': False, u'related': [], u'length': 255, u'type': u'boolean', u'description': u'an optional field, whether to the display the rule to the end user or not'}], u'requiredparams': [u'id'], u'description': u'Updates egress firewall rule '}, u'networkserviceprovider': {u'name': u'updateNetworkServiceProvider', u'related': [], u'isasync': True, u'params': [{u'name': u'servicelist', u'required': False, u'related': [], u'length': 255, u'type': u'list', u'description': u'the list of services to be enabled for this physical network service provider'}, {u'name': u'state', u'required': False, u'related': [], u'length': 255, u'type': u'string', u'description': u'Enabled/Disabled/Shutdown the physical network service provider'}, {u'name': u'id', u'required': True, u'related': [u'updateNetworkServiceProvider'], u'length': 255, u'type': u'uuid', u'description': u'network service provider id'}], u'requiredparams': [u'id'], u'description': u'Updates a network serviceProvider of a physical network'}, u'autoscalevmgroup': {u'name': u'updateAutoScaleVmGroup', u'related': [], u'isasync': True, u'params': [{u'name': u'scaledownpolicyids', u'required': False, u'related': [], u'length': 255, u'type': u'list', u'description': u'list of scaledown autoscale policies'}, {u'name': u'fordisplay', u'required': False, u'related': [], u'length': 255, u'type': u'boolean', u'description': u'an optional field, whether to the display the group to the end user or not'}, {u'name': u'id', u'required': True, u'related': [u'updateAutoScaleVmGroup'], u'length': 255, u'type': u'uuid', u'description': u'the ID of the autoscale group'}, {u'name': u'maxmembers', u'required': False, u'related': [], u'length': 255, u'type': u'integer', u'description': u'the maximum number of members in the vmgroup, The number of instances in the vm group will be equal to or less than this number.'}, {u'name': u'customid', u'required': False, u'related': [], u'length': 255, u'type': u'string', u'description': u'an optional field, in case you want to set a custom id to the resource. Allowed to Root Admins only'}, {u'name': u'interval', u'required': False, u'related': [], u'length': 255, u'type': u'integer', u'description': u'the frequency at which the conditions have to be evaluated'}, {u'name': u'minmembers', u'required': False, u'related': [], u'length': 255, u'type': u'integer', u'description': u'the minimum number of members in the vmgroup, the number of instances in the vm group will be equal to or more than this number.'}, {u'name': u'scaleuppolicyids', u'required': False, u'related': [], u'length': 255, u'type': u'list', u'description': u'list of scaleup autoscale policies'}], u'requiredparams': [u'id'], u'description': u'Updates an existing autoscale vm group.'}, u'loadbalancer': {u'name': u'updateLoadBalancer', u'related': [u'createLoadBalancer'], u'isasync': True, u'params': [{u'name': u'customid', u'required': False, u'related': [], u'length': 255, u'type': u'string', u'description': u'an optional field, in case you want to set a custom id to the resource. Allowed to Root Admins only'}, {u'name': u'id', u'required': True, u'related': [u'listPortForwardingRules', u'createPortForwardingRule', u'listIpForwardingRules', u'createIpForwardingRule', u'updatePortForwardingRule'], u'length': 255, u'type': u'uuid', u'description': u'the ID of the Load Balancer'}, {u'name': u'fordisplay', u'required': False, u'related': [], u'length': 255, u'type': u'boolean', u'description': u'an optional field, whether to the display the rule to the end user or not'}], u'requiredparams': [u'id'], u'description': u'Updates a Load Balancer'}, u'user': {u'name': u'updateUser', u'related': [u'disableUser', u'lockUser', u'listUsers'], u'isasync': False, u'params': [{u'name': u'email', u'required': False, u'related': [], u'length': 255, u'type': u'string', u'description': u'email'}, {u'name': u'lastname', u'required': False, u'related': [], u'length': 255, u'type': u'string', u'description': u'last name'}, {u'name': u'username', u'required': False, u'related': [], u'length': 255, u'type': u'string', u'description': u'Unique username'}, {u'name': u'password', u'required': False, u'related': [], u'length': 255, u'type': u'string', u'description': u'Clear text password (default hashed to SHA256SALT). If you wish to use any other hasing algorithm, you would need to write a custom authentication adapter'}, {u'name': u'id', u'required': True, u'related': [u'disableUser', u'lockUser', u'listUsers', u'updateUser'], u'length': 255, u'type': u'uuid', u'description': u'User uuid'}, {u'name': u'firstname', u'required': False, u'related': [], u'length': 255, u'type': u'string', u'description': u'first name'}, {u'name': u'usersecretkey', u'required': False, u'related': [], u'length': 255, u'type': u'string', u'description': u'The secret key for the user. Must be specified with userSecretKey'}, {u'name': u'userapikey', u'required': False, u'related': [], u'length': 255, u'type': u'string', u'description': u'The API key for the user. Must be specified with userSecretKey'}, {u'name': u'timezone', u'required': False, u'related': [], u'length': 255, u'type': u'string', u'description': u'Specifies a timezone for this command. For more information on the timezone parameter, see Time Zone Format.'}], u'requiredparams': [u'id'], u'description': u'Updates a user account'}}, u'upload': {u'volume': {u'name': u'uploadVolume', u'related': [u'createVolume', u'attachVolume', u'updateVolume', u'migrateVolume', u'resizeVolume', u'uploadVolume', u'detachVolume', u'listVolumes'], u'isasync': True, u'params': [{u'name': u'url', u'required': True, u'related': [], u'length': 255, u'type': u'string', u'description': u'the URL of where the volume is hosted. Possible URL include http:// and https://'}, {u'name': u'imagestoreuuid', u'required': False, u'related': [], u'length': 255, u'type': u'string', u'description': u'Image store uuid'}, {u'name': u'account', u'required': False, u'related': [], u'length': 255, u'type': u'string', u'description': u'an optional accountName. Must be used with domainId.'}, {u'name': u'diskofferingid', u'required': False, u'related': [u'createDiskOffering'], u'length': 255, u'type': u'uuid', u'description': u'the ID of the disk offering. This must be a custom sized offering since during uploadVolume volume size is unknown.'}, {u'name': u'checksum', u'required': False, u'related': [], u'length': 255, u'type': u'string', u'description': u'the MD5 checksum value of this volume'}, {u'name': u'domainid', u'required': False, u'related': [], u'length': 255, u'type': u'uuid', u'description': u'an optional domainId. If the account parameter is used, domainId must also be used.'}, {u'name': u'zoneid', u'required': True, u'related': [u'listZones'], u'length': 255, u'type': u'uuid', u'description': u'the ID of the zone the volume is to be hosted on'}, {u'name': u'name', u'required': True, u'related': [], u'length': 255, u'type': u'string', u'description': u'the name of the volume'}, {u'name': u'projectid', u'required': False, u'related': [], u'length': 255, u'type': u'uuid', u'description': u'Upload volume for the project'}, {u'name': u'format', u'required': True, u'related': [], u'length': 255, u'type': u'string', u'description': u'the format for the volume. Possible values include QCOW2, OVA, and VHD.'}], u'requiredparams': [u'url', u'zoneid', u'name', u'format'], u'description': u'Uploads a data disk.'}, u'customcertificate': {u'name': u'uploadCustomCertificate', u'related': [], u'isasync': True, u'params': [{u'name': u'id', u'required': False, u'related': [], u'length': 255, u'type': u'integer', u'description': u'An integer providing the location in a chain that the certificate will hold. Usually, this can be left empty. When creating a chain, the top level certificate should have an ID of 1, with each step in the chain incrementing by one. Example, CA with id = 1, Intermediate CA with id = 2, Site certificate with ID = 3'}, {u'name': u'privatekey', u'required': False, u'related': [], u'length': 65535, u'type': u'string', u'description': u'The private key for the attached certificate.'}, {u'name': u'name', u'required': False, u'related': [], u'length': 255, u'type': u'string', u'description': u'A name / alias for the certificate.'}, {u'name': u'certificate', u'required': True, u'related': [], u'length': 65535, u'type': u'string', u'description': u'The certificate to be uploaded.'}, {u'name': u'domainsuffix', u'required': True, u'related': [], u'length': 255, u'type': u'string', u'description': u'DNS domain suffix that the certificate is granted for.'}], u'requiredparams': [u'certificate', u'domainsuffix'], u'description': u'Uploads a custom certificate for the console proxy VMs to use for SSL. Can be used to upload a single certificate signed by a known CA. Can also be used, through multiple calls, to upload a chain of certificates from CA to the custom certificate itself.'}, u'sslcert': {u'name': u'uploadSslCert', u'related': [u'listSslCerts'], u'isasync': False, u'params': [{u'name': u'password', u'required': False, u'related': [], u'length': 255, u'type': u'string', u'description': u'Password for the private key'}, {u'name': u'certchain', u'required': False, u'related': [], u'length': 2097152, u'type': u'string', u'description': u'Certificate chain of trust'}, {u'name': u'privatekey', u'required': True, u'related': [], u'length': 16384, u'type': u'string', u'description': u'Private key'}, {u'name': u'certificate', u'required': True, u'related': [], u'length': 16384, u'type': u'string', u'description': u'SSL certificate'}], u'requiredparams': [u'privatekey', u'certificate'], u'description': u'Upload a certificate to cloudstack'}}, u'upgrade': {u'routertemplate': {u'name': u'upgradeRouterTemplate', u'related': [], u'isasync': False, u'params': [{u'name': u'domainid', u'required': False, u'related': [], u'length': 255, u'type': u'uuid', u'description': u'upgrades all routers owned by the specified domain'}, {u'name': u'account', u'required': False, u'related': [], u'length': 255, u'type': u'string', u'description': u'upgrades all routers owned by the specified account'}, {u'name': u'id', u'required': False, u'related': [], u'length': 255, u'type': u'uuid', u'description': u'upgrades router with the specified Id'}, {u'name': u'zoneid', u'required': False, u'related': [u'listZones'], u'length': 255, u'type': u'uuid', u'description': u'upgrades all routers within the specified zone'}, {u'name': u'clusterid', u'required': False, u'related': [], u'length': 255, u'type': u'uuid', u'description': u'upgrades all routers within the specified cluster'}, {u'name': u'podid', u'required': False, u'related': [], u'length': 255, u'type': u'uuid', u'description': u'upgrades all routers within the specified pod'}], u'requiredparams': [], u'description': u'Upgrades router to use newer template'}}, u'disable': {u'account': {u'name': u'disableAccount', u'related': [u'listAccounts', u'markDefaultZoneForAccount', u'listAccounts'], u'isasync': True, u'params': [{u'name': u'account', u'required': False, u'related': [], u'length': 255, u'type': u'string', u'description': u'Disables specified account.'}, {u'name': u'id', u'required': False, u'related': [u'listAccounts', u'markDefaultZoneForAccount', u'listAccounts', u'disableAccount'], u'length': 255, u'type': u'uuid', u'description': u'Account id'}, {u'name': u'domainid', u'required': False, u'related': [u'updateDomain', u'listDomainChildren'], u'length': 255, u'type': u'uuid', u'description': u'Disables specified account in this domain.'}, {u'name': u'lock', u'required': True, u'related': [], u'length': 255, u'type': u'boolean', u'description': u'If true, only lock the account; else disable the account'}], u'requiredparams': [u'lock'], u'description': u'Disables an account'}, u'user': {u'name': u'disableUser', u'related': [u'lockUser', u'listUsers'], u'isasync': True, u'params': [{u'name': u'id', u'required': True, u'related': [u'disableUser', u'lockUser', u'listUsers'], u'length': 255, u'type': u'uuid', u'description': u'Disables user by user ID.'}], u'requiredparams': [u'id'], u'description': u'Disables a user account'}, u'staticnat': {u'name': u'disableStaticNat', u'related': [], u'isasync': True, u'params': [{u'name': u'ipaddressid', u'required': True, u'related': [u'associateIpAddress', u'listPublicIpAddresses', u'associateIpAddress'], u'length': 255, u'type': u'uuid', u'description': u'the public IP address id for which static nat feature is being disableed'}], u'requiredparams': [u'ipaddressid'], u'description': u'Disables static rule for given ip address'}, u'autoscalevmgroup': {u'name': u'disableAutoScaleVmGroup', u'related': [u'updateAutoScaleVmGroup', u'enableAutoScaleVmGroup'], u'isasync': True, u'params': [{u'name': u'id', u'required': True, u'related': [u'updateAutoScaleVmGroup', u'enableAutoScaleVmGroup', u'disableAutoScaleVmGroup'], u'length': 255, u'type': u'uuid', u'description': u'the ID of the autoscale group'}], u'requiredparams': [u'id'], u'description': u'Disables an AutoScale Vm Group'}}, u'resize': {u'volume': {u'name': u'resizeVolume', u'related': [u'uploadVolume', u'createVolume', u'detachVolume', u'createVolume', u'attachVolume', u'updateVolume', u'migrateVolume', u'resizeVolume', u'uploadVolume', u'detachVolume', u'listVolumes'], u'isasync': True, u'params': [{u'name': u'diskofferingid', u'required': False, u'related': [u'updateDiskOffering', u'createDiskOffering', u'listDiskOfferings'], u'length': 255, u'type': u'uuid', u'description': u'new disk offering id'}, {u'name': u'shrinkok', u'required': False, u'related': [], u'length': 255, u'type': u'boolean', u'description': u'Verify OK to Shrink'}, {u'name': u'size', u'required': False, u'related': [], u'length': 255, u'type': u'long', u'description': u'New volume size in G'}, {u'name': u'id', u'required': True, u'related': [u'uploadVolume', u'createVolume', u'detachVolume', u'createVolume', u'resizeVolume', u'attachVolume', u'updateVolume', u'migrateVolume', u'resizeVolume', u'uploadVolume', u'detachVolume', u'listVolumes'], u'length': 255, u'type': u'uuid', u'description': u'the ID of the disk volume'}], u'requiredparams': [u'id'], u'description': u'Resizes a volume'}}, u'import': {u'ldapusers': {u'name': u'importLdapUsers', u'related': [u'searchLdap', u'listLdapUsers'], u'isasync': False, u'params': [{u'name': u'group', u'required': False, u'related': [], u'length': 255, u'type': u'string', u'description': u'Specifies the group name from which the ldap users are to be imported. If no group is specified, all the users will be imported.'}, {u'name': u'pagesize', u'required': False, u'related': [], u'length': 255, u'type': u'integer', u'description': u''}, {u'name': u'domainid', u'required': False, u'related': [u'listDomains', u'updateDomain', u'createDomain', u'listDomainChildren'], u'length': 255, u'type': u'uuid', u'description': u'Specifies the domain to which the ldap users are to be imported. If no domain is specified, a domain will created using group parameter. If the group is also not specified, a domain name based on the OU information will be created. If no OU hierarchy exists, will be defaulted to ROOT domain'}, {u'name': u'accounttype', u'required': True, u'related': [], u'length': 255, u'type': u'short', u'description': u'Type of the account. Specify 0 for user, 1 for root admin, and 2 for domain admin'}, {u'name': u'accountdetails', u'required': False, u'related': [], u'length': 255, u'type': u'map', u'description': u'details for account used to store specific parameters'}, {u'name': u'page', u'required': False, u'related': [], u'length': 255, u'type': u'integer', u'description': u''}, {u'name': u'timezone', u'required': False, u'related': [], u'length': 255, u'type': u'string', u'description': u'Specifies a timezone for this command. For more information on the timezone parameter, see Time Zone Format.'}, {u'name': u'keyword', u'required': False, u'related': [], u'length': 255, u'type': u'string', u'description': u'List by keyword'}, {u'name': u'account', u'required': False, u'related': [], u'length': 255, u'type': u'string', u'description': u'Creates the user under the specified account. If no account is specified, the username will be used as the account name.'}], u'requiredparams': [u'accounttype'], u'description': u'Import LDAP users'}}, u'detach': {u'volume': {u'name': u'detachVolume', u'related': [u'uploadVolume', u'createVolume', u'createVolume', u'attachVolume', u'updateVolume', u'migrateVolume', u'resizeVolume', u'uploadVolume', u'detachVolume', u'listVolumes'], u'isasync': True, u'params': [{u'name': u'deviceid', u'required': False, u'related': [], u'length': 255, u'type': u'long', u'description': u'the device ID on the virtual machine where volume is detached from'}, {u'name': u'id', u'required': False, u'related': [u'uploadVolume', u'createVolume', u'detachVolume', u'createVolume', u'attachVolume', u'updateVolume', u'migrateVolume', u'resizeVolume', u'uploadVolume', u'detachVolume', u'listVolumes'], u'length': 255, u'type': u'uuid', u'description': u'the ID of the disk volume'}, {u'name': u'virtualmachineid', u'required': False, u'related': [u'updateVirtualMachine', u'removeNicFromVirtualMachine', u'assignVirtualMachine', u'detachIso', u'updateDefaultNicForVirtualMachine', u'updateDefaultNicForVirtualMachine', u'revertToVMSnapshot', u'startVirtualMachine', u'resetPasswordForVirtualMachine', u'resetPasswordForVirtualMachine', u'updateVMAffinityGroup', u'stopVirtualMachine', u'listVirtualMachines', u'migrateVirtualMachineWithVolume', u'destroyVirtualMachine', u'attachIso', u'rebootVirtualMachine', u'startVirtualMachine', u'listVirtualMachines', u'changeServiceForVirtualMachine', u'updateVMAffinityGroup', u'removeNicFromVirtualMachine', u'deployVirtualMachine', u'revertToVMSnapshot', u'addNicToVirtualMachine', u'restoreVirtualMachine', u'restoreVirtualMachine', u'stopVirtualMachine', u'changeServiceForVirtualMachine', u'destroyVirtualMachine', u'migrateVirtualMachine', u'updateVirtualMachine', u'detachIso', u'resetSSHKeyForVirtualMachine', u'attachIso', u'rebootVirtualMachine'], u'length': 255, u'type': u'uuid', u'description': u'the ID of the virtual machine where the volume is detached from'}], u'requiredparams': [], u'description': u'Detaches a disk volume from a virtual machine.'}, u'iso': {u'name': u'detachIso', u'related': [u'updateVirtualMachine', u'assignVirtualMachine', u'updateDefaultNicForVirtualMachine', u'revertToVMSnapshot', u'resetPasswordForVirtualMachine', u'stopVirtualMachine', u'listVirtualMachines', u'migrateVirtualMachineWithVolume', u'destroyVirtualMachine', u'startVirtualMachine', u'listVirtualMachines', u'updateVMAffinityGroup', u'removeNicFromVirtualMachine', u'deployVirtualMachine', u'revertToVMSnapshot', u'addNicToVirtualMachine', u'restoreVirtualMachine', u'restoreVirtualMachine', u'stopVirtualMachine', u'changeServiceForVirtualMachine', u'destroyVirtualMachine', u'migrateVirtualMachine', u'updateVirtualMachine', u'detachIso', u'resetSSHKeyForVirtualMachine', u'attachIso', u'rebootVirtualMachine'], u'isasync': True, u'params': [{u'name': u'virtualmachineid', u'required': True, u'related': [u'updateVirtualMachine', u'assignVirtualMachine', u'detachIso', u'updateDefaultNicForVirtualMachine', u'revertToVMSnapshot', u'resetPasswordForVirtualMachine', u'stopVirtualMachine', u'listVirtualMachines', u'migrateVirtualMachineWithVolume', u'destroyVirtualMachine', u'startVirtualMachine', u'listVirtualMachines', u'updateVMAffinityGroup', u'removeNicFromVirtualMachine', u'deployVirtualMachine', u'revertToVMSnapshot', u'addNicToVirtualMachine', u'restoreVirtualMachine', u'restoreVirtualMachine', u'stopVirtualMachine', u'changeServiceForVirtualMachine', u'destroyVirtualMachine', u'migrateVirtualMachine', u'updateVirtualMachine', u'detachIso', u'resetSSHKeyForVirtualMachine', u'attachIso', u'rebootVirtualMachine'], u'length': 255, u'type': u'uuid', u'description': u'The ID of the virtual machine'}], u'requiredparams': [u'virtualmachineid'], u'description': u'Detaches any ISO file (if any) currently attached to a virtual machine.'}}, u'generate': {u'usagerecords': {u'name': u'generateUsageRecords', u'related': [], u'isasync': False, u'params': [{u'name': u'enddate', u'required': True, u'related': [], u'length': 255, u'type': u'date', u'description': u'End date range for usage record query. Use yyyy-MM-dd as the date format, e.g. startDate=2009-06-03.'}, {u'name': u'startdate', u'required': True, u'related': [], u'length': 255, u'type': u'date', u'description': u'Start date range for usage record query. Use yyyy-MM-dd as the date format, e.g. startDate=2009-06-01.'}, {u'name': u'domainid', u'required': False, u'related': [u'listDomains', u'updateDomain', u'listDomainChildren'], u'length': 255, u'type': u'uuid', u'description': u'List events for the specified domain.'}], u'requiredparams': [u'enddate', u'startdate'], u'description': u'Generates usage records. This will generate records only if there any records to be generated, i.e if the scheduled usage job was not run or failed'}, u'alert': {u'name': u'generateAlert', u'related': [], u'isasync': True, u'params': [{u'name': u'type', u'required': True, u'related': [], u'length': 255, u'type': u'short', u'description': u'Type of the alert'}, {u'name': u'name', u'required': True, u'related': [], u'length': 255, u'type': u'string', u'description': u'Name of the alert'}, {u'name': u'zoneid', u'required': False, u'related': [u'listZones'], u'length': 255, u'type': u'uuid', u'description': u'Zone id for which alert is generated'}, {u'name': u'description', u'required': True, u'related': [], u'length': 999, u'type': u'string', u'description': u'Alert description'}, {u'name': u'podid', u'required': False, u'related': [u'updatePod'], u'length': 255, u'type': u'uuid', u'description': u'Pod id for which alert is generated'}], u'requiredparams': [u'type', u'name', u'description'], u'description': u'Generates an alert'}}, u'restart': {u'network': {u'name': u'restartNetwork', u'related': [u'associateIpAddress', u'listPublicIpAddresses', u'associateIpAddress'], u'isasync': True, u'params': [{u'name': u'id', u'required': True, u'related': [u'updateNetwork', u'updateNetwork', u'listNetscalerLoadBalancerNetworks', u'listNetworks', u'createNetwork'], u'length': 255, u'type': u'uuid', u'description': u'The id of the network to restart.'}, {u'name': u'cleanup', u'required': False, u'related': [], u'length': 255, u'type': u'boolean', u'description': u'If cleanup old network elements'}], u'requiredparams': [u'id'], u'description': u'Restarts the network; includes 1) restarting network elements - virtual routers, dhcp servers 2) reapplying all public ips 3) reapplying loadBalancing/portForwarding rules'}, u'vpc': {u'name': u'restartVPC', u'related': [u'updateVPC', u'createVPC', u'listVPCs'], u'isasync': True, u'params': [{u'name': u'id', u'required': True, u'related': [u'updateVPC', u'restartVPC', u'createVPC', u'listVPCs'], u'length': 255, u'type': u'uuid', u'description': u'the id of the VPC'}], u'requiredparams': [u'id'], u'description': u'Restarts a VPC'}}, u'reset': {u'apilimit': {u'name': u'resetApiLimit', u'related': [], u'isasync': False, u'params': [{u'name': u'account', u'required': False, u'related': [u'listAccounts', u'markDefaultZoneForAccount', u'listAccounts'], u'length': 255, u'type': u'uuid', u'description': u'the ID of the acount whose limit to be reset'}], u'requiredparams': [], u'description': u'Reset api count'}, u'sshkeyforvirtualmachine': {u'name': u'resetSSHKeyForVirtualMachine', u'related': [u'updateVirtualMachine', u'removeNicFromVirtualMachine', u'assignVirtualMachine', u'detachIso', u'updateDefaultNicForVirtualMachine', u'updateDefaultNicForVirtualMachine', u'revertToVMSnapshot', u'recoverVirtualMachine', u'startVirtualMachine', u'resetPasswordForVirtualMachine', u'resetPasswordForVirtualMachine', u'updateVMAffinityGroup', u'stopVirtualMachine', u'listVirtualMachines', u'deployVirtualMachine', u'migrateVirtualMachineWithVolume', u'destroyVirtualMachine', u'attachIso', u'rebootVirtualMachine', u'startVirtualMachine', u'listVirtualMachines', u'changeServiceForVirtualMachine', u'updateVMAffinityGroup', u'removeNicFromVirtualMachine', u'deployVirtualMachine', u'revertToVMSnapshot', u'addNicToVirtualMachine', u'restoreVirtualMachine', u'restoreVirtualMachine', u'stopVirtualMachine', u'changeServiceForVirtualMachine', u'destroyVirtualMachine', u'migrateVirtualMachine', u'updateVirtualMachine', u'detachIso', u'resetSSHKeyForVirtualMachine', u'attachIso', u'rebootVirtualMachine'], u'isasync': True, u'params': [{u'name': u'id', u'required': True, u'related': [u'updateVirtualMachine', u'removeNicFromVirtualMachine', u'assignVirtualMachine', u'detachIso', u'updateDefaultNicForVirtualMachine', u'updateDefaultNicForVirtualMachine', u'revertToVMSnapshot', u'recoverVirtualMachine', u'startVirtualMachine', u'resetPasswordForVirtualMachine', u'resetPasswordForVirtualMachine', u'updateVMAffinityGroup', u'stopVirtualMachine', u'listVirtualMachines', u'deployVirtualMachine', u'migrateVirtualMachineWithVolume', u'destroyVirtualMachine', u'attachIso', u'rebootVirtualMachine', u'startVirtualMachine', u'listVirtualMachines', u'changeServiceForVirtualMachine', u'updateVMAffinityGroup', u'removeNicFromVirtualMachine', u'deployVirtualMachine', u'revertToVMSnapshot', u'addNicToVirtualMachine', u'restoreVirtualMachine', u'restoreVirtualMachine', u'stopVirtualMachine', u'changeServiceForVirtualMachine', u'destroyVirtualMachine', u'migrateVirtualMachine', u'updateVirtualMachine', u'detachIso', u'resetSSHKeyForVirtualMachine', u'resetSSHKeyForVirtualMachine', u'attachIso', u'rebootVirtualMachine'], u'length': 255, u'type': u'uuid', u'description': u'The ID of the virtual machine'}, {u'name': u'account', u'required': False, u'related': [], u'length': 255, u'type': u'string', u'description': u'an optional account for the ssh key. Must be used with domainId.'}, {u'name': u'projectid', u'required': False, u'related': [u'activateProject', u'updateProject', u'listProjectAccounts', u'createProject'], u'length': 255, u'type': u'uuid', u'description': u'an optional project for the ssh key'}, {u'name': u'domainid', u'required': False, u'related': [u'listDomains', u'updateDomain', u'createDomain', u'listDomainChildren'], u'length': 255, u'type': u'uuid', u'description': u'an optional domainId for the virtual machine. If the account parameter is used, domainId must also be used.'}, {u'name': u'keypair', u'required': True, u'related': [], u'length': 255, u'type': u'string', u'description': u'name of the ssh key pair used to login to the virtual machine'}], u'requiredparams': [u'id', u'keypair'], u'description': u'Resets the SSH Key for virtual machine. The virtual machine must be in a "Stopped" state. [async]'}, u'passwordforvirtualmachine': {u'name': u'resetPasswordForVirtualMachine', u'related': [u'updateVirtualMachine', u'assignVirtualMachine', u'detachIso', u'updateDefaultNicForVirtualMachine', u'revertToVMSnapshot', u'startVirtualMachine', u'resetPasswordForVirtualMachine', u'stopVirtualMachine', u'listVirtualMachines', u'migrateVirtualMachineWithVolume', u'destroyVirtualMachine', u'startVirtualMachine', u'listVirtualMachines', u'changeServiceForVirtualMachine', u'updateVMAffinityGroup', u'removeNicFromVirtualMachine', u'deployVirtualMachine', u'revertToVMSnapshot', u'addNicToVirtualMachine', u'restoreVirtualMachine', u'restoreVirtualMachine', u'stopVirtualMachine', u'changeServiceForVirtualMachine', u'destroyVirtualMachine', u'migrateVirtualMachine', u'updateVirtualMachine', u'detachIso', u'resetSSHKeyForVirtualMachine', u'attachIso', u'rebootVirtualMachine'], u'isasync': True, u'params': [{u'name': u'id', u'required': True, u'related': [u'updateVirtualMachine', u'assignVirtualMachine', u'detachIso', u'updateDefaultNicForVirtualMachine', u'revertToVMSnapshot', u'startVirtualMachine', u'resetPasswordForVirtualMachine', u'resetPasswordForVirtualMachine', u'stopVirtualMachine', u'listVirtualMachines', u'migrateVirtualMachineWithVolume', u'destroyVirtualMachine', u'startVirtualMachine', u'listVirtualMachines', u'changeServiceForVirtualMachine', u'updateVMAffinityGroup', u'removeNicFromVirtualMachine', u'deployVirtualMachine', u'revertToVMSnapshot', u'addNicToVirtualMachine', u'restoreVirtualMachine', u'restoreVirtualMachine', u'stopVirtualMachine', u'changeServiceForVirtualMachine', u'destroyVirtualMachine', u'migrateVirtualMachine', u'updateVirtualMachine', u'detachIso', u'resetSSHKeyForVirtualMachine', u'attachIso', u'rebootVirtualMachine'], u'length': 255, u'type': u'uuid', u'description': u'The ID of the virtual machine'}], u'requiredparams': [u'id'], u'description': u'Resets the password for virtual machine. The virtual machine must be in a "Stopped" state and the template must already support this feature for this command to take effect. [async]'}, u'vpnconnection': {u'name': u'resetVpnConnection', u'related': [u'listVpnConnections'], u'isasync': True, u'params': [{u'name': u'account', u'required': False, u'related': [], u'length': 255, u'type': u'string', u'description': u'an optional account for connection. Must be used with domainId.'}, {u'name': u'id', u'required': True, u'related': [u'resetVpnConnection', u'listVpnConnections'], u'length': 255, u'type': u'uuid', u'description': u'id of vpn connection'}, {u'name': u'domainid', u'required': False, u'related': [u'updateDomain', u'listDomainChildren'], u'length': 255, u'type': u'uuid', u'description': u'an optional domainId for connection. If the account parameter is used, domainId must also be used.'}], u'requiredparams': [u'id'], u'description': u'Reset site to site vpn connection'}}, u'expunge': {u'virtualmachine': {u'name': u'expungeVirtualMachine', u'related': [], u'isasync': True, u'params': [{u'name': u'id', u'required': True, u'related': [u'updateVirtualMachine', u'removeNicFromVirtualMachine', u'assignVirtualMachine', u'detachIso', u'updateDefaultNicForVirtualMachine', u'updateDefaultNicForVirtualMachine', u'revertToVMSnapshot', u'startVirtualMachine', u'resetPasswordForVirtualMachine', u'resetPasswordForVirtualMachine', u'updateVMAffinityGroup', u'stopVirtualMachine', u'listVirtualMachines', u'migrateVirtualMachineWithVolume', u'destroyVirtualMachine', u'attachIso', u'rebootVirtualMachine', u'startVirtualMachine', u'listVirtualMachines', u'changeServiceForVirtualMachine', u'updateVMAffinityGroup', u'removeNicFromVirtualMachine', u'deployVirtualMachine', u'revertToVMSnapshot', u'addNicToVirtualMachine', u'restoreVirtualMachine', u'restoreVirtualMachine', u'stopVirtualMachine', u'changeServiceForVirtualMachine', u'destroyVirtualMachine', u'migrateVirtualMachine', u'updateVirtualMachine', u'detachIso', u'resetSSHKeyForVirtualMachine', u'attachIso', u'rebootVirtualMachine'], u'length': 255, u'type': u'uuid', u'description': u'The ID of the virtual machine'}], u'requiredparams': [u'id'], u'description': u'Expunge a virtual machine. Once expunged, it cannot be recoverd.'}}, u'register': {u'userkeys': {u'name': u'registerUserKeys', u'related': [], u'isasync': False, u'params': [{u'name': u'id', u'required': True, u'related': [u'lockUser', u'listUsers'], u'length': 255, u'type': u'uuid', u'description': u'User id'}], u'requiredparams': [u'id'], u'description': u'This command allows a user to register for the developer API, returning a secret key and an API key. This request is made through the integration API port, so it is a privileged command and must be made on behalf of a user. It is up to the implementer just how the username and password are entered, and then how that translates to an integration API request. Both secret key and API key should be returned to the user'}, u'iso': {u'name': u'registerIso', u'related': [u'registerIso', u'registerTemplate', u'copyIso', u'createTemplate', u'listIsos', u'copyTemplate', u'copyIso', u'listIsos', u'updateIso', u'listTemplates'], u'isasync': False, u'params': [{u'name': u'displaytext', u'required': True, u'related': [], u'length': 4096, u'type': u'string', u'description': u'the display text of the ISO. This is usually used for display purposes.'}, {u'name': u'projectid', u'required': False, u'related': [u'createProject'], u'length': 255, u'type': u'uuid', u'description': u'Register iso for the project'}, {u'name': u'account', u'required': False, u'related': [], u'length': 255, u'type': u'string', u'description': u'an optional account name. Must be used with domainId.'}, {u'name': u'isdynamicallyscalable', u'required': False, u'related': [], u'length': 255, u'type': u'boolean', u'description': u'true if iso contains XS/VMWare tools inorder to support dynamic scaling of VM cpu/memory'}, {u'name': u'name', u'required': True, u'related': [], u'length': 255, u'type': u'string', u'description': u'the name of the ISO'}, {u'name': u'imagestoreuuid', u'required': False, u'related': [], u'length': 255, u'type': u'string', u'description': u'Image store uuid'}, {u'name': u'isextractable', u'required': False, u'related': [], u'length': 255, u'type': u'boolean', u'description': u'true if the iso or its derivatives are extractable; default is false'}, {u'name': u'ispublic', u'required': False, u'related': [], u'length': 255, u'type': u'boolean', u'description': u'true if you want to register the ISO to be publicly available to all users, false otherwise.'}, {u'name': u'url', u'required': True, u'related': [], u'length': 255, u'type': u'string', u'description': u'the URL to where the ISO is currently being hosted'}, {u'name': u'isfeatured', u'required': False, u'related': [], u'length': 255, u'type': u'boolean', u'description': u'true if you want this ISO to be featured'}, {u'name': u'ostypeid', u'required': False, u'related': [u'addGuestOs'], u'length': 255, u'type': u'uuid', u'description': u'the ID of the OS Type that best represents the OS of this ISO. If the iso is bootable this parameter needs to be passed'}, {u'name': u'zoneid', u'required': True, u'related': [u'listZones', u'listZones'], u'length': 255, u'type': u'uuid', u'description': u'the ID of the zone you wish to register the ISO to.'}, {u'name': u'bootable', u'required': False, u'related': [], u'length': 255, u'type': u'boolean', u'description': u'true if this ISO is bootable. If not passed explicitly its assumed to be true'}, {u'name': u'checksum', u'required': False, u'related': [], u'length': 255, u'type': u'string', u'description': u'the MD5 checksum value of this ISO'}, {u'name': u'domainid', u'required': False, u'related': [u'updateDomain', u'listDomainChildren'], u'length': 255, u'type': u'uuid', u'description': u'an optional domainId. If the account parameter is used, domainId must also be used.'}], u'requiredparams': [u'displaytext', u'name', u'url', u'zoneid'], u'description': u'Registers an existing ISO into the CloudStack Cloud.'}, u'sshkeypair': {u'name': u'registerSSHKeyPair', u'related': [u'listSSHKeyPairs'], u'isasync': False, u'params': [{u'name': u'name', u'required': True, u'related': [], u'length': 255, u'type': u'string', u'description': u'Name of the keypair'}, {u'name': u'publickey', u'required': True, u'related': [], u'length': 5120, u'type': u'string', u'description': u'Public key material of the keypair'}, {u'name': u'projectid', u'required': False, u'related': [u'listProjects', u'activateProject', u'updateProject', u'listProjectAccounts', u'createProject'], u'length': 255, u'type': u'uuid', u'description': u'an optional project for the ssh key'}, {u'name': u'account', u'required': False, u'related': [], u'length': 255, u'type': u'string', u'description': u'an optional account for the ssh key. Must be used with domainId.'}, {u'name': u'domainid', u'required': False, u'related': [u'listDomains', u'updateDomain', u'createDomain', u'listDomainChildren'], u'length': 255, u'type': u'uuid', u'description': u'an optional domainId for the ssh key. If the account parameter is used, domainId must also be used.'}], u'requiredparams': [u'name', u'publickey'], u'description': u'Register a public key in a keypair under a certain name'}, u'template': {u'name': u'registerTemplate', u'related': [u'registerIso', u'registerIso', u'prepareTemplate', u'updateTemplate', u'registerTemplate', u'copyIso', u'listTemplates', u'createTemplate', u'listIsos', u'copyTemplate', u'copyIso', u'listIsos', u'updateIso', u'listTemplates'], u'isasync': False, u'params': [{u'name': u'isfeatured', u'required': False, u'related': [], u'length': 255, u'type': u'boolean', u'description': u'true if this template is a featured template, false otherwise'}, {u'name': u'domainid', u'required': False, u'related': [u'listDomains', u'updateDomain', u'listDomainChildren'], u'length': 255, u'type': u'uuid', u'description': u'an optional domainId. If the account parameter is used, domainId must also be used.'}, {u'name': u'account', u'required': False, u'related': [], u'length': 255, u'type': u'string', u'description': u'an optional accountName. Must be used with domainId.'}, {u'name': u'passwordenabled', u'required': False, u'related': [], u'length': 255, u'type': u'boolean', u'description': u'true if the template supports the password reset feature; default is false'}, {u'name': u'isdynamicallyscalable', u'required': False, u'related': [], u'length': 255, u'type': u'boolean', u'description': u'true if template contains XS/VMWare tools inorder to support dynamic scaling of VM cpu/memory'}, {u'name': u'displaytext', u'required': True, u'related': [], u'length': 4096, u'type': u'string', u'description': u'the display text of the template. This is usually used for display purposes.'}, {u'name': u'projectid', u'required': False, u'related': [u'updateProject', u'createProject'], u'length': 255, u'type': u'uuid', u'description': u'Register template for the project'}, {u'name': u'requireshvm', u'required': False, u'related': [], u'length': 255, u'type': u'boolean', u'description': u'true if this template requires HVM'}, {u'name': u'url', u'required': True, u'related': [], u'length': 255, u'type': u'string', u'description': u'the URL of where the template is hosted. Possible URL include http:// and https://'}, {u'name': u'name', u'required': True, u'related': [], u'length': 255, u'type': u'string', u'description': u'the name of the template'}, {u'name': u'templatetag', u'required': False, u'related': [], u'length': 255, u'type': u'string', u'description': u'the tag for this template.'}, {u'name': u'sshkeyenabled', u'required': False, u'related': [], u'length': 255, u'type': u'boolean', u'description': u'true if the template supports the sshkey upload feature; default is false'}, {u'name': u'checksum', u'required': False, u'related': [], u'length': 255, u'type': u'string', u'description': u'the MD5 checksum value of this template'}, {u'name': u'isrouting', u'required': False, u'related': [], u'length': 255, u'type': u'boolean', u'description': u'true if the template type is routing i.e., if template is used to deploy router'}, {u'name': u'ispublic', u'required': False, u'related': [], u'length': 255, u'type': u'boolean', u'description': u'true if the template is available to all accounts; default is true'}, {u'name': u'ostypeid', u'required': True, u'related': [u'addGuestOs', u'listOsTypes', u'updateGuestOs'], u'length': 255, u'type': u'uuid', u'description': u'the ID of the OS Type that best represents the OS of this template.'}, {u'name': u'hypervisor', u'required': True, u'related': [], u'length': 255, u'type': u'string', u'description': u'the target hypervisor for the template'}, {u'name': u'format', u'required': True, u'related': [], u'length': 255, u'type': u'string', u'description': u'the format for the template. Possible values include QCOW2, RAW, and VHD.'}, {u'name': u'details', u'required': False, u'related': [], u'length': 255, u'type': u'map', u'description': u'Template details in key/value pairs.'}, {u'name': u'isextractable', u'required': False, u'related': [], u'length': 255, u'type': u'boolean', u'description': u'true if the template or its derivatives are extractable; default is false'}, {u'name': u'bits', u'required': False, u'related': [], u'length': 255, u'type': u'integer', u'description': u'32 or 64 bits support. 64 by default'}, {u'name': u'zoneid', u'required': True, u'related': [u'listZones', u'updateZone', u'createZone', u'listZones'], u'length': 255, u'type': u'uuid', u'description': u'the ID of the zone the template is to be hosted on'}], u'requiredparams': [u'displaytext', u'url', u'name', u'ostypeid', u'hypervisor', u'format', u'zoneid'], u'description': u'Registers an existing template into the CloudStack cloud. '}}, u'revert': {u'tovmsnapshot': {u'name': u'revertToVMSnapshot', u'related': [u'updateDefaultNicForVirtualMachine', u'resetPasswordForVirtualMachine', u'listVirtualMachines', u'startVirtualMachine', u'listVirtualMachines', u'updateVMAffinityGroup', u'removeNicFromVirtualMachine', u'deployVirtualMachine', u'revertToVMSnapshot', u'addNicToVirtualMachine', u'restoreVirtualMachine', u'stopVirtualMachine', u'changeServiceForVirtualMachine', u'destroyVirtualMachine', u'updateVirtualMachine', u'detachIso', u'resetSSHKeyForVirtualMachine', u'attachIso', u'rebootVirtualMachine'], u'isasync': True, u'params': [{u'name': u'vmsnapshotid', u'required': True, u'related': [], u'length': 255, u'type': u'uuid', u'description': u'The ID of the vm snapshot'}], u'requiredparams': [u'vmsnapshotid'], u'description': u'Revert VM from a vmsnapshot.'}, u'snapshot': {u'name': u'revertSnapshot', u'related': [], u'isasync': True, u'params': [{u'name': u'id', u'required': True, u'related': [u'revertSnapshot'], u'length': 255, u'type': u'uuid', u'description': u'The ID of the snapshot'}], u'requiredparams': [u'id'], u'description': u'revert a volume snapshot.'}}, u'dedicate': {u'publiciprange': {u'name': u'dedicatePublicIpRange', u'related': [u'listVlanIpRanges'], u'isasync': False, u'params': [{u'name': u'projectid', u'required': False, u'related': [], u'length': 255, u'type': u'uuid', u'description': u'project who will own the VLAN'}, {u'name': u'id', u'required': True, u'related': [u'dedicatePublicIpRange', u'listVlanIpRanges'], u'length': 255, u'type': u'uuid', u'description': u'the id of the VLAN IP range'}, {u'name': u'domainid', u'required': True, u'related': [u'listDomainChildren'], u'length': 255, u'type': u'uuid', u'description': u'domain ID of the account owning a VLAN'}, {u'name': u'account', u'required': True, u'related': [], u'length': 255, u'type': u'string', u'description': u'account who will own the VLAN'}], u'requiredparams': [u'id', u'domainid', u'account'], u'description': u'Dedicates a Public IP range to an account'}, u'zone': {u'name': u'dedicateZone', u'related': [u'listDedicatedZones'], u'isasync': True, u'params': [{u'name': u'zoneid', u'required': True, u'related': [u'listZones', u'updateZone', u'createZone', u'listZones'], u'length': 255, u'type': u'uuid', u'description': u'the ID of the zone'}, {u'name': u'domainid', u'required': True, u'related': [u'listDomains', u'updateDomain', u'listDomainChildren'], u'length': 255, u'type': u'uuid', u'description': u'the ID of the containing domain'}, {u'name': u'account', u'required': False, u'related': [], u'length': 255, u'type': u'string', u'description': u'the name of the account which needs dedication. Must be used with domainId.'}], u'requiredparams': [u'zoneid', u'domainid'], u'description': u'Dedicates a zones.'}, u'guestvlanrange': {u'name': u'dedicateGuestVlanRange', u'related': [], u'isasync': False, u'params': [{u'name': u'account', u'required': True, u'related': [], u'length': 255, u'type': u'string', u'description': u'account who will own the VLAN'}, {u'name': u'physicalnetworkid', u'required': True, u'related': [u'listPhysicalNetworks'], u'length': 255, u'type': u'uuid', u'description': u'physical network ID of the vlan'}, {u'name': u'vlanrange', u'required': True, u'related': [], u'length': 255, u'type': u'string', u'description': u'guest vlan range to be dedicated'}, {u'name': u'projectid', u'required': False, u'related': [u'updateProject', u'createProject'], u'length': 255, u'type': u'uuid', u'description': u'project who will own the VLAN'}, {u'name': u'domainid', u'required': True, u'related': [u'updateDomain', u'listDomainChildren'], u'length': 255, u'type': u'uuid', u'description': u'domain ID of the account owning a VLAN'}], u'requiredparams': [u'account', u'physicalnetworkid', u'vlanrange', u'domainid'], u'description': u'Dedicates a guest vlan range to an account'}, u'cluster': {u'name': u'dedicateCluster', u'related': [], u'isasync': True, u'params': [{u'name': u'domainid', u'required': True, u'related': [u'listDomains', u'updateDomain', u'listDomainChildren'], u'length': 255, u'type': u'uuid', u'description': u'the ID of the containing domain'}, {u'name': u'clusterid', u'required': True, u'related': [u'updateCluster'], u'length': 255, u'type': u'uuid', u'description': u'the ID of the Cluster'}, {u'name': u'account', u'required': False, u'related': [], u'length': 255, u'type': u'string', u'description': u'the name of the account which needs dedication. Must be used with domainId.'}], u'requiredparams': [u'domainid', u'clusterid'], u'description': u'Dedicate an existing cluster'}, u'host': {u'name': u'dedicateHost', u'related': [], u'isasync': True, u'params': [{u'name': u'hostid', u'required': True, u'related': [u'listHosts'], u'length': 255, u'type': u'uuid', u'description': u'the ID of the host to update'}, {u'name': u'domainid', u'required': True, u'related': [], u'length': 255, u'type': u'uuid', u'description': u'the ID of the containing domain'}, {u'name': u'account', u'required': False, u'related': [], u'length': 255, u'type': u'string', u'description': u'the name of the account which needs dedication. Must be used with domainId.'}], u'requiredparams': [u'hostid', u'domainid'], u'description': u'Dedicates a host.'}, u'pod': {u'name': u'dedicatePod', u'related': [], u'isasync': True, u'params': [{u'name': u'podid', u'required': True, u'related': [u'updatePod', u'createPod'], u'length': 255, u'type': u'uuid', u'description': u'the ID of the Pod'}, {u'name': u'domainid', u'required': True, u'related': [u'listDomains', u'updateDomain', u'listDomainChildren'], u'length': 255, u'type': u'uuid', u'description': u'the ID of the containing domain'}, {u'name': u'account', u'required': False, u'related': [], u'length': 255, u'type': u'string', u'description': u'the name of the account which needs dedication. Must be used with domainId.'}], u'requiredparams': [u'podid', u'domainid'], u'description': u'Dedicates a Pod.'}}, u'remove': {u'fromgloballoadbalancerrule': {u'name': u'removeFromGlobalLoadBalancerRule', u'related': [], u'isasync': True, u'params': [{u'name': u'loadbalancerrulelist', u'required': True, u'related': [u'listPortForwardingRules', u'createPortForwardingRule', u'listIpForwardingRules', u'createIpForwardingRule', u'updatePortForwardingRule'], u'length': 255, u'type': u'list', u'description': u'the list load balancer rules that will be assigned to gloabal load balacner rule'}, {u'name': u'id', u'required': True, u'related': [u'listGlobalLoadBalancerRules', u'updateGlobalLoadBalancerRule', u'createGlobalLoadBalancerRule'], u'length': 255, u'type': u'uuid', u'description': u'The ID of the load balancer rule'}], u'requiredparams': [u'loadbalancerrulelist', u'id'], u'description': u'Removes a load balancer rule association with global load balancer rule'}, u'fromloadbalancerrule': {u'name': u'removeFromLoadBalancerRule', u'related': [], u'isasync': True, u'params': [{u'name': u'virtualmachineids', u'required': False, u'related': [u'updateVirtualMachine', u'assignVirtualMachine', u'updateDefaultNicForVirtualMachine', u'revertToVMSnapshot', u'resetPasswordForVirtualMachine', u'stopVirtualMachine', u'listVirtualMachines', u'migrateVirtualMachineWithVolume', u'destroyVirtualMachine', u'startVirtualMachine', u'listVirtualMachines', u'updateVMAffinityGroup', u'removeNicFromVirtualMachine', u'deployVirtualMachine', u'revertToVMSnapshot', u'addNicToVirtualMachine', u'restoreVirtualMachine', u'restoreVirtualMachine', u'stopVirtualMachine', u'changeServiceForVirtualMachine', u'destroyVirtualMachine', u'updateVirtualMachine', u'detachIso', u'resetSSHKeyForVirtualMachine', u'attachIso', u'rebootVirtualMachine'], u'length': 255, u'type': u'list', u'description': u'the list of IDs of the virtual machines that are being removed from the load balancer rule (i.e. virtualMachineIds=1,2,3)'}, {u'name': u'vmidipmap', u'required': False, u'related': [], u'length': 255, u'type': u'map', u'description': u'VM ID and IP map, vmidipmap[0].vmid=1 vmidipmap[0].ip=10.1.1.75'}, {u'name': u'id', u'required': True, u'related': [u'listIpForwardingRules'], u'length': 255, u'type': u'uuid', u'description': u'The ID of the load balancer rule'}], u'requiredparams': [u'id'], u'description': u'Removes a virtual machine or a list of virtual machines from a load balancer rule.'}, u'resourcedetail': {u'name': u'removeResourceDetail', u'related': [], u'isasync': True, u'params': [{u'name': u'resourceid', u'required': True, u'related': [], u'length': 255, u'type': u'string', u'description': u'Delete details for resource id'}, {u'name': u'key', u'required': False, u'related': [], u'length': 255, u'type': u'string', u'description': u'Delete details matching key/value pairs'}, {u'name': u'resourcetype', u'required': True, u'related': [], u'length': 255, u'type': u'string', u'description': u'Delete detail by resource type'}], u'requiredparams': [u'resourceid', u'resourcetype'], u'description': u'Removes detail for the Resource.'}, u'guestosmapping': {u'name': u'removeGuestOsMapping', u'related': [], u'isasync': True, u'params': [{u'name': u'id', u'required': True, u'related': [u'addGuestOsMapping', u'updateGuestOsMapping'], u'length': 255, u'type': u'uuid', u'description': u'ID of the guest OS mapping'}], u'requiredparams': [u'id'], u'description': u'Removes a Guest OS Mapping.'}, u'nicfromvirtualmachine': {u'name': u'removeNicFromVirtualMachine', u'related': [u'updateVirtualMachine', u'assignVirtualMachine', u'detachIso', u'updateDefaultNicForVirtualMachine', u'updateDefaultNicForVirtualMachine', u'revertToVMSnapshot', u'startVirtualMachine', u'resetPasswordForVirtualMachine', u'resetPasswordForVirtualMachine', u'stopVirtualMachine', u'listVirtualMachines', u'migrateVirtualMachineWithVolume', u'destroyVirtualMachine', u'startVirtualMachine', u'listVirtualMachines', u'changeServiceForVirtualMachine', u'updateVMAffinityGroup', u'removeNicFromVirtualMachine', u'deployVirtualMachine', u'revertToVMSnapshot', u'addNicToVirtualMachine', u'restoreVirtualMachine', u'restoreVirtualMachine', u'stopVirtualMachine', u'changeServiceForVirtualMachine', u'destroyVirtualMachine', u'migrateVirtualMachine', u'updateVirtualMachine', u'detachIso', u'resetSSHKeyForVirtualMachine', u'attachIso', u'rebootVirtualMachine'], u'isasync': True, u'params': [{u'name': u'virtualmachineid', u'required': True, u'related': [u'updateVirtualMachine', u'removeNicFromVirtualMachine', u'assignVirtualMachine', u'detachIso', u'updateDefaultNicForVirtualMachine', u'updateDefaultNicForVirtualMachine', u'revertToVMSnapshot', u'startVirtualMachine', u'resetPasswordForVirtualMachine', u'resetPasswordForVirtualMachine', u'stopVirtualMachine', u'listVirtualMachines', u'migrateVirtualMachineWithVolume', u'destroyVirtualMachine', u'startVirtualMachine', u'listVirtualMachines', u'changeServiceForVirtualMachine', u'updateVMAffinityGroup', u'removeNicFromVirtualMachine', u'deployVirtualMachine', u'revertToVMSnapshot', u'addNicToVirtualMachine', u'restoreVirtualMachine', u'restoreVirtualMachine', u'stopVirtualMachine', u'changeServiceForVirtualMachine', u'destroyVirtualMachine', u'migrateVirtualMachine', u'updateVirtualMachine', u'detachIso', u'resetSSHKeyForVirtualMachine', u'attachIso', u'rebootVirtualMachine'], u'length': 255, u'type': u'uuid', u'description': u'Virtual Machine ID'}, {u'name': u'nicid', u'required': True, u'related': [], u'length': 255, u'type': u'uuid', u'description': u'NIC ID'}], u'requiredparams': [u'virtualmachineid', u'nicid'], u'description': u'Removes VM from specified network by deleting a NIC'}, u'vpnuser': {u'name': u'removeVpnUser', u'related': [], u'isasync': True, u'params': [{u'name': u'projectid', u'required': False, u'related': [u'updateProject', u'createProject'], u'length': 255, u'type': u'uuid', u'description': u'remove vpn user from the project'}, {u'name': u'account', u'required': False, u'related': [], u'length': 255, u'type': u'string', u'description': u'an optional account for the vpn user. Must be used with domainId.'}, {u'name': u'domainid', u'required': False, u'related': [u'updateDomain', u'listDomainChildren'], u'length': 255, u'type': u'uuid', u'description': u'an optional domainId for the vpn user. If the account parameter is used, domainId must also be used.'}, {u'name': u'username', u'required': True, u'related': [], u'length': 255, u'type': u'string', u'description': u'username for the vpn user'}], u'requiredparams': [u'username'], u'description': u'Removes vpn user'}, u'guestos': {u'name': u'removeGuestOs', u'related': [], u'isasync': True, u'params': [{u'name': u'id', u'required': True, u'related': [u'addGuestOs', u'listOsTypes'], u'length': 255, u'type': u'uuid', u'description': u'ID of the guest OS'}], u'requiredparams': [u'id'], u'description': u'Removes a Guest OS from listing.'}, u'certfromloadbalancer': {u'name': u'removeCertFromLoadBalancer', u'related': [], u'isasync': True, u'params': [{u'name': u'lbruleid', u'required': True, u'related': [u'listIpForwardingRules'], u'length': 255, u'type': u'uuid', u'description': u'the ID of the load balancer rule'}], u'requiredparams': [u'lbruleid'], u'description': u'Removes a certificate from a Load Balancer Rule'}, u'region': {u'name': u'removeRegion', u'related': [], u'isasync': False, u'params': [{u'name': u'id', u'required': True, u'related': [], u'length': 255, u'type': u'integer', u'description': u'ID of the region to delete'}], u'requiredparams': [u'id'], u'description': u'Removes specified region'}, u'ipfromnic': {u'name': u'removeIpFromNic', u'related': [], u'isasync': True, u'params': [{u'name': u'id', u'required': True, u'related': [u'addIpToNic'], u'length': 255, u'type': u'uuid', u'description': u'the ID of the secondary ip address to nic'}], u'requiredparams': [u'id'], u'description': u'Removes secondary IP from the NIC.'}}, u'mark': {u'defaultzoneforaccount': {u'name': u'markDefaultZoneForAccount', u'related': [u'listAccounts'], u'isasync': True, u'params': [{u'name': u'domainid', u'required': True, u'related': [], u'length': 255, u'type': u'uuid', u'description': u'Marks the account that belongs to the specified domain.'}, {u'name': u'zoneid', u'required': True, u'related': [u'listZones'], u'length': 255, u'type': u'uuid', u'description': u'The Zone ID with which the account is to be marked.'}, {u'name': u'account', u'required': True, u'related': [u'markDefaultZoneForAccount', u'listAccounts'], u'length': 255, u'type': u'string', u'description': u'Name of the account that is to be marked.'}], u'requiredparams': [u'domainid', u'zoneid', u'account'], u'description': u'Marks a default zone for this account'}}, u'asyncapis': [u'reconnectHost', u'createCondition', u'copyTemplate', u'addNicToVirtualMachine', u'extractVolume', u'addAccountToProject', u'deleteEgressFirewallRule', u'createVpnConnection', u'suspendProject', u'deleteLoadBalancer', u'authorizeSecurityGroupIngress', u'addNetscalerLoadBalancer', u'deleteDomain', u'createPortableIpRange', u'configureNetscalerLoadBalancer', u'createTemplate', u'migrateVolume', u'deleteLBHealthCheckPolicy', u'updatePhysicalNetwork', u'deleteStaticRoute', u'deletePaloAltoFirewall', u'destroySystemVm', u'updateRemoteAccessVpn', u'enableStorageMaintenance', u'removeFromGlobalLoadBalancerRule', u'updateLoadBalancer', u'stopRouter', u'attachVolume', u'updateVPCOffering', u'resetSSHKeyForVirtualMachine', u'cleanVMReservations', u'createAffinityGroup', u'deleteTags', u'deleteAccountFromProject', u'addBaremetalPxePingServer', u'deletePortableIpRange', u'updateVolume', u'uploadCustomCertificate', u'createAutoScaleVmProfile', u'releaseDedicatedGuestVlanRange', u'cancelHostMaintenance', u'releaseDedicatedHost', u'deleteStorageNetworkIpRange', u'createInternalLoadBalancerElement', u'deleteFirewallRule', u'deleteNiciraNvpDevice', u'deleteProject', u'removeIpFromNic', u'deleteIpForwardingRule', u'createGlobalLoadBalancerRule', u'resizeVolume', u'createStaticRoute', u'deleteGlobalLoadBalancerRule', u'activateProject', u'releaseDedicatedZone', u'createVMSnapshot', u'createIpForwardingRule', u'updateIpAddress', u'addPaloAltoFirewall', u'releaseDedicatedCluster', u'updateVPC', u'associateUcsProfileToBlade', u'startInternalLoadBalancerVM', u'updateAutoScaleVmProfile', u'updatePortForwardingRule', u'createStorageNetworkIpRange', u'createLoadBalancer', u'cancelStorageMaintenance', u'deployVirtualMachine', u'revokeSecurityGroupEgress', u'createNetworkACLList', u'deleteCondition', u'createPortForwardingRule', u'createVPCOffering', u'createEgressFirewallRule', u'destroyRouter', u'updateLBStickinessPolicy', u'updateSnapshotPolicy', u'assignToGlobalLoadBalancerRule', u'updateTrafficType', u'addNiciraNvpDevice', u'addIpToNic', u'updateNetworkACLItem', u'deleteNetworkACLList', u'configureInternalLoadBalancerElement', u'releaseHostReservation', u'assignCertToLoadBalancer', u'deleteVpnGateway', u'expungeVirtualMachine', u'createAutoScaleVmGroup', u'deleteNetworkServiceProvider', u'rebootRouter', u'createLBHealthCheckPolicy', u'deleteIso', u'removeGuestOsMapping', u'createVpnCustomerGateway', u'deleteAutoScalePolicy', u'updateNetworkACLList', u'detachVolume', u'deleteNetworkACL', u'deleteVPC', u'createPhysicalNetwork', u'updateLoadBalancerRule', u'deleteTemplate', u'deleteVpnCustomerGateway', u'createVirtualRouterElement', u'releaseDedicatedPod', u'addBigSwitchVnsDevice', u'updateAutoScalePolicy', u'createVpnGateway', u'dedicateZone', u'deleteCounter', u'dedicateCluster', u'updateStorageNetworkIpRange', u'deleteBigSwitchVnsDevice', u'dedicatePod', u'deleteAutoScaleVmGroup', u'updateGlobalLoadBalancerRule', u'createServiceInstance', u'disableAutoScaleVmGroup', u'authorizeSecurityGroupEgress', u'prepareHostForMaintenance', u'addOpenDaylightController', u'updateEgressFirewallRule', u'deletePrivateGateway', u'updateGuestOs', u'stopInternalLoadBalancerVM', u'deleteTrafficType', u'deleteLoadBalancerRule', u'attachIso', u'deletePortForwardingRule', u'removeCertFromLoadBalancer', u'updateProjectInvitation', u'createTags', u'enableAutoScaleVmGroup', u'removeVpnUser', u'scaleVirtualMachine', u'updateVpnCustomerGateway', u'stopSystemVm', u'restartNetwork', u'removeGuestOs', u'rebootVirtualMachine', u'updateVMAffinityGroup', u'configurePaloAltoFirewall', u'deleteVpnConnection', u'updateVpnConnection', u'updateVpnGateway', u'startSystemVm', u'updateProject', u'deleteNetwork', u'deleteNetscalerLoadBalancer', u'addTrafficType', u'disableUser', u'configureVirtualRouterElement', u'deleteProjectInvitation', u'migrateSystemVm', u'removeNicFromVirtualMachine', u'revokeSecurityGroupIngress', u'updateDefaultNicForVirtualMachine', u'disableStaticNat', u'createNetworkACL', u'createVPC', u'addBaremetalPxeKickStartServer', u'addResourceDetail', u'disassociateIpAddress', u'resetPasswordForVirtualMachine', u'createVolume', u'assignToLoadBalancerRule', u'startRouter', u'updateGuestOsMapping', u'extractIso', u'removeResourceDetail', u'deleteRemoteAccessVpn', u'resetVpnConnection', u'extractTemplate', u'createRemoteAccessVpn', u'startVirtualMachine', u'detachIso', u'deleteAccount', u'associateIpAddress', u'disableAccount', u'migrateVirtualMachine', u'removeFromLoadBalancerRule', u'addVpnUser', u'updateLBHealthCheckPolicy', u'updateFirewallRule', u'createPrivateGateway', u'deleteLBStickinessPolicy', u'deleteVMSnapshot', u'deleteAutoScaleVmProfile', u'deleteSnapshot', u'createProject', u'createLoadBalancerRule', u'createAutoScalePolicy', u'restoreVirtualMachine', u'deleteAffinityGroup', u'copyIso', u'addGuestOsMapping', u'uploadVolume', u'createLBStickinessPolicy', u'migrateVirtualMachineWithVolume', u'stopVirtualMachine', u'createCounter', u'createSnapshot', u'configureOvsElement', u'destroyVirtualMachine', u'updateNetwork', u'dedicateHost', u'createFirewallRule', u'addNetworkServiceProvider', u'rebootSystemVm', u'revertToVMSnapshot', u'markDefaultZoneForAccount', u'restartVPC', u'replaceNetworkACLList', u'generateAlert', u'scaleSystemVm', u'updateAutoScaleVmGroup', u'deletePhysicalNetwork', u'addBaremetalDhcp', u'deleteVPCOffering', u'deleteOpenDaylightController', u'updateNetworkServiceProvider', u'addGuestOs', u'revertSnapshot'], u'release': {u'publiciprange': {u'name': u'releasePublicIpRange', u'related': [], u'isasync': False, u'params': [{u'name': u'id', u'required': True, u'related': [u'dedicatePublicIpRange', u'listVlanIpRanges'], u'length': 255, u'type': u'uuid', u'description': u'the id of the Public IP range'}], u'requiredparams': [u'id'], u'description': u'Releases a Public IP range back to the system pool'}, u'hostreservation': {u'name': u'releaseHostReservation', u'related': [], u'isasync': True, u'params': [{u'name': u'id', u'required': True, u'related': [u'updateHost', u'prepareHostForMaintenance', u'listHosts', u'addHost'], u'length': 255, u'type': u'uuid', u'description': u'the host ID'}], u'requiredparams': [u'id'], u'description': u'Releases host reservation.'}, u'dedicatedcluster': {u'name': u'releaseDedicatedCluster', u'related': [], u'isasync': True, u'params': [{u'name': u'clusterid', u'required': True, u'related': [u'updateCluster'], u'length': 255, u'type': u'uuid', u'description': u'the ID of the Cluster'}], u'requiredparams': [u'clusterid'], u'description': u'Release the dedication for cluster'}, u'dedicatedzone': {u'name': u'releaseDedicatedZone', u'related': [], u'isasync': True, u'params': [{u'name': u'zoneid', u'required': True, u'related': [u'listZones', u'updateZone', u'createZone', u'listZones'], u'length': 255, u'type': u'uuid', u'description': u'the ID of the Zone'}], u'requiredparams': [u'zoneid'], u'description': u'Release dedication of zone'}, u'dedicatedhost': {u'name': u'releaseDedicatedHost', u'related': [], u'isasync': True, u'params': [{u'name': u'hostid', u'required': True, u'related': [u'updateHost', u'prepareHostForMaintenance', u'listHosts', u'addHost', u'addBaremetalHost'], u'length': 255, u'type': u'uuid', u'description': u'the ID of the host'}], u'requiredparams': [u'hostid'], u'description': u'Release the dedication for host'}, u'dedicatedpod': {u'name': u'releaseDedicatedPod', u'related': [], u'isasync': True, u'params': [{u'name': u'podid', u'required': True, u'related': [u'updatePod', u'createPod'], u'length': 255, u'type': u'uuid', u'description': u'the ID of the Pod'}], u'requiredparams': [u'podid'], u'description': u'Release the dedication for the pod'}, u'dedicatedguestvlanrange': {u'name': u'releaseDedicatedGuestVlanRange', u'related': [], u'isasync': True, u'params': [{u'name': u'id', u'required': True, u'related': [u'dedicateGuestVlanRange', u'listDedicatedGuestVlanRanges'], u'length': 255, u'type': u'uuid', u'description': u'the ID of the dedicated guest vlan range'}], u'requiredparams': [u'id'], u'description': u'Releases a dedicated guest vlan range to the system'}}, u'clean': {u'vmreservations': {u'name': u'cleanVMReservations', u'related': [], u'isasync': True, u'params': [], u'requiredparams': [], u'description': u'Cleanups VM reservations in the database.'}}, u'assign': {u'togloballoadbalancerrule': {u'name': u'assignToGlobalLoadBalancerRule', u'related': [], u'isasync': True, u'params': [{u'name': u'gslblbruleweightsmap', u'required': False, u'related': [], u'length': 255, u'type': u'map', u'description': u"Map of LB rule id's and corresponding weights (between 1-100) in the GSLB rule, if not specified weight of a LB rule is defaulted to 1. Specified as 'gslblbruleweightsmap[0].loadbalancerid=UUID&gslblbruleweightsmap[0].weight=10'"}, {u'name': u'loadbalancerrulelist', u'required': True, u'related': [u'listIpForwardingRules'], u'length': 255, u'type': u'list', u'description': u'the list load balancer rules that will be assigned to gloabal load balacner rule'}, {u'name': u'id', u'required': True, u'related': [u'listGlobalLoadBalancerRules', u'updateGlobalLoadBalancerRule'], u'length': 255, u'type': u'uuid', u'description': u'the ID of the global load balancer rule'}], u'requiredparams': [u'loadbalancerrulelist', u'id'], u'description': u'Assign load balancer rule or list of load balancer rules to a global load balancer rules.'}, u'certtoloadbalancer': {u'name': u'assignCertToLoadBalancer', u'related': [], u'isasync': True, u'params': [{u'name': u'certid', u'required': True, u'related': [u'listSslCerts'], u'length': 255, u'type': u'uuid', u'description': u'the ID of the certificate'}, {u'name': u'lbruleid', u'required': True, u'related': [u'listIpForwardingRules'], u'length': 255, u'type': u'uuid', u'description': u'the ID of the load balancer rule'}], u'requiredparams': [u'certid', u'lbruleid'], u'description': u'Assigns a certificate to a Load Balancer Rule'}, u'virtualmachine': {u'name': u'assignVirtualMachine', u'related': [u'updateVirtualMachine', u'updateDefaultNicForVirtualMachine', u'revertToVMSnapshot', u'resetPasswordForVirtualMachine', u'stopVirtualMachine', u'listVirtualMachines', u'migrateVirtualMachineWithVolume', u'destroyVirtualMachine', u'startVirtualMachine', u'listVirtualMachines', u'updateVMAffinityGroup', u'removeNicFromVirtualMachine', u'deployVirtualMachine', u'revertToVMSnapshot', u'addNicToVirtualMachine', u'restoreVirtualMachine', u'restoreVirtualMachine', u'stopVirtualMachine', u'changeServiceForVirtualMachine', u'destroyVirtualMachine', u'updateVirtualMachine', u'detachIso', u'resetSSHKeyForVirtualMachine', u'attachIso', u'rebootVirtualMachine'], u'isasync': False, u'params': [{u'name': u'virtualmachineid', u'required': True, u'related': [u'updateVirtualMachine', u'assignVirtualMachine', u'updateDefaultNicForVirtualMachine', u'revertToVMSnapshot', u'resetPasswordForVirtualMachine', u'stopVirtualMachine', u'listVirtualMachines', u'migrateVirtualMachineWithVolume', u'destroyVirtualMachine', u'startVirtualMachine', u'listVirtualMachines', u'updateVMAffinityGroup', u'removeNicFromVirtualMachine', u'deployVirtualMachine', u'revertToVMSnapshot', u'addNicToVirtualMachine', u'restoreVirtualMachine', u'restoreVirtualMachine', u'stopVirtualMachine', u'changeServiceForVirtualMachine', u'destroyVirtualMachine', u'updateVirtualMachine', u'detachIso', u'resetSSHKeyForVirtualMachine', u'attachIso', u'rebootVirtualMachine'], u'length': 255, u'type': u'uuid', u'description': u'id of the VM to be moved'}, {u'name': u'account', u'required': True, u'related': [], u'length': 255, u'type': u'string', u'description': u'account name of the new VM owner.'}, {u'name': u'networkids', u'required': False, u'related': [u'updateNetwork', u'updateNetwork', u'listNetscalerLoadBalancerNetworks', u'listNetworks', u'createNetwork'], u'length': 255, u'type': u'list', u'description': u'list of new network ids in which the moved VM will participate. In case no network ids are provided the VM will be part of the default network for that zone. In case there is no network yet created for the new account the default network will be created.'}, {u'name': u'securitygroupids', u'required': False, u'related': [], u'length': 255, u'type': u'list', u'description': u'list of security group ids to be applied on the virtual machine. In case no security groups are provided the VM is part of the default security group.'}, {u'name': u'domainid', u'required': True, u'related': [u'listDomainChildren'], u'length': 255, u'type': u'uuid', u'description': u'domain id of the new VM owner.'}], u'requiredparams': [u'virtualmachineid', u'account', u'domainid'], u'description': u'Change ownership of a VM from one account to another. This API is available for Basic zones with security groups and Advanced zones with guest networks. A root administrator can reassign a VM from any account to any other account in any domain. A domain administrator can reassign a VM to any account in the same domain.'}, u'toloadbalancerrule': {u'name': u'assignToLoadBalancerRule', u'related': [], u'isasync': True, u'params': [{u'name': u'id', u'required': True, u'related': [u'listIpForwardingRules'], u'length': 255, u'type': u'uuid', u'description': u'the ID of the load balancer rule'}, {u'name': u'vmidipmap', u'required': False, u'related': [], u'length': 255, u'type': u'map', u'description': u'VM ID and IP map, vmidipmap[0].vmid=1 vmidipmap[0].ip=10.1.1.75'}, {u'name': u'virtualmachineids', u'required': False, u'related': [u'updateVirtualMachine', u'assignVirtualMachine', u'detachIso', u'updateDefaultNicForVirtualMachine', u'revertToVMSnapshot', u'startVirtualMachine', u'resetPasswordForVirtualMachine', u'stopVirtualMachine', u'listVirtualMachines', u'migrateVirtualMachineWithVolume', u'destroyVirtualMachine', u'startVirtualMachine', u'listVirtualMachines', u'changeServiceForVirtualMachine', u'updateVMAffinityGroup', u'removeNicFromVirtualMachine', u'deployVirtualMachine', u'revertToVMSnapshot', u'addNicToVirtualMachine', u'restoreVirtualMachine', u'restoreVirtualMachine', u'stopVirtualMachine', u'changeServiceForVirtualMachine', u'destroyVirtualMachine', u'migrateVirtualMachine', u'updateVirtualMachine', u'detachIso', u'resetSSHKeyForVirtualMachine', u'attachIso', u'rebootVirtualMachine'], u'length': 255, u'type': u'list', u'description': u'the list of IDs of the virtual machine that are being assigned to the load balancer rule(i.e. virtualMachineIds=1,2,3)'}], u'requiredparams': [u'id'], u'description': u'Assigns virtual machine or a list of virtual machines to a load balancer rule.'}}, u'delete': {u'loadbalancerrule': {u'name': u'deleteLoadBalancerRule', u'related': [], u'isasync': True, u'params': [{u'name': u'id', u'required': True, u'related': [u'listIpForwardingRules'], u'length': 255, u'type': u'uuid', u'description': u'the ID of the load balancer rule'}], u'requiredparams': [u'id'], u'description': u'Deletes a load balancer rule.'}, u'domain': {u'name': u'deleteDomain', u'related': [], u'isasync': True, u'params': [{u'name': u'id', u'required': True, u'related': [u'listDomains', u'updateDomain', u'createDomain', u'listDomainChildren'], u'length': 255, u'type': u'uuid', u'description': u'ID of domain to delete'}, {u'name': u'cleanup', u'required': False, u'related': [], u'length': 255, u'type': u'boolean', u'description': u'true if all domain resources (child domains, accounts) have to be cleaned up, false otherwise'}], u'requiredparams': [u'id'], u'description': u'Deletes a specified domain'}, u'projectinvitation': {u'name': u'deleteProjectInvitation', u'related': [], u'isasync': True, u'params': [{u'name': u'id', u'required': True, u'related': [], u'length': 255, u'type': u'uuid', u'description': u'id of the invitation'}], u'requiredparams': [u'id'], u'description': u'Accepts or declines project invitation'}, u'diskoffering': {u'name': u'deleteDiskOffering', u'related': [], u'isasync': False, u'params': [{u'name': u'id', u'required': True, u'related': [u'createDiskOffering'], u'length': 255, u'type': u'uuid', u'description': u'ID of the disk offering'}], u'requiredparams': [u'id'], u'description': u'Updates a disk offering.'}, u'securitygroup': {u'name': u'deleteSecurityGroup', u'related': [], u'isasync': False, u'params': [{u'name': u'name', u'required': False, u'related': [], u'length': 255, u'type': u'string', u'description': u'The ID of the security group. Mutually exclusive with id parameter'}, {u'name': u'id', u'required': False, u'related': [u'listSecurityGroups'], u'length': 255, u'type': u'uuid', u'description': u'The ID of the security group. Mutually exclusive with name parameter'}, {u'name': u'projectid', u'required': False, u'related': [u'updateProject', u'createProject'], u'length': 255, u'type': u'uuid', u'description': u'the project of the security group'}, {u'name': u'account', u'required': False, u'related': [], u'length': 255, u'type': u'string', u'description': u'the account of the security group. Must be specified with domain ID'}, {u'name': u'domainid', u'required': False, u'related': [u'listDomains', u'updateDomain', u'listDomainChildren'], u'length': 255, u'type': u'uuid', u'description': u'the domain ID of account owning the security group'}], u'requiredparams': [], u'description': u'Deletes security group'}, u'portforwardingrule': {u'name': u'deletePortForwardingRule', u'related': [], u'isasync': True, u'params': [{u'name': u'id', u'required': True, u'related': [u'listIpForwardingRules'], u'length': 255, u'type': u'uuid', u'description': u'the ID of the port forwarding rule'}], u'requiredparams': [u'id'], u'description': u'Deletes a port forwarding rule'}, u'cluster': {u'name': u'deleteCluster', u'related': [], u'isasync': False, u'params': [{u'name': u'id', u'required': True, u'related': [], u'length': 255, u'type': u'uuid', u'description': u'the cluster ID'}], u'requiredparams': [u'id'], u'description': u'Deletes a cluster.'}, u'accountfromproject': {u'name': u'deleteAccountFromProject', u'related': [], u'isasync': True, u'params': [{u'name': u'account', u'required': True, u'related': [], u'length': 255, u'type': u'string', u'description': u'name of the account to be removed from the project'}, {u'name': u'projectid', u'required': True, u'related': [u'activateProject', u'updateProject', u'listProjectAccounts', u'createProject'], u'length': 255, u'type': u'uuid', u'description': u'id of the project to remove the account from'}], u'requiredparams': [u'account', u'projectid'], u'description': u'Deletes account from the project'}, u'opendaylightcontroller': {u'name': u'deleteOpenDaylightController', u'related': [], u'isasync': True, u'params': [{u'name': u'id', u'required': True, u'related': [u'deleteOpenDaylightController'], u'length': 255, u'type': u'uuid', u'description': u'OpenDaylight Controller ID'}], u'requiredparams': [u'id'], u'description': u'Removes an OpenDyalight controler'}, u'networkdevice': {u'name': u'deleteNetworkDevice', u'related': [], u'isasync': False, u'params': [{u'name': u'id', u'required': True, u'related': [u'updateHost', u'prepareHostForMaintenance', u'listHosts', u'addHost'], u'length': 255, u'type': u'uuid', u'description': u'Id of network device to delete'}], u'requiredparams': [u'id'], u'description': u'Deletes network device.'}, u'firewallrule': {u'name': u'deleteFirewallRule', u'related': [], u'isasync': True, u'params': [{u'name': u'id', u'required': True, u'related': [u'listPortForwardingRules', u'createPortForwardingRule', u'listIpForwardingRules', u'createIpForwardingRule', u'updatePortForwardingRule'], u'length': 255, u'type': u'uuid', u'description': u'the ID of the firewall rule'}], u'requiredparams': [u'id'], u'description': u'Deletes a firewall rule'}, u'pod': {u'name': u'deletePod', u'related': [], u'isasync': False, u'params': [{u'name': u'id', u'required': True, u'related': [u'updatePod', u'createPod', u'listPods'], u'length': 255, u'type': u'uuid', u'description': u'the ID of the Pod'}], u'requiredparams': [u'id'], u'description': u'Deletes a Pod.'}, u'ipforwardingrule': {u'name': u'deleteIpForwardingRule', u'related': [], u'isasync': True, u'params': [{u'name': u'id', u'required': True, u'related': [u'listPortForwardingRules', u'createPortForwardingRule', u'listIpForwardingRules', u'createIpForwardingRule', u'updatePortForwardingRule'], u'length': 255, u'type': u'uuid', u'description': u'the id of the forwarding rule'}], u'requiredparams': [u'id'], u'description': u'Deletes an ip forwarding rule'}, u'secondarystagingstore': {u'name': u'deleteSecondaryStagingStore', u'related': [], u'isasync': False, u'params': [{u'name': u'id', u'required': True, u'related': [u'addS3', u'createSecondaryStagingStore', u'listSecondaryStagingStores', u'addImageStore', u'listSwifts'], u'length': 255, u'type': u'uuid', u'description': u'the staging store ID'}], u'requiredparams': [u'id'], u'description': u'Deletes a secondary staging store .'}, u'project': {u'name': u'deleteProject', u'related': [], u'isasync': True, u'params': [{u'name': u'id', u'required': True, u'related': [u'activateProject', u'updateProject', u'listProjectAccounts', u'createProject'], u'length': 255, u'type': u'uuid', u'description': u'id of the project to be deleted'}], u'requiredparams': [u'id'], u'description': u'Deletes a project'}, u'snapshotpolicies': {u'name': u'deleteSnapshotPolicies', u'related': [], u'isasync': False, u'params': [{u'name': u'id', u'required': False, u'related': [u'createSnapshotPolicy'], u'length': 255, u'type': u'uuid', u'description': u'the Id of the snapshot policy'}, {u'name': u'ids', u'required': False, u'related': [u'createSnapshotPolicy'], u'length': 255, u'type': u'list', u'description': u'list of snapshots policy IDs separated by comma'}], u'requiredparams': [], u'description': u'Deletes snapshot policies for the account.'}, u'vpcoffering': {u'name': u'deleteVPCOffering', u'related': [], u'isasync': True, u'params': [{u'name': u'id', u'required': True, u'related': [], u'length': 255, u'type': u'uuid', u'description': u'the ID of the VPC offering'}], u'requiredparams': [u'id'], u'description': u'Deletes VPC offering'}, u'network': {u'name': u'deleteNetwork', u'related': [], u'isasync': True, u'params': [{u'name': u'forced', u'required': False, u'related': [], u'length': 255, u'type': u'boolean', u'description': u"Force delete a network. Network will be marked as 'Destroy' even when commands to shutdown and cleanup to the backend fails."}, {u'name': u'id', u'required': True, u'related': [u'updateNetwork', u'updateNetwork', u'listNetscalerLoadBalancerNetworks', u'listNetworks', u'createNetwork'], u'length': 255, u'type': u'uuid', u'description': u'the ID of the network'}], u'requiredparams': [u'id'], u'description': u'Deletes a network'}, u'zone': {u'name': u'deleteZone', u'related': [], u'isasync': False, u'params': [{u'name': u'id', u'required': True, u'related': [u'listZones', u'updateZone', u'createZone', u'listZones'], u'length': 255, u'type': u'uuid', u'description': u'the ID of the Zone'}], u'requiredparams': [u'id'], u'description': u'Deletes a Zone.'}, u'remoteaccessvpn': {u'name': u'deleteRemoteAccessVpn', u'related': [], u'isasync': True, u'params': [{u'name': u'publicipid', u'required': True, u'related': [u'associateIpAddress', u'listPublicIpAddresses', u'associateIpAddress'], u'length': 255, u'type': u'uuid', u'description': u'public ip address id of the vpn server'}], u'requiredparams': [u'publicipid'], u'description': u'Destroys a l2tp/ipsec remote access vpn'}, u'bigswitchvnsdevice': {u'name': u'deleteBigSwitchVnsDevice', u'related': [], u'isasync': True, u'params': [{u'name': u'vnsdeviceid', u'required': True, u'related': [u'listBigSwitchVnsDevices'], u'length': 255, u'type': u'uuid', u'description': u'BigSwitch device ID'}], u'requiredparams': [u'vnsdeviceid'], u'description': u' delete a bigswitch vns device'}, u'instancegroup': {u'name': u'deleteInstanceGroup', u'related': [], u'isasync': False, u'params': [{u'name': u'id', u'required': True, u'related': [], u'length': 255, u'type': u'uuid', u'description': u'the ID of the instance group'}], u'requiredparams': [u'id'], u'description': u'Deletes a vm group'}, u'autoscalepolicy': {u'name': u'deleteAutoScalePolicy', u'related': [], u'isasync': True, u'params': [{u'name': u'id', u'required': True, u'related': [u'createAutoScalePolicy', u'updateAutoScalePolicy'], u'length': 255, u'type': u'uuid', u'description': u'the ID of the autoscale policy'}], u'requiredparams': [u'id'], u'description': u'Deletes a autoscale policy.'}, u'globalloadbalancerrule': {u'name': u'deleteGlobalLoadBalancerRule', u'related': [], u'isasync': True, u'params': [{u'name': u'id', u'required': True, u'related': [u'listGlobalLoadBalancerRules', u'updateGlobalLoadBalancerRule'], u'length': 255, u'type': u'uuid', u'description': u'the ID of the global load balancer rule'}], u'requiredparams': [u'id'], u'description': u'Deletes a global load balancer rule.'}, u'portableiprange': {u'name': u'deletePortableIpRange', u'related': [], u'isasync': True, u'params': [{u'name': u'id', u'required': True, u'related': [u'listPortableIpRanges'], u'length': 255, u'type': u'uuid', u'description': u'Id of the portable ip range'}], u'requiredparams': [u'id'], u'description': u"deletes a range of portable public IP's associated with a region"}, u'niciranvpdevice': {u'name': u'deleteNiciraNvpDevice', u'related': [], u'isasync': True, u'params': [{u'name': u'nvpdeviceid', u'required': True, u'related': [u'addNiciraNvpDevice', u'listNiciraNvpDevices'], u'length': 255, u'type': u'uuid', u'description': u'Nicira device ID'}], u'requiredparams': [u'nvpdeviceid'], u'description': u' delete a nicira nvp device'}, u'serviceoffering': {u'name': u'deleteServiceOffering', u'related': [], u'isasync': False, u'params': [{u'name': u'id', u'required': True, u'related': [u'listServiceOfferings'], u'length': 255, u'type': u'uuid', u'description': u'the ID of the service offering'}], u'requiredparams': [u'id'], u'description': u'Deletes a service offering.'}, u'condition': {u'name': u'deleteCondition', u'related': [], u'isasync': True, u'params': [{u'name': u'id', u'required': True, u'related': [u'listConditions'], u'length': 255, u'type': u'uuid', u'description': u'the ID of the condition.'}], u'requiredparams': [u'id'], u'description': u'Removes a condition'}, u'template': {u'name': u'deleteTemplate', u'related': [], u'isasync': True, u'params': [{u'name': u'zoneid', u'required': False, u'related': [u'listZones', u'updateZone', u'createZone', u'listZones'], u'length': 255, u'type': u'uuid', u'description': u'the ID of zone of the template'}, {u'name': u'id', u'required': True, u'related': [u'registerIso', u'registerIso', u'prepareTemplate', u'updateTemplate', u'registerTemplate', u'registerTemplate', u'copyIso', u'listTemplates', u'createTemplate', u'listIsos', u'copyTemplate', u'copyIso', u'listIsos', u'updateIso', u'listTemplates'], u'length': 255, u'type': u'uuid', u'description': u'the ID of the template'}], u'requiredparams': [u'id'], u'description': u'Deletes a template from the system. All virtual machines using the deleted template will not be affected.'}, u'vpngateway': {u'name': u'deleteVpnGateway', u'related': [], u'isasync': True, u'params': [{u'name': u'id', u'required': True, u'related': [u'createVpnGateway', u'updateVpnGateway'], u'length': 255, u'type': u'uuid', u'description': u'id of customer gateway'}], u'requiredparams': [u'id'], u'description': u'Delete site to site vpn gateway'}, u'iso': {u'name': u'deleteIso', u'related': [], u'isasync': True, u'params': [{u'name': u'id', u'required': True, u'related': [u'registerIso', u'registerIso', u'prepareTemplate', u'updateTemplate', u'registerTemplate', u'registerTemplate', u'copyIso', u'listTemplates', u'createTemplate', u'listIsos', u'copyTemplate', u'copyIso', u'listIsos', u'updateIso', u'listTemplates'], u'length': 255, u'type': u'uuid', u'description': u'the ID of the ISO file'}, {u'name': u'zoneid', u'required': False, u'related': [u'listZones', u'updateZone', u'createZone', u'listZones'], u'length': 255, u'type': u'uuid', u'description': u'the ID of the zone of the ISO file. If not specified, the ISO will be deleted from all the zones'}], u'requiredparams': [u'id'], u'description': u'Deletes an ISO file.'}, u'networkacllist': {u'name': u'deleteNetworkACLList', u'related': [], u'isasync': True, u'params': [{u'name': u'id', u'required': True, u'related': [], u'length': 255, u'type': u'uuid', u'description': u'the ID of the network ACL'}], u'requiredparams': [u'id'], u'description': u'Deletes a Network ACL'}, u'events': {u'name': u'deleteEvents', u'related': [], u'isasync': False, u'params': [{u'name': u'startdate', u'required': False, u'related': [], u'length': 255, u'type': u'date', u'description': u'start date range to delete events (including) this date (use format "yyyy-MM-dd" or the new format "yyyy-MM-ddThh:mm:ss")'}, {u'name': u'type', u'required': False, u'related': [], u'length': 255, u'type': u'string', u'description': u'delete by event type'}, {u'name': u'enddate', u'required': False, u'related': [], u'length': 255, u'type': u'date', u'description': u'end date range to delete events (including) this date (use format "yyyy-MM-dd" or the new format "yyyy-MM-ddThh:mm:ss")'}, {u'name': u'ids', u'required': False, u'related': [], u'length': 255, u'type': u'list', u'description': u'the IDs of the events'}], u'requiredparams': [], u'description': u'Delete one or more events.'}, u'autoscalevmgroup': {u'name': u'deleteAutoScaleVmGroup', u'related': [], u'isasync': True, u'params': [{u'name': u'id', u'required': True, u'related': [u'updateAutoScaleVmGroup', u'enableAutoScaleVmGroup', u'disableAutoScaleVmGroup'], u'length': 255, u'type': u'uuid', u'description': u'the ID of the autoscale group'}], u'requiredparams': [u'id'], u'description': u'Deletes a autoscale vm group.'}, u'vpnconnection': {u'name': u'deleteVpnConnection', u'related': [], u'isasync': True, u'params': [{u'name': u'id', u'required': True, u'related': [u'resetVpnConnection', u'listVpnConnections', u'updateVpnConnection'], u'length': 255, u'type': u'uuid', u'description': u'id of vpn connection'}], u'requiredparams': [u'id'], u'description': u'Delete site to site vpn connection'}, u'trafficmonitor': {u'name': u'deleteTrafficMonitor', u'related': [], u'isasync': False, u'params': [{u'name': u'id', u'required': True, u'related': [u'prepareHostForMaintenance', u'listHosts'], u'length': 255, u'type': u'uuid', u'description': u'Id of the Traffic Monitor Host.'}], u'requiredparams': [u'id'], u'description': u'Deletes an traffic monitor host.'}, u'networkacl': {u'name': u'deleteNetworkACL', u'related': [], u'isasync': True, u'params': [{u'name': u'id', u'required': True, u'related': [u'createNetworkACL'], u'length': 255, u'type': u'uuid', u'description': u'the ID of the network ACL'}], u'requiredparams': [u'id'], u'description': u'Deletes a Network ACL'}, u'storagepool': {u'name': u'deleteStoragePool', u'related': [], u'isasync': False, u'params': [{u'name': u'forced', u'required': False, u'related': [], u'length': 255, u'type': u'boolean', u'description': u'Force destroy storage pool (force expunge volumes in Destroyed state as a part of pool removal)'}, {u'name': u'id', u'required': True, u'related': [u'findStoragePoolsForMigration'], u'length': 255, u'type': u'uuid', u'description': u'Storage pool id'}], u'requiredparams': [u'id'], u'description': u'Deletes a storage pool.'}, u'ldapconfiguration': {u'name': u'deleteLdapConfiguration', u'related': [u'addLdapConfiguration'], u'isasync': False, u'params': [{u'name': u'hostname', u'required': True, u'related': [], u'length': 255, u'type': u'string', u'description': u'Hostname'}], u'requiredparams': [u'hostname'], u'description': u'Remove an Ldap Configuration'}, u'sslcert': {u'name': u'deleteSslCert', u'related': [], u'isasync': False, u'params': [{u'name': u'id', u'required': True, u'related': [u'listSslCerts'], u'length': 255, u'type': u'uuid', u'description': u'Id of SSL certificate'}], u'requiredparams': [u'id'], u'description': u'Delete a certificate to cloudstack'}, u'alerts': {u'name': u'deleteAlerts', u'related': [], u'isasync': False, u'params': [{u'name': u'enddate', u'required': False, u'related': [], u'length': 255, u'type': u'date', u'description': u'end date range to delete alerts (including) this date (use format "yyyy-MM-dd" or the new format "yyyy-MM-ddThh:mm:ss")'}, {u'name': u'type', u'required': False, u'related': [], u'length': 255, u'type': u'string', u'description': u'delete by alert type'}, {u'name': u'ids', u'required': False, u'related': [], u'length': 255, u'type': u'list', u'description': u'the IDs of the alerts'}, {u'name': u'startdate', u'required': False, u'related': [], u'length': 255, u'type': u'date', u'description': u'start date range to delete alerts (including) this date (use format "yyyy-MM-dd" or the new format "yyyy-MM-ddThh:mm:ss")'}], u'requiredparams': [], u'description': u'Delete one or more alerts.'}, u'staticroute': {u'name': u'deleteStaticRoute', u'related': [], u'isasync': True, u'params': [{u'name': u'id', u'required': True, u'related': [u'createStaticRoute', u'listStaticRoutes'], u'length': 255, u'type': u'uuid', u'description': u'the ID of the static route'}], u'requiredparams': [u'id'], u'description': u'Deletes a static route'}, u'traffictype': {u'name': u'deleteTrafficType', u'related': [], u'isasync': True, u'params': [{u'name': u'id', u'required': True, u'related': [u'addTrafficType'], u'length': 255, u'type': u'uuid', u'description': u'traffic type id'}], u'requiredparams': [u'id'], u'description': u'Deletes traffic type of a physical network'}, u'host': {u'name': u'deleteHost', u'related': [], u'isasync': False, u'params': [{u'name': u'id', u'required': True, u'related': [], u'length': 255, u'type': u'uuid', u'description': u'the host ID'}, {u'name': u'forced', u'required': False, u'related': [], u'length': 255, u'type': u'boolean', u'description': u'Force delete the host. All HA enabled vms running on the host will be put to HA; HA disabled ones will be stopped'}, {u'name': u'forcedestroylocalstorage', u'required': False, u'related': [], u'length': 255, u'type': u'boolean', u'description': u'Force destroy local storage on this host. All VMs created on this local storage will be destroyed'}], u'requiredparams': [u'id'], u'description': u'Deletes a host.'}, u'user': {u'name': u'deleteUser', u'related': [], u'isasync': False, u'params': [{u'name': u'id', u'required': True, u'related': [u'disableUser', u'lockUser', u'listUsers', u'updateUser', u'getUser'], u'length': 255, u'type': u'uuid', u'description': u'id of the user to be deleted'}], u'requiredparams': [u'id'], u'description': u'Deletes a user for an account'}, u'vpc': {u'name': u'deleteVPC', u'related': [], u'isasync': True, u'params': [{u'name': u'id', u'required': True, u'related': [u'listVPCs', u'updateVPC', u'restartVPC', u'createVPC', u'createVPC', u'listVPCs'], u'length': 255, u'type': u'uuid', u'description': u'the ID of the VPC'}], u'requiredparams': [u'id'], u'description': u'Deletes a VPC'}, u'storagenetworkiprange': {u'name': u'deleteStorageNetworkIpRange', u'related': [], u'isasync': True, u'params': [{u'name': u'id', u'required': True, u'related': [u'createStorageNetworkIpRange', u'listStorageNetworkIpRange', u'updateStorageNetworkIpRange'], u'length': 255, u'type': u'uuid', u'description': u'the uuid of the storage network ip range'}], u'requiredparams': [u'id'], u'description': u'Deletes a storage network IP Range.'}, u'tags': {u'name': u'deleteTags', u'related': [], u'isasync': True, u'params': [{u'name': u'resourcetype', u'required': True, u'related': [], u'length': 255, u'type': u'string', u'description': u'Delete tag by resource type'}, {u'name': u'tags', u'required': False, u'related': [], u'length': 255, u'type': u'map', u'description': u'Delete tags matching key/value pairs'}, {u'name': u'resourceids', u'required': True, u'related': [], u'length': 255, u'type': u'list', u'description': u'Delete tags for resource id(s)'}], u'requiredparams': [u'resourcetype', u'resourceids'], u'description': u'Deleting resource tag(s)'}, u'autoscalevmprofile': {u'name': u'deleteAutoScaleVmProfile', u'related': [], u'isasync': True, u'params': [{u'name': u'id', u'required': True, u'related': [u'listAutoScaleVmProfiles'], u'length': 255, u'type': u'uuid', u'description': u'the ID of the autoscale profile'}], u'requiredparams': [u'id'], u'description': u'Deletes a autoscale vm profile.'}, u'affinitygroup': {u'name': u'deleteAffinityGroup', u'related': [], u'isasync': True, u'params': [{u'name': u'domainid', u'required': False, u'related': [u'listDomainChildren'], u'length': 255, u'type': u'uuid', u'description': u'the domain ID of account owning the affinity group'}, {u'name': u'id', u'required': False, u'related': [], u'length': 255, u'type': u'uuid', u'description': u'The ID of the affinity group. Mutually exclusive with name parameter'}, {u'name': u'name', u'required': False, u'related': [], u'length': 255, u'type': u'string', u'description': u'The name of the affinity group. Mutually exclusive with id parameter'}, {u'name': u'account', u'required': False, u'related': [], u'length': 255, u'type': u'string', u'description': u'the account of the affinity group. Must be specified with domain ID'}], u'requiredparams': [], u'description': u'Deletes affinity group'}, u'volume': {u'name': u'deleteVolume', u'related': [], u'isasync': False, u'params': [{u'name': u'id', u'required': True, u'related': [u'uploadVolume', u'createVolume', u'createVolume', u'attachVolume', u'updateVolume', u'migrateVolume', u'resizeVolume', u'uploadVolume', u'detachVolume', u'listVolumes'], u'length': 255, u'type': u'uuid', u'description': u'The ID of the disk volume'}], u'requiredparams': [u'id'], u'description': u'Deletes a detached disk volume.'}, u'account': {u'name': u'deleteAccount', u'related': [], u'isasync': True, u'params': [{u'name': u'id', u'required': True, u'related': [u'listAccounts', u'markDefaultZoneForAccount', u'listAccounts', u'disableAccount'], u'length': 255, u'type': u'uuid', u'description': u'Account id'}], u'requiredparams': [u'id'], u'description': u'Deletes a account, and all users associated with this account'}, u'paloaltofirewall': {u'name': u'deletePaloAltoFirewall', u'related': [], u'isasync': True, u'params': [{u'name': u'fwdeviceid', u'required': True, u'related': [u'configurePaloAltoFirewall', u'addPaloAltoFirewall', u'listPaloAltoFirewalls'], u'length': 255, u'type': u'uuid', u'description': u'Palo Alto firewall device ID'}], u'requiredparams': [u'fwdeviceid'], u'description': u' delete a Palo Alto firewall device'}, u'netscalerloadbalancer': {u'name': u'deleteNetscalerLoadBalancer', u'related': [], u'isasync': True, u'params': [{u'name': u'lbdeviceid', u'required': True, u'related': [], u'length': 255, u'type': u'uuid', u'description': u'netscaler load balancer device ID'}], u'requiredparams': [u'lbdeviceid'], u'description': u' delete a netscaler load balancer device'}, u'networkoffering': {u'name': u'deleteNetworkOffering', u'related': [], u'isasync': False, u'params': [{u'name': u'id', u'required': True, u'related': [u'createNetworkOffering', u'updateNetworkOffering'], u'length': 255, u'type': u'uuid', u'description': u'the ID of the network offering'}], u'requiredparams': [u'id'], u'description': u'Deletes a network offering.'}, u'vpncustomergateway': {u'name': u'deleteVpnCustomerGateway', u'related': [], u'isasync': True, u'params': [{u'name': u'id', u'required': True, u'related': [u'updateVpnCustomerGateway', u'listVpnCustomerGateways'], u'length': 255, u'type': u'uuid', u'description': u'id of customer gateway'}], u'requiredparams': [u'id'], u'description': u'Delete site to site vpn customer gateway'}, u'counter': {u'name': u'deleteCounter', u'related': [], u'isasync': True, u'params': [{u'name': u'id', u'required': True, u'related': [u'createCounter'], u'length': 255, u'type': u'uuid', u'description': u'the ID of the counter'}], u'requiredparams': [u'id'], u'description': u'Deletes a counter'}, u'lbhealthcheckpolicy': {u'name': u'deleteLBHealthCheckPolicy', u'related': [], u'isasync': True, u'params': [{u'name': u'id', u'required': True, u'related': [u'createLBHealthCheckPolicy', u'listLBHealthCheckPolicies', u'updateLBHealthCheckPolicy'], u'length': 255, u'type': u'uuid', u'description': u'the ID of the load balancer HealthCheck policy'}], u'requiredparams': [u'id'], u'description': u'Deletes a load balancer HealthCheck policy.'}, u'lbstickinesspolicy': {u'name': u'deleteLBStickinessPolicy', u'related': [], u'isasync': True, u'params': [{u'name': u'id', u'required': True, u'related': [u'createLBStickinessPolicy'], u'length': 255, u'type': u'uuid', u'description': u'the ID of the LB stickiness policy'}], u'requiredparams': [u'id'], u'description': u'Deletes a LB stickiness policy.'}, u'vmsnapshot': {u'name': u'deleteVMSnapshot', u'related': [], u'isasync': True, u'params': [{u'name': u'vmsnapshotid', u'required': True, u'related': [], u'length': 255, u'type': u'uuid', u'description': u'The ID of the VM snapshot'}], u'requiredparams': [u'vmsnapshotid'], u'description': u'Deletes a vmsnapshot.'}, u'vlaniprange': {u'name': u'deleteVlanIpRange', u'related': [], u'isasync': False, u'params': [{u'name': u'id', u'required': True, u'related': [u'dedicatePublicIpRange', u'listVlanIpRanges'], u'length': 255, u'type': u'uuid', u'description': u'the id of the VLAN IP range'}], u'requiredparams': [u'id'], u'description': u'Creates a VLAN IP range.'}, u'snapshot': {u'name': u'deleteSnapshot', u'related': [], u'isasync': True, u'params': [{u'name': u'id', u'required': True, u'related': [u'revertSnapshot', u'createSnapshot'], u'length': 255, u'type': u'uuid', u'description': u'The ID of the snapshot'}], u'requiredparams': [u'id'], u'description': u'Deletes a snapshot of a disk volume.'}, u'loadbalancer': {u'name': u'deleteLoadBalancer', u'related': [], u'isasync': True, u'params': [{u'name': u'id', u'required': True, u'related': [u'listPortForwardingRules', u'createPortForwardingRule', u'listIpForwardingRules', u'createIpForwardingRule', u'updatePortForwardingRule'], u'length': 255, u'type': u'uuid', u'description': u'the ID of the Load Balancer'}], u'requiredparams': [u'id'], u'description': u'Deletes a load balancer'}, u'imagestore': {u'name': u'deleteImageStore', u'related': [], u'isasync': False, u'params': [{u'name': u'id', u'required': True, u'related': [], u'length': 255, u'type': u'uuid', u'description': u'the image store ID'}], u'requiredparams': [u'id'], u'description': u'Deletes an image store .'}, u'egressfirewallrule': {u'name': u'deleteEgressFirewallRule', u'related': [], u'isasync': True, u'params': [{u'name': u'id', u'required': True, u'related': [u'listPortForwardingRules', u'createPortForwardingRule', u'listIpForwardingRules', u'createIpForwardingRule', u'updatePortForwardingRule'], u'length': 255, u'type': u'uuid', u'description': u'the ID of the firewall rule'}], u'requiredparams': [u'id'], u'description': u'Deletes an ggress firewall rule'}, u'networkserviceprovider': {u'name': u'deleteNetworkServiceProvider', u'related': [], u'isasync': True, u'params': [{u'name': u'id', u'required': True, u'related': [u'addNetworkServiceProvider', u'updateNetworkServiceProvider', u'listTrafficTypes'], u'length': 255, u'type': u'uuid', u'description': u'the ID of the network service provider'}], u'requiredparams': [u'id'], u'description': u'Deletes a Network Service Provider.'}, u'physicalnetwork': {u'name': u'deletePhysicalNetwork', u'related': [], u'isasync': True, u'params': [{u'name': u'id', u'required': True, u'related': [], u'length': 255, u'type': u'uuid', u'description': u'the ID of the Physical network'}], u'requiredparams': [u'id'], u'description': u'Deletes a Physical Network.'}, u'sshkeypair': {u'name': u'deleteSSHKeyPair', u'related': [], u'isasync': False, u'params': [{u'name': u'projectid', u'required': False, u'related': [u'updateProject', u'createProject'], u'length': 255, u'type': u'uuid', u'description': u'the project associated with keypair'}, {u'name': u'account', u'required': False, u'related': [], u'length': 255, u'type': u'string', u'description': u'the account associated with the keypair. Must be used with the domainId parameter.'}, {u'name': u'name', u'required': True, u'related': [], u'length': 255, u'type': u'string', u'description': u'Name of the keypair'}, {u'name': u'domainid', u'required': False, u'related': [u'listDomains', u'updateDomain', u'listDomainChildren'], u'length': 255, u'type': u'uuid', u'description': u'the domain ID associated with the keypair'}], u'requiredparams': [u'name'], u'description': u'Deletes a keypair by name'}, u'privategateway': {u'name': u'deletePrivateGateway', u'related': [], u'isasync': True, u'params': [{u'name': u'id', u'required': True, u'related': [u'createPrivateGateway'], u'length': 255, u'type': u'uuid', u'description': u'the ID of the private gateway'}], u'requiredparams': [u'id'], u'description': u'Deletes a Private gateway'}}} \ No newline at end of file diff --git a/cloudmonkey/printer.py b/cloudmonkey/printer.py deleted file mode 100644 index e548d2c3..00000000 --- a/cloudmonkey/printer.py +++ /dev/null @@ -1,122 +0,0 @@ -# -*- coding: utf-8 -*- -# Licensed to the Apache Software Foundation (ASF) under one -# or more contributor license agreements. See the NOTICE file -# distributed with this work for additional information -# regarding copyright ownership. The ASF licenses this file -# to you under the Apache License, Version 2.0 (the -# "License"); you may not use this file except in compliance -# with the License. You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, -# software distributed under the License is distributed on an -# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY -# KIND, either express or implied. See the License for the -# specific language governing permissions and limitations -# under the License. - -try: - from pygments import highlight - from pygments.console import ansiformat - from pygments.formatter import Formatter - from pygments.lexer import bygroups, RegexLexer - from pygments.token import * - - import sys -except ImportError, e: - print e - - -MONKEY_COLORS = { - Token: '', - Whitespace: 'reset', - Text: 'reset', - - Name: 'green', - Operator: 'teal', - Operator.Word: 'lightgray', - String: 'purple', - - Keyword: '_red_', - Error: 'red', - Literal: 'yellow', - Number: 'blue', -} - - -def get_colorscheme(): - return MONKEY_COLORS - - -class MonkeyLexer(RegexLexer): - keywords = ['[a-z]*id', '^[a-z A-Z]*:'] - attributes = ['[Tt]rue', '[Ff]alse'] - params = ['[a-z]*[Nn]ame', 'type', '[Ss]tate'] - - uuid_rgx = r'[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}' - date_rgx = r'[0-9]{4}-[0-9]{2}-[0-9]{2}T[0-9:]{8}-[0-9]{4}' - - def makelistre(lis): - return r'(' + r'|'.join(lis) + r')' - - tokens = { - 'root': [ - (r' ', Whitespace), - (date_rgx, Number), - (uuid_rgx, Literal), - (r'(?:\b\d+\b(?:-\b\d+|%)?)', Number), - (r'^[-=]*\n', Operator.Word), - (r'Error', Error), - (makelistre(attributes), Literal), - (makelistre(params) + r'( = )(.*)', bygroups(Name, Operator, - String)), - (makelistre(keywords), Keyword), - (makelistre(params), Name), - (r'(^[a-zA-Z]* )(=)', bygroups(Name, Operator)), - (r'\S+', Text), - ] - } - - def analyse_text(text): - npos = text.find('\n') - if npos < 3: - return False - return text[0] == '[' and text[npos - 1] == ']' - - -class MonkeyFormatter(Formatter): - def __init__(self, **options): - Formatter.__init__(self, **options) - self.colorscheme = get_colorscheme() - - def format(self, tokensource, outfile): - return Formatter.format(self, tokensource, outfile) - - def format_unencoded(self, tokensource, outfile): - for ttype, value in tokensource: - color = self.colorscheme.get(ttype) - while color is None: - ttype = ttype[:-1] - color = self.colorscheme.get(ttype) - if color: - spl = value.split('\n') - for line in spl[:-1]: - if line: - outfile.write(ansiformat(color, line)) - outfile.write('\n') - if spl[-1]: - outfile.write(ansiformat(color, spl[-1])) - else: - outfile.write(value) - - -def monkeyprint(text): - fmter = MonkeyFormatter() - lexer = MonkeyLexer() - lexer.encoding = 'utf-8' - fmter.encoding = 'utf-8' - if text.startswith("Error"): - highlight(text, lexer, fmter, sys.stderr) - else: - highlight(text, lexer, fmter, sys.stdout) diff --git a/cloudmonkey/requester.py b/cloudmonkey/requester.py deleted file mode 100644 index 08876c96..00000000 --- a/cloudmonkey/requester.py +++ /dev/null @@ -1,284 +0,0 @@ -#!/usr/bin/python -# -*- coding: utf-8 -*- -# Licensed to the Apache Software Foundation (ASF) under one -# or more contributor license agreements. See the NOTICE file -# distributed with this work for additional information -# regarding copyright ownership. The ASF licenses this file -# to you under the Apache License, Version 2.0 (the -# "License"); you may not use this file except in compliance -# with the License. You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, -# software distributed under the License is distributed on an -# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY -# KIND, either express or implied. See the License for the -# specific language governing permissions and limitations -# under the License. - -try: - import base64 - import hashlib - import hmac - import json - import requests - import sys - import time - import urllib - import urllib2 - from datetime import datetime, timedelta - from urllib2 import HTTPError, URLError - -except ImportError, e: - print "Import error in %s : %s" % (__name__, e) - import sys - sys.exit() - - -def logger_debug(logger, message): - if logger is not None: - logger.debug(message) - - -def writeError(msg): - sys.stderr.write(msg) - print msg - - -def login(url, username, password): - """ - Login and obtain a session to be used for subsequent API calls - Wrong username/password leads to HTTP error code 531 - """ - args = {} - - args["command"] = 'login' - args["username"] = username - args["password"] = password - args["domain"] = "/" - args["response"] = "json" - - sessionkey = '' - session = requests.Session() - - try: - resp = session.post(url, params=args) - except requests.exceptions.ConnectionError, e: - writeError("Connection refused by server: %s" % e) - return None, None - - if resp.status_code == 200: - sessionkey = resp.json()['loginresponse']['sessionkey'] - elif resp.status_code == 405: - writeError("Method not allowed, unauthorized access on URL: %s" % url) - session = None - sessionkey = None - elif resp.status_code == 531: - writeError("Error authenticating at %s using username: %s" \ - ", and password: %s" % (url, username, password)) - session = None - sessionkey = None - else: - resp.raise_for_status() - - return session, sessionkey - - -def logout(url, session): - if session is None: - return - session.get(url, params={'command': 'logout'}) - - -def make_request_with_password(command, args, logger, url, credentials): - - error = None - username = credentials['username'] - password = credentials['password'] - - if not (username and password): - error = "Username and password cannot be empty" - result = None - return result, error - - tries = 0 - retry = True - - while tries < 2 and retry: - sessionkey = credentials.get('sessionkey') - session = credentials.get('session') - tries += 1 - - # obtain a valid session if not supplied - if not (session and sessionkey): - session, sessionkey = login(url, username, password) - if not (session and sessionkey): - return None, 'Authentication failed' - credentials['session'] = session - credentials['sessionkey'] = sessionkey - - args['sessionkey'] = sessionkey - - # make the api call - resp = session.get(url, params=args) - result = resp.text - logger_debug(logger, "Response received: %s" % resp.text) - - if resp.status_code == 200: # success - retry = False - break - if resp.status_code == 401: # sessionkey is wrong - credentials['session'] = None - credentials['sessionkey'] = None - continue - - if resp.status_code != 200 and resp.status_code != 401: - error = "%s: %s" %\ - (str(resp.status_code), resp.headers.get('X-Description')) - result = None - retry = False - - return result, error - - -def make_request(command, args, logger, url, - credentials, expires): - response = None - error = None - - if not url.startswith('http'): - error = "Server URL should start with 'http' or 'https', " + \ - "please check and fix the url" - return None, error - - if args is None: - args = {} - - args["command"] = command - args["response"] = "json" - args["signatureversion"] = "3" - if expires == "" or expires == None: - expires = 600 - expirationtime = datetime.utcnow() + timedelta(seconds=int(expires)) - args["expires"] = expirationtime.strftime('%Y-%m-%dT%H:%M:%S+0000') - - # try to use the apikey/secretkey method by default - # followed by trying to check if we're using integration port - # finally use the username/password method - if not credentials['apikey'] and not ("8096" in url): - try: - return make_request_with_password(command, args, - logger, url, credentials) - except (requests.exceptions.ConnectionError, Exception), e: - return None, e - - args['apiKey'] = credentials['apikey'] - secretkey = credentials['secretkey'] - request = zip(args.keys(), args.values()) - request.sort(key=lambda x: x[0].lower()) - - request_url = "&".join(["=".join([r[0], urllib.quote_plus(str(r[1]))]) - for r in request]) - hashStr = "&".join(["=".join([r[0].lower(), - str.lower(urllib.quote_plus(str(r[1]))).replace("+", - "%20")]) for r in request]) - - sig = urllib.quote_plus(base64.encodestring(hmac.new(secretkey, hashStr, - hashlib.sha1).digest()).strip()) - request_url += "&signature=%s" % sig - request_url = "%s?%s" % (url, request_url) - - try: - logger_debug(logger, "Request sent: %s" % request_url) - connection = urllib2.urlopen(request_url) - response = connection.read() - except HTTPError, e: - error = "Error:%s %s" % (e.msg, e.info().getheader('X-Description')) - except URLError, e: - error = e.reason - - logger_debug(logger, "Response received: %s" % response) - if error is not None: - logger_debug(logger, "Error: %s" % (error)) - return response, error - - return response, error - - -def monkeyrequest(command, args, isasync, asyncblock, logger, url, - credentials, timeout, expires): - response = None - error = None - logger_debug(logger, "======== START Request ========") - logger_debug(logger, "Requesting command=%s, args=%s" % (command, args)) - response, error = make_request(command, args, logger, url, - credentials, expires) - - logger_debug(logger, "======== END Request ========\n") - - if error is not None: - return response, error - - def process_json(response): - try: - response = json.loads(str(response)) - except ValueError, e: - logger_debug(logger, "Error processing json: %s" % e) - writeError("Error processing json: %s" % e) - response = None - error = e - return response - - response = process_json(response) - if response is None: - return response, error - - isasync = isasync and (asyncblock == "true") - responsekey = filter(lambda x: 'response' in x, response.keys())[0] - - if isasync and 'jobid' in response[responsekey]: - jobid = response[responsekey]['jobid'] - command = "queryAsyncJobResult" - request = {'jobid': jobid} - if timeout == "" or timeout == None: - timeout = 3600 - timeout = int(timeout) - pollperiod = 2 - progress = 1 - while timeout > 0: - print '\r' + '.' * progress, - sys.stdout.flush() - time.sleep(pollperiod) - timeout = timeout - pollperiod - progress += 1 - logger_debug(logger, "Job %s to timeout in %ds" % (jobid, timeout)) - - response, error = make_request(command, request, logger, url, - credentials, expires) - if error is not None: - return response, error - - response = process_json(response) - responsekeys = filter(lambda x: 'response' in x, response.keys()) - - if len(responsekeys) < 1: - continue - - result = response[responsekeys[0]] - jobstatus = result['jobstatus'] - if jobstatus == 2: - jobresult = result["jobresult"] - error = "\rAsync job %s failed\nError %s, %s" % ( - jobid, jobresult["errorcode"], jobresult["errortext"]) - return response, error - elif jobstatus == 1: - print "\r" + " " * progress, - return response, error - else: - logger_debug(logger, "We should not arrive here!") - sys.stdout.flush() - - error = "Error: Async query timeout occurred for jobid %s" % jobid - - return response, error diff --git a/cmd/api.go b/cmd/api.go new file mode 100644 index 00000000..f7b91496 --- /dev/null +++ b/cmd/api.go @@ -0,0 +1,137 @@ +// Licensed to the Apache Software Foundation (ASF) under one +// or more contributor license agreements. See the NOTICE file +// distributed with this work for additional information +// regarding copyright ownership. The ASF licenses this file +// to you under the Apache License, Version 2.0 (the +// "License"); you may not use this file except in compliance +// with the License. You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, +// software distributed under the License is distributed on an +// "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY +// KIND, either express or implied. See the License for the +// specific language governing permissions and limitations +// under the License. + +package cmd + +import ( + "errors" + "fmt" + "strings" + + "github.com/apache/cloudstack-cloudmonkey/config" +) + +var apiCommand *Command + +// GetAPIHandler returns a catchall command handler +func GetAPIHandler() *Command { + return apiCommand +} + +func init() { + apiCommand = &Command{ + Name: "api", + Help: "Runs a provided API", + Handle: func(r *Request) error { + if len(r.Args) == 0 { + return errors.New("please provide an API to execute") + } + + apiName := strings.ToLower(r.Args[0]) + apiArgs := r.Args[1:] + if r.Config.GetCache()[apiName] == nil && len(r.Args) > 1 { + apiName = strings.ToLower(strings.Join(r.Args[:2], "")) + apiArgs = r.Args[2:] + } + + var uploadFiles []string + + for _, arg := range apiArgs { + if arg == "-h" { + r.Args[0] = apiName + return helpCommand.Handle(r) + } + if strings.HasPrefix(arg, config.FilePathArg) && config.IsFileUploadAPI(apiName) { + var err error + uploadFiles, err = ValidateAndGetFileList(arg[len(config.FilePathArg):]) + if err != nil { + return err + } + if len(uploadFiles) == 0 { + return errors.New("no valid files to upload") + } + } + } + + api := r.Config.GetCache()[apiName] + if api == nil { + return errors.New("unknown command or API requested") + } + + var missingArgs []string + for _, required := range api.RequiredArgs { + required = strings.ReplaceAll(required, "=", "") + provided := false + for _, arg := range apiArgs { + if strings.Contains(arg, "=") && strings.HasPrefix(arg, required) { + provided = true + } + } + if !provided { + missingArgs = append(missingArgs, strings.Replace(required, "=", "", -1)) + } + } + + if len(missingArgs) > 0 { + fmt.Println("💩 Missing required parameters: ", strings.Join(missingArgs, ", ")) + return nil + } + + response, err := NewAPIRequest(r, api.Name, apiArgs, api.Async) + if err != nil { + if strings.HasSuffix(err.Error(), "context canceled") { + return nil + } else if response != nil { + printResult(r.Config.Core.Output, response, nil, nil) + } + return err + } + + var filterKeys []string + for _, arg := range apiArgs { + if strings.HasPrefix(arg, "filter=") { + for _, filterKey := range strings.Split(strings.Split(arg, "=")[1], ",") { + if len(strings.TrimSpace(filterKey)) > 0 { + filterKeys = append(filterKeys, strings.TrimSpace(filterKey)) + } + } + } + } + + var excludeKeys []string + for _, arg := range apiArgs { + if strings.HasPrefix(arg, "exclude=") { + for _, excludeKey := range strings.Split(strings.Split(arg, "=")[1], ",") { + if len(strings.TrimSpace(excludeKey)) > 0 { + excludeKeys = append(excludeKeys, strings.TrimSpace(excludeKey)) + } + } + } + } + + if len(response) > 0 { + printResult(r.Config.Core.Output, response, filterKeys, excludeKeys) + if len(uploadFiles) > 0 { + UploadFiles(r, api.Name, response, uploadFiles) + } else { + PromptAndUploadFilesIfNeeded(r, api.Name, response) + } + } + return nil + }, + } +} diff --git a/cmd/command.go b/cmd/command.go new file mode 100644 index 00000000..19287553 --- /dev/null +++ b/cmd/command.go @@ -0,0 +1,79 @@ +// Licensed to the Apache Software Foundation (ASF) under one +// or more contributor license agreements. See the NOTICE file +// distributed with this work for additional information +// regarding copyright ownership. The ASF licenses this file +// to you under the Apache License, Version 2.0 (the +// "License"); you may not use this file except in compliance +// with the License. You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, +// software distributed under the License is distributed on an +// "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY +// KIND, either express or implied. See the License for the +// specific language governing permissions and limitations +// under the License. + +package cmd + +import ( + "fmt" +) + +// Command describes a CLI command +type Command struct { + Name string + Help string + SubCommands map[string][]string + CustomCompleter func(input string, position int) + Handle func(*Request) error +} + +var commands []*Command +var commandMap map[string]*Command + +// FindCommand finds command handler for a command string +func FindCommand(name string) *Command { + return commandMap[name] +} + +// AllCommands returns all available commands +func AllCommands() []*Command { + return commands +} + +// AddCommand adds a command to internal list +func AddCommand(cmd *Command) { + commands = append(commands, cmd) + if commandMap == nil { + commandMap = make(map[string]*Command) + } + commandMap[cmd.Name] = cmd +} + +// PrintUsage prints help usage for a command +func PrintUsage() { + commandHelp := "" + for _, cmd := range commands { + commandHelp += fmt.Sprintf(" %-8s %s\n", cmd.Name, cmd.Help) + } + fmt.Printf(`usage: cmk [flags] [commands|apis] [-h] + +CloudMonkey (cmk) 🐵 is a command line interface for Apache CloudStack. + +Allowed flags: + -h Show this help message or API doc when specified after an API + -v Print version + -o API response output format: json, text, table, column, csv + -p Server profile + -d Enable debug mode + -c Different config file path + -u CloudStack's API endpoint URL + -s CloudStack user's secret Key + -k CloudStack user's API Key + +Default commands: +%s +`, commandHelp) +} diff --git a/cmd/exit.go b/cmd/exit.go new file mode 100644 index 00000000..0712c594 --- /dev/null +++ b/cmd/exit.go @@ -0,0 +1,33 @@ +// Licensed to the Apache Software Foundation (ASF) under one +// or more contributor license agreements. See the NOTICE file +// distributed with this work for additional information +// regarding copyright ownership. The ASF licenses this file +// to you under the Apache License, Version 2.0 (the +// "License"); you may not use this file except in compliance +// with the License. You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, +// software distributed under the License is distributed on an +// "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY +// KIND, either express or implied. See the License for the +// specific language governing permissions and limitations +// under the License. + +package cmd + +import ( + "os" +) + +func init() { + AddCommand(&Command{ + Name: "exit", + Help: "Exits", + Handle: func(r *Request) error { + os.Exit(0) + return nil + }, + }) +} diff --git a/cmd/fileupload.go b/cmd/fileupload.go new file mode 100644 index 00000000..30bf9861 --- /dev/null +++ b/cmd/fileupload.go @@ -0,0 +1,255 @@ +// Licensed to the Apache Software Foundation (ASF) under one +// or more contributor license agreements. See the NOTICE file +// distributed with this work for additional information +// regarding copyright ownership. The ASF licenses this file +// to you under the Apache License, Version 2.0 (the +// "License"); you may not use this file except in compliance +// with the License. You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, +// software distributed under the License is distributed on an +// "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY +// KIND, either express or implied. See the License for the +// specific language governing permissions and limitations +// under the License. + +package cmd + +import ( + "fmt" + "io" + "mime/multipart" + "net/http" + "os" + "path/filepath" + "reflect" + "strings" + "time" + + "github.com/apache/cloudstack-cloudmonkey/config" + "github.com/briandowns/spinner" +) + +const ( + uploadingMessage = "Uploading files, please wait..." + progressCharCount = 24 +) + +// ValidateAndGetFileList parses a comma-separated string of file paths, trims them, +// checks for existence, and returns a slice of valid file paths or an error if any are missing. +func ValidateAndGetFileList(filePaths string) ([]string, error) { + filePathsList := strings.FieldsFunc(filePaths, func(r rune) bool { return r == ',' }) + + var missingFiles []string + var validFiles []string + for _, filePath := range filePathsList { + filePath = strings.TrimSpace(filePath) + if filePath == "" { + continue + } + if _, err := os.Stat(filePath); os.IsNotExist(err) { + missingFiles = append(missingFiles, filePath) + } else { + validFiles = append(validFiles, filePath) + } + } + if len(missingFiles) > 0 { + return nil, fmt.Errorf("file(s) do not exist or are not accessible: %s", strings.Join(missingFiles, ", ")) + } + return validFiles, nil +} + +// PromptAndUploadFilesIfNeeded prompts the user to provide file paths for upload and the API is getUploadParamsFor* +func PromptAndUploadFilesIfNeeded(r *Request, api string, response map[string]interface{}) { + if !r.Config.HasShell { + return + } + apiName := strings.ToLower(api) + if !config.IsFileUploadAPI(apiName) { + return + } + fmt.Print("Enter path of the file(s) to upload (comma-separated), leave empty to skip: ") + var filePaths string + fmt.Scanln(&filePaths) + if filePaths == "" { + return + } + validFiles, err := ValidateAndGetFileList(filePaths) + if err != nil { + fmt.Println(err) + return + } + if len(validFiles) == 0 { + fmt.Println("No valid files to upload.") + return + } + UploadFiles(r, api, response, validFiles) +} + +// UploadFiles uploads files to a remote server using parameters from the API response. +// Shows progress for each file and reports any failures. +func UploadFiles(r *Request, api string, response map[string]interface{}, validFiles []string) { + paramsRaw, ok := response["getuploadparams"] + if !ok || reflect.TypeOf(paramsRaw).Kind() != reflect.Map { + fmt.Println("Invalid response format for getuploadparams.") + return + } + params := paramsRaw.(map[string]interface{}) + requiredKeys := []string{"postURL", "metadata", "signature", "expires"} + for _, key := range requiredKeys { + if _, ok := params[key]; !ok { + fmt.Printf("Missing required key '%s' in getuploadparams response.\n", key) + return + } + } + postURL, _ := params["postURL"].(string) + signature, _ := params["signature"].(string) + expires, _ := params["expires"].(string) + metadata, _ := params["metadata"].(string) + + fmt.Println("Uploading files for", api, ":", validFiles) + spinner := r.Config.StartSpinner(uploadingMessage) + errored := 0 + for i, filePath := range validFiles { + spinner.Suffix = fmt.Sprintf(" uploading %d/%d %s...", i+1, len(validFiles), filepath.Base(filePath)) + if err := uploadFile(i, len(validFiles), postURL, filePath, signature, expires, metadata, spinner); err != nil { + spinner.Stop() + fmt.Println("Error uploading", filePath, ":", err) + errored++ + spinner.Suffix = fmt.Sprintf(" %s", uploadingMessage) + spinner.Start() + } + } + r.Config.StopSpinner(spinner) + if errored > 0 { + fmt.Printf("🙈 %d out of %d files failed to upload.\n", errored, len(validFiles)) + } else { + fmt.Println("All files uploaded successfully.") + } +} + +// progressReader streams file data and updates progress as bytes are read. +type progressBody struct { + f *os.File + read int64 + total int64 + update func(int) +} + +func (pb *progressBody) Read(p []byte) (int, error) { + n, err := pb.f.Read(p) + if n > 0 { + pb.read += int64(n) + pct := int(float64(pb.read) * 100 / float64(pb.total)) + pb.update(pct) + } + return n, err +} +func (pb *progressBody) Close() error { return pb.f.Close() } + +func barArrow(pct int) string { + width := progressCharCount + if pct < 0 { + pct = 0 + } + if pct > 100 { + pct = 100 + } + pos := (pct * width) / 100 + // 100%: full bar, no head + if pos >= width { + return fmt.Sprintf("[%s]", + strings.Repeat("=", width)) + } + left := strings.Repeat("=", pos) + ">" + right := strings.Repeat(" ", width-pos-1) + + return fmt.Sprintf("[%s%s]", left, right) +} + +// uploadFile streams a large file to the server with progress updates. +func uploadFile(index, count int, postURL, filePath, signature, expires, metadata string, spn *spinner.Spinner) error { + fileName := filepath.Base(filePath) + in, err := os.Open(filePath) + if err != nil { + return err + } + defer in.Close() + _, err = in.Stat() + if err != nil { + return err + } + tmp, err := os.CreateTemp("", "multipart-body-*.tmp") + if err != nil { + return err + } + defer func() { + tmp.Close() + os.Remove(tmp.Name()) + }() + mw := multipart.NewWriter(tmp) + part, err := mw.CreateFormFile("file", filepath.Base(filePath)) + if err != nil { + return err + } + if _, err := io.Copy(part, in); err != nil { + return err + } + if err := mw.Close(); err != nil { + return err + } + size, err := tmp.Seek(0, io.SeekEnd) + if err != nil { + return err + } + if _, err := tmp.Seek(0, io.SeekStart); err != nil { + return err + } + req, err := http.NewRequest("POST", postURL, nil) + if err != nil { + return err + } + req.Header.Set("Content-Type", mw.FormDataContentType()) + req.Header.Set("x-signature", signature) + req.Header.Set("x-expires", expires) + req.Header.Set("x-metadata", metadata) + req.ContentLength = size + pb := &progressBody{ + f: tmp, + total: size, + update: func(pct int) { + spn.Suffix = fmt.Sprintf(" [%d/%d] %s\t%s %d%%", index+1, count, fileName, barArrow(pct), pct) + }, + } + req.Body = pb + req.GetBody = func() (io.ReadCloser, error) { + f, err := os.Open(tmp.Name()) + if err != nil { + return nil, err + } + return f, nil + } + client := &http.Client{ + Timeout: 24 * time.Hour, + Transport: &http.Transport{ + ExpectContinueTimeout: 0, + }, + } + resp, err := client.Do(req) + if err != nil { + return err + } + defer resp.Body.Close() + if resp.StatusCode != http.StatusOK && resp.StatusCode != http.StatusCreated { + b, _ := io.ReadAll(resp.Body) + return fmt.Errorf("[%d/%d] %s\tupload failed: %s", index+1, count, fileName, string(b)) + } + + spn.Stop() + fmt.Printf("[%d/%d] %s\t%s ✅\n", index+1, count, fileName, barArrow(100)) + spn.Suffix = fmt.Sprintf(" %s", uploadingMessage) + spn.Start() + return nil +} diff --git a/cmd/help.go b/cmd/help.go new file mode 100644 index 00000000..9b9ba603 --- /dev/null +++ b/cmd/help.go @@ -0,0 +1,81 @@ +// Licensed to the Apache Software Foundation (ASF) under one +// or more contributor license agreements. See the NOTICE file +// distributed with this work for additional information +// regarding copyright ownership. The ASF licenses this file +// to you under the Apache License, Version 2.0 (the +// "License"); you may not use this file except in compliance +// with the License. You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, +// software distributed under the License is distributed on an +// "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY +// KIND, either express or implied. See the License for the +// specific language governing permissions and limitations +// under the License. + +package cmd + +import ( + "errors" + "fmt" + "strings" + + "github.com/apache/cloudstack-cloudmonkey/config" +) + +var helpCommand *Command + +func init() { + helpCommand = &Command{ + Name: "help", + Help: "Help", + Handle: func(r *Request) error { + if len(r.Args) < 1 || r.Args[0] == "-h" { + PrintUsage() + return nil + } + + api := r.Config.GetCache()[strings.ToLower(r.Args[0])] + if api == nil { + return errors.New("unknown command or API requested") + } + + fmt.Printf("\033[34m%s\033[0m: %s\n", api.Name, api.Description) + if api.Async { + fmt.Println("This API is \033[35masynchronous\033[0m.") + } + if len(api.RequiredArgs) > 0 { + fmt.Printf("Required params: ") + for _, requiredArg := range api.RequiredArgs { + fmt.Printf("%s, ", strings.Replace(requiredArg, "=", "", -1)) + } + fmt.Println() + } + if len(api.Args) > 0 { + fmt.Printf("%-24s %-8s %s\n", "API Params", "Type", "Description") + fmt.Printf("%-24s %-8s %s\n", "==========", "====", "===========") + } + for _, arg := range api.Args { + if arg.Type == config.FAKE { + continue + } + fmt.Printf("\033[36m%-24s\033[0m \033[32m%-8s\033[0m ", strings.Replace(arg.Name, "=", "", -1), arg.Type) + info := []rune(arg.Description) + for i, r := range info { + fmt.Printf("%s", string(r)) + if i > 0 && i%40 == 0 { + fmt.Println() + for i := 0; i < 34; i++ { + fmt.Printf(" ") + } + } + } + fmt.Println() + } + return nil + }, + } + AddCommand(helpCommand) +} diff --git a/cmd/network.go b/cmd/network.go new file mode 100644 index 00000000..286abb5d --- /dev/null +++ b/cmd/network.go @@ -0,0 +1,421 @@ +// Licensed to the Apache Software Foundation (ASF) under one +// or more contributor license agreements. See the NOTICE file +// distributed with this work for additional information +// regarding copyright ownership. The ASF licenses this file +// to you under the Apache License, Version 2.0 (the +// "License"); you may not use this file except in compliance +// with the License. You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, +// software distributed under the License is distributed on an +// "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY +// KIND, either express or implied. See the License for the +// specific language governing permissions and limitations +// under the License. + +package cmd + +import ( + "bytes" + "crypto/hmac" + "crypto/sha1" + "encoding/base64" + "encoding/json" + "errors" + "fmt" + "io/ioutil" + "net/http" + "net/http/cookiejar" + "net/url" + "os" + "sort" + "strings" + "time" + + "github.com/apache/cloudstack-cloudmonkey/config" +) + +func findSessionCookie(cookies []*http.Cookie) *http.Cookie { + if cookies == nil { + return nil + } + for _, cookie := range cookies { + if cookie.Name == "sessionkey" { + return cookie + } + } + return nil +} + +func getLoginResponse(responseBody []byte) (map[string]interface{}, error) { + var responseMap map[string]interface{} + err := json.Unmarshal(responseBody, &responseMap) + if err != nil { + return nil, errors.New("failed to parse login response: " + err.Error()) + } + loginRespRaw, ok := responseMap["loginresponse"] + if !ok { + return nil, errors.New("failed to parse login response, expected 'loginresponse' key not found") + } + loginResponse, ok := loginRespRaw.(map[string]interface{}) + if !ok { + return nil, errors.New("failed to parse login response, expected 'loginresponse' to be a map") + } + return loginResponse, nil +} + +func getResponseBooleanValue(response map[string]interface{}, key string) (bool, bool) { + v, found := response[key] + if !found { + return false, false + } + switch value := v.(type) { + case bool: + return true, value + case string: + return true, strings.ToLower(value) == "true" + case float64: + return true, value != 0 + default: + return true, false + } +} + +func checkLogin2FAPromptAndValidate(r *Request, response map[string]interface{}, sessionKey string) error { + if !r.Config.HasShell { + return nil + } + config.Debug("Checking if 2FA is enabled and verified for the user ", response) + found, is2faEnabled := getResponseBooleanValue(response, "is2faenabled") + if !found || !is2faEnabled { + config.Debug("2FA is not enabled for the user, skipping 2FA validation") + return nil + } + found, is2faVerified := getResponseBooleanValue(response, "is2faverified") + if !found || is2faVerified { + config.Debug("2FA is already verified for the user, skipping 2FA validation") + return nil + } + activeSpinners := r.Config.PauseActiveSpinners() + fmt.Print("Enter 2FA code: ") + var code string + fmt.Scanln(&code) + if activeSpinners > 0 { + r.Config.ResumePausedSpinners() + } + params := make(url.Values) + params.Add("command", "validateUserTwoFactorAuthenticationCode") + params.Add("codefor2fa", code) + params.Add("sessionkey", sessionKey) + + msURL, _ := url.Parse(r.Config.ActiveProfile.URL) + + config.Debug("Validating 2FA with POST URL:", msURL, params) + spinner := r.Config.StartSpinner("trying to validate 2FA...") + resp, err := r.Client().PostForm(msURL.String(), params) + r.Config.StopSpinner(spinner) + if err != nil { + return errors.New("failed to failed to validate 2FA code: " + err.Error()) + } + config.Debug("ValidateUserTwoFactorAuthenticationCode POST response status code:", resp.StatusCode) + if resp.StatusCode != http.StatusOK { + r.Client().Jar, _ = cookiejar.New(nil) + return errors.New("failed to validate 2FA code, please check the code. Invalidating session") + } + return nil +} + +// Login logs in a user based on provided request and returns http client and session key +func Login(r *Request) (string, error) { + params := make(url.Values) + params.Add("command", "login") + params.Add("username", r.Config.ActiveProfile.Username) + params.Add("password", r.Config.ActiveProfile.Password) + params.Add("domain", r.Config.ActiveProfile.Domain) + params.Add("response", "json") + + msURL, _ := url.Parse(r.Config.ActiveProfile.URL) + if sessionCookie := findSessionCookie(r.Client().Jar.Cookies(msURL)); sessionCookie != nil { + return sessionCookie.Value, nil + } + + config.Debug("Login POST URL:", msURL, params) + spinner := r.Config.StartSpinner("trying to log in...") + resp, err := r.Client().PostForm(msURL.String(), params) + r.Config.StopSpinner(spinner) + + if err != nil { + return "", errors.New("failed to authenticate with the CloudStack server, please check the settings: " + err.Error()) + } + + config.Debug("Login POST response status code:", resp.StatusCode) + if resp.StatusCode != http.StatusOK { + e := errors.New("failed to authenticate, please check the credentials") + if err != nil { + e = errors.New("failed to authenticate due to " + err.Error()) + } + return "", e + } + + body, _ := ioutil.ReadAll(resp.Body) + config.Debug("Login response body:", string(body)) + loginResponse, err := getLoginResponse(body) + if err != nil { + return "", err + } + + var sessionKey string + curTime := time.Now() + expiryDuration := 15 * time.Minute + for _, cookie := range resp.Cookies() { + if cookie.Expires.After(curTime) { + expiryDuration = cookie.Expires.Sub(curTime) + } + if cookie.Name == "sessionkey" { + sessionKey = cookie.Value + } + } + go func() { + time.Sleep(expiryDuration) + r.Client().Jar, _ = cookiejar.New(nil) + }() + + config.Debug("Login sessionkey:", sessionKey) + if err := checkLogin2FAPromptAndValidate(r, loginResponse, sessionKey); err != nil { + return "", err + } + return sessionKey, nil +} + +func encodeRequestParams(params url.Values) string { + if params == nil { + return "" + } + + keys := make([]string, 0, len(params)) + for key := range params { + keys = append(keys, key) + } + sort.Strings(keys) + + var buf bytes.Buffer + for _, key := range keys { + value := params.Get(key) + if buf.Len() > 0 { + buf.WriteByte('&') + } + buf.WriteString(key) + buf.WriteString("=") + escaped := url.QueryEscape(value) + // we need to ensure + (representing a space) is encoded as %20 + escaped = strings.Replace(escaped, "+", "%20", -1) + // we need to ensure * is not escaped + escaped = strings.Replace(escaped, "%2A", "*", -1) + buf.WriteString(escaped) + } + return buf.String() +} + +func getResponseData(data map[string]interface{}) map[string]interface{} { + for k := range data { + if strings.HasSuffix(k, "response") { + return data[k].(map[string]interface{}) + } + } + return nil +} + +func pollAsyncJob(r *Request, jobID string) (map[string]interface{}, error) { + timeout := time.NewTimer(time.Duration(float64(r.Config.Core.Timeout)) * time.Second) + ticker := time.NewTicker(time.Duration(2 * time.Second)) + defer ticker.Stop() + defer timeout.Stop() + + spinner := r.Config.StartSpinner("polling for async API result") + defer r.Config.StopSpinner(spinner) + + for { + select { + case <-r.Config.C: + return nil, errors.New("async API job polling interrupted") + + case <-timeout.C: + return nil, errors.New("async API job query timed out") + + case <-ticker.C: + args := []string{"jobid=" + jobID} + if r.Args != nil { + for _, arg := range r.Args { + if strings.HasPrefix(strings.ToLower(arg), "filter=") { + args = append(args, arg) + break + } + } + } + queryResult, queryError := NewAPIRequest(r, "queryAsyncJobResult", args, false) + if queryError != nil { + return queryResult, queryError + } + jobStatus := queryResult["jobstatus"].(float64) + + switch jobStatus { + case 0: + continue + + case 1: + return queryResult["jobresult"].(map[string]interface{}), nil + + case 2: + return queryResult, errors.New("async API failed for job " + jobID) + } + } + } +} + +// NewAPIRequest makes an API request to configured management server +func NewAPIRequest(r *Request, api string, args []string, isAsync bool) (map[string]interface{}, error) { + params := make(url.Values) + params.Add("command", api) + apiData := r.Config.GetCache()[api] + for _, arg := range args { + if apiData != nil { + skip := false + for _, fakeArg := range apiData.FakeArgs { + if strings.HasPrefix(arg, fakeArg) { + skip = true + break + } + } + if skip { + continue + } + + } + parts := strings.SplitN(arg, "=", 2) + if len(parts) == 2 { + key := parts[0] + value := parts[1] + if strings.HasPrefix(value, "\"") && strings.HasSuffix(value, "\"") { + value = value[1 : len(value)-1] + } + if strings.HasPrefix(value, "@") { + possibleFileName := value[1:] + if fileInfo, err := os.Stat(possibleFileName); err == nil && !fileInfo.IsDir() { + bytes, err := ioutil.ReadFile(possibleFileName) + config.Debug() + if err == nil { + value = string(bytes) + config.Debug("Content for argument ", key, " read from file: ", possibleFileName, " is: ", value) + } + } + } + params.Add(key, value) + } + } + signatureversion := "3" + expiresKey := "expires" + params.Add("response", "json") + params.Add("signatureversion", signatureversion) + params.Add(expiresKey, time.Now().UTC().Add(15*time.Minute).Format(time.RFC3339)) + + var encodedParams string + var err error + + if len(r.Config.ActiveProfile.APIKey) > 0 && len(r.Config.ActiveProfile.SecretKey) > 0 { + apiKey := r.Config.ActiveProfile.APIKey + secretKey := r.Config.ActiveProfile.SecretKey + + if len(apiKey) > 0 { + params.Add("apiKey", apiKey) + } + encodedParams = encodeRequestParams(params) + + mac := hmac.New(sha1.New, []byte(secretKey)) + mac.Write([]byte(strings.ToLower(encodedParams))) + signature := base64.StdEncoding.EncodeToString(mac.Sum(nil)) + if r.Config.Core.PostRequest { + params.Add("signature", signature) + } else { + encodedParams = encodedParams + fmt.Sprintf("&signature=%s", url.QueryEscape(signature)) + params = nil + } + } else if len(r.Config.ActiveProfile.Username) > 0 && len(r.Config.ActiveProfile.Password) > 0 { + sessionKey, err := Login(r) + if err != nil { + return nil, err + } + params.Add("sessionkey", sessionKey) + encodedParams = encodeRequestParams(params) + } else { + fmt.Println("Please provide either apikey/secretkey or username/password to make an API call") + return nil, errors.New("failed to authenticate to make API call") + } + + requestURL := fmt.Sprintf("%s?%s", r.Config.ActiveProfile.URL, encodedParams) + config.Debug("NewAPIRequest API request URL:", requestURL) + + var response *http.Response + response, err = executeRequest(r, requestURL, params) + if err != nil { + return nil, err + } + config.Debug("NewAPIRequest response status code:", response.StatusCode) + + if r.CredentialsSupplied { + config.Debug("Credentials supplied on command-line, not falling back to login") + } + + if response.StatusCode == http.StatusUnauthorized && !r.CredentialsSupplied { + r.Client().Jar, _ = cookiejar.New(nil) + sessionKey, err := Login(r) + if err != nil { + return nil, err + } + params.Del("sessionkey") + params.Add("sessionkey", sessionKey) + requestURL = fmt.Sprintf("%s?%s", r.Config.ActiveProfile.URL, encodeRequestParams(params)) + config.Debug("NewAPIRequest API request URL:", requestURL) + + response, err = executeRequest(r, requestURL, params) + if err != nil { + return nil, err + } + } + + body, _ := ioutil.ReadAll(response.Body) + config.Debug("NewAPIRequest response body:", string(body)) + + var data map[string]interface{} + _ = json.Unmarshal([]byte(body), &data) + + if isAsync && r.Config.Core.AsyncBlock { + if jobResponse := getResponseData(data); jobResponse != nil && jobResponse["jobid"] != nil { + jobID := jobResponse["jobid"].(string) + return pollAsyncJob(r, jobID) + } + } + + if apiResponse := getResponseData(data); apiResponse != nil { + if _, ok := apiResponse["errorcode"]; ok { + return nil, fmt.Errorf("(HTTP %v, error code %v) %v", apiResponse["errorcode"], apiResponse["cserrorcode"], apiResponse["errortext"]) + } + return apiResponse, nil + } + + return nil, errors.New("failed to decode response") +} + +// we can implement further conditions to do POST or GET (or other http commands) here +func executeRequest(r *Request, requestURL string, params url.Values) (*http.Response, error) { + config.SetupContext(r.Config) + if params.Has("password") || params.Has("userdata") || r.Config.Core.PostRequest { + requestURL = r.Config.ActiveProfile.URL + config.Debug("Using HTTP POST for the request: ", requestURL) + return r.Client().PostForm(requestURL, params) + } + config.Debug("Using HTTP GET for the request: ", requestURL) + req, _ := http.NewRequestWithContext(*r.Config.Context, "GET", requestURL, nil) + return r.Client().Do(req) +} diff --git a/cmd/output.go b/cmd/output.go new file mode 100644 index 00000000..79f39009 --- /dev/null +++ b/cmd/output.go @@ -0,0 +1,314 @@ +// Licensed to the Apache Software Foundation (ASF) under one +// or more contributor license agreements. See the NOTICE file +// distributed with this work for additional information +// regarding copyright ownership. The ASF licenses this file +// to you under the Apache License, Version 2.0 (the +// "License"); you may not use this file except in compliance +// with the License. You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, +// software distributed under the License is distributed on an +// "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY +// KIND, either express or implied. See the License for the +// specific language governing permissions and limitations +// under the License. + +package cmd + +import ( + "encoding/csv" + "encoding/json" + "fmt" + "os" + "reflect" + "sort" + "strings" + "text/tabwriter" + + "github.com/apache/cloudstack-cloudmonkey/config" + "github.com/olekukonko/tablewriter" +) + +func jsonify(value interface{}, format string) string { + if value == nil { + return "" + } + if reflect.TypeOf(value).Kind() == reflect.Map || reflect.TypeOf(value).Kind() == reflect.Slice { + var jsonStr []byte + var err error + if format == "text" { + jsonStr, err = json.MarshalIndent(value, "", "") + } else { + jsonStr, err = json.Marshal(value) + } + if err == nil { + value = string(jsonStr) + } + } + switch value.(type) { + case float64, float32: + return fmt.Sprintf("%.f", value) + default: + return fmt.Sprintf("%v", value) + } +} + +func printJSON(response map[string]interface{}) { + enc := json.NewEncoder(os.Stdout) + enc.SetEscapeHTML(false) + enc.SetIndent("", " ") + enc.Encode(response) +} + +func getItemsFromValue(v interface{}) ([]interface{}, reflect.Kind, bool) { + valueKind := reflect.TypeOf(v).Kind() + if valueKind == reflect.Slice { + sliceItems, ok := v.([]interface{}) + if !ok { + return nil, valueKind, false + } + return sliceItems, valueKind, true + } else if valueKind == reflect.Map { + mapItem, ok := v.(map[string]interface{}) + if !ok { + return nil, valueKind, false + } + return []interface{}{mapItem}, valueKind, true + } + return nil, valueKind, false +} + +func printText(response map[string]interface{}) { + format := "text" + for k, v := range response { + valueType := reflect.TypeOf(v) + if valueType.Kind() == reflect.Slice || valueType.Kind() == reflect.Map { + items, _, ok := getItemsFromValue(v) + if ok { + fmt.Printf("%v:\n", k) + for idx, item := range items { + if idx > 0 { + fmt.Println("================================================================================") + } + row, isMap := item.(map[string]interface{}) + if isMap { + for field, value := range row { + fmt.Printf("%s = %v\n", field, jsonify(value, format)) + } + } else { + fmt.Printf("%v\n", item) + } + } + return + } + } + fmt.Printf("%v = %v\n", k, jsonify(v, format)) + } +} + +func printTable(response map[string]interface{}, filter []string) { + format := "table" + table := tablewriter.NewWriter(os.Stdout) + for k, v := range response { + valueType := reflect.TypeOf(v) + if valueType.Kind() == reflect.Slice || valueType.Kind() == reflect.Map { + items, _, ok := getItemsFromValue(v) + if !ok { + continue + } + fmt.Printf("%v:\n", k) + var header []string + for _, item := range items { + row, ok := item.(map[string]interface{}) + if !ok || len(row) < 1 { + continue + } + if len(header) == 0 { + if len(filter) > 0 { + header = filter + } else { + for field := range row { + header = append(header, field) + } + sort.Strings(header) + } + table.SetHeader(header) + } + var rowArray []string + for _, field := range header { + rowArray = append(rowArray, jsonify(row[field], format)) + } + table.Append(rowArray) + } + } else { + fmt.Printf("%v = %v\n", k, v) + } + } + table.Render() +} + +func printColumn(response map[string]interface{}, filter []string) { + format := "column" + w := tabwriter.NewWriter(os.Stdout, 0, 0, 3, ' ', tabwriter.DiscardEmptyColumns) + for _, v := range response { + valueType := reflect.TypeOf(v) + if valueType.Kind() == reflect.Slice || valueType.Kind() == reflect.Map { + items, _, ok := getItemsFromValue(v) + if !ok { + continue + } + var header []string + for idx, item := range items { + row, ok := item.(map[string]interface{}) + if !ok || len(row) < 1 { + continue + } + + if idx == 0 { + if len(filter) > 0 { + header = filter + } else { + for rk := range row { + header = append(header, strings.ToUpper(rk)) + } + sort.Strings(header) + } + fmt.Fprintln(w, strings.Join(header, "\t")) + } + var values []string + for _, key := range header { + values = append(values, jsonify(row[strings.ToLower(key)], format)) + } + fmt.Fprintln(w, strings.Join(values, "\t")) + } + } + } + w.Flush() +} + +func printCsv(response map[string]interface{}, filter []string) { + format := "csv" + enc := csv.NewWriter(os.Stdout) + for _, v := range response { + valueType := reflect.TypeOf(v) + if valueType.Kind() == reflect.Slice || valueType.Kind() == reflect.Map { + items, _, ok := getItemsFromValue(v) + if !ok { + continue + } + var header []string + for idx, item := range items { + row, ok := item.(map[string]interface{}) + if !ok || len(row) < 1 { + continue + } + + if idx == 0 { + if len(filter) > 0 { + header = filter + } else { + for rk := range row { + header = append(header, rk) + } + sort.Strings(header) + } + enc.Write(header) + } + var values []string + for _, key := range header { + values = append(values, jsonify(row[key], format)) + } + enc.Write(values) + } + } + } + enc.Flush() +} + +func filterResponse(response map[string]interface{}, filter []string, excludeFilter []string, outputType string) map[string]interface{} { + if len(filter) == 0 && len(excludeFilter) == 0 { + return response + } + + excludeSet := make(map[string]struct{}, len(excludeFilter)) + for _, key := range excludeFilter { + excludeSet[key] = struct{}{} + } + + filterSet := make(map[string]struct{}, len(filter)) + for _, key := range filter { + filterSet[key] = struct{}{} + } + + filteredResponse := make(map[string]interface{}) + + for key, value := range response { + valueType := reflect.TypeOf(value) + if valueType.Kind() == reflect.Slice || valueType.Kind() == reflect.Map { + items, originalKind, ok := getItemsFromValue(value) + if !ok { + continue + } + var filteredRows []interface{} + for _, item := range items { + row, ok := item.(map[string]interface{}) + if !ok || len(row) == 0 { + continue + } + + filteredRow := make(map[string]interface{}) + + if len(filter) > 0 { + // Include only keys that exist in filterSet + for filterKey := range filterSet { + if val, exists := row[filterKey]; exists { + filteredRow[filterKey] = val + } else if outputType == config.COLUMN || outputType == config.CSV || outputType == config.TABLE { + filteredRow[filterKey] = "" // Ensure all filter keys exist in row + } + } + } else { + // Exclude keys from excludeFilter + for field, val := range row { + if _, excluded := excludeSet[field]; !excluded { + filteredRow[field] = val + } + } + } + + filteredRows = append(filteredRows, filteredRow) + } + if originalKind == reflect.Map && len(filteredRows) > 0 { + filteredResponse[key] = filteredRows[0] + } else { + filteredResponse[key] = filteredRows + } + } else { + filteredResponse[key] = value + } + } + + return filteredResponse +} + +func printResult(outputType string, response map[string]interface{}, filter []string, excludeFilter []string) { + response = filterResponse(response, filter, excludeFilter, outputType) + switch outputType { + case config.JSON: + printJSON(response) + case config.TEXT: + printText(response) + case config.COLUMN: + printColumn(response, filter) + case config.CSV: + printCsv(response, filter) + case config.TABLE: + printTable(response, filter) + case config.DEFAULT: + printJSON(response) + default: + fmt.Println("Invalid output type configured, please fix that!") + } +} diff --git a/cmd/request.go b/cmd/request.go new file mode 100644 index 00000000..fc916800 --- /dev/null +++ b/cmd/request.go @@ -0,0 +1,47 @@ +// Licensed to the Apache Software Foundation (ASF) under one +// or more contributor license agreements. See the NOTICE file +// distributed with this work for additional information +// regarding copyright ownership. The ASF licenses this file +// to you under the Apache License, Version 2.0 (the +// "License"); you may not use this file except in compliance +// with the License. You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, +// software distributed under the License is distributed on an +// "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY +// KIND, either express or implied. See the License for the +// specific language governing permissions and limitations +// under the License. + +package cmd + +import ( + "net/http" + + "github.com/apache/cloudstack-cloudmonkey/config" +) + +// Request describes a command request +type Request struct { + Command *Command + Config *config.Config + Args []string + CredentialsSupplied bool +} + +// Client method returns the http Client for the current server profile +func (r *Request) Client() *http.Client { + return r.Config.ActiveProfile.Client +} + +// NewRequest creates a new request from a command +func NewRequest(cmd *Command, cfg *config.Config, args []string, credentialsSupplied bool) *Request { + return &Request{ + Command: cmd, + Config: cfg, + Args: args, + CredentialsSupplied: credentialsSupplied, + } +} diff --git a/cmd/set.go b/cmd/set.go new file mode 100644 index 00000000..c8bba8af --- /dev/null +++ b/cmd/set.go @@ -0,0 +1,86 @@ +// Licensed to the Apache Software Foundation (ASF) under one +// or more contributor license agreements. See the NOTICE file +// distributed with this work for additional information +// regarding copyright ownership. The ASF licenses this file +// to you under the Apache License, Version 2.0 (the +// "License"); you may not use this file except in compliance +// with the License. You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, +// software distributed under the License is distributed on an +// "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY +// KIND, either express or implied. See the License for the +// specific language governing permissions and limitations +// under the License. + +package cmd + +import ( + "errors" + "fmt" + "reflect" + "strings" + + "github.com/apache/cloudstack-cloudmonkey/config" +) + +func init() { + AddCommand(&Command{ + Name: "set", + Help: "Configures options for cmk", + SubCommands: map[string][]string{ + "prompt": {"🐵", "🐱", "random"}, + "asyncblock": {"true", "false"}, + "timeout": {"600", "1800", "3600"}, + "output": config.GetOutputFormats(), + "profile": {}, + "url": {}, + "username": {}, + "password": {}, + "domain": {}, + "apikey": {}, + "secretkey": {}, + "verifycert": {"true", "false"}, + "debug": {"true", "false"}, + "autocomplete": {"true", "false"}, + "postrequest": {"true", "false"}, + }, + Handle: func(r *Request) error { + if len(r.Args) < 1 { + fmt.Println("Please provide one of the sub-commands: ", reflect.ValueOf(r.Command.SubCommands).MapKeys()) + return nil + } + subCommand := r.Args[0] + value := strings.Trim(strings.Join(r.Args[1:], " "), " ") + config.Debug("Set command received:", subCommand, " values:", value) + if r.Args[len(r.Args)-1] == "-h" { + fmt.Println("Usage: set