mirror of https://github.com/apache/cloudstack.git
Merge branch '4.22' of https://github.com/apache/cloudstack into veeam-counter-fix
This commit is contained in:
commit
d1d6ab1548
|
|
@ -59,6 +59,7 @@ github:
|
|||
- abh1sar
|
||||
- rosi-shapeblue
|
||||
- sudo87
|
||||
- erikbocks
|
||||
|
||||
protected_branches: ~
|
||||
|
||||
|
|
|
|||
|
|
@ -18,9 +18,6 @@
|
|||
# MD001/heading-increment Heading levels should only increment by one level at a time
|
||||
MD001: false
|
||||
|
||||
# MD003/heading-style Heading style
|
||||
MD003: false
|
||||
|
||||
# MD004/ul-style Unordered list style
|
||||
MD004: false
|
||||
|
||||
|
|
|
|||
|
|
@ -375,6 +375,7 @@ propogate
|
|||
provison
|
||||
psudo
|
||||
pyhsical
|
||||
re-use
|
||||
readabilty
|
||||
readd
|
||||
reccuring
|
||||
|
|
@ -411,7 +412,6 @@ retriving
|
|||
retrun
|
||||
retuned
|
||||
returing
|
||||
re-use
|
||||
rever
|
||||
rocessor
|
||||
runing
|
||||
|
|
|
|||
|
|
@ -30,17 +30,17 @@ jobs:
|
|||
build:
|
||||
runs-on: ubuntu-22.04
|
||||
steps:
|
||||
- uses: actions/checkout@v4
|
||||
- uses: actions/checkout@v5
|
||||
|
||||
- name: Set up JDK 17
|
||||
uses: actions/setup-java@v4
|
||||
uses: actions/setup-java@v5
|
||||
with:
|
||||
distribution: 'temurin'
|
||||
java-version: '17'
|
||||
cache: 'maven'
|
||||
|
||||
- name: Set up Python
|
||||
uses: actions/setup-python@v5
|
||||
uses: actions/setup-python@v6
|
||||
with:
|
||||
python-version: '3.10'
|
||||
architecture: 'x64'
|
||||
|
|
|
|||
|
|
@ -29,7 +29,7 @@ permissions:
|
|||
jobs:
|
||||
build:
|
||||
if: github.repository == 'apache/cloudstack'
|
||||
runs-on: ubuntu-22.04
|
||||
runs-on: ubuntu-24.04
|
||||
|
||||
strategy:
|
||||
fail-fast: false
|
||||
|
|
@ -216,19 +216,19 @@ jobs:
|
|||
smoke/test_list_volumes"]
|
||||
|
||||
steps:
|
||||
- uses: actions/checkout@v4
|
||||
- uses: actions/checkout@v5
|
||||
with:
|
||||
fetch-depth: 0
|
||||
|
||||
- name: Set up JDK 17
|
||||
uses: actions/setup-java@v4
|
||||
uses: actions/setup-java@v5
|
||||
with:
|
||||
distribution: 'temurin'
|
||||
java-version: '17'
|
||||
cache: 'maven'
|
||||
|
||||
- name: Set up Python
|
||||
uses: actions/setup-python@v5
|
||||
uses: actions/setup-python@v6
|
||||
with:
|
||||
python-version: '3.10'
|
||||
architecture: 'x64'
|
||||
|
|
@ -236,7 +236,25 @@ jobs:
|
|||
- name: Install Build Dependencies
|
||||
run: |
|
||||
sudo apt-get update
|
||||
sudo apt-get install -y git uuid-runtime genisoimage netcat ipmitool build-essential libgcrypt20 libgpg-error-dev libgpg-error0 libopenipmi0 ipmitool libpython3-dev libssl-dev libffi-dev python3-openssl python3-dev python3-setuptools
|
||||
sudo apt-get install -y git uuid-runtime genisoimage netcat-openbsd ipmitool build-essential libgcrypt20 libgpg-error-dev libgpg-error0 libopenipmi0 ipmitool libpython3-dev libssl-dev libffi-dev python3-openssl python3-dev python3-setuptools
|
||||
|
||||
- name: Setup IPMI Tool for CloudStack
|
||||
run: |
|
||||
# Create cloudstack-common directory if it doesn't exist
|
||||
sudo mkdir -p /usr/share/cloudstack-common
|
||||
|
||||
# Copy ipmitool to cloudstack-common directory if it doesn't exist
|
||||
if [ ! -f /usr/share/cloudstack-common/ipmitool ]; then
|
||||
sudo cp /usr/bin/ipmitool /usr/share/cloudstack-common/ipmitool
|
||||
sudo chmod 755 /usr/share/cloudstack-common/ipmitool
|
||||
fi
|
||||
|
||||
# Create ipmitool-C3 wrapper script
|
||||
sudo tee /usr/bin/ipmitool > /dev/null << 'EOF'
|
||||
#!/bin/bash
|
||||
/usr/share/cloudstack-common/ipmitool -C3 $@
|
||||
EOF
|
||||
sudo chmod 755 /usr/bin/ipmitool
|
||||
|
||||
- name: Install Python dependencies
|
||||
run: |
|
||||
|
|
@ -275,7 +293,7 @@ jobs:
|
|||
- name: Setup Simulator Prerequisites
|
||||
run: |
|
||||
sudo python3 -m pip install --upgrade netaddr mysql-connector-python
|
||||
python3 -m pip install --user --upgrade tools/marvin/dist/Marvin-*.tar.gz
|
||||
python3 -m pip install --user --upgrade tools/marvin/dist/[mM]arvin-*.tar.gz
|
||||
mvn -q -Pdeveloper -pl developer -Ddeploydb
|
||||
mvn -q -Pdeveloper -pl developer -Ddeploydb-simulator
|
||||
|
||||
|
|
|
|||
|
|
@ -32,12 +32,12 @@ jobs:
|
|||
name: codecov
|
||||
runs-on: ubuntu-22.04
|
||||
steps:
|
||||
- uses: actions/checkout@v4
|
||||
- uses: actions/checkout@v5
|
||||
with:
|
||||
fetch-depth: 0
|
||||
|
||||
- name: Set up JDK 17
|
||||
uses: actions/setup-java@v4
|
||||
uses: actions/setup-java@v5
|
||||
with:
|
||||
distribution: 'temurin'
|
||||
java-version: '17'
|
||||
|
|
|
|||
|
|
@ -35,7 +35,7 @@ jobs:
|
|||
language: ["actions"]
|
||||
steps:
|
||||
- name: Checkout repository
|
||||
uses: actions/checkout@v4
|
||||
uses: actions/checkout@v5
|
||||
- name: Initialize CodeQL
|
||||
uses: github/codeql-action/init@v3
|
||||
with:
|
||||
|
|
|
|||
|
|
@ -47,7 +47,7 @@ jobs:
|
|||
- name: Set Docker repository name
|
||||
run: echo "DOCKER_REPOSITORY=apache" >> $GITHUB_ENV
|
||||
|
||||
- uses: actions/checkout@v4
|
||||
- uses: actions/checkout@v5
|
||||
|
||||
- name: Set ACS version
|
||||
run: echo "ACS_VERSION=$(grep '<version>' pom.xml | head -2 | tail -1 | cut -d'>' -f2 |cut -d'<' -f1)" >> $GITHUB_ENV
|
||||
|
|
|
|||
|
|
@ -0,0 +1,16 @@
|
|||
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.
|
||||
|
|
@ -32,7 +32,7 @@ jobs:
|
|||
runs-on: ubuntu-22.04
|
||||
steps:
|
||||
- name: Check Out
|
||||
uses: actions/checkout@v4
|
||||
uses: actions/checkout@v5
|
||||
- name: Install
|
||||
run: |
|
||||
python -m pip install --upgrade pip
|
||||
|
|
@ -45,3 +45,5 @@ jobs:
|
|||
key: pre-commit|${{ env.PY }}|${{ hashFiles('.pre-commit-config.yaml') }}
|
||||
- name: Run pre-commit
|
||||
run: pre-commit run --all-files
|
||||
- name: Run manual pre-commit hooks
|
||||
run: pre-commit run --all-files --hook-stage manual
|
||||
|
|
|
|||
|
|
@ -32,12 +32,12 @@ jobs:
|
|||
name: Main Sonar JaCoCo Build
|
||||
runs-on: ubuntu-22.04
|
||||
steps:
|
||||
- uses: actions/checkout@v4
|
||||
- uses: actions/checkout@v5
|
||||
with:
|
||||
fetch-depth: 0
|
||||
|
||||
- name: Set up JDK17
|
||||
uses: actions/setup-java@v4
|
||||
uses: actions/setup-java@v5
|
||||
with:
|
||||
distribution: 'temurin'
|
||||
java-version: '17'
|
||||
|
|
|
|||
|
|
@ -30,9 +30,9 @@ jobs:
|
|||
build:
|
||||
runs-on: ubuntu-22.04
|
||||
steps:
|
||||
- uses: actions/checkout@v4
|
||||
- uses: actions/checkout@v5
|
||||
- name: Set up JDK 17
|
||||
uses: actions/setup-java@v4
|
||||
uses: actions/setup-java@v5
|
||||
with:
|
||||
java-version: '17'
|
||||
distribution: 'adopt'
|
||||
|
|
|
|||
|
|
@ -33,13 +33,13 @@ jobs:
|
|||
name: Sonar JaCoCo Coverage
|
||||
runs-on: ubuntu-22.04
|
||||
steps:
|
||||
- uses: actions/checkout@v4
|
||||
- uses: actions/checkout@v5
|
||||
with:
|
||||
ref: "refs/pull/${{ github.event.number }}/merge"
|
||||
fetch-depth: 0
|
||||
|
||||
- name: Set up JDK17
|
||||
uses: actions/setup-java@v4
|
||||
uses: actions/setup-java@v5
|
||||
with:
|
||||
distribution: 'temurin'
|
||||
java-version: '17'
|
||||
|
|
|
|||
|
|
@ -31,10 +31,10 @@ jobs:
|
|||
runs-on: ubuntu-22.04
|
||||
|
||||
steps:
|
||||
- uses: actions/checkout@v4
|
||||
- uses: actions/checkout@v5
|
||||
|
||||
- name: Set up Node
|
||||
uses: actions/setup-node@v3
|
||||
uses: actions/setup-node@v5
|
||||
with:
|
||||
node-version: 16
|
||||
|
||||
|
|
|
|||
|
|
@ -0,0 +1 @@
|
|||
CHANGES.md
|
||||
|
|
@ -25,18 +25,39 @@ repos:
|
|||
hooks:
|
||||
- id: identity
|
||||
- id: check-hooks-apply
|
||||
- repo: https://github.com/oxipng/oxipng
|
||||
rev: v9.1.5
|
||||
hooks:
|
||||
- id: oxipng
|
||||
name: run oxipng
|
||||
description: optimize PNG images with lossless compression
|
||||
args: ['-o', '4', '--strip', 'safe', '--alpha']
|
||||
- repo: https://github.com/gitleaks/gitleaks
|
||||
rev: v8.27.2
|
||||
hooks:
|
||||
- id: gitleaks
|
||||
name: run gitleaks
|
||||
description: detect hardcoded secrets
|
||||
- repo: https://github.com/Lucas-C/pre-commit-hooks
|
||||
rev: v1.5.5
|
||||
hooks:
|
||||
- id: insert-license
|
||||
name: add license for all Markdown files
|
||||
files: \.md$
|
||||
args:
|
||||
- --comment-style
|
||||
- '<!--|| -->'
|
||||
- --license-filepath
|
||||
- .github/workflows/license-templates/LICENSE.txt
|
||||
- --fuzzy-match-generates-todo
|
||||
exclude: ^(CHANGES|ISSUE_TEMPLATE|PULL_REQUEST_TEMPLATE)\.md$|^ui/docs/(full|smoke)-test-plan\.template\.md$
|
||||
- repo: https://github.com/pre-commit/pre-commit-hooks
|
||||
rev: v5.0.0
|
||||
rev: v6.0.0
|
||||
hooks:
|
||||
#- id: check-added-large-files
|
||||
- id: check-case-conflict
|
||||
#- id: check-executables-have-shebangs
|
||||
- id: check-illegal-windows-names
|
||||
- id: check-merge-conflict
|
||||
- id: check-shebang-scripts-are-executable
|
||||
files: \.sh$
|
||||
|
|
@ -50,7 +71,7 @@ repos:
|
|||
exclude: >
|
||||
(?x)
|
||||
^scripts/vm/systemvm/id_rsa\.cloud$|
|
||||
^server/src/test/java/org/apache/cloudstack/network/ssl/CertServiceTest.java$|
|
||||
^server/src/test/java/org/apache/cloudstack/network/ssl/CertServiceTest\.java$|
|
||||
^server/src/test/java/com/cloud/keystore/KeystoreTest\.java$|
|
||||
^server/src/test/resources/certs/dsa_self_signed\.key$|
|
||||
^server/src/test/resources/certs/non_root\.key$|
|
||||
|
|
@ -61,13 +82,15 @@ repos:
|
|||
^services/console-proxy/rdpconsole/src/test/doc/rdp-key\.pem$|
|
||||
^systemvm/agent/certs/localhost\.key$|
|
||||
^systemvm/agent/certs/realhostip\.key$|
|
||||
^test/integration/smoke/test_ssl_offloading.py$
|
||||
^test/integration/smoke/test_ssl_offloading\.py$
|
||||
- id: end-of-file-fixer
|
||||
exclude: \.vhd$
|
||||
- id: file-contents-sorter
|
||||
args: [--unique]
|
||||
files: ^\.github/linters/codespell\.txt$
|
||||
- id: fix-byte-order-marker
|
||||
- id: forbid-submodules
|
||||
- id: mixed-line-ending
|
||||
exclude: \.cs$
|
||||
- id: trailing-whitespace
|
||||
files: \.(bat|cfg|cs|css|gitignore|header|in|install|java|md|properties|py|rb|rc|sh|sql|te|template|txt|ucls|vue|xml|xsl|yaml|yml)$|^cloud-cli/bindir/cloud-tool$|^debian/changelog$
|
||||
args: [--markdown-linebreak-ext=md]
|
||||
|
|
@ -94,6 +117,14 @@ repos:
|
|||
args: [--config=.github/linters/.markdown-lint.yml]
|
||||
types: [markdown]
|
||||
files: \.(md|mdown|markdown)$
|
||||
- repo: https://github.com/Lucas-C/pre-commit-hooks
|
||||
rev: v1.5.5
|
||||
hooks:
|
||||
- id: chmod
|
||||
name: set file permissions
|
||||
args: ['644']
|
||||
files: \.md$
|
||||
stages: [manual]
|
||||
- repo: https://github.com/adrienverge/yamllint
|
||||
rev: v1.37.1
|
||||
hooks:
|
||||
|
|
|
|||
|
|
@ -1,31 +1,47 @@
|
|||
Contributing to Apache CloudStack (ACS)
|
||||
=======================================
|
||||
<!--
|
||||
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.
|
||||
-->
|
||||
|
||||
# Contributing to Apache CloudStack (ACS)
|
||||
|
||||
## Summary
|
||||
|
||||
Summary
|
||||
-------
|
||||
This document covers how to contribute to the ACS project. ACS uses GitHub PRs to manage code contributions.
|
||||
These instructions assume you have a GitHub.com account, so if you don't have one you will have to create one. Your proposed code changes will be published to your own fork of the ACS project, and you will submit a Pull Request for your changes to be added.
|
||||
|
||||
_Let's get started!!!_
|
||||
|
||||
Bug fixes
|
||||
---------
|
||||
## Bug fixes
|
||||
|
||||
It's very important that we can easily track bug fix commits, so their hashes should remain the same in all branches.
|
||||
Therefore, a pull request (PR) that fixes a bug, should be sent against a release branch.
|
||||
This can be either the "current release" or the "previous release", depending on which ones are maintained.
|
||||
Since the goal is a stable main, bug fixes should be "merged forward" to the next branch in order: "previous release" -> "current release" -> main (in other words: old to new)
|
||||
|
||||
Developing new features
|
||||
-----------------------
|
||||
## Developing new features
|
||||
|
||||
Development should be done in a feature branch, branched off of main.
|
||||
Send a PR(steps below) to get it into main (2x LGTM applies).
|
||||
PR will only be merged when main is open, will be held otherwise until main is open again.
|
||||
No back porting / cherry-picking features to existing branches!
|
||||
|
||||
PendingReleaseNotes file
|
||||
------------------------
|
||||
## PendingReleaseNotes file
|
||||
|
||||
When developing a new feature or making a (major) change to an existing feature you are encouraged to append this to the PendingReleaseNotes file so that the Release Manager can
|
||||
use this file as a source of information when compiling the Release Notes for a new release.
|
||||
|
||||
|
|
@ -33,8 +49,7 @@ When adding information to the PendingReleaseNotes file make sure that you write
|
|||
|
||||
Updating the PendingReleaseNotes file is preferably a part of the original Pull Request, but that is up to the developers' discretion.
|
||||
|
||||
Fork the code
|
||||
-------------
|
||||
## Fork the code
|
||||
|
||||
In your browser, navigate to: [https://github.com/apache/cloudstack](https://github.com/apache/cloudstack)
|
||||
|
||||
|
|
@ -51,8 +66,7 @@ $ git fetch upstream
|
|||
$ git rebase upstream/main
|
||||
```
|
||||
|
||||
Making changes
|
||||
--------------
|
||||
## Making changes
|
||||
|
||||
It is important that you create a new branch to make changes on and that you do not change the `main` branch (other than to rebase in changes from `upstream/main`). In this example I will assume you will be making your changes to a branch called `feature_x`. This `feature_x` branch will be created on your local repository and will be pushed to your forked repository on GitHub. Once this branch is on your fork you will create a Pull Request for the changes to be added to the ACS project.
|
||||
|
||||
|
|
@ -68,8 +82,7 @@ $ git commit -a -m "descriptive commit message for your changes"
|
|||
|
||||
> The `-b` specifies that you want to create a new branch called `feature_x`. You only specify `-b` the first time you checkout because you are creating a new branch. Once the `feature_x` branch exists, you can later switch to it with only `git checkout feature_x`.
|
||||
|
||||
Rebase `feature_x` to include updates from `upstream/main`
|
||||
------------------------------------------------------------
|
||||
## Rebase `feature_x` to include updates from `upstream/main`
|
||||
|
||||
It is important that you maintain an up-to-date `main` branch in your local repository. This is done by rebasing in the code changes from `upstream/main` (the official ACS project repository) into your local repository. You will want to do this before you start working on a feature as well as right before you submit your changes as a pull request. I recommend you do this process periodically while you work to make sure you are working off the most recent project code.
|
||||
|
||||
|
|
@ -89,8 +102,7 @@ $ git rebase main
|
|||
|
||||
> Now your `feature_x` branch is up-to-date with all the code in `upstream/main`.
|
||||
|
||||
Make a GitHub Pull Request to contribute your changes
|
||||
-----------------------------------------------------
|
||||
## Make a GitHub Pull Request to contribute your changes
|
||||
|
||||
When you are happy with your changes, and you are ready to contribute them, you will create a Pull Request on GitHub to do so. This is done by pushing your local changes to your forked repository (default remote name is `origin`) and then initiating a pull request on GitHub.
|
||||
|
||||
|
|
@ -114,8 +126,7 @@ To initiate the pull request, do the following:
|
|||
|
||||
If you are requested to make modifications to your proposed changes, make the changes locally on your `feature_x` branch, re-push the `feature_x` branch to your fork. The existing pull request should automatically pick up the change and update accordingly.
|
||||
|
||||
Cleaning up after a successful pull request
|
||||
-------------------------------------------
|
||||
## Cleaning up after a successful pull request
|
||||
|
||||
Once the `feature_x` branch has been committed into the `upstream/main` branch, your local `feature_x` branch and the `origin/feature_x` branch are no longer needed. If you want to make additional changes, restart the process with a new branch.
|
||||
|
||||
|
|
@ -129,6 +140,6 @@ $ git branch -D feature_x
|
|||
$ git push origin :feature_x
|
||||
```
|
||||
|
||||
Release Principles
|
||||
------------------
|
||||
## Release Principles
|
||||
|
||||
Detailed information about ACS release principles is available at https://cwiki.apache.org/confluence/display/CLOUDSTACK/Release+principles+for+Apache+CloudStack+4.6+and+up
|
||||
|
|
|
|||
19
INSTALL.md
19
INSTALL.md
|
|
@ -1,3 +1,22 @@
|
|||
<!--
|
||||
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.
|
||||
-->
|
||||
|
||||
# Apache CloudStack Installation basics
|
||||
|
||||
This document describes how to develop, build, package and install Apache
|
||||
|
|
|
|||
|
|
@ -0,0 +1,62 @@
|
|||
<!--
|
||||
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.
|
||||
-->
|
||||
|
||||
# pre-commit
|
||||
|
||||
We run [pre-commit](https://pre-commit.com/) with
|
||||
[GitHub Actions](https://github.com/apache/cloudstack/blob/main/.github/workflows/linter.yml) so installation on your
|
||||
local machine is currently optional.
|
||||
|
||||
The `pre-commit` [configuration file](https://github.com/apache/cloudstack/blob/main/.pre-commit-config.yaml)
|
||||
is in the repository root. Before you can run the hooks, you need to have `pre-commit` installed. `pre-commit` is a
|
||||
[Python package](https://pypi.org/project/pre-commit/).
|
||||
|
||||
From the repository root run: `pip install -r requirements-dev.txt` to install `pre-commit` and after you install
|
||||
`pre-commit` you will then need to install the pre-commit hooks by running `pre-commit install`.
|
||||
|
||||
The hooks run when running `git commit` and also from the command line with `pre-commit`. Some of the hooks will auto
|
||||
fix the code after the hooks fail whilst most will print error messages from the linters. If a hook fails the overall
|
||||
commit will fail, and you will need to fix the issues or problems and `git add` and `git commit` again. On `git commit`
|
||||
the hooks will run mostly only against modified files so if you want to test all hooks against all files and when you
|
||||
are adding a new hook you should always run:
|
||||
|
||||
`pre-commit run --all-files`
|
||||
|
||||
Sometimes you might need to skip a hook to commit because the hook is stopping you from committing or your computer
|
||||
might not have all the installation requirements for all the hooks. The `SKIP` variable is comma separated for two or
|
||||
more hooks:
|
||||
|
||||
`SKIP=codespell git commit -m "foo"`
|
||||
|
||||
The same applies when running pre-commit:
|
||||
|
||||
`SKIP=codespell pre-commit run --all-files`
|
||||
|
||||
Occasionally you can have more serious problems when using `pre-commit` with `git commit`. You can use `--no-verify` to
|
||||
commit and stop `pre-commit` from checking the hooks. For example:
|
||||
|
||||
`git commit --no-verify -m "foo"`
|
||||
|
||||
If you are having major problems using `pre-commit` you can always uninstall it.
|
||||
|
||||
To run a single hook use `pre-commit run --all-files <hook_id>`
|
||||
|
||||
For example just run the `codespell` hook:
|
||||
|
||||
`pre-commit run --all-files codespell`
|
||||
19
README.md
19
README.md
|
|
@ -1,3 +1,22 @@
|
|||
<!--
|
||||
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.
|
||||
-->
|
||||
|
||||
# Apache CloudStack
|
||||
|
||||
[](https://github.com/apache/cloudstack/actions/workflows/build.yml)
|
||||
|
|
|
|||
|
|
@ -451,3 +451,9 @@ iscsi.session.cleanup.enabled=false
|
|||
|
||||
# If set to true, creates VMs as full clones of their templates on KVM hypervisor. Creates as linked clones otherwise.
|
||||
# create.full.clone=false
|
||||
|
||||
# Instance conversion TMPDIR env var
|
||||
#convert.instance.env.tmpdir=
|
||||
|
||||
# Instance conversion VIRT_V2V_TMPDIR env var
|
||||
#convert.instance.env.virtv2v.tmpdir=
|
||||
|
|
|
|||
|
|
@ -0,0 +1,24 @@
|
|||
# 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.
|
||||
|
||||
# Configuration file for UEFI
|
||||
|
||||
guest.nvram.template.legacy=@GUESTNVRAMTEMPLATELEGACY@
|
||||
guest.loader.legacy=@GUESTLOADERLEGACY@
|
||||
guest.nvram.template.secure=@GUESTNVRAMTEMPLATESECURE@
|
||||
guest.loader.secure=@GUESTLOADERSECURE@
|
||||
guest.nvram.path=@GUESTNVRAMPATH@
|
||||
|
|
@ -24,7 +24,7 @@
|
|||
<parent>
|
||||
<groupId>org.apache.cloudstack</groupId>
|
||||
<artifactId>cloudstack</artifactId>
|
||||
<version>4.22.0.0-SNAPSHOT</version>
|
||||
<version>4.22.1.0-SNAPSHOT</version>
|
||||
</parent>
|
||||
<dependencies>
|
||||
<dependency>
|
||||
|
|
|
|||
|
|
@ -613,7 +613,7 @@ public class Agent implements HandlerFactory, IAgentControl, AgentStatusUpdater
|
|||
}
|
||||
|
||||
protected String getAgentArch() {
|
||||
String arch = Script.runSimpleBashScript(Script.getExecutableAbsolutePath("arch"), 1000);
|
||||
String arch = Script.runSimpleBashScript(Script.getExecutableAbsolutePath("arch"), 2000);
|
||||
logger.debug("Arch for agent: {} found: {}", _name, arch);
|
||||
return arch;
|
||||
}
|
||||
|
|
@ -1332,13 +1332,14 @@ public class Agent implements HandlerFactory, IAgentControl, AgentStatusUpdater
|
|||
}
|
||||
} else if (task.getType() == Task.Type.DISCONNECT) {
|
||||
try {
|
||||
// an issue has been found if reconnect immediately after disconnecting. please refer to https://github.com/apache/cloudstack/issues/8517
|
||||
// an issue has been found if reconnect immediately after disconnecting.
|
||||
// wait 5 seconds before reconnecting
|
||||
logger.debug("Wait for 5 secs before reconnecting, disconnect task - {}", () -> getLinkLog(task.getLink()));
|
||||
Thread.sleep(5000);
|
||||
} catch (InterruptedException e) {
|
||||
}
|
||||
shell.setConnectionTransfer(false);
|
||||
logger.debug("Executing disconnect task - {}", () -> getLinkLog(task.getLink()));
|
||||
logger.debug("Executing disconnect task - {} and reconnecting", () -> getLinkLog(task.getLink()));
|
||||
reconnect(task.getLink());
|
||||
} else if (task.getType() == Task.Type.OTHER) {
|
||||
processOtherTask(task);
|
||||
|
|
|
|||
|
|
@ -794,6 +794,20 @@ public class AgentProperties{
|
|||
*/
|
||||
public static final Property<Boolean> VIRTV2V_VERBOSE_ENABLED = new Property<>("virtv2v.verbose.enabled", false);
|
||||
|
||||
/**
|
||||
* Set env TMPDIR var for virt-v2v Instance Conversion from VMware to KVM
|
||||
* Data type: String.<br>
|
||||
* Default value: <code>null</code>
|
||||
*/
|
||||
public static final Property<String> CONVERT_ENV_TMPDIR = new Property<>("convert.instance.env.tmpdir", null, String.class);
|
||||
|
||||
/**
|
||||
* Set env VIRT_V2V_TMPDIR var for virt-v2v Instance Conversion from VMware to KVM
|
||||
* Data type: String.<br>
|
||||
* Default value: <code>null</code>
|
||||
*/
|
||||
public static final Property<String> CONVERT_ENV_VIRTV2V_TMPDIR = new Property<>("convert.instance.env.virtv2v.tmpdir", null, String.class);
|
||||
|
||||
/**
|
||||
* BGP controll CIDR
|
||||
* Data type: String.<br>
|
||||
|
|
|
|||
|
|
@ -175,12 +175,12 @@ public class ConsoleProxyResource extends ServerResourceBase implements ServerRe
|
|||
try {
|
||||
is.close();
|
||||
} catch (final IOException e) {
|
||||
logger.warn("Exception when closing , console proxy address : {}", proxyManagementIp);
|
||||
logger.warn("Exception when closing , console proxy address: {}", proxyManagementIp);
|
||||
success = false;
|
||||
}
|
||||
}
|
||||
} catch (final IOException e) {
|
||||
logger.warn("Unable to open console proxy command port url, console proxy address : {}", proxyManagementIp);
|
||||
logger.warn("Unable to open console proxy command port url, console proxy address: {}", proxyManagementIp);
|
||||
success = false;
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -24,7 +24,7 @@
|
|||
<parent>
|
||||
<groupId>org.apache.cloudstack</groupId>
|
||||
<artifactId>cloudstack</artifactId>
|
||||
<version>4.22.0.0-SNAPSHOT</version>
|
||||
<version>4.22.1.0-SNAPSHOT</version>
|
||||
</parent>
|
||||
<dependencies>
|
||||
<dependency>
|
||||
|
|
|
|||
|
|
@ -278,8 +278,8 @@ public class OVFHelper {
|
|||
if (StringUtils.isNotBlank(path)) {
|
||||
File f = new File(path);
|
||||
if (!f.exists() || f.isDirectory()) {
|
||||
logger.error("One of the attached disk or iso does not exists " + path);
|
||||
throw new InternalErrorException("One of the attached disk or iso as stated on OVF does not exists " + path);
|
||||
logger.error("One of the attached disk or ISO does not exists " + path);
|
||||
throw new InternalErrorException("One of the attached disk or ISO as stated on OVF does not exists " + path);
|
||||
}
|
||||
}
|
||||
Long capacity = disk != null ? disk._capacity : file._size;
|
||||
|
|
@ -335,7 +335,7 @@ public class OVFHelper {
|
|||
vd.add(od);
|
||||
}
|
||||
if (logger.isTraceEnabled()) {
|
||||
logger.trace(String.format("found %d disk definitions",vd.size()));
|
||||
logger.trace(String.format("Found %d disk definitions", vd.size()));
|
||||
}
|
||||
return vd;
|
||||
}
|
||||
|
|
@ -367,7 +367,7 @@ public class OVFHelper {
|
|||
}
|
||||
}
|
||||
if (logger.isTraceEnabled()) {
|
||||
logger.trace(String.format("found %d file definitions in %s",vf.size(), ovfFile.getPath()));
|
||||
logger.trace(String.format("Found %d file definitions in %s", vf.size(), ovfFile.getPath()));
|
||||
}
|
||||
return vf;
|
||||
}
|
||||
|
|
@ -523,7 +523,7 @@ public class OVFHelper {
|
|||
public List<OVFNetworkTO> getNetPrerequisitesFromDocument(Document doc) throws InternalErrorException {
|
||||
if (doc == null) {
|
||||
if (logger.isTraceEnabled()) {
|
||||
logger.trace("no document to parse; returning no prerequisite networks");
|
||||
logger.trace("No document to parse; returning no prerequisite Networks");
|
||||
}
|
||||
return Collections.emptyList();
|
||||
}
|
||||
|
|
@ -541,7 +541,7 @@ public class OVFHelper {
|
|||
final DocumentTraversal traversal = (DocumentTraversal) systemElement;
|
||||
final NodeIterator iterator = traversal.createNodeIterator(systemElement, NodeFilter.SHOW_ELEMENT, null, true);
|
||||
if (logger.isTraceEnabled()) {
|
||||
logger.trace(String.format("starting out with %d network-prerequisites, parsing hardware",nets.size()));
|
||||
logger.trace(String.format("Starting out with %d network-prerequisites, parsing hardware",nets.size()));
|
||||
}
|
||||
int nicCount = 0;
|
||||
for (Node n = iterator.nextNode(); n != null; n = iterator.nextNode()) {
|
||||
|
|
@ -551,7 +551,7 @@ public class OVFHelper {
|
|||
String name = e.getTextContent(); // should be in our nets
|
||||
if(nets.get(name) == null) {
|
||||
if(logger.isInfoEnabled()) {
|
||||
logger.info(String.format("found a nic definition without a network definition byname %s, adding it to the list.", name));
|
||||
logger.info(String.format("Found a NIC definition without a Network definition by name %s, adding it to the list.", name));
|
||||
}
|
||||
nets.put(name, new OVFNetworkTO());
|
||||
}
|
||||
|
|
@ -562,7 +562,7 @@ public class OVFHelper {
|
|||
}
|
||||
}
|
||||
if (logger.isTraceEnabled()) {
|
||||
logger.trace(String.format("ending up with %d network-prerequisites, parsed %d nics", nets.size(), nicCount));
|
||||
logger.trace(String.format("Ending up with %d network-prerequisites, parsed %d NICs", nets.size(), nicCount));
|
||||
}
|
||||
}
|
||||
|
||||
|
|
@ -631,7 +631,7 @@ public class OVFHelper {
|
|||
nets.put(networkName,network);
|
||||
}
|
||||
if (logger.isTraceEnabled()) {
|
||||
logger.trace(String.format("found %d networks in template", nets.size()));
|
||||
logger.trace(String.format("Found %d Networks in Template", nets.size()));
|
||||
}
|
||||
return nets;
|
||||
}
|
||||
|
|
|
|||
|
|
@ -35,10 +35,10 @@ public class ListRecurringSnapshotScheduleCmd extends BaseListCmd {
|
|||
//////////////// API parameters /////////////////////
|
||||
/////////////////////////////////////////////////////
|
||||
|
||||
@Parameter(name = ApiConstants.SNAPSHOT_POLICY_ID, type = CommandType.LONG, description = "lists recurring snapshots by snapshot policy ID")
|
||||
@Parameter(name = ApiConstants.SNAPSHOT_POLICY_ID, type = CommandType.LONG, description = "Lists recurring Snapshots by Snapshot policy ID")
|
||||
private Long snapshotPolicyId;
|
||||
|
||||
@Parameter(name = ApiConstants.VOLUME_ID, type = CommandType.LONG, required = true, description = "list recurring snapshots by volume ID")
|
||||
@Parameter(name = ApiConstants.VOLUME_ID, type = CommandType.LONG, required = true, description = "List recurring Snapshots by volume ID")
|
||||
private Long volumeId;
|
||||
|
||||
/////////////////////////////////////////////////////
|
||||
|
|
|
|||
|
|
@ -172,4 +172,5 @@ public interface KubernetesCluster extends ControlledEntity, com.cloud.utils.fsm
|
|||
Long getEtcdNodeCount();
|
||||
Long getCniConfigId();
|
||||
String getCniConfigDetails();
|
||||
boolean isCsiEnabled();
|
||||
}
|
||||
|
|
|
|||
|
|
@ -45,7 +45,7 @@ public interface Ipv6Service extends PluggableService, Configurable {
|
|||
static final ConfigKey<Boolean> Ipv6OfferingCreationEnabled = new ConfigKey<Boolean>("Advanced", Boolean.class,
|
||||
"ipv6.offering.enabled",
|
||||
"false",
|
||||
"Indicates whether creation of IPv6 network/VPC offering is enabled or not.",
|
||||
"Indicates whether creation of IPv6 Network/VPC offering is enabled or not.",
|
||||
true);
|
||||
|
||||
static final ConfigKey<Integer> Ipv6PrefixSubnetCleanupInterval = new ConfigKey<Integer>("Advanced", Integer.class,
|
||||
|
|
|
|||
|
|
@ -325,9 +325,9 @@ public interface Network extends ControlledEntity, StateObject<Network.State>, I
|
|||
|
||||
public enum State {
|
||||
|
||||
Allocated("Indicates the network configuration is in allocated but not setup"), Setup("Indicates the network configuration is setup"), Implementing(
|
||||
"Indicates the network configuration is being implemented"), Implemented("Indicates the network configuration is in use"), Shutdown(
|
||||
"Indicates the network configuration is being destroyed"), Destroy("Indicates that the network is destroyed");
|
||||
Allocated("Indicates the Network configuration is in allocated but not setup"), Setup("Indicates the Network configuration is setup"), Implementing(
|
||||
"Indicates the Network configuration is being implemented"), Implemented("Indicates the Network configuration is in use"), Shutdown(
|
||||
"Indicates the Network configuration is being destroyed"), Destroy("Indicates that the Network is destroyed");
|
||||
|
||||
protected static final StateMachine2<State, Network.Event, Network> s_fsm = new StateMachine2<State, Network.Event, Network>();
|
||||
|
||||
|
|
|
|||
|
|
@ -81,7 +81,7 @@ public interface NetworkService {
|
|||
true, ConfigKey.Scope.Zone);
|
||||
|
||||
public static final ConfigKey<Boolean> AllowUsersToSpecifyVRMtu = new ConfigKey<>("Advanced", Boolean.class,
|
||||
"allow.end.users.to.specify.vr.mtu", "false", "Allow end users to specify VR MTU",
|
||||
"allow.end.users.to.specify.vr.mtu", "false", "Allow end Users to specify VR MTU",
|
||||
true, ConfigKey.Scope.Zone);
|
||||
|
||||
List<? extends Network> getIsolatedNetworksOwnedByAccountInZone(long zoneId, Account owner);
|
||||
|
|
|
|||
|
|
@ -78,7 +78,7 @@ public class Networks {
|
|||
}
|
||||
@Override
|
||||
public String getValueFrom(URI uri) {
|
||||
return uri.getAuthority();
|
||||
return uri == null ? null : uri.getAuthority();
|
||||
}
|
||||
},
|
||||
Vswitch("vs", String.class), LinkLocal(null, null), Vnet("vnet", Long.class), Storage("storage", Integer.class), Lswitch("lswitch", String.class) {
|
||||
|
|
@ -96,7 +96,7 @@ public class Networks {
|
|||
*/
|
||||
@Override
|
||||
public String getValueFrom(URI uri) {
|
||||
return uri.getSchemeSpecificPart();
|
||||
return uri == null ? null : uri.getSchemeSpecificPart();
|
||||
}
|
||||
},
|
||||
Mido("mido", String.class), Pvlan("pvlan", String.class),
|
||||
|
|
@ -177,7 +177,7 @@ public class Networks {
|
|||
* @return the scheme as BroadcastDomainType
|
||||
*/
|
||||
public static BroadcastDomainType getSchemeValue(URI uri) {
|
||||
return toEnumValue(uri.getScheme());
|
||||
return toEnumValue(uri == null ? null : uri.getScheme());
|
||||
}
|
||||
|
||||
/**
|
||||
|
|
@ -191,7 +191,7 @@ public class Networks {
|
|||
if (com.cloud.dc.Vlan.UNTAGGED.equalsIgnoreCase(str)) {
|
||||
return Native;
|
||||
}
|
||||
return getSchemeValue(new URI(str));
|
||||
return getSchemeValue(str == null ? null : new URI(str));
|
||||
}
|
||||
|
||||
/**
|
||||
|
|
@ -220,7 +220,7 @@ public class Networks {
|
|||
* @return the host part as String
|
||||
*/
|
||||
public String getValueFrom(URI uri) {
|
||||
return uri.getHost();
|
||||
return uri == null ? null : uri.getHost();
|
||||
}
|
||||
|
||||
/**
|
||||
|
|
@ -243,7 +243,7 @@ public class Networks {
|
|||
* @throws URISyntaxException the string is not even an uri
|
||||
*/
|
||||
public static String getValue(String uriString) throws URISyntaxException {
|
||||
return getValue(new URI(uriString));
|
||||
return getValue(uriString == null ? null : new URI(uriString));
|
||||
}
|
||||
|
||||
/**
|
||||
|
|
|
|||
|
|
@ -70,6 +70,8 @@ public interface AutoScaleService {
|
|||
|
||||
Counter createCounter(CreateCounterCmd cmd);
|
||||
|
||||
Counter getCounter(long counterId);
|
||||
|
||||
boolean deleteCounter(long counterId) throws ResourceInUseException;
|
||||
|
||||
List<? extends Counter> listCounters(ListCountersCmd cmd);
|
||||
|
|
|
|||
|
|
@ -43,7 +43,7 @@ public interface AutoScaleVmGroup extends ControlledEntity, InternalIdentity, Di
|
|||
} else if (state.equalsIgnoreCase("scaling")) {
|
||||
return SCALING;
|
||||
} else {
|
||||
throw new IllegalArgumentException("Unexpected AutoScale VM group state : " + state);
|
||||
throw new IllegalArgumentException("Unexpected AutoScale Instance group state : " + state);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -37,7 +37,7 @@ public interface DiskOffering extends InfrastructureEntity, Identity, InternalId
|
|||
State getState();
|
||||
|
||||
enum DiskCacheMode {
|
||||
NONE("none"), WRITEBACK("writeback"), WRITETHROUGH("writethrough");
|
||||
NONE("none"), WRITEBACK("writeback"), WRITETHROUGH("writethrough"), HYPERVISOR_DEFAULT("hypervisor_default");
|
||||
|
||||
private final String _diskCacheMode;
|
||||
|
||||
|
|
@ -69,6 +69,8 @@ public interface DiskOffering extends InfrastructureEntity, Identity, InternalId
|
|||
|
||||
boolean isCustomized();
|
||||
|
||||
boolean isShared();
|
||||
|
||||
void setDiskSize(long diskSize);
|
||||
|
||||
long getDiskSize();
|
||||
|
|
@ -99,7 +101,6 @@ public interface DiskOffering extends InfrastructureEntity, Identity, InternalId
|
|||
|
||||
Long getBytesReadRateMaxLength();
|
||||
|
||||
|
||||
void setBytesWriteRate(Long bytesWriteRate);
|
||||
|
||||
Long getBytesWriteRate();
|
||||
|
|
@ -112,7 +113,6 @@ public interface DiskOffering extends InfrastructureEntity, Identity, InternalId
|
|||
|
||||
Long getBytesWriteRateMaxLength();
|
||||
|
||||
|
||||
void setIopsReadRate(Long iopsReadRate);
|
||||
|
||||
Long getIopsReadRate();
|
||||
|
|
@ -133,7 +133,6 @@ public interface DiskOffering extends InfrastructureEntity, Identity, InternalId
|
|||
|
||||
Long getIopsWriteRateMax();
|
||||
|
||||
|
||||
void setIopsWriteRateMaxLength(Long iopsWriteRateMaxLength);
|
||||
|
||||
Long getIopsWriteRateMaxLength();
|
||||
|
|
|
|||
|
|
@ -20,7 +20,6 @@ import java.util.ArrayList;
|
|||
import java.util.List;
|
||||
import java.util.Map;
|
||||
|
||||
import com.cloud.user.UserData;
|
||||
import org.apache.cloudstack.api.command.admin.cluster.ListClustersCmd;
|
||||
import org.apache.cloudstack.api.command.admin.config.ListCfgGroupsByCmd;
|
||||
import org.apache.cloudstack.api.command.admin.config.ListCfgsByCmd;
|
||||
|
|
@ -72,11 +71,14 @@ import org.apache.cloudstack.api.command.user.vm.GetVMPasswordCmd;
|
|||
import org.apache.cloudstack.api.command.user.vmgroup.UpdateVMGroupCmd;
|
||||
import org.apache.cloudstack.config.Configuration;
|
||||
import org.apache.cloudstack.config.ConfigurationGroup;
|
||||
import org.apache.cloudstack.framework.config.ConfigKey;
|
||||
|
||||
import com.cloud.alert.Alert;
|
||||
import com.cloud.capacity.Capacity;
|
||||
import com.cloud.dc.Pod;
|
||||
import com.cloud.dc.Vlan;
|
||||
import com.cloud.deploy.DeploymentPlan;
|
||||
import com.cloud.deploy.DeploymentPlanner.ExcludeList;
|
||||
import com.cloud.exception.ConcurrentOperationException;
|
||||
import com.cloud.exception.ManagementServerException;
|
||||
import com.cloud.exception.ResourceUnavailableException;
|
||||
|
|
@ -91,11 +93,13 @@ import com.cloud.storage.GuestOSHypervisor;
|
|||
import com.cloud.storage.GuestOsCategory;
|
||||
import com.cloud.storage.StoragePool;
|
||||
import com.cloud.user.SSHKeyPair;
|
||||
import com.cloud.user.UserData;
|
||||
import com.cloud.utils.Pair;
|
||||
import com.cloud.utils.Ternary;
|
||||
import com.cloud.vm.InstanceGroup;
|
||||
import com.cloud.vm.VirtualMachine;
|
||||
import com.cloud.vm.VirtualMachine.Type;
|
||||
import com.cloud.vm.VirtualMachineProfile;
|
||||
|
||||
/**
|
||||
* Hopefully this is temporary.
|
||||
|
|
@ -104,6 +108,14 @@ import com.cloud.vm.VirtualMachine.Type;
|
|||
public interface ManagementService {
|
||||
static final String Name = "management-server";
|
||||
|
||||
ConfigKey<Boolean> JsInterpretationEnabled = new ConfigKey<>("Hidden"
|
||||
, Boolean.class
|
||||
, "js.interpretation.enabled"
|
||||
, "false"
|
||||
, "Enable/Disable all JavaScript interpretation related functionalities to create or update Javascript rules."
|
||||
, false
|
||||
, ConfigKey.Scope.Global);
|
||||
|
||||
/**
|
||||
* returns the a map of the names/values in the configuration table
|
||||
*
|
||||
|
|
@ -469,6 +481,19 @@ public interface ManagementService {
|
|||
|
||||
Ternary<Pair<List<? extends Host>, Integer>, List<? extends Host>, Map<Host, Boolean>> listHostsForMigrationOfVM(VirtualMachine vm, Long startIndex, Long pageSize, String keyword, List<VirtualMachine> vmList);
|
||||
|
||||
/**
|
||||
* Apply affinity group constraints and other exclusion rules for VM migration.
|
||||
* This is a helper method that can be used independently for per-iteration affinity checks in DRS.
|
||||
*
|
||||
* @param vm The virtual machine to migrate
|
||||
* @param vmProfile The VM profile
|
||||
* @param plan The deployment plan
|
||||
* @param vmList List of VMs with current/simulated placements for affinity processing
|
||||
* @return ExcludeList containing hosts to avoid
|
||||
*/
|
||||
ExcludeList applyAffinityConstraints(VirtualMachine vm, VirtualMachineProfile vmProfile,
|
||||
DeploymentPlan plan, List<VirtualMachine> vmList);
|
||||
|
||||
/**
|
||||
* List storage pools for live migrating of a volume. The API returns list of all pools in the cluster to which the
|
||||
* volume can be migrated. Current pool is not included in the list. In case of vSphere datastore cluster storage pools,
|
||||
|
|
@ -509,4 +534,6 @@ public interface ManagementService {
|
|||
|
||||
boolean removeManagementServer(RemoveManagementServerCmd cmd);
|
||||
|
||||
void checkJsInterpretationAllowedIfNeededForParameterValue(String paramName, boolean paramValue);
|
||||
|
||||
}
|
||||
|
|
|
|||
|
|
@ -18,6 +18,7 @@ package com.cloud.server;
|
|||
|
||||
public interface ResourceManagerUtil {
|
||||
long getResourceId(String resourceId, ResourceTag.ResourceObjectType resourceType);
|
||||
long getResourceId(String resourceId, ResourceTag.ResourceObjectType resourceType, boolean checkAccess);
|
||||
String getUuid(String resourceId, ResourceTag.ResourceObjectType resourceType);
|
||||
ResourceTag.ResourceObjectType getResourceType(String resourceTypeStr);
|
||||
void checkResourceAccessible(Long accountId, Long domainId, String exceptionMessage);
|
||||
|
|
|
|||
|
|
@ -180,6 +180,8 @@ public interface VolumeApiService {
|
|||
*/
|
||||
boolean doesStoragePoolSupportDiskOfferingTags(StoragePool destPool, String diskOfferingTags);
|
||||
|
||||
boolean validateConditionsToReplaceDiskOfferingOfVolume(Volume volume, DiskOffering newDiskOffering, StoragePool destPool);
|
||||
|
||||
Volume destroyVolume(long volumeId, Account caller, boolean expunge, boolean forceExpunge);
|
||||
|
||||
void destroyVolume(long volumeId);
|
||||
|
|
|
|||
|
|
@ -85,7 +85,7 @@ public interface SnapshotApiService {
|
|||
* the command that specifies the volume criteria
|
||||
* @return list of snapshot policies
|
||||
*/
|
||||
Pair<List<? extends SnapshotPolicy>, Integer> listPoliciesforVolume(ListSnapshotPoliciesCmd cmd);
|
||||
Pair<List<? extends SnapshotPolicy>, Integer> listSnapshotPolicies(ListSnapshotPoliciesCmd cmd);
|
||||
|
||||
boolean deleteSnapshotPolicies(DeleteSnapshotPoliciesCmd cmd);
|
||||
|
||||
|
|
|
|||
|
|
@ -16,11 +16,12 @@
|
|||
// under the License.
|
||||
package com.cloud.storage.snapshot;
|
||||
|
||||
import org.apache.cloudstack.acl.ControlledEntity;
|
||||
import org.apache.cloudstack.api.Displayable;
|
||||
import org.apache.cloudstack.api.Identity;
|
||||
import org.apache.cloudstack.api.InternalIdentity;
|
||||
|
||||
public interface SnapshotPolicy extends Identity, InternalIdentity, Displayable {
|
||||
public interface SnapshotPolicy extends ControlledEntity, Identity, InternalIdentity, Displayable {
|
||||
|
||||
long getVolumeId();
|
||||
|
||||
|
|
|
|||
|
|
@ -25,7 +25,7 @@ import org.apache.cloudstack.acl.RoleType;
|
|||
import org.apache.cloudstack.acl.SecurityChecker.AccessType;
|
||||
import org.apache.cloudstack.api.command.admin.account.CreateAccountCmd;
|
||||
import org.apache.cloudstack.api.command.admin.user.GetUserKeysCmd;
|
||||
import org.apache.cloudstack.api.command.admin.user.RegisterCmd;
|
||||
import org.apache.cloudstack.api.command.admin.user.RegisterUserKeyCmd;
|
||||
import org.apache.cloudstack.api.command.admin.user.UpdateUserCmd;
|
||||
|
||||
import com.cloud.dc.DataCenter;
|
||||
|
|
@ -95,7 +95,7 @@ public interface AccountService {
|
|||
|
||||
void markUserRegistered(long userId);
|
||||
|
||||
public String[] createApiKeyAndSecretKey(RegisterCmd cmd);
|
||||
public String[] createApiKeyAndSecretKey(RegisterUserKeyCmd cmd);
|
||||
|
||||
public String[] createApiKeyAndSecretKey(final long userId);
|
||||
|
||||
|
|
|
|||
|
|
@ -34,7 +34,7 @@ import com.cloud.template.VirtualMachineTemplate;
|
|||
public interface ResourceLimitService {
|
||||
|
||||
static final ConfigKey<Long> MaxAccountSecondaryStorage = new ConfigKey<>("Account Defaults", Long.class, "max.account.secondary.storage", "400",
|
||||
"The default maximum secondary storage space (in GiB) that can be used for an account", false);
|
||||
"The default maximum secondary storage space (in GiB) that can be used for an Account", false);
|
||||
static final ConfigKey<Long> MaxProjectSecondaryStorage = new ConfigKey<>("Project Defaults", Long.class, "max.project.secondary.storage", "400",
|
||||
"The default maximum secondary storage space (in GiB) that can be used for a project", false);
|
||||
static final ConfigKey<Long> ResourceCountCheckInterval = new ConfigKey<>("Advanced", Long.class, "resourcecount.check.interval", "300",
|
||||
|
|
|
|||
|
|
@ -64,6 +64,7 @@ import com.cloud.storage.StoragePool;
|
|||
import com.cloud.template.VirtualMachineTemplate;
|
||||
import com.cloud.user.Account;
|
||||
import com.cloud.uservm.UserVm;
|
||||
import com.cloud.utils.Pair;
|
||||
import com.cloud.utils.exception.ExecutionException;
|
||||
|
||||
public interface UserVmService {
|
||||
|
|
@ -538,9 +539,10 @@ public interface UserVmService {
|
|||
|
||||
/**
|
||||
* Unmanage a guest VM from CloudStack
|
||||
* @return true if the VM is successfully unmanaged, false if not.
|
||||
*
|
||||
* @return (true if successful, false if not, hostUuid) if the VM is successfully unmanaged.
|
||||
*/
|
||||
boolean unmanageUserVM(Long vmId);
|
||||
Pair<Boolean, String> unmanageUserVM(Long vmId, Long targetHostId);
|
||||
|
||||
UserVm allocateVMFromBackup(CreateVMFromBackupCmd cmd) throws InsufficientCapacityException, ResourceAllocationException, ResourceUnavailableException;
|
||||
|
||||
|
|
|
|||
|
|
@ -55,6 +55,9 @@ public interface VmDetailConstants {
|
|||
String NIC_MULTIQUEUE_NUMBER = "nic.multiqueue.number";
|
||||
String NIC_PACKED_VIRTQUEUES_ENABLED = "nic.packed.virtqueues.enabled";
|
||||
|
||||
// KVM specific, disk controllers
|
||||
String KVM_SKIP_FORCE_DISK_CONTROLLER = "skip.force.disk.controller";
|
||||
|
||||
// Mac OSX guest specific (internal)
|
||||
String SMC_PRESENT = "smc.present";
|
||||
String FIRMWARE = "firmware";
|
||||
|
|
|
|||
|
|
@ -29,10 +29,10 @@ import com.cloud.utils.fsm.StateObject;
|
|||
public interface VMSnapshot extends ControlledEntity, Identity, InternalIdentity, StateObject<VMSnapshot.State> {
|
||||
|
||||
enum State {
|
||||
Allocated("The VM snapshot is allocated but has not been created yet."), Creating("The VM snapshot is being created."), Ready(
|
||||
"The VM snapshot is ready to be used."), Reverting("The VM snapshot is being used to revert"), Expunging("The volume is being expunging"), Removed(
|
||||
Allocated("The Instance Snapshot is allocated but has not been created yet."), Creating("The Instance Snapshot is being created."), Ready(
|
||||
"The Instance Snapshot is ready to be used."), Reverting("The Instance Snapshot is being used to revert"), Expunging("The volume is being expunging"), Removed(
|
||||
"The volume is destroyed, and can't be recovered."), Error("The volume is in error state, and can't be recovered"),
|
||||
Hidden("The VM snapshot is hidden from the user and cannot be recovered.");
|
||||
Hidden("The Instance snapshot is hidden from the user and cannot be recovered.");
|
||||
|
||||
String _description;
|
||||
|
||||
|
|
|
|||
|
|
@ -132,10 +132,10 @@ public enum RoleType {
|
|||
* */
|
||||
public static Account.Type getAccountTypeByRole(final Role role, final Account.Type defautAccountType) {
|
||||
if (role != null) {
|
||||
LOGGER.debug(String.format("Role [%s] is not null; therefore, we use its account type [%s].", role, defautAccountType));
|
||||
LOGGER.debug(String.format("Role [%s] is not null; therefore, we use its Account type [%s].", role, defautAccountType));
|
||||
return role.getRoleType().getAccountType();
|
||||
}
|
||||
LOGGER.debug(String.format("Role is null; therefore, we use the default account type [%s] value.", defautAccountType));
|
||||
LOGGER.debug(String.format("Role is null; therefore, we use the default Account type [%s] value.", defautAccountType));
|
||||
return defautAccountType;
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -34,27 +34,27 @@ import com.cloud.serializer.Param;
|
|||
public class AffinityGroupResponse extends BaseResponse implements ControlledViewEntityResponse {
|
||||
|
||||
@SerializedName(ApiConstants.ID)
|
||||
@Param(description = "the ID of the affinity group")
|
||||
@Param(description = "The ID of the affinity group")
|
||||
private String id;
|
||||
|
||||
@SerializedName(ApiConstants.NAME)
|
||||
@Param(description = "the name of the affinity group")
|
||||
@Param(description = "The name of the affinity group")
|
||||
private String name;
|
||||
|
||||
@SerializedName(ApiConstants.DESCRIPTION)
|
||||
@Param(description = "the description of the affinity group")
|
||||
@Param(description = "The description of the affinity group")
|
||||
private String description;
|
||||
|
||||
@SerializedName(ApiConstants.ACCOUNT)
|
||||
@Param(description = "the account owning the affinity group")
|
||||
@Param(description = "The account owning the affinity group")
|
||||
private String accountName;
|
||||
|
||||
@SerializedName(ApiConstants.DOMAIN_ID)
|
||||
@Param(description = "the domain ID of the affinity group")
|
||||
@Param(description = "The domain ID of the affinity group")
|
||||
private String domainId;
|
||||
|
||||
@SerializedName(ApiConstants.DOMAIN)
|
||||
@Param(description = "the domain name of the affinity group")
|
||||
@Param(description = "The domain name of the affinity group")
|
||||
private String domainName;
|
||||
|
||||
@SerializedName(ApiConstants.DOMAIN_PATH)
|
||||
|
|
@ -62,19 +62,19 @@ public class AffinityGroupResponse extends BaseResponse implements ControlledVie
|
|||
private String domainPath;
|
||||
|
||||
@SerializedName(ApiConstants.PROJECT_ID)
|
||||
@Param(description = "the project ID of the affinity group")
|
||||
@Param(description = "The project ID of the affinity group")
|
||||
private String projectId;
|
||||
|
||||
@SerializedName(ApiConstants.PROJECT)
|
||||
@Param(description = "the project name of the affinity group")
|
||||
@Param(description = "The project name of the affinity group")
|
||||
private String projectName;
|
||||
|
||||
@SerializedName(ApiConstants.TYPE)
|
||||
@Param(description = "the type of the affinity group")
|
||||
@Param(description = "The type of the affinity group")
|
||||
private String type;
|
||||
|
||||
@SerializedName("virtualmachineIds")
|
||||
@Param(description = "virtual machine IDs associated with this affinity group")
|
||||
@Param(description = "Instance IDs associated with this affinity group")
|
||||
private List<String> vmIdList;
|
||||
|
||||
@SerializedName("dedicatedresources")
|
||||
|
|
|
|||
|
|
@ -29,7 +29,7 @@ import com.cloud.serializer.Param;
|
|||
public class AffinityGroupTypeResponse extends BaseResponse {
|
||||
|
||||
@SerializedName(ApiConstants.TYPE)
|
||||
@Param(description = "the type of the affinity group")
|
||||
@Param(description = "The type of the affinity group")
|
||||
private String type;
|
||||
|
||||
public AffinityGroupTypeResponse() {
|
||||
|
|
|
|||
|
|
@ -29,28 +29,28 @@ import org.apache.cloudstack.api.response.ZoneResponse;
|
|||
public abstract class AbstractGetUploadParamsCmd extends BaseCmd {
|
||||
|
||||
|
||||
@Parameter(name = ApiConstants.NAME, type = CommandType.STRING, required = true, description = "the name of the volume/template/iso")
|
||||
@Parameter(name = ApiConstants.NAME, type = CommandType.STRING, required = true, description = "The name of the Volume/Template/ISO")
|
||||
private String name;
|
||||
|
||||
@Parameter(name = ApiConstants.FORMAT, type = CommandType.STRING, required = true, description = "the format for the volume/template/iso. Possible values include QCOW2, OVA, "
|
||||
@Parameter(name = ApiConstants.FORMAT, type = CommandType.STRING, required = true, description = "The format for the Volume/Template/ISO. Possible values include QCOW2, OVA, "
|
||||
+ "and VHD.")
|
||||
private String format;
|
||||
|
||||
@Parameter(name = ApiConstants.ZONE_ID, type = CommandType.UUID, entityType = ZoneResponse.class, required = true, description = "the ID of the zone the volume/template/iso is "
|
||||
@Parameter(name = ApiConstants.ZONE_ID, type = CommandType.UUID, entityType = ZoneResponse.class, required = true, description = "The ID of the zone the Volume/Template/ISO is "
|
||||
+ "to be hosted on")
|
||||
private Long zoneId;
|
||||
|
||||
@Parameter(name = ApiConstants.CHECKSUM, type = CommandType.STRING, description = "the checksum value of this volume/template/iso " + ApiConstants.CHECKSUM_PARAMETER_PREFIX_DESCRIPTION)
|
||||
@Parameter(name = ApiConstants.CHECKSUM, type = CommandType.STRING, description = "The checksum value of this Volume/Template/ISO " + ApiConstants.CHECKSUM_PARAMETER_PREFIX_DESCRIPTION)
|
||||
private String checksum;
|
||||
|
||||
@Parameter(name = ApiConstants.ACCOUNT, type = CommandType.STRING, description = "an optional accountName. Must be used with domainId.")
|
||||
@Parameter(name = ApiConstants.ACCOUNT, type = CommandType.STRING, description = "An optional accountName. Must be used with domainId.")
|
||||
private String accountName;
|
||||
|
||||
@Parameter(name = ApiConstants.DOMAIN_ID, type = CommandType.UUID, entityType = DomainResponse.class, description = "an optional domainId. If the account parameter is used, "
|
||||
@Parameter(name = ApiConstants.DOMAIN_ID, type = CommandType.UUID, entityType = DomainResponse.class, description = "An optional domainId. If the Account parameter is used, "
|
||||
+ "domainId must also be used.")
|
||||
private Long domainId;
|
||||
|
||||
@Parameter(name = ApiConstants.PROJECT_ID, type = CommandType.UUID, entityType = ProjectResponse.class, description = "Upload volume/template/iso for the project")
|
||||
@Parameter(name = ApiConstants.PROJECT_ID, type = CommandType.UUID, entityType = ProjectResponse.class, description = "Upload Volume/Template/ISO for the project")
|
||||
private Long projectId;
|
||||
|
||||
public String getName() {
|
||||
|
|
@ -81,6 +81,34 @@ public abstract class AbstractGetUploadParamsCmd extends BaseCmd {
|
|||
return projectId;
|
||||
}
|
||||
|
||||
public void setName(String name) {
|
||||
this.name = name;
|
||||
}
|
||||
|
||||
public void setFormat(String format) {
|
||||
this.format = format;
|
||||
}
|
||||
|
||||
public void setZoneId(Long zoneId) {
|
||||
this.zoneId = zoneId;
|
||||
}
|
||||
|
||||
public void setChecksum(String checksum) {
|
||||
this.checksum = checksum;
|
||||
}
|
||||
|
||||
public void setAccountName(String accountName) {
|
||||
this.accountName = accountName;
|
||||
}
|
||||
|
||||
public void setDomainId(Long domainId) {
|
||||
this.domainId = domainId;
|
||||
}
|
||||
|
||||
public void setProjectId(Long projectId) {
|
||||
this.projectId = projectId;
|
||||
}
|
||||
|
||||
public GetUploadParamsResponse createGetUploadParamsResponse(UUID id, URL postURL, String metadata, String timeout, String signature) {
|
||||
return new GetUploadParamsResponse(id, postURL, metadata, timeout, signature);
|
||||
}
|
||||
|
|
|
|||
|
|
@ -27,6 +27,7 @@ public class ApiConstants {
|
|||
public static final String ACTIVATION_RULE = "activationrule";
|
||||
public static final String ACTIVITY = "activity";
|
||||
public static final String ADAPTER_TYPE = "adaptertype";
|
||||
public static final String ADDITONAL_CONFIG_ENABLED = "additionalconfigenabled";
|
||||
public static final String ADDRESS = "address";
|
||||
public static final String ALGORITHM = "algorithm";
|
||||
public static final String ALIAS = "alias";
|
||||
|
|
@ -63,6 +64,7 @@ public class ApiConstants {
|
|||
public static final String BACKUP_STORAGE_LIMIT = "backupstoragelimit";
|
||||
public static final String BACKUP_STORAGE_TOTAL = "backupstoragetotal";
|
||||
public static final String BACKUP_VM_OFFERING_REMOVED = "vmbackupofferingremoved";
|
||||
public static final String IS_BACKUP_VM_EXPUNGED = "isbackupvmexpunged";
|
||||
public static final String BACKUP_TOTAL = "backuptotal";
|
||||
public static final String BASE64_IMAGE = "base64image";
|
||||
public static final String BGP_PEERS = "bgppeers";
|
||||
|
|
@ -133,6 +135,7 @@ public class ApiConstants {
|
|||
public static final String CNI_CONFIG_ID = "cniconfigurationid";
|
||||
public static final String CNI_CONFIG_DETAILS = "cniconfigdetails";
|
||||
public static final String CNI_CONFIG_NAME = "cniconfigname";
|
||||
public static final String CSI_ENABLED = "csienabled";
|
||||
public static final String COMPONENT = "component";
|
||||
public static final String CPU = "CPU";
|
||||
public static final String CPU_CORE_PER_SOCKET = "cpucorepersocket";
|
||||
|
|
@ -213,6 +216,7 @@ public class ApiConstants {
|
|||
public static final String DURATION = "duration";
|
||||
public static final String ELIGIBLE = "eligible";
|
||||
public static final String EMAIL = "email";
|
||||
public static final String ENABLE_CSI = "enablecsi";
|
||||
public static final String END_ASN = "endasn";
|
||||
public static final String END_DATE = "enddate";
|
||||
public static final String END_IP = "endip";
|
||||
|
|
@ -224,6 +228,7 @@ public class ApiConstants {
|
|||
public static final String EVENT_TYPE = "eventtype";
|
||||
public static final String EXPIRES = "expires";
|
||||
public static final String EXTRA_CONFIG = "extraconfig";
|
||||
public static final String EXTRA_PARAMS = "extraparams";
|
||||
public static final String EXTRA_DHCP_OPTION = "extradhcpoption";
|
||||
public static final String EXTRA_DHCP_OPTION_NAME = "extradhcpoptionname";
|
||||
public static final String EXTRA_DHCP_OPTION_CODE = "extradhcpoptioncode";
|
||||
|
|
@ -242,6 +247,8 @@ public class ApiConstants {
|
|||
public static final String FIRSTNAME = "firstname";
|
||||
public static final String FORCED = "forced";
|
||||
public static final String FORCED_DESTROY_LOCAL_STORAGE = "forcedestroylocalstorage";
|
||||
public static final String FORCE_CONVERT_TO_POOL = "forceconverttopool";
|
||||
|
||||
public static final String FORCE_DELETE_HOST = "forcedeletehost";
|
||||
public static final String FORCE_MS_TO_IMPORT_VM_FILES = "forcemstoimportvmfiles";
|
||||
public static final String FORCE_UPDATE_OS_TYPE = "forceupdateostype";
|
||||
|
|
@ -577,6 +584,7 @@ public class ApiConstants {
|
|||
public static final String SUITABLE_FOR_VM = "suitableforvirtualmachine";
|
||||
public static final String SUPPORTS_STORAGE_SNAPSHOT = "supportsstoragesnapshot";
|
||||
public static final String TARGET_IQN = "targetiqn";
|
||||
public static final String TASKS_FILTER = "tasksfilter";
|
||||
public static final String TEMPLATE_FILTER = "templatefilter";
|
||||
public static final String TEMPLATE_ID = "templateid";
|
||||
public static final String TEMPLATE_IDS = "templateids";
|
||||
|
|
@ -1156,6 +1164,7 @@ public class ApiConstants {
|
|||
public static final String OVM3_CLUSTER = "ovm3cluster";
|
||||
public static final String OVM3_VIP = "ovm3vip";
|
||||
public static final String CLEAN_UP_DETAILS = "cleanupdetails";
|
||||
public static final String CLEAN_UP_EXTERNAL_DETAILS = "cleanupexternaldetails";
|
||||
public static final String CLEAN_UP_PARAMETERS = "cleanupparameters";
|
||||
public static final String VIRTUAL_SIZE = "virtualsize";
|
||||
public static final String NETSCALER_CONTROLCENTER_ID = "netscalercontrolcenterid";
|
||||
|
|
|
|||
|
|
@ -19,7 +19,7 @@ package org.apache.cloudstack.api;
|
|||
public abstract class BaseAsyncCreateCustomIdCmd extends BaseAsyncCreateCmd {
|
||||
@Parameter(name = ApiConstants.CUSTOM_ID,
|
||||
type = CommandType.STRING,
|
||||
description = "an optional field, in case you want to set a custom id to the resource. Allowed to Root Admins only")
|
||||
description = "An optional field, in case you want to set a custom id to the resource. Allowed to Root Admins only")
|
||||
private String customId;
|
||||
|
||||
public String getCustomId() {
|
||||
|
|
|
|||
|
|
@ -21,7 +21,7 @@ import org.apache.cloudstack.acl.RoleType;
|
|||
public abstract class BaseAsyncCustomIdCmd extends BaseAsyncCmd {
|
||||
@Parameter(name = ApiConstants.CUSTOM_ID,
|
||||
type = CommandType.STRING,
|
||||
description = "an optional field, in case you want to set a custom id to the resource. Allowed to Root Admins only", since = "4.4", authorized = {RoleType.Admin})
|
||||
description = "An optional field, in case you want to set a custom id to the resource. Allowed to Root Admins only", since = "4.4", authorized = {RoleType.Admin})
|
||||
private String customId;
|
||||
|
||||
public String getCustomId() {
|
||||
|
|
|
|||
|
|
@ -22,7 +22,7 @@ public abstract class BaseCustomIdCmd extends BaseCmd {
|
|||
|
||||
@Parameter(name = ApiConstants.CUSTOM_ID,
|
||||
type = CommandType.STRING,
|
||||
description = "an optional field, in case you want to set a custom id to the resource. Allowed to Root Admins only", since = "4.4", authorized = {RoleType.Admin})
|
||||
description = "An optional field, in case you want to set a custom id to the resource. Allowed to Root Admins only", since = "4.4", authorized = {RoleType.Admin})
|
||||
private String customId;
|
||||
|
||||
public String getCustomId() {
|
||||
|
|
|
|||
|
|
@ -19,7 +19,7 @@ package org.apache.cloudstack.api;
|
|||
|
||||
public abstract class BaseListAccountResourcesCmd extends BaseListDomainResourcesCmd implements IBaseListAccountResourcesCmd {
|
||||
|
||||
@Parameter(name = ApiConstants.ACCOUNT, type = CommandType.STRING, description = "list resources by account. Must be used with the domainId parameter.")
|
||||
@Parameter(name = ApiConstants.ACCOUNT, type = CommandType.STRING, description = "List resources by Account. Must be used with the domainId parameter.")
|
||||
private String accountName;
|
||||
|
||||
@Override
|
||||
|
|
|
|||
|
|
@ -27,10 +27,10 @@ public abstract class BaseListDomainResourcesCmd extends BaseListCmd implements
|
|||
@Parameter(name = ApiConstants.DOMAIN_ID,
|
||||
type = CommandType.UUID,
|
||||
entityType = DomainResponse.class,
|
||||
description = "list only resources belonging to the domain specified")
|
||||
description = "List only resources belonging to the domain specified")
|
||||
private Long domainId;
|
||||
|
||||
@Parameter(name = ApiConstants.IS_RECURSIVE, type = CommandType.BOOLEAN, description = "defaults to false,"
|
||||
@Parameter(name = ApiConstants.IS_RECURSIVE, type = CommandType.BOOLEAN, description = "Defaults to false,"
|
||||
+ " but if true, lists all resources from the parent specified by the domainId till leaves.")
|
||||
private Boolean recursive;
|
||||
|
||||
|
|
|
|||
|
|
@ -20,7 +20,7 @@ import org.apache.cloudstack.api.response.ProjectResponse;
|
|||
|
||||
public abstract class BaseListProjectAndAccountResourcesCmd extends BaseListAccountResourcesCmd implements IBaseListProjectAndAccountResourcesCmd {
|
||||
|
||||
@Parameter(name = ApiConstants.PROJECT_ID, type = CommandType.UUID, entityType = ProjectResponse.class, description = "list objects by project; if projectid=-1 lists All VMs")
|
||||
@Parameter(name = ApiConstants.PROJECT_ID, type = CommandType.UUID, entityType = ProjectResponse.class, description = "List objects by project; if projectid=-1 lists All Instances")
|
||||
private Long projectId;
|
||||
|
||||
@Override
|
||||
|
|
|
|||
|
|
@ -19,7 +19,7 @@ package org.apache.cloudstack.api;
|
|||
import org.apache.commons.lang3.BooleanUtils;
|
||||
|
||||
public abstract class BaseListRetrieveOnlyResourceCountCmd extends BaseListTaggedResourcesCmd {
|
||||
@Parameter(name = ApiConstants.RETRIEVE_ONLY_RESOURCE_COUNT, type = CommandType.BOOLEAN, description = "makes the API's response contains only the resource count")
|
||||
@Parameter(name = ApiConstants.RETRIEVE_ONLY_RESOURCE_COUNT, type = CommandType.BOOLEAN, description = "Makes the API's response contains only the resource count")
|
||||
private Boolean retrieveOnlyResourceCount;
|
||||
|
||||
public Boolean getRetrieveOnlyResourceCount() {
|
||||
|
|
|
|||
|
|
@ -33,7 +33,7 @@ public abstract class BaseListTemplateOrIsoPermissionsCmd extends BaseCmd implem
|
|||
//////////////// API parameters /////////////////////
|
||||
/////////////////////////////////////////////////////
|
||||
|
||||
@Parameter(name = ApiConstants.ID, type = CommandType.UUID, entityType = TemplatePermissionsResponse.class, required = true, description = "the template ID")
|
||||
@Parameter(name = ApiConstants.ID, type = CommandType.UUID, entityType = TemplatePermissionsResponse.class, required = true, description = "The Template ID")
|
||||
private Long id;
|
||||
|
||||
/////////////////////////////////////////////////////
|
||||
|
|
|
|||
|
|
@ -25,11 +25,11 @@ public abstract class BaseResponse implements ResponseObject {
|
|||
private transient String objectName;
|
||||
|
||||
@SerializedName(ApiConstants.JOB_ID)
|
||||
@Param(description = "the UUID of the latest async job acting on this object")
|
||||
@Param(description = "The UUID of the latest async job acting on this object")
|
||||
protected String jobId;
|
||||
|
||||
@SerializedName(ApiConstants.JOB_STATUS)
|
||||
@Param(description = "the current status of the latest async job acting on this object")
|
||||
@Param(description = "The current status of the latest async job acting on this object")
|
||||
private Integer jobStatus;
|
||||
|
||||
public BaseResponse() {
|
||||
|
|
|
|||
|
|
@ -22,7 +22,7 @@ import com.google.gson.annotations.SerializedName;
|
|||
public abstract class BaseResponseWithAnnotations extends BaseResponse {
|
||||
|
||||
@SerializedName(ApiConstants.HAS_ANNOTATIONS)
|
||||
@Param(description = "true if the entity/resource has annotations")
|
||||
@Param(description = "True if the entity/resource has annotations")
|
||||
private Boolean hasAnnotation;
|
||||
|
||||
public Boolean hasAnnotation() {
|
||||
|
|
|
|||
|
|
@ -22,11 +22,11 @@ import com.google.gson.annotations.SerializedName;
|
|||
public abstract class BaseResponseWithAssociatedNetwork extends BaseResponseWithAnnotations {
|
||||
|
||||
@SerializedName(ApiConstants.ASSOCIATED_NETWORK_ID)
|
||||
@Param(description = "the ID of the Network associated with this private gateway")
|
||||
@Param(description = "The ID of the Network associated with this private gateway")
|
||||
private String associatedNetworkId;
|
||||
|
||||
@SerializedName(ApiConstants.ASSOCIATED_NETWORK)
|
||||
@Param(description = "the name of the Network associated with this private gateway")
|
||||
@Param(description = "The name of the Network associated with this private gateway")
|
||||
private String associatedNetworkName;
|
||||
|
||||
public void setAssociatedNetworkId(String associatedNetworkId) {
|
||||
|
|
|
|||
|
|
@ -26,7 +26,7 @@ import com.google.gson.annotations.SerializedName;
|
|||
public abstract class BaseResponseWithTagInformation extends BaseResponseWithAnnotations {
|
||||
|
||||
@SerializedName(ApiConstants.TAGS)
|
||||
@Param(description = "the list of resource tags associated", responseObject = ResourceTagResponse.class)
|
||||
@Param(description = "The list of resource tags associated", responseObject = ResourceTagResponse.class)
|
||||
protected Set<ResourceTagResponse> tags;
|
||||
|
||||
public void addTag(ResourceTagResponse tag) {
|
||||
|
|
|
|||
|
|
@ -30,49 +30,49 @@ public abstract class BaseUpdateTemplateOrIsoCmd extends BaseCmd {
|
|||
//////////////// API parameters /////////////////////
|
||||
/////////////////////////////////////////////////////
|
||||
|
||||
@Parameter(name = ApiConstants.BOOTABLE, type = CommandType.BOOLEAN, description = "true if image is bootable, false otherwise; available only for updateIso API")
|
||||
@Parameter(name = ApiConstants.BOOTABLE, type = CommandType.BOOLEAN, description = "True if image is bootable, false otherwise; available only for updateIso API")
|
||||
private Boolean bootable;
|
||||
|
||||
@Parameter(name = ApiConstants.REQUIRES_HVM, type = CommandType.BOOLEAN, description = "true if the template requires HVM, false otherwise; available only for updateTemplate API")
|
||||
@Parameter(name = ApiConstants.REQUIRES_HVM, type = CommandType.BOOLEAN, description = "True if the Template requires HVM, false otherwise; available only for updateTemplate API")
|
||||
private Boolean requiresHvm;
|
||||
|
||||
@Parameter(name = ApiConstants.DISPLAY_TEXT, type = CommandType.STRING, description = "the display text of the image", length = 4096)
|
||||
@Parameter(name = ApiConstants.DISPLAY_TEXT, type = CommandType.STRING, description = "The display text of the image", length = 4096)
|
||||
private String displayText;
|
||||
|
||||
@Parameter(name = ApiConstants.ID, type = CommandType.UUID, entityType = TemplateResponse.class, required = true, description = "the ID of the image file")
|
||||
@Parameter(name = ApiConstants.ID, type = CommandType.UUID, entityType = TemplateResponse.class, required = true, description = "The ID of the image file")
|
||||
private Long id;
|
||||
|
||||
@Parameter(name = ApiConstants.NAME, type = CommandType.STRING, description = "the name of the image file")
|
||||
@Parameter(name = ApiConstants.NAME, type = CommandType.STRING, description = "The name of the image file")
|
||||
private String templateName;
|
||||
|
||||
@Parameter(name = ApiConstants.OS_TYPE_ID,
|
||||
type = CommandType.UUID,
|
||||
entityType = GuestOSResponse.class,
|
||||
description = "the ID of the OS type that best represents the OS of this image.")
|
||||
description = "The ID of the OS type that best represents the OS of this image.")
|
||||
private Long osTypeId;
|
||||
|
||||
@Parameter(name = ApiConstants.FORCE_UPDATE_OS_TYPE, type = CommandType.BOOLEAN, since = "4.21", description = "Force OS type update. Warning: Updating OS type will " +
|
||||
"update the guest OS configuration for all the existing Instances deployed with this template/iso, which may affect their behavior.")
|
||||
private Boolean forceUpdateOsType;
|
||||
|
||||
@Parameter(name = ApiConstants.FORMAT, type = CommandType.STRING, description = "the format for the image")
|
||||
@Parameter(name = ApiConstants.FORMAT, type = CommandType.STRING, description = "The format for the image")
|
||||
private String format;
|
||||
|
||||
@Parameter(name = ApiConstants.PASSWORD_ENABLED, type = CommandType.BOOLEAN, description = "true if the image supports the password reset feature; default is false")
|
||||
@Parameter(name = ApiConstants.PASSWORD_ENABLED, type = CommandType.BOOLEAN, description = "True if the image supports the password reset feature; default is false")
|
||||
private Boolean passwordEnabled;
|
||||
|
||||
@Parameter(name = ApiConstants.SSHKEY_ENABLED, type = CommandType.BOOLEAN, description = "true if the template supports the sshkey upload feature; default is false")
|
||||
@Parameter(name = ApiConstants.SSHKEY_ENABLED, type = CommandType.BOOLEAN, description = "True if the Template supports the SSHkey upload feature; default is false")
|
||||
private Boolean sshKeyEnabled;
|
||||
|
||||
@Parameter(name = ApiConstants.SORT_KEY, type = CommandType.INTEGER, description = "sort key of the template, integer")
|
||||
@Parameter(name = ApiConstants.SORT_KEY, type = CommandType.INTEGER, description = "Sort key of the Template, integer")
|
||||
private Integer sortKey;
|
||||
|
||||
@Parameter(name = ApiConstants.IS_DYNAMICALLY_SCALABLE,
|
||||
type = CommandType.BOOLEAN,
|
||||
description = "true if template/ISO contains XS/VMWare tools inorder to support dynamic scaling of VM cpu/memory")
|
||||
description = "True if Template/ISO contains XS/VMWare tools in order to support dynamic scaling of Instance CPU/memory")
|
||||
private Boolean isDynamicallyScalable;
|
||||
|
||||
@Parameter(name = ApiConstants.ROUTING, type = CommandType.BOOLEAN, description = "true if the template type is routing i.e., if template is used to deploy router")
|
||||
@Parameter(name = ApiConstants.ROUTING, type = CommandType.BOOLEAN, description = "True if the Template type is routing i.e., if Template is used to deploy router")
|
||||
protected Boolean isRoutingType;
|
||||
|
||||
@Parameter(name = ApiConstants.DETAILS, type = CommandType.MAP, description = "Details in key/value pairs using format details[i].keyname=keyvalue. Example: details[0].hypervisortoolsversion=xenserver61")
|
||||
|
|
@ -80,7 +80,7 @@ public abstract class BaseUpdateTemplateOrIsoCmd extends BaseCmd {
|
|||
|
||||
@Parameter(name = ApiConstants.CLEAN_UP_DETAILS,
|
||||
type = CommandType.BOOLEAN,
|
||||
description = "optional boolean field, which indicates if details should be cleaned up or not (if set to true, details removed for this resource, details field ignored; if false or not set, no action)")
|
||||
description = "Optional boolean field, which indicates if details should be cleaned up or not (if set to true, details removed for this resource, details field ignored; if false or not set, no action)")
|
||||
private Boolean cleanupDetails;
|
||||
|
||||
@Parameter(name = ApiConstants.ARCH, type = CommandType.STRING,
|
||||
|
|
|
|||
|
|
@ -40,31 +40,31 @@ public abstract class BaseUpdateTemplateOrIsoPermissionsCmd extends BaseCmd {
|
|||
@Parameter(name = ApiConstants.ACCOUNTS,
|
||||
type = CommandType.LIST,
|
||||
collectionType = CommandType.STRING,
|
||||
description = "a comma delimited list of accounts within caller's domain. If specified, \"op\" parameter has to be passed in.")
|
||||
description = "A comma delimited list of Accounts within caller's domain. If specified, \"op\" parameter has to be passed in.")
|
||||
private List<String> accountNames;
|
||||
|
||||
@Parameter(name = ApiConstants.ID, type = CommandType.UUID, entityType = TemplateResponse.class, required = true, description = "the template ID")
|
||||
@Parameter(name = ApiConstants.ID, type = CommandType.UUID, entityType = TemplateResponse.class, required = true, description = "The Template ID")
|
||||
private Long id;
|
||||
|
||||
@Parameter(name = ApiConstants.IS_FEATURED, type = CommandType.BOOLEAN, description = "true for featured template/iso, false otherwise")
|
||||
@Parameter(name = ApiConstants.IS_FEATURED, type = CommandType.BOOLEAN, description = "True for featured Template/ISO, false otherwise")
|
||||
private Boolean featured;
|
||||
|
||||
@Parameter(name = ApiConstants.IS_PUBLIC, type = CommandType.BOOLEAN, description = "true for public template/iso, false for private templates/isos")
|
||||
@Parameter(name = ApiConstants.IS_PUBLIC, type = CommandType.BOOLEAN, description = "True for public Template/ISO, false for private Templates/ISOs")
|
||||
private Boolean isPublic;
|
||||
|
||||
@Parameter(name = ApiConstants.IS_EXTRACTABLE,
|
||||
type = CommandType.BOOLEAN,
|
||||
description = "true if the template/iso is extractable, false other wise. Can be set only by root admin")
|
||||
description = "True if the Template/ISO is extractable, false otherwise. Can be set only by root admin")
|
||||
private Boolean isExtractable;
|
||||
|
||||
@Parameter(name = ApiConstants.OP, type = CommandType.STRING, description = "permission operator (add, remove, reset)")
|
||||
@Parameter(name = ApiConstants.OP, type = CommandType.STRING, description = "Permission operator (add, remove, reset)")
|
||||
private String operation;
|
||||
|
||||
@Parameter(name = ApiConstants.PROJECT_IDS,
|
||||
type = CommandType.LIST,
|
||||
collectionType = CommandType.UUID,
|
||||
entityType = ProjectResponse.class,
|
||||
description = "a comma delimited list of projects. If specified, \"op\" parameter has to be passed in.")
|
||||
description = "A comma delimited list of projects. If specified, \"op\" parameter has to be passed in.")
|
||||
private List<Long> projectIds;
|
||||
|
||||
// ///////////////////////////////////////////////////
|
||||
|
|
@ -121,7 +121,7 @@ public abstract class BaseUpdateTemplateOrIsoPermissionsCmd extends BaseCmd {
|
|||
SuccessResponse response = new SuccessResponse(getCommandName());
|
||||
setResponseObject(response);
|
||||
} else {
|
||||
throw new ServerApiException(ApiErrorCode.INTERNAL_ERROR, "Failed to update template/iso permissions");
|
||||
throw new ServerApiException(ApiErrorCode.INTERNAL_ERROR, "Failed to update Template/ISO permissions");
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -50,12 +50,12 @@ public class CreateAccountCmd extends BaseCmd {
|
|||
|
||||
@Parameter(name = ApiConstants.ACCOUNT,
|
||||
type = CommandType.STRING,
|
||||
description = "Name of the account to be created. The user will be added to this newly created account. If no account is specified, the username will be used as the account name.")
|
||||
description = "Name of the Account to be created. The user will be added to this newly created account. If no Account is specified, the username will be used as the Account name.")
|
||||
private String accountName;
|
||||
|
||||
@Parameter(name = ApiConstants.ACCOUNT_TYPE,
|
||||
type = CommandType.INTEGER,
|
||||
description = "Type of the account. Specify 0 for user, 1 for root admin, and 2 for domain admin")
|
||||
description = "Type of the account. Specify 0 for user, 1 for root admin, and 2 for domain admin")
|
||||
private Integer accountType;
|
||||
|
||||
@Parameter(name = ApiConstants.ROLE_ID, type = CommandType.UUID, entityType = RoleResponse.class, description = "Creates the account under the specified role.")
|
||||
|
|
@ -64,13 +64,13 @@ public class CreateAccountCmd extends BaseCmd {
|
|||
@Parameter(name = ApiConstants.DOMAIN_ID, type = CommandType.UUID, entityType = DomainResponse.class, description = "Creates the user under the specified domain.")
|
||||
private Long domainId;
|
||||
|
||||
@Parameter(name = ApiConstants.EMAIL, type = CommandType.STRING, required = true, description = "email")
|
||||
@Parameter(name = ApiConstants.EMAIL, type = CommandType.STRING, required = true, description = "E-mail")
|
||||
private String email;
|
||||
|
||||
@Parameter(name = ApiConstants.FIRSTNAME, type = CommandType.STRING, required = true, description = "firstname")
|
||||
@Parameter(name = ApiConstants.FIRSTNAME, type = CommandType.STRING, required = true, description = "First name")
|
||||
private String firstName;
|
||||
|
||||
@Parameter(name = ApiConstants.LASTNAME, type = CommandType.STRING, required = true, description = "lastname")
|
||||
@Parameter(name = ApiConstants.LASTNAME, type = CommandType.STRING, required = true, description = "Last name")
|
||||
private String lastName;
|
||||
|
||||
@Parameter(name = ApiConstants.PASSWORD,
|
||||
|
|
@ -87,16 +87,16 @@ public class CreateAccountCmd extends BaseCmd {
|
|||
@Parameter(name = ApiConstants.USERNAME, type = CommandType.STRING, required = true, description = "Unique username.")
|
||||
private String userName;
|
||||
|
||||
@Parameter(name = ApiConstants.NETWORK_DOMAIN, type = CommandType.STRING, description = "Network domain for the account's networks")
|
||||
@Parameter(name = ApiConstants.NETWORK_DOMAIN, type = CommandType.STRING, description = "Network domain for the Account's Networks")
|
||||
private String networkDomain;
|
||||
|
||||
@Parameter(name = ApiConstants.ACCOUNT_DETAILS, type = CommandType.MAP, description = "details for account used to store specific parameters")
|
||||
@Parameter(name = ApiConstants.ACCOUNT_DETAILS, type = CommandType.MAP, description = "Details for Account used to store specific parameters")
|
||||
private Map<String, String> details;
|
||||
|
||||
@Parameter(name = ApiConstants.ACCOUNT_ID, type = CommandType.STRING, description = "Account UUID, required for adding account from external provisioning system")
|
||||
@Parameter(name = ApiConstants.ACCOUNT_ID, type = CommandType.STRING, description = "Account UUID, required for adding Account from external provisioning system")
|
||||
private String accountUUID;
|
||||
|
||||
@Parameter(name = ApiConstants.USER_ID, type = CommandType.STRING, description = "User UUID, required for adding account from external provisioning system")
|
||||
@Parameter(name = ApiConstants.USER_ID, type = CommandType.STRING, description = "User UUID, required for adding Account from external provisioning system")
|
||||
private String userUUID;
|
||||
|
||||
/////////////////////////////////////////////////////
|
||||
|
|
|
|||
|
|
@ -35,7 +35,7 @@ import org.apache.cloudstack.region.RegionService;
|
|||
import com.cloud.event.EventTypes;
|
||||
import com.cloud.user.Account;
|
||||
|
||||
@APICommand(name = "deleteAccount", description = "Deletes a account, and all users associated with this account", responseObject = SuccessResponse.class, entityType = {Account.class},
|
||||
@APICommand(name = "deleteAccount", description = "Deletes an Account and all Users associated with this Account", responseObject = SuccessResponse.class, entityType = {Account.class},
|
||||
requestHasSensitiveInfo = false, responseHasSensitiveInfo = false)
|
||||
public class DeleteAccountCmd extends BaseAsyncCmd {
|
||||
|
||||
|
|
@ -79,8 +79,8 @@ public class DeleteAccountCmd extends BaseAsyncCmd {
|
|||
@Override
|
||||
public String getEventDescription() {
|
||||
Account account = _accountService.getAccount(getId());
|
||||
return (account != null ? "Deleting user account " + account.getAccountName() + " (ID: " + account.getUuid() + ") and all corresponding users"
|
||||
: "Account delete, but this account does not exist in the system");
|
||||
return (account != null ? "Deleting user Account " + account.getAccountName() + " (ID: " + account.getUuid() + ") and all corresponding users"
|
||||
: "Cannot delete Account - it does not exist in the system");
|
||||
}
|
||||
|
||||
@Override
|
||||
|
|
|
|||
|
|
@ -50,13 +50,13 @@ public class DisableAccountCmd extends BaseAsyncCmd {
|
|||
@Parameter(name = ApiConstants.ID, type = CommandType.UUID, entityType = AccountResponse.class, description = "Account id")
|
||||
private Long id;
|
||||
|
||||
@Parameter(name = ApiConstants.ACCOUNT, type = CommandType.STRING, description = "Disables specified account.")
|
||||
@Parameter(name = ApiConstants.ACCOUNT, type = CommandType.STRING, description = "Disables specified Account.")
|
||||
private String accountName;
|
||||
|
||||
@Parameter(name = ApiConstants.DOMAIN_ID, type = CommandType.UUID, entityType = DomainResponse.class, description = "Disables specified account in this domain.")
|
||||
@Parameter(name = ApiConstants.DOMAIN_ID, type = CommandType.UUID, entityType = DomainResponse.class, description = "Disables specified Account in this domain.")
|
||||
private Long domainId;
|
||||
|
||||
@Parameter(name = ApiConstants.LOCK, type = CommandType.BOOLEAN, required = true, description = "If true, only lock the account; else disable the account")
|
||||
@Parameter(name = ApiConstants.LOCK, type = CommandType.BOOLEAN, required = true, description = "If true, only lock the Account; else disable the Account")
|
||||
private Boolean lockRequested;
|
||||
|
||||
@Inject
|
||||
|
|
@ -108,7 +108,7 @@ public class DisableAccountCmd extends BaseAsyncCmd {
|
|||
|
||||
@Override
|
||||
public String getEventDescription() {
|
||||
return "disabling account: " + getAccountName() + " in domain: " + getDomainId();
|
||||
return "Disabling Account: " + getAccountName() + " in domain: " + getDomainId();
|
||||
}
|
||||
|
||||
@Override
|
||||
|
|
@ -120,7 +120,7 @@ public class DisableAccountCmd extends BaseAsyncCmd {
|
|||
response.setResponseName(getCommandName());
|
||||
setResponseObject(response);
|
||||
} else {
|
||||
throw new ServerApiException(ApiErrorCode.INTERNAL_ERROR, lockRequested == true ? "Failed to lock account" : "Failed to disable account");
|
||||
throw new ServerApiException(ApiErrorCode.INTERNAL_ERROR, lockRequested == true ? "Failed to lock Account" : "Failed to disable Account");
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -46,10 +46,10 @@ public class EnableAccountCmd extends BaseCmd {
|
|||
@Parameter(name = ApiConstants.ID, type = CommandType.UUID, entityType = AccountResponse.class, description = "Account id")
|
||||
private Long id;
|
||||
|
||||
@Parameter(name = ApiConstants.ACCOUNT, type = CommandType.STRING, description = "Enables specified account.")
|
||||
@Parameter(name = ApiConstants.ACCOUNT, type = CommandType.STRING, description = "Enables specified Account.")
|
||||
private String accountName;
|
||||
|
||||
@Parameter(name = ApiConstants.DOMAIN_ID, type = CommandType.UUID, entityType = DomainResponse.class, description = "Enables specified account in this domain.")
|
||||
@Parameter(name = ApiConstants.DOMAIN_ID, type = CommandType.UUID, entityType = DomainResponse.class, description = "Enables specified Account in this domain.")
|
||||
private Long domainId;
|
||||
|
||||
@Inject
|
||||
|
|
@ -98,7 +98,7 @@ public class EnableAccountCmd extends BaseCmd {
|
|||
response.setResponseName(getCommandName());
|
||||
setResponseObject(response);
|
||||
} else {
|
||||
throw new ServerApiException(ApiErrorCode.INTERNAL_ERROR, "Failed to enable account");
|
||||
throw new ServerApiException(ApiErrorCode.INTERNAL_ERROR, "Failed to enable Account");
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -23,7 +23,7 @@ import org.apache.cloudstack.api.response.AccountResponse;
|
|||
|
||||
import com.cloud.user.Account;
|
||||
|
||||
@APICommand(name = "listAccounts", description = "Lists accounts and provides detailed account information for listed accounts", responseObject = AccountResponse.class, responseView = ResponseView.Full, entityType = {Account.class},
|
||||
@APICommand(name = "listAccounts", description = "Lists Accounts and provides detailed Account information for listed Accounts", responseObject = AccountResponse.class, responseView = ResponseView.Full, entityType = {Account.class},
|
||||
requestHasSensitiveInfo = false, responseHasSensitiveInfo = true)
|
||||
public class ListAccountsCmdByAdmin extends ListAccountsCmd {
|
||||
}
|
||||
|
|
|
|||
|
|
@ -28,7 +28,7 @@ import com.cloud.user.Account;
|
|||
import com.cloud.utils.exception.CloudRuntimeException;
|
||||
|
||||
@APICommand(name = "lockAccount",
|
||||
description = "This deprecated function used to locks an account. Look for the API DisableAccount instead",
|
||||
description = "This deprecated function used to lock an Account. Look for the API DisableAccount instead",
|
||||
responseObject = AccountResponse.class,
|
||||
entityType = {Account.class},
|
||||
requestHasSensitiveInfo = false,
|
||||
|
|
@ -47,7 +47,7 @@ public class LockAccountCmd extends BaseCmd {
|
|||
type = CommandType.UUID,
|
||||
entityType = DomainResponse.class,
|
||||
required = true,
|
||||
description = "Locks the specified account on this domain.")
|
||||
description = "Locks the specified Account on this domain.")
|
||||
private Long domainId;
|
||||
|
||||
/////////////////////////////////////////////////////
|
||||
|
|
@ -78,6 +78,6 @@ public class LockAccountCmd extends BaseCmd {
|
|||
|
||||
@Override
|
||||
public void execute() {
|
||||
throw new CloudRuntimeException("LockAccount does not lock accounts. Its implementation is disabled. Use DisableAccount instead");
|
||||
throw new CloudRuntimeException("LockAccount does not lock Accounts. Its implementation is disabled. Use DisableAccount instead.");
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -41,7 +41,7 @@ import org.apache.cloudstack.region.RegionService;
|
|||
|
||||
import com.cloud.user.Account;
|
||||
|
||||
@APICommand(name = "updateAccount", description = "Updates account information for the authenticated user", responseObject = AccountResponse.class, entityType = {Account.class},
|
||||
@APICommand(name = "updateAccount", description = "Updates Account information for the authenticated user", responseObject = AccountResponse.class, entityType = {Account.class},
|
||||
responseView = ResponseView.Restricted, requestHasSensitiveInfo = false, responseHasSensitiveInfo = true)
|
||||
public class UpdateAccountCmd extends BaseCmd implements UserCmd {
|
||||
|
||||
|
|
@ -52,24 +52,24 @@ public class UpdateAccountCmd extends BaseCmd implements UserCmd {
|
|||
@Parameter(name = ApiConstants.ID, type = CommandType.UUID, entityType = AccountResponse.class, description = "Account UUID")
|
||||
private Long id;
|
||||
|
||||
@Parameter(name = ApiConstants.ACCOUNT, type = CommandType.STRING, description = "Current account name")
|
||||
@Parameter(name = ApiConstants.ACCOUNT, type = CommandType.STRING, description = "Current Account name")
|
||||
private String accountName;
|
||||
|
||||
@Parameter(name = ApiConstants.DOMAIN_ID, type = CommandType.UUID, entityType = DomainResponse.class, description = "The UUID of the domain where the account exists")
|
||||
@Parameter(name = ApiConstants.DOMAIN_ID, type = CommandType.UUID, entityType = DomainResponse.class, description = "The UUID of the domain where the Account exists")
|
||||
private Long domainId;
|
||||
|
||||
@Parameter(name = ApiConstants.ROLE_ID, type = CommandType.UUID, entityType = RoleResponse.class, description = "The UUID of the dynamic role to set for the account")
|
||||
@Parameter(name = ApiConstants.ROLE_ID, type = CommandType.UUID, entityType = RoleResponse.class, description = "The UUID of the dynamic role to set for the Account")
|
||||
private Long roleId;
|
||||
|
||||
@Parameter(name = ApiConstants.NEW_NAME, type = CommandType.STRING, description = "New name for the account")
|
||||
@Parameter(name = ApiConstants.NEW_NAME, type = CommandType.STRING, description = "New name for the Account")
|
||||
private String newName;
|
||||
|
||||
@Parameter(name = ApiConstants.NETWORK_DOMAIN,
|
||||
type = CommandType.STRING,
|
||||
description = "Network domain for the account's networks; empty string will update domainName with NULL value")
|
||||
description = "Network domain for the Account's networks; empty string will update domainName with NULL value")
|
||||
private String networkDomain;
|
||||
|
||||
@Parameter(name = ApiConstants.ACCOUNT_DETAILS, type = CommandType.MAP, description = "Details for the account used to store specific parameters")
|
||||
@Parameter(name = ApiConstants.ACCOUNT_DETAILS, type = CommandType.MAP, description = "Details for the Account used to store specific parameters")
|
||||
private Map details;
|
||||
|
||||
@Parameter(name = ApiConstants.API_KEY_ACCESS, type = CommandType.STRING, description = "Determines if Api key access for this user is enabled, disabled or inherits the value from its parent, the domain level setting api.key.access", since = "4.20.1.0", authorized = {RoleType.Admin})
|
||||
|
|
@ -144,7 +144,7 @@ public class UpdateAccountCmd extends BaseCmd implements UserCmd {
|
|||
response.setResponseName(getCommandName());
|
||||
setResponseObject(response);
|
||||
} else {
|
||||
throw new ServerApiException(ApiErrorCode.INTERNAL_ERROR, "Failed to update account");
|
||||
throw new ServerApiException(ApiErrorCode.INTERNAL_ERROR, "Failed to update Account");
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -109,7 +109,7 @@ public class CreateRoleCmd extends RoleCmd {
|
|||
}
|
||||
|
||||
if (getRoleId() != null && getRoleId() < 1L) {
|
||||
throw new ServerApiException(ApiErrorCode.PARAM_ERROR, "Invalid role id provided");
|
||||
throw new ServerApiException(ApiErrorCode.PARAM_ERROR, "Invalid role ID provided");
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -46,7 +46,7 @@ public class UpdateRoleCmd extends RoleCmd {
|
|||
description = "ID of the role", validations = {ApiArgValidator.PositiveNumber})
|
||||
private Long roleId;
|
||||
|
||||
@Parameter(name = ApiConstants.NAME, type = BaseCmd.CommandType.STRING, description = "creates a role with this unique name")
|
||||
@Parameter(name = ApiConstants.NAME, type = BaseCmd.CommandType.STRING, description = "Creates a role with this unique name")
|
||||
private String roleName;
|
||||
|
||||
@Parameter(name = ApiConstants.DESCRIPTION, type = BaseCmd.CommandType.STRING, description = "The description of the role")
|
||||
|
|
|
|||
|
|
@ -53,7 +53,7 @@ public class UpdateRolePermissionCmd extends BaseCmd {
|
|||
private Long roleId;
|
||||
|
||||
@Parameter(name = ApiConstants.RULE_ORDER, type = CommandType.LIST, collectionType = CommandType.UUID, entityType = RolePermissionResponse.class,
|
||||
description = "The parent role permission uuid, use 0 to move this rule at the top of the list")
|
||||
description = "The parent role permission UUID, use 0 to move this rule at the top of the list")
|
||||
private List<Long> rulePermissionOrder;
|
||||
|
||||
@Parameter(name = ApiConstants.RULE_ID, type = CommandType.UUID, entityType = RolePermissionResponse.class,
|
||||
|
|
|
|||
|
|
@ -41,7 +41,7 @@ public class CreateProjectRoleCmd extends ProjectRoleCmd {
|
|||
/////////////////////////////////////////////////////
|
||||
|
||||
@Parameter(name = ApiConstants.NAME, type = BaseCmd.CommandType.STRING, required = true,
|
||||
description = "creates a project role with this unique name")
|
||||
description = "Creates a project role with this unique name")
|
||||
private String projectRoleName;
|
||||
|
||||
/////////////////////////////////////////////////////
|
||||
|
|
|
|||
|
|
@ -43,7 +43,7 @@ public class UpdateProjectRoleCmd extends ProjectRoleCmd {
|
|||
private Long id;
|
||||
|
||||
@Parameter(name = ApiConstants.NAME, type = BaseCmd.CommandType.STRING,
|
||||
description = "creates a project role with this unique name", validations = {ApiArgValidator.NotNullOrEmpty})
|
||||
description = "Creates a project role with this unique name", validations = {ApiArgValidator.NotNullOrEmpty})
|
||||
private String projectRoleName;
|
||||
|
||||
/////////////////////////////////////////////////////
|
||||
|
|
|
|||
|
|
@ -57,7 +57,7 @@ public class UpdateProjectRolePermissionCmd extends BaseCmd {
|
|||
private Long projectId;
|
||||
|
||||
@Parameter(name = ApiConstants.RULE_ORDER, type = CommandType.LIST, collectionType = CommandType.UUID, entityType = ProjectRolePermissionResponse.class,
|
||||
description = "The parent role permission uuid, use 0 to move this rule at the top of the list")
|
||||
description = "ID of the parent role permission, use 0 to move this rule at the top of the list")
|
||||
private List<Long> projectRulePermissionOrder;
|
||||
|
||||
@Parameter(name = ApiConstants.PROJECT_ROLE_PERMISSION_ID, type = CommandType.UUID, entityType = ProjectRolePermissionResponse.class,
|
||||
|
|
|
|||
|
|
@ -40,7 +40,7 @@ public class AcquirePodIpCmdByAdmin extends BaseCmd {
|
|||
//////////////// API parameters /////////////////////
|
||||
/////////////////////////////////////////////////////
|
||||
|
||||
@Parameter(name = ApiConstants.ZONE_ID, type = CommandType.STRING, entityType = ZoneResponse.class, required = true, description = "the ID of the zone")
|
||||
@Parameter(name = ApiConstants.ZONE_ID, type = CommandType.STRING, entityType = ZoneResponse.class, required = true, description = "The ID of the zone")
|
||||
private String zoneId;
|
||||
|
||||
@Parameter(name = ApiConstants.POD_ID, type = CommandType.STRING, entityType = ZoneResponse.class, required = false, description = "Pod ID")
|
||||
|
|
|
|||
|
|
@ -23,7 +23,7 @@ import org.apache.cloudstack.api.command.admin.AdminCmd;
|
|||
import org.apache.cloudstack.api.command.user.address.AssociateIPAddrCmd;
|
||||
import org.apache.cloudstack.api.response.IPAddressResponse;
|
||||
|
||||
@APICommand(name = "associateIpAddress", description = "Acquires and associates a public IP to an account.", responseObject = IPAddressResponse.class, responseView = ResponseView.Full,
|
||||
@APICommand(name = "associateIpAddress", description = "Acquires and associates a public IP to an Account.", responseObject = IPAddressResponse.class, responseView = ResponseView.Full,
|
||||
requestHasSensitiveInfo = false, responseHasSensitiveInfo = false)
|
||||
public class AssociateIPAddrCmdByAdmin extends AssociateIPAddrCmd implements AdminCmd {
|
||||
}
|
||||
|
|
|
|||
|
|
@ -24,6 +24,6 @@ import org.apache.cloudstack.api.response.IPAddressResponse;
|
|||
|
||||
import com.cloud.network.IpAddress;
|
||||
|
||||
@APICommand(name = "listPublicIpAddresses", description = "Lists all public ip addresses", responseObject = IPAddressResponse.class, responseView = ResponseView.Full,
|
||||
@APICommand(name = "listPublicIpAddresses", description = "Lists all public IP addresses", responseObject = IPAddressResponse.class, responseView = ResponseView.Full,
|
||||
requestHasSensitiveInfo = false, responseHasSensitiveInfo = false, entityType = {IpAddress.class})
|
||||
public class ListPublicIpAddressesCmdByAdmin extends ListPublicIpAddressesCmd implements AdminCmd {}
|
||||
|
|
|
|||
|
|
@ -70,7 +70,7 @@ public class ReleasePodIpCmdByAdmin extends BaseCmd {
|
|||
response.setDisplayText("IP is released successfully");
|
||||
setResponseObject(response);
|
||||
} else {
|
||||
throw new ServerApiException(ApiErrorCode.INTERNAL_ERROR, "Failed to release Pod ip ");
|
||||
throw new ServerApiException(ApiErrorCode.INTERNAL_ERROR, "Failed to release Pod IP");
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -26,7 +26,7 @@ import org.apache.cloudstack.api.response.UserVmResponse;
|
|||
import com.cloud.vm.VirtualMachine;
|
||||
|
||||
|
||||
@APICommand(name = "updateVMAffinityGroup", description = "Updates the affinity/anti-affinity group associations of a virtual machine. The VM has to be stopped and restarted for the "
|
||||
@APICommand(name = "updateVMAffinityGroup", description = "Updates the affinity/anti-affinity group associations of an Instance. The Instance has to be stopped and restarted for the "
|
||||
+ "new properties to take effect.", responseObject = UserVmResponse.class, responseView = ResponseView.Full,
|
||||
entityType = {VirtualMachine.class},
|
||||
requestHasSensitiveInfo = false,
|
||||
|
|
|
|||
|
|
@ -33,22 +33,22 @@ import org.apache.cloudstack.api.response.AnnotationResponse;
|
|||
import org.apache.cloudstack.context.CallContext;
|
||||
import org.apache.commons.lang3.BooleanUtils;
|
||||
|
||||
@APICommand(name = "addAnnotation", description = "add an annotation.", responseObject = AnnotationResponse.class,
|
||||
@APICommand(name = "addAnnotation", description = "Add an annotation.", responseObject = AnnotationResponse.class,
|
||||
requestHasSensitiveInfo = false, responseHasSensitiveInfo = false, since = "4.11", authorized = {RoleType.Admin})
|
||||
public class AddAnnotationCmd extends BaseCmd {
|
||||
|
||||
|
||||
@Parameter(name = ApiConstants.ANNOTATION, type = CommandType.STRING, description = "the annotation text")
|
||||
@Parameter(name = ApiConstants.ANNOTATION, type = CommandType.STRING, description = "The annotation text")
|
||||
private String annotation;
|
||||
|
||||
@Parameter(name = ApiConstants.ENTITY_TYPE, type = CommandType.STRING, description = "The following entity types are allowed VM, VOLUME, SNAPSHOT, VM_SNAPSHOT, INSTANCE_GROUP, SSH_KEYPAIR, USER_DATA, NETWORK, VPC, PUBLIC_IP_ADDRESS, VPN_CUSTOMER_GATEWAY, TEMPLATE, ISO, KUBERNETES_CLUSTER, SERVICE_OFFERING, DISK_OFFERING, NETWORK_OFFERING, ZONE, POD, CLUSTER, HOST, DOMAIN, PRIMARY_STORAGE, SECONDARY_STORAGE, VR, SYSTEM_VM, AUTOSCALE_VM_GROUP, MANAGEMENT_SERVER")
|
||||
private String entityType;
|
||||
|
||||
@Parameter(name = ApiConstants.ENTITY_ID, type = CommandType.STRING, description = "the id of the entity to annotate")
|
||||
@Parameter(name = ApiConstants.ENTITY_ID, type = CommandType.STRING, description = "The ID of the entity to annotate")
|
||||
private String entityUuid;
|
||||
|
||||
@Parameter(name = ApiConstants.ADMINS_ONLY, type = CommandType.BOOLEAN, since = "4.16.0",
|
||||
description = "the annotation is visible for admins only")
|
||||
description = "The annotation is visible for admins only")
|
||||
private Boolean adminsOnly;
|
||||
|
||||
public String getAnnotation() {
|
||||
|
|
@ -77,7 +77,7 @@ public class AddAnnotationCmd extends BaseCmd {
|
|||
public void execute()
|
||||
throws ResourceUnavailableException, InsufficientCapacityException, ServerApiException, ConcurrentOperationException, ResourceAllocationException,
|
||||
NetworkRuleConflictException {
|
||||
Preconditions.checkNotNull(getEntityUuid(),"I have to have an entity to set an annotation on!");
|
||||
Preconditions.checkNotNull(getEntityUuid(),"I need to have an entity to set an annotation on!");
|
||||
Preconditions.checkState(AnnotationService.EntityType.contains(entityType),(java.lang.String)"'%s' is not a valid EntityType to put annotations on", entityType);
|
||||
AnnotationResponse annotationResponse = annotationService.addAnnotation(this);
|
||||
annotationResponse.setResponseName(getCommandName());
|
||||
|
|
|
|||
|
|
@ -37,22 +37,22 @@ import org.apache.commons.lang3.StringUtils;
|
|||
public class ListAnnotationsCmd extends BaseListCmd {
|
||||
|
||||
|
||||
@Parameter(name = ApiConstants.ID, type = CommandType.STRING, description = "the id of the annotation")
|
||||
@Parameter(name = ApiConstants.ID, type = CommandType.STRING, description = "The ID of the annotation")
|
||||
private String uuid;
|
||||
|
||||
@Parameter(name = ApiConstants.ENTITY_TYPE, type = CommandType.STRING, description = "the entity type")
|
||||
@Parameter(name = ApiConstants.ENTITY_TYPE, type = CommandType.STRING, description = "The entity type")
|
||||
private String entityType;
|
||||
|
||||
@Parameter(name = ApiConstants.ENTITY_ID, type = CommandType.STRING, description = "the id of the entity for which to show annotations")
|
||||
@Parameter(name = ApiConstants.ENTITY_ID, type = CommandType.STRING, description = "The ID of the entity for which to show annotations")
|
||||
private String entityUuid;
|
||||
|
||||
@Parameter(name = ApiConstants.USER_ID, type = CommandType.STRING, since = "4.16.0",
|
||||
description = "optional: the id of the user of the annotation", required = false)
|
||||
description = "Optional: The ID of the user of the annotation", required = false)
|
||||
private String userUuid;
|
||||
|
||||
@Parameter(name = ApiConstants.ANNOTATION_FILTER,
|
||||
type = CommandType.STRING, since = "4.16.0",
|
||||
description = "possible values are \"self\" and \"all\". "
|
||||
description = "Possible values are \"self\" and \"all\". "
|
||||
+ "* self : annotations that have been created by the calling user. "
|
||||
+ "* all : all the annotations the calling user can access")
|
||||
private String annotationFilter;
|
||||
|
|
|
|||
|
|
@ -30,12 +30,12 @@ import org.apache.cloudstack.api.ServerApiException;
|
|||
import org.apache.cloudstack.api.response.AnnotationResponse;
|
||||
import org.apache.cloudstack.context.CallContext;
|
||||
|
||||
@APICommand(name = "removeAnnotation", description = "remove an annotation.", responseObject = AnnotationResponse.class,
|
||||
@APICommand(name = "removeAnnotation", description = "Remove an annotation.", responseObject = AnnotationResponse.class,
|
||||
requestHasSensitiveInfo = false, responseHasSensitiveInfo = false, since = "4.11", authorized = {RoleType.Admin})
|
||||
public class RemoveAnnotationCmd extends BaseCmd {
|
||||
|
||||
|
||||
@Parameter(name = ApiConstants.ID, type = CommandType.STRING, required = true, description = "the id of the annotation")
|
||||
@Parameter(name = ApiConstants.ID, type = CommandType.STRING, required = true, description = "The ID of the annotation")
|
||||
private String uuid;
|
||||
|
||||
public String getUuid() {
|
||||
|
|
|
|||
|
|
@ -30,7 +30,7 @@ import org.apache.cloudstack.api.ServerApiException;
|
|||
import org.apache.cloudstack.api.response.AnnotationResponse;
|
||||
import org.apache.cloudstack.context.CallContext;
|
||||
|
||||
@APICommand(name = "updateAnnotationVisibility", description = "update an annotation visibility.",
|
||||
@APICommand(name = "updateAnnotationVisibility", description = "Update an annotation visibility.",
|
||||
responseObject = AnnotationResponse.class,
|
||||
requestHasSensitiveInfo = false, responseHasSensitiveInfo = false,
|
||||
since = "4.16", authorized = {RoleType.Admin})
|
||||
|
|
@ -38,11 +38,11 @@ public class UpdateAnnotationVisibilityCmd extends BaseCmd {
|
|||
|
||||
|
||||
@Parameter(name = ApiConstants.ID, type = CommandType.STRING, required = true,
|
||||
description = "the id of the annotation")
|
||||
description = "The ID of the annotation")
|
||||
private String uuid;
|
||||
|
||||
@Parameter(name = ApiConstants.ADMINS_ONLY, type = CommandType.BOOLEAN, required = true,
|
||||
description = "the annotation is visible for admins only")
|
||||
description = "The annotation is visible for admins only")
|
||||
private Boolean adminsOnly;
|
||||
|
||||
public String getUuid() {
|
||||
|
|
|
|||
|
|
@ -17,6 +17,7 @@
|
|||
|
||||
package org.apache.cloudstack.api.command.admin.autoscale;
|
||||
|
||||
import org.apache.cloudstack.context.CallContext;
|
||||
|
||||
import org.apache.cloudstack.api.APICommand;
|
||||
import org.apache.cloudstack.api.ApiCommandResourceType;
|
||||
|
|
@ -31,7 +32,7 @@ import com.cloud.event.EventTypes;
|
|||
import com.cloud.network.as.Counter;
|
||||
import com.cloud.user.Account;
|
||||
|
||||
@APICommand(name = "createCounter", description = "Adds metric counter for VM auto scaling", responseObject = CounterResponse.class,
|
||||
@APICommand(name = "createCounter", description = "Adds metric counter for Instance auto scaling", responseObject = CounterResponse.class,
|
||||
requestHasSensitiveInfo = false, responseHasSensitiveInfo = false)
|
||||
public class CreateCounterCmd extends BaseAsyncCreateCmd {
|
||||
private static final String s_name = "counterresponse";
|
||||
|
|
@ -89,9 +90,6 @@ public class CreateCounterCmd extends BaseAsyncCreateCmd {
|
|||
if (ctr != null) {
|
||||
this.setEntityId(ctr.getId());
|
||||
this.setEntityUuid(ctr.getUuid());
|
||||
CounterResponse response = _responseGenerator.createCounterResponse(ctr);
|
||||
response.setResponseName(getCommandName());
|
||||
this.setResponseObject(response);
|
||||
} else {
|
||||
throw new ServerApiException(ApiErrorCode.INTERNAL_ERROR, "Failed to create Counter with name " + getName());
|
||||
}
|
||||
|
|
@ -99,6 +97,11 @@ public class CreateCounterCmd extends BaseAsyncCreateCmd {
|
|||
|
||||
@Override
|
||||
public void execute() {
|
||||
CallContext.current().setEventDetails("Counter ID: " + getEntityId());
|
||||
Counter ctr = _autoScaleService.getCounter(getEntityId());
|
||||
CounterResponse response = _responseGenerator.createCounterResponse(ctr);
|
||||
response.setResponseName(getCommandName());
|
||||
this.setResponseObject(response);
|
||||
}
|
||||
|
||||
@Override
|
||||
|
|
@ -113,7 +116,7 @@ public class CreateCounterCmd extends BaseAsyncCreateCmd {
|
|||
|
||||
@Override
|
||||
public String getEventDescription() {
|
||||
return "creating a new Counter";
|
||||
return "Creating a new Counter";
|
||||
}
|
||||
|
||||
@Override
|
||||
|
|
|
|||
|
|
@ -32,7 +32,7 @@ import com.cloud.event.EventTypes;
|
|||
import com.cloud.exception.ResourceInUseException;
|
||||
import com.cloud.user.Account;
|
||||
|
||||
@APICommand(name = "deleteCounter", description = "Deletes a counter for VM auto scaling", responseObject = SuccessResponse.class,
|
||||
@APICommand(name = "deleteCounter", description = "Deletes a counter for Instance auto scaling", responseObject = SuccessResponse.class,
|
||||
requestHasSensitiveInfo = false, responseHasSensitiveInfo = false)
|
||||
public class DeleteCounterCmd extends BaseAsyncCmd {
|
||||
|
||||
|
|
@ -40,7 +40,7 @@ public class DeleteCounterCmd extends BaseAsyncCmd {
|
|||
// ////////////// API parameters /////////////////////
|
||||
// ///////////////////////////////////////////////////
|
||||
|
||||
@Parameter(name = ApiConstants.ID, type = CommandType.UUID, entityType = CounterResponse.class, required = true, description = "the ID of the counter")
|
||||
@Parameter(name = ApiConstants.ID, type = CommandType.UUID, entityType = CounterResponse.class, required = true, description = "The ID of the counter")
|
||||
private Long id;
|
||||
|
||||
// ///////////////////////////////////////////////////
|
||||
|
|
|
|||
|
|
@ -55,11 +55,11 @@ public class ImportBackupOfferingCmd extends BaseAsyncCmd {
|
|||
////////////////////////////////////////////////////
|
||||
|
||||
@Parameter(name = ApiConstants.NAME, type = CommandType.STRING, required = true,
|
||||
description = "the name of the backup offering")
|
||||
description = "The name of the backup offering")
|
||||
private String name;
|
||||
|
||||
@Parameter(name = ApiConstants.DESCRIPTION, type = CommandType.STRING, required = true,
|
||||
description = "the description of the backup offering")
|
||||
description = "The description of the backup offering")
|
||||
private String description;
|
||||
|
||||
@Parameter(name = ApiConstants.EXTERNAL_ID,
|
||||
|
|
|
|||
|
|
@ -52,7 +52,7 @@ public class ProvisionCertificateCmd extends BaseAsyncCmd {
|
|||
/////////////////////////////////////////////////////
|
||||
|
||||
@Parameter(name = ApiConstants.HOST_ID, type = CommandType.UUID, required = true, entityType = HostResponse.class,
|
||||
description = "The host/agent uuid to which the certificate has to be provisioned (issued and propagated)")
|
||||
description = "The host/agent ID to which the certificate has to be provisioned (issued and propagated)")
|
||||
private Long hostId;
|
||||
|
||||
@Parameter(name = ApiConstants.RECONNECT, type = CommandType.BOOLEAN,
|
||||
|
|
@ -108,7 +108,7 @@ public class ProvisionCertificateCmd extends BaseAsyncCmd {
|
|||
|
||||
@Override
|
||||
public String getEventDescription() {
|
||||
return "provisioning certificate for host id=" + hostId + " using provider=" + provider;
|
||||
return "Provisioning certificate for host id=" + hostId + " using provider=" + provider;
|
||||
}
|
||||
|
||||
@Override
|
||||
|
|
|
|||
|
|
@ -105,6 +105,6 @@ public class RevokeCertificateCmd extends BaseAsyncCmd {
|
|||
|
||||
@Override
|
||||
public String getEventDescription() {
|
||||
return "revoking certificate with serial id=" + serial + ", cn=" + cn;
|
||||
return "Revoking certificate with serial id=" + serial + ", cn=" + cn;
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -44,48 +44,48 @@ import com.cloud.user.Account;
|
|||
requestHasSensitiveInfo = true, responseHasSensitiveInfo = false)
|
||||
public class AddClusterCmd extends BaseCmd {
|
||||
|
||||
@Parameter(name = ApiConstants.CLUSTER_NAME, type = CommandType.STRING, required = true, description = "the cluster name")
|
||||
@Parameter(name = ApiConstants.CLUSTER_NAME, type = CommandType.STRING, required = true, description = "The cluster name")
|
||||
private String clusterName;
|
||||
|
||||
@Parameter(name = ApiConstants.PASSWORD, type = CommandType.STRING, required = false, description = "the password for the host")
|
||||
@Parameter(name = ApiConstants.PASSWORD, type = CommandType.STRING, required = false, description = "The password for the host")
|
||||
private String password;
|
||||
|
||||
@Parameter(name = ApiConstants.POD_ID, type = CommandType.UUID, entityType = PodResponse.class, required = true, description = "the Pod ID for the host")
|
||||
@Parameter(name = ApiConstants.POD_ID, type = CommandType.UUID, entityType = PodResponse.class, required = true, description = "The Pod ID for the host")
|
||||
private Long podId;
|
||||
|
||||
@Parameter(name = ApiConstants.URL, type = CommandType.STRING, required = false, description = "the URL")
|
||||
@Parameter(name = ApiConstants.URL, type = CommandType.STRING, required = false, description = "The URL")
|
||||
private String url;
|
||||
|
||||
@Parameter(name = ApiConstants.USERNAME, type = CommandType.STRING, required = false, description = "the username for the cluster")
|
||||
@Parameter(name = ApiConstants.USERNAME, type = CommandType.STRING, required = false, description = "The username for the cluster")
|
||||
private String username;
|
||||
|
||||
@Parameter(name = ApiConstants.ZONE_ID, type = CommandType.UUID, entityType = ZoneResponse.class, required = true, description = "the Zone ID for the cluster")
|
||||
@Parameter(name = ApiConstants.ZONE_ID, type = CommandType.UUID, entityType = ZoneResponse.class, required = true, description = "The Zone ID for the cluster")
|
||||
private Long zoneId;
|
||||
|
||||
@Parameter(name = ApiConstants.HYPERVISOR,
|
||||
type = CommandType.STRING,
|
||||
required = true,
|
||||
description = "hypervisor type of the cluster: XenServer,KVM,VMware,Hyperv,BareMetal,Simulator,Ovm3,External")
|
||||
description = "Hypervisor type of the cluster: XenServer,KVM,VMware,Hyperv,BareMetal,Simulator,Ovm3,External")
|
||||
private String hypervisor;
|
||||
|
||||
@Parameter(name = ApiConstants.ARCH, type = CommandType.STRING,
|
||||
description = "the CPU arch of the cluster. Valid options are: x86_64, aarch64",
|
||||
description = "The CPU arch of the cluster. Valid options are: x86_64, aarch64",
|
||||
since = "4.20")
|
||||
private String arch;
|
||||
|
||||
@Parameter(name = ApiConstants.CLUSTER_TYPE, type = CommandType.STRING, required = true, description = "type of the cluster: CloudManaged, ExternalManaged")
|
||||
@Parameter(name = ApiConstants.CLUSTER_TYPE, type = CommandType.STRING, required = true, description = "Type of the cluster: CloudManaged, ExternalManaged")
|
||||
private String clusterType;
|
||||
|
||||
@Parameter(name = ApiConstants.ALLOCATION_STATE, type = CommandType.STRING, description = "Allocation state of this cluster for allocation of new resources")
|
||||
private String allocationState;
|
||||
|
||||
@Parameter(name = ApiConstants.VSM_USERNAME, type = CommandType.STRING, required = false, description = "the username for the VSM associated with this cluster")
|
||||
@Parameter(name = ApiConstants.VSM_USERNAME, type = CommandType.STRING, required = false, description = "The username for the VSM associated with this cluster")
|
||||
private String vsmusername;
|
||||
|
||||
@Parameter(name = ApiConstants.VSM_PASSWORD, type = CommandType.STRING, required = false, description = "the password for the VSM associated with this cluster")
|
||||
@Parameter(name = ApiConstants.VSM_PASSWORD, type = CommandType.STRING, required = false, description = "The password for the VSM associated with this cluster")
|
||||
private String vsmpassword;
|
||||
|
||||
@Parameter(name = ApiConstants.VSM_IPADDRESS, type = CommandType.STRING, required = false, description = "the ipaddress of the VSM associated with this cluster")
|
||||
@Parameter(name = ApiConstants.VSM_IPADDRESS, type = CommandType.STRING, required = false, description = "The IP address of the VSM associated with this cluster")
|
||||
private String vsmipaddress;
|
||||
|
||||
@Parameter(name = ApiConstants.VSWITCH_TYPE_GUEST_TRAFFIC,
|
||||
|
|
@ -109,7 +109,7 @@ public class AddClusterCmd extends BaseCmd {
|
|||
@Parameter(name = ApiConstants.VSWITCH_NAME_PUBLIC_TRAFFIC,
|
||||
type = CommandType.STRING,
|
||||
required = false,
|
||||
description = "Name of virtual switch used for public traffic in the cluster. This would override zone wide traffic label setting.")
|
||||
description = "Name of virtual switch used for public traffic in the cluster. This would override zone wide traffic label setting.")
|
||||
private String vSwitchNamePublicTraffic;
|
||||
|
||||
@Parameter(name = ApiConstants.OVM3_POOL, type = CommandType.STRING, required = false, description = "Ovm3 native pooling enabled for cluster")
|
||||
|
|
|
|||
|
|
@ -38,7 +38,7 @@ public class DeleteClusterCmd extends BaseCmd {
|
|||
//////////////// API parameters /////////////////////
|
||||
/////////////////////////////////////////////////////
|
||||
|
||||
@Parameter(name = ApiConstants.ID, type = CommandType.UUID, entityType = ClusterResponse.class, required = true, description = "the cluster ID")
|
||||
@Parameter(name = ApiConstants.ID, type = CommandType.UUID, entityType = ClusterResponse.class, required = true, description = "The cluster ID")
|
||||
private Long id;
|
||||
|
||||
/////////////////////////////////////////////////////
|
||||
|
|
|
|||
|
|
@ -52,31 +52,31 @@ public class ListClustersCmd extends BaseListCmd {
|
|||
//////////////// API parameters /////////////////////
|
||||
/////////////////////////////////////////////////////
|
||||
|
||||
@Parameter(name = ApiConstants.ID, type = CommandType.UUID, entityType = ClusterResponse.class, description = "lists clusters by the cluster ID")
|
||||
@Parameter(name = ApiConstants.ID, type = CommandType.UUID, entityType = ClusterResponse.class, description = "Lists clusters by the cluster ID")
|
||||
private Long id;
|
||||
|
||||
@Parameter(name = ApiConstants.NAME, type = CommandType.STRING, description = "lists clusters by the cluster name")
|
||||
@Parameter(name = ApiConstants.NAME, type = CommandType.STRING, description = "Lists clusters by the cluster name")
|
||||
private String clusterName;
|
||||
|
||||
@Parameter(name = ApiConstants.POD_ID, type = CommandType.UUID, entityType = PodResponse.class, description = "lists clusters by Pod ID")
|
||||
@Parameter(name = ApiConstants.POD_ID, type = CommandType.UUID, entityType = PodResponse.class, description = "Lists clusters by Pod ID")
|
||||
private Long podId;
|
||||
|
||||
@Parameter(name = ApiConstants.ZONE_ID, type = CommandType.UUID, entityType = ZoneResponse.class, description = "lists clusters by Zone ID")
|
||||
@Parameter(name = ApiConstants.ZONE_ID, type = CommandType.UUID, entityType = ZoneResponse.class, description = "Lists clusters by Zone ID")
|
||||
private Long zoneId;
|
||||
|
||||
@Parameter(name = ApiConstants.HYPERVISOR, type = CommandType.STRING, description = "lists clusters by hypervisor type")
|
||||
@Parameter(name = ApiConstants.HYPERVISOR, type = CommandType.STRING, description = "Lists clusters by hypervisor type")
|
||||
private String hypervisorType;
|
||||
|
||||
@Parameter(name = ApiConstants.CLUSTER_TYPE, type = CommandType.STRING, description = "lists clusters by cluster type")
|
||||
@Parameter(name = ApiConstants.CLUSTER_TYPE, type = CommandType.STRING, description = "Lists clusters by cluster type")
|
||||
private String clusterType;
|
||||
|
||||
@Parameter(name = ApiConstants.ALLOCATION_STATE, type = CommandType.STRING, description = "lists clusters by allocation state")
|
||||
@Parameter(name = ApiConstants.ALLOCATION_STATE, type = CommandType.STRING, description = "Lists clusters by allocation state")
|
||||
private String allocationState;
|
||||
|
||||
@Parameter(name = ApiConstants.MANAGED_STATE, type = CommandType.STRING, description = "whether this cluster is managed by cloudstack")
|
||||
@Parameter(name = ApiConstants.MANAGED_STATE, type = CommandType.STRING, description = "Whether this cluster is managed by cloudstack")
|
||||
private String managedState;
|
||||
|
||||
@Parameter(name = ApiConstants.SHOW_CAPACITIES, type = CommandType.BOOLEAN, description = "flag to display the capacity of the clusters")
|
||||
@Parameter(name = ApiConstants.SHOW_CAPACITIES, type = CommandType.BOOLEAN, description = "Flag to display the capacity of the clusters")
|
||||
private Boolean showCapacities;
|
||||
|
||||
@Parameter(name = ApiConstants.ARCH, type = CommandType.STRING,
|
||||
|
|
|
|||
|
|
@ -39,22 +39,22 @@ import org.apache.commons.lang3.StringUtils;
|
|||
public class UpdateClusterCmd extends BaseCmd {
|
||||
|
||||
|
||||
@Parameter(name = ApiConstants.ID, type = CommandType.UUID, entityType = ClusterResponse.class, required = true, description = "the ID of the Cluster")
|
||||
@Parameter(name = ApiConstants.ID, type = CommandType.UUID, entityType = ClusterResponse.class, required = true, description = "The ID of the Cluster")
|
||||
private Long id;
|
||||
|
||||
@Parameter(name = ApiConstants.CLUSTER_NAME, type = CommandType.STRING, description = "the cluster name")
|
||||
@Parameter(name = ApiConstants.CLUSTER_NAME, type = CommandType.STRING, description = "The cluster name")
|
||||
private String clusterName;
|
||||
|
||||
@Parameter(name = ApiConstants.HYPERVISOR, type = CommandType.STRING, description = "hypervisor type of the cluster")
|
||||
@Parameter(name = ApiConstants.HYPERVISOR, type = CommandType.STRING, description = "Hypervisor type of the cluster")
|
||||
private String hypervisor;
|
||||
|
||||
@Parameter(name = ApiConstants.CLUSTER_TYPE, type = CommandType.STRING, description = "hypervisor type of the cluster")
|
||||
@Parameter(name = ApiConstants.CLUSTER_TYPE, type = CommandType.STRING, description = "Hypervisor type of the cluster")
|
||||
private String clusterType;
|
||||
|
||||
@Parameter(name = ApiConstants.ALLOCATION_STATE, type = CommandType.STRING, description = "Allocation state of this cluster for allocation of new resources")
|
||||
private String allocationState;
|
||||
|
||||
@Parameter(name = ApiConstants.MANAGED_STATE, type = CommandType.STRING, description = "whether this cluster is managed by cloudstack")
|
||||
@Parameter(name = ApiConstants.MANAGED_STATE, type = CommandType.STRING, description = "Whether this cluster is managed by cloudstack")
|
||||
private String managedState;
|
||||
|
||||
@Parameter(name = ApiConstants.ARCH, type = CommandType.STRING,
|
||||
|
|
|
|||
|
|
@ -40,7 +40,7 @@ public class ListCfgGroupsByCmd extends BaseListCmd {
|
|||
// ////////////// API parameters /////////////////////
|
||||
// ///////////////////////////////////////////////////
|
||||
|
||||
@Parameter(name = ApiConstants.GROUP, type = CommandType.STRING, description = "lists configuration group by group name")
|
||||
@Parameter(name = ApiConstants.GROUP, type = CommandType.STRING, description = "Lists configuration group by group name")
|
||||
private String groupName;
|
||||
|
||||
// ///////////////////////////////////////////////////
|
||||
|
|
|
|||
|
|
@ -52,55 +52,55 @@ public class ListCfgsByCmd extends BaseListCmd {
|
|||
// ////////////// API parameters /////////////////////
|
||||
// ///////////////////////////////////////////////////
|
||||
|
||||
@Parameter(name = ApiConstants.CATEGORY, type = CommandType.STRING, description = "lists configurations by category")
|
||||
@Parameter(name = ApiConstants.CATEGORY, type = CommandType.STRING, description = "Lists configurations by category")
|
||||
private String category;
|
||||
|
||||
@Parameter(name = ApiConstants.NAME, type = CommandType.STRING, description = "lists configuration by name")
|
||||
@Parameter(name = ApiConstants.NAME, type = CommandType.STRING, description = "Lists configuration by name")
|
||||
private String configName;
|
||||
|
||||
@Parameter(name = ApiConstants.ZONE_ID,
|
||||
type = CommandType.UUID,
|
||||
entityType = ZoneResponse.class,
|
||||
description = "the ID of the Zone to update the parameter value for corresponding zone")
|
||||
description = "The ID of the Zone to update the parameter value for corresponding zone")
|
||||
private Long zoneId;
|
||||
|
||||
@Parameter(name = ApiConstants.CLUSTER_ID,
|
||||
type = CommandType.UUID,
|
||||
entityType = ClusterResponse.class,
|
||||
description = "the ID of the Cluster to update the parameter value for corresponding cluster")
|
||||
description = "The ID of the Cluster to update the parameter value for corresponding cluster")
|
||||
private Long clusterId;
|
||||
|
||||
@Parameter(name = ApiConstants.STORAGE_ID,
|
||||
type = CommandType.UUID,
|
||||
entityType = StoragePoolResponse.class,
|
||||
description = "the ID of the Storage pool to update the parameter value for corresponding storage pool")
|
||||
description = "The ID of the Storage pool to update the parameter value for corresponding storage pool")
|
||||
private Long storagePoolId;
|
||||
|
||||
@Parameter(name = ApiConstants.ACCOUNT_ID,
|
||||
type = CommandType.UUID,
|
||||
entityType = AccountResponse.class,
|
||||
description = "the ID of the Account to update the parameter value for corresponding account")
|
||||
description = "The ID of the Account to update the parameter value for corresponding account")
|
||||
private Long accountId;
|
||||
|
||||
@Parameter(name = ApiConstants.DOMAIN_ID,
|
||||
type = CommandType.UUID,
|
||||
entityType = DomainResponse.class,
|
||||
description = "the ID of the Domain to update the parameter value for corresponding domain")
|
||||
description = "The ID of the Domain to update the parameter value for corresponding domain")
|
||||
private Long domainId;
|
||||
|
||||
@Parameter(name = ApiConstants.IMAGE_STORE_UUID,
|
||||
type = CommandType.UUID,
|
||||
entityType = ImageStoreResponse.class,
|
||||
description = "the ID of the Image Store to update the parameter value for corresponding image store")
|
||||
description = "The ID of the Image Store to update the parameter value for corresponding image store")
|
||||
private Long imageStoreId;
|
||||
|
||||
@Parameter(name = ApiConstants.GROUP, type = CommandType.STRING, description = "lists configuration by group name (primarily used for UI)", since = "4.18.0")
|
||||
@Parameter(name = ApiConstants.GROUP, type = CommandType.STRING, description = "Lists configuration by group name (primarily used for UI)", since = "4.18.0")
|
||||
private String groupName;
|
||||
|
||||
@Parameter(name = ApiConstants.SUBGROUP, type = CommandType.STRING, description = "lists configuration by subgroup name (primarily used for UI)", since = "4.18.0")
|
||||
@Parameter(name = ApiConstants.SUBGROUP, type = CommandType.STRING, description = "Lists configuration by subgroup name (primarily used for UI)", since = "4.18.0")
|
||||
private String subGroupName;
|
||||
|
||||
@Parameter(name = ApiConstants.PARENT, type = CommandType.STRING, description = "lists configuration by parent name (primarily used for UI)", since = "4.18.0")
|
||||
@Parameter(name = ApiConstants.PARENT, type = CommandType.STRING, description = "Lists configuration by parent name (primarily used for UI)", since = "4.18.0")
|
||||
private String parentName;
|
||||
|
||||
// ///////////////////////////////////////////////////
|
||||
|
|
|
|||
|
|
@ -47,7 +47,7 @@ public class ListHypervisorCapabilitiesCmd extends BaseListCmd {
|
|||
@Parameter(name = ApiConstants.ID, type = CommandType.UUID, entityType = HypervisorCapabilitiesResponse.class, description = "ID of the hypervisor capability")
|
||||
private Long id;
|
||||
|
||||
@Parameter(name = ApiConstants.HYPERVISOR, type = CommandType.STRING, description = "the hypervisor for which to restrict the search")
|
||||
@Parameter(name = ApiConstants.HYPERVISOR, type = CommandType.STRING, description = "The hypervisor for which to restrict the search")
|
||||
private String hypervisor;
|
||||
|
||||
/////////////////////////////////////////////////////
|
||||
|
|
|
|||
Some files were not shown because too many files have changed in this diff Show More
Loading…
Reference in New Issue