Creates better exceptions for http code 409

Depends-On: I0cdfae8f784a16fd05634cc2559429ea78c50424
Change-Id: I9f130635fec545a54100c1d94dd6028930f5fe71
This commit is contained in:
Mehdi Abaakouk 2015-10-02 13:44:47 +02:00 committed by Mehdi Abaakouk (sileht)
parent 63e56b6990
commit 641fd184b2
5 changed files with 60 additions and 0 deletions

View File

@ -114,6 +114,26 @@ class Conflict(ClientException):
message = "Conflict"
class NamedMetricAreadyExists(Conflict, MutipleMeaningException):
message = "Named metric already exists"
match = re.compile("Named metric .* does not exist")
class ResourceAlreadyExists(Conflict, MutipleMeaningException):
message = "Resource already exists"
match = re.compile("Resource .* already exists")
class ArchivePolicyAlreadyExists(Conflict, MutipleMeaningException):
message = "Archive policy already exists"
match = re.compile("Archive policy .* already exists")
class ArchivePolicyRuleAlreadyExists(Conflict, MutipleMeaningException):
message = "Archive policy rule already exists"
match = re.compile("Archive policy Rule .* already exists")
class OverLimit(RetryAfterException):
"""HTTP 413 - Over limit:
@ -147,6 +167,9 @@ _error_classes = [BadRequest, Unauthorized, Forbidden, NotFound,
_error_classes_enhanced = {
NotFound: [MetricNotFound, ResourceNotFound, ArchivePolicyNotFound,
ArchivePolicyRuleNotFound],
Conflict: [NamedMetricAreadyExists, ResourceAlreadyExists,
ArchivePolicyAlreadyExists,
ArchivePolicyRuleAlreadyExists]
}
_code_map = dict(
(c.http_status, (c, _error_classes_enhanced.get(c, [])))

View File

@ -23,6 +23,16 @@ class ArchivePolicyClientTest(base.ClientTestBase):
policy = self.details_multiple(result)[0]
self.assertEqual('low', policy["name"])
# CREATE FAIL
result = self.gnocchi(
u'archive-policy', params=u"create low"
u" --back-window 0"
u" -d granularity:1s,points:86400",
fail_ok=True, merge_stderr=True)
self.assertFirstLineStartsWith(
result.split('\n'),
"Archive policy low already exists (HTTP 409)")
# GET
result = self.gnocchi(
'archive-policy', params="show low")

View File

@ -23,6 +23,15 @@ class ArchivePolicyRuleClientTest(base.ClientTestBase):
policy_rule = self.details_multiple(result)[0]
self.assertEqual('test', policy_rule["name"])
# CREATE FAIL
result = self.gnocchi(
u'archive-policy-rule', params=u"create test"
u" --archive-policy high"
u" --metric-pattern 'disk.io.*'",
fail_ok=True, merge_stderr=True)
self.assertFirstLineStartsWith(
result.split('\n'),
"Archive policy rule test already exists (HTTP 409)")
# GET
result = self.gnocchi(
'archive-policy-rule', params="show test")

View File

@ -170,6 +170,15 @@ class MetricClientTest(base.ClientTestBase):
self.assertNotEqual('None', metric["resource"])
self.assertIn("metric-test", metric["archive_policy/name"])
# CREATE FAIL
result = self.gnocchi(
u'metric', params=u"create"
u" --archive-policy-name metric-test2 -r metric-res metric-name",
fail_ok=True, merge_stderr=True)
self.assertFirstLineStartsWith(
result.split('\n'),
"Named metric metric-name already exists (HTTP 409)")
# GET
result = self.gnocchi('metric',
params="show -r metric-res metric-name")

View File

@ -31,6 +31,15 @@ class ResourceClientTest(base.ClientTestBase):
self.assertEqual('None', resource["project_id"])
self.assertNotEqual('None', resource["started_at"])
# CREATE FAIL
result = self.gnocchi('resource',
params="create generic -a id:%s" %
self.RESOURCE_ID,
fail_ok=True, merge_stderr=True)
self.assertFirstLineStartsWith(
result.split('\n'),
"Resource %s already exists (HTTP 409)" % self.RESOURCE_ID)
# UPDATE
result = self.gnocchi(
'resource', params=("update -t generic %s -a project_id:%s "