public static String statusHostJob(final String host, final JobId jobId) { return statusHostJob(host, jobId.toString()); }
.rule(Paths.statusHost(PATH_COMPONENT_WILDCARD), CREATE | DELETE, agentId) .rule(Paths.statusHostJobs(PATH_COMPONENT_WILDCARD), CREATE | DELETE, agentId) .rule(Paths.statusHostJob(PATH_COMPONENT_WILDCARD, PATH_COMPONENT_WILDCARD), WRITE, agentId) .rule(Paths.statusHostAgentInfo(PATH_COMPONENT_WILDCARD), WRITE, agentId) .rule(Paths.statusHostInfo(PATH_COMPONENT_WILDCARD), WRITE, agentId)
@Nullable private TaskStatus getTaskStatus(final ZooKeeperClient client, final String host, final JobId jobId) { final String containerPath = Paths.statusHostJob(host, jobId); try { final byte[] data = client.getData(containerPath); return parse(data, TaskStatus.class); } catch (NoNodeException ignored) { return null; } catch (KeeperException | IOException e) { throw new HeliosRuntimeException("Getting task " + jobId + " status " + "for host " + host + " failed", e); } }
@Test public void testAgent() throws Exception { final JobId jobId = createAndAwaitJobRunning(); final byte[] data1 = curator.getData().forPath(Paths.statusHostJob(TEST_HOST, jobId)); assertNotNull(data1); final TaskStatus status = Json.read(data1, TaskStatus.class); assertNotNull(status); assertEquals(START, status.getGoal()); assertEquals(RUNNING, status.getState()); // stop so we can create and maintain the tombstone agent.stopAsync().awaitTerminated(); // create tombstone client.undeploy(jobId, TEST_HOST).get(); final byte[] data2 = curator.getData().forPath(Paths.statusHostJob(TEST_HOST, jobId)); assertNotNull(data2); final TaskStatus status2 = Json.read(data2, TaskStatus.class); assertNotNull(status2); assertEquals(START, status2.getGoal()); assertEquals(RUNNING, status2.getState()); }
zkc.curatorWithSuperAuth().delete().forPath(Paths.statusHostJob(testHost(), fooJob.getId()));
@Nullable private TaskStatus getTaskStatus(final ZooKeeperClient client, final String host, final JobId jobId) { final String containerPath = Paths.statusHostJob(host, jobId); try { final byte[] data = client.getData(containerPath); return parse(data, TaskStatus.class); } catch (NoNodeException ignored) { return null; } catch (KeeperException | IOException e) { throw new HeliosRuntimeException("Getting task " + jobId + " status " + "for host " + host + " failed", e); } }