本文整理汇总了Golang中github.com/mesos/mesos-go/mesosproto.MasterInfo类的典型用法代码示例。如果您正苦于以下问题:Golang MasterInfo类的具体用法?Golang MasterInfo怎么用?Golang MasterInfo使用的例子?那么恭喜您, 这里精选的类代码示例或许可以为您提供帮助。
在下文中一共展示了MasterInfo类的15个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的Golang代码示例。
示例1: Registered
func (s *StackDeployScheduler) Registered(driver scheduler.SchedulerDriver, id *mesos.FrameworkID, master *mesos.MasterInfo) {
Logger.Info("[Registered] framework: %s master: %s:%d", id.GetValue(), master.GetHostname(), master.GetPort())
s.Storage.FrameworkID = id.GetValue()
s.Storage.Save()
s.driver = driver
}
示例2: MasterInfoToMesosHost
func MasterInfoToMesosHost(mi *proto.MasterInfo) *MesosHost {
if mi == nil {
return &MesosHost{
Host: "",
Ip: "",
Port: 0,
PortString: "",
IsLeader: false,
IsRegistered: false,
}
}
addr := mi.GetAddress()
if addr.GetHostname() != "" {
return &MesosHost{
Host: addr.GetHostname(),
Ip: addr.GetIp(),
Port: int(addr.GetPort()),
PortString: fmt.Sprintf("%d", addr.GetPort()),
IsLeader: false,
IsRegistered: false,
}
} else {
log.Debug("Using old protobuf format")
// Old protobuf format
return ProtoBufToMesosHost(mi)
}
}
示例3: MasterConnStr
func MasterConnStr(masterInfo *mesos.MasterInfo) string {
ip := make([]byte, 4)
native.PutUint32(ip, masterInfo.GetIp())
addr := net.IP(ip).To4().String()
port := masterInfo.GetPort()
return fmt.Sprintf("%s:%d", addr, port)
}
示例4: Registered
// Registered is called when the Scheduler is Registered
func (s *eremeticScheduler) Registered(driver sched.SchedulerDriver, frameworkID *mesos.FrameworkID, masterInfo *mesos.MasterInfo) {
log.Debugf("Framework %s registered with master %s", frameworkID.GetValue(), masterInfo.GetHostname())
if !s.initialised {
driver.ReconcileTasks([]*mesos.TaskStatus{})
s.initialised = true
} else {
s.Reconcile(driver)
}
}
示例5: Registered
func (s *Scheduler) Registered(driver scheduler.SchedulerDriver, id *mesos.FrameworkID, master *mesos.MasterInfo) {
Logger.Infof("[Registered] framework: %s master: %s:%d", id.GetValue(), master.GetHostname(), master.GetPort())
s.cluster.frameworkID = id.GetValue()
s.cluster.Save()
s.driver = driver
s.reconcileTasks(true)
}
示例6: Reregistered
// Reregistered is called when the Scheduler is Reregistered
func (s *Scheduler) Reregistered(driver mesossched.SchedulerDriver, masterInfo *mesosproto.MasterInfo) {
logrus.WithFields(logrus.Fields{
"master_id": masterInfo.GetId(),
"master": masterInfo.GetHostname(),
}).Debug("Framework re-registered with master.")
if !s.initialised {
driver.ReconcileTasks([]*mesosproto.TaskStatus{})
s.initialised = true
} else {
s.Reconcile(driver)
}
}
示例7: masterHostPort
func masterHostPort(info *mesos.MasterInfo) string {
host := info.GetHostname()
if host == "" {
// unpack IPv4
octets := make([]byte, 4)
binary.BigEndian.PutUint32(octets, info.GetIp())
ipv4 := net.IP(octets)
host = ipv4.String()
}
return net.JoinHostPort(host, masterPort(info))
}
示例8: masterAddr
// masterAddr returns an address (ip:port) from the given *mesos.MasterInfo or
// an empty string if it nil.
//
// BUG(tsenart): The byte order of the `ip` field in MasterInfo is platform
// dependent. We assume that Mesos is compiled with the same architecture as
// Mesos-DNS and hence same byte order. If this isn't the case, the address
// returned will be wrong. This only affects Mesos versions < 0.24.0
func masterAddr(info *mesos.MasterInfo) string {
if info == nil {
return ""
}
ip, port := "", int64(0)
if addr := info.GetAddress(); addr != nil { // Mesos >= 0.24.0
ip, port = addr.GetIp(), int64(addr.GetPort())
} else { // Mesos < 0.24.0
ipv4 := make([]byte, net.IPv4len)
byteOrder.PutUint32(ipv4, info.GetIp())
ip, port = net.IP(ipv4).String(), int64(info.GetPort())
}
return net.JoinHostPort(ip, strconv.FormatInt(port, 10))
}
示例9: onLeaderChange
func (d *ZkLeaderDetector) onLeaderChange(info *mesos.MasterInfo) {
if info == nil {
log.Errorln("No leader available in Zookeeper")
} else {
leader := ""
if host := info.GetHostname(); host != "" {
leader = host
} else {
// unpack IPv4
octets := make([]byte, 4, 4)
binary.BigEndian.PutUint32(octets, info.GetIp())
ipv4 := net.IP(octets)
leader = ipv4.String()
}
leader = fmt.Sprintf("%s:%d", leader, info.GetPort())
log.Infoln("New master in Zookeeper", leader)
d.newLeader <- &leader
}
}
示例10: hostFromMasterInfo
func (m *Mesos) hostFromMasterInfo(mi *mesosproto.MasterInfo) MesosHost {
var ipstring = ""
var port = ""
if mi != nil {
if host := mi.GetHostname(); host != "" {
ip, err := net.LookupIP(host)
if err != nil {
ipstring = host
} else {
for _, i := range ip {
four := i.To4()
if four != nil {
ipstring = i.String()
break
}
}
// If control reaches here there are no IPv4 addresses
// returned by net.LookupIP. Use the hostname as ipstring
//
ipstring = host
}
} else {
octets := make([]byte, 4, 4)
binary.BigEndian.PutUint32(octets, mi.GetIp())
ipv4 := net.IP(octets)
ipstring = ipv4.String()
}
}
if len(ipstring) > 0 {
port = fmt.Sprint(mi.GetPort())
}
return MesosHost{
host: ipstring,
port: port,
isLeader: false,
}
}
示例11: sync
func (u *mesosUpstream) sync() {
var syncing int32
syncing = atomic.AddInt32(&u.syncing, 1)
if syncing > 1 {
atomic.AddInt32(&u.syncing, -1)
u.syncWg.Wait()
return
}
u.syncWg.Add(1)
defer func() {
u.syncWg.Done()
atomic.AddInt32(&u.syncing, -1)
u.lastSync = time.Now()
}()
var state mesosState
var masterHosts []string
if path, err := url.Parse(u.mesosMaster); err == nil {
switch path.Scheme {
case "zk":
if path.Path == "" || path.Path == "/" {
log.Printf("[ERROR] no path specified for mesos zk lookup \"%s\"", u.mesosMaster)
return
}
zookeeperPath := path.Path
if zookeeperPath[0] != '/' {
zookeeperPath = "/" + zookeeperPath
}
if zoo, _, err := zk.Connect(strings.Split(path.Host, ","), 10*time.Second); err == nil {
defer zoo.Close()
if children, _, err := zoo.Children(zookeeperPath); err == nil {
sort.Strings(children)
for _, child := range children {
if strings.HasPrefix(child, "info_") {
if data, _, err := zoo.Get(zookeeperPath + "/" + child); err == nil {
masterInfo := new(mesosproto.MasterInfo)
if err := masterInfo.Unmarshal(data); err == nil {
masterHosts = []string{fmt.Sprintf("%s:%d", masterInfo.GetHostname(), masterInfo.GetPort())}
break
} else {
log.Printf("[ERROR] parsing mesos master from zookeeper. \"%s\"", err.Error())
return
}
} else {
log.Printf("[ERROR] getting mesos master from zookeeper. \"%s\"", err.Error())
return
}
}
}
} else {
log.Printf("[ERROR] getting mesos masters from zookeeper. \"%s\"", err.Error())
return
}
}
case "http", "https":
masterHosts = strings.Split(path.Host, ",")
default:
log.Printf("[ERROR] unknown scheme in parsing mesos master url \"%s\"", u.mesosMaster)
return
}
} else {
masterHosts = strings.Split(u.mesosMaster, ",")
}
if len(masterHosts) == 0 {
log.Printf("[ERROR] No reachable masters.")
return
}
var masterErr error
for _, host := range masterHosts {
if resp, err := http.Get("http://" + host + "/state.json"); err == nil {
defer resp.Body.Close()
if err := json.NewDecoder(resp.Body).Decode(&state); err == nil {
masterErr = nil
break
} else {
masterErr = err
}
} else {
masterErr = err
}
}
if masterErr != nil {
log.Printf("[ERROR] Failed to reach masters. \"%s\"", masterErr.Error())
return
}
if len(state.Frameworks) == 0 {
log.Println("[WARNING] No frameworks found running.")
return
}
hosts := make(proxy.HostPool, 0, 4)
for _, framework := range state.Frameworks {
if framework.Name == u.framework {
for _, task := range framework.Tasks {
if task.Name == u.taskName && task.State == "TASK_RUNNING" {
host := &proxy.UpstreamHost{
Name: task.SlaveId,
Conns: 0,
//.........这里部分代码省略.........
示例12: Reregistered
func (sched *testScheduler) Reregistered(dr SchedulerDriver, mi *mesos.MasterInfo) {
log.Infoln("Sched.Reregistered() called")
sched.s.Equal(mi.GetIp(), uint32(123456))
sched.ch <- true
}
示例13: Registered
func (sched *testScheduler) Registered(dr SchedulerDriver, fw *mesos.FrameworkID, mi *mesos.MasterInfo) {
log.Infoln("Sched.Registered() called.")
sched.s.Equal(fw.GetValue(), sched.s.registeredFrameworkId.GetValue(), "driver did not register the expected framework ID")
sched.s.Equal(mi.GetIp(), uint32(123456))
sched.ch <- true
}
示例14: validMasterInfo
func validMasterInfo(info *mesos.MasterInfo) bool {
return info.GetHostname() != "" || info.GetIp() != 0
}
示例15: masterString
func masterString(info *mesos.MasterInfo) string {
return fmt.Sprintf("Id %v Ip %v Hostname %v Port %v Version %v Pid %v",
info.GetId(), info.GetIp(), info.GetHostname(), info.GetPort(), info.GetVersion(), info.GetPid())
}