Skip to content

Commit d7643c3

Browse files
Nexucisonprem
andcommitted
fix bucket display
Signed-off-by: Augustin Husson <[email protected]> Co-authored-by: Prem Saraswat <[email protected]>
1 parent 991cf2e commit d7643c3

16 files changed

+85
-85
lines changed

cmd/thanos/compact.go

+2-2
Original file line numberDiff line numberDiff line change
@@ -481,10 +481,10 @@ func runCompact(
481481
r := route.New()
482482

483483
ins := extpromhttp.NewInstrumentationMiddleware(reg, nil)
484-
compactorView.Register(r, ins)
484+
compactorView.Register(r, true, ins)
485485

486486
global := ui.NewBucketUI(logger, conf.label, conf.webConf.externalPrefix, conf.webConf.prefixHeaderName, "/global", component)
487-
global.Register(r, ins)
487+
global.Register(r, false, ins)
488488

489489
// Configure Request Logging for HTTP calls.
490490
opts := []logging.Option{logging.WithDecider(func(_ string, _ error) logging.Decision {

cmd/thanos/store.go

+1-1
Original file line numberDiff line numberDiff line change
@@ -407,7 +407,7 @@ func runStore(
407407
ins := extpromhttp.NewInstrumentationMiddleware(reg, nil)
408408

409409
compactorView := ui.NewBucketUI(logger, "", conf.webConfig.externalPrefix, conf.webConfig.prefixHeaderName, "/loaded", conf.component)
410-
compactorView.Register(r, ins)
410+
compactorView.Register(r, true, ins)
411411

412412
// Configure Request Logging for HTTP calls.
413413
logMiddleware := logging.NewHTTPServerMiddleware(logger, httpLogOpts...)

cmd/thanos/tools_bucket.go

+1-1
Original file line numberDiff line numberDiff line change
@@ -372,7 +372,7 @@ func registerBucketWeb(app extkingpin.AppClause, objStoreConfig *extflag.PathOrC
372372
ins := extpromhttp.NewInstrumentationMiddleware(reg, nil)
373373

374374
bucketUI := ui.NewBucketUI(logger, *label, *webExternalPrefix, *webPrefixHeaderName, "", component.Bucket)
375-
bucketUI.Register(router, ins)
375+
bucketUI.Register(router, true, ins)
376376

377377
flagsMap := getFlagsMap(cmd.Flags())
378378

pkg/ui/bindata.go

+18-18
Large diffs are not rendered by default.

pkg/ui/bucket.go

+19-25
Original file line numberDiff line numberDiff line change
@@ -37,8 +37,13 @@ func NewBucketUI(logger log.Logger, label, externalPrefix, prefixHeader, uiPrefi
3737
"Component": comp.String(),
3838
}
3939

40+
tmplFuncs := queryTmplFuncs()
41+
// here the uiPrefix is empty because the uiPrefix is injected in the pathPrefix.
42+
// Which seems to be the only way to the correct path in the file bucket.html
43+
tmplFuncs["uiPrefix"] = func() string { return "" }
44+
4045
return &Bucket{
41-
BaseUI: NewBaseUI(log.With(logger, "component", "bucketUI"), "bucket_menu.html", queryTmplFuncs(), tmplVariables, externalPrefix, prefixHeader, comp),
46+
BaseUI: NewBaseUI(log.With(logger, "component", "bucketUI"), "bucket_menu.html", tmplFuncs, tmplVariables, externalPrefix, prefixHeader, comp),
4247
Blocks: "[]",
4348
Label: label,
4449
externalPrefix: externalPrefix,
@@ -48,41 +53,30 @@ func NewBucketUI(logger log.Logger, label, externalPrefix, prefixHeader, uiPrefi
4853
}
4954

5055
// Register registers http routes for bucket UI.
51-
func (b *Bucket) Register(r *route.Router, ins extpromhttp.InstrumentationMiddleware) {
52-
/* redirectPath := "/blocks"
53-
if len(b.uiPrefix) > 0 {
54-
redirectPath = b.uiPrefix
55-
}
56-
r.Get("/", func(w http.ResponseWriter, r *http.Request) {
57-
http.Redirect(w, r, path.Join(GetWebPrefix(b.logger, b.externalPrefix, b.prefixHeader, r), redirectPath), http.StatusFound)
58-
})
56+
func (b *Bucket) Register(r *route.Router, registerNewUI bool, ins extpromhttp.InstrumentationMiddleware) {
57+
classicPrefix := path.Join("/classic", b.uiPrefix)
58+
r.WithPrefix(classicPrefix).Get("/", instrf("bucket", ins, b.bucket))
59+
r.WithPrefix(classicPrefix).Get("/static/*filepath", instrf("static", ins, b.serveStaticAsset))
60+
61+
if registerNewUI {
5962
// Redirect the original React UI's path (under "/new") to its new path at the root.
6063
r.Get("/new/*path", func(w http.ResponseWriter, r *http.Request) {
6164
p := route.Param(r.Context(), "path")
6265
http.Redirect(w, r, path.Join(GetWebPrefix(b.logger, b.externalPrefix, b.prefixHeader, r), strings.TrimPrefix(p, "/new"))+"?"+r.URL.RawQuery, http.StatusFound)
6366
})
6467

65-
// here we have two routes that serve the same document. It's because it depends where do we come from.
66-
// If we are coming from the new UI, it will use the first route.
67-
// If we are coming from the old UI, it will use the second route.
68-
r.Get(path.Join("/classic", b.uiPrefix), instrf("bucket", ins, b.bucket))
69-
r.WithPrefix(b.uiPrefix).Get("/classic", instrf("bucket", ins, b.bucket))
70-
r.WithPrefix(b.uiPrefix).Get("/classic/static/*filepath", instrf("static", ins, b.serveStaticAsset))
71-
registerReactApp(r, ins, b.BaseUI)*/
72-
instrf := func(name string, next func(w http.ResponseWriter, r *http.Request)) http.HandlerFunc {
73-
return ins.NewHandler(b.externalPrefix+name, http.HandlerFunc(next))
74-
}
75-
r.WithPrefix(b.uiPrefix).Get("/", instrf("root", b.root))
76-
r.WithPrefix(b.uiPrefix).Get("/static/*filepath", instrf("static", b.serveStaticAsset))
77-
}
68+
r.Get("/", func(w http.ResponseWriter, r *http.Request) {
69+
http.Redirect(w, r, path.Join(GetWebPrefix(b.logger, b.externalPrefix, b.prefixHeader, r), b.uiPrefix), http.StatusFound)
70+
})
7871

79-
func (b *Bucket) root(w http.ResponseWriter, r *http.Request) {
80-
b.executeTemplate(w, "bucket.html", GetWebPrefix(b.logger, path.Join(b.externalPrefix, strings.TrimPrefix(b.uiPrefix, "/")), b.prefixHeader, r), b)
72+
registerReactApp(r, ins, b.BaseUI)
73+
}
8174
}
8275

8376
// Handle / of bucket UIs.
8477
func (b *Bucket) bucket(w http.ResponseWriter, r *http.Request) {
85-
prefix := GetWebPrefix(b.logger, path.Join(b.externalPrefix, strings.TrimPrefix(b.uiPrefix, "/")), b.prefixHeader, r)
78+
classicPrefix := path.Join("/classic", b.uiPrefix)
79+
prefix := GetWebPrefix(b.logger, path.Join(b.externalPrefix, strings.TrimPrefix(classicPrefix, "/")), b.prefixHeader, r)
8680
b.executeTemplate(w, "bucket.html", prefix, b)
8781
}
8882

pkg/ui/query.go

+4-1
Original file line numberDiff line numberDiff line change
@@ -38,8 +38,11 @@ func NewQueryUI(logger log.Logger, storeSet *query.StoreSet, externalPrefix, pre
3838
}
3939
runtimeInfo := api.GetRuntimeInfoFunc(logger)
4040

41+
tmplFuncs := queryTmplFuncs()
42+
tmplFuncs["uiPrefix"] = func() string { return "/classic" }
43+
4144
return &Query{
42-
BaseUI: NewBaseUI(logger, "query_menu.html", queryTmplFuncs(), tmplVariables, externalPrefix, prefixHeader, component.Query),
45+
BaseUI: NewBaseUI(logger, "query_menu.html", tmplFuncs, tmplVariables, externalPrefix, prefixHeader, component.Query),
4346
storeSet: storeSet,
4447
externalPrefix: externalPrefix,
4548
prefixHeader: prefixHeader,

pkg/ui/rule.go

+4-1
Original file line numberDiff line numberDiff line change
@@ -38,8 +38,11 @@ func NewRuleUI(logger log.Logger, reg prometheus.Registerer, ruleManager *thanos
3838
"queryURL": queryURL,
3939
}
4040

41+
tmplFuncs := ruleTmplFuncs(queryURL)
42+
tmplFuncs["uiPrefix"] = func() string { return "/classic" }
43+
4144
return &Rule{
42-
BaseUI: NewBaseUI(logger, "rule_menu.html", ruleTmplFuncs(queryURL), tmplVariables, externalPrefix, prefixHeader, component.Rule),
45+
BaseUI: NewBaseUI(logger, "rule_menu.html", tmplFuncs, tmplVariables, externalPrefix, prefixHeader, component.Rule),
4346
externalPrefix: externalPrefix,
4447
prefixHeader: prefixHeader,
4548
ruleManager: ruleManager,

pkg/ui/templates/_base.html

+7-7
Original file line numberDiff line numberDiff line change
@@ -4,14 +4,14 @@
44
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
55
<meta name="robots" content="noindex,nofollow">
66
<title>Thanos long term storage Prometheus solution</title>
7-
<link rel="shortcut icon" href="{{ pathPrefix }}/classic/static/img/favicon.ico?v={{ buildVersion }}">
8-
<script src="{{ pathPrefix }}/classic/static/vendor/js/jquery-3.5.0.min.js?v={{ buildVersion }}"></script>
9-
<script src="{{ pathPrefix }}/classic/static/vendor/js/popper.min.js?v={{ buildVersion }}"></script>
10-
<script src="{{ pathPrefix }}/classic/static/vendor/bootstrap-4.1.3/js/bootstrap.min.js?v={{ buildVersion }}"></script>
7+
<link rel="shortcut icon" href="{{ pathPrefix }}{{ uiPrefix }}/static/img/favicon.ico?v={{ buildVersion }}">
8+
<script src="{{ pathPrefix }}{{ uiPrefix }}/static/vendor/js/jquery-3.5.0.min.js?v={{ buildVersion }}"></script>
9+
<script src="{{ pathPrefix }}{{ uiPrefix }}/static/vendor/js/popper.min.js?v={{ buildVersion }}"></script>
10+
<script src="{{ pathPrefix }}{{ uiPrefix }}/static/vendor/bootstrap-4.1.3/js/bootstrap.min.js?v={{ buildVersion }}"></script>
1111

12-
<link type="text/css" rel="stylesheet" href="{{ pathPrefix }}/classic/static/vendor/bootstrap-4.1.3/css/bootstrap.min.css?v={{ buildVersion }}">
13-
<link type="text/css" rel="stylesheet" href="{{ pathPrefix }}/classic/static/css/prometheus.css?v={{ buildVersion }}">
14-
<link type="text/css" rel="stylesheet" href="{{ pathPrefix }}/classic/static/vendor/bootstrap4-glyphicons/css/bootstrap-glyphicons.min.css?v={{ buildVersion }}">
12+
<link type="text/css" rel="stylesheet" href="{{ pathPrefix }}{{ uiPrefix }}/static/vendor/bootstrap-4.1.3/css/bootstrap.min.css?v={{ buildVersion }}">
13+
<link type="text/css" rel="stylesheet" href="{{ pathPrefix }}{{ uiPrefix }}/static/css/prometheus.css?v={{ buildVersion }}">
14+
<link type="text/css" rel="stylesheet" href="{{ pathPrefix }}{{ uiPrefix }}/static/vendor/bootstrap4-glyphicons/css/bootstrap-glyphicons.min.css?v={{ buildVersion }}">
1515

1616
<script>
1717
var PATH_PREFIX = "{{ pathPrefix }}";

pkg/ui/templates/alerts.html

+2-2
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
{{define "head"}}
2-
<link type="text/css" rel="stylesheet" href="{{ pathPrefix }}/classic/static/css/alerts.css?v={{ buildVersion }}">
3-
<script src="{{ pathPrefix }}/classic/static/js/alerts.js?v={{ buildVersion }}"></script>
2+
<link type="text/css" rel="stylesheet" href="{{ pathPrefix }}{{ uiPrefix }}/static/css/alerts.css?v={{ buildVersion }}">
3+
<script src="{{ pathPrefix }}{{ uiPrefix }}/static/js/alerts.js?v={{ buildVersion }}"></script>
44
{{end}}
55

66
{{define "content"}}

pkg/ui/templates/bucket.html

+2-2
Original file line numberDiff line numberDiff line change
@@ -2,8 +2,8 @@
22
<meta http-equiv="refresh" content="300"/>
33

44
<script type="text/javascript" src="https://www.gstatic.com/charts/loader.js"></script>
5-
<script src="{{ pathPrefix }}/classic/static/js/bucket.js?v={{ buildVersion }}"></script>
6-
<script src="{{ pathPrefix }}/classic/static/vendor/moment/moment.min.js?v={{ buildVersion }}"></script>
5+
<script src="{{ pathPrefix }}/static/js/bucket.js?v={{ buildVersion }}"></script>
6+
<script src="{{ pathPrefix }}/static/vendor/moment/moment.min.js?v={{ buildVersion }}"></script>
77
{{end}}
88

99
{{define "content"}}

pkg/ui/templates/bucket_menu.html

+2-2
Original file line numberDiff line numberDiff line change
@@ -4,14 +4,14 @@
44
<button type="button" class="navbar-toggler" data-toggle="collapse" data-target="#nav-content" aria-expanded="false" aria-controls="nav-content" aria-label="Toggle navigation">
55
<span class="navbar-toggler-icon"></span>
66
</button>
7-
<a class="navbar-brand" href="{{ pathPrefix }}/classic/">Thanos Bucket Viewer</a>
7+
<a class="navbar-brand" href="{{ pathPrefix }}/">Thanos Bucket Viewer</a>
88
<div id="nav-content" class="navbar-collapse collapse">
99
<ul class="navbar-nav">
1010
<li class="nav-item">
1111
<a class="nav-link" href="https://thanos.io/tip/thanos/getting-started.md/" target="_blank">Help</a>
1212
</li>
1313
<li class="nav-item">
14-
<a class="nav-link" href="{{ pathPrefix }}/" target="_blank">New UI</a>
14+
<a class="nav-link" href="/" target="_blank">New UI</a>
1515
</li>
1616
</ul>
1717
</div>

pkg/ui/templates/graph.html

+14-14
Original file line numberDiff line numberDiff line change
@@ -1,25 +1,25 @@
11
{{define "head"}}
2-
<link type="text/css" rel="stylesheet" href="{{ pathPrefix }}/classic/static/vendor/rickshaw/rickshaw.min.css?v={{ buildVersion }}">
3-
<link type="text/css" rel="stylesheet" href="{{ pathPrefix }}/classic/static/vendor/eonasdan-bootstrap-datetimepicker/bootstrap-datetimepicker.min.css?v={{ buildVersion }}">
2+
<link type="text/css" rel="stylesheet" href="{{ pathPrefix }}{{ uiPrefix }}/static/vendor/rickshaw/rickshaw.min.css?v={{ buildVersion }}">
3+
<link type="text/css" rel="stylesheet" href="{{ pathPrefix }}{{ uiPrefix }}/static/vendor/eonasdan-bootstrap-datetimepicker/bootstrap-datetimepicker.min.css?v={{ buildVersion }}">
44

5-
<script src="{{ pathPrefix }}/classic/static/vendor/rickshaw/vendor/d3.v3.js?v={{ buildVersion }}"></script>
6-
<script src="{{ pathPrefix }}/classic/static/vendor/rickshaw/vendor/d3.layout.min.js?v={{ buildVersion }}"></script>
7-
<script src="{{ pathPrefix }}/classic/static/vendor/rickshaw/rickshaw.min.js?v={{ buildVersion }}"></script>
8-
<script src="{{ pathPrefix }}/classic/static/vendor/moment/moment.min.js?v={{ buildVersion }}"></script>
9-
<script src="{{ pathPrefix }}/classic/static/vendor/moment/moment-timezone-with-data.min.js?v={{ buildVersion }}"></script>
10-
<script src="{{ pathPrefix }}/classic/static/vendor/eonasdan-bootstrap-datetimepicker/bootstrap-datetimepicker.min.js?v={{ buildVersion }}"></script>
11-
<script src="{{ pathPrefix }}/classic/static/vendor/bootstrap3-typeahead/bootstrap3-typeahead.min.js?v={{ buildVersion }}"></script>
12-
<script src="{{ pathPrefix }}/classic/static/vendor/fuzzy/fuzzy.js?v={{ buildVersion }}"></script>
5+
<script src="{{ pathPrefix }}{{ uiPrefix }}/static/vendor/rickshaw/vendor/d3.v3.js?v={{ buildVersion }}"></script>
6+
<script src="{{ pathPrefix }}{{ uiPrefix }}/static/vendor/rickshaw/vendor/d3.layout.min.js?v={{ buildVersion }}"></script>
7+
<script src="{{ pathPrefix }}{{ uiPrefix }}/static/vendor/rickshaw/rickshaw.min.js?v={{ buildVersion }}"></script>
8+
<script src="{{ pathPrefix }}{{ uiPrefix }}/static/vendor/moment/moment.min.js?v={{ buildVersion }}"></script>
9+
<script src="{{ pathPrefix }}{{ uiPrefix }}/static/vendor/moment/moment-timezone-with-data.min.js?v={{ buildVersion }}"></script>
10+
<script src="{{ pathPrefix }}{{ uiPrefix }}/static/vendor/eonasdan-bootstrap-datetimepicker/bootstrap-datetimepicker.min.js?v={{ buildVersion }}"></script>
11+
<script src="{{ pathPrefix }}{{ uiPrefix }}/static/vendor/bootstrap3-typeahead/bootstrap3-typeahead.min.js?v={{ buildVersion }}"></script>
12+
<script src="{{ pathPrefix }}{{ uiPrefix }}/static/vendor/fuzzy/fuzzy.js?v={{ buildVersion }}"></script>
1313

14-
<script src="{{ pathPrefix }}/classic/static/vendor/mustache/mustache.min.js?v={{ buildVersion }}"></script>
15-
<script src="{{ pathPrefix }}/classic/static/vendor/js/jquery.selection.js?v={{ buildVersion }}"></script>
14+
<script src="{{ pathPrefix }}{{ uiPrefix }}/static/vendor/mustache/mustache.min.js?v={{ buildVersion }}"></script>
15+
<script src="{{ pathPrefix }}{{ uiPrefix }}/static/vendor/js/jquery.selection.js?v={{ buildVersion }}"></script>
1616
<!-- <script src="{{ pathPrefix }}/static/vendor/js/jquery.hotkeys.js?v={{ buildVersion }}"></script> -->
1717

18-
<script src="{{ pathPrefix }}/classic/static/js/graph.js?v={{ buildVersion }}"></script>
18+
<script src="{{ pathPrefix }}{{ uiPrefix }}/static/js/graph.js?v={{ buildVersion }}"></script>
1919

2020
<script id="graph_template" type="text/x-handlebars-template"></script>
2121

22-
<link type="text/css" rel="stylesheet" href="{{ pathPrefix }}/classic/static/css/graph.css?v={{ buildVersion }}">
22+
<link type="text/css" rel="stylesheet" href="{{ pathPrefix }}{{ uiPrefix }}/static/css/graph.css?v={{ buildVersion }}">
2323
{{end}}
2424

2525
{{define "content"}}

pkg/ui/templates/query_menu.html

+4-4
Original file line numberDiff line numberDiff line change
@@ -4,15 +4,15 @@
44
<button type="button" class="navbar-toggler" data-toggle="collapse" data-target="#nav-content" aria-expanded="false" aria-controls="nav-content" aria-label="Toggle navigation">
55
<span class="navbar-toggler-icon"></span>
66
</button>
7-
<a class="navbar-brand" href="{{ pathPrefix }}/classic/">Thanos</a>
7+
<a class="navbar-brand" href="{{ pathPrefix }}{{ uiPrefix }}/">Thanos</a>
88
<div id="nav-content" class="navbar-collapse collapse">
99
<ul class="navbar-nav">
10-
<li class="nav-item"><a class="nav-link" href="{{ pathPrefix }}/classic/graph">Graph</a></li>
11-
<li class="nav-item"><a class="nav-link" href="{{ pathPrefix }}/classic/stores">Stores</a></li>
10+
<li class="nav-item"><a class="nav-link" href="{{ pathPrefix }}{{ uiPrefix }}/graph">Graph</a></li>
11+
<li class="nav-item"><a class="nav-link" href="{{ pathPrefix }}{{ uiPrefix }}/stores">Stores</a></li>
1212
<li class="nav-item dropdown">
1313
<a href="#" class="nav-link dropdown-toggle" data-toggle="dropdown" role="button" aria-haspopup="true" aria-expanded="false">Status <span class="caret"></span></a>
1414
<div class="dropdown-menu">
15-
<a class="dropdown-item" href="{{ pathPrefix }}/classic/status">Runtime &amp; Build Information</a>
15+
<a class="dropdown-item" href="{{ pathPrefix }}{{ uiPrefix }}/status">Runtime &amp; Build Information</a>
1616
</div>
1717
</li>
1818
<li class="nav-item">

pkg/ui/templates/rule_menu.html

+3-3
Original file line numberDiff line numberDiff line change
@@ -4,11 +4,11 @@
44
<button type="button" class="navbar-toggler" data-toggle="collapse" data-target="#nav-content" aria-expanded="false" aria-controls="nav-content" aria-label="Toggle navigation">
55
<span class="navbar-toggler-icon"></span>
66
</button>
7-
<a class="navbar-brand" href="{{ pathPrefix }}/classic/">Thanos</a>
7+
<a class="navbar-brand" href="{{ pathPrefix }}{{ uiPrefix }}/">Thanos</a>
88
<div id="nav-content" class="navbar-collapse collapse">
99
<ul class="navbar-nav">
10-
<li class="nav-item"><a class="nav-link" href="{{ pathPrefix }}/classic/alerts">Alerts</a></li>
11-
<li class="nav-item"><a class="nav-link" href="{{ pathPrefix }}/classic/rules">Rules</a></li>
10+
<li class="nav-item"><a class="nav-link" href="{{ pathPrefix }}{{ uiPrefix }}/alerts">Alerts</a></li>
11+
<li class="nav-item"><a class="nav-link" href="{{ pathPrefix }}{{ uiPrefix }}/rules">Rules</a></li>
1212
<li class="nav-item">
1313
<a class="nav-link" href="https://thanos.io/tip/thanos/getting-started.md/" target="_blank">Help</a>
1414
</li>

pkg/ui/templates/rules.html

+1-1
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
{{define "head"}}
2-
<link type="text/css" rel="stylesheet" href="{{ pathPrefix }}/classic/static/css/rules.css?v={{ buildVersion }}">
2+
<link type="text/css" rel="stylesheet" href="{{ pathPrefix }}{{ uiPrefix }}/static/css/rules.css?v={{ buildVersion }}">
33
{{end}}
44

55
{{define "content"}}

pkg/ui/templates/stores.html

+1-1
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
{{define "head"}}
2-
<link type="text/css" rel="stylesheet" href="{{ pathPrefix }}/classic/static/css/rules.css?v={{ buildVersion }}">
2+
<link type="text/css" rel="stylesheet" href="{{ pathPrefix }}{{ uiPrefix }}/static/css/rules.css?v={{ buildVersion }}">
33
{{end}}
44

55
{{define "content"}}

0 commit comments

Comments
 (0)