AlertingNG: base API implementation (#31824)
* AlertingNG: base API implementation * Pass the interface instead of the base impl * Ruler mock draft (WIP) * Update alerting-api dependency * Improve mock implementation
This commit is contained in:
@@ -0,0 +1,26 @@
|
||||
.DEFAULT_GOAL := all
|
||||
|
||||
swagger-codegen-api:
|
||||
swagger-codegen generate -v \
|
||||
-i https://grafana.github.io/alerting-api/post.json \
|
||||
-l go-server \
|
||||
-Dapis \
|
||||
-o ../ \
|
||||
--additional-properties packageName=api \
|
||||
-t ./templates \
|
||||
# --import-mappings eval.RelativeTimeRange="github.com/grafana/grafana/pkg/services/ngalert/eval" \
|
||||
# --type-mappings RelativeTimeRange=eval.RelativeTimeRange
|
||||
|
||||
copy-files:
|
||||
python move-and-rename.py
|
||||
|
||||
fix:
|
||||
sed -i -e 's/apimodels\.\[\]PostableAlert/apimodels.PostableAlerts/' ../go/*.go
|
||||
sed -i -e 's/apimodels\.\[\]UpdateDashboardAclCommand/apimodels.Permissions/' ../go/*.go
|
||||
goimports -w -v ../go/*.go
|
||||
rm ../go/*.go-e
|
||||
|
||||
clean:
|
||||
rm -rf ../go
|
||||
|
||||
all: swagger-codegen-api fix copy-files clean
|
||||
@@ -0,0 +1,7 @@
|
||||
import os
|
||||
path = '../go'
|
||||
files = os.listdir(path)
|
||||
dest_dir = "../"
|
||||
|
||||
for index, file in enumerate(files):
|
||||
os.rename(os.path.join(path, file), os.path.join(dest_dir, ''.join([file.split('.')[0], '_base.go'])))
|
||||
@@ -0,0 +1,38 @@
|
||||
{{>partial_header}}
|
||||
package {{packageName}}
|
||||
|
||||
{{#operations}}
|
||||
import (
|
||||
"net/http"
|
||||
|
||||
"github.com/go-macaron/binding"
|
||||
"github.com/grafana/grafana/pkg/api/routing"
|
||||
"github.com/grafana/grafana/pkg/api/response"
|
||||
"github.com/grafana/grafana/pkg/models"
|
||||
"github.com/grafana/grafana/pkg/infra/log"
|
||||
apimodels "github.com/grafana/alerting-api/pkg/api"
|
||||
)
|
||||
|
||||
type {{classname}}Service interface { {{#operation}}
|
||||
{{nickname}}(*models.ReqContext{{#bodyParams}}, apimodels.{{dataType}}{{/bodyParams}}) response.Response{{/operation}}
|
||||
}
|
||||
|
||||
type {{classname}}Base struct {
|
||||
log log.Logger
|
||||
}
|
||||
|
||||
func (api *API) Register{{classname}}Endpoints(srv {{classname}}Service) {
|
||||
api.RouteRegister.Group("", func(group routing.RouteRegister){ {{#operations}}{{#operation}}
|
||||
group.{{httpMethod}}(toMacaronPath("{{{path}}}"){{#bodyParams}}, binding.Bind(apimodels.{{dataType}}{}){{/bodyParams}}, routing.Wrap(srv.{{nickname}})){{/operation}}{{/operations}}
|
||||
})
|
||||
}{{#operation}}
|
||||
|
||||
|
||||
func (base {{classname}}Base) {{nickname}}(c *models.ReqContext{{#bodyParams}}, {{paramName}} apimodels.{{dataType}}{{/bodyParams}}) response.Response { {{#pathParams}}
|
||||
{{paramName}} := c.Params(":{{baseName}}")
|
||||
base.log.Info("{{nickname}}: ", "{{baseName}}", {{paramName}}){{/pathParams}}{{#bodyParams}}
|
||||
base.log.Info("{{nickname}}: ", "{{baseName}}", {{paramName}}){{/bodyParams}}
|
||||
return response.Error(http.StatusNotImplemented, "", nil)
|
||||
}{{/operation}}{{/operations}}
|
||||
|
||||
|
||||
@@ -0,0 +1,6 @@
|
||||
/*Package api contains base API implementation of unified alerting
|
||||
*
|
||||
* Generated by: Swagger Codegen (https://github.com/swagger-api/swagger-codegen.git)
|
||||
*
|
||||
* Need to remove unused imports.
|
||||
*/
|
||||
Reference in New Issue
Block a user