// registerOnce returns true if we should attempt another registration later; it is *not* // guarded by eventLock: all access to mutable members of MesosSchedulerDriver should be // explicitly synchronized. func (driver *MesosSchedulerDriver) registerOnce() bool { var ( failover bool pid *upid.UPID info *mesos.FrameworkInfo ) if func() bool { driver.eventLock.RLock() defer driver.eventLock.RUnlock() if driver.stopped() || driver.connected || driver.masterPid == nil || (driver.credential != nil && !driver.authenticated) { log.V(1).Infof("skipping registration request: stopped=%v, connected=%v, authenticated=%v", driver.stopped(), driver.connected, driver.authenticated) return false } failover = driver.failover pid = driver.masterPid info = proto.Clone(driver.frameworkInfo).(*mesos.FrameworkInfo) return true }() { // register framework var message proto.Message if len(info.GetId().GetValue()) > 0 { // not the first time, or failing over log.V(1).Infof("Reregistering with master: %v", pid) message = &mesos.ReregisterFrameworkMessage{ Framework: info, Failover: proto.Bool(failover), } fmt.Printf("Reregistering with master: %v\nwith message:\n%v\n", pid, message) } else { log.V(1).Infof("Registering with master: %v", pid) message = &mesos.RegisterFrameworkMessage{ Framework: info, } fmt.Printf("Reregistering with master: %v\nwith message:\n%v\n", pid, message) } if err := driver.send(pid, message); err != nil { log.Errorf("failed to send RegisterFramework message: %v", err) if _, err = driver.Stop(failover); err != nil { log.Errorf("failed to stop scheduler driver: %v", err) } } return true } return false }
// create credentials data structure func prepateCredentials(fwinfo *mesos.FrameworkInfo) *mesos.Credential { if *mesosAuthPrincipal != "" { fwinfo.Principal = proto.String(*mesosAuthPrincipal) secret, err := ioutil.ReadFile(*mesosAuthSecretFile) if err != nil { log.Fatal(err) } return &mesos.Credential{ Principal: proto.String(*mesosAuthPrincipal), Secret: secret, } } else { return nil } }
func cred(fwinfo *mesos.FrameworkInfo) *mesos.Credential { cred := (*mesos.Credential)(nil) mesosAuthPrincipal := config.Runonce.AuthPrincipal if mesosAuthPrincipal != "" { fwinfo.Principal = proto.String(mesosAuthPrincipal) cred = &mesos.Credential{ Principal: proto.String(mesosAuthPrincipal), } mesosAuthSecretFile := config.Runonce.AuthSecretFile if mesosAuthSecretFile != "" { _, err := os.Stat(mesosAuthSecretFile) if err != nil { log.Exit("missing secret file: ", err.Error()) } secret, err := ioutil.ReadFile(mesosAuthSecretFile) if err != nil { log.Exit("failed to read secret file: ", err.Error()) } cred.Secret = proto.String(strings.TrimSuffix(string(secret), "\n")) } } return cred }
func (e *Executor) Registered(driver executor.ExecutorDriver, executor *mesos.ExecutorInfo, framework *mesos.FrameworkInfo, slave *mesos.SlaveInfo) { Logger.Infof("[Registered] framework: %s slave: %s", framework.GetId().GetValue(), slave.GetId().GetValue()) }