Added ValidateDesign to API Client
- Added ValidateDesign to API client. - Added ValidteDesign to CI client. - Added a couple unit tests. Change-Id: I1def14b3703eba12b10a063bf09a3120dcf54b8d
This commit is contained in:
parent
8274d56c71
commit
506e06623a
|
@ -61,3 +61,17 @@ class DesignShow(CliAction): # pylint: disable=too-few-public-methods
|
||||||
def invoke(self):
|
def invoke(self):
|
||||||
return self.api_client.get_design(
|
return self.api_client.get_design(
|
||||||
design_id=self.design_id, source=self.source)
|
design_id=self.design_id, source=self.source)
|
||||||
|
|
||||||
|
class DesignValidate(CliAction): # pylint: disable=too-few-public-methods
|
||||||
|
"""Action to validate a design.
|
||||||
|
|
||||||
|
:param string design_href: A href key to the design_ref.
|
||||||
|
"""
|
||||||
|
|
||||||
|
def __init__(self, api_client, design_href):
|
||||||
|
super().__init__(api_client)
|
||||||
|
self.design_href = design_href
|
||||||
|
self.logger.debug("DesignValidate action initialized")
|
||||||
|
|
||||||
|
def invoke(self):
|
||||||
|
return self.api_client.validate_design(href=self.design_href)
|
||||||
|
|
|
@ -21,6 +21,7 @@ import json
|
||||||
from drydock_provisioner.cli.design.actions import DesignList
|
from drydock_provisioner.cli.design.actions import DesignList
|
||||||
from drydock_provisioner.cli.design.actions import DesignShow
|
from drydock_provisioner.cli.design.actions import DesignShow
|
||||||
from drydock_provisioner.cli.design.actions import DesignCreate
|
from drydock_provisioner.cli.design.actions import DesignCreate
|
||||||
|
from drydock_provisioner.cli.design.actions import DesignValidate
|
||||||
|
|
||||||
|
|
||||||
@click.group()
|
@click.group()
|
||||||
|
@ -57,3 +58,14 @@ def design_show(ctx, design_id):
|
||||||
ctx.fail('The design id must be specified by --design-id')
|
ctx.fail('The design id must be specified by --design-id')
|
||||||
|
|
||||||
click.echo(json.dumps(DesignShow(ctx.obj['CLIENT'], design_id).invoke()))
|
click.echo(json.dumps(DesignShow(ctx.obj['CLIENT'], design_id).invoke()))
|
||||||
|
|
||||||
|
@design.command(name='validate')
|
||||||
|
@click.option(
|
||||||
|
'--design-href',
|
||||||
|
'-h',
|
||||||
|
help='The design href key to the design ref')
|
||||||
|
@click.pass_context
|
||||||
|
def design_validate(ctx, design_href=None):
|
||||||
|
"""Validate a design."""
|
||||||
|
click.echo(
|
||||||
|
json.dumps(DesignValidate(ctx.obj['CLIENT'], design_href).invoke()))
|
||||||
|
|
|
@ -131,6 +131,22 @@ class DrydockClient(object):
|
||||||
|
|
||||||
return resp.json()
|
return resp.json()
|
||||||
|
|
||||||
|
def validate_design(self, href):
|
||||||
|
"""Get list of nodes in MaaS and their status.
|
||||||
|
|
||||||
|
:param href: A href that points to the design_ref.
|
||||||
|
:return: A dict containing the validation.
|
||||||
|
"""
|
||||||
|
endpoint = 'v1.0/validatedesign'
|
||||||
|
body = {
|
||||||
|
'href': href
|
||||||
|
}
|
||||||
|
resp = self.session.post(endpoint, data=body)
|
||||||
|
|
||||||
|
self._check_response(resp)
|
||||||
|
|
||||||
|
return resp.json()
|
||||||
|
|
||||||
def _check_response(self, resp):
|
def _check_response(self, resp):
|
||||||
if resp.status_code == 401:
|
if resp.status_code == 401:
|
||||||
raise errors.ClientUnauthorizedError(
|
raise errors.ClientUnauthorizedError(
|
||||||
|
|
|
@ -124,3 +124,49 @@ def test_client_task_get():
|
||||||
task_resp = dd_client.get_task('1476902c-758b-49c0-b618-79ff3fd15166')
|
task_resp = dd_client.get_task('1476902c-758b-49c0-b618-79ff3fd15166')
|
||||||
|
|
||||||
assert task_resp['status'] == task['status']
|
assert task_resp['status'] == task['status']
|
||||||
|
|
||||||
|
@responses.activate
|
||||||
|
def test_client_get_nodes_for_filter_post():
|
||||||
|
node_list = ['node1', 'node2']
|
||||||
|
|
||||||
|
host = 'foo.bar.baz'
|
||||||
|
|
||||||
|
responses.add(
|
||||||
|
responses.POST,
|
||||||
|
"http://%s/api/v1.0/nodefilter" %
|
||||||
|
(host),
|
||||||
|
json=node_list,
|
||||||
|
status=200)
|
||||||
|
|
||||||
|
dd_ses = dc_session.DrydockSession(host)
|
||||||
|
dd_client = dc_client.DrydockClient(dd_ses)
|
||||||
|
|
||||||
|
design_ref = {
|
||||||
|
'ref': 'hello'
|
||||||
|
}
|
||||||
|
validation_resp = dd_client.get_nodes_for_filter(design_ref)
|
||||||
|
|
||||||
|
assert 'node1' in validation_resp
|
||||||
|
assert 'node2' in validation_resp
|
||||||
|
|
||||||
|
@responses.activate
|
||||||
|
def test_client_validate_design_post():
|
||||||
|
validation = {
|
||||||
|
'status': 'success'
|
||||||
|
}
|
||||||
|
|
||||||
|
host = 'foo.bar.baz'
|
||||||
|
|
||||||
|
responses.add(
|
||||||
|
responses.POST,
|
||||||
|
"http://%s/api/v1.0/validatedesign" %
|
||||||
|
(host),
|
||||||
|
json=validation,
|
||||||
|
status=200)
|
||||||
|
|
||||||
|
dd_ses = dc_session.DrydockSession(host)
|
||||||
|
dd_client = dc_client.DrydockClient(dd_ses)
|
||||||
|
|
||||||
|
validation_resp = dd_client.validate_design('href-placeholder')
|
||||||
|
|
||||||
|
assert validation_resp['status'] == validation['status']
|
||||||
|
|
Loading…
Reference in New Issue