@Override public Optional<Protos.FrameworkID> getFrameworkID() { if (!stateHome.exists()) { stateHome.mkdir(); return Optional.empty(); } try { File frameworkid = new File(frameworkStateHome(), "frameworkid"); if (!frameworkid.exists()) { return Optional.empty(); } return Optional.of(Protos.FrameworkID.newBuilder().setValue(new String(FileCopyUtils.copyToByteArray(frameworkid))).build()); } catch (IOException e) { throw new RuntimeException("Failed to open frameworkId"); } }
.setValue(frameworkId)) .setName(name) .setExecutorId(Protos.ExecutorID.newBuilder().setValue(""))
subBuilder.mergeFrom(frameworkId_); frameworkId_ = subBuilder.buildPartial();
subBuilder.mergeFrom(frameworkId_); frameworkId_ = subBuilder.buildPartial();
subBuilder.mergeFrom(frameworkId_); frameworkId_ = subBuilder.buildPartial();
offerBuilder.getFrameworkIdBuilder().setValue("test-framework-id"); offerBuilder.getSlaveIdBuilder().setValue("test-agent-" + UUID.randomUUID().toString());
/** * <pre> * Identifies who generated this call. Master assigns a framework id * when a new scheduler subscribes for the first time. Once assigned, * the scheduler must set the 'framework_id' here and within its * FrameworkInfo (in any further 'Subscribe' calls). This allows the * master to identify a scheduler correctly across disconnections, * failovers, etc. * </pre> * * <code>optional .mesos.FrameworkID framework_id = 1;</code> */ public Builder mergeFrameworkId(org.apache.mesos.Protos.FrameworkID value) { if (frameworkIdBuilder_ == null) { if (((bitField0_ & 0x00000001) == 0x00000001) && frameworkId_ != null && frameworkId_ != org.apache.mesos.Protos.FrameworkID.getDefaultInstance()) { frameworkId_ = org.apache.mesos.Protos.FrameworkID.newBuilder(frameworkId_).mergeFrom(value).buildPartial(); } else { frameworkId_ = value; } onChanged(); } else { frameworkIdBuilder_.mergeFrom(value); } bitField0_ |= 0x00000001; return this; } /**
@Test public void testExecutorStateMechanism() throws IOException, InterruptedException, ExecutionException, ClassNotFoundException { Protos.TaskStatus taskStatus = Protos.TaskStatus.getDefaultInstance(); SerializableState state = Mockito.mock(SerializableState.class); when(state.get(anyString())).thenReturn(taskStatus); Protos.FrameworkID frameworkID = Protos.FrameworkID.newBuilder().setValue(FRAMEWORK_ID).build(); Protos.SlaveID slaveID = Protos.SlaveID.newBuilder().setValue(SLAVE_ID).build(); Protos.ExecutorID executorID = Protos.ExecutorID.newBuilder().setValue(EXECUTOR_ID).build(); Protos.TaskID taskID = Protos.TaskID.newBuilder().setValue(TASK_ID).build(); Protos.TaskInfo taskInfo = Protos.TaskInfo.newBuilder() .setTaskId(taskID) .setExecutor(Protos.ExecutorInfo.newBuilder() .setExecutorId(executorID) .setCommand(Protos.CommandInfo.getDefaultInstance()) ) .setSlaveId(slaveID) .setName("Test") .build(); ESTaskStatus executorState = new ESTaskStatus(state, frameworkID, taskInfo, mock(StatePath.class)); executorState.setStatus(taskStatus); verify(state, times(1)).set(anyString(), any(Protos.TaskStatus.class)); Protos.TaskStatus newStatus = executorState.getStatus(); assertNotNull(newStatus); assertEquals(taskStatus.getExecutorId().toString(), newStatus.getExecutorId().toString()); } }
/** * <pre> * Identifies who generated this call. Master assigns a framework id * when a new scheduler subscribes for the first time. Once assigned, * the scheduler must set the 'framework_id' here and within its * FrameworkInfo (in any further 'Subscribe' calls). This allows the * master to identify a scheduler correctly across disconnections, * failovers, etc. * </pre> * * <code>optional .mesos.FrameworkID framework_id = 1;</code> */ public Builder setFrameworkId( org.apache.mesos.Protos.FrameworkID.Builder builderForValue) { if (frameworkIdBuilder_ == null) { frameworkId_ = builderForValue.build(); onChanged(); } else { frameworkIdBuilder_.setMessage(builderForValue.build()); } bitField0_ |= 0x00000001; return this; } /**
/** * <code>required .mesos.FrameworkID framework_id = 1;</code> */ public Builder mergeFrameworkId(org.apache.mesos.Protos.FrameworkID value) { if (frameworkIdBuilder_ == null) { if (((bitField0_ & 0x00000001) == 0x00000001) && frameworkId_ != null && frameworkId_ != org.apache.mesos.Protos.FrameworkID.getDefaultInstance()) { frameworkId_ = org.apache.mesos.Protos.FrameworkID.newBuilder(frameworkId_).mergeFrom(value).buildPartial(); } else { frameworkId_ = value; } onChanged(); } else { frameworkIdBuilder_.mergeFrom(value); } bitField0_ |= 0x00000001; return this; } /**
public static Protos.Offer generateUpdateOffer( String frameworkId, Protos.TaskInfo taskInfo, Protos.TaskInfo templateTaskInfo, double cpu, int memory, int disk) { final String offerUUID = UUID.randomUUID().toString(); return Protos.Offer .newBuilder() .setId(Protos.OfferID.newBuilder().setValue(offerUUID)) .setFrameworkId(Protos.FrameworkID.newBuilder().setValue(frameworkId)) .setSlaveId(Protos.SlaveID.newBuilder().setValue(taskInfo.getSlaveId().getValue())) .setHostname("127.0.0.1") .addAllResources(taskInfo.getResourcesList()) .addAllResources(taskInfo.getExecutor().getResourcesList()) .addAllResources(templateTaskInfo.getResourcesList()) .addResources(ResourceUtils.getUnreservedScalar("cpus", cpu)) .addResources(ResourceUtils.getUnreservedScalar("mem", memory)) .addResources(ResourceUtils.getUnreservedScalar("disk", disk)) .build(); }
public static Protos.Offer generateOffer( String frameworkId, double cpu, int memory, int disk, String slaveId, String offerUUID) { return Protos.Offer .newBuilder() .setId(Protos.OfferID.newBuilder().setValue(offerUUID)) .setFrameworkId(Protos.FrameworkID.newBuilder().setValue(frameworkId)) .setSlaveId(Protos.SlaveID.newBuilder().setValue(slaveId)) .setHostname("127.0.0.1") .addResources(ResourceUtils.getUnreservedScalar("cpus", cpu)) .addResources(ResourceUtils.getUnreservedScalar("mem", memory)) .addResources(ResourceUtils.getUnreservedScalar("disk", disk)) .addResources(ResourceUtils.getUnreservedRanges( "ports", Arrays.asList(Protos.Value.Range.newBuilder().setBegin(5000).setEnd(40000).build()))) .build(); }
/** * <code>required .mesos.FrameworkID framework_id = 2;</code> */ public Builder mergeFrameworkId(org.apache.mesos.Protos.FrameworkID value) { if (frameworkIdBuilder_ == null) { if (((bitField0_ & 0x00000002) == 0x00000002) && frameworkId_ != null && frameworkId_ != org.apache.mesos.Protos.FrameworkID.getDefaultInstance()) { frameworkId_ = org.apache.mesos.Protos.FrameworkID.newBuilder(frameworkId_).mergeFrom(value).buildPartial(); } else { frameworkId_ = value; } onChanged(); } else { frameworkIdBuilder_.mergeFrom(value); } bitField0_ |= 0x00000002; return this; } /**
private FrameworkInfo.Builder createFrameworkBuilder() throws IOException { Number failoverTimeout = Optional.fromNullable((Number) mesosStormConf.get(CONF_MASTER_FAILOVER_TIMEOUT_SECS)).or(24 * 7 * 3600); String role = Optional.fromNullable((String) mesosStormConf.get(CONF_MESOS_ROLE)).or("*"); Boolean checkpoint = Optional.fromNullable((Boolean) mesosStormConf.get(CONF_MESOS_CHECKPOINT)).or(false); String frameworkUser = Optional.fromNullable((String) mesosStormConf.get(CONF_MESOS_FRAMEWORK_USER)).or(""); FrameworkInfo.Builder finfo = FrameworkInfo.newBuilder() .setName(frameworkName) .setFailoverTimeout(failoverTimeout.doubleValue()) .setUser(frameworkUser) .setRole(role) .setCheckpoint(checkpoint); String id = _state.get(FRAMEWORK_ID); if (id != null) { finfo.setId(FrameworkID.newBuilder().setValue(id).build()); } return finfo; } // Super ugly method but it only gets called once.
private SchedulerDriver getSchedulerDriver(final TaskScheduler taskScheduler, final JobEventBus jobEventBus, final FrameworkIDService frameworkIDService) { Optional<String> frameworkIDOptional = frameworkIDService.fetch(); Protos.FrameworkInfo.Builder builder = Protos.FrameworkInfo.newBuilder(); if (frameworkIDOptional.isPresent()) { builder.setId(Protos.FrameworkID.newBuilder().setValue(frameworkIDOptional.get()).build()); } Optional<String> role = env.getMesosRole(); String frameworkName = MesosConfiguration.FRAMEWORK_NAME; if (role.isPresent()) { builder.setRole(role.get()); frameworkName += "-" + role.get(); } builder.addCapabilitiesBuilder().setType(Protos.FrameworkInfo.Capability.Type.PARTITION_AWARE); MesosConfiguration mesosConfig = env.getMesosConfiguration(); Protos.FrameworkInfo frameworkInfo = builder.setUser(mesosConfig.getUser()).setName(frameworkName) .setHostname(mesosConfig.getHostname()).setFailoverTimeout(MesosConfiguration.FRAMEWORK_FAILOVER_TIMEOUT_SECONDS) .setWebuiUrl(WEB_UI_PROTOCOL + env.getFrameworkHostPort()).setCheckpoint(true).build(); return new MesosSchedulerDriver(new SchedulerEngine(taskScheduler, facadeService, jobEventBus, frameworkIDService, statisticManager), frameworkInfo, mesosConfig.getUrl()); }