mirror of
https://github.com/kubevirt/kubevirt.core.git
synced 2026-05-14 05:22:15 +00:00
Merge pull request #88 from 0xFelix/cleanup-yaml
cleanup: Cleanup YAML passed to k8s module Signed-off-by: Felix Matouschek <fmatouschek@redhat.com>
This commit is contained in:
@@ -265,12 +265,12 @@ apiVersion: {{ api_version }}
|
|||||||
kind: VirtualMachine
|
kind: VirtualMachine
|
||||||
metadata:
|
metadata:
|
||||||
{% if name %}
|
{% if name %}
|
||||||
name: "{{ name }}"
|
name: {{ name }}
|
||||||
{% endif %}
|
{% endif %}
|
||||||
{% if generate_name %}
|
{% if generate_name %}
|
||||||
generateName: "{{ generate_name }}"
|
generateName: {{ generate_name }}
|
||||||
{% endif %}
|
{% endif %}
|
||||||
namespace: "{{ namespace }}"
|
namespace: {{ namespace }}
|
||||||
{% if annotations %}
|
{% if annotations %}
|
||||||
annotations:
|
annotations:
|
||||||
{{ annotations | to_yaml | indent(4) }}
|
{{ annotations | to_yaml | indent(4) }}
|
||||||
@@ -280,7 +280,7 @@ metadata:
|
|||||||
{{ labels | to_yaml | indent(4) }}
|
{{ labels | to_yaml | indent(4) }}
|
||||||
{%- endif %}
|
{%- endif %}
|
||||||
spec:
|
spec:
|
||||||
running: {{ running }}
|
running: {{ running | lower }}
|
||||||
{% if instancetype %}
|
{% if instancetype %}
|
||||||
instancetype:
|
instancetype:
|
||||||
{{ instancetype | to_yaml | indent(4) }}
|
{{ instancetype | to_yaml | indent(4) }}
|
||||||
@@ -291,7 +291,7 @@ spec:
|
|||||||
{%- endif %}
|
{%- endif %}
|
||||||
{% if data_volume_templates %}
|
{% if data_volume_templates %}
|
||||||
dataVolumeTemplates:
|
dataVolumeTemplates:
|
||||||
{{ data_volume_templates | to_yaml | indent(4) }}
|
{{ data_volume_templates | to_yaml | indent(2) }}
|
||||||
{%- endif %}
|
{%- endif %}
|
||||||
template:
|
template:
|
||||||
{% if annotations or labels %}
|
{% if annotations or labels %}
|
||||||
|
|||||||
@@ -8,6 +8,8 @@ __metaclass__ = type
|
|||||||
|
|
||||||
import pytest
|
import pytest
|
||||||
|
|
||||||
|
from yaml import dump
|
||||||
|
|
||||||
from ansible.module_utils.basic import AnsibleModule
|
from ansible.module_utils.basic import AnsibleModule
|
||||||
from ansible_collections.kubernetes.core.plugins.module_utils.k8s import runner
|
from ansible_collections.kubernetes.core.plugins.module_utils.k8s import runner
|
||||||
from ansible_collections.kubevirt.core.plugins.modules import kubevirt_vm
|
from ansible_collections.kubevirt.core.plugins.modules import kubevirt_vm
|
||||||
@@ -21,7 +23,7 @@ from ansible_collections.kubevirt.core.tests.unit.utils.ansible_module_mock impo
|
|||||||
|
|
||||||
|
|
||||||
@pytest.fixture(scope="module")
|
@pytest.fixture(scope="module")
|
||||||
def vm_definition():
|
def vm_definition_create():
|
||||||
return {
|
return {
|
||||||
"apiVersion": "kubevirt.io/v1",
|
"apiVersion": "kubevirt.io/v1",
|
||||||
"kind": "VirtualMachine",
|
"kind": "VirtualMachine",
|
||||||
@@ -64,52 +66,46 @@ def vm_definition():
|
|||||||
|
|
||||||
|
|
||||||
@pytest.fixture(scope="module")
|
@pytest.fixture(scope="module")
|
||||||
def vm_manifest():
|
def module_params_default():
|
||||||
return """apiVersion: kubevirt.io/v1
|
return {
|
||||||
kind: VirtualMachine
|
"api_version": "kubevirt.io/v1",
|
||||||
metadata:
|
"annotations": None,
|
||||||
name: "testvm"
|
"labels": None,
|
||||||
namespace: "default"
|
"running": True,
|
||||||
labels:
|
"instancetype": None,
|
||||||
environment: staging
|
"preference": None,
|
||||||
service: loadbalancer
|
"data_volume_templates": None,
|
||||||
spec:
|
"spec": None,
|
||||||
running: True
|
"wait": False,
|
||||||
instancetype:
|
"wait_sleep": 5,
|
||||||
name: u1.medium
|
"wait_timeout": 5,
|
||||||
preference:
|
"kubeconfig": None,
|
||||||
name: fedora
|
"context": None,
|
||||||
dataVolumeTemplates:
|
"host": None,
|
||||||
- metadata:
|
"api_key": None,
|
||||||
name: testdv
|
"username": None,
|
||||||
spec:
|
"password": None,
|
||||||
source:
|
"validate_certs": None,
|
||||||
registry:
|
"ca_cert": None,
|
||||||
url: docker://quay.io/containerdisks/fedora:latest
|
"client_cert": None,
|
||||||
storage:
|
"client_key": None,
|
||||||
accessModes:
|
"proxy": None,
|
||||||
- ReadWriteOnce
|
"no_proxy": None,
|
||||||
resources:
|
"proxy_headers": None,
|
||||||
requests:
|
"persist_config": None,
|
||||||
storage: 5Gi
|
"impersonate_user": None,
|
||||||
template:
|
"impersonate_groups": None,
|
||||||
metadata:
|
"state": "present",
|
||||||
labels:
|
"force": False,
|
||||||
environment: staging
|
"delete_options": None,
|
||||||
service: loadbalancer
|
}
|
||||||
spec:
|
|
||||||
domain:
|
|
||||||
devices: {}
|
|
||||||
terminationGracePeriodSeconds: 180
|
|
||||||
"""
|
|
||||||
|
|
||||||
|
|
||||||
@pytest.fixture(scope="module")
|
@pytest.fixture(scope="module")
|
||||||
def module_params_create():
|
def module_params_create(module_params_default):
|
||||||
return {
|
return module_params_default | {
|
||||||
"name": "testvm",
|
"name": "testvm",
|
||||||
"namespace": "default",
|
"namespace": "default",
|
||||||
"state": "present",
|
|
||||||
"labels": {"service": "loadbalancer", "environment": "staging"},
|
"labels": {"service": "loadbalancer", "environment": "staging"},
|
||||||
"instancetype": {"name": "u1.medium"},
|
"instancetype": {"name": "u1.medium"},
|
||||||
"preference": {"name": "fedora"},
|
"preference": {"name": "fedora"},
|
||||||
@@ -137,34 +133,10 @@ def module_params_create():
|
|||||||
|
|
||||||
|
|
||||||
@pytest.fixture(scope="module")
|
@pytest.fixture(scope="module")
|
||||||
def k8s_module_params_create(module_params_create, vm_manifest):
|
def k8s_module_params_create(module_params_create, vm_definition_create):
|
||||||
return module_params_create | {
|
return module_params_create | {
|
||||||
"api_version": "kubevirt.io/v1",
|
|
||||||
"running": True,
|
|
||||||
"wait": False,
|
|
||||||
"wait_sleep": 5,
|
|
||||||
"wait_timeout": 120,
|
|
||||||
"force": False,
|
|
||||||
"generate_name": None,
|
"generate_name": None,
|
||||||
"annotations": None,
|
"resource_definition": dump(vm_definition_create, sort_keys=False),
|
||||||
"kubeconfig": None,
|
|
||||||
"context": None,
|
|
||||||
"host": None,
|
|
||||||
"api_key": None,
|
|
||||||
"username": None,
|
|
||||||
"password": None,
|
|
||||||
"validate_certs": None,
|
|
||||||
"ca_cert": None,
|
|
||||||
"client_cert": None,
|
|
||||||
"client_key": None,
|
|
||||||
"proxy": None,
|
|
||||||
"no_proxy": None,
|
|
||||||
"proxy_headers": None,
|
|
||||||
"persist_config": None,
|
|
||||||
"impersonate_user": None,
|
|
||||||
"impersonate_groups": None,
|
|
||||||
"delete_options": None,
|
|
||||||
"resource_definition": vm_manifest,
|
|
||||||
"wait_condition": {"type": "Ready", "status": True},
|
"wait_condition": {"type": "Ready", "status": True},
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -176,17 +148,34 @@ def test_module_fails_when_required_args_missing(monkeypatch):
|
|||||||
kubevirt_vm.main()
|
kubevirt_vm.main()
|
||||||
|
|
||||||
|
|
||||||
def test_module_create(
|
@pytest.mark.parametrize(
|
||||||
monkeypatch, mocker, module_params_create, k8s_module_params_create, vm_definition
|
"module_params,k8s_module_params,vm_definition,method",
|
||||||
|
[
|
||||||
|
(
|
||||||
|
"module_params_create",
|
||||||
|
"k8s_module_params_create",
|
||||||
|
"vm_definition_create",
|
||||||
|
"create",
|
||||||
|
),
|
||||||
|
],
|
||||||
|
)
|
||||||
|
def test_module(
|
||||||
|
request,
|
||||||
|
monkeypatch,
|
||||||
|
mocker,
|
||||||
|
module_params,
|
||||||
|
k8s_module_params,
|
||||||
|
vm_definition,
|
||||||
|
method,
|
||||||
):
|
):
|
||||||
monkeypatch.setattr(AnsibleModule, "exit_json", exit_json)
|
monkeypatch.setattr(AnsibleModule, "exit_json", exit_json)
|
||||||
monkeypatch.setattr(runner, "get_api_client", lambda _: None)
|
monkeypatch.setattr(runner, "get_api_client", lambda _: None)
|
||||||
|
|
||||||
set_module_args(module_params_create)
|
set_module_args(request.getfixturevalue(module_params))
|
||||||
|
|
||||||
perform_action = mocker.patch.object(runner, "perform_action")
|
perform_action = mocker.patch.object(runner, "perform_action")
|
||||||
perform_action.return_value = {
|
perform_action.return_value = {
|
||||||
"method": "create",
|
"method": method,
|
||||||
"changed": True,
|
"changed": True,
|
||||||
"result": "success",
|
"result": "success",
|
||||||
}
|
}
|
||||||
@@ -194,5 +183,7 @@ def test_module_create(
|
|||||||
with pytest.raises(AnsibleExitJson):
|
with pytest.raises(AnsibleExitJson):
|
||||||
kubevirt_vm.main()
|
kubevirt_vm.main()
|
||||||
perform_action.assert_called_once_with(
|
perform_action.assert_called_once_with(
|
||||||
mocker.ANY, vm_definition, k8s_module_params_create
|
mocker.ANY,
|
||||||
|
request.getfixturevalue(vm_definition),
|
||||||
|
request.getfixturevalue(k8s_module_params),
|
||||||
)
|
)
|
||||||
|
|||||||
Reference in New Issue
Block a user