public void unzip(InputStream responseStream, Cluster cluster, User user, boolean isAdmin) throws IOException { Logger.info("In unzip for cluster: " + cluster); Reader reader = null; StringWriter writer = new StringWriter(); ZipInputStream unzippedResponse = null; String charset = "UTF-8"; try { unzippedResponse = new ZipInputStream(responseStream); reader = new InputStreamReader(unzippedResponse, charset); ZipEntry file = unzippedResponse.getNextEntry(); Logger.info("Zip file: " + file.getName()); while (file != null) { try { writer = new StringWriter(); char[] buffer = new char[10240]; for (int length = 0; (length = reader.read(buffer)) > 0; ) { writer.write(buffer, 0, length); } switch (file.getName().split("/")[1]) { case "ca.pem": if (!isAdmin) { Helpers.createFileInCarina(file, writer, user); Logger.info( Helpers.getCarinaDirectory(user.tenant).resolve(file.getName()).toString()); cluster.setCert_directory( Helpers.getCarinaDirectoryWithCluster( user.tenant, file.getName().substring(0, file.getName().lastIndexOf("/"))) .toString()); } break; case "cert.pem": if (!isAdmin) { Helpers.createFileInCarina(file, writer, user); Logger.info( Helpers.getCarinaDirectory(user.tenant).resolve(file.getName()).toString()); } break; case "key.pem": if (!isAdmin) { Helpers.createFileInCarina(file, writer, user); Logger.info( Helpers.getCarinaDirectory(user.tenant).resolve(file.getName()).toString()); } break; case "ca-key.pem": if (!isAdmin) { Helpers.createFileInCarina(file, writer, user); Logger.info( Helpers.getCarinaDirectory(user.tenant).resolve(file.getName()).toString()); } break; case "docker.env": // TODO: get the URI from docker.env if (!isAdmin) { Helpers.createFileInCarina(file, writer, user); Logger.info( Helpers.getCarinaDirectory(user.tenant).resolve(file.getName()).toString()); } String[] dockerEnv = writer.toString().split("\\n"); for (String s : dockerEnv) { if (s.trim().startsWith("export DOCKER_HOST")) { cluster.setUri(s.trim().split("=")[1].replace("tcp", "https")); break; } } break; default: Logger.error("Invalid file found: " + file.getName()); break; } } finally { writer.close(); writer = null; } file = unzippedResponse.getNextEntry(); } } finally { unzippedResponse.closeEntry(); unzippedResponse.close(); reader.close(); } cluster.save(); Logger.info("Cluster to save: " + cluster.toString()); }