111 lines
4.9 KiB
Go
111 lines
4.9 KiB
Go
package http
|
|
|
|
import (
|
|
"github.com/influxdata/httprouter"
|
|
"github.com/influxdata/influxdb"
|
|
"github.com/influxdata/influxdb/chronograf/server"
|
|
)
|
|
|
|
const prefixChronograf = "/chronograf"
|
|
|
|
// ChronografHandler is an http handler for serving chronograf chronografs.
|
|
type ChronografHandler struct {
|
|
*httprouter.Router
|
|
Service *server.Service
|
|
}
|
|
|
|
// NewChronografHandler is the constructor an chronograf handler.
|
|
func NewChronografHandler(s *server.Service, he influxdb.HTTPErrorHandler) *ChronografHandler {
|
|
h := &ChronografHandler{
|
|
Router: NewRouter(he),
|
|
Service: s,
|
|
}
|
|
/* API */
|
|
// Organizations
|
|
h.HandlerFunc("GET", "/chronograf/v1/organizations", h.Service.Organizations)
|
|
h.HandlerFunc("POST", "/chronograf/v1/organizations", h.Service.NewOrganization)
|
|
|
|
h.HandlerFunc("GET", "/chronograf/v1/organizations/:oid", h.Service.OrganizationID)
|
|
h.HandlerFunc("PATCH", "/chronograf/v1/organizations/:oid", h.Service.UpdateOrganization)
|
|
h.HandlerFunc("DELETE", "/chronograf/v1/organizations/:oid", h.Service.RemoveOrganization)
|
|
|
|
// Mappings
|
|
h.HandlerFunc("GET", "/chronograf/v1/mappings", h.Service.Mappings)
|
|
h.HandlerFunc("POST", "/chronograf/v1/mappings", h.Service.NewMapping)
|
|
|
|
h.HandlerFunc("PUT", "/chronograf/v1/mappings/:id", h.Service.UpdateMapping)
|
|
h.HandlerFunc("DELETE", "/chronograf/v1/mappings/:id", h.Service.RemoveMapping)
|
|
|
|
// Layouts
|
|
h.HandlerFunc("GET", "/chronograf/v1/layouts", h.Service.Layouts)
|
|
h.HandlerFunc("GET", "/chronograf/v1/layouts/:id", h.Service.LayoutsID)
|
|
|
|
// Users associated with Chronograf
|
|
h.HandlerFunc("GET", "/chronograf/v1/me", h.Service.Me)
|
|
|
|
// TODO(desa): what to do here?
|
|
// Set current chronograf organization the user is logged into
|
|
//h.HandlerFunc("PUT", "/chronograf/v1/me", h.Service.UpdateMe(opts.Auth))
|
|
|
|
// TODO(desa): what to do about admin's being able to set superadmin
|
|
h.HandlerFunc("GET", "/chronograf/v1/organizations/:oid/users", h.Service.Users)
|
|
h.HandlerFunc("POST", "/chronograf/v1/organizations/:oid/users", h.Service.NewUser)
|
|
|
|
h.HandlerFunc("GET", "/chronograf/v1/organizations/:oid/users/:id", h.Service.UserID)
|
|
h.HandlerFunc("DELETE", "/chronograf/v1/organizations/:oid/users/:id", h.Service.RemoveUser)
|
|
h.HandlerFunc("PATCH", "/chronograf/v1/organizations/:oid/users/:id", h.Service.UpdateUser)
|
|
|
|
h.HandlerFunc("GET", "/chronograf/v1/users", h.Service.Users)
|
|
h.HandlerFunc("POST", "/chronograf/v1/users", h.Service.NewUser)
|
|
|
|
h.HandlerFunc("GET", "/chronograf/v1/users/:id", h.Service.UserID)
|
|
h.HandlerFunc("DELETE", "/chronograf/v1/users/:id", h.Service.RemoveUser)
|
|
h.HandlerFunc("PATCH", "/chronograf/v1/users/:id", h.Service.UpdateUser)
|
|
|
|
// Dashboards
|
|
h.HandlerFunc("GET", "/chronograf/v1/dashboards", h.Service.Dashboards)
|
|
h.HandlerFunc("POST", "/chronograf/v1/dashboards", h.Service.NewDashboard)
|
|
|
|
h.HandlerFunc("GET", "/chronograf/v1/dashboards/:id", h.Service.DashboardID)
|
|
h.HandlerFunc("DELETE", "/chronograf/v1/dashboards/:id", h.Service.RemoveDashboard)
|
|
h.HandlerFunc("PUT", "/chronograf/v1/dashboards/:id", h.Service.ReplaceDashboard)
|
|
h.HandlerFunc("PATCH", "/chronograf/v1/dashboards/:id", h.Service.UpdateDashboard)
|
|
// Dashboard Cells
|
|
h.HandlerFunc("GET", "/chronograf/v1/dashboards/:id/cells", h.Service.DashboardCells)
|
|
h.HandlerFunc("POST", "/chronograf/v1/dashboards/:id/cells", h.Service.NewDashboardCell)
|
|
|
|
h.HandlerFunc("GET", "/chronograf/v1/dashboards/:id/cells/:cid", h.Service.DashboardCellID)
|
|
h.HandlerFunc("DELETE", "/chronograf/v1/dashboards/:id/cells/:cid", h.Service.RemoveDashboardCell)
|
|
h.HandlerFunc("PUT", "/chronograf/v1/dashboards/:id/cells/:cid", h.Service.ReplaceDashboardCell)
|
|
// Dashboard Templates
|
|
h.HandlerFunc("GET", "/chronograf/v1/dashboards/:id/templates", h.Service.Templates)
|
|
h.HandlerFunc("POST", "/chronograf/v1/dashboards/:id/templates", h.Service.NewTemplate)
|
|
|
|
h.HandlerFunc("GET", "/chronograf/v1/dashboards/:id/templates/:tid", h.Service.TemplateID)
|
|
h.HandlerFunc("DELETE", "/chronograf/v1/dashboards/:id/templates/:tid", h.Service.RemoveTemplate)
|
|
h.HandlerFunc("PUT", "/chronograf/v1/dashboards/:id/templates/:tid", h.Service.ReplaceTemplate)
|
|
|
|
// Global application config for Chronograf
|
|
h.HandlerFunc("GET", "/chronograf/v1/config", h.Service.Config)
|
|
h.HandlerFunc("GET", "/chronograf/v1/config/auth", h.Service.AuthConfig)
|
|
h.HandlerFunc("PUT", "/chronograf/v1/config/auth", h.Service.ReplaceAuthConfig)
|
|
|
|
// Organization config settings for Chronograf
|
|
h.HandlerFunc("GET", "/chronograf/v1/org_config", h.Service.OrganizationConfig)
|
|
h.HandlerFunc("GET", "/chronograf/v1/org_config/logviewer", h.Service.OrganizationLogViewerConfig)
|
|
h.HandlerFunc("PUT", "/chronograf/v1/org_config/logviewer", h.Service.ReplaceOrganizationLogViewerConfig)
|
|
|
|
h.HandlerFunc("GET", "/chronograf/v1/env", h.Service.Environment)
|
|
|
|
allRoutes := &server.AllRoutes{
|
|
// TODO(desa): what to do here
|
|
//logger: opts.logger,
|
|
//CustomLinks: opts.CustomLinks,
|
|
StatusFeed: "https://www.influxdata.com/feed/json",
|
|
}
|
|
|
|
h.Handler("GET", "/chronograf/v1/", allRoutes)
|
|
|
|
return h
|
|
}
|