From 132ef1b10e8bed4b756d17fad95e3eb53c53fd1d Mon Sep 17 00:00:00 2001 From: Wojtek Trocki Date: Tue, 16 Mar 2021 16:06:41 +0000 Subject: [PATCH] chore: improve error for missing secret (#135) --- .../cloud/beans/AccessTokenSecretTool.java | 19 ++++------ .../openshift/cloud/beans/KafkaApiClient.java | 37 ++++++++++++++++--- 2 files changed, 39 insertions(+), 17 deletions(-) diff --git a/source/rhoas/src/main/java/com/openshift/cloud/beans/AccessTokenSecretTool.java b/source/rhoas/src/main/java/com/openshift/cloud/beans/AccessTokenSecretTool.java index 26ed664b..639f1dde 100644 --- a/source/rhoas/src/main/java/com/openshift/cloud/beans/AccessTokenSecretTool.java +++ b/source/rhoas/src/main/java/com/openshift/cloud/beans/AccessTokenSecretTool.java @@ -53,7 +53,7 @@ public String getAccessToken(String accessTokenSecretName, String namespace) var accessToken = exchangeToken(offlineToken); return accessToken; } catch (Exception ex) { - LOG.log(Level.SEVERE, ex.getMessage(), ex); + LOG.log(Level.SEVERE, ex.getMessage()); throw new ConditionAwareException( ex.getMessage(), ex, @@ -65,17 +65,14 @@ public String getAccessToken(String accessTokenSecretName, String namespace) } private String getOfflineTokenFromSecret(String secretName, String namespace) { - var offlineToken = - k8sClient - .secrets() - .inNamespace(namespace) - .withName(secretName) - .get() - .getData() - .get(ACCESS_TOKEN_SECRET_KEY); - offlineToken = new String(Base64.getDecoder().decode(offlineToken)); + var token = k8sClient.secrets().inNamespace(namespace).withName(secretName).get(); + if (token != null) { + var offlineToken = token.getData().get(ACCESS_TOKEN_SECRET_KEY); + offlineToken = new String(Base64.getDecoder().decode(offlineToken)); - return offlineToken; + return offlineToken; + } + throw new Error("Missing Offline Token Secret " + secretName); } /** diff --git a/source/rhoas/src/main/java/com/openshift/cloud/beans/KafkaApiClient.java b/source/rhoas/src/main/java/com/openshift/cloud/beans/KafkaApiClient.java index 29e35220..c8411cfc 100644 --- a/source/rhoas/src/main/java/com/openshift/cloud/beans/KafkaApiClient.java +++ b/source/rhoas/src/main/java/com/openshift/cloud/beans/KafkaApiClient.java @@ -49,13 +49,14 @@ public KafkaRequest getKafkaById(String kafkaId, String accessToken) try { return createClient(accessToken).getKafkaById(kafkaId); } catch (ApiException e) { + String message = getStandarizedErrorMessage(e); throw new ConditionAwareException( - e.getMessage(), + message, e, KafkaCondition.Type.FoundKafkaById, KafkaCondition.Status.False, e.getClass().getName(), - e.getMessage()); + message); } } @@ -63,13 +64,14 @@ public KafkaRequestList listKafkas(String accessToken) throws ConditionAwareExce try { return createClient(accessToken).listKafkas(null, null, null, null); } catch (ApiException e) { + String message = getStandarizedErrorMessage(e); throw new ConditionAwareException( - e.getMessage(), + message, e, KafkaCondition.Type.UserKafkasUpToDate, KafkaCondition.Status.False, e.getClass().getName(), - e.getMessage()); + message); } } @@ -81,13 +83,14 @@ public ServiceAccount createServiceAccount( serviceAccountRequest.setName(spec.getServiceAccountName()); return createClient(accessToken).createServiceAccount(serviceAccountRequest); } catch (ApiException e) { + String message = getStandarizedErrorMessage(e); throw new ConditionAwareException( - e.getMessage(), + message, e, KafkaCondition.Type.ServiceAccountCreated, KafkaCondition.Status.False, e.getClass().getName(), - e.getMessage()); + message); } } @@ -133,4 +136,26 @@ public void createSecretForServiceAccount( e.getMessage()); } } + + private String getStandarizedErrorMessage(ApiException e) { + if (e.getCode() == 504) { + return "Server timeout. Server is not responding"; + } + if (e.getCode() == 500) { + return "Unknown server error."; + } + if (e.getCode() == 500) { + return "Unknown server error."; + } + if (e.getCode() == 400) { + return "Invalid request " + e.getMessage(); + } + if (e.getCode() == 401) { + return "Auth Token is invalid."; + } + if (e.getCode() == 403) { + return "User not authorized to access the service"; + } + return e.getMessage(); + } }