func (e *Engine) OfferJob(j job.Job) error { log.V(1).Infof("Attempting to lock Job(%s)", j.Name) mutex := e.registry.LockJob(j.Name, e.machine.State().ID) if mutex == nil { log.V(1).Infof("Could not lock Job(%s)", j.Name) return errors.New("Could not lock Job") } defer mutex.Unlock() log.V(1).Infof("Claimed Job(%s)", j.Name) machineIDs, err := e.partitionCluster(&j) if err != nil { log.Errorf("Failed partitioning cluster for Job(%s): %v", j.Name, err) return err } offer := job.NewOfferFromJob(j, machineIDs) err = e.registry.CreateJobOffer(offer) if err == nil { log.Infof("Published JobOffer(%s)", offer.Job.Name) } return err }
func (self *Engine) OfferJob(j job.Job) error { log.V(2).Infof("Attempting to lock Job(%s)", j.Name) mutex := self.lockJob(j.Name) if mutex == nil { log.V(1).Infof("Could not lock Job(%s)", j.Name) return errors.New("Could not lock Job") } defer mutex.Unlock() log.V(1).Infof("Claimed Job", j.Name) machineBootIds, err := self.partitionCluster(&j) if err != nil { log.Errorf("Failed partitioning cluster for Job(%s): %v", j.Name, err) return err } offer := job.NewOfferFromJob(j, machineBootIds) log.V(2).Infof("Publishing JobOffer(%s)", offer.Job.Name) self.registry.CreateJobOffer(offer) log.Infof("Published JobOffer(%s)", offer.Job.Name) return nil }
// Inform the Registry that a Job must be rescheduled func (a *Agent) RescheduleJob(j *job.Job) { log.V(2).Infof("Stopping Job(%s)", j.Name) a.registry.UnscheduleJob(j.Name) offer := job.NewOfferFromJob(*j) log.V(2).Infof("Publishing JobOffer(%s)", offer.Job.Name) a.registry.CreateJobOffer(offer) log.Infof("Published JobOffer(%s)", offer.Job.Name) }
// Inform the Registry that a Job must be rescheduled func (a *Agent) RescheduleJob(j *job.Job) { log.V(2).Infof("Stopping Job(%s)", j.Name) a.registry.UnscheduleJob(j.Name) // TODO(uwedeportivo): agent placing offer ? offer := job.NewOfferFromJob(*j, nil) log.V(2).Infof("Publishing JobOffer(%s)", offer.Job.Name) a.registry.CreateJobOffer(offer) log.Infof("Published JobOffer(%s)", offer.Job.Name) }
func (e *Engine) offerJob(j *job.Job) (err error) { offer := job.NewOfferFromJob(*j) err = e.registry.CreateJobOffer(offer) if err != nil { log.Errorf("Failed publishing JobOffer(%s): %v", j.Name, err) } else { log.Infof("Published JobOffer(%s)", j.Name) } return }
// Clear any presence data from the Registry func (a *Agent) Purge() { log.V(1).Info("Removing Agent from Registry") bootId := a.machine.State().BootId err := a.registry.RemoveMachineState(bootId) if err != nil { log.Errorf("Failed to remove Machine %s from Registry: %s", bootId, err.Error()) } for _, j := range a.registry.GetAllJobsByMachine(bootId) { log.V(1).Infof("Clearing JobState(%s) from Registry", j.Name) a.registry.RemoveJobState(j.Name) offer := job.NewOfferFromJob(j) log.V(2).Infof("Publishing JobOffer(%s)", offer.Job.Name) a.registry.CreateJobOffer(offer) log.Infof("Published JobOffer(%s)", offer.Job.Name) } }
// Clear any presence data from the Registry func (a *Agent) Purge() { log.V(1).Info("Removing Agent from Registry") bootID := a.machine.State().BootID err := a.registry.RemoveMachineState(bootID) if err != nil { log.Errorf("Failed to remove Machine %s from Registry: %s", bootID, err.Error()) } for _, j := range a.registry.GetAllJobsByMachine(bootID) { a.VerifyJob(&j) log.V(1).Infof("Clearing JobState(%s) from Registry", j.Name) a.registry.RemoveJobState(j.Name) // TODO(uwedeportivo): agent placing offer ? offer := job.NewOfferFromJob(j, nil) log.V(2).Infof("Publishing JobOffer(%s)", offer.Job.Name) a.registry.CreateJobOffer(offer) log.Infof("Published JobOffer(%s)", offer.Job.Name) } }