840
841
fixed_ip = db.fixed_ip_get_by_address(self.ctxt, address)
841
842
self.assertEqual(fixed_ip.instance_id, self.instance.id)
842
843
self.assertEqual(fixed_ip.network_id, self.network.id)
846
class InstanceDestroyConstraints(test.TestCase):
848
def test_destroy_with_equal_any_constraint_met(self):
849
ctx = context.get_admin_context()
850
instance = db.instance_create(ctx, {'task_state': 'deleting'})
851
constraint = db.constraint(task_state=db.equal_any('deleting'))
852
db.instance_destroy(ctx, instance['uuid'], constraint)
853
self.assertRaises(exception.InstanceNotFound, db.instance_get_by_uuid,
854
ctx, instance['uuid'])
856
def test_destroy_with_equal_any_constraint_not_met(self):
857
ctx = context.get_admin_context()
858
instance = db.instance_create(ctx, {'vm_state': 'resize'})
859
constraint = db.constraint(vm_state=db.equal_any('active', 'error'))
860
self.assertRaises(exception.ConstraintNotMet, db.instance_destroy,
861
ctx, instance['uuid'], constraint)
862
instance = db.instance_get_by_uuid(ctx, instance['uuid'])
863
self.assertFalse(instance['deleted'])
865
def test_destroy_with_not_equal_constraint_met(self):
866
ctx = context.get_admin_context()
867
instance = db.instance_create(ctx, {'task_state': 'deleting'})
868
constraint = db.constraint(task_state=db.not_equal('error', 'resize'))
869
db.instance_destroy(ctx, instance['uuid'], constraint)
870
self.assertRaises(exception.InstanceNotFound, db.instance_get_by_uuid,
871
ctx, instance['uuid'])
873
def test_destroy_with_not_equal_constraint_not_met(self):
874
ctx = context.get_admin_context()
875
instance = db.instance_create(ctx, {'vm_state': 'active'})
876
constraint = db.constraint(vm_state=db.not_equal('active', 'error'))
877
self.assertRaises(exception.ConstraintNotMet, db.instance_destroy,
878
ctx, instance['uuid'], constraint)
879
instance = db.instance_get_by_uuid(ctx, instance['uuid'])
880
self.assertFalse(instance['deleted'])
883
def _get_sm_backend_params():
884
config_params = ("name_label=testsmbackend "
886
"serverpath=/tmp/nfspath")
887
params = dict(flavor_id=1,
890
config_params=config_params)
894
def _get_sm_flavor_params():
895
params = dict(label="gold",
896
description="automatic backups")
900
class SMVolumeDBApiTestCase(test.TestCase):
902
super(SMVolumeDBApiTestCase, self).setUp()
903
self.user_id = 'fake'
904
self.project_id = 'fake'
905
self.context = context.RequestContext(self.user_id, self.project_id)
907
def test_sm_backend_conf_create(self):
908
params = _get_sm_backend_params()
909
ctxt = context.get_admin_context()
910
beconf = db.sm_backend_conf_create(ctxt,
912
self.assertIsInstance(beconf['id'], int)
914
def test_sm_backend_conf_create_raise_duplicate(self):
915
params = _get_sm_backend_params()
916
ctxt = context.get_admin_context()
917
beconf = db.sm_backend_conf_create(ctxt,
919
self.assertIsInstance(beconf['id'], int)
920
self.assertRaises(exception.Duplicate,
921
db.sm_backend_conf_create,
925
def test_sm_backend_conf_update(self):
926
ctxt = context.get_admin_context()
927
params = _get_sm_backend_params()
928
beconf = db.sm_backend_conf_create(ctxt,
930
beconf = db.sm_backend_conf_update(ctxt,
932
dict(sr_uuid="FA15E-1D"))
933
self.assertEqual(beconf['sr_uuid'], "FA15E-1D")
935
def test_sm_backend_conf_update_raise_notfound(self):
936
ctxt = context.get_admin_context()
937
self.assertRaises(exception.NotFound,
938
db.sm_backend_conf_update,
941
dict(sr_uuid="FA15E-1D"))
943
def test_sm_backend_conf_get(self):
944
ctxt = context.get_admin_context()
945
params = _get_sm_backend_params()
946
beconf = db.sm_backend_conf_create(ctxt,
948
val = db.sm_backend_conf_get(ctxt, beconf['id'])
949
self.assertDictMatch(dict(val), dict(beconf))
951
def test_sm_backend_conf_get_raise_notfound(self):
952
ctxt = context.get_admin_context()
953
self.assertRaises(exception.NotFound,
954
db.sm_backend_conf_get,
958
def test_sm_backend_conf_get_by_sr(self):
959
ctxt = context.get_admin_context()
960
params = _get_sm_backend_params()
961
beconf = db.sm_backend_conf_create(ctxt,
963
val = db.sm_backend_conf_get_by_sr(ctxt, beconf['sr_uuid'])
964
self.assertDictMatch(dict(val), dict(beconf))
966
def test_sm_backend_conf_get_by_sr_raise_notfound(self):
967
ctxt = context.get_admin_context()
968
self.assertRaises(exception.NotFound,
969
db.sm_backend_conf_get_by_sr,
973
def test_sm_backend_conf_delete(self):
974
ctxt = context.get_admin_context()
975
params = _get_sm_backend_params()
976
beconf = db.sm_backend_conf_create(ctxt,
978
db.sm_backend_conf_delete(ctxt, beconf['id'])
979
self.assertRaises(exception.NotFound,
980
db.sm_backend_conf_get,
984
def test_sm_backend_conf_delete_nonexisting(self):
985
ctxt = context.get_admin_context()
986
self.assertNotRaises(None, db.sm_backend_conf_delete,
989
def test_sm_flavor_create(self):
990
ctxt = context.get_admin_context()
991
params = _get_sm_flavor_params()
992
flav = db.sm_flavor_create(ctxt,
994
self.assertIsInstance(flav['id'], int)
996
def sm_flavor_create_raise_duplicate(self):
997
ctxt = context.get_admin_context()
998
params = _get_sm_flavor_params()
999
flav = db.sm_flavor_create(ctxt,
1001
self.assertRaises(exception.Duplicate,
1002
db.sm_flavor_create,
1005
def test_sm_flavor_update(self):
1006
ctxt = context.get_admin_context()
1007
params = _get_sm_flavor_params()
1008
flav = db.sm_flavor_create(ctxt,
1010
newparms = dict(description="basic volumes")
1011
flav = db.sm_flavor_update(ctxt, flav['id'], newparms)
1012
self.assertEqual(flav['description'], "basic volumes")
1014
def test_sm_flavor_update_raise_notfound(self):
1015
ctxt = context.get_admin_context()
1016
self.assertRaises(exception.NotFound,
1017
db.sm_flavor_update,
1020
dict(description="fakedesc"))
1022
def test_sm_flavor_delete(self):
1023
ctxt = context.get_admin_context()
1024
params = _get_sm_flavor_params()
1025
flav = db.sm_flavor_create(ctxt,
1027
db.sm_flavor_delete(ctxt, flav['id'])
1028
self.assertRaises(exception.NotFound,
1033
def test_sm_flavor_delete_nonexisting(self):
1034
ctxt = context.get_admin_context()
1035
self.assertNotRaises(None, db.sm_flavor_delete,
1038
def test_sm_flavor_get(self):
1039
ctxt = context.get_admin_context()
1040
params = _get_sm_flavor_params()
1041
flav = db.sm_flavor_create(ctxt,
1043
val = db.sm_flavor_get(ctxt, flav['id'])
1044
self.assertDictMatch(dict(val), dict(flav))
1046
def test_sm_flavor_get_raise_notfound(self):
1047
ctxt = context.get_admin_context()
1048
self.assertRaises(exception.NotFound,
1053
def test_sm_flavor_get_by_label(self):
1054
ctxt = context.get_admin_context()
1055
params = _get_sm_flavor_params()
1056
flav = db.sm_flavor_create(ctxt,
1058
val = db.sm_flavor_get_by_label(ctxt, flav['label'])
1059
self.assertDictMatch(dict(val), dict(flav))
1061
def test_sm_flavor_get_by_label_raise_notfound(self):
1062
ctxt = context.get_admin_context()
1063
self.assertRaises(exception.NotFound,