Merge "Update datastore version name"

This commit is contained in:
Zuul 2020-11-19 02:31:02 +00:00 committed by Gerrit Code Review
commit 15d9236a43
4 changed files with 29 additions and 5 deletions

View File

@ -997,6 +997,7 @@ mgmt_datastore_version = {
"image_tags": image_tags,
"active": {"enum": [True, False]},
"default": {"enum": [True, False]},
"name": non_empty_string
}
}
}

View File

@ -588,7 +588,7 @@ def update_datastore(name, default_version):
def update_datastore_version(datastore, name, manager, image_id, image_tags,
packages, active, version=None):
packages, active, version=None, new_name=None):
"""Create or update datastore version."""
version = version or name
db_api.configure_db(CONF)
@ -601,9 +601,9 @@ def update_datastore_version(datastore, name, manager, image_id, image_tags,
# Create a new one
ds_version = DBDatastoreVersion()
ds_version.id = utils.generate_uuid()
ds_version.name = name
ds_version.version = version
ds_version.datastore_id = datastore.id
ds_version.name = new_name or name
ds_version.manager = manager
ds_version.image_id = image_id
ds_version.image_tags = (",".join(image_tags)

View File

@ -115,10 +115,11 @@ class DatastoreVersionController(wsgi.Controller):
datastore_version = models.DatastoreVersion.load_by_uuid(id)
LOG.info("Tenant: '%(tenant)s' is updating the datastore "
"version: '%(version)s' for datastore: '%(datastore)s'",
{'tenant': tenant_id, 'version': datastore_version.name,
"version: '%(id)s' for datastore: '%(datastore)s'",
{'tenant': tenant_id, 'id': id,
'datastore': datastore_version.datastore_name})
name = body.get('name', datastore_version.name)
manager = body.get('datastore_manager', datastore_version.manager)
image_id = body.get('image')
image_tags = body.get('image_tags')
@ -149,7 +150,9 @@ class DatastoreVersionController(wsgi.Controller):
models.update_datastore_version(datastore_version.datastore_name,
datastore_version.name,
manager, image_id, image_tags,
packages, active)
packages, active,
version=datastore_version.version,
new_name=name)
if default:
models.update_datastore(datastore_version.datastore_name,

View File

@ -254,6 +254,26 @@ class TestDatastoreVersionController(trove_testtools.TestCase):
exception.ImageNotFound,
self.version_controller.create, MagicMock(), body, mock.ANY)
def test_update_name(self):
new_name = self.random_name('ds-version-name')
body = {
"name": new_name
}
orig_ver = models.DatastoreVersion.load(self.ds, self.ds_version1.id)
output = self.version_controller.edit(MagicMock(), body, mock.ANY,
self.ds_version1.id)
self.assertEqual(202, output.status)
updated_ver = models.DatastoreVersion.load(self.ds,
self.ds_version1.id)
self.assertEqual(new_name, updated_ver.name)
self.assertEqual(orig_ver.image_id, updated_ver.image_id)
self.assertEqual(orig_ver.image_tags, updated_ver.image_tags)
self.assertEqual(orig_ver.version, updated_ver.version)
@patch.object(clients, 'create_glance_client')
def test_update_image(self, mock_create_client):
new_image = self.random_uuid()