diff --git a/bin/nova-manage b/bin/nova-manage index 5414e4e5..6bda2ada 100755 --- a/bin/nova-manage +++ b/bin/nova-manage @@ -1367,7 +1367,7 @@ class StorageManagerCommands(object): sys.exit(2) try: - flavors = db.sm_flavor_get(ctxt, flavor_label) + flavors = db.sm_flavor_get_by_label(ctxt, flavor_label) except exception.NotFound as ex: print "error: %s" % ex sys.exit(2) diff --git a/nova/tests/test_db_api.py b/nova/tests/test_db_api.py index d28acfd7..aaddb08a 100644 --- a/nova/tests/test_db_api.py +++ b/nova/tests/test_db_api.py @@ -878,3 +878,189 @@ class InstanceDestroyConstraints(test.TestCase): ctx, instance['uuid'], constraint) instance = db.instance_get_by_uuid(ctx, instance['uuid']) self.assertFalse(instance['deleted']) + + +def _get_sm_backend_params(): + config_params = ("name_label=testsmbackend " + "server=localhost " + "serverpath=/tmp/nfspath") + params = dict(flavor_id=1, + sr_uuid=None, + sr_type='nfs', + config_params=config_params) + return params + + +def _get_sm_flavor_params(): + params = dict(label="gold", + description="automatic backups") + return params + + +class SMVolumeDBApiTestCase(test.TestCase): + def setUp(self): + super(SMVolumeDBApiTestCase, self).setUp() + self.user_id = 'fake' + self.project_id = 'fake' + self.context = context.RequestContext(self.user_id, self.project_id) + + def test_sm_backend_conf_create(self): + params = _get_sm_backend_params() + ctxt = context.get_admin_context() + beconf = db.sm_backend_conf_create(ctxt, + params) + self.assertIsInstance(beconf['id'], int) + + def test_sm_backend_conf_create_raise_duplicate(self): + params = _get_sm_backend_params() + ctxt = context.get_admin_context() + beconf = db.sm_backend_conf_create(ctxt, + params) + self.assertIsInstance(beconf['id'], int) + self.assertRaises(exception.Duplicate, + db.sm_backend_conf_create, + ctxt, + params) + + def test_sm_backend_conf_update(self): + ctxt = context.get_admin_context() + params = _get_sm_backend_params() + beconf = db.sm_backend_conf_create(ctxt, + params) + beconf = db.sm_backend_conf_update(ctxt, + beconf['id'], + dict(sr_uuid="FA15E-1D")) + self.assertEqual(beconf['sr_uuid'], "FA15E-1D") + + def test_sm_backend_conf_update_raise_notfound(self): + ctxt = context.get_admin_context() + self.assertRaises(exception.NotFound, + db.sm_backend_conf_update, + ctxt, + 7, + dict(sr_uuid="FA15E-1D")) + + def test_sm_backend_conf_get(self): + ctxt = context.get_admin_context() + params = _get_sm_backend_params() + beconf = db.sm_backend_conf_create(ctxt, + params) + val = db.sm_backend_conf_get(ctxt, beconf['id']) + self.assertDictMatch(dict(val), dict(beconf)) + + def test_sm_backend_conf_get_raise_notfound(self): + ctxt = context.get_admin_context() + self.assertRaises(exception.NotFound, + db.sm_backend_conf_get, + ctxt, + 7) + + def test_sm_backend_conf_get_by_sr(self): + ctxt = context.get_admin_context() + params = _get_sm_backend_params() + beconf = db.sm_backend_conf_create(ctxt, + params) + val = db.sm_backend_conf_get_by_sr(ctxt, beconf['sr_uuid']) + self.assertDictMatch(dict(val), dict(beconf)) + + def test_sm_backend_conf_get_by_sr_raise_notfound(self): + ctxt = context.get_admin_context() + self.assertRaises(exception.NotFound, + db.sm_backend_conf_get_by_sr, + ctxt, + "FA15E-1D") + + def test_sm_backend_conf_delete(self): + ctxt = context.get_admin_context() + params = _get_sm_backend_params() + beconf = db.sm_backend_conf_create(ctxt, + params) + db.sm_backend_conf_delete(ctxt, beconf['id']) + self.assertRaises(exception.NotFound, + db.sm_backend_conf_get, + ctxt, + beconf['id']) + + def test_sm_backend_conf_delete_nonexisting(self): + ctxt = context.get_admin_context() + self.assertNotRaises(None, db.sm_backend_conf_delete, + ctxt, "FA15E-1D") + + def test_sm_flavor_create(self): + ctxt = context.get_admin_context() + params = _get_sm_flavor_params() + flav = db.sm_flavor_create(ctxt, + params) + self.assertIsInstance(flav['id'], int) + + def sm_flavor_create_raise_duplicate(self): + ctxt = context.get_admin_context() + params = _get_sm_flavor_params() + flav = db.sm_flavor_create(ctxt, + params) + self.assertRaises(exception.Duplicate, + db.sm_flavor_create, + params) + + def test_sm_flavor_update(self): + ctxt = context.get_admin_context() + params = _get_sm_flavor_params() + flav = db.sm_flavor_create(ctxt, + params) + newparms = dict(description="basic volumes") + flav = db.sm_flavor_update(ctxt, flav['id'], newparms) + self.assertEqual(flav['description'], "basic volumes") + + def test_sm_flavor_update_raise_notfound(self): + ctxt = context.get_admin_context() + self.assertRaises(exception.NotFound, + db.sm_flavor_update, + ctxt, + 7, + dict(description="fakedesc")) + + def test_sm_flavor_delete(self): + ctxt = context.get_admin_context() + params = _get_sm_flavor_params() + flav = db.sm_flavor_create(ctxt, + params) + db.sm_flavor_delete(ctxt, flav['id']) + self.assertRaises(exception.NotFound, + db.sm_flavor_get, + ctxt, + "gold") + + def test_sm_flavor_delete_nonexisting(self): + ctxt = context.get_admin_context() + self.assertNotRaises(None, db.sm_flavor_delete, + ctxt, 7) + + def test_sm_flavor_get(self): + ctxt = context.get_admin_context() + params = _get_sm_flavor_params() + flav = db.sm_flavor_create(ctxt, + params) + val = db.sm_flavor_get(ctxt, flav['id']) + self.assertDictMatch(dict(val), dict(flav)) + + def test_sm_flavor_get_raise_notfound(self): + ctxt = context.get_admin_context() + self.assertRaises(exception.NotFound, + db.sm_flavor_get, + ctxt, + 7) + + def test_sm_flavor_get_by_label(self): + ctxt = context.get_admin_context() + params = _get_sm_flavor_params() + flav = db.sm_flavor_create(ctxt, + params) + val = db.sm_flavor_get_by_label(ctxt, flav['label']) + self.assertDictMatch(dict(val), dict(flav)) + + def test_sm_flavor_get_by_label_raise_notfound(self): + ctxt = context.get_admin_context() + self.assertRaises(exception.NotFound, + db.sm_flavor_get, + ctxt, + "fake")