Skip to content
Snippets Groups Projects
Commit df4ee7ff authored by Sybren A. Stüvel's avatar Sybren A. Stüvel
Browse files

Separate structs for worker registration & storage.

parent 3b7e75c9
No related branches found
No related tags found
No related merge requests found
......@@ -29,15 +29,20 @@ type Task struct {
Worker string `bson:"worker,omitempty" json:"worker,omitempty"`
}
type WorkerRegistration struct {
Secret string `json:"secret"`
Platform string `bson:"platform" json:"platform"`
SupportedJobTypes []string `json:"supported_job_types"`
}
type Worker struct {
Id bson.ObjectId `bson:"_id,omitempty" json:"_id,omitempty"`
Secret string `bson:"-" json:"secret"`
Secret string `bson:"-" json:"-"`
HashedSecret []byte `bson:"hashed_secret" json:"-"`
Address string `bson:"address" json:"address"`
Status string `bson:"status" json:"status"`
Platform string `bson:"platform" json:"platform"`
CurrentTask bson.ObjectId `bson:"current_task,omitempty" json:"current_task,omitempty"`
Log string `bson:"log,omitempty" json:"log,omitempty"`
TimeCost int `bson:"time_cost" json:"time_cost"`
LastActivity time.Time `bson:"last_activity" json:"last_activity"`
SupportedJobTypes []string `bson:"supported_job_types" json:"supported_job_types"`
......
......@@ -18,7 +18,7 @@ func RegisterWorker(w http.ResponseWriter, r *http.Request, db *mgo.Database) {
log.Println(r.RemoteAddr, "Worker registering")
// Parse the given worker information.
winfo := Worker{}
winfo := WorkerRegistration{}
decoder := json.NewDecoder(r.Body)
defer r.Body.Close()
......@@ -28,7 +28,11 @@ func RegisterWorker(w http.ResponseWriter, r *http.Request, db *mgo.Database) {
}
// Store it in MongoDB after hashing the password and assigning an ID.
if err = StoreWorker(&winfo, db); err != nil {
worker := Worker{}
worker.Secret = winfo.Secret
worker.Platform = winfo.Platform
worker.SupportedJobTypes = winfo.SupportedJobTypes
if err = StoreWorker(&worker, db); err != nil {
log.Println(r.RemoteAddr, "Unable to store worker:", err)
w.WriteHeader(500)
......@@ -40,7 +44,7 @@ func RegisterWorker(w http.ResponseWriter, r *http.Request, db *mgo.Database) {
w.Header().Set("Content-Type", "application/json")
encoder := json.NewEncoder(w)
encoder.Encode(winfo)
encoder.Encode(worker)
}
func StoreWorker(winfo *Worker, db *mgo.Database) error {
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment