Compare commits
8 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
190249e68d | ||
|
|
57d4563817 | ||
|
|
b465e86703 | ||
|
|
1724798fd7 | ||
|
|
1ee30ec19c | ||
|
|
8b26d758c0 | ||
| 377172f39d | |||
| 98e177260d |
@@ -1,4 +1,5 @@
|
||||
[gerrit]
|
||||
host=review.openstack.org
|
||||
host=review.opendev.org
|
||||
port=29418
|
||||
project=openstack/python-cloudkittyclient.git
|
||||
defaultbranch=stable/stein
|
||||
|
||||
20
.zuul.yaml
20
.zuul.yaml
@@ -18,14 +18,26 @@
|
||||
- ^releasenotes/.*$
|
||||
vars:
|
||||
devstack_plugins:
|
||||
cloudkitty: https://git.openstack.org/openstack/cloudkitty
|
||||
cloudkitty: https://opendev.org/openstack/cloudkitty
|
||||
devstack_localrc:
|
||||
CLOUDKITTY_FETCHER: keystone
|
||||
devstack_services:
|
||||
ck-api: true
|
||||
horizon: false
|
||||
tox_install_siblings: false
|
||||
zuul_work_dir: src/git.openstack.org/openstack/python-cloudkittyclient
|
||||
zuul_work_dir: src/opendev.org/openstack/python-cloudkittyclient
|
||||
tox_envlist: functional
|
||||
|
||||
- job:
|
||||
name: cloudkittyclient-devstack-functional-py3
|
||||
parent: cloudkittyclient-devstack-functional
|
||||
description: |
|
||||
Job for cloudkittyclient functional tests, ran in python3.
|
||||
vars:
|
||||
devstack_localrc:
|
||||
DEVSTACK_GATE_USE_PYTHON3: "True"
|
||||
USE_PYTHON3: "True"
|
||||
|
||||
- project:
|
||||
templates:
|
||||
- check-requirements
|
||||
@@ -39,7 +51,11 @@
|
||||
jobs:
|
||||
- cloudkittyclient-devstack-functional:
|
||||
voting: true
|
||||
- cloudkittyclient-devstack-functional-py3:
|
||||
voting: true
|
||||
gate:
|
||||
jobs:
|
||||
- cloudkittyclient-devstack-functional:
|
||||
voting: true
|
||||
- cloudkittyclient-devstack-functional-py3:
|
||||
voting: true
|
||||
|
||||
@@ -22,8 +22,8 @@ class CkReportTest(base.BaseFunctionalTest):
|
||||
self.runner = self.cloudkitty
|
||||
|
||||
def test_get_summary(self):
|
||||
resp = self.runner('summary get')[0]
|
||||
self.assertEqual(resp['Resource Type'], 'ALL')
|
||||
resp = self.runner('summary get')
|
||||
self.assertEqual(len(resp), 0)
|
||||
|
||||
def test_get_summary_with_groupby(self):
|
||||
resp = self.runner('summary get', params='-g res_type tenant_id')
|
||||
|
||||
48
cloudkittyclient/tests/unit/v1/test_rating.py
Normal file
48
cloudkittyclient/tests/unit/v1/test_rating.py
Normal file
@@ -0,0 +1,48 @@
|
||||
# Copyright 2019 Objectif Libre
|
||||
#
|
||||
# Licensed 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.
|
||||
#
|
||||
import decimal
|
||||
|
||||
from cloudkittyclient import exc
|
||||
from cloudkittyclient.tests.unit.v1 import base
|
||||
|
||||
|
||||
class TestRating(base.BaseAPIEndpointTestCase):
|
||||
|
||||
def test_quote_request(self):
|
||||
res_data = [{'usage': {
|
||||
'instance': [{
|
||||
'vol': {'unit': 'undef', 'qty': '1'},
|
||||
'rating': {'price': decimal.Decimal(1)},
|
||||
'desc': {
|
||||
'disk_total_display': 1,
|
||||
'image_id': 'c43a3e7d-c4e6-45d6-8c8d-e2832a45bc0a',
|
||||
'ram': 64,
|
||||
'ephemeral': 0,
|
||||
'vcpus': 1,
|
||||
'source_type': 'image',
|
||||
'disk_total': 1,
|
||||
'flavor_id': '42',
|
||||
'flavor': 'm1.nano',
|
||||
'disk': 1,
|
||||
'source_val': 'c43a3e7d-c4e6-45d6-8c8d-e2832a45bc0a'}
|
||||
}]
|
||||
}}]
|
||||
|
||||
self.rating.get_quotation(res_data=res_data)
|
||||
self.api_client.post.assert_called_once_with(
|
||||
'/v1/rating/quote/', json={'resources': res_data})
|
||||
|
||||
def test_get_quotation_no_res_data(self):
|
||||
self.assertRaises(exc.ArgumentRequired, self.rating.get_quotation)
|
||||
@@ -78,8 +78,10 @@ class RatingManager(base.BaseManager):
|
||||
"""
|
||||
if not kwargs.get('res_data', None):
|
||||
raise exc.ArgumentRequired("'res_data' argument is required.")
|
||||
url = self.get_url('quote')
|
||||
return self.api_client.post(url, kwargs['res_data'])
|
||||
url = self.get_url('quote', {})
|
||||
|
||||
body = {'resources': kwargs['res_data']}
|
||||
return self.api_client.post(url, json=body).json()
|
||||
|
||||
|
||||
class CliModuleGet(lister.Lister):
|
||||
|
||||
@@ -0,0 +1,5 @@
|
||||
---
|
||||
fixes:
|
||||
- |
|
||||
The ``rating.get_quotation`` method of the client has been fixed: the json
|
||||
body has been updated to match the API reference.
|
||||
@@ -16,7 +16,6 @@
|
||||
# documentation root, use os.path.abspath to make it absolute, like shown here.
|
||||
#sys.path.insert(0, os.path.abspath('.'))
|
||||
|
||||
import pbr.version
|
||||
# -- General configuration ------------------------------------------------
|
||||
|
||||
# If your documentation needs a minimal Sphinx version, state it here.
|
||||
@@ -26,8 +25,8 @@ import pbr.version
|
||||
# extensions coming with Sphinx (named 'sphinx.ext.*') or your custom
|
||||
# ones.
|
||||
extensions = [
|
||||
'oslosphinx',
|
||||
'reno.sphinxext',
|
||||
'openstackdocstheme',
|
||||
]
|
||||
|
||||
# Add any paths that contain templates here, relative to this directory.
|
||||
@@ -46,16 +45,12 @@ master_doc = 'index'
|
||||
project = u'Cloudkitty Client Release Notes'
|
||||
copyright = u'2016, Cloudkitty developers'
|
||||
|
||||
# The version info for the project you're documenting, acts as replacement for
|
||||
# |version| and |release|, also used in various other places throughout the
|
||||
# built documents.
|
||||
#
|
||||
|
||||
cloudkittyclient_version = pbr.version.VersionInfo('python-cloudkittyclient')
|
||||
# Release notes are version independent.
|
||||
# The short X.Y version.
|
||||
version = cloudkittyclient_version.canonical_version_string()
|
||||
version = ''
|
||||
# The full version, including alpha/beta/rc tags.
|
||||
release = cloudkittyclient_version.version_string_with_vcs()
|
||||
release = ''
|
||||
|
||||
|
||||
# The language for content autogenerated by Sphinx. Refer to documentation
|
||||
# for a list of supported languages.
|
||||
@@ -100,7 +95,7 @@ pygments_style = 'sphinx'
|
||||
|
||||
# The theme to use for HTML and HTML Help pages. See the documentation for
|
||||
# a list of builtin themes.
|
||||
html_theme = 'default'
|
||||
html_theme = 'openstackdocs'
|
||||
|
||||
# Theme options are theme-specific and customize the look and feel of a theme
|
||||
# further. For a list of options available for each theme, see the
|
||||
|
||||
2
tox.ini
2
tox.ini
@@ -5,7 +5,7 @@ skipsdist = True
|
||||
|
||||
[testenv]
|
||||
usedevelop = True
|
||||
install_command = pip install -c{env:UPPER_CONSTRAINTS_FILE:https://git.openstack.org/cgit/openstack/requirements/plain/upper-constraints.txt} -U {opts} {packages}
|
||||
install_command = pip install -c{env:UPPER_CONSTRAINTS_FILE:https://releases.openstack.org/constraints/upper/stein} -U {opts} {packages}
|
||||
setenv =
|
||||
VIRTUAL_ENV={envdir}
|
||||
deps = -r{toxinidir}/requirements.txt
|
||||
|
||||
Reference in New Issue
Block a user