/** * @return Mesos Protos FrameworkInfo. */ public Protos.FrameworkInfo getFrameworkInfo() throws Exception { final int frameworkFailoverTimeout = 0; Protos.FrameworkInfo.Builder frameworkBuilder = Protos.FrameworkInfo.newBuilder() .setName(IGNITE_FRAMEWORK_NAME) .setUser(getUser()) .setRole(getRole()) .setFailoverTimeout(frameworkFailoverTimeout); if (System.getenv(MESOS_CHECKPOINT) != null) { log.info("Enabling checkpoint for the framework"); frameworkBuilder.setCheckpoint(true); } if (System.getenv(MESOS_AUTHENTICATE) != null) frameworkBuilder.setPrincipal(System.getenv(DEFAULT_PRINCIPAL)); else frameworkBuilder.setPrincipal("ignite-framework-java"); return frameworkBuilder.build(); }
.clone() .setCheckpoint(true); if (webUiUrl != null) { frameworkInfo.setWebuiUrl(webUiUrl); } else { LOG.info("Recovery scenario: re-registering using framework ID {}.", frameworkID.get().getValue()); frameworkInfo.setId(frameworkID.get());
FrameworkInfo frameworkInfo = FrameworkInfo .newBuilder() .setUser("") // Let Mesos fill in the user. .setCheckpoint(conf.getBoolean("mapred.mesos.checkpoint", false)) .setRole(conf.get("mapred.mesos.role", "*")) .setName("Hadoop: (RPC port: " + jobTracker.port + "," + " WebUI port: " + jobTracker.infoPort + ")").build();
.setUser(targetUser == null ? "" : targetUser) .setName(mesosCloud.getFrameworkName()) .setRole(mesosCloud.getRole()) .setPrincipal(principal) .setCheckpoint(mesosCloud.isCheckpoint()) .setWebuiUrl(webUrl != null ? webUrl : "") .build();
.setName("CodeFuturesExampleFramework") .setUser("") // Have Mesos fill in the current user. .setFailoverTimeout(frameworkFailoverTimeout); // timeout in seconds frameworkBuilder.setCheckpoint(true); .build(); frameworkBuilder.setPrincipal(System.getenv("DEFAULT_PRINCIPAL")); driver = new MesosSchedulerDriver(scheduler, frameworkBuilder.build(), args[0], credential); } else { frameworkBuilder.setPrincipal("test-framework-java"); driver = new MesosSchedulerDriver(scheduler, frameworkBuilder.build(), args[0]);
finfo.setPrincipal(principal); Credential.Builder credentialBuilder = Credential.newBuilder(); credentialBuilder.setPrincipal(principal);
@VisibleForTesting Protos.FrameworkInfo getFrameworkInfo(Optional<Protos.FrameworkID> frameworkId) { Protos.FrameworkInfo.Builder fwkInfoBuilder = Protos.FrameworkInfo.newBuilder() .setName(frameworkConfig.getFrameworkName()) .setPrincipal(frameworkConfig.getPrincipal()) .setUser(frameworkConfig.getUser()) .setFailoverTimeout(TWO_WEEK_SEC) .setCheckpoint(true); setRole(fwkInfoBuilder, frameworkConfig.getRole()); } else { fwkInfoBuilder.addCapabilitiesBuilder() .setType(Protos.FrameworkInfo.Capability.Type.MULTI_ROLE); fwkInfoBuilder .addRoles(frameworkConfig.getRole()) .addAllRoles(frameworkConfig.getPreReservedRoles()); fwkInfoBuilder.setWebuiUrl(frameworkConfig.getWebUrl()); fwkInfoBuilder.addCapabilitiesBuilder() .setType(Protos.FrameworkInfo.Capability.Type.PARTITION_AWARE); fwkInfoBuilder.addCapabilitiesBuilder() .setType(Protos.FrameworkInfo.Capability.Type.GPU_RESOURCES); fwkInfoBuilder.addCapabilitiesBuilder() .setType(Protos.FrameworkInfo.Capability.Type.RESERVATION_REFINEMENT); fwkInfoBuilder.addCapabilitiesBuilder() .setType(Protos.FrameworkInfo.Capability.Type.REGION_AWARE);
final Optional<ByteString> secretBytes = serviceConfig.readSecretBytes(); final Protos.FrameworkInfo.Builder builder = Protos.FrameworkInfo.newBuilder() .setRole(serviceConfig.getRole()) .setUser(serviceConfig.getUser()) .setName(targetConfig.getServiceConfig().getName()) .setPrincipal(serviceConfig.getPrincipal()) .setCheckpoint(serviceConfig.isCheckpoint()) .setFailoverTimeout(serviceConfig.getFailoverTimeoutS()); builder.setId(frameworkID.get()); } else { LOGGER.info("No framework id found"); final Protos.FrameworkInfo frameworkInfo = builder.build();
@Inject REEFScheduler(final REEFEventHandlers reefEventHandlers, final MesosRemoteManager mesosRemoteManager, final REEFExecutors executors, final REEFFileNames fileNames, final EStage<SchedulerDriver> schedulerDriverEStage, final ClasspathProvider classpath, @Parameter(JobIdentifier.class) final String jobIdentifier, @Parameter(MesosMasterIp.class) final String masterIp, @Parameter(MesosSlavePort.class) final int slavePort, @Parameter(JobSubmissionDirectoryPrefix.class) final String jobSubmissionDirectoryPrefix) { this.mesosRemoteManager = mesosRemoteManager; this.reefEventHandlers = reefEventHandlers; this.executors = executors; this.fileNames = fileNames; this.jobSubmissionDirectoryPrefix = jobSubmissionDirectoryPrefix; this.reefTarUri = getReefTarUri(jobIdentifier); this.classpath = classpath; this.schedulerDriverEStage = schedulerDriverEStage; final Protos.FrameworkInfo frameworkInfo = Protos.FrameworkInfo.newBuilder() .setUser("") .setName(REEF_JOB_NAME_PREFIX + jobIdentifier) .build(); this.mesosMaster = new MesosSchedulerDriver(this, frameworkInfo, masterIp); this.mesosSlavePort = slavePort; }
public void start() { logger.info("Starting Mesos-Starter Framework"); MesosSchedulerDriver driver; Protos.Credential credential = credentialFactory.create(); final String zookeeperUrl = "zk://" + zookeeperMaster + "/mesos"; if (credential.isInitialized()) { logger.debug("Starting scheduler driver with supplied credentials for principal=" + credential.getPrincipal()); driver = new MesosSchedulerDriver(this, frameworkInfoFactory.create().build(), zookeeperUrl, credential); } else { logger.debug("Starting scheduler driver without authorisation."); //TODO: The follow MesosSchedulerDriver constructor will be deprecated at some point. driver = new MesosSchedulerDriver(this, frameworkInfoFactory.create().build(), zookeeperUrl); } if (!this.driver.compareAndSet(null, driver)) { throw new IllegalStateException("Driver already initialised"); } driver.start(); new Thread(driver::join).start(); }
/** * <pre> * See the comments below on 'framework_id' on the semantics for * 'framework_info.id'. * </pre> * * <code>required .mesos.FrameworkInfo framework_info = 1;</code> */ public Builder setFrameworkInfo( org.apache.mesos.Protos.FrameworkInfo.Builder builderForValue) { if (frameworkInfoBuilder_ == null) { frameworkInfo_ = builderForValue.build(); onChanged(); } else { frameworkInfoBuilder_.setMessage(builderForValue.build()); } bitField0_ |= 0x00000001; return this; } /**
private void start() { try { FrameworkInfo frameworkInfo = FrameworkInfo.newBuilder() .setUser("") // Let Mesos fill in the user. .setCheckpoint(conf.getBoolean("bsp.master.port", false)) .setRole(conf.get("hama.mesos.role", "*")) .setName( "Hama: (Master Port: " + conf.get("bsp.groom.rpc.port") + "," + " WebUI port: " + conf.get("bsp.http.groomserver.port") + ")").build(); String master = conf.get("hama.mesos.master", "local"); driver = new MesosSchedulerDriver(this, frameworkInfo, master); driver.start(); } catch (Exception e) { // If the MesosScheduler can't be loaded, the JobTracker won't be useful // at all, so crash it now so that the user notices. LOG.fatal("Failed to start MesosScheduler", e); System.exit(1); } }
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()); }
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.
/** * <code>required .mesos.FrameworkInfo framework_info = 2;</code> */ public Builder setFrameworkInfo( org.apache.mesos.Protos.FrameworkInfo.Builder builderForValue) { if (frameworkInfoBuilder_ == null) { frameworkInfo_ = builderForValue.build(); onChanged(); } else { frameworkInfoBuilder_.setMessage(builderForValue.build()); } bitField0_ |= 0x00000002; return this; } /**
public Protos.FrameworkInfo.Builder create() { Protos.FrameworkInfo.Builder frameworkBuilder = Protos.FrameworkInfo.newBuilder() .setName(applicationName) .setUser("root") .addRoles(mesosConfig.getRole()) .addCapabilities(Protos.FrameworkInfo.Capability.newBuilder().setType(Protos.FrameworkInfo.Capability.Type.MULTI_ROLE).build()) .setCheckpoint(true) .setFailoverTimeout(150.0) .setId(stateRepository.getFrameworkID().orElseGet(() -> Protos.FrameworkID.newBuilder().setValue("").build())); Protos.Credential credential = credentialFactory.create(); if (credential.isInitialized()) { logger.debug("Adding framework principal: " + credential.getPrincipal()); frameworkBuilder.setPrincipal(credential.getPrincipal()); } Optional.ofNullable(mesosConfig.getWebuiUrl()).ifPresent(frameworkBuilder::setWebuiUrl); return frameworkBuilder; } }
@Test public void shouldReturnPrincipalIfEnabled() { when(configuration.getFrameworkPrincipal()).thenReturn(PRINCIPAL); FrameworkInfoFactory frameworkInfoFactory = new FrameworkInfoFactory(configuration, frameworkState); Protos.FrameworkInfo frameworkInfo = frameworkInfoFactory.getBuilder().build(); assertTrue(frameworkInfo.getPrincipal().equals(PRINCIPAL)); } }
@Override public void run() { // Have Mesos fill in the current user. FrameworkInfo framework = FrameworkInfo.newBuilder().setUser("") .setName("Gitlab CI Framework").build(); driver = new MesosSchedulerDriver(GitlabScheduler.this, framework, mesosMaster); if (driver.run() != Status.DRIVER_STOPPED) { LOGGER.severe("The mesos driver was aborted!"); } driver = null; } }).start();
private MesosSchedulerDriver createMesosDriver() throws IOException { MesosSchedulerDriver driver; Credential credential; FrameworkInfo.Builder finfo = createFrameworkBuilder(); LOG.info(String.format("Registering framework with role '%s'", finfo.getRole())); if ((credential = getCredential(finfo)) != null) { driver = new MesosSchedulerDriver(_mesosScheduler, finfo.build(), (String) mesosStormConf.get(CONF_MASTER_URL), credential); } else { driver = new MesosSchedulerDriver(_mesosScheduler, finfo.build(), (String) mesosStormConf.get(CONF_MASTER_URL)); } return driver; }