api: instroduce /add_schema
diff --git a/appmanager/cmd/main.go b/appmanager/cmd/main.go
index 79658a1..5fa297f 100644
--- a/appmanager/cmd/main.go
+++ b/appmanager/cmd/main.go
@@ -8,12 +8,13 @@
"net/http"
"os"
- // "github.com/golang/glog"
+ "github.com/golang/glog"
app "github.com/giolekva/pcloud/appmanager"
)
var port = flag.Int("port", 1234, "Port to listen on.")
+var apiAddr = flag.String("api_addr", "", "PCloud API service address.")
var helmUploadPage = `
<html>
@@ -68,11 +69,11 @@
if err != nil {
return err
}
- // err = app.InstallSchema(h.Schema, "http://localhost:1111/add_schema")
- // if err != nil {
- // return err
- // }
- // glog.Infof("Installed schema: %s", h.Schema)
+ err = app.InstallSchema(h.Schema, *apiAddr)
+ if err != nil {
+ return err
+ }
+ glog.Infof("Installed schema: %s", h.Schema)
err = h.Install(
"/usr/local/bin/helm",
map[string]string{})
diff --git a/controller/controller b/controller/controller
deleted file mode 100755
index f2995db..0000000
--- a/controller/controller
+++ /dev/null
Binary files differ
diff --git a/controller/main.go b/controller/main.go
index 2bba060..9c3cd4b 100644
--- a/controller/main.go
+++ b/controller/main.go
@@ -58,7 +58,7 @@
}
}
-func (a *ApiHandler) graphqlHandler(w http.ResponseWriter, r *http.Request) {
+func (a *ApiHandler) graphql(w http.ResponseWriter, r *http.Request) {
glog.Infof("New GraphQL query received: %s", r.Method)
q, err := extractQuery(r)
if err != nil {
@@ -75,6 +75,23 @@
w.Header().Set("Content-Type", "application/json")
}
+func (a *ApiHandler) addSchema(w http.ResponseWriter, r *http.Request) {
+ if r.Method != "POST" {
+ http.Error(w, "Only POST requests are accepted in /add_schema", http.StatusBadRequest)
+ return
+ }
+ body, err := ioutil.ReadAll(r.Body)
+ if err != nil {
+ http.Error(w, "Could not read request", http.StatusInternalServerError)
+ return
+ }
+ err = a.gql.AddSchema(string(body))
+ if err != nil {
+ http.Error(w, err.Error(), http.StatusPreconditionFailed)
+ return
+ }
+}
+
func main() {
flag.Parse()
@@ -116,6 +133,7 @@
panic(err)
}
api := ApiHandler{gqlClient}
- http.HandleFunc("/graphql", api.graphqlHandler)
+ http.HandleFunc("/graphql", api.graphql)
+ http.HandleFunc("/add_schema", api.addSchema)
log.Fatal(http.ListenAndServe(fmt.Sprintf(":%d", *port), nil))
}
diff --git a/controller/schema/dgraph_schema_store.go b/controller/schema/dgraph_schema_store.go
index 1680af0..f958af6 100644
--- a/controller/schema/dgraph_schema_store.go
+++ b/controller/schema/dgraph_schema_store.go
@@ -175,6 +175,9 @@
if shouldIgnoreDefinition(t) {
continue
}
+ if _, ok := parsed.Types[t.Name+"Event"]; ok {
+ continue
+ }
_, err := fmt.Fprintf(&extended, eventTmpl, t.Name, t.Name, t.Name, t.Name)
if err != nil {
return "", err