From 956ee6a2e76a31f2187d8e11ac2fbbd2c77bdb03 Mon Sep 17 00:00:00 2001 From: Parth Yadav Date: Wed, 11 Aug 2021 02:14:38 +0530 Subject: Adds Kuberef Validator This patch adds Kuberef Validator and implements following checks for Kuberef Validator: * pod_health_check Signed-off-by: Parth Yadav Change-Id: Ief2a75f5ea4a4e39a8c07002c29e2d732ca00151 --- .../internal/validator/kuberef/__init__.py | 31 +++++++ .../sdvstate/internal/validator/kuberef/kuberef.py | 95 ++++++++++++++++++++++ .../internal/validator/kuberef/pod_health_check.py | 41 ++++++++++ 3 files changed, 167 insertions(+) create mode 100644 sdv/docker/sdvstate/internal/validator/kuberef/__init__.py create mode 100644 sdv/docker/sdvstate/internal/validator/kuberef/kuberef.py create mode 100644 sdv/docker/sdvstate/internal/validator/kuberef/pod_health_check.py (limited to 'sdv/docker/sdvstate/internal/validator/kuberef') diff --git a/sdv/docker/sdvstate/internal/validator/kuberef/__init__.py b/sdv/docker/sdvstate/internal/validator/kuberef/__init__.py new file mode 100644 index 0000000..98f7504 --- /dev/null +++ b/sdv/docker/sdvstate/internal/validator/kuberef/__init__.py @@ -0,0 +1,31 @@ +# Copyright 2020 University Of Delhi. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + + +""" +Package for Kuberef Validation +""" + + +### Pod Health Checks +from .pod_health_check import pod_health_check + + +### Monitoring & Logging Agents Checks + + +### Network Checks + + +### Compute Related Checks diff --git a/sdv/docker/sdvstate/internal/validator/kuberef/kuberef.py b/sdv/docker/sdvstate/internal/validator/kuberef/kuberef.py new file mode 100644 index 0000000..4768e81 --- /dev/null +++ b/sdv/docker/sdvstate/internal/validator/kuberef/kuberef.py @@ -0,0 +1,95 @@ +# Copyright 2020 University Of Delhi. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + + +""" +Kuberef Validator +""" + +import logging +from datetime import datetime as dt + +from internal import store_result +from internal.validator.validator import Validator +from tools.conf import settings +from tools.kube_utils import load_kube_api + +from . import * + + + + + +class KuberefValidator(Validator): + """Class for Kuberef Validation + """ + + def __init__(self): + """ + Initialisation function. + """ + super(KuberefValidator, self).__init__() + self._logger = logging.getLogger(__name__) + + self._report = {"installer": "Kuberef", + "criteria": "pass", + "details": {"total_checks": 0, + "metadata": {}, + "pass": [], + "fail": [] + } + } + + load_kube_api() + + + + + def validate(self): + """ + Validation method for kuberef + """ + + self._report['scenario'] = 'none' + self._report['start_date'] = dt.now().strftime('%Y-%m-%d %H:%M:%S') + + + test_suite = settings.getValue("test_suite") + + + if test_suite == "default": + self._report['case_name'] = 'default_kuberef' + self.default_suite() + + self._report['stop_date'] = dt.now().strftime('%Y-%m-%d %H:%M:%S') + + + def default_suite(self): + """ + Default Test Suite + """ + + # PLATFORM CHECKS + self.update_report(pod_health_check()) + + # COMPUTE CHECKS + + + def get_report(self): + """ + Return final report as dict + """ + self._report = super(KuberefValidator, self).get_report() + store_result(self._logger, self._report) + return self._report diff --git a/sdv/docker/sdvstate/internal/validator/kuberef/pod_health_check.py b/sdv/docker/sdvstate/internal/validator/kuberef/pod_health_check.py new file mode 100644 index 0000000..955e586 --- /dev/null +++ b/sdv/docker/sdvstate/internal/validator/kuberef/pod_health_check.py @@ -0,0 +1,41 @@ +# Copyright 2020 University Of Delhi. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + + +""" +Pod Health Checks +""" + + + +import logging + +from internal import checks +from internal import store_result +from tools.kube_utils import kube_api +from tools.conf import settings + + +def pod_health_check(): + """ + Check health of all pods and get logs of failed pods + """ + logger = logging.getLogger(__name__) + api = kube_api() + namespace_list = settings.getValue('kuberef_namespace_list') + + result = checks.pod_health_check(logger, api, namespace_list) + + store_result(logger, result) + return result -- cgit 1.2.3-korg