summaryrefslogtreecommitdiffstats
path: root/roles
diff options
context:
space:
mode:
Diffstat (limited to 'roles')
-rw-r--r--roles/openshift_health_checker/openshift_checks/memory_availability.py5
-rw-r--r--roles/openshift_health_checker/test/disk_availability_test.py106
-rw-r--r--roles/openshift_health_checker/test/memory_availability_test.py84
3 files changed, 194 insertions, 1 deletions
diff --git a/roles/openshift_health_checker/openshift_checks/memory_availability.py b/roles/openshift_health_checker/openshift_checks/memory_availability.py
index aa54b9535..b1629aa89 100644
--- a/roles/openshift_health_checker/openshift_checks/memory_availability.py
+++ b/roles/openshift_health_checker/openshift_checks/memory_availability.py
@@ -1,5 +1,5 @@
# pylint: disable=missing-docstring
-from openshift_checks import OpenShiftCheck, get_var
+from openshift_checks import OpenShiftCheck, OpenShiftCheckException, get_var
class MemoryAvailability(OpenShiftCheck):
@@ -26,6 +26,9 @@ class MemoryAvailability(OpenShiftCheck):
total_memory = get_var(task_vars, "ansible_memtotal_mb")
recommended_memory_mb = max(self.recommended_memory_mb.get(group, 0) for group in group_names)
+ if not recommended_memory_mb:
+ msg = "Unable to determine recommended memory size for group_name {group_name}"
+ raise OpenShiftCheckException(msg.format(group_name=group_names))
if total_memory < recommended_memory_mb:
msg = ("Available memory ({available} MB) below recommended storage. "
diff --git a/roles/openshift_health_checker/test/disk_availability_test.py b/roles/openshift_health_checker/test/disk_availability_test.py
new file mode 100644
index 000000000..e9d1097a1
--- /dev/null
+++ b/roles/openshift_health_checker/test/disk_availability_test.py
@@ -0,0 +1,106 @@
+import pytest
+
+from openshift_checks.disk_availability import DiskAvailability, OpenShiftCheckException
+
+
+def test_exception_raised_on_empty_ansible_mounts():
+ with pytest.raises(OpenShiftCheckException) as excinfo:
+ DiskAvailability(execute_module=NotImplementedError).get_openshift_disk_availability([])
+
+ assert "existing volume mounts from ansible_mounts" in str(excinfo.value)
+
+
+@pytest.mark.parametrize("group_name,size_available", [
+ (
+ "masters",
+ 41110980608,
+ ),
+ (
+ "nodes",
+ 21110980608,
+ ),
+ (
+ "etcd",
+ 21110980608,
+ ),
+])
+def test_volume_check_with_recommended_diskspace(group_name, size_available):
+ result = DiskAvailability(execute_module=NotImplementedError).run(tmp=None, task_vars=dict(
+ openshift=dict(common=dict(
+ service_type='origin',
+ is_containerized=False,
+ )),
+ group_names=[group_name],
+ ansible_mounts=[{
+ "mount": "/",
+ "size_available": size_available,
+ }]
+ ))
+
+ assert not result['failed']
+ assert not result['msg']
+
+
+@pytest.mark.parametrize("group_name,size_available", [
+ (
+ "masters",
+ 21110980608,
+ ),
+ (
+ "nodes",
+ 1110980608,
+ ),
+ (
+ "etcd",
+ 1110980608,
+ ),
+])
+def test_volume_check_with_insufficient_diskspace(group_name, size_available):
+ result = DiskAvailability(execute_module=NotImplementedError).run(tmp=None, task_vars=dict(
+ openshift=dict(common=dict(
+ service_type='origin',
+ is_containerized=False,
+ )),
+ group_names=[group_name],
+ ansible_mounts=[{
+ "mount": "/",
+ "size_available": size_available,
+ }]
+ ))
+
+ assert result['failed']
+ assert "is below recommended storage" in result['msg']
+
+
+def test_volume_check_with_unsupported_mountpaths():
+ result = DiskAvailability(execute_module=NotImplementedError).run(tmp=None, task_vars=dict(
+ openshift=dict(common=dict(
+ service_type='origin',
+ is_containerized=False,
+ )),
+ group_names=["masters", "nodes"],
+ ansible_mounts=[{
+ "mount": "/unsupported",
+ "size_available": 12345,
+ }]
+ ))
+
+ assert result['failed']
+ assert "0 GB" in result['msg']
+
+
+def test_volume_check_with_invalid_groupname():
+ with pytest.raises(OpenShiftCheckException) as excinfo:
+ result = DiskAvailability(execute_module=NotImplementedError).run(tmp=None, task_vars=dict(
+ openshift=dict(common=dict(
+ service_type='origin',
+ is_containerized=False,
+ )),
+ group_names=["invalid"],
+ ansible_mounts=[{
+ "mount": "/unsupported",
+ "size_available": 12345,
+ }]
+ ))
+
+ assert "'invalid'" in str(excinfo.value)
diff --git a/roles/openshift_health_checker/test/memory_availability_test.py b/roles/openshift_health_checker/test/memory_availability_test.py
new file mode 100644
index 000000000..a8ba032cc
--- /dev/null
+++ b/roles/openshift_health_checker/test/memory_availability_test.py
@@ -0,0 +1,84 @@
+import pytest
+
+from openshift_checks.memory_availability import MemoryAvailability, OpenShiftCheckException
+
+
+@pytest.mark.parametrize('group_names,is_containerized,is_active', [
+ (['masters'], False, True),
+ # ensure check is skipped on containerized installs
+ (['masters'], True, True),
+ (['nodes'], True, True),
+ (['etcd'], False, True),
+ (['masters', 'nodes'], False, True),
+ (['masters', 'etcd'], False, True),
+ ([], False, False),
+ (['lb'], False, False),
+ (['nfs'], False, False),
+])
+def test_is_active(group_names, is_containerized, is_active):
+ task_vars = dict(
+ group_names=group_names,
+ openshift=dict(common=dict(is_containerized=is_containerized)),
+ )
+ assert MemoryAvailability.is_active(task_vars=task_vars) == is_active
+
+
+@pytest.mark.parametrize("group_name,size_available", [
+ (
+ "masters",
+ 17200,
+ ),
+ (
+ "nodes",
+ 8200,
+ ),
+ (
+ "etcd",
+ 12200,
+ ),
+])
+def test_mem_check_with_recommended_memtotal(group_name, size_available):
+ result = MemoryAvailability(execute_module=NotImplementedError).run(tmp=None, task_vars=dict(
+ group_names=[group_name],
+ ansible_memtotal_mb=size_available,
+ ))
+
+ assert not result.get('failed', False)
+
+
+@pytest.mark.parametrize("group_name,size_available", [
+ (
+ "masters",
+ 1,
+ ),
+ (
+ "nodes",
+ 2,
+ ),
+ (
+ "etcd",
+ 3,
+ ),
+])
+def test_mem_check_with_insufficient_memtotal(group_name, size_available):
+ result = MemoryAvailability(execute_module=NotImplementedError).run(tmp=None, task_vars=dict(
+ group_names=[group_name],
+ ansible_memtotal_mb=size_available,
+ ))
+
+ assert result['failed']
+ assert "below recommended storage" in result['msg']
+
+
+def test_mem_check_with_invalid_groupname():
+ with pytest.raises(OpenShiftCheckException) as excinfo:
+ result = MemoryAvailability(execute_module=NotImplementedError).run(tmp=None, task_vars=dict(
+ openshift=dict(common=dict(
+ service_type='origin',
+ is_containerized=False,
+ )),
+ group_names=["invalid"],
+ ansible_memtotal_mb=1234567,
+ ))
+
+ assert "'invalid'" in str(excinfo.value)