Beispiel #1
0
    def test_pvc_creation_wait(self, mock_create_stream, _phase, _exception):
        _kind = 'PersistentVolumeClaim'
        # Desired state:
        args = dict(state='present',
                    kind=_kind,
                    wait=True,
                    name='testvmi',
                    namespace='vms',
                    api_version='v1')
        set_module_args(args)

        # Mock pre-change state:
        Resource.get.return_value = None  # Resource does NOT initially exist in cluster
        resource_args = dict(kind=_kind, **RESOURCE_DEFAULT_ARGS)
        K8sAnsibleMixin.find_resource.return_value = Resource(**resource_args)

        # Mock post-change state:
        stream_obj = dict(
            status=dict(phase=_phase),
            metadata=dict(
                annotations={'cdi.kubevirt.io/storage.pod.phase': 'Succeeded'
                             }),
            method='create',
            changed=True,
        )
        mock_watcher = MagicMock()
        mock_create_stream.return_value = (mock_watcher,
                                           [dict(object=stream_obj)])

        # Actual test:
        with pytest.raises(_exception) as result:
            mymodule.KubeVirtVM().execute_module()
        if _exception is AnsibleExitJson:
            assert result.value[0]['method'] == 'create' and result.value[0][
                'changed'] == True
Beispiel #2
0
def mock_processedtemplates():
    return Resource(
        api_version='v1',
        kind='Template',
        name='processedtemplates',
        namespaced=True,
        preferred=True,
        prefix='api',
        shorter_names=[],
        shortNames=[],
        verbs=['create', 'delete', 'get', 'list', 'patch', 'update', 'watch'])
Beispiel #3
0
def mock_namespace():
    return Resource(
        api_version='v1',
        kind='Namespace',
        name='namespaces',
        namespaced=False,
        preferred=True,
        prefix='api',
        shorter_names=['ns'],
        shortNames=['ns'],
        singularName='namespace',
        verbs=['create', 'delete', 'get', 'list', 'patch', 'update', 'watch'])
Beispiel #4
0
    def test_stream_creation(self, mock_watch):
        _name = 'test-vmirs'
        # Desired state:
        args = dict(name=_name, namespace='vms', replicas=2, wait=True)
        set_module_args(args)

        # Mock pre-change state:
        resource_args = dict( kind='VirtualMachineInstanceReplicaSet', **RESOURCE_DEFAULT_ARGS )
        K8sAnsibleMixin.find_resource.return_value = Resource(**resource_args)
        res_inst = ResourceInstance('', dict(metadata = {'name': _name}, spec = {'replicas': 3}))
        Resource.get.return_value = res_inst

        # Actual test:
        mock_watch.side_effect = KubernetesException("Test", value=42)
        with pytest.raises(AnsibleFailJson) as result:
            mymodule.KubeVirtScaleVMIRS().execute_module()
Beispiel #5
0
    def test_scale_vmirs_nowait(self, _replicas, _changed):
        _name = 'test-vmirs'
        # Desired state:
        args = dict(name=_name, namespace='vms', replicas=2, wait=False)
        set_module_args(args)

        # Mock pre-change state:
        resource_args = dict( kind='VirtualMachineInstanceReplicaSet', **RESOURCE_DEFAULT_ARGS )
        K8sAnsibleMixin.find_resource.return_value = Resource(**resource_args)
        res_inst = ResourceInstance('', dict(metadata = {'name': _name}, spec = {'replicas': _replicas}))
        Resource.get.return_value = res_inst

        # Actual test:
        with pytest.raises(AnsibleExitJson) as result:
            mymodule.KubeVirtScaleVMIRS().execute_module()
        assert result.value[0]['changed'] == _changed
Beispiel #6
0
    def test_resource_absent(self, _kind, _wait):
        # Desired state:
        args = dict(state='absent',
                    kind=_kind,
                    wait=_wait,
                    name='testvmi',
                    namespace='vms',
                    api_version='v1')
        set_module_args(args)

        # Current state (mock):
        Resource.get.return_value = None  # Resource does NOT exist in cluster
        resource_args = dict(kind=_kind, **RESOURCE_DEFAULT_ARGS)
        K8sAnsibleMixin.find_resource.return_value = Resource(**resource_args)

        # Actual test:
        with pytest.raises(AnsibleExitJson) as result:
            mymodule.KubeVirtVM().execute_module()
        assert result.value[0]['method'] == 'delete' and result.value[0][
            'changed'] == False
Beispiel #7
0
    def test_stream_creation(self, mock_watch):
        _kind = 'PersistentVolumeClaim'
        # Desired state:
        args = dict(state='present',
                    kind=_kind,
                    wait=True,
                    name='testvmi',
                    namespace='vms',
                    api_version='v1')
        set_module_args(args)

        # Mock pre-change state:
        Resource.get.return_value = None  # Resource does NOT initially exist in cluster
        resource_args = dict(kind=_kind, **RESOURCE_DEFAULT_ARGS)
        K8sAnsibleMixin.find_resource.return_value = Resource(**resource_args)

        # Actual test:
        mock_watch.side_effect = KubernetesException("Test", value=42)
        with pytest.raises(AnsibleFailJson) as result:
            mymodule.KubeVirtVM().execute_module()
Beispiel #8
0
    def test_scale_vmirs_wait(self, mock_create_stream, _replicas, _changed):
        _name = 'test-vmirs'
        # Desired state:
        args = dict(name=_name, namespace='vms', replicas=_replicas, wait=True)
        set_module_args(args)

        # Mock pre-change state:
        resource_args = dict( kind='VirtualMachineInstanceReplicaSet', **RESOURCE_DEFAULT_ARGS )
        K8sAnsibleMixin.find_resource.return_value = Resource(**resource_args)
        res_inst = ResourceInstance('', dict(metadata = {'name': _name}, spec = {'replicas': 2}))
        Resource.get.return_value = res_inst

        # Mock post-change state:
        stream_obj = dict(
            status = dict(readyReplicas=_replicas),
            metadata = dict(name = _name)
            )
        mock_watcher = MagicMock()
        mock_create_stream.return_value = ( mock_watcher, [ dict(object=stream_obj) ] )

        # Actual test:
        with pytest.raises(AnsibleExitJson) as result:
            mymodule.KubeVirtScaleVMIRS().execute_module()
        assert result.value[0]['changed'] == _changed