From 1c2adda8e9385bddd87f981c7059a45ac39af929 Mon Sep 17 00:00:00 2001 From: Linh Vo Date: Mon, 12 Jun 2017 16:23:40 -0500 Subject: [PATCH] create frames with input-definition's creation --- handler.go | 22 +++++++++------------- index.go | 17 +++++++++-------- input_definition.go | 3 +++ 3 files changed, 21 insertions(+), 21 deletions(-) diff --git a/handler.go b/handler.go index 38c5f9080..c183f70a4 100644 --- a/handler.go +++ b/handler.go @@ -1507,10 +1507,7 @@ func (h *Handler) handlePostDefinition(w http.ResponseWriter, r *http.Request) { // Decode request. var req postInputDefinition err := json.NewDecoder(r.Body).Decode(&req) - if err == io.EOF { - // If no data was provided (EOF), we still create the frame - // with default values. - } else if err != nil { + if err != nil { http.Error(w, err.Error(), http.StatusBadRequest) return } @@ -1532,15 +1529,14 @@ func (h *Handler) handlePostDefinition(w http.ResponseWriter, r *http.Request) { return } - //err = h.Broadcaster.SendSync( - // &internal.CreateInputDefinitionMessage{ - // Index: indexName, - // InputDefinition: inputDefName, - // Meta: req.Options.Encode(), - // }) - //if err != nil { - // h.logger().Printf("problem sending CreateFrame message: %s", err) - //} + err = h.Broadcaster.SendSync( + &internal.CreateInputDefinitionMessage{ + Index: indexName, + InputDefinition: inputDefName, + }) + if err != nil { + h.logger().Printf("problem sending CreateInputDefinition message: %s", err) + } } func (h *Handler) handleGetDefinition(w http.ResponseWriter, r *http.Request) { diff --git a/index.go b/index.go index fb6463997..12bd5f30f 100644 --- a/index.go +++ b/index.go @@ -414,8 +414,6 @@ func (i *Index) CreateFrame(name string, opt FrameOptions) (*Frame, error) { // CreateInputDefinition creates a new input definition. func (i *Index) CreateInputDefinition(name string, frames []InputFrame, field []Field) (*InputDefinition, error) { - i.mu.Lock() - defer i.mu.Unlock() // Ensure input definition doesn't already exist. if i.inputDefinitions[name] != nil { @@ -431,16 +429,20 @@ func (i *Index) createInputDefinition(name string, frames []InputFrame, fields [ return nil, errors.New("frames and fields are required") } + for _, fr := range frames { + _, err := i.CreateFrame(fr.Name, fr.Options) + if err == ErrFrameExists { + continue + } else if err != nil { + return nil, err + } + } + // Initialize input definition. inputDef, err := i.newInputDefinition(i.InputDefPath(), name) - fmt.Println(inputDef) if err != nil { return nil, err } - // Open input definition. - if err := inputDef.Open(); err != nil { - return nil, err - } inputDef.frames = frames inputDef.fields = fields @@ -448,7 +450,6 @@ func (i *Index) createInputDefinition(name string, frames []InputFrame, fields [ return nil, err } i.inputDefinitions[name] = inputDef - fmt.Printf("%+v\n", i.inputDefinitions[name]) return inputDef, nil } diff --git a/input_definition.go b/input_definition.go index d0651aede..f194a0745 100644 --- a/input_definition.go +++ b/input_definition.go @@ -105,6 +105,9 @@ func (i *InputDefinition) loadMeta() error { //saveMeta writes meta data for the input definition file. func (i *InputDefinition) saveMeta() error { + if err := os.MkdirAll(i.path, 0777); err != nil { + return err + } // Marshal metadata. var frames []*internal.Frame for _, fr := range i.frames {