Addressing comments from Dan

Also solved issue with output from plug_iface and unplug_iface
This commit is contained in:
Salvatore Orlando 2011-08-26 09:41:19 +01:00
parent f4405229e6
commit 673edc3141
7 changed files with 45 additions and 63 deletions

View File

@ -55,8 +55,8 @@ commands = {
"delete_net": {
"func": cli_lib.delete_net,
"args": ["tenant-id", "net-id"]},
"detail_net": {
"func": cli_lib.detail_net,
"show_net": {
"func": cli_lib.show_net,
"args": ["tenant-id", "net-id"]},
"rename_net": {
"func": cli_lib.rename_net,
@ -73,8 +73,8 @@ commands = {
"set_port_state": {
"func": cli_lib.set_port_state,
"args": ["tenant-id", "net-id", "port-id", "new_state"]},
"detail_port": {
"func": cli_lib.detail_port,
"show_port": {
"func": cli_lib.show_port,
"args": ["tenant-id", "net-id", "port-id"]},
"plug_iface": {
"func": cli_lib.plug_iface,

View File

@ -95,22 +95,14 @@ def delete_net(client, *args):
_handle_exception(ex)
def detail_net(client, *args):
def show_net(client, *args):
tenant_id, network_id = args
try:
#NOTE(salvatore-orlando): Implementing non-efficient version
#for now, at least until plugins will not provide correct behaviour
#for the show_network_details operation
#NOTE(salvatore-orlando) changed for returning exclusively
# output for GET /networks/{net-id} API operation
res = client.show_network_details(network_id)["network"]
LOG.debug("Operation 'show_network_details' executed.")
ports = client.list_ports(network_id)
LOG.debug("Operation 'list_ports' executed.")
res.update(ports)
for port in ports['ports']:
att_data = client.show_port_attachment(network_id, port['id'])
LOG.debug("Operation 'show_port_attachment' executed.")
port['attachment'] = att_data['attachment'].get('id', None)
output = prepare_output("detail_net", tenant_id, dict(network=res))
output = prepare_output("show_net", tenant_id, dict(network=res))
print output
except Exception as ex:
_handle_exception(ex)
@ -171,7 +163,7 @@ def delete_port(client, *args):
return
def detail_port(client, *args):
def show_port(client, *args):
tenant_id, network_id, port_id = args
try:
port = client.show_port_details(network_id, port_id)["port"]
@ -180,7 +172,7 @@ def detail_port(client, *args):
#return attachment with GET operation on port. Once API alignment
#branch is merged, update client to use the detail action
port['attachment'] = '<unavailable>'
output = prepare_output("detail_port", tenant_id,
output = prepare_output("show_port", tenant_id,
dict(network_id=network_id,
port=port))
print output
@ -209,7 +201,7 @@ def plug_iface(client, *args):
data = {'attachment': {'id': '%s' % attachment}}
client.attach_resource(network_id, port_id, data)
LOG.debug("Operation 'attach_resource' executed.")
output = prepare_output("plug_interface", tenant_id,
output = prepare_output("plug_iface", tenant_id,
dict(network_id=network_id,
port_id=port_id,
attachment=attachment))
@ -223,7 +215,7 @@ def unplug_iface(client, *args):
try:
client.detach_resource(network_id, port_id)
LOG.debug("Operation 'detach_resource' executed.")
output = prepare_output("unplug_interface", tenant_id,
output = prepare_output("unplug_iface", tenant_id,
dict(network_id=network_id,
port_id=port_id))
print output

View File

@ -1,45 +1,48 @@
## Cheetah template for cli output
#if $cmd == 'list_nets'
Virtual Networks on Tenant $tenant_id
Virtual Networks for Tenant $tenant_id
#for $network in $networks
Network ID: $network.id
#end for
#elif $cmd == 'create_net'
Created a new Virtual Network with ID: $network_id for Tenant $tenant_id
Created a new Virtual Network with ID: $network_id
for Tenant $tenant_id
#elif $cmd == 'delete_net'
Deleted Virtual Network with ID: $network_id for Tenant $tenant_id
#elif $cmd == 'detail_net'
Network: $network.name ($network.id)
Remote Interfaces on Virtual Network
#for $port in $network.ports
Logical Port $port.id: $port.attachment
#end for
Deleted Virtual Network with ID: $network_id
for Tenant $tenant_id
#elif $cmd == 'show_net'
Network ID: $network.id
Network Name: $network.name
for Tenant: $tenant_id
#elif $cmd == 'rename_net'
Renamed Virtual Network with ID: $network.id for Tenant $tenant_id,
Renamed Virtual Network with ID: $network.id
New name is: $network.name
for Tenant $tenant_id,
#elif $cmd == 'list_ports'
Ports on Virtual Network: $network_id
for Tenant: $tenant_id
#for $port in $ports
Logical Port: $port.id
#end for
#elif $cmd == 'create_port'
Created new Logical Port with ID: $port_id
on Virtual Network: $network_id
for tenant: $tenant_id
for Tenant: $tenant_id
#elif $cmd == 'delete_port'
Deleted Logical Port with ID: $port_id
on Virtual Network: $network_id
for tenant: $tenant_id
for Tenant: $tenant_id
#elif $cmd == 'set_port_state'
Updated state for Logical Port with ID: $port.id
New state is: $port.state
new state is: $port.state
on Virtual Network: $network_id
for tenant: $tenant_id
#elif $cmd == 'detail_port'
#elif $cmd == 'show_port'
Logical Port ID: $port.id
On Virtual Network: $network_id
Administrative State: $port.state
Remote Interface: $port.attachment
administrative State: $port.state
interface: $port.attachment
on Virtual Network: $network_id
for Tenant: $tenant_id
#elif $cmd == 'plug_iface'
Plugged interface $attachment
into Logical Port: $port_id

View File

@ -230,7 +230,6 @@ class Client(object):
"""
if status_code in (202, 204):
return data
#server.networks.Controller._serialization_metadata
return Serializer(self._serialization_metadata).\
deserialize(data, self.content_type())

View File

@ -55,7 +55,7 @@ class FakeHTTPConnection:
res = self._req.get_response(self._api)
def _fake_read():
""" Trick for macking a webob.Response look like a
""" Trick for making a webob.Response look like a
httplib.Response
"""

View File

@ -107,19 +107,12 @@ class CLITest(unittest.TestCase):
# Must add newline at the end to match effect of print call
self.assertEquals(self.fake_stdout.make_string(), output + '\n')
def _verify_detail_network(self):
def _verify_show_network(self):
# Verification - get raw result from db
nw = db.network_list(self.tenant_id)[0]
network = dict(id=nw.uuid, name=nw.name)
ports = db.port_list(nw['uuid'])
for port in ports:
port = db.port_get(port['uuid'], nw['uuid'])
network['ports'] = [dict(id=port['uuid'],
state=port['state'],
attachment=port['interface_id'])
for port in ports]
# Fill CLI template
output = cli.prepare_output('detail_net', self.tenant_id,
output = cli.prepare_output('show_net', self.tenant_id,
dict(network=network))
# Verify!
# Must add newline at the end to match effect of print call
@ -177,7 +170,7 @@ class CLITest(unittest.TestCase):
# Must add newline at the end to match effect of print call
self.assertEquals(self.fake_stdout.make_string(), output + '\n')
def _verify_detail_port(self, network_id, port_id):
def _verify_show_port(self, network_id, port_id):
# Verification - get raw result from db
# TODO(salvatore-orlando): Must resolve this issue with
# attachment in separate bug fix.
@ -185,7 +178,7 @@ class CLITest(unittest.TestCase):
port_data = {'id': port.uuid, 'state': port.state,
'attachment': '<unavailable>'}
# Fill CLI template
output = cli.prepare_output('detail_port', self.tenant_id,
output = cli.prepare_output('show_port', self.tenant_id,
dict(network_id=network_id,
port=port_data))
# Verify!
@ -196,7 +189,7 @@ class CLITest(unittest.TestCase):
# Verification - get raw result from db
port = db.port_get(port_id, network_id)
# Fill CLI template
output = cli.prepare_output("plug_interface", self.tenant_id,
output = cli.prepare_output("plug_iface", self.tenant_id,
dict(network_id=network_id,
port_id=port['uuid'],
attachment=port['interface_id']))
@ -208,7 +201,7 @@ class CLITest(unittest.TestCase):
# Verification - get raw result from db
port = db.port_get(port_id, network_id)
# Fill CLI template
output = cli.prepare_output("unplug_interface", self.tenant_id,
output = cli.prepare_output("unplug_iface", self.tenant_id,
dict(network_id=network_id,
port_id=port['uuid']))
# Verify!
@ -254,22 +247,18 @@ class CLITest(unittest.TestCase):
LOG.debug(self.fake_stdout.content)
self._verify_delete_network(network_id)
def test_detail_network(self):
def test_show_network(self):
try:
# Load some data into the datbase
net = db.network_create(self.tenant_id, self.network_name_1)
db.port_create(net['uuid'])
# Create a 2nd port and plug attachment in it
port = db.port_create(net['uuid'])
db.port_set_attachment(port['uuid'], net['uuid'], "test_iface_id")
cli.detail_net(self.client, self.tenant_id, net['uuid'])
cli.show_net(self.client, self.tenant_id, net['uuid'])
except:
LOG.exception("Exception caught: %s", sys.exc_info())
self.fail("test_detail_network failed due to an exception")
LOG.debug("Operation completed. Verifying result")
LOG.debug(self.fake_stdout.content)
self._verify_detail_network()
self._verify_show_network()
def test_rename_network(self):
try:
@ -351,7 +340,7 @@ class CLITest(unittest.TestCase):
LOG.debug(self.fake_stdout.content)
self._verify_set_port_state(network_id, port_id)
def test_detail_port(self):
def test_show_port(self):
network_id = None
port_id = None
try:
@ -360,14 +349,14 @@ class CLITest(unittest.TestCase):
network_id = net['uuid']
port = db.port_create(network_id)
port_id = port['uuid']
cli.detail_port(self.client, self.tenant_id, network_id, port_id)
cli.show_port(self.client, self.tenant_id, network_id, port_id)
except:
LOG.exception("Exception caught: %s", sys.exc_info())
self.fail("test_detail_port failed due to an exception")
LOG.debug("Operation completed. Verifying result")
LOG.debug(self.fake_stdout.content)
self._verify_detail_port(network_id, port_id)
self._verify_show_port(network_id, port_id)
def test_plug_iface(self):
network_id = None

View File

@ -1,7 +1,6 @@
eventlet>=0.9.12
Routes>=1.12.3
Cheetah>=2.0.1
mox==0.5.3
nose
Paste
PasteDeploy