summaryrefslogtreecommitdiff
path: root/cloudinit/config
diff options
context:
space:
mode:
Diffstat (limited to 'cloudinit/config')
-rw-r--r--cloudinit/config/cc_bootcmd.py1
-rw-r--r--cloudinit/config/cc_runcmd.py1
-rw-r--r--cloudinit/config/cc_snap.py1
-rw-r--r--cloudinit/config/cc_ubuntu_advantage.py1
-rw-r--r--cloudinit/config/tests/test_snap.py36
5 files changed, 36 insertions, 4 deletions
diff --git a/cloudinit/config/cc_bootcmd.py b/cloudinit/config/cc_bootcmd.py
index 233da1ef..db64f0a6 100644
--- a/cloudinit/config/cc_bootcmd.py
+++ b/cloudinit/config/cc_bootcmd.py
@@ -63,7 +63,6 @@ schema = {
'additionalProperties': False,
'minItems': 1,
'required': [],
- 'uniqueItems': True
}
}
}
diff --git a/cloudinit/config/cc_runcmd.py b/cloudinit/config/cc_runcmd.py
index 539cbd5d..b6f6c807 100644
--- a/cloudinit/config/cc_runcmd.py
+++ b/cloudinit/config/cc_runcmd.py
@@ -66,7 +66,6 @@ schema = {
'additionalProperties': False,
'minItems': 1,
'required': [],
- 'uniqueItems': True
}
}
}
diff --git a/cloudinit/config/cc_snap.py b/cloudinit/config/cc_snap.py
index 34a53fd4..a7a03214 100644
--- a/cloudinit/config/cc_snap.py
+++ b/cloudinit/config/cc_snap.py
@@ -110,7 +110,6 @@ schema = {
'additionalItems': False, # Reject non-string & non-list
'minItems': 1,
'minProperties': 1,
- 'uniqueItems': True
},
'squashfuse_in_container': {
'type': 'boolean'
diff --git a/cloudinit/config/cc_ubuntu_advantage.py b/cloudinit/config/cc_ubuntu_advantage.py
index 16b1868b..29d18c96 100644
--- a/cloudinit/config/cc_ubuntu_advantage.py
+++ b/cloudinit/config/cc_ubuntu_advantage.py
@@ -87,7 +87,6 @@ schema = {
'additionalItems': False, # Reject non-string & non-list
'minItems': 1,
'minProperties': 1,
- 'uniqueItems': True
}
},
'additionalProperties': False, # Reject keys not in schema
diff --git a/cloudinit/config/tests/test_snap.py b/cloudinit/config/tests/test_snap.py
index c5b4a9de..492d2d46 100644
--- a/cloudinit/config/tests/test_snap.py
+++ b/cloudinit/config/tests/test_snap.py
@@ -340,6 +340,42 @@ class TestSchema(CiTestCase):
{'snap': {'assertions': {'01': 'also valid'}}}, schema)
self.assertEqual('', self.logs.getvalue())
+ def test_duplicates_are_fine_array_array(self):
+ """Duplicated commands array/array entries are allowed."""
+ byebye = ["echo", "bye"]
+ try:
+ cfg = {'snap': {'commands': [byebye, byebye]}}
+ validate_cloudconfig_schema(cfg, schema, strict=True)
+ except schema.SchemaValidationError as e:
+ self.fail("command entries can be duplicate.")
+
+ def test_duplicates_are_fine_array_string(self):
+ """Duplicated commands array/string entries are allowed."""
+ byebye = "echo bye"
+ try:
+ cfg = {'snap': {'commands': [byebye, byebye]}}
+ validate_cloudconfig_schema(cfg, schema, strict=True)
+ except schema.SchemaValidationError as e:
+ self.fail("command entries can be duplicate.")
+
+ def test_duplicates_are_fine_dict_array(self):
+ """Duplicated commands dict/array entries are allowed."""
+ byebye = ["echo", "bye"]
+ try:
+ cfg = {'snap': {'commands': {'00': byebye, '01': byebye}}}
+ validate_cloudconfig_schema(cfg, schema, strict=True)
+ except schema.SchemaValidationError as e:
+ self.fail("command entries can be duplicate.")
+
+ def test_duplicates_are_fine_dict_string(self):
+ """Duplicated commands dict/string entries are allowed."""
+ byebye = "echo bye"
+ try:
+ cfg = {'snap': {'commands': {'00': byebye, '01': byebye}}}
+ validate_cloudconfig_schema(cfg, schema, strict=True)
+ except schema.SchemaValidationError as e:
+ self.fail("command entries can be duplicate.")
+
class TestHandle(CiTestCase):