// Reregistered is called when the executor is successfully re-registered with the slave. // This can happen when the slave fails over. func (k *KubernetesExecutor) Reregistered(driver bindings.ExecutorDriver, slaveInfo *mesos.SlaveInfo) { if k.isDone() { return } log.Infof("Reregistered with slave %v\n", slaveInfo) if !(&k.state).transition(disconnectedState, connectedState) { log.Errorf("failed to reregister/transition to a connected state") } if slaveInfo != nil { _, err := node.CreateOrUpdate(k.client, slaveInfo.GetHostname(), node.SlaveAttributesToLabels(slaveInfo.Attributes)) if err != nil { log.Errorf("cannot update node labels: %v", err) } } if slaveInfo != nil && k.nodeInfos != nil { // make sure nodeInfos is not nil and send new NodeInfo k.lock.Lock() defer k.lock.Unlock() if k.isDone() { return } k.nodeInfos <- nodeInfo(slaveInfo, nil) } }
// Registered is called when the executor is successfully registered with the slave. func (k *KubernetesExecutor) Registered(driver bindings.ExecutorDriver, executorInfo *mesos.ExecutorInfo, frameworkInfo *mesos.FrameworkInfo, slaveInfo *mesos.SlaveInfo) { if k.isDone() { return } log.Infof("Executor %v of framework %v registered with slave %v\n", executorInfo, frameworkInfo, slaveInfo) if !(&k.state).transition(disconnectedState, connectedState) { log.Errorf("failed to register/transition to a connected state") } if executorInfo != nil && executorInfo.Data != nil { k.initializeStaticPodsSource(executorInfo.Data) } if slaveInfo != nil { _, err := node.CreateOrUpdate(k.client, slaveInfo.GetHostname(), node.SlaveAttributesToLabels(slaveInfo.Attributes)) if err != nil { log.Errorf("cannot update node labels: %v", err) } } // emit an empty update to allow the mesos "source" to be marked as seen k.lock.Lock() defer k.lock.Unlock() k.sendPodUpdate(&kubetypes.PodUpdate{ Pods: []*api.Pod{}, Op: kubetypes.SET, }) if slaveInfo != nil && k.nodeInfos != nil { k.nodeInfos <- nodeInfo(slaveInfo, executorInfo) // leave it behind the upper lock to avoid panics } }
// Registered is called when the executor is successfully registered with the slave. func (k *Executor) Registered( driver bindings.ExecutorDriver, executorInfo *mesos.ExecutorInfo, frameworkInfo *mesos.FrameworkInfo, slaveInfo *mesos.SlaveInfo, ) { if k.isDone() { return } log.Infof( "Executor %v of framework %v registered with slave %v\n", executorInfo, frameworkInfo, slaveInfo, ) if !(&k.state).transition(disconnectedState, connectedState) { log.Errorf("failed to register/transition to a connected state") } if executorInfo != nil && executorInfo.Data != nil { err := k.initializeStaticPodsSource(slaveInfo.GetHostname(), executorInfo.Data) if err != nil { log.Errorf("failed to initialize static pod configuration: %v", err) } } annotations, err := executorInfoToAnnotations(executorInfo) if err != nil { log.Errorf( "cannot get node annotations from executor info %v error %v", executorInfo, err, ) } if slaveInfo != nil { _, err := node.CreateOrUpdate( k.client, slaveInfo.GetHostname(), node.SlaveAttributesToLabels(slaveInfo.Attributes), annotations, ) if err != nil { log.Errorf("cannot update node labels: %v", err) } } // emit an empty update to allow the mesos "source" to be marked as seen k.lock.Lock() defer k.lock.Unlock() k.sendPodsSnapshot() if slaveInfo != nil && k.nodeInfos != nil { k.nodeInfos <- nodeInfo(slaveInfo, executorInfo) // leave it behind the upper lock to avoid panics } }
// Reregistered is called when the executor is successfully re-registered with the slave. // This can happen when the slave fails over. func (k *KubernetesExecutor) Reregistered(driver bindings.ExecutorDriver, slaveInfo *mesos.SlaveInfo) { if k.isDone() { return } log.Infof("Reregistered with slave %v\n", slaveInfo) if !(&k.state).transition(disconnectedState, connectedState) { log.Errorf("failed to reregister/transition to a connected state") } if slaveInfo != nil { _, err := node.CreateOrUpdate(k.client, slaveInfo.GetHostname(), node.SlaveAttributesToLabels(slaveInfo.Attributes)) if err != nil { log.Errorf("cannot update node labels: %v", err) } } k.initialRegistration.Do(k.onInitialRegistration) }
func (cw *clientAPIWrapper) createOrUpdate(hostname string, slaveAttrLabels, annotations map[string]string) (*api.Node, error) { return node.CreateOrUpdate(cw.client, hostname, slaveAttrLabels, annotations) }