Merge "Refactoring datasource, job and job_binary name validations"
This commit is contained in:
commit
7f454d579c
@ -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",
|
||||
|
@ -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):
|
||||
|
@ -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)
|
||||
|
@ -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
|
||||
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user