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": {
|
"user_keypair_id": {
|
||||||
"type": "string",
|
"type": "string",
|
||||||
"format": "valid_name",
|
"format": "valid_keypair_name",
|
||||||
},
|
},
|
||||||
"cluster_template_id": {
|
"cluster_template_id": {
|
||||||
"type": "string",
|
"type": "string",
|
||||||
|
@ -122,16 +122,6 @@ class TestClusterCreateValidation(u.ValidationTestCase):
|
|||||||
)
|
)
|
||||||
|
|
||||||
def test_cluster_create_v_keypair_type(self):
|
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(
|
self._assert_create_object_validation(
|
||||||
data={
|
data={
|
||||||
'name': "test-name",
|
'name': "test-name",
|
||||||
@ -139,7 +129,7 @@ class TestClusterCreateValidation(u.ValidationTestCase):
|
|||||||
'hadoop_version': "1.2.1",
|
'hadoop_version': "1.2.1",
|
||||||
'user_keypair_id': '!'},
|
'user_keypair_id': '!'},
|
||||||
bad_req_i=(1, 'VALIDATION_ERROR',
|
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):
|
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.jar")
|
||||||
self._validate_success(schema, "hadoop-examples-1.2.1")
|
self._validate_success(schema, "hadoop-examples-1.2.1")
|
||||||
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_success(schema, "1")
|
||||||
self._validate_failure(schema, "1a")
|
self._validate_success(schema, "1a")
|
||||||
self._validate_success(schema, "a1")
|
self._validate_success(schema, "a1")
|
||||||
self._validate_success(schema, "A1")
|
self._validate_success(schema, "A1")
|
||||||
self._validate_success(schema, "A1B")
|
self._validate_success(schema, "A1B")
|
||||||
@ -182,6 +182,43 @@ class ApiValidatorTest(testtools.TestCase):
|
|||||||
self._validate_success(schema, "a._.b")
|
self._validate_success(schema, "a._.b")
|
||||||
self._validate_success(schema, "a_")
|
self._validate_success(schema, "a_")
|
||||||
self._validate_success(schema, "a-b-001")
|
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, None)
|
||||||
self._validate_failure(schema, 1)
|
self._validate_failure(schema, 1)
|
||||||
|
@ -40,7 +40,18 @@ def validate_name_format(entry):
|
|||||||
# shoud fail type validation
|
# shoud fail type validation
|
||||||
return True
|
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
|
return res is not None
|
||||||
|
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user