def test_long_key_prefix(self): prefix = 'a' * LABEL_MAX_KEY_PREFIX_LENGTH self.assertFalse(validate_labels({f'{prefix}/key': 'value'})) prefix = 'a' * (LABEL_MAX_KEY_PREFIX_LENGTH + 1) r = validate_labels({f'{prefix}/key': 'value'}) self.assertEqual(len(r), 1)
def test_long_value(self): v = 'a' * LABEL_MAX_VALUE_LENGTH self.assertFalse(validate_labels({'my.company.com/key-name': v})) v = 'a' * (LABEL_MAX_VALUE_LENGTH + 1) r = validate_labels({'my.company.com/key-name': v}) self.assertEqual(len(r), 1)
def test_long_keyname(self): kn = 'a' * LABEL_MAX_KEY_NAME_LENGTH self.assertFalse(validate_labels({f'my.company.com/{kn}': 'value'})) kn = 'a' * (LABEL_MAX_KEY_NAME_LENGTH + 1) r = validate_labels({f'my.company.com/{kn}': 'value'}) self.assertEqual(len(r), 1)
def test_long_key_prefix(self): prefix = "a" * LABEL_MAX_KEY_PREFIX_LENGTH self.assertFalse(validate_labels({f"{prefix}/key": "value"})) prefix = "a" * (LABEL_MAX_KEY_PREFIX_LENGTH + 1) r = validate_labels({f"{prefix}/key": "value"}) self.assertEqual(len(r), 1)
def test_long_keyname(self): kn = "a" * LABEL_MAX_KEY_NAME_LENGTH self.assertFalse(validate_labels({f"my.company.com/{kn}": "value"})) kn = "a" * (LABEL_MAX_KEY_NAME_LENGTH + 1) r = validate_labels({f"my.company.com/{kn}": "value"}) self.assertEqual(len(r), 1)
def test_many_wrong(self): longstr = 'a' * (LABEL_MAX_KEY_PREFIX_LENGTH + 1) key_prefix = 'b@d.' + longstr + '.com' key_name = 'b@d-' + longstr value = 'b@d-' + longstr r = validate_labels({ f'{key_prefix}/{key_name}': value, 'kubernetes.io/b@d': value }) self.assertEqual(len(r), 10)
def test_many_wrong(self): longstr = "a" * (LABEL_MAX_KEY_PREFIX_LENGTH + 1) key_prefix = "b@d." + longstr + ".com" key_name = "b@d-" + longstr value = "b@d-" + longstr r = validate_labels({ f"{key_prefix}/{key_name}": value, "kubernetes.io/b@d": value }) self.assertEqual(len(r), 10)
def get_desired(inventory: LabelInventory, oc_map: OC_Map, namespaces: List[Any]) -> None: """ Fill the provided label inventory with every desired info from the input namespaces. Ocm_map is used to not register clusters which are unreachable or not configured (due to --internal / --external) """ to_be_ignored = [] for ns in namespaces: if "labels" not in ns: continue cluster, ns_name = get_names_for_namespace(ns) # Skip unreachable / non-hanlded clusters # eg: internal settings may not match --internal / --external param if cluster not in oc_map.clusters(): continue labels = json.loads(ns["labels"]) validation_errors = validate_labels(labels) for err in validation_errors: inventory.add_error(cluster, ns_name, err) if inventory.errors(cluster, ns_name): continue if inventory.get(cluster, ns_name, DESIRED) is not None: # delete at the end of the loop to avoid having a reinsertion at # the third/fifth/.. occurrences to_be_ignored.append((cluster, ns_name)) continue inventory.set(cluster, ns_name, DESIRED, labels) for cluster, ns_name in to_be_ignored: # Log only a warning here and do not report errors nor fail the # integration. # A dedicated integration or PR check will be done to ensure this # case does not occur (anymore) _LOG.debug(f"Found several namespace definitions for " f"{cluster}/{ns_name}. Ignoring") inventory.delete(cluster, ns_name)
def test_reserved_key_prefix(self): r = validate_labels({'kubernetes.io/key-name': 'value'}) self.assertEqual(len(r), 1) r = validate_labels({'k8s.io/key-name': 'value'}) self.assertEqual(len(r), 1)
def test_invalid_key_prefix(self): r = validate_labels({'[email protected]/key-name': 'value'}) self.assertEqual(len(r), 1)
def test_invalid_value(self): r = validate_labels({'my.company.com/key-name': 'b@d'}) self.assertEqual(len(r), 1)
def test_ok(self): self.assertFalse(validate_labels({'my.company.com/key-name': 'value'}))
def test_invalid_key_name(self): r = validate_labels({"my.company.com/key@name": "value"}) self.assertEqual(len(r), 1)
def test_invalid_value(self): r = validate_labels({"my.company.com/key-name": "b@d"}) self.assertEqual(len(r), 1)
def test_ok(self): self.assertFalse(validate_labels({"my.company.com/key-name": "value"}))