Merge "Add Neutron support"

This commit is contained in:
Jenkins 2014-01-31 21:11:41 +00:00 committed by Gerrit Code Review
commit d62f206a7a
3 changed files with 32 additions and 3 deletions

View File

@ -89,10 +89,12 @@ class InstancesTest(testtools.TestCase):
return path, body, inst
self.instances._create = mock.Mock(side_effect=side_effect_func)
nics = [{'net-id': '000'}]
p, b, i = self.instances.create("test-name", 103, "test-volume",
['db1', 'db2'], ['u1', 'u2'],
datastore="datastore",
datastore_version="datastore-version")
datastore_version="datastore-version",
nics=nics)
self.assertEqual("/instances", p)
self.assertEqual("instance", i)
self.assertEqual(['db1', 'db2'], b["instance"]["databases"])
@ -102,6 +104,7 @@ class InstancesTest(testtools.TestCase):
self.assertEqual("datastore", b["instance"]["datastore"]["type"])
self.assertEqual("datastore-version",
b["instance"]["datastore"]["version"])
self.assertEqual(nics, b["instance"]["nics"])
self.assertEqual(103, b["instance"]["flavorRef"])
def test_list(self):

View File

@ -55,7 +55,7 @@ class Instances(base.ManagerWithFind):
def create(self, name, flavor_id, volume=None, databases=None, users=None,
restorePoint=None, availability_zone=None, datastore=None,
datastore_version=None):
datastore_version=None, nics=None):
"""
Create (boot) a new instance.
"""
@ -80,6 +80,8 @@ class Instances(base.ManagerWithFind):
datastore_obj["version"] = datastore_version
if datastore_obj:
body["instance"]["datastore"] = datastore_obj
if nics:
body["instance"]["nics"] = nics
return self._create("/instances", body, "instance")

View File

@ -172,6 +172,18 @@ def do_delete(cs, args):
metavar='<datastore_version>',
default=None,
help='A datastore version name or UUID')
@utils.arg('--nic',
metavar="<net-id=net-uuid,v4-fixed-ip=ip-addr,port-id=port-uuid>",
action='append',
dest='nics',
default=[],
help="Create a NIC on the instance. "
"Specify option multiple times to create multiple NICs. "
"net-id: attach NIC to network with this UUID "
"(required if no port-id), "
"v4-fixed-ip: IPv4 fixed address for NIC (optional), "
"port-id: attach NIC to port with this UUID "
"(required if no net-id)")
@utils.service_type('database')
def do_create(cs, args):
"""Creates a new instance."""
@ -184,6 +196,17 @@ def do_create(cs, args):
databases = [{'name': value} for value in args.databases]
users = [{'name': n, 'password': p} for (n, p) in
[z.split(':')[:2] for z in args.users]]
nics = []
for nic_str in args.nics:
nic_info = dict([(k, v) for (k, v) in [z.split("=", 1)[:2] for z in
nic_str.split(",")]])
if not (nic_info.get('net-id') or nic_info.get('port-id')):
err_msg = ("Invalid nic argument '%s'. Nic arguments must be of "
"the form --nic <net-id=net-uuid,v4-fixed-ip=ip-addr,"
"port-id=port-uuid>, with at minimum net-id or port-id "
"specified." % nic_str)
raise exceptions.CommandError(err_msg)
nics.append(nic_info)
instance = cs.instances.create(args.name,
args.flavor_id,
volume=volume,
@ -192,7 +215,8 @@ def do_create(cs, args):
restorePoint=restore_point,
availability_zone=args.availability_zone,
datastore=args.datastore,
datastore_version=args.datastore_version)
datastore_version=args.datastore_version,
nics=nics)
instance._info['flavor'] = instance.flavor['id']
if hasattr(instance, 'volume'):
instance._info['volume'] = instance.volume['size']