public void errorf(String format, Object... args) { error(String.format(format, args)); }
boolean delNetwork(String networkName) { try { WebTarget webTarget = getTargetV2(Lists.newArrayList(CoordConstsV2.RSC_NETWORKS, networkName)); Response response = webTarget .request(MediaType.APPLICATION_JSON) .header(CoordConstsV2.HTTP_HEADER_BATFISH_APIKEY, _settings.getApiKey()) .header(CoordConstsV2.HTTP_HEADER_BATFISH_VERSION, Version.getVersion()) .delete(); if (response.getStatus() != Status.NO_CONTENT.getStatusCode()) { _logger.errorf("delNetwork: Did not get OK response. Got: %s\n", response.getStatus()); _logger.error(response.readEntity(String.class) + "\n"); return false; } return true; } catch (Exception e) { _logger.errorf("Exception in delNetwork from %s for %s\n", _coordWorkMgrV2, networkName); _logger.error(Throwables.getStackTraceAsString(e) + "\n"); return false; } }
BfCoordWorkHelper(BatfishLogger logger, Settings settings) { _logger = logger; _settings = settings; _coordWorkMgr = _settings.getCoordinatorHost() + ":" + _settings.getCoordinatorWorkPort(); _coordWorkMgrV2 = _settings.getCoordinatorHost() + ":" + _settings.getCoordinatorWorkV2Port(); try { _client = getClientBuilder().build(); } catch (Exception e) { _logger.errorf("exception: "); _logger.error(Throwables.getStackTraceAsString(e) + "\n"); throw new BatfishException("Failed to create HTTP client", e); } }
private boolean debugGet(FileWriter outWriter, List<String> options, List<String> parameters) { if (!isValidArgument(options, parameters, 0, 1, 1, Command.DEBUG_GET)) { return false; } String urlTail = parameters.get(0); try { return _workHelper.debugV2(outWriter, HttpMethod.GET, urlTail, null, null); } catch (IOException e) { _logger.error(Throwables.getStackTraceAsString(e)); return false; } }
@Nullable String checkApiKey() { try { WebTarget webTarget = getTarget(CoordConsts.SVC_RSC_CHECK_API_KEY); MultiPart multiPart = new MultiPart(); multiPart.setMediaType(MediaType.MULTIPART_FORM_DATA_TYPE); addTextMultiPart(multiPart, CoordConsts.SVC_KEY_API_KEY, _settings.getApiKey()); JSONObject jObj = postData(webTarget, multiPart); if (jObj == null) { return null; } return Boolean.toString(jObj.getBoolean(CoordConsts.SVC_KEY_API_KEY)); } catch (Exception e) { _logger.errorf("exception: "); _logger.error(Throwables.getStackTraceAsString(e) + "\n"); return null; } }
private boolean debugDelete(FileWriter outWriter, List<String> options, List<String> parameters) { if (!isValidArgument(options, parameters, 0, 1, 1, Command.DEBUG_DELETE)) { return false; } String urlTail = parameters.get(0); try { return _workHelper.debugV2(outWriter, HttpMethod.DELETE, urlTail, null, null); } catch (IOException e) { _logger.error(Throwables.getStackTraceAsString(e)); return false; } }
@Nullable JSONArray listSnapshots(String networkName) { try { WebTarget webTarget = getTarget(CoordConsts.SVC_RSC_LIST_SNAPSHOTS); MultiPart multiPart = new MultiPart(); multiPart.setMediaType(MediaType.MULTIPART_FORM_DATA_TYPE); addTextMultiPart(multiPart, CoordConsts.SVC_KEY_API_KEY, _settings.getApiKey()); if (networkName != null) { addTextMultiPart(multiPart, CoordConsts.SVC_KEY_NETWORK_NAME, networkName); } JSONObject jObj = postData(webTarget, multiPart); if (jObj == null) { return null; } if (!jObj.has(CoordConsts.SVC_KEY_SNAPSHOT_LIST)) { _logger.errorf("snapshot list key not found in: %s\n", jObj); return null; } return jObj.getJSONArray(CoordConsts.SVC_KEY_SNAPSHOT_LIST); } catch (Exception e) { _logger.errorf("Exception in listSnapshots for network %s:\n", networkName); _logger.error(Throwables.getStackTraceAsString(e) + "\n"); return null; } }
/** * Gets the questions configured at the coordinator * * @return JSON Object containing question keys and question content as values null if there is * any failure */ @Nullable JSONObject getQuestionTemplates() { try { WebTarget webTarget = getTarget(CoordConsts.SVC_RSC_GET_QUESTION_TEMPLATES); MultiPart multiPart = new MultiPart(); multiPart.setMediaType(MediaType.MULTIPART_FORM_DATA_TYPE); addTextMultiPart(multiPart, CoordConsts.SVC_KEY_API_KEY, _settings.getApiKey()); JSONObject jObj = postData(webTarget, multiPart); if (jObj == null) { return null; } if (!jObj.has(CoordConsts.SVC_KEY_QUESTION_LIST)) { _logger.errorf("question list key not found in: %s\n", jObj); return null; } return jObj.getJSONObject(CoordConsts.SVC_KEY_QUESTION_LIST); } catch (Exception e) { _logger.errorf("Exception in getQuestionTemplates from %s\n", _coordWorkMgr); _logger.error(Throwables.getStackTraceAsString(e) + "\n"); return null; } }
@Nullable JSONObject listAnalyses(String networkName) { try { WebTarget webTarget = getTarget(CoordConsts.SVC_RSC_LIST_ANALYSES); MultiPart multiPart = new MultiPart(); multiPart.setMediaType(MediaType.MULTIPART_FORM_DATA_TYPE); addTextMultiPart(multiPart, CoordConsts.SVC_KEY_API_KEY, _settings.getApiKey()); addTextMultiPart(multiPart, CoordConsts.SVC_KEY_NETWORK_NAME, networkName); JSONObject jObj = postData(webTarget, multiPart); if (jObj == null) { return null; } if (!jObj.has(CoordConsts.SVC_KEY_ANALYSIS_LIST)) { _logger.errorf("analysis list key not found in: %s\n", jObj); return null; } return jObj.getJSONObject(CoordConsts.SVC_KEY_ANALYSIS_LIST); } catch (Exception e) { _logger.errorf("exception: "); _logger.error(Throwables.getStackTraceAsString(e) + "\n"); return null; } }
@Nullable String initNetwork(@Nullable String networkName, @Nullable String networkPrefix) { try { WebTarget webTarget = getTarget(CoordConsts.SVC_RSC_INIT_NETWORK); MultiPart multiPart = new MultiPart(); multiPart.setMediaType(MediaType.MULTIPART_FORM_DATA_TYPE); addTextMultiPart(multiPart, CoordConsts.SVC_KEY_API_KEY, _settings.getApiKey()); if (networkName != null) { addTextMultiPart(multiPart, CoordConsts.SVC_KEY_NETWORK_NAME, networkName); } else { addTextMultiPart(multiPart, CoordConsts.SVC_KEY_NETWORK_PREFIX, networkPrefix); } JSONObject jObj = postData(webTarget, multiPart); if (jObj == null) { return null; } if (!jObj.has(CoordConsts.SVC_KEY_NETWORK_NAME)) { _logger.errorf("network name key not found in: %s\n", jObj); return null; } return jObj.getString(CoordConsts.SVC_KEY_NETWORK_NAME); } catch (Exception e) { _logger.errorf("exception: "); _logger.error(Throwables.getStackTraceAsString(e) + "\n"); return null; } }
boolean queueWork(WorkItem wItem) { try { WebTarget webTarget = getTarget(CoordConsts.SVC_RSC_QUEUE_WORK); MultiPart multiPart = new MultiPart(); multiPart.setMediaType(MediaType.MULTIPART_FORM_DATA_TYPE); addTextMultiPart( multiPart, CoordConsts.SVC_KEY_WORKITEM, BatfishObjectMapper.writeString(wItem)); addTextMultiPart(multiPart, CoordConsts.SVC_KEY_API_KEY, _settings.getApiKey()); JSONObject jObj = postData(webTarget, multiPart); return jObj != null; } catch (Exception e) { _logger.errorf("exception: "); _logger.error(Throwables.getStackTraceAsString(e) + "\n"); return false; } }
@Nullable List<WorkStatus> listIncompleteWork(String networkName) { try { WebTarget webTarget = getTarget(CoordConsts.SVC_RSC_LIST_INCOMPLETE_WORK); MultiPart multiPart = new MultiPart(); multiPart.setMediaType(MediaType.MULTIPART_FORM_DATA_TYPE); addTextMultiPart(multiPart, CoordConsts.SVC_KEY_API_KEY, _settings.getApiKey()); addTextMultiPart(multiPart, CoordConsts.SVC_KEY_NETWORK_NAME, networkName); JSONObject jObj = postData(webTarget, multiPart); if (jObj == null) { return null; } if (!jObj.has(CoordConsts.SVC_KEY_WORK_LIST)) { _logger.errorf("work list key not found in: %s\n", jObj); return null; } String result = jObj.getString(CoordConsts.SVC_KEY_WORK_LIST); return BatfishObjectMapper.mapper() .readValue(result, new TypeReference<List<WorkStatus>>() {}); } catch (Exception e) { _logger.errorf("exception: "); _logger.error(Throwables.getStackTraceAsString(e) + "\n"); return null; } }
boolean delSnapshot(String networkName, String snapshotName) { try { WebTarget webTarget = getTarget(CoordConsts.SVC_RSC_DEL_SNAPSHOT); MultiPart multiPart = new MultiPart(); multiPart.setMediaType(MediaType.MULTIPART_FORM_DATA_TYPE); addTextMultiPart(multiPart, CoordConsts.SVC_KEY_API_KEY, _settings.getApiKey()); addTextMultiPart(multiPart, CoordConsts.SVC_KEY_NETWORK_NAME, networkName); addTextMultiPart(multiPart, CoordConsts.SVC_KEY_SNAPSHOT_NAME, snapshotName); JSONObject jObj = postData(webTarget, multiPart); return jObj != null; } catch (Exception e) { _logger.errorf("Exception in delSnapshot for network %s:\n", networkName); _logger.error(Throwables.getStackTraceAsString(e) + "\n"); return false; } }
private void outputAnswer(Answer answer, boolean writeLog) { try { String answerString = BatfishObjectMapper.writePrettyString(answer) + '\n'; _logger.debug(answerString); @Nullable String logString = writeLog ? answerString : null; writeJsonAnswerWithLog(logString, answerString); } catch (Exception e) { BatfishException be = new BatfishException("Error in sending answer", e); try { Answer failureAnswer = Answer.failureAnswer(e.toString(), answer.getQuestion()); failureAnswer.addAnswerElement(be.getBatfishStackTrace()); String answerString = BatfishObjectMapper.writePrettyString(failureAnswer) + '\n'; _logger.error(answerString); @Nullable String logString = writeLog ? answerString : null; writeJsonAnswerWithLog(logString, answerString); } catch (Exception e1) { _logger.errorf( "Could not serialize failure answer. %s", Throwables.getStackTraceAsString(e1)); } throw be; } }
@Nullable String[] listNetworks() { try { WebTarget webTarget = getTarget(CoordConsts.SVC_RSC_LIST_NETWORKS); MultiPart multiPart = new MultiPart(); multiPart.setMediaType(MediaType.MULTIPART_FORM_DATA_TYPE); addTextMultiPart(multiPart, CoordConsts.SVC_KEY_API_KEY, _settings.getApiKey()); JSONObject jObj = postData(webTarget, multiPart); if (jObj == null) { return null; } if (!jObj.has(CoordConsts.SVC_KEY_NETWORK_LIST)) { _logger.errorf("network list key not found in: %s\n", jObj); return null; } JSONArray networkArray = jObj.getJSONArray(CoordConsts.SVC_KEY_NETWORK_LIST); String[] networkList = new String[networkArray.length()]; for (int index = 0; index < networkArray.length(); index++) { networkList[index] = networkArray.getString(index); } return networkList; } catch (Exception e) { _logger.errorf("exception: "); _logger.error(Throwables.getStackTraceAsString(e) + "\n"); return null; } }
boolean syncSnapshotsSyncNow(String pluginId, String networkName, boolean force) { try { WebTarget webTarget = getTarget(CoordConsts.SVC_RSC_SYNC_SNAPSHOTS_SYNC_NOW); MultiPart multiPart = new MultiPart(); multiPart.setMediaType(MediaType.MULTIPART_FORM_DATA_TYPE); addTextMultiPart(multiPart, CoordConsts.SVC_KEY_API_KEY, _settings.getApiKey()); addTextMultiPart(multiPart, CoordConsts.SVC_KEY_VERSION, Version.getVersion()); addTextMultiPart(multiPart, CoordConsts.SVC_KEY_NETWORK_NAME, networkName); addTextMultiPart(multiPart, CoordConsts.SVC_KEY_PLUGIN_ID, pluginId); addTextMultiPart(multiPart, CoordConsts.SVC_KEY_FORCE, String.valueOf(force)); JSONObject jObj = postData(webTarget, multiPart); return jObj != null; } catch (Exception e) { _logger.errorf("Exception syncing snapshots in network %s:\n", networkName); _logger.error(Throwables.getStackTraceAsString(e) + "\n"); return false; } }
boolean delQuestion(String networkName, String snapshotName, String questionName) { try { WebTarget webTarget = getTarget(CoordConsts.SVC_RSC_DEL_QUESTION); MultiPart multiPart = new MultiPart(); multiPart.setMediaType(MediaType.MULTIPART_FORM_DATA_TYPE); addTextMultiPart(multiPart, CoordConsts.SVC_KEY_API_KEY, _settings.getApiKey()); addTextMultiPart(multiPart, CoordConsts.SVC_KEY_NETWORK_NAME, networkName); addTextMultiPart(multiPart, CoordConsts.SVC_KEY_SNAPSHOT_NAME, snapshotName); addTextMultiPart(multiPart, CoordConsts.SVC_KEY_QUESTION_NAME, questionName); JSONObject jObj = postData(webTarget, multiPart); return jObj != null; } catch (Exception e) { _logger.errorf("exception: "); _logger.error(Throwables.getStackTraceAsString(e) + "\n"); return false; } }
"Exception in getAnalysisAnswers from %s using (%s, %s, %s, %s)\n", _coordWorkMgr, networkName, snapshot, referenceSnapshot, analysisName); _logger.error(Throwables.getStackTraceAsString(e) + "\n"); return null;
@Nullable String[] listQuestions(String networkName, String snapshotName) { try { WebTarget webTarget = getTarget(CoordConsts.SVC_RSC_LIST_QUESTIONS); MultiPart multiPart = new MultiPart(); multiPart.setMediaType(MediaType.MULTIPART_FORM_DATA_TYPE); addTextMultiPart(multiPart, CoordConsts.SVC_KEY_API_KEY, _settings.getApiKey()); addTextMultiPart(multiPart, CoordConsts.SVC_KEY_NETWORK_NAME, networkName); addTextMultiPart(multiPart, CoordConsts.SVC_KEY_SNAPSHOT_NAME, snapshotName); JSONObject jObj = postData(webTarget, multiPart); if (jObj == null) { return null; } if (!jObj.has(CoordConsts.SVC_KEY_QUESTION_LIST)) { _logger.errorf("question list key not found in: %s\n", jObj); return null; } JSONObject questions = jObj.getJSONObject(CoordConsts.SVC_KEY_QUESTION_LIST); @SuppressWarnings("unchecked") // JSONObject has String keys, so the implicit cast is safe. String[] questionList = Iterators.toArray((Iterator<String>) questions.keys(), String.class); return questionList; } catch (Exception e) { _logger.errorf("exception: "); _logger.error(Throwables.getStackTraceAsString(e) + "\n"); return null; } }
boolean syncSnapshotsUpdateSettings( String pluginId, String networkName, Map<String, String> settings) { try { String settingsStr = BatfishObjectMapper.writePrettyString(settings); WebTarget webTarget = getTarget(CoordConsts.SVC_RSC_SYNC_SNAPSHOTS_UPDATE_SETTINGS); MultiPart multiPart = new MultiPart(); multiPart.setMediaType(MediaType.MULTIPART_FORM_DATA_TYPE); addTextMultiPart(multiPart, CoordConsts.SVC_KEY_API_KEY, _settings.getApiKey()); addTextMultiPart(multiPart, CoordConsts.SVC_KEY_VERSION, Version.getVersion()); addTextMultiPart(multiPart, CoordConsts.SVC_KEY_NETWORK_NAME, networkName); addTextMultiPart(multiPart, CoordConsts.SVC_KEY_PLUGIN_ID, pluginId); addTextMultiPart(multiPart, CoordConsts.SVC_KEY_SETTINGS, settingsStr); JSONObject jObj = postData(webTarget, multiPart); return jObj != null; } catch (Exception e) { _logger.errorf("Exception syncing snapshots in network %s:\n", networkName); _logger.error(Throwables.getStackTraceAsString(e) + "\n"); return false; } }