Merge "Refactoring datasource, job and job_binary name validations"

This commit is contained in:
Jenkins 2015-01-27 10:32:38 +00:00 committed by Gerrit Code Review
commit 7f454d579c
4 changed files with 53 additions and 15 deletions

View File

@ -35,7 +35,7 @@ def _build_cluster_schema():
},
"user_keypair_id": {
"type": "string",
"format": "valid_name",
"format": "valid_keypair_name",
},
"cluster_template_id": {
"type": "string",

View File

@ -122,16 +122,6 @@ class TestClusterCreateValidation(u.ValidationTestCase):
)
def test_cluster_create_v_keypair_type(self):
self._assert_create_object_validation(
data={
'name': "test-name",
'plugin_name': "vanilla",
'hadoop_version': "1.2.1",
'user_keypair_id': '1'
},
bad_req_i=(1, 'VALIDATION_ERROR',
"'1' is not a 'valid_name'")
)
self._assert_create_object_validation(
data={
'name': "test-name",
@ -139,7 +129,7 @@ class TestClusterCreateValidation(u.ValidationTestCase):
'hadoop_version': "1.2.1",
'user_keypair_id': '!'},
bad_req_i=(1, 'VALIDATION_ERROR',
"'!' is not a 'valid_name'")
"'!' is not a 'valid_keypair_name'")
)
def test_cluster_create_v_image_exists(self):

View File

@ -172,8 +172,8 @@ class ApiValidatorTest(testtools.TestCase):
self._validate_success(schema, "hadoop-examples-1.2.1.jar")
self._validate_success(schema, "hadoop-examples-1.2.1")
self._validate_success(schema, "hadoop-examples-1.2.1.")
self._validate_failure(schema, "1")
self._validate_failure(schema, "1a")
self._validate_success(schema, "1")
self._validate_success(schema, "1a")
self._validate_success(schema, "a1")
self._validate_success(schema, "A1")
self._validate_success(schema, "A1B")
@ -182,6 +182,43 @@ class ApiValidatorTest(testtools.TestCase):
self._validate_success(schema, "a._.b")
self._validate_success(schema, "a_")
self._validate_success(schema, "a-b-001")
self._validate_failure(schema, "-aaaa-bbbb")
self._validate_failure(schema, ".aaaa-bbbb")
self._validate_failure(schema, None)
self._validate_failure(schema, 1)
self._validate_failure(schema, ["1"])
def test_validate_valid_keypair_name(self):
schema = {
"type": "string",
"format": "valid_keypair_name",
}
self._validate_success(schema, "abcd")
self._validate_success(schema, "abcd123")
self._validate_success(schema, "abcd-123")
self._validate_success(schema, "abcd_123")
self._validate_success(schema, "_123")
self._validate_success(schema, "a" * 64)
self._validate_failure(schema, "")
self._validate_failure(schema, "hadoop-examples-1.2.1.jar")
self._validate_failure(schema, "hadoop-examples-1.2.1")
self._validate_failure(schema, "hadoop-examples-1.2.1.")
self._validate_success(schema, "1")
self._validate_success(schema, "1a")
self._validate_success(schema, "a1")
self._validate_success(schema, "A1")
self._validate_success(schema, "A1B")
self._validate_failure(schema, "a.b")
self._validate_failure(schema, "a..b")
self._validate_failure(schema, "a._.b")
self._validate_success(schema, "a_")
self._validate_success(schema, "a-b-001")
self._validate_success(schema, "-aaaa-bbbb")
self._validate_success(schema, "-aaaa bbbb")
self._validate_success(schema, " -aaaa bbbb")
self._validate_failure(schema, ".aaaa-bbbb")
self._validate_failure(schema, None)
self._validate_failure(schema, 1)

View File

@ -40,7 +40,18 @@ def validate_name_format(entry):
# shoud fail type validation
return True
res = re.match(r"^[a-zA-Z][a-zA-Z0-9\-_\.]*$", entry)
res = re.match(r"^[a-zA-Z0-9][a-zA-Z0-9\-_\.]*$", entry)
return res is not None
@jsonschema.FormatChecker.cls_checks('valid_keypair_name')
def validate_keypair_name_format(entry):
if not isinstance(entry, six.string_types):
# should fail type validation
return True
# this follows the validation put forth by nova for keypair names
res = re.match(r'^[a-zA-Z0-9\-_ ]+$', entry)
return res is not None