mirror of
https://github.com/ansible-collections/kubernetes.core.git
synced 2026-03-27 05:43:02 +00:00
Add new waiter SUMMARY This refactors the waiter logic from common.py into a separate module. ISSUE TYPE COMPONENT NAME ADDITIONAL INFORMATION Reviewed-by: None <None> Reviewed-by: Alina Buzachis <None> Reviewed-by: None <None>
188 lines
4.8 KiB
Python
188 lines
4.8 KiB
Python
import os
|
|
from pathlib import Path
|
|
|
|
from ansible_collections.kubernetes.core.plugins.module_utils.k8s.resource import (
|
|
create_definitions,
|
|
flatten_list_kind,
|
|
from_file,
|
|
from_yaml,
|
|
merge_params,
|
|
)
|
|
|
|
|
|
def test_create_definitions_loads_from_definition():
|
|
params = {
|
|
"resource_definition": {
|
|
"kind": "Pod",
|
|
"apiVersion": "v1",
|
|
"metadata": {"name": "foo", "namespace": "bar"},
|
|
}
|
|
}
|
|
results = create_definitions(params)
|
|
assert len(results) == 1
|
|
assert results[0].kind == "Pod"
|
|
assert results[0].api_version == "v1"
|
|
assert results[0].name == "foo"
|
|
assert results[0].namespace == "bar"
|
|
|
|
|
|
def test_create_definitions_loads_from_file():
|
|
current = Path(os.path.dirname(os.path.abspath(__file__)))
|
|
params = {"src": current / "fixtures/definitions.yml"}
|
|
results = create_definitions(params)
|
|
assert len(results) == 3
|
|
assert results[0].kind == "Namespace"
|
|
assert results[1].kind == "Pod"
|
|
|
|
|
|
def test_create_definitions_loads_from_params():
|
|
params = {
|
|
"kind": "Pod",
|
|
"api_version": "v1",
|
|
"name": "foo",
|
|
"namespace": "foobar",
|
|
}
|
|
results = create_definitions(params)
|
|
assert len(results) == 1
|
|
assert results[0] == {
|
|
"kind": "Pod",
|
|
"apiVersion": "v1",
|
|
"metadata": {"name": "foo", "namespace": "foobar"},
|
|
}
|
|
|
|
|
|
def test_create_definitions_loads_list_kind():
|
|
params = {
|
|
"resource_definition": {
|
|
"kind": "PodList",
|
|
"apiVersion": "v1",
|
|
"items": [
|
|
{"kind": "Pod", "metadata": {"name": "foo"}},
|
|
{"kind": "Pod", "metadata": {"name": "bar"}},
|
|
],
|
|
}
|
|
}
|
|
results = create_definitions(params)
|
|
assert len(results) == 2
|
|
assert results[0].name == "foo"
|
|
assert results[1].name == "bar"
|
|
|
|
|
|
def test_merge_params_does_not_overwrite():
|
|
definition = {
|
|
"kind": "Pod",
|
|
"apiVersion": "v1",
|
|
"metadata": {"name": "foo", "namespace": "bar"},
|
|
}
|
|
params = {
|
|
"kind": "Service",
|
|
"api_version": "v2",
|
|
"name": "baz",
|
|
"namespace": "gaz",
|
|
}
|
|
result = merge_params(definition, params)
|
|
assert result == definition
|
|
|
|
|
|
def test_merge_params_adds_module_params():
|
|
params = {
|
|
"kind": "Pod",
|
|
"api_version": "v1",
|
|
"namespace": "bar",
|
|
"generate_name": "foo-",
|
|
}
|
|
result = merge_params({}, params)
|
|
assert result == {
|
|
"kind": "Pod",
|
|
"apiVersion": "v1",
|
|
"metadata": {"generateName": "foo-", "namespace": "bar"},
|
|
}
|
|
|
|
|
|
def test_from_yaml_loads_string_docs():
|
|
definition = """
|
|
kind: Pod
|
|
apiVersion: v1
|
|
metadata:
|
|
name: foo
|
|
namespace: bar
|
|
---
|
|
kind: ConfigMap
|
|
apiVersion: v1
|
|
metadata:
|
|
name: foo
|
|
namespace: bar
|
|
"""
|
|
result = list(from_yaml(definition))
|
|
assert result[0]["kind"] == "Pod"
|
|
assert result[1]["kind"] == "ConfigMap"
|
|
|
|
|
|
def test_from_yaml_loads_list():
|
|
definition = [
|
|
"""
|
|
kind: Pod
|
|
apiVersion: v1
|
|
metadata:
|
|
name: foo
|
|
namespace: bar
|
|
""",
|
|
"""
|
|
kind: ConfigMap
|
|
apiVersion: v1
|
|
metadata:
|
|
name: foo
|
|
namespace: bar
|
|
""",
|
|
{
|
|
"kind": "Pod",
|
|
"apiVersion": "v1",
|
|
"metadata": {"name": "baz", "namespace": "bar"},
|
|
},
|
|
]
|
|
result = list(from_yaml(definition))
|
|
assert len(result) == 3
|
|
assert result[0]["kind"] == "Pod"
|
|
assert result[1]["kind"] == "ConfigMap"
|
|
assert result[2]["metadata"]["name"] == "baz"
|
|
|
|
|
|
def test_from_yaml_loads_dictionary():
|
|
definition = {
|
|
"kind": "Pod",
|
|
"apiVersion": "v1",
|
|
"metadata": {"name": "foo", "namespace": "bar"},
|
|
}
|
|
result = list(from_yaml(definition))
|
|
assert result[0]["kind"] == "Pod"
|
|
|
|
|
|
def test_from_file_loads_definitions():
|
|
current = Path(os.path.dirname(os.path.abspath(__file__)))
|
|
result = list(from_file(current / "fixtures/definitions.yml"))
|
|
assert result[0]["kind"] == "Namespace"
|
|
assert result[1]["kind"] == "Pod"
|
|
|
|
|
|
def test_flatten_list_kind_flattens():
|
|
definition = {
|
|
"kind": "PodList",
|
|
"apiVersion": "v1",
|
|
"items": [
|
|
{"kind": "Pod", "metadata": {"name": "foo"}},
|
|
{"kind": "Pod", "metadata": {"name": "bar"}},
|
|
],
|
|
}
|
|
result = flatten_list_kind(definition, {"namespace": "foobar"})
|
|
assert len(result) == 2
|
|
|
|
assert result[0]["kind"] == "Pod"
|
|
assert result[0]["apiVersion"] == "v1"
|
|
assert result[0]["metadata"]["name"] == "foo"
|
|
assert result[0]["metadata"]["namespace"] == "foobar"
|
|
|
|
assert result[1]["kind"] == "Pod"
|
|
assert result[1]["apiVersion"] == "v1"
|
|
assert result[1]["metadata"]["name"] == "bar"
|
|
assert result[1]["metadata"]["namespace"] == "foobar"
|