Compare commits
11 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
5946fbb5b1 | ||
|
|
2830afdc75 | ||
|
|
1912b9aa82 | ||
|
|
1f9194ced5 | ||
|
|
9387369cd7 | ||
|
|
431319ee4d | ||
|
|
e3c903cfce | ||
|
|
e3f0a3d2b5 | ||
|
|
88351df1c2 | ||
|
|
df3ec7849e | ||
|
|
db70063cee |
@@ -2,8 +2,7 @@
|
||||
templates:
|
||||
- openstack-cover-jobs
|
||||
- openstack-lower-constraints-jobs
|
||||
- openstack-python-jobs
|
||||
- openstack-python3-train-jobs
|
||||
- openstack-python3-ussuri-jobs
|
||||
- publish-openstack-docs-pti
|
||||
- check-requirements
|
||||
- openstackclient-plugin-jobs
|
||||
|
||||
@@ -2,6 +2,7 @@
|
||||
# of appearance. Changing the order has an impact on the overall integration
|
||||
# process, which may cause wedges in the gate later.
|
||||
|
||||
openstackdocstheme>=1.18.1 # Apache-2.0
|
||||
sphinx!=1.6.6,!=1.6.7,>=1.6.5,<2.0.0;python_version=='2.7' # BSD
|
||||
sphinx!=1.6.6,!=1.6.7,>=1.6.5;python_version>='3.4' # BSD
|
||||
openstackdocstheme>=1.32.1 # Apache-2.0
|
||||
sphinx!=1.6.6,!=1.6.7,>=1.6.5 # BSD
|
||||
sphinxcontrib-apidoc>=0.2.0 # BSD
|
||||
|
||||
|
||||
@@ -620,38 +620,43 @@ Create new audit template.
|
||||
``--scope <path>``
|
||||
Part of the cluster on which an audit will be done.
|
||||
Can be provided either in yaml or json file.
|
||||
YAML example:
|
||||
---- host_aggregates:
|
||||
- id: 1
|
||||
- id: 2
|
||||
- id: 3
|
||||
|
||||
YAML example:
|
||||
::
|
||||
|
||||
---
|
||||
- host_aggregates:
|
||||
- id: 1
|
||||
- id: 2
|
||||
- id: 3
|
||||
- availability_zones:
|
||||
- name: AZ1
|
||||
- name: AZ2
|
||||
- name: AZ1
|
||||
- name: AZ2
|
||||
- exclude:
|
||||
- instances:
|
||||
- uuid: UUID1
|
||||
- uuid: UUID2
|
||||
- compute_nodes:
|
||||
- name: compute1
|
||||
|
||||
JSON example:
|
||||
[{'host_aggregates': [
|
||||
{'id': 1},
|
||||
{'id': 2},
|
||||
{'id': 3}]},
|
||||
{'availability_zones': [
|
||||
{'name': 'AZ1'},
|
||||
{'name': 'AZ2'}]},
|
||||
{'exclude': [
|
||||
{'instances': [
|
||||
{'uuid': 'UUID1'},
|
||||
{'uuid': 'UUID2'}
|
||||
]},
|
||||
{'compute_nodes': [
|
||||
{'name': 'compute1'}
|
||||
]}
|
||||
]}]
|
||||
- instances:
|
||||
- uuid: UUID1
|
||||
- uuid: UUID2
|
||||
- compute_nodes:
|
||||
- name: compute1
|
||||
|
||||
JSON example:
|
||||
::
|
||||
|
||||
[
|
||||
{'host_aggregates': [
|
||||
{'id': 1},
|
||||
{'id': 2},
|
||||
{'id': 3}]},
|
||||
{'availability_zones': [
|
||||
{'name': 'AZ1'},
|
||||
{'name': 'AZ2'}]},
|
||||
{'exclude': [
|
||||
{'instances': [
|
||||
{'uuid': 'UUID1'},
|
||||
{'uuid': 'UUID2'}]},
|
||||
{'compute_nodes': [
|
||||
{'name': 'compute1'}]}]}
|
||||
]
|
||||
|
||||
.. _watcher_audittemplate_delete:
|
||||
|
||||
|
||||
@@ -20,12 +20,20 @@ from watcherclient import version as watcherclient_version
|
||||
# extensions coming with Sphinx (named 'sphinx.ext.*') or your custom ones.
|
||||
extensions = ['sphinx.ext.autodoc',
|
||||
'sphinx.ext.viewcode',
|
||||
'sphinxcontrib.apidoc',
|
||||
'openstackdocstheme',
|
||||
]
|
||||
# autodoc generation is a bit aggressive and a nuisance when doing heavy
|
||||
# text edit cycles.
|
||||
# execute "export SPHINX_DEBUG=1" in your terminal to disable
|
||||
|
||||
# sphinxcontrib.apidoc options
|
||||
apidoc_module_dir = '../../watcherclient'
|
||||
apidoc_output_dir = 'reference/api'
|
||||
apidoc_excluded_paths = [
|
||||
'tests/*']
|
||||
apidoc_separate_modules = True
|
||||
|
||||
# Add any paths that contain templates here, relative to this directory.
|
||||
templates_path = ['_templates']
|
||||
|
||||
@@ -104,7 +112,5 @@ repository_name = 'openstack/python-watcherclient'
|
||||
bug_project = 'python-watcherclient'
|
||||
bug_tag = ''
|
||||
|
||||
# Must set this variable to include year, month, day, hours, and minutes.
|
||||
html_last_updated_fmt = '%Y-%m-%d %H:%M'
|
||||
|
||||
#html_theme_options = {"show_other_versions": "True"}
|
||||
|
||||
@@ -1,8 +0,0 @@
|
||||
======================
|
||||
Python API Reference
|
||||
======================
|
||||
|
||||
.. toctree::
|
||||
:maxdepth: 2
|
||||
|
||||
autoindex
|
||||
@@ -10,5 +10,5 @@ done so, you can use the API like so.
|
||||
.. toctree::
|
||||
:maxdepth: 2
|
||||
|
||||
api/index
|
||||
api/modules
|
||||
api_v1
|
||||
|
||||
@@ -40,7 +40,7 @@ msgpack-python==0.4.0
|
||||
munch==2.2.0
|
||||
netaddr==0.7.19
|
||||
netifaces==0.10.6
|
||||
openstackdocstheme==1.18.1
|
||||
openstackdocstheme==1.32.1
|
||||
openstacksdk==0.12.0
|
||||
os-client-config==1.29.0
|
||||
os-service-types==1.2.0
|
||||
|
||||
6
releasenotes/notes/drop-py-2-7-f7078b44cf99cae1.yaml
Normal file
6
releasenotes/notes/drop-py-2-7-f7078b44cf99cae1.yaml
Normal file
@@ -0,0 +1,6 @@
|
||||
---
|
||||
upgrade:
|
||||
- |
|
||||
Python 2.7 support has been dropped. Last release of python-watcherclient
|
||||
to support py2.7 is OpenStack Train. The minimum version of Python now
|
||||
supported by python-watcherclient is Python 3.6.
|
||||
12
setup.cfg
12
setup.cfg
@@ -6,6 +6,7 @@ description-file =
|
||||
author = OpenStack
|
||||
author-email = openstack-discuss@lists.openstack.org
|
||||
home-page = https://docs.openstack.org/python-watcherclient/latest/
|
||||
python-requires = >=3.6
|
||||
classifier =
|
||||
Environment :: OpenStack
|
||||
Intended Audience :: Information Technology
|
||||
@@ -13,8 +14,6 @@ classifier =
|
||||
License :: OSI Approved :: Apache Software License
|
||||
Operating System :: POSIX :: Linux
|
||||
Programming Language :: Python
|
||||
Programming Language :: Python :: 2
|
||||
Programming Language :: Python :: 2.7
|
||||
Programming Language :: Python :: 3
|
||||
Programming Language :: Python :: 3.6
|
||||
Programming Language :: Python :: 3.7
|
||||
@@ -114,15 +113,6 @@ autodoc_exclude_modules =
|
||||
watcherclient.tests.*
|
||||
api_doc_dir = reference/api
|
||||
|
||||
[build_sphinx]
|
||||
source-dir = doc/source
|
||||
build-dir = doc/build
|
||||
all_files = 1
|
||||
warning-is-error = 1
|
||||
|
||||
[bdist_wheel]
|
||||
universal = 1
|
||||
|
||||
[compile_catalog]
|
||||
directory = watcherclient/locale
|
||||
domain = watcherclient
|
||||
|
||||
9
setup.py
9
setup.py
@@ -13,17 +13,8 @@
|
||||
# See the License for the specific language governing permissions and
|
||||
# limitations under the License.
|
||||
|
||||
# THIS FILE IS MANAGED BY THE GLOBAL REQUIREMENTS REPO - DO NOT EDIT
|
||||
import setuptools
|
||||
|
||||
# In python < 2.7.4, a lazy loading of package `pbr` will break
|
||||
# setuptools if some other modules registered functions in `atexit`.
|
||||
# solution from: http://bugs.python.org/issue15881#msg170215
|
||||
try:
|
||||
import multiprocessing # noqa
|
||||
except ImportError:
|
||||
pass
|
||||
|
||||
setuptools.setup(
|
||||
setup_requires=['pbr>=2.0.0'],
|
||||
pbr=True)
|
||||
|
||||
@@ -4,7 +4,7 @@
|
||||
|
||||
coverage!=4.4,>=4.0 # Apache-2.0
|
||||
fixtures>=3.0.0 # Apache-2.0/BSD
|
||||
hacking>=1.1.0,<1.2.0 # Apache-2.0
|
||||
hacking>=3.0,<3.1.0 # Apache-2.0
|
||||
mock>=2.0.0 # BSD
|
||||
oslotest>=3.2.0 # Apache-2.0
|
||||
python-subunit>=1.0.0 # Apache-2.0/BSD
|
||||
|
||||
7
tox.ini
7
tox.ini
@@ -1,6 +1,6 @@
|
||||
[tox]
|
||||
minversion = 2.0
|
||||
envlist = py36,py37,py27,pep8
|
||||
envlist = py36,py37,pep8
|
||||
skipsdist = True
|
||||
|
||||
[testenv]
|
||||
@@ -46,7 +46,8 @@ deps =
|
||||
-c{env:UPPER_CONSTRAINTS_FILE:https://releases.openstack.org/constraints/upper/master}
|
||||
-r{toxinidir}/requirements.txt
|
||||
-r{toxinidir}/doc/requirements.txt
|
||||
commands = python setup.py build_sphinx
|
||||
commands = sphinx-build -W -b html doc/source doc/build/html
|
||||
|
||||
|
||||
[testenv:pdf-docs]
|
||||
basepython = python3
|
||||
@@ -68,7 +69,7 @@ commands = oslo_debug_helper -t watcherclient/tests/unit {posargs}
|
||||
# E123, E125 skipped as they are invalid PEP-8.
|
||||
show-source = True
|
||||
enable-extensions = H203,H106
|
||||
ignore = E123,E125
|
||||
ignore = E123,E125,W504
|
||||
builtins = _
|
||||
exclude=.venv,.git,.tox,dist,doc,*lib/python*,*egg,build
|
||||
|
||||
|
||||
@@ -40,8 +40,8 @@ from watcherclient import exceptions
|
||||
|
||||
# Record the latest version that this client was tested with.
|
||||
DEFAULT_VER = '1.latest'
|
||||
# Minor version 2 for adding force option to audit
|
||||
LAST_KNOWN_API_VERSION = 2
|
||||
# Minor version 4 for adding webhook API
|
||||
LAST_KNOWN_API_VERSION = 4
|
||||
LATEST_VERSION = '1.{}'.format(LAST_KNOWN_API_VERSION)
|
||||
|
||||
LOG = logging.getLogger(__name__)
|
||||
|
||||
@@ -71,6 +71,7 @@ class AmbiguousAuthSystem(exceptions.ClientException):
|
||||
"""Could not obtain token and endpoint using provided credentials."""
|
||||
pass
|
||||
|
||||
|
||||
# Alias for backwards compatibility
|
||||
AmbigiousAuthSystem = AmbiguousAuthSystem
|
||||
|
||||
|
||||
@@ -426,6 +426,23 @@ class AuditShellTest(base.CommandTestCase):
|
||||
parameters={'para1': 10, 'para2': 20}
|
||||
)
|
||||
|
||||
def test_do_audit_create_with_type_event(self):
|
||||
audit = resource.Audit(mock.Mock(), self.AUDIT_1)
|
||||
self.m_audit_mgr.create.return_value = audit
|
||||
|
||||
exit_code, result = self.run_cmd(
|
||||
'audit create -g fc087747-61be-4aad-8126-b701731ae836 -t EVENT')
|
||||
|
||||
self.assertEqual(0, exit_code)
|
||||
self.assertEqual(
|
||||
self.resource_as_dict(audit, self.FIELDS, self.FIELD_LABELS),
|
||||
result)
|
||||
self.m_audit_mgr.create.assert_called_once_with(
|
||||
goal='fc087747-61be-4aad-8126-b701731ae836',
|
||||
auto_trigger=False,
|
||||
audit_type='EVENT'
|
||||
)
|
||||
|
||||
def test_do_audit_create_with_type_continuous(self):
|
||||
audit = resource.Audit(mock.Mock(), self.AUDIT_1)
|
||||
self.m_audit_mgr.create.return_value = audit
|
||||
@@ -642,6 +659,24 @@ class AuditShellTestv12(AuditShellTest):
|
||||
force=False
|
||||
)
|
||||
|
||||
def test_do_audit_create_with_type_event(self):
|
||||
audit = resource.Audit(mock.Mock(), self.AUDIT_1)
|
||||
self.m_audit_mgr.create.return_value = audit
|
||||
|
||||
exit_code, result = self.run_cmd(
|
||||
'audit create -g fc087747-61be-4aad-8126-b701731ae836 -t EVENT')
|
||||
|
||||
self.assertEqual(0, exit_code)
|
||||
self.assertEqual(
|
||||
self.resource_as_dict(audit, self.FIELDS, self.FIELD_LABELS),
|
||||
result)
|
||||
self.m_audit_mgr.create.assert_called_once_with(
|
||||
goal='fc087747-61be-4aad-8126-b701731ae836',
|
||||
auto_trigger=False,
|
||||
audit_type='EVENT',
|
||||
force=False
|
||||
)
|
||||
|
||||
def test_do_audit_create_with_name(self):
|
||||
audit = resource.Audit(mock.Mock(), self.AUDIT_1)
|
||||
self.m_audit_mgr.create.return_value = audit
|
||||
|
||||
@@ -167,8 +167,8 @@ class CreateAudit(command.ShowOne):
|
||||
dest='audit_type',
|
||||
metavar='<audit_type>',
|
||||
default='ONESHOT',
|
||||
choices=['ONESHOT', 'CONTINUOUS'],
|
||||
help=_("Audit type. It must be ONESHOT or CONTINUOUS. "
|
||||
choices=['ONESHOT', 'CONTINUOUS', 'EVENT'],
|
||||
help=_("Audit type. It must be ONESHOT, CONTINUOUS or EVENT. "
|
||||
"Default is ONESHOT."))
|
||||
parser.add_argument(
|
||||
'-p', '--parameter',
|
||||
|
||||
Reference in New Issue
Block a user