From 681d6320068345d1185512ee7e8a620ca5453e88 Mon Sep 17 00:00:00 2001 From: Furkan Pehlivan <65170388+pehlicd@users.noreply.github.com> Date: Fri, 19 Apr 2024 14:57:15 +0200 Subject: [PATCH] feat: add openshift provider (#1123) --- README.md | 5 +- docs/mint.json | 1 + .../documentation/openshift-provider.mdx | 34 ++++ keep-ui/public/icons/openshift-icon.png | Bin 0 -> 112289 bytes keep/providers/openshift_provider/__init__.py | 0 .../openshift_provider/openshift_provider.py | 163 ++++++++++++++++++ 6 files changed, 202 insertions(+), 1 deletion(-) create mode 100644 docs/providers/documentation/openshift-provider.mdx create mode 100644 keep-ui/public/icons/openshift-icon.png create mode 100644 keep/providers/openshift_provider/__init__.py create mode 100644 keep/providers/openshift_provider/openshift_provider.py diff --git a/README.md b/README.md index 56cfadc684..1ff34bf7b2 100644 --- a/README.md +++ b/README.md @@ -190,7 +190,10 @@ Workflow triggers can either be executed manually when an alert is activated or           

- +

Container Orchestration platforms

+

+ +

## Getting Started ### Overview diff --git a/docs/mint.json b/docs/mint.json index 4cb35e36a9..1e2fd1c517 100644 --- a/docs/mint.json +++ b/docs/mint.json @@ -101,6 +101,7 @@ "providers/documentation/mock-provider", "providers/documentation/mysql-provider", "providers/documentation/new-relic-provider", + "providers/documentation/openshift-provider", "providers/documentation/opsgenie-provider", "providers/documentation/pagerduty-provider", "providers/documentation/pingdom-provider", diff --git a/docs/providers/documentation/openshift-provider.mdx b/docs/providers/documentation/openshift-provider.mdx new file mode 100644 index 0000000000..f097c97095 --- /dev/null +++ b/docs/providers/documentation/openshift-provider.mdx @@ -0,0 +1,34 @@ +--- +title: "Openshift" +description: "Openshift provider to perform rollout restart action on specific resources." +--- + +## Inputs + +- **kind** (required): Kind of the object which will be run rollout restart action run (`deployments`, `statefulset`, `daemonset`). +- **name** (required): Name of the object which will be run rollout restart action run. + +## Outputs + +- **message**: Message for the action performed. + +## Authentication Parameters + +This provider offers you to authenticate with Openshift using: api_server, token and insecure. + +- **api_server** (required): The api server url of your Openshift cluster. +- **token** (required): The token of your user to authenticate with Openshift. +- **insecure** (optional): If you want to skip the certificate verification, set this to `True`. + +## Connecting with the Provider + +To connect to Openshift, follow below steps: + +1. Log in to your Openshift cluster and create a new service account with required roles. +2. Get the token of the service account. +3. Use the token to authenticate with Openshift. + +## Notes + +- This provider allows you to interact with Openshift to perform rollout restart actions. + diff --git a/keep-ui/public/icons/openshift-icon.png b/keep-ui/public/icons/openshift-icon.png new file mode 100644 index 0000000000000000000000000000000000000000..1d20d2217fe79344199df171014d3d723a40cfea GIT binary patch literal 112289 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

mL(;aO5yXGoPi3A5AfCY=o<%{mmN4o(`Q*kM? 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 literal 0 HcmV?d00001 diff --git a/keep/providers/openshift_provider/__init__.py b/keep/providers/openshift_provider/__init__.py new file mode 100644 index 0000000000..e69de29bb2 diff --git a/keep/providers/openshift_provider/openshift_provider.py b/keep/providers/openshift_provider/openshift_provider.py new file mode 100644 index 0000000000..acfd90f6f1 --- /dev/null +++ b/keep/providers/openshift_provider/openshift_provider.py @@ -0,0 +1,163 @@ +import pydantic +import openshift_client as oc +from openshift_client import OpenShiftPythonException, Context +import dataclasses +import traceback + +from keep.contextmanager.contextmanager import ContextManager +from keep.providers.base.base_provider import BaseProvider +from keep.providers.models.provider_config import ProviderConfig, ProviderScope + + +@pydantic.dataclasses.dataclass +class OpenshiftProviderAuthConfig: + """Openshift authentication configuration.""" + + api_server: str = dataclasses.field( + default=None, + metadata={ + "name": "api_server", + "description": "The openshift api server url", + "required": True, + "sensitive": False, + }, + ) + token: str = dataclasses.field( + default=None, + metadata={ + "name": "token", + "description": "The openshift token", + "required": True, + "sensitive": True, + }, + ) + insecure: bool = dataclasses.field( + default=False, + metadata={ + "name": "insecure", + "description": "Whether to skip tls verification", + "required": False, + "sensitive": False, + }, + ) + + +class OpenshiftProvider(BaseProvider): + """Perform rollout restart actions on Openshift.""" + + provider_id: str + PROVIDER_DISPLAY_NAME = "Openshift" + + PROVIDER_SCOPES = [ + ProviderScope( + name="connect_to_openshift", + description="Check if the provided token can connect to the openshift server", + mandatory=True, + alias="Connect to the openshift", + ) + ] + + def __init__( + self, context_manager, provider_id: str, config: ProviderConfig + ): + super().__init__(context_manager, provider_id, config) + self.authentication_config = None + self.validate_config() + + def dispose(self): + """Dispose the provider.""" + pass + + def validate_config(self): + """ + Validates required configuration for Openshift provider. + """ + + if self.config.authentication is None: + self.config.authentication = {} + self.authentication_config = OpenshiftProviderAuthConfig( + **self.config.authentication + ) + + def __get_ocp_client(self): + """Get the Openshift client.""" + oc_context = Context() + oc_context.api_server = self.authentication_config.api_server + oc_context.token = self.authentication_config.token + oc_context.insecure = self.authentication_config.insecure + return oc_context + + def validate_scopes(self): + """ + Validates that the provided token has the required scopes to use the provider. + """ + try: + client = self.__get_ocp_client() + with oc.timeout(60 * 30), oc.tracking() as t, client: + if oc.get_config_context() is None: + try: + oc.invoke('login') + except OpenShiftPythonException: + traceback.print_exc() + self.logger.error(f'Tracking:\n{t.get_result().as_json(redact_streams=False)}\n\n') + self.logger.error("Error logging into the API server") + raise Exception("Error logging into the API server") + scopes = { + "connect_to_openshift": True, + } + except Exception as e: + self.logger.exception("Error validating scopes") + scopes = { + "connect_to_openshift": str(e), + } + return scopes + + def _notify(self, kind: str, name: str, project_name: str): + """Rollout restart the specified kind.""" + client = self.__get_ocp_client() + client.project_name = project_name + self.logger.info(f"Performing rollout restart for {kind} {name} using openshift provider") + with oc.timeout(60 * 30), oc.tracking() as t, client: + if oc.get_config_context() is None: + self.logger.error(f'Current context not set! Logging into API server: {client.api_server}\n') + try: + oc.invoke('login') + except OpenShiftPythonException: + self.logger.error('error occurred logging into API Server') + traceback.print_exc() + self.logger.error(f'Tracking:\n{t.get_result().as_json(redact_streams=False)}\n\n') + raise Exception("Error logging into the API server") + try: + oc.invoke('rollout', ['restart', kind, name]) + except OpenShiftPythonException: + self.logger.error(f"Error restarting {kind} {name}") + raise Exception(f"Error restarting {kind} {name}") + + self.logger.info(f"Restarted {kind} {name}") + + +if __name__ == "__main__": + # Output debug messages + import logging + + logging.basicConfig(level=logging.DEBUG, handlers=[logging.StreamHandler()]) + + # Load environment variables + import os + + url = os.environ.get("OPENSHIFT_URL") + token = os.environ.get("OPENSHIFT_TOKEN") + context_manager = ContextManager( + tenant_id="singletenant", + workflow_id="test", + ) + config = ProviderConfig( + authentication={ + "api_server": url, + "token": token, + } + ) + openshift_provider = OpenshiftProvider(context_manager, "openshift-keephq", config) + + restart = openshift_provider.notify("deployment", "nginx") + print(restart)