feat: start using the new org handler from the tenant service. (#18371)
* feat: start using the new org handler from the tenant service. The rest of the tenant system is in place except the org http api handler and the user api handler. * fix: update the label service in org handler and add linkspull/18562/head
parent
3af909b611
commit
009b8ec98f
|
@ -46,6 +46,7 @@ import (
|
|||
"github.com/influxdata/influxdb/v2/query/control"
|
||||
"github.com/influxdata/influxdb/v2/query/fluxlang"
|
||||
"github.com/influxdata/influxdb/v2/query/stdlib/influxdata/influxdb"
|
||||
"github.com/influxdata/influxdb/v2/secret"
|
||||
"github.com/influxdata/influxdb/v2/session"
|
||||
"github.com/influxdata/influxdb/v2/snowflake"
|
||||
"github.com/influxdata/influxdb/v2/source"
|
||||
|
@ -594,7 +595,6 @@ func (m *Launcher) run(ctx context.Context) (err error) {
|
|||
orgLogSvc platform.OrganizationOperationLogService = m.kvService
|
||||
scraperTargetSvc platform.ScraperTargetStoreService = m.kvService
|
||||
telegrafSvc platform.TelegrafConfigStore = m.kvService
|
||||
secretSvc platform.SecretService = m.kvService
|
||||
lookupSvc platform.LookupService = m.kvService
|
||||
notificationEndpointStore platform.NotificationEndpointService = m.kvService
|
||||
)
|
||||
|
@ -614,6 +614,14 @@ func (m *Launcher) run(ctx context.Context) (err error) {
|
|||
passwdsSvc platform.PasswordsService = tenant.NewPasswordLogger(m.log.With(zap.String("store", "new")), tenant.NewPasswordMetrics(m.reg, ts, metric.WithSuffix("new")))
|
||||
)
|
||||
|
||||
secretStore, err := secret.NewStore(m.kvStore)
|
||||
if err != nil {
|
||||
m.log.Error("Failed creating new meta store", zap.Error(err))
|
||||
return err
|
||||
}
|
||||
|
||||
var secretSvc platform.SecretService = secret.NewMetricService(m.reg, secret.NewLogger(m.log.With(zap.String("service", "secret")), secret.NewService(secretStore)))
|
||||
|
||||
switch m.secretStore {
|
||||
case "bolt":
|
||||
// If it is bolt, then we already set it above.
|
||||
|
@ -983,18 +991,17 @@ func (m *Launcher) run(ctx context.Context) (err error) {
|
|||
}
|
||||
|
||||
// feature flagging for new labels service
|
||||
var labelsHTTPServer *kithttp.FeatureHandler
|
||||
var oldLabelHandler nethttp.Handler
|
||||
var labelHandler *label.LabelHandler
|
||||
{
|
||||
b := m.apibackend
|
||||
labelSvcWithOrg := authorizer.NewLabelServiceWithOrg(labelSvc, b.OrgLookupService)
|
||||
oldHandler := http.NewLabelHandler(m.log.With(zap.String("handler", "labels")), labelSvcWithOrg, kithttp.ErrorHandler(0))
|
||||
oldLabelHandler = http.NewLabelHandler(m.log.With(zap.String("handler", "labels")), labelSvcWithOrg, kithttp.ErrorHandler(0))
|
||||
|
||||
labelSvc = label.NewAuthedLabelService(labelSvc, b.OrgLookupService)
|
||||
labelSvc = label.NewLabelLogger(m.log.With(zap.String("handler", "labels")), labelSvc)
|
||||
labelSvc = label.NewLabelMetrics(m.reg, labelSvc)
|
||||
newHandler := label.NewHTTPLabelHandler(m.log, labelSvc)
|
||||
|
||||
labelsHTTPServer = kithttp.NewFeatureHandler(feature.NewLabelPackage(), m.flagger, oldHandler, newHandler, newHandler.Prefix())
|
||||
labelHandler = label.NewHTTPLabelHandler(m.log, labelSvc)
|
||||
}
|
||||
|
||||
// feature flagging for new authorization service
|
||||
|
@ -1028,16 +1035,24 @@ func (m *Launcher) run(ctx context.Context) (err error) {
|
|||
sessionHTTPServer = session.NewSessionHandler(m.log.With(zap.String("handler", "session")), sessionSvc, userSvc, passwdsSvc)
|
||||
}
|
||||
|
||||
var orgHTTPServer *tenant.OrgHandler
|
||||
{
|
||||
secretHandler := secret.NewHandler(m.log, "id", secret.NewAuthedService(secretSvc))
|
||||
urmHandler := tenant.NewURMHandler(m.log.With(zap.String("handler", "urm")), platform.OrgsResourceType, "id", userSvc, tenant.NewAuthedURMService(orgSvc, userResourceSvc))
|
||||
orgHTTPServer = tenant.NewHTTPOrgHandler(m.log.With(zap.String("handler", "org")), orgSvc, urmHandler, labelHandler, secretHandler)
|
||||
}
|
||||
|
||||
{
|
||||
platformHandler := http.NewPlatformHandler(m.apibackend,
|
||||
http.WithResourceHandler(pkgHTTPServer),
|
||||
http.WithResourceHandler(onboardHTTPServer),
|
||||
http.WithResourceHandler(authHTTPServer),
|
||||
http.WithResourceHandler(labelsHTTPServer),
|
||||
http.WithResourceHandler(kithttp.NewFeatureHandler(feature.NewLabelPackage(), m.flagger, oldLabelHandler, labelHandler, labelHandler.Prefix())),
|
||||
http.WithResourceHandler(kithttp.NewFeatureHandler(feature.SessionService(), m.flagger, oldSessionHandler, sessionHTTPServer.SignInResourceHandler(), sessionHTTPServer.SignInResourceHandler().Prefix())),
|
||||
http.WithResourceHandler(kithttp.NewFeatureHandler(feature.SessionService(), m.flagger, oldSessionHandler, sessionHTTPServer.SignOutResourceHandler(), sessionHTTPServer.SignOutResourceHandler().Prefix())),
|
||||
http.WithResourceHandler(userHTTPServer.MeResourceHandler()),
|
||||
http.WithResourceHandler(userHTTPServer.UserResourceHandler()),
|
||||
http.WithResourceHandler(orgHTTPServer),
|
||||
)
|
||||
|
||||
httpLogger := m.log.With(zap.String("service", "http"))
|
||||
|
|
|
@ -164,11 +164,6 @@ func NewAPIHandler(b *APIBackend, opts ...APIHandlerOptFn) *APIHandler {
|
|||
b.UserResourceMappingService, b.OrganizationService)
|
||||
h.Mount(prefixNotificationRules, NewNotificationRuleHandler(b.Logger, notificationRuleBackend))
|
||||
|
||||
orgBackend := NewOrgBackend(b.Logger.With(zap.String("handler", "org")), b)
|
||||
orgBackend.OrganizationService = authorizer.NewOrgService(b.OrganizationService)
|
||||
orgBackend.SecretService = authorizer.NewSecretService(b.SecretService)
|
||||
h.Mount(prefixOrganizations, NewOrgHandler(b.Logger, orgBackend))
|
||||
|
||||
scraperBackend := NewScraperBackend(b.Logger.With(zap.String("handler", "scraper")), b)
|
||||
scraperBackend.ScraperStorageService = authorizer.NewScraperTargetStoreService(b.ScraperTargetStoreService,
|
||||
b.UserResourceMappingService,
|
||||
|
|
|
@ -60,7 +60,6 @@ func NewHTTPOrgHandler(log *zap.Logger, orgService influxdb.OrganizationService,
|
|||
mountableRouter.Mount("/secrets", secretHandler)
|
||||
})
|
||||
})
|
||||
|
||||
svr.Router = r
|
||||
return svr
|
||||
}
|
||||
|
@ -72,6 +71,17 @@ type orgResponse struct {
|
|||
|
||||
func newOrgResponse(o influxdb.Organization) orgResponse {
|
||||
return orgResponse{
|
||||
Links: map[string]string{
|
||||
"self": fmt.Sprintf("/api/v2/orgs/%s", o.ID),
|
||||
"logs": fmt.Sprintf("/api/v2/orgs/%s/logs", o.ID),
|
||||
"members": fmt.Sprintf("/api/v2/orgs/%s/members", o.ID),
|
||||
"owners": fmt.Sprintf("/api/v2/orgs/%s/owners", o.ID),
|
||||
"secrets": fmt.Sprintf("/api/v2/orgs/%s/secrets", o.ID),
|
||||
"labels": fmt.Sprintf("/api/v2/orgs/%s/labels", o.ID),
|
||||
"buckets": fmt.Sprintf("/api/v2/buckets?org=%s", o.Name),
|
||||
"tasks": fmt.Sprintf("/api/v2/tasks?org=%s", o.Name),
|
||||
"dashboards": fmt.Sprintf("/api/v2/dashboards?org=%s", o.Name),
|
||||
},
|
||||
Organization: o,
|
||||
}
|
||||
}
|
||||
|
@ -83,6 +93,9 @@ type orgsResponse struct {
|
|||
|
||||
func newOrgsResponse(orgs []*influxdb.Organization) *orgsResponse {
|
||||
res := orgsResponse{
|
||||
Links: map[string]string{
|
||||
"self": "/api/v2/orgs",
|
||||
},
|
||||
Organizations: []orgResponse{},
|
||||
}
|
||||
for _, org := range orgs {
|
||||
|
|
Loading…
Reference in New Issue