@Override public void stop(ProgramId programId) throws Exception { switch (programId.getType()) { case SERVICE: case WORKER: stopProgramIfRunning(programId); break; } } };
@Override public Set<String> getSystemTagsToAdd() { return ImmutableSet.<String>builder() .add(programId.getType().getPrettyName()) .add(getMode()) .addAll(getWorkflowNodes()) .build(); }
@Override public Map<RunId, RuntimeInfo> list(final ProgramId program) { return Maps.filterValues(list(program.getType()), new Predicate<RuntimeInfo>() { @Override public boolean apply(RuntimeInfo info) { return info.getProgramId().equals(program); } }); }
private Map<String, String> getMetricContext(TwillRunner.LiveInfo info) { ProgramId programId = TwillAppNames.fromTwillAppName(info.getApplicationName(), false); if (programId == null) { return null; } return getMetricsContext(programId.getType(), programId); } }
/** * Returns the Twill app name to be used for a Twill app launched for a given program. */ public static String toTwillAppName(ProgramId programId) { return String.format("%s.%s.%s.%s", programId.getType().name().toLowerCase(), programId.getNamespace(), programId.getApplication(), programId.getProgram()); }
private boolean programExists(ProgramId id, ApplicationSpecification appSpec) { switch (id.getType()) { case MAPREDUCE: return appSpec.getMapReduce().containsKey(id.getProgram()); case SERVICE: return appSpec.getServices().containsKey(id.getProgram()); case SPARK: return appSpec.getSpark().containsKey(id.getProgram()); case WORKER: return appSpec.getWorkers().containsKey(id.getProgram()); case WORKFLOW: return appSpec.getWorkflows().containsKey(id.getProgram()); default: throw new IllegalArgumentException("Unexpected ProgramType " + id.getType()); } }
public ProgramLiveInfo(ProgramId programId, String runtime) { this.app = programId.getApplication(); this.type = programId.getType().getPrettyName(); this.name = programId.getProgram(); this.runtime = runtime; }
private boolean isInState(ProgramId programId, ProgramStatus status) { try { String actual = appFabricClient.getStatus(application.getNamespace(), programId.getApplication(), programId.getVersion(), programId.getProgram(), programId.getType()); return status.name().equals(actual); } catch (Exception e) { throw Throwables.propagate(e); } }
@Override public void startProgram(ProgramId programId, Map<String, String> arguments) { try { appFabricClient.startProgram(application.getNamespace(), application.getApplication(), application.getVersion(), programId.getProgram(), programId.getType(), arguments); } catch (Exception e) { throw Throwables.propagate(e); } }
public static Program fromEntityId(ProgramId programId) { return new Program(Id.Application.fromEntityId(programId.getParent()), programId.getType(), programId.getProgram()); } }
@Override public void stopProgram(ProgramId programId) { String programName = programId.getProgram(); try { appFabricClient.stopProgram(application.getNamespace(), application.getApplication(), application.getVersion(), programName, programId.getType()); waitForStopped(programId); } catch (Exception e) { throw Throwables.propagate(e); } }
protected List<BatchProgramHistory> getProgramRuns(NamespaceId namespace, List<ProgramId> programs) throws Exception { List<BatchProgram> request = programs.stream() .map(program -> new BatchProgram(program.getApplication(), program.getType(), program.getProgram())) .collect(Collectors.toList()); HttpResponse response = doPost(getVersionedAPIPath("runs", namespace.getNamespace()), GSON.toJson(request)); Assert.assertEquals(200, response.getResponseCode()); return GSON.fromJson(response.getResponseBodyAsString(), BATCH_PROGRAM_RUNS_TYPE); }
protected void stopProgram(ProgramId program, @Nullable String runId, int expectedStatusCode, String expectedMessage) throws Exception { String path; if (runId == null) { path = String.format("apps/%s/versions/%s/%s/%s/stop", program.getApplication(), program.getVersion(), program.getType().getCategoryName(), program.getProgram()); } else { // TODO: HTTP endpoint for stopping a program run of an app version not implemented path = null; } stopProgram(path, program.getNamespace(), expectedStatusCode, expectedMessage); }
protected MDSKey.Builder getProgramKeyBuilder(String recordType, @Nullable ProgramId programId) { MDSKey.Builder builder = new MDSKey.Builder().add(recordType); if (programId != null) { builder.add(programId.getNamespace()); builder.add(programId.getApplication()); builder.add(programId.getVersion()); builder.add(programId.getType().name()); builder.add(programId.getProgram()); } return builder; }
/** * Tries to start the given program with the given runtime arguments and expect the call completed with the status. */ protected void startProgram(ProgramId program, Map<String, String> args, int expectedStatusCode) throws Exception { String path = String.format("apps/%s/versions/%s/%s/%s/start", program.getApplication(), program.getVersion(), program.getType().getCategoryName(), program.getProgram()); startProgram(path, program.getNamespace(), args, expectedStatusCode); }
private void addProgram(MDSKey.Builder keyBuilder, ProgramId program) { keyBuilder.add(PROGRAM_MARKER) .add(program.getNamespace()) .add(program.getParent().getEntityName()) .add(program.getType().getCategoryName()) .add(program.getEntityName()); }
public List<RunRecord> getHistory(ProgramId programId, ProgramRunStatus status) throws Exception { String namespace = programId.getNamespace(); String application = programId.getApplication(); String applicationVersion = programId.getVersion(); String programName = programId.getProgram(); String categoryName = programId.getType().getCategoryName(); return doGetHistory(namespace, application, applicationVersion, programName, categoryName, status); }
protected List<RunRecord> getProgramRuns(ProgramId program, ProgramRunStatus status) throws Exception { String path = String.format("apps/%s/versions/%s/%s/%s/runs?status=%s", program.getApplication(), program.getVersion(), program.getType().getCategoryName(), program.getProgram(), status.toString()); HttpResponse response = doGet(getVersionedAPIPath(path, program.getNamespace())); Assert.assertEquals(200, response.getResponseCode()); return GSON.fromJson(response.getResponseBodyAsString(), LIST_RUNRECORD_TYPE); }
private void testVersionedProgramRuntimeArgs(ProgramId programId) throws Exception { String versionedRuntimeArgsUrl = getVersionedAPIPath("apps/" + programId.getApplication() + "/versions/" + programId.getVersion() + "/" + programId.getType().getCategoryName() + "/" + programId.getProgram() + "/runtimeargs", Constants.Gateway.API_VERSION_3_TOKEN, programId.getNamespace()); verifyRuntimeArgs(versionedRuntimeArgsUrl); }
public ScheduleDetail toScheduleDetail() { ScheduleProgramInfo programInfo = new ScheduleProgramInfo(schedule.getProgramId().getType().getSchedulableType(), schedule.getProgramId().getProgram()); ScheduleId scheduleId = schedule.getScheduleId(); return new ScheduleDetail(scheduleId.getNamespace(), scheduleId.getApplication(), scheduleId.getVersion(), scheduleId.getSchedule(), schedule.getDescription(), programInfo, schedule.getProperties(), schedule.getTrigger(), schedule.getConstraints(), schedule.getTimeoutMillis(), meta.getStatus().name()); } }