コード例 #1
0
    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)
コード例 #2
0
    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)
コード例 #3
0
    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)
コード例 #4
0
    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)
コード例 #5
0
    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)
コード例 #6
0
 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)
コード例 #7
0
 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)
コード例 #8
0
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)
コード例 #9
0
    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)
コード例 #10
0
 def test_invalid_key_prefix(self):
     r = validate_labels({'[email protected]/key-name': 'value'})
     self.assertEqual(len(r), 1)
コード例 #11
0
 def test_invalid_value(self):
     r = validate_labels({'my.company.com/key-name': 'b@d'})
     self.assertEqual(len(r), 1)
コード例 #12
0
 def test_ok(self):
     self.assertFalse(validate_labels({'my.company.com/key-name': 'value'}))
コード例 #13
0
 def test_invalid_key_name(self):
     r = validate_labels({"my.company.com/key@name": "value"})
     self.assertEqual(len(r), 1)
コード例 #14
0
 def test_invalid_value(self):
     r = validate_labels({"my.company.com/key-name": "b@d"})
     self.assertEqual(len(r), 1)
コード例 #15
0
 def test_ok(self):
     self.assertFalse(validate_labels({"my.company.com/key-name": "value"}))