Ejemplo n.º 1
0
def test_preserved_name_of_dict(all_modes_kwargs):
    obj = {'metadata': {'name': 'preexisting-name'}}

    kopf.harmonize_naming(obj, name='provided-name', **all_modes_kwargs)

    assert 'name' in obj['metadata']
    assert 'generateName' not in obj['metadata']
    assert obj['metadata']['name'] == 'preexisting-name'
Ejemplo n.º 2
0
def test_prefixed_name_of_dict(relaxed_kwargs):
    obj = {}

    kopf.harmonize_naming(obj, name='provided-name', **relaxed_kwargs)

    assert 'name' not in obj['metadata']
    assert 'generateName' in obj['metadata']
    assert obj['metadata']['generateName'] == 'provided-name-'
Ejemplo n.º 3
0
def test_assigned_name_of_dict(strict_kwargs):
    obj = {}

    kopf.harmonize_naming(obj, name='provided-name', **strict_kwargs)

    assert 'name' in obj['metadata']
    assert 'generateName' not in obj['metadata']
    assert obj['metadata']['name'] == 'provided-name'
Ejemplo n.º 4
0
def test_preserved_name_of_dict(forcedness, strictness, obj1):
    obj1 = copy.deepcopy(obj1)
    kopf.harmonize_naming(obj1,
                          name='provided-name',
                          **forcedness,
                          **strictness)
    assert obj1['metadata'].get('name') != 'provided-name'
    assert obj1['metadata'].get('generateName') != 'provided-name'
Ejemplo n.º 5
0
def test_assignment_of_nonstrict_name_of_kubernetes_model(
        forcedness, strictness, kubernetes_model):
    kubernetes_model.metadata = None
    kopf.harmonize_naming(kubernetes_model,
                          name='provided-name',
                          **forcedness,
                          **strictness)
    assert kubernetes_model.metadata.name is None
    assert kubernetes_model.metadata.generate_name == 'provided-name-'
Ejemplo n.º 6
0
def test_assignment_of_nonstrict_name_of_dict(forcedness, strictness, obj1):
    obj1 = copy.deepcopy(obj1)
    kopf.harmonize_naming(obj1,
                          name='provided-name',
                          **forcedness,
                          **strictness)
    assert 'name' not in obj1['metadata']
    assert 'generateName' in obj1['metadata']
    assert obj1['metadata']['generateName'] == 'provided-name-'
Ejemplo n.º 7
0
def test_preserved_names_of_pykube_object(forcedness, strictness,
                                          pykube_object, obj1):
    pykube_object.obj = copy.deepcopy(obj1)
    kopf.harmonize_naming(pykube_object,
                          name='provided-name',
                          **forcedness,
                          **strictness)
    assert pykube_object.obj['metadata'].get('name') != 'provided-name'
    assert pykube_object.obj['metadata'].get('generateName') != 'provided-name'
Ejemplo n.º 8
0
def test_assignment_of_strict_name_of_pykube_object(forcedness, strictness,
                                                    pykube_object, obj1):
    pykube_object.obj = copy.deepcopy(obj1)
    kopf.harmonize_naming(pykube_object,
                          name='provided-name',
                          **forcedness,
                          **strictness)
    assert pykube_object.obj['metadata'].get('name') == 'provided-name'
    assert pykube_object.obj['metadata'].get('generateName') is None
Ejemplo n.º 9
0
def test_overwriting_of_relaxed_name_of_kubernetes_model(
        forcedness, strictness, kubernetes_model, obj1):
    kubernetes_model.metadata.name = obj1.get('metadata', {}).get('name')
    kubernetes_model.metadata.generate_name = obj1.get('metadata',
                                                       {}).get('generateName')
    kopf.harmonize_naming(kubernetes_model,
                          name='provided-name',
                          **forcedness,
                          **strictness)
    assert kubernetes_model.metadata.name is None
    assert kubernetes_model.metadata.generate_name == 'provided-name-'
Ejemplo n.º 10
0
def test_preserved_names_of_kubernetes_model(forcedness, strictness,
                                             kubernetes_model, obj1):
    kubernetes_model.metadata.name = obj1.get('metadata', {}).get('name')
    kubernetes_model.metadata.generate_name = obj1.get('metadata',
                                                       {}).get('generateName')
    kopf.harmonize_naming(kubernetes_model,
                          name='provided-name',
                          **forcedness,
                          **strictness)
    assert kubernetes_model.metadata.name != 'provided-name'
    assert kubernetes_model.metadata.generate_name != 'provided-name'
Ejemplo n.º 11
0
def test_preserved_names_of_dicts(forcedness, strictness, multicls, obj1,
                                  obj2):
    obj1, obj2 = copy.deepcopy(obj1), copy.deepcopy(obj2)
    objs = multicls([obj1, obj2])
    kopf.harmonize_naming(objs,
                          name='provided-name',
                          **forcedness,
                          **strictness)
    assert obj1['metadata'].get('name') != 'provided-name'
    assert obj2['metadata'].get('name') != 'provided-name'
    assert obj1['metadata'].get('generateName') != 'provided-name'
    assert obj2['metadata'].get('generateName') != 'provided-name'
Ejemplo n.º 12
0
def test_assignment_of_nonstrict_names_of_dicts(forcedness, strictness,
                                                multicls, obj1, obj2):
    obj1, obj2 = copy.deepcopy(obj1), copy.deepcopy(obj2)
    objs = multicls([obj1, obj2])
    kopf.harmonize_naming(objs,
                          name='provided-name',
                          **forcedness,
                          **strictness)
    assert 'name' not in obj1['metadata']
    assert 'name' not in obj2['metadata']
    assert 'generateName' in obj1['metadata']
    assert 'generateName' in obj2['metadata']
    assert obj1['metadata']['generateName'] == 'provided-name-'
    assert obj2['metadata']['generateName'] == 'provided-name-'
Ejemplo n.º 13
0
def test_assigned_names_of_multiple_objects(strict_kwargs, multicls):
    obj1 = {'metadata': {'name': 'preexisting-name-1'}}
    obj2 = {'metadata': {'name': 'preexisting-name-2'}}
    objs = multicls([obj1, obj2])

    kopf.harmonize_naming(objs, name='provided-name', **strict_kwargs)

    assert 'name' in obj1['metadata']
    assert 'generateName' not in obj1['metadata']
    assert obj1['metadata']['name'] == 'preexisting-name-1'

    assert 'name' in obj2['metadata']
    assert 'generateName' not in obj2['metadata']
    assert obj2['metadata']['name'] == 'preexisting-name-2'
Ejemplo n.º 14
0
def test_prefixed_names_of_multiple_objects(relaxed_kwargs, multicls):
    obj1 = {}
    obj2 = {}
    objs = multicls([obj1, obj2])

    kopf.harmonize_naming(objs, name='provided-name', **relaxed_kwargs)

    assert 'name' not in obj1['metadata']
    assert 'generateName' in obj1['metadata']
    assert obj1['metadata']['generateName'] == 'provided-name-'

    assert 'name' not in obj2['metadata']
    assert 'generateName' in obj2['metadata']
    assert obj2['metadata']['generateName'] == 'provided-name-'
Ejemplo n.º 15
0
def test_when_unset_for_name_harmonization():
    with pytest.raises(LookupError) as e:
        kopf.harmonize_naming([])
    assert 'Owner must be set explicitly' in str(e.value)
Ejemplo n.º 16
0
def test_when_empty_for_name_harmonization(owner):
    owner._replace_with({})
    with pytest.raises(LookupError) as e:
        kopf.harmonize_naming([])
    assert 'Name must be set explicitly' in str(e.value)
Ejemplo n.º 17
0
def test_when_set_for_name_harmonization(owner):
    obj = {}
    kopf.harmonize_naming(obj)
    assert obj['metadata']['generateName'].startswith(OWNER_NAME)
Ejemplo n.º 18
0
def test_in_name_harmonization():
    with pytest.raises(TypeError) as e:
        kopf.harmonize_naming(object(), 'x')
    assert "K8s object class is not supported" in str(e.value)