Merge "Fix block_device_mapping on compute creation"

This commit is contained in:
Jenkins 2017-04-12 10:30:12 +00:00 committed by Gerrit Code Review
commit 5032dbdf08
4 changed files with 30 additions and 75 deletions

View File

@ -133,9 +133,7 @@ class Controller(ooi.api.base.Controller):
l.get("target"), l.get("target"),
storage.StorageResource.kind) storage.StorageResource.kind)
mapping = { mapping = {
"source_type": "volume", "volume_id": vol_id,
"uuid": vol_id,
"delete_on_termination": False,
} }
try: try:
device_name = l['attributes']['occi.storagelink.deviceid'] device_name = l['attributes']['occi.storagelink.deviceid']
@ -143,16 +141,6 @@ class Controller(ooi.api.base.Controller):
except KeyError: except KeyError:
pass pass
mappings.append(mapping) mappings.append(mapping)
# this needs to be there if we have a mapping
if mappings:
image = obj["schemes"][templates.OpenStackOSTemplate.scheme][0]
mappings.insert(0, {
"source_type": "image",
"destination_type": "local",
"boot_index": 0,
"delete_on_termination": True,
"uuid": image,
})
return mappings return mappings
def _get_network_from_req(self, req, obj): def _get_network_from_req(self, req, obj):
@ -237,7 +225,7 @@ class Controller(ooi.api.base.Controller):
self.os_helper.keypair_create(req, key_name, self.os_helper.keypair_create(req, key_name,
public_key=key_data) public_key=key_data)
block_device_mapping_v2 = self._build_block_mapping(req, obj) block_device_mapping = self._build_block_mapping(req, obj)
networks = self._get_network_from_req(req, obj) networks = self._get_network_from_req(req, obj)
server = self.os_helper.create_server( server = self.os_helper.create_server(
req, req,
@ -246,7 +234,7 @@ class Controller(ooi.api.base.Controller):
flavor, flavor,
user_data=user_data, user_data=user_data,
key_name=key_name, key_name=key_name,
block_device_mapping_v2=block_device_mapping_v2, block_device_mapping=block_device_mapping,
networks=networks networks=networks
) )
# The returned JSON does not contain the server name # The returned JSON does not contain the server name

View File

@ -348,7 +348,7 @@ class OpenStackHelper(BaseHelper):
def _get_create_server_req(self, req, name, image, flavor, def _get_create_server_req(self, req, name, image, flavor,
user_data=None, user_data=None,
key_name=None, key_name=None,
block_device_mapping_v2=None, block_device_mapping=None,
networks=None): networks=None):
tenant_id = self.tenant_from_req(req) tenant_id = self.tenant_from_req(req)
path = "/%s/servers" % tenant_id path = "/%s/servers" % tenant_id
@ -364,8 +364,8 @@ class OpenStackHelper(BaseHelper):
body["server"]["user_data"] = user_data body["server"]["user_data"] = user_data
if key_name is not None: if key_name is not None:
body["server"]["key_name"] = key_name body["server"]["key_name"] = key_name
if block_device_mapping_v2: if block_device_mapping:
body["server"]["block_device_mapping_v2"] = block_device_mapping_v2 body["server"]["block_device_mapping"] = block_device_mapping
if networks: if networks:
body["server"]["networks"] = networks body["server"]["networks"] = networks
@ -377,7 +377,7 @@ class OpenStackHelper(BaseHelper):
def create_server(self, req, name, image, flavor, def create_server(self, req, name, image, flavor,
user_data=None, key_name=None, user_data=None, key_name=None,
block_device_mapping_v2=None, block_device_mapping=None,
networks=None): networks=None):
"""Create a server. """Create a server.
@ -395,7 +395,7 @@ class OpenStackHelper(BaseHelper):
flavor, flavor,
user_data=user_data, user_data=user_data,
key_name=key_name, key_name=key_name,
block_device_mapping_v2=block_device_mapping_v2, block_device_mapping=block_device_mapping,
networks=networks) networks=networks)
response = req.get_response(self.app) response = req.get_response(self.app)
# We only get one server # We only get one server

View File

@ -332,7 +332,7 @@ class TestComputeController(base.TestController):
m_create.assert_called_with(mock.ANY, "foo instance", "foo", "bar", m_create.assert_called_with(mock.ANY, "foo instance", "foo", "bar",
user_data=None, user_data=None,
key_name=None, key_name=None,
block_device_mapping_v2=[], block_device_mapping=[],
networks=net) networks=net)
@mock.patch.object(helpers.OpenStackHelper, "create_server") @mock.patch.object(helpers.OpenStackHelper, "create_server")
@ -368,7 +368,7 @@ class TestComputeController(base.TestController):
m_create.assert_called_with(mock.ANY, "foo instance", "foo", "bar", m_create.assert_called_with(mock.ANY, "foo instance", "foo", "bar",
user_data="bazonk", user_data="bazonk",
key_name=None, key_name=None,
block_device_mapping_v2=[], block_device_mapping=[],
networks=net) networks=net)
@mock.patch.object(helpers.OpenStackHelper, "create_server") @mock.patch.object(helpers.OpenStackHelper, "create_server")
@ -404,7 +404,7 @@ class TestComputeController(base.TestController):
m_create.assert_called_with(mock.ANY, "foo instance", "foo", "bar", m_create.assert_called_with(mock.ANY, "foo instance", "foo", "bar",
user_data="bazonk", user_data="bazonk",
key_name=None, key_name=None,
block_device_mapping_v2=[], block_device_mapping=[],
networks=net) networks=net)
@mock.patch("ooi.occi.validator.Validator") @mock.patch("ooi.occi.validator.Validator")
@ -463,7 +463,7 @@ class TestComputeController(base.TestController):
m_server.assert_called_with(mock.ANY, "foo instance", "foo", "bar", m_server.assert_called_with(mock.ANY, "foo instance", "foo", "bar",
user_data=None, user_data=None,
key_name="wtfoo", key_name="wtfoo",
block_device_mapping_v2=[], block_device_mapping=[],
networks=net) networks=net)
@mock.patch.object(helpers.OpenStackHelper, "keypair_delete") @mock.patch.object(helpers.OpenStackHelper, "keypair_delete")
@ -502,7 +502,7 @@ class TestComputeController(base.TestController):
m_server.assert_called_with(mock.ANY, "foo instance", "foo", "bar", m_server.assert_called_with(mock.ANY, "foo instance", "foo", "bar",
user_data=None, user_data=None,
key_name=mock.ANY, key_name=mock.ANY,
block_device_mapping_v2=[], block_device_mapping=[],
networks=net) networks=net)
m_keypair_delete.assert_called_with(mock.ANY, mock.ANY) m_keypair_delete.assert_called_with(mock.ANY, mock.ANY)
@ -542,7 +542,7 @@ class TestComputeController(base.TestController):
m_server.assert_called_with(mock.ANY, "foo instance", "foo", "bar", m_server.assert_called_with(mock.ANY, "foo instance", "foo", "bar",
user_data=None, user_data=None,
key_name=mock.ANY, key_name=mock.ANY,
block_device_mapping_v2=[], block_device_mapping=[],
networks=net) networks=net)
m_keypair_delete.assert_called_with(mock.ANY, mock.ANY) m_keypair_delete.assert_called_with(mock.ANY, mock.ANY)
@ -578,45 +578,24 @@ class TestComputeController(base.TestController):
@mock.patch("ooi.api.helpers.get_id_with_kind") @mock.patch("ooi.api.helpers.get_id_with_kind")
def test_build_block_mapping(self, m_get_id): def test_build_block_mapping(self, m_get_id):
vol_id = uuid.uuid4().hex vol_ids = [uuid.uuid4().hex, uuid.uuid4().hex]
image_id = uuid.uuid4().hex
obj = { obj = {
"links": { "links": {
"http://schemas.ogf.org/occi/infrastructure#storage": [ "http://schemas.ogf.org/occi/infrastructure#storage":
{ [{"id": i, "target": v} for i, v in enumerate(vol_ids)]
"id": "l1",
"target": vol_id,
}
]
},
"schemes": {
templates.OpenStackOSTemplate.scheme: [image_id],
} }
} }
m_get_id.return_value = (None, vol_id) m_get_id.side_effect = [(None, v) for v in vol_ids]
ret = self.controller._build_block_mapping(None, obj) ret = self.controller._build_block_mapping(None, obj)
expected = [ expected = [{"volume_id": v} for v in vol_ids]
{
"source_type": "image",
"destination_type": "local",
"boot_index": 0,
"delete_on_termination": True,
"uuid": image_id,
},
{
"source_type": "volume",
"uuid": vol_id,
"delete_on_termination": False,
}
]
self.assertEqual(expected, ret) self.assertEqual(expected, ret)
m_get_id.assert_called_with(None, vol_id, m_get_id.assert_has_calls(
occi_storage.StorageResource.kind) [mock.call(None, v, occi_storage.StorageResource.kind)
for v in vol_ids])
@mock.patch("ooi.api.helpers.get_id_with_kind") @mock.patch("ooi.api.helpers.get_id_with_kind")
def test_build_block_mapping_device_id(self, m_get_id): def test_build_block_mapping_device_id(self, m_get_id):
vol_id = uuid.uuid4().hex vol_id = uuid.uuid4().hex
image_id = uuid.uuid4().hex
obj = { obj = {
"links": { "links": {
"http://schemas.ogf.org/occi/infrastructure#storage": [ "http://schemas.ogf.org/occi/infrastructure#storage": [
@ -628,25 +607,13 @@ class TestComputeController(base.TestController):
} }
} }
] ]
},
"schemes": {
templates.OpenStackOSTemplate.scheme: [image_id],
} }
} }
m_get_id.return_value = (None, vol_id) m_get_id.return_value = (None, vol_id)
ret = self.controller._build_block_mapping(None, obj) ret = self.controller._build_block_mapping(None, obj)
expected = [ expected = [
{ {
"source_type": "image", "volume_id": vol_id,
"destination_type": "local",
"boot_index": 0,
"delete_on_termination": True,
"uuid": image_id,
},
{
"source_type": "volume",
"uuid": vol_id,
"delete_on_termination": False,
"device_name": "baz", "device_name": "baz",
} }
] ]
@ -684,7 +651,7 @@ class TestComputeController(base.TestController):
m_server.assert_called_with(mock.ANY, "foo instance", "foo", "bar", m_server.assert_called_with(mock.ANY, "foo instance", "foo", "bar",
user_data=None, user_data=None,
key_name=mock.ANY, key_name=mock.ANY,
block_device_mapping_v2="mapping", block_device_mapping="mapping",
networks=net) networks=net)
m_block.assert_called_with(req, obj) m_block.assert_called_with(req, obj)
@ -786,7 +753,7 @@ class TestComputeController(base.TestController):
m_server.assert_called_with(mock.ANY, "foo instance", "foo", "bar", m_server.assert_called_with(mock.ANY, "foo instance", "foo", "bar",
user_data=None, user_data=None,
key_name=mock.ANY, key_name=mock.ANY,
block_device_mapping_v2=[], block_device_mapping=[],
networks=net) networks=net)
m_net.assert_called_with(req, obj) m_net.assert_called_with(req, obj)
@ -818,6 +785,6 @@ class TestComputeController(base.TestController):
m_server.assert_called_with(mock.ANY, "foo instance", "foo", "bar", m_server.assert_called_with(mock.ANY, "foo instance", "foo", "bar",
user_data=None, user_data=None,
key_name=mock.ANY, key_name=mock.ANY,
block_device_mapping_v2=[], block_device_mapping=[],
networks=net) networks=net)
m_net.assert_called_with(req, obj) m_net.assert_called_with(req, obj)

View File

@ -632,11 +632,11 @@ class TestOpenStackHelper(TestBaseHelper):
ret = self.helper.create_server(None, name, image, flavor, ret = self.helper.create_server(None, name, image, flavor,
user_data=user_data, user_data=user_data,
key_name=key_name, key_name=key_name,
block_device_mapping_v2=bdm, block_device_mapping=bdm,
networks=None) networks=None)
self.assertEqual("FOO", ret) self.assertEqual("FOO", ret)
m.assert_called_with(None, name, image, flavor, user_data=user_data, m.assert_called_with(None, name, image, flavor, user_data=user_data,
key_name=key_name, block_device_mapping_v2=bdm, key_name=key_name, block_device_mapping=bdm,
networks=None) networks=None)
@mock.patch("ooi.api.helpers.exception_from_response") @mock.patch("ooi.api.helpers.exception_from_response")
@ -662,9 +662,9 @@ class TestOpenStackHelper(TestBaseHelper):
flavor, flavor,
user_data=user_data, user_data=user_data,
key_name=key_name, key_name=key_name,
block_device_mapping_v2=bdm) block_device_mapping=bdm)
m.assert_called_with(None, name, image, flavor, user_data=user_data, m.assert_called_with(None, name, image, flavor, user_data=user_data,
key_name=key_name, block_device_mapping_v2=bdm, key_name=key_name, block_device_mapping=bdm,
networks=None) networks=None)
m_exc.assert_called_with(resp) m_exc.assert_called_with(resp)