Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
12 changes: 12 additions & 0 deletions openshift/ansiblegen/examples/k8s_v1_horizontal_pod_autoscaler.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,12 @@
# v1_horizontal_pod_autoscaler.yml
---

- create:
name: test-scaler
namespace: test
scale_target_ref_kind: ReplicaSet
scale_target_ref_name: test
min_replicas: 2
max_replicas: 5
# target_cpu_utilization_percentage: 50
name: Create replica set
17 changes: 17 additions & 0 deletions openshift/ansiblegen/examples/k8s_v1beta1_replica_set.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,17 @@
# v1beta1_replica_set.yml
---

- create:
name: myreplicaset
namespace: test
replicas: 3
# spec_selector_match_labels:
# name: myreplicaset
# spec_selector_match_expressions:
# - {key: name, operator: In, values: [myreplicaset]}
spec_template_metadata_labels:
name: myreplicaset
containers:
- name: myreplicaset
image: openshift/origin-ruby-sample:v1.0
name: Create replica set
18 changes: 18 additions & 0 deletions openshift/ansiblegen/examples/k8s_v1beta1_stateful_set.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,18 @@
# v1beta1_stateful_set.yml
---

- create:
name: test
labels:
name: test
namespace: test
service_name: test
replicas: 3
spec_template_metadata_labels:
name: test
spec_template_metadata_name: test
termination_grace_period_seconds: 10
containers:
- name: test
image: openshift/origin-ruby-sample:v1.0
name: Create stateful set
1 change: 0 additions & 1 deletion openshift/helper/ansible.py
Original file line number Diff line number Diff line change
Expand Up @@ -211,7 +211,6 @@ def object_from_params(self, module_params, obj=None):
def request_body_from_params(self, module_params):
request = {
'kind': self.base_model_name,
'apiVersion': self.api_version.lower()
}
for param_name, param_value in module_params.items():
spec = self.find_arg_spec(param_name)
Expand Down
25 changes: 25 additions & 0 deletions test/functional/conftest.py
Original file line number Diff line number Diff line change
Expand Up @@ -15,6 +15,8 @@
import requests
import json

from pkg_resources import parse_version

from openshift.client import models
from kubernetes.client import V1Namespace, V1ObjectMeta
from openshift.helper.ansible import KubernetesAnsibleModuleHelper, OpenShiftAnsibleModuleHelper
Expand Down Expand Up @@ -239,6 +241,29 @@ def project(kubeconfig):
helper.delete_object(name, None)


@pytest.fixture
def openshift_version():
return pytest.config.getoption('--openshift-version')


@pytest.fixture(autouse=True)
def skip_by_version(request, openshift_version):
if request.node.get_marker('version_limit') and openshift_version:

lowest_version = request.node.get_marker('version_limit').kwargs.get('lowest_version')
highest_version = request.node.get_marker('version_limit').kwargs.get('highest_version')
skip_latest = request.node.get_marker('version_limit').kwargs.get('skip_latest')

if openshift_version == 'latest' and skip_latest:
pytest.skip('This API is not supported in the latest openshift version')

too_low = lowest_version and parse_version(lowest_version) > parse_version(openshift_version)
too_high = highest_version and parse_version(highest_version) < parse_version(openshift_version)

if too_low or too_high:
pytest.skip('This API is not supported in openshift versions < {}'.format(openshift_version))


def _get_id(argvalue):
op_type = ''
if argvalue.get('create'):
Expand Down
53 changes: 53 additions & 0 deletions test/functional/test_k8s_v1_horizontal_pod_autoscaler.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,53 @@
# -*- coding: utf-8 -*-
from __future__ import absolute_import
from __future__ import print_function

import copy

import pytest

from openshift.helper.exceptions import KubernetesException


@pytest.fixture()
def create_params(create_tasks, project, object_name):
parameters = create_tasks['create']
parameters['namespace'] = project
parameters['name'] = object_name
return parameters


@pytest.fixture()
def horizontal_pod_autoscaler(k8s_ansible_helper, create_params):
request_body = k8s_ansible_helper.request_body_from_params(create_params)
namespace = create_params.get('namespace')
name = create_params.get('name')
k8s_obj = k8s_ansible_helper.create_object(namespace, body=request_body)

yield k8s_obj

try:
k8s_ansible_helper.delete_object(name, namespace)
except KubernetesException as ex:
# Swallow exception if object is already removed
if ex.value.get('status') != 404:
raise


def test_create_horizontal_pod_autoscaler(k8s_ansible_helper, create_params, horizontal_pod_autoscaler, obj_compare):
obj_compare(k8s_ansible_helper, horizontal_pod_autoscaler, create_params)


def test_get_horizontal_pod_autoscaler(k8s_ansible_helper, horizontal_pod_autoscaler):
name = horizontal_pod_autoscaler.metadata.name
namespace = horizontal_pod_autoscaler.metadata.namespace
k8s_obj = k8s_ansible_helper.get_object(name, namespace)
assert k8s_obj is not None


def test_remove_horizontal_pod_autoscaler(k8s_ansible_helper, horizontal_pod_autoscaler):
name = horizontal_pod_autoscaler.metadata.name
namespace = horizontal_pod_autoscaler.metadata.namespace
k8s_ansible_helper.delete_object(name, namespace)
k8s_obj = k8s_ansible_helper.get_object(name, namespace)
assert k8s_obj is None
53 changes: 53 additions & 0 deletions test/functional/test_k8s_v1beta1_replica_set.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,53 @@
# -*- coding: utf-8 -*-
from __future__ import absolute_import
from __future__ import print_function

import copy

import pytest

from openshift.helper.exceptions import KubernetesException


@pytest.fixture()
def create_params(create_tasks, project, object_name):
parameters = create_tasks['create']
parameters['namespace'] = project
parameters['name'] = object_name
return parameters


@pytest.fixture()
def replica_set(k8s_ansible_helper, create_params):
request_body = k8s_ansible_helper.request_body_from_params(create_params)
namespace = create_params.get('namespace')
name = create_params.get('name')
k8s_obj = k8s_ansible_helper.create_object(namespace, body=request_body)

yield k8s_obj

try:
k8s_ansible_helper.delete_object(name, namespace)
except KubernetesException as ex:
# Swallow exception if object is already removed
if ex.value.get('status') != 404:
raise


def test_create_replica_set(k8s_ansible_helper, create_params, replica_set, obj_compare):
obj_compare(k8s_ansible_helper, replica_set, create_params)


def test_get_replica_set(k8s_ansible_helper, replica_set):
name = replica_set.metadata.name
namespace = replica_set.metadata.namespace
k8s_obj = k8s_ansible_helper.get_object(name, namespace)
assert k8s_obj is not None


def test_remove_replica_set(k8s_ansible_helper, replica_set):
name = replica_set.metadata.name
namespace = replica_set.metadata.namespace
k8s_ansible_helper.delete_object(name, namespace)
k8s_obj = k8s_ansible_helper.get_object(name, namespace)
assert k8s_obj is None
54 changes: 54 additions & 0 deletions test/functional/test_k8s_v1beta1_stateful_set.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,54 @@
# -*- coding: utf-8 -*-
from __future__ import absolute_import
from __future__ import print_function

import pytest

from openshift.helper.exceptions import KubernetesException


@pytest.fixture()
def create_params(create_tasks, project, object_name):
parameters = create_tasks['create']
parameters['namespace'] = project
parameters['name'] = object_name
return parameters


@pytest.fixture()
def stateful_set(k8s_ansible_helper, create_params):
request_body = k8s_ansible_helper.request_body_from_params(create_params)
namespace = create_params.get('namespace')
name = create_params.get('name')
k8s_obj = k8s_ansible_helper.create_object(namespace, body=request_body)

yield k8s_obj

try:
k8s_ansible_helper.delete_object(name, namespace)
except KubernetesException as ex:
# Swallow exception if object is already removed
if ex.value.get('status') != 404:
raise


@pytest.mark.version_limit(lowest_version='1.5')
def test_create_stateful_set(k8s_ansible_helper, create_params, stateful_set, obj_compare):
obj_compare(k8s_ansible_helper, stateful_set, create_params)


@pytest.mark.version_limit(lowest_version='1.5')
def test_get_stateful_set(k8s_ansible_helper, stateful_set):
name = stateful_set.metadata.name
namespace = stateful_set.metadata.namespace
k8s_obj = k8s_ansible_helper.get_object(name, namespace)
assert k8s_obj is not None


@pytest.mark.version_limit(lowest_version='1.5')
def test_remove_stateful_set(k8s_ansible_helper, stateful_set):
name = stateful_set.metadata.name
namespace = stateful_set.metadata.namespace
k8s_ansible_helper.delete_object(name, namespace)
k8s_obj = k8s_ansible_helper.get_object(name, namespace)
assert k8s_obj is None