From c0b4d8fee64bc95bc34c4a987632426d22275411 Mon Sep 17 00:00:00 2001 From: Travis Ball Date: Wed, 24 Feb 2021 21:02:23 -0500 Subject: [PATCH 1/3] fix: added verbose output for failed ccloud command execution --- .../com/devshawn/kafka/gitops/service/ConfluentCloudService.java | 1 + 1 file changed, 1 insertion(+) diff --git a/src/main/java/com/devshawn/kafka/gitops/service/ConfluentCloudService.java b/src/main/java/com/devshawn/kafka/gitops/service/ConfluentCloudService.java index 9603f9ff..91142e30 100644 --- a/src/main/java/com/devshawn/kafka/gitops/service/ConfluentCloudService.java +++ b/src/main/java/com/devshawn/kafka/gitops/service/ConfluentCloudService.java @@ -26,6 +26,7 @@ public List getServiceAccounts() { return objectMapper.readValue(result, new TypeReference>() { }); } catch (IOException ex) { + log.info(ex.getMessage()); throw new ConfluentCloudException("There was an error listing Confluent Cloud service accounts. Are you logged in?"); } } From a9062eedc22e7c9d7735c5ff8c13e1ee234fd5c2 Mon Sep 17 00:00:00 2001 From: Travis Ball Date: Wed, 24 Feb 2021 22:00:31 -0500 Subject: [PATCH 2/3] feat: add optional environment variable for ccloud executable path --- .../kafka/gitops/service/ConfluentCloudService.java | 10 ++++++++-- 1 file changed, 8 insertions(+), 2 deletions(-) diff --git a/src/main/java/com/devshawn/kafka/gitops/service/ConfluentCloudService.java b/src/main/java/com/devshawn/kafka/gitops/service/ConfluentCloudService.java index 91142e30..113c4302 100644 --- a/src/main/java/com/devshawn/kafka/gitops/service/ConfluentCloudService.java +++ b/src/main/java/com/devshawn/kafka/gitops/service/ConfluentCloudService.java @@ -14,6 +14,7 @@ public class ConfluentCloudService { private static org.slf4j.Logger log = LoggerFactory.getLogger(ConfluentCloudService.class); private final ObjectMapper objectMapper; + private static final String ccloudExecutable; public ConfluentCloudService(ObjectMapper objectMapper) { this.objectMapper = objectMapper; @@ -22,7 +23,7 @@ public ConfluentCloudService(ObjectMapper objectMapper) { public List getServiceAccounts() { log.info("Fetching service account list from Confluent Cloud via ccloud tool."); try { - String result = execCmd(new String[]{"ccloud", "service-account", "list", "-o", "json"}); + String result = execCmd(new String[]{ccloudExecutable, "service-account", "list", "-o", "json"}); return objectMapper.readValue(result, new TypeReference>() { }); } catch (IOException ex) { @@ -36,7 +37,7 @@ public ServiceAccount createServiceAccount(String name, boolean isUser) { try { String serviceName = isUser ? String.format("user-%s", name) : name; String description = isUser ? String.format("User: %s", name) : String.format("Service account: %s", name); - String result = execCmd(new String[]{"ccloud", "service-account", "create", serviceName, "--description", description, "-o", "json"}); + String result = execCmd(new String[]{ccloudExecutable, "service-account", "create", serviceName, "--description", description, "-o", "json"}); return objectMapper.readValue(result, ServiceAccount.class); } catch (IOException ex) { throw new ConfluentCloudException(String.format("There was an error creating Confluent Cloud service account: %s.", name)); @@ -47,4 +48,9 @@ public static String execCmd(String[] cmd) throws java.io.IOException { java.util.Scanner s = new java.util.Scanner(Runtime.getRuntime().exec(cmd).getInputStream()).useDelimiter("\\A"); return s.hasNext() ? s.next() : ""; } + + static { + ccloudExecutable = System.getenv("CCLOUD_EXECUTABLE_PATH") != null ? System.getenv("CCLOUD_EXECUTABLE_PATH") : "ccloud"; + log.info("Using ccloud executable at: {}", ccloudExecutable); + } } From 057353d50dfa1775cd74cfeec3ff4a6aa05fae04 Mon Sep 17 00:00:00 2001 From: Travis Ball Date: Wed, 24 Feb 2021 22:07:11 -0500 Subject: [PATCH 3/3] docs: add optional ccloud path environment var --- docs/confluent-cloud.md | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/docs/confluent-cloud.md b/docs/confluent-cloud.md index f1b12127..dc6a397e 100644 --- a/docs/confluent-cloud.md +++ b/docs/confluent-cloud.md @@ -53,6 +53,12 @@ Additionally, you'll need to login to the `ccloud` tool. You can automate this b Then, you can run `ccloud login` and it will run without a prompt. This is great for CI builds. +You can optionally specify a path to a `ccloud` executable: + +* `CCLOUD_EXECUTABLE_PATH`: `/full/path/to/ccloud` + +Otherwise, `ccloud` must be on your path. + ## Validate First, validate your state file is correct by running: @@ -109,4 +115,4 @@ Congrats! You're now using `kafka-gitops` to manage your Confluent Cloud cluster Welcome to GitOps! -[installation]: /installation.md \ No newline at end of file +[installation]: /installation.md