From e9d65e369d667856a1a301b2aa00ff1b8b304284 Mon Sep 17 00:00:00 2001 From: Breezewish Date: Tue, 7 Jan 2020 01:36:42 +0800 Subject: [PATCH 01/13] With dashboard Signed-off-by: Breezewish --- Makefile | 6 +- go.mod | 7 +- go.sum | 125 ++++++++++++++++++ pkg/dashboard/uiserver/.gitignore | 1 + .../uiserver/empty_assets_handler.go | 23 ++++ pkg/dashboard/uiserver/uiserver.go | 31 +++++ scripts/embed-dashboard-ui.sh | 30 +++++ server/server.go | 7 +- 8 files changed, 223 insertions(+), 7 deletions(-) create mode 100644 pkg/dashboard/uiserver/.gitignore create mode 100644 pkg/dashboard/uiserver/empty_assets_handler.go create mode 100644 pkg/dashboard/uiserver/uiserver.go create mode 100755 scripts/embed-dashboard-ui.sh diff --git a/Makefile b/Makefile index 4db8a4d5da9..a4b99db5068 100644 --- a/Makefile +++ b/Makefile @@ -54,6 +54,10 @@ pd-server: export GO111MODULE=on ifeq ("$(WITH_RACE)", "1") pd-server: CGO_ENABLED=1 go build -race -gcflags '$(GCFLAGS)' -ldflags '$(LDFLAGS)' -o bin/pd-server cmd/pd-server/main.go +else ifeq ("$(WITH_DASHBOARD)", "1") +pd-server: + @./scripts/embed-dashboard-ui.sh + CGO_ENABLED=0 go build -gcflags '$(GCFLAGS)' -ldflags '$(LDFLAGS)' -tags dashboard_ui -o bin/pd-server cmd/pd-server/main.go else ifeq ("$(PD_WEB)", "1") pd-server: retool-setup @./scripts/build-ui.sh @@ -104,7 +108,7 @@ check-all: static lint tidy @echo "checking" retool-setup: export GO111MODULE=off -retool-setup: +retool-setup: @which retool >/dev/null 2>&1 || go get github.com/twitchtv/retool @./scripts/retool sync diff --git a/go.mod b/go.mod index 50beef7753e..2df6b7e7dae 100644 --- a/go.mod +++ b/go.mod @@ -20,7 +20,7 @@ require ( github.com/golang/snappy v0.0.0-20180518054509-2e65f85255db // indirect github.com/google/btree v0.0.0-20180813153112-4030bb1f1f0c github.com/gorilla/context v0.0.0-20160226214623-1ea25387ff6f // indirect - github.com/gorilla/mux v1.6.1 + github.com/gorilla/mux v1.7.3 github.com/gorilla/websocket v1.2.0 // indirect github.com/grpc-ecosystem/go-grpc-prometheus v1.2.0 github.com/juju/ratelimit v1.0.1 @@ -29,6 +29,7 @@ require ( github.com/montanaflynn/stats v0.0.0-20151014174947-eeaced052adb github.com/opentracing/opentracing-go v1.0.2 github.com/phf/go-queue v0.0.0-20170504031614-9abe38d0371d + github.com/pingcap-incubator/tidb-dashboard v0.0.0-20200106155313-2082b0f3cabc // indirect github.com/pingcap/check v0.0.0-20191107115940-caf2b9e6ccf4 github.com/pingcap/errcode v0.0.0-20180921232412-a1a7271709d9 github.com/pingcap/failpoint v0.0.0-20191029060244-12f4ac2fd11d @@ -47,9 +48,7 @@ require ( go.etcd.io/etcd v0.0.0-20190320044326-77d4b742cdbf go.uber.org/goleak v0.10.0 go.uber.org/zap v1.12.0 - golang.org/x/crypto v0.0.0-20190909091759-094676da4a83 // indirect - golang.org/x/net v0.0.0-20190909003024-a7b16738d86b // indirect - golang.org/x/sys v0.0.0-20190909082730-f460065e899a // indirect + golang.org/x/sys v0.0.0-20200106114638-5f8ca72cd632 // indirect google.golang.org/grpc v1.25.1 gopkg.in/natefinch/lumberjack.v2 v2.0.0 ) diff --git a/go.sum b/go.sum index abe8eb51282..cc6ca963ad0 100644 --- a/go.sum +++ b/go.sum @@ -1,8 +1,13 @@ cloud.google.com/go v0.26.0/go.mod h1:aQUYkXzVsufM+DwF1aE+0xfcU+56JwCaLick0ClmMTw= github.com/BurntSushi/toml v0.3.1 h1:WXkYYl6Yr3qBf1K79EBnL4mak0OimBfB0XUf9Vl28OQ= github.com/BurntSushi/toml v0.3.1/go.mod h1:xHWCNGjB5oqiDr8zfno3MHue2Ht5sIBksp03qcyfWMU= +github.com/KyleBanks/depth v1.2.1/go.mod h1:jzSb9d0L43HxTQfT+oSA1EEp2q+ne2uh6XgeJcm8brE= +github.com/PuerkitoBio/purell v1.1.0/go.mod h1:c11w/QuzBsJSee3cPx9rAFu61PvFxuPbtSwDGJws/X0= +github.com/PuerkitoBio/purell v1.1.1/go.mod h1:c11w/QuzBsJSee3cPx9rAFu61PvFxuPbtSwDGJws/X0= +github.com/PuerkitoBio/urlesc v0.0.0-20170810143723-de5bf2ad4578/go.mod h1:uGdkoq3SwY9Y+13GIhn11/XLaGBb4BfwItxLd5jeuXE= github.com/StackExchange/wmi v0.0.0-20190523213315-cbe66965904d h1:G0m3OIz70MZUWq3EgK3CesDbo8upS2Vm9/P3FtgI+Jk= github.com/StackExchange/wmi v0.0.0-20190523213315-cbe66965904d/go.mod h1:3eOhrUMpNV+6aFIbp5/iudMxNCF27Vw2OZgy4xEx0Fg= +github.com/alecthomas/template v0.0.0-20190718012654-fb15b899a751/go.mod h1:LOuyumcjzFXgccqObfd/Ljyb9UuFJ6TxHnclSeseNhc= github.com/alecthomas/units v0.0.0-20151022065526-2efee857e7cf/go.mod h1:ybxpYRFXyAe+OPACYpWeL0wqObRcbAqCMya13uyzqw0= github.com/beorn7/perks v0.0.0-20180321164747-3a771d992973 h1:xJ4a3vCFaGF/jqvzLMYoU8P317H5OQ+Via4RmuPwCS0= github.com/beorn7/perks v0.0.0-20180321164747-3a771d992973/go.mod h1:Dwedo/Wpr24TaqPxmxbtue+5NUziq4I4S80YR8gNf3Q= @@ -41,11 +46,45 @@ github.com/fatih/color v1.7.0 h1:DkWD4oS2D8LGGgTQ6IvwJJXSL5Vp2ffcQg58nFV38Ys= github.com/fatih/color v1.7.0/go.mod h1:Zm6kSWBoL9eyXnKyktHP6abPY2pDugNf5KwzbycvMj4= github.com/fsnotify/fsnotify v1.4.7 h1:IXs+QLmnXW2CcXuY+8Mzv/fWEsPGWxqefPtCP5CnV9I= github.com/fsnotify/fsnotify v1.4.7/go.mod h1:jwhsz4b93w/PPRr/qN1Yymfu8t87LnFCMoQvtojpjFo= +github.com/ghodss/yaml v1.0.0/go.mod h1:4dBDuWmgqj2HViK6kFavaiC9ZROes6MMH2rRYeMEF04= github.com/ghodss/yaml v1.0.1-0.20190212211648-25d852aebe32 h1:Mn26/9ZMNWSw9C9ERFA1PUxfmGpolnw2v0bKOREu5ew= github.com/ghodss/yaml v1.0.1-0.20190212211648-25d852aebe32/go.mod h1:GIjDIg/heH5DOkXY3YJ/wNhfHsQHoXGjl8G8amsYQ1I= +github.com/gin-contrib/cors v1.3.0 h1:PolezCc89peu+NgkIWt9OB01Kbzt6IP0J/JvkG6xxlg= +github.com/gin-contrib/cors v1.3.0/go.mod h1:artPvLlhkF7oG06nK8v3U8TNz6IeX+w1uzCSEId5/Vc= +github.com/gin-contrib/gzip v0.0.1/go.mod h1:fGBJBCdt6qCZuCAOwWuFhBB4OOq9EFqlo5dEaFhhu5w= +github.com/gin-contrib/sse v0.0.0-20170109093832-22d885f9ecc7/go.mod h1:VJ0WA2NBN22VlZ2dKZQPAPnyWw5XTlK1KymzLKsr59s= +github.com/gin-contrib/sse v0.0.0-20190301062529-5545eab6dad3/go.mod h1:VJ0WA2NBN22VlZ2dKZQPAPnyWw5XTlK1KymzLKsr59s= +github.com/gin-contrib/sse v0.1.0 h1:Y/yl/+YNO8GZSjAhjMsSuLt29uWRFHdHYUb5lYOV9qE= +github.com/gin-contrib/sse v0.1.0/go.mod h1:RHrZQHXnP2xjPF+u1gW/2HnVO7nvIa9PG3Gm+fLHvGI= +github.com/gin-gonic/gin v1.3.0/go.mod h1:7cKuhb5qV2ggCFctp2fJQ+ErvciLZrIeoOSOm6mUr7Y= +github.com/gin-gonic/gin v1.4.0/go.mod h1:OW2EZn3DO8Ln9oIKOvM++LBO+5UPHJJDH72/q/3rZdM= +github.com/gin-gonic/gin v1.5.0 h1:fi+bqFAx/oLK54somfCtEZs9HeH1LHVoEPUgARpTqyc= +github.com/gin-gonic/gin v1.5.0/go.mod h1:Nd6IXA8m5kNZdNEHMBd93KT+mdY3+bewLgRvmCsR2Do= +github.com/go-bindata/go-bindata v3.1.2+incompatible/go.mod h1:xK8Dsgwmeed+BBsSy2XTopBn/8uK2HWuGSnA11C3Joo= +github.com/go-chi/chi v4.0.2+incompatible/go.mod h1:eB3wogJHnLi3x/kFX2A+IbTBlXxmMeXJVKy9tTv1XzQ= github.com/go-ole/go-ole v1.2.4 h1:nNBDSCOigTSiarFpYE9J/KtEA1IOW4CNeqT9TQDqCxI= github.com/go-ole/go-ole v1.2.4/go.mod h1:XCwSNxSkXRo4vlyPy93sltvi/qJq0jqQhjqQNIwKuxM= +github.com/go-openapi/jsonpointer v0.17.0/go.mod h1:cOnomiV+CVVwFLk0A/MExoFMjwdsUdVpsRhURCKh+3M= +github.com/go-openapi/jsonpointer v0.19.2/go.mod h1:3akKfEdA7DF1sugOqz1dVQHBcuDBPKZGEoHC/NkiQRg= +github.com/go-openapi/jsonpointer v0.19.3/go.mod h1:Pl9vOtqEWErmShwVjC8pYs9cog34VGT37dQOVbmoatg= +github.com/go-openapi/jsonreference v0.17.0/go.mod h1:g4xxGn04lDIRh0GJb5QlpE3HfopLOL6uZrK/VgnsK9I= +github.com/go-openapi/jsonreference v0.19.0/go.mod h1:g4xxGn04lDIRh0GJb5QlpE3HfopLOL6uZrK/VgnsK9I= +github.com/go-openapi/jsonreference v0.19.2/go.mod h1:jMjeRr2HHw6nAVajTXJ4eiUwohSTlpa0o73RUL1owJc= +github.com/go-openapi/jsonreference v0.19.3/go.mod h1:rjx6GuL8TTa9VaixXglHmQmIL98+wF9xc8zWvFonSJ8= +github.com/go-openapi/spec v0.19.0/go.mod h1:XkF/MOi14NmjsfZ8VtAKf8pIlbZzyoTvZsdfssdxcBI= +github.com/go-openapi/spec v0.19.4/go.mod h1:FpwSN1ksY1eteniUU7X0N/BgJ7a4WvBFVA8Lj9mJglo= +github.com/go-openapi/spec v0.19.5/go.mod h1:Hm2Jr4jv8G1ciIAo+frC/Ft+rR2kQDh8JHKHb3gWUSk= +github.com/go-openapi/swag v0.17.0/go.mod h1:AByQ+nYG6gQg71GINrmuDXCPWdL640yX49/kXLo40Tg= +github.com/go-openapi/swag v0.19.2/go.mod h1:POnQmlKehdgb5mhVOsnJFsivZCEZ/vjK9gh66Z9tfKk= +github.com/go-openapi/swag v0.19.5/go.mod h1:POnQmlKehdgb5mhVOsnJFsivZCEZ/vjK9gh66Z9tfKk= +github.com/go-openapi/swag v0.19.6/go.mod h1:ao+8BpOPyKdpQz3AOJfbeEVpLmWAvlT1IfTe5McPyhY= +github.com/go-playground/locales v0.12.1/go.mod h1:IUMDtCfWo/w/mtMfIE/IG2K+Ey3ygWanZIBtBW0W2TM= +github.com/go-playground/locales v0.13.0 h1:HyWk6mgj5qFqCT5fjGBuRArbVDfE4hi8+e8ceBS/t7Q= +github.com/go-playground/locales v0.13.0/go.mod h1:taPMhCMXrRLJO55olJkUXHZBHCxTMfnGwq/HNwmWNS8= github.com/go-playground/overalls v0.0.0-20180201144345-22ec1a223b7c/go.mod h1:UqxAgEOt89sCiXlrc/ycnx00LVvUO/eS8tMUkWX4R7w= +github.com/go-playground/universal-translator v0.16.0/go.mod h1:1AnU7NaIRDWWzGEKwgtJRd2xk99HeFyHw3yid4rvQIY= +github.com/go-playground/universal-translator v0.17.0 h1:icxd5fm+REJzpZx7ZfpaD876Lmtgy7VtROAbHHXk8no= +github.com/go-playground/universal-translator v0.17.0/go.mod h1:UkSxE5sNxxRwHyU+Scu5vgOQjsIJAF8j9muTVoKLVtA= github.com/gogo/protobuf v0.0.0-20180717141946-636bf0302bc9/go.mod h1:r8qH/GZQm5c6nD/R0oafs1akxWv10x8SbQlK7atdtwQ= github.com/gogo/protobuf v1.0.0 h1:2jyBKDKU/8v3v2xVR2PtiWQviFUyiaGk2rpfyFT8rTM= github.com/gogo/protobuf v1.0.0/go.mod h1:r8qH/GZQm5c6nD/R0oafs1akxWv10x8SbQlK7atdtwQ= @@ -58,6 +97,7 @@ github.com/golang/mock v1.1.1/go.mod h1:oTYuIxOrZwtPieC+H1uAHpcLFnEyAGVDL/k47Jfb github.com/golang/protobuf v0.0.0-20180814211427-aa810b61a9c7/go.mod h1:6lQm79b+lXiMfvg/cZm0SGofjICqVBUtrP5yJMmIC1U= github.com/golang/protobuf v1.2.0 h1:P3YflyNX/ehuJFLhxviNdFxQPkGK5cDcApsge1SqnvM= github.com/golang/protobuf v1.2.0/go.mod h1:6lQm79b+lXiMfvg/cZm0SGofjICqVBUtrP5yJMmIC1U= +github.com/golang/protobuf v1.3.1/go.mod h1:6lQm79b+lXiMfvg/cZm0SGofjICqVBUtrP5yJMmIC1U= github.com/golang/protobuf v1.3.2 h1:6nsPYzhq5kReh6QImI3k5qWzO4PEbvbIW2cwSfR/6xs= github.com/golang/protobuf v1.3.2/go.mod h1:6lQm79b+lXiMfvg/cZm0SGofjICqVBUtrP5yJMmIC1U= github.com/golang/snappy v0.0.0-20180518054509-2e65f85255db h1:woRePGFeVFfLKN/pOkfl+p/TAqKOfFu+7KPlMVpok/w= @@ -66,6 +106,7 @@ github.com/google/btree v0.0.0-20180124185431-e89373fe6b4a/go.mod h1:lNA+9X1NB3Z github.com/google/btree v0.0.0-20180813153112-4030bb1f1f0c h1:964Od4U6p2jUkFxvCydnIczKteheJEzHRToSGK3Bnlw= github.com/google/btree v0.0.0-20180813153112-4030bb1f1f0c/go.mod h1:lNA+9X1NB3Zf8V7Ke586lFgjr2dZNuvo3lPJSGZ5JPQ= github.com/google/go-cmp v0.2.0/go.mod h1:oXzfMopK8JAjlY9xF4vHSVASa0yLyX7SntLO5aqRK0M= +github.com/google/gofuzz v1.0.0/go.mod h1:dBl0BpW6vV/+mYPU4Po3pmUjxk6FQPldtuIdl/M65Eg= github.com/google/renameio v0.1.0/go.mod h1:KWCgfxg9yswjAJkECMjeO8J8rahYeXnNhOm40UhjYkI= github.com/google/shlex v0.0.0-20181106134648-c34317bd91bf/go.mod h1:RpwtwJQFrIEPstU94h88MWPXP2ektJZ8cZ0YntAmXiE= github.com/google/uuid v1.0.0 h1:b4Gk+7WdP/d3HZH8EJsZpvV7EtDOgaZLtnaNGIu1adA= @@ -74,6 +115,8 @@ github.com/gorilla/context v0.0.0-20160226214623-1ea25387ff6f h1:9oNbS1z4rVpbnkH github.com/gorilla/context v0.0.0-20160226214623-1ea25387ff6f/go.mod h1:kBGZzfjB9CEq2AlWe17Uuf7NDRt0dE0s8S51q0aT7Yg= github.com/gorilla/mux v1.6.1 h1:KOwqsTYZdeuMacU7CxjMNYEKeBvLbxW+psodrbcEa3A= github.com/gorilla/mux v1.6.1/go.mod h1:1lud6UwP+6orDFRuTfBEV8e9/aOM/c4fVVCaMa2zaAs= +github.com/gorilla/mux v1.7.3 h1:gnP5JzjVOuiZD07fKKToCAOjS0yOpj/qPETTXCCS6hw= +github.com/gorilla/mux v1.7.3/go.mod h1:1lud6UwP+6orDFRuTfBEV8e9/aOM/c4fVVCaMa2zaAs= github.com/gorilla/websocket v0.0.0-20170926233335-4201258b820c/go.mod h1:E7qHFY5m1UJ88s3WnNqhKjPHQ0heANvMoAMk2YaljkQ= github.com/gorilla/websocket v1.2.0 h1:VJtLvh6VQym50czpZzx07z/kw9EgAxI3x1ZB8taTMQQ= github.com/gorilla/websocket v1.2.0/go.mod h1:E7qHFY5m1UJ88s3WnNqhKjPHQ0heANvMoAMk2YaljkQ= @@ -89,6 +132,11 @@ github.com/inconshreveable/mousetrap v1.0.0 h1:Z8tu5sraLXCXIcARxBp/8cbvlwVa7Z1NH github.com/inconshreveable/mousetrap v1.0.0/go.mod h1:PxqpIevigyE2G7u3NXJIT2ANytuPF1OarO4DADm73n8= github.com/jonboulle/clockwork v0.1.0 h1:VKV+ZcuP6l3yW9doeqz6ziZGgcynBVQO+obU0+0hcPo= github.com/jonboulle/clockwork v0.1.0/go.mod h1:Ii8DK3G1RaLaWxj9trq07+26W01tbo22gdxWY5EU2bo= +github.com/json-iterator/go v1.1.5/go.mod h1:+SdeFBvtyEkXs7REEP0seUULqWtbJapLOCVDaaPEHmU= +github.com/json-iterator/go v1.1.6/go.mod h1:+SdeFBvtyEkXs7REEP0seUULqWtbJapLOCVDaaPEHmU= +github.com/json-iterator/go v1.1.7/go.mod h1:KdQUCv79m/52Kvf8AW2vK1V8akMuk1QjK/uOdHXbAo4= +github.com/json-iterator/go v1.1.9 h1:9yzud/Ht36ygwatGx56VwCZtlI/2AD15T1X2sjSuGns= +github.com/json-iterator/go v1.1.9/go.mod h1:KdQUCv79m/52Kvf8AW2vK1V8akMuk1QjK/uOdHXbAo4= github.com/juju/ratelimit v1.0.1 h1:+7AIFJVQ0EQgq/K9+0Krm7m530Du7tIz0METWzN0RgY= github.com/juju/ratelimit v1.0.1/go.mod h1:qapgC/Gy+xNh9UxzV13HGGl/6UXNN+ct+vwSgWNm/qk= github.com/kisielk/gotool v1.0.0/go.mod h1:XhKaO+MFFWcvkIS/tQcRk01m1F5IRFswLeQ+oQHNcck= @@ -96,12 +144,25 @@ github.com/kr/pretty v0.1.0 h1:L/CwN0zerZDmRFUapSPitk6f+Q3+0za1rQkzVuMiMFI= github.com/kr/pretty v0.1.0/go.mod h1:dAy3ld7l9f0ibDNOQOHHMYYIIbhfbHSm3C4ZsoJORNo= github.com/kr/pty v1.0.0/go.mod h1:pFQYn66WHrOpPYNljwOMqo10TkYh1fy3cYio2l3bCsQ= github.com/kr/pty v1.1.1/go.mod h1:pFQYn66WHrOpPYNljwOMqo10TkYh1fy3cYio2l3bCsQ= +github.com/kr/pty v1.1.5/go.mod h1:9r2w37qlBe7rQ6e1fg1S/9xpWHSnaqNdHD3WcMdbPDA= github.com/kr/text v0.1.0 h1:45sCR5RtlFHMR4UwH9sdQ5TC8v0qDQCHnXt+kaKSTVE= github.com/kr/text v0.1.0/go.mod h1:4Jbv+DJW3UT/LiOwJeYQe1efqtUx/iVham/4vfdArNI= +github.com/leodido/go-urn v1.1.0/go.mod h1:+cyI34gQWZcE1eQU7NVgKkkzdXDQHr1dBMtdAPozLkw= +github.com/leodido/go-urn v1.2.0 h1:hpXL4XnriNwQ/ABnpepYM/1vCLWNDfUNts8dX3xTG6Y= +github.com/leodido/go-urn v1.2.0/go.mod h1:+8+nEpDfqqsY+g338gtMEUOtuK+4dEMhiQEgxpxOKII= +github.com/mailru/easyjson v0.0.0-20180823135443-60711f1a8329/go.mod h1:C1wdFJiN94OJF2b5HbByQZoLdCWB1Yqtg26g4irojpc= +github.com/mailru/easyjson v0.0.0-20190614124828-94de47d64c63/go.mod h1:C1wdFJiN94OJF2b5HbByQZoLdCWB1Yqtg26g4irojpc= +github.com/mailru/easyjson v0.0.0-20190626092158-b2ccc519800e/go.mod h1:C1wdFJiN94OJF2b5HbByQZoLdCWB1Yqtg26g4irojpc= +github.com/mailru/easyjson v0.7.0/go.mod h1:KAzv3t3aY1NaHWoQz1+4F1ccyAH66Jk7yos7ldAVICs= github.com/mattn/go-colorable v0.0.9 h1:UVL0vNpWh04HeJXV0KLcaT7r06gOH2l4OW6ddYRUIY4= github.com/mattn/go-colorable v0.0.9/go.mod h1:9vuHe8Xs5qXnSaW/c/ABM9alt+Vo+STaOChaDxuIBZU= github.com/mattn/go-isatty v0.0.4 h1:bnP0vzxcAdeI1zdubAl5PjU6zsERjGZb7raWodagDYs= github.com/mattn/go-isatty v0.0.4/go.mod h1:M+lRXTBqGeGNdLjl/ufCoiOlB5xdOkqRJdNxMWT7Zi4= +github.com/mattn/go-isatty v0.0.7/go.mod h1:Iq45c/XA43vh69/j3iqttzPXn0bhXyGjM0Hdxcsrc5s= +github.com/mattn/go-isatty v0.0.8/go.mod h1:Iq45c/XA43vh69/j3iqttzPXn0bhXyGjM0Hdxcsrc5s= +github.com/mattn/go-isatty v0.0.9/go.mod h1:YNRxwqDuOph6SZLI9vUUz6OYw3QyUt7WiY2yME+cCiQ= +github.com/mattn/go-isatty v0.0.11 h1:FxPOTFNqGkuDUGi3H/qkUbQO4ZiBa2brKq5r0l8TGeM= +github.com/mattn/go-isatty v0.0.11/go.mod h1:PhnuNfih5lzO57/f3n+odYbM4JtupLOxQOAqxQCu2WE= github.com/mattn/go-runewidth v0.0.2 h1:UnlwIPBGaTZfPQ6T1IGzPI0EkYAQmT9fAEJ/poFC63o= github.com/mattn/go-runewidth v0.0.2/go.mod h1:LwmH8dsx7+W8Uxz3IHJYH5QSwggIsqBzpuz5H//U1FU= github.com/mattn/go-shellwords v1.0.3 h1:K/VxK7SZ+cvuPgFSLKi5QPI9Vr/ipOf4C1gN+ntueUk= @@ -110,6 +171,12 @@ github.com/matttproud/golang_protobuf_extensions v1.0.0 h1:YNOwxxSJzSUARoD9KRZLz github.com/matttproud/golang_protobuf_extensions v1.0.0/go.mod h1:D8He9yQNgCq6Z5Ld7szi9bcBfOoFv/3dc6xSMkL2PC0= github.com/matttproud/golang_protobuf_extensions v1.0.1 h1:4hp9jkHxhMHkqkrB3Ix0jegS5sx/RkqARlsWZ6pIwiU= github.com/matttproud/golang_protobuf_extensions v1.0.1/go.mod h1:D8He9yQNgCq6Z5Ld7szi9bcBfOoFv/3dc6xSMkL2PC0= +github.com/modern-go/concurrent v0.0.0-20180228061459-e0a39a4cb421/go.mod h1:6dJC0mAP4ikYIbvyc7fijjWJddQyLn8Ig3JB5CqoB9Q= +github.com/modern-go/concurrent v0.0.0-20180306012644-bacd9c7ef1dd h1:TRLaZ9cD/w8PVh93nsPXa1VrQ6jlwL5oN8l14QlcNfg= +github.com/modern-go/concurrent v0.0.0-20180306012644-bacd9c7ef1dd/go.mod h1:6dJC0mAP4ikYIbvyc7fijjWJddQyLn8Ig3JB5CqoB9Q= +github.com/modern-go/reflect2 v0.0.0-20180701023420-4b7aa43c6742/go.mod h1:bx2lNnkwVCuqBIxFjflWJWanXIb3RllmbCylyMrvgv0= +github.com/modern-go/reflect2 v1.0.1 h1:9f412s+6RmYXLWZSEzVVgPGK7C2PphHj5RJrvfx9AWI= +github.com/modern-go/reflect2 v1.0.1/go.mod h1:bx2lNnkwVCuqBIxFjflWJWanXIb3RllmbCylyMrvgv0= github.com/montanaflynn/stats v0.0.0-20151014174947-eeaced052adb h1:bsjNADsjHq0gjU7KO7zwoX5k3HtFdf6TDzB3ncl5iUs= github.com/montanaflynn/stats v0.0.0-20151014174947-eeaced052adb/go.mod h1:wL8QJuTMNUDYhXwkmfOly8iTdp5TEcJFWZD2D7SIkUc= github.com/nicksnyder/go-i18n v1.10.0/go.mod h1:HrK7VCrbOvQoUAQ7Vpy7i87N7JZZZ7R2xBGjv0j365Q= @@ -123,6 +190,10 @@ github.com/opentracing/opentracing-go v1.0.2/go.mod h1:UkNAQd3GIcIGf0SeVgPpRdFSt github.com/pelletier/go-toml v1.3.0/go.mod h1:PN7xzY2wHTK0K9p34ErDQMlFxa51Fk0OUruD3k1mMwo= github.com/phf/go-queue v0.0.0-20170504031614-9abe38d0371d h1:U+PMnTlV2tu7RuMK5etusZG3Cf+rpow5hqQByeCzJ2g= github.com/phf/go-queue v0.0.0-20170504031614-9abe38d0371d/go.mod h1:lXfE4PvvTW5xOjO6Mba8zDPyw8M93B6AQ7frTGnMlA8= +github.com/pingcap-incubator/tidb-dashboard v0.0.0-20200106131905-bf777dab16e1 h1:E+P76Zij3SsP2D3r9IDIyTiYra+9S8ePIfgy6mOHWM4= +github.com/pingcap-incubator/tidb-dashboard v0.0.0-20200106131905-bf777dab16e1/go.mod h1:Yx2Ix+adNvCO8F3tHgZmgt9sJhOjJy/B4CW/6filV4w= +github.com/pingcap-incubator/tidb-dashboard v0.0.0-20200106155313-2082b0f3cabc h1:JDqCtzyqVkc+r8xDDNZ/3/hPSx4lZREFNi8DVGQTmt8= +github.com/pingcap-incubator/tidb-dashboard v0.0.0-20200106155313-2082b0f3cabc/go.mod h1:Yx2Ix+adNvCO8F3tHgZmgt9sJhOjJy/B4CW/6filV4w= github.com/pingcap/check v0.0.0-20190102082844-67f458068fc8 h1:USx2/E1bX46VG32FIw034Au6seQ2fY9NEILmNh/UlQg= github.com/pingcap/check v0.0.0-20190102082844-67f458068fc8/go.mod h1:B1+S9LNcuMyLH/4HMTViQOJevkGiik3wW2AN9zb2fNQ= github.com/pingcap/check v0.0.0-20191107115940-caf2b9e6ccf4 h1:iRtOAQ6FXkY/BGvst3CDfTva4nTqh6CL8WXvanLdbu0= @@ -171,11 +242,19 @@ github.com/spf13/cobra v0.0.3/go.mod h1:1l0Ry5zgKvJasoi3XT1TypsSe7PqH0Sj9dhYf7v3 github.com/spf13/pflag v1.0.1 h1:aCvUg6QPl3ibpQUxyLkrEkCHtPqYJL4x9AuhqVqFis4= github.com/spf13/pflag v1.0.1/go.mod h1:DYY7MBk1bdzusC3SYhjObp+wFpr4gzcvqqNjLnInEg4= github.com/stretchr/objx v0.1.0/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME= +github.com/stretchr/objx v0.2.0/go.mod h1:qt09Ya8vawLte6SNmTgCsAVtYtaKzEcn8ATUoHMkEqE= github.com/stretchr/testify v1.2.2/go.mod h1:a8OnRcib4nhh0OaRAV+Yts87kKdq0PP7pXfy6kDkUVs= github.com/stretchr/testify v1.3.0 h1:TivCn/peBQ7UY8ooIcPgZFpTNSz0Q2U6UrFlUfqbe0Q= github.com/stretchr/testify v1.3.0/go.mod h1:M5WIy9Dh21IEIfnGCwXGc5bZfKNJtfHm1UVUgZn+9EI= github.com/stretchr/testify v1.4.0 h1:2E4SXV/wtOkTonXsotYi4li6zVWxYlZuYNCXe9XRJyk= github.com/stretchr/testify v1.4.0/go.mod h1:j7eGeouHqKxXV5pUuKE4zz7dFj8WfuZ+81PSLYec5m4= +github.com/swaggo/cli v1.20.0/go.mod h1:7jzoQluD0EWMc0rxx6kkPoRNfYNHkNJI/NokjEwJiwM= +github.com/swaggo/files v0.0.0-20190704085106-630677cd5c14/go.mod h1:gxQT6pBGRuIGunNf/+tSOB5OHvguWi8Tbt82WOkf35E= +github.com/swaggo/gin-swagger v1.2.0/go.mod h1:qlH2+W7zXGZkczuL+r2nEBR2JTT+/lX05Nn6vPhc7OI= +github.com/swaggo/http-swagger v0.0.0-20200103000832-0e9263c4b516/go.mod h1:O1lAbCgAAX/KZ80LM/OXwtWFI/5TvZlwxSg8Cq08PV0= +github.com/swaggo/swag v1.5.1/go.mod h1:1Bl9F/ZBpVWh22nY0zmYyASPO1lI/zIwRDrpZU+tv8Y= +github.com/swaggo/swag v1.6.3/go.mod h1:wcc83tB4Mb2aNiL/HP4MFeQdpHUrca+Rp/DRNgWAUio= +github.com/swaggo/swag v1.6.4/go.mod h1:3LVbAPI0ekF7sEPuA4XcVsSeVLAxx3hAPD3+O6b1vL4= github.com/syndtr/goleveldb v0.0.0-20180815032940-ae2bd5eed72d h1:4J9HCZVpvDmj2tiKGSTUnb3Ok/9CEQb9oqu9LHKQQpc= github.com/syndtr/goleveldb v0.0.0-20180815032940-ae2bd5eed72d/go.mod h1:Z4AUp2Km+PwemOoO/VB5AOx9XSsIItzFjoJlOSiYmn0= github.com/tmc/grpc-websocket-proxy v0.0.0-20170815181823-89b8d40f7ca8/go.mod h1:ncp9v5uamzpCO7NfCPTXjqaC+bZgJeR0sMTm6dMHP7U= @@ -183,8 +262,16 @@ github.com/tmc/grpc-websocket-proxy v0.0.0-20171017195756-830351dc03c6 h1:lYIiVD github.com/tmc/grpc-websocket-proxy v0.0.0-20171017195756-830351dc03c6/go.mod h1:ncp9v5uamzpCO7NfCPTXjqaC+bZgJeR0sMTm6dMHP7U= github.com/ugorji/go v1.1.2 h1:JON3E2/GPW2iDNGoSAusl1KDf5TRQ8k8q7Tp097pZGs= github.com/ugorji/go v1.1.2/go.mod h1:hnLbHMwcvSihnDhEfx2/BzKp2xb0Y+ErdfYcrs9tkJQ= +github.com/ugorji/go v1.1.4/go.mod h1:uQMGLiO92mf5W77hV/PUCpI3pbzQx3CRekS0kk+RGrc= +github.com/ugorji/go v1.1.5-pre/go.mod h1:FwP/aQVg39TXzItUBMwnWp9T9gPQnXw4Poh4/oBQZ/0= +github.com/ugorji/go v1.1.7 h1:/68gy2h+1mWMrwZFeD1kQialdSzAb432dtpeJ42ovdo= +github.com/ugorji/go v1.1.7/go.mod h1:kZn38zHttfInRq0xu/PH0az30d+z6vm202qpg1oXVMw= +github.com/ugorji/go/codec v0.0.0-20181022190402-e5e69e061d4f/go.mod h1:VFNgLljTbGfSG7qAOspJ7OScBnGdDN/yBr0sguwnwf0= github.com/ugorji/go/codec v0.0.0-20190204201341-e444a5086c43 h1:BasDe+IErOQKrMVXab7UayvSlIpiyGwRvuX3EKYY7UA= github.com/ugorji/go/codec v0.0.0-20190204201341-e444a5086c43/go.mod h1:iT03XoTwV7xq/+UGwKO3UbC1nNNlopQiY61beSdrtOA= +github.com/ugorji/go/codec v1.1.5-pre/go.mod h1:tULtS6Gy1AE1yCENaw4Vb//HLH5njI2tfCQDUqRd8fI= +github.com/ugorji/go/codec v1.1.7 h1:2SvQaVZ1ouYrrKKwoSk2pzd4A9evlKJb9oTL+OaLUSs= +github.com/ugorji/go/codec v1.1.7/go.mod h1:Ax+UKWsSmolVDwsd+7N3ZtXu+yMGCf907BLYF3GoBXY= github.com/unrolled/render v0.0.0-20171102162132-65450fb6b2d3 h1:ZsIlNwu/G0zbChIZaWOeZ2TPGNmKMt46jZLXi3e8LFc= github.com/unrolled/render v0.0.0-20171102162132-65450fb6b2d3/go.mod h1:tu82oB5W2ykJRVioYsB+IQKcft7ryBr7w12qMBUPyXg= github.com/urfave/cli v1.20.0/go.mod h1:70zkFmudgCuE/ngEzBv17Jvp/497gISqfk5gWijbERA= @@ -220,8 +307,11 @@ golang.org/x/crypto v0.0.0-20180608092829-8ac0e0d97ce4/go.mod h1:6SG95UA2DQfeDnf golang.org/x/crypto v0.0.0-20190308221718-c2843e01d9a2 h1:VklqNMn3ovrHsnt90PveolxSbWFaJdECFbxSq0Mqo2M= golang.org/x/crypto v0.0.0-20190308221718-c2843e01d9a2/go.mod h1:djNgcEr1/C05ACkg1iLfiJU5Ep61QUkGW8qpdssI0+w= golang.org/x/crypto v0.0.0-20190510104115-cbcb75029529/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI= +golang.org/x/crypto v0.0.0-20190611184440-5c40567a22f8/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI= golang.org/x/crypto v0.0.0-20190909091759-094676da4a83 h1:mgAKeshyNqWKdENOnQsg+8dRTwZFIwFaO3HNl52sweA= golang.org/x/crypto v0.0.0-20190909091759-094676da4a83/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI= +golang.org/x/crypto v0.0.0-20191011191535-87dc89f01550 h1:ObdrDkeb4kJdCP557AjRjq69pTHfNouLtWZG7j9rPN8= +golang.org/x/crypto v0.0.0-20191011191535-87dc89f01550/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI= golang.org/x/exp v0.0.0-20190121172915-509febef88a4/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA= golang.org/x/lint v0.0.0-20181026193005-c67002cb31c3/go.mod h1:UVdnD1Gm6xHRNCYTkRU2/jEulfH38KcIWyp/GAMgvoE= golang.org/x/lint v0.0.0-20190227174305-5b3e6a55c961/go.mod h1:wehouNa3lNwaWXcvxsM5YxQ5yQlVC4a0KAMCusXpPoU= @@ -229,17 +319,25 @@ golang.org/x/lint v0.0.0-20190313153728-d0100b6bd8b3/go.mod h1:6SW0HCj/g11FgYtHl golang.org/x/lint v0.0.0-20190930215403-16217165b5de h1:5hukYrvBGR8/eNkX5mdUezrA6JiaEZDtJb9Ei+1LlBs= golang.org/x/lint v0.0.0-20190930215403-16217165b5de/go.mod h1:6SW0HCj/g11FgYtHlgUYUwCkIfeOF89ocIRzGO/8vkc= golang.org/x/mod v0.0.0-20190513183733-4bf6d317e70e/go.mod h1:mXi4GBBbnImb6dmsKGUJ2LatrhH/nqhxcFungHvyanc= +golang.org/x/mod v0.1.1-0.20191105210325-c90efee705ee/go.mod h1:QqPTAvyqsEbceGzBzNggFXnrqF1CaUcvgkdR5Ot7KZg= golang.org/x/net v0.0.0-20180724234803-3673e40ba225/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= golang.org/x/net v0.0.0-20180826012351-8a410e7b638d/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= golang.org/x/net v0.0.0-20180906233101-161cd47e91fd/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= golang.org/x/net v0.0.0-20181005035420-146acd28ed58 h1:otZG8yDCO4LVps5+9bxOeNiCvgmOyt96J3roHTYs7oE= golang.org/x/net v0.0.0-20181005035420-146acd28ed58/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= +golang.org/x/net v0.0.0-20181220203305-927f97764cc3/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= golang.org/x/net v0.0.0-20190213061140-3a22650c66bd/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= golang.org/x/net v0.0.0-20190311183353-d8887717615a/go.mod h1:t9HGtf8HONx5eT2rtn7q6eTqICYqUVnKs3thJo3Qplg= golang.org/x/net v0.0.0-20190404232315-eb5bcb51f2a3/go.mod h1:t9HGtf8HONx5eT2rtn7q6eTqICYqUVnKs3thJo3Qplg= +golang.org/x/net v0.0.0-20190503192946-f4e77d36d62c/go.mod h1:t9HGtf8HONx5eT2rtn7q6eTqICYqUVnKs3thJo3Qplg= +golang.org/x/net v0.0.0-20190611141213-3f473d35a33a/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= +golang.org/x/net v0.0.0-20190613194153-d28f0bde5980/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= golang.org/x/net v0.0.0-20190620200207-3b0461eec859/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= +golang.org/x/net v0.0.0-20190827160401-ba9fcec4b297/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= golang.org/x/net v0.0.0-20190909003024-a7b16738d86b h1:XfVGCX+0T4WOStkaOsJRllbsiImhB2jgVBGc9L0lPGc= golang.org/x/net v0.0.0-20190909003024-a7b16738d86b/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= +golang.org/x/net v0.0.0-20191209160850-c0dbc17a3553 h1:efeOvDhwQ29Dj3SdAV/MJf8oukgn+8D8WgaCaRMchF8= +golang.org/x/net v0.0.0-20191209160850-c0dbc17a3553/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= golang.org/x/oauth2 v0.0.0-20180821212333-d2e6202438be/go.mod h1:N/0e6XlmueqKjAGxoOufVs8QHGRruUQn6yWY3a++T0U= golang.org/x/sync v0.0.0-20180314180146-1d60e4601c6f/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20181108010431-42b317875d0f/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= @@ -250,26 +348,45 @@ golang.org/x/sync v0.0.0-20190423024810-112230192c58/go.mod h1:RxMgew5VJxzue5/jJ golang.org/x/sys v0.0.0-20180830151530-49385e6e1522/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= golang.org/x/sys v0.0.0-20180909124046-d0be0721c37e h1:o3PsSEY8E4eXWkXrIP9YJALUkVZqzHJT5DOasTyn8Vs= golang.org/x/sys v0.0.0-20180909124046-d0be0721c37e/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= +golang.org/x/sys v0.0.0-20181228144115-9a3f9b0469bb/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= golang.org/x/sys v0.0.0-20190215142949-d0b11bdaac8a h1:1BGLXjeY4akVXGgbC9HugT3Jv3hCI0z56oJR5vAMgBU= golang.org/x/sys v0.0.0-20190215142949-d0b11bdaac8a/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= +golang.org/x/sys v0.0.0-20190222072716-a9d3bda3a223/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= golang.org/x/sys v0.0.0-20190412213103-97732733099d/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20190422165155-953cdadca894/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20190507160741-ecd444e8653b/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20190610200419-93c9922d18ae/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20190616124812-15dcb6c0061f/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20190813064441-fde4db37ae7a/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20190909082730-f460065e899a h1:mIzbOulag9/gXacgxKlFVwpCOWSfBT3/pDyyCwGA9as= golang.org/x/sys v0.0.0-20190909082730-f460065e899a/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20191026070338-33540a1f6037/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20200103143344-a1369afcdac7 h1:/W9OPMnnpmFXHYkcp2rQsbFUbRlRzfECQjmAFiOyHE8= +golang.org/x/sys v0.0.0-20200103143344-a1369afcdac7/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20200106114638-5f8ca72cd632 h1:ateQkYCVYo8UwIBvoR3zj1Dh2K6Op/n3GxemXfB44/Y= +golang.org/x/sys v0.0.0-20200106114638-5f8ca72cd632/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/text v0.3.0 h1:g61tztE5qeGQ89tm6NTjjM9VPIm088od1l6aSorWRWg= golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= +golang.org/x/text v0.3.2 h1:tW2bmiBqwgJj/UpqtC8EpXEZVYOwU0yG4iWbprSVAcs= +golang.org/x/text v0.3.2/go.mod h1:bEr9sfX3Q8Zfm5fL9x+3itogRgK3+ptLWKqgva+5dAk= golang.org/x/time v0.0.0-20180412165947-fbb02b2291d2 h1:+DCIGbF/swA92ohVg0//6X2IVY3KZs6p9mix0ziNYJM= golang.org/x/time v0.0.0-20180412165947-fbb02b2291d2/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ= +golang.org/x/tools v0.0.0-20180917221912-90fa682c2a6e/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= golang.org/x/tools v0.0.0-20190114222345-bf090417da8b/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= golang.org/x/tools v0.0.0-20190226205152-f727befe758c/go.mod h1:9Yl7xja0Znq3iFh3HoIrodX9oNMXvdceNzlUR8zjMvY= golang.org/x/tools v0.0.0-20190311212946-11955173bddd/go.mod h1:LCzVGOaR6xXOjkQ3onu1FJEFr0SW1gC7cKk1uF8kGRs= golang.org/x/tools v0.0.0-20190524140312-2c0ae7006135/go.mod h1:RgjU9mgBXZiqYHBnxXauZ1Gv1EHHAz9KjViQ78xBX0Q= +golang.org/x/tools v0.0.0-20190606050223-4d9ae51c2468/go.mod h1:/rFqwRUd4F7ZHNgwSSTFct+R/Kf4OFW1sUzUTQQTgfc= +golang.org/x/tools v0.0.0-20190611222205-d73e1c7e250b/go.mod h1:/rFqwRUd4F7ZHNgwSSTFct+R/Kf4OFW1sUzUTQQTgfc= +golang.org/x/tools v0.0.0-20190614205625-5aca471b1d59/go.mod h1:/rFqwRUd4F7ZHNgwSSTFct+R/Kf4OFW1sUzUTQQTgfc= golang.org/x/tools v0.0.0-20190621195816-6e04913cbbac/go.mod h1:/rFqwRUd4F7ZHNgwSSTFct+R/Kf4OFW1sUzUTQQTgfc= golang.org/x/tools v0.0.0-20191029041327-9cc4af7d6b2c/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= golang.org/x/tools v0.0.0-20191029190741-b9c20aec41a5/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= golang.org/x/tools v0.0.0-20191107010934-f79515f33823 h1:akkRBeitX2EZP59KdtKw310CI4WGPCNPyrLbE7WZA8Y= golang.org/x/tools v0.0.0-20191107010934-f79515f33823/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= +golang.org/x/tools v0.0.0-20200103221440-774c71fcf114/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28= golang.org/x/xerrors v0.0.0-20190717185122-a985d3407aa7/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= +golang.org/x/xerrors v0.0.0-20191011141410-1b5146add898/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= google.golang.org/appengine v1.1.0/go.mod h1:EbEs0AVv82hx2wNQdGPgUI5lhzA/G0D9YwlJXL52JkM= google.golang.org/appengine v1.4.0/go.mod h1:xpcJRLb0r/rnEns0DIKYYv+WjYCduHsrkT7/EB5XEv4= google.golang.org/genproto v0.0.0-20180608181217-32ee49c4dd80/go.mod h1:JiN7NxoALGmiZfu7CAH4rXhgtRTLTxftemlI0sWmxmc= @@ -299,6 +416,11 @@ gopkg.in/fsnotify.v1 v1.4.7 h1:xOHLXZwVvI9hhs+cLKq5+I5onOuwQLhQwiu63xxlHs4= gopkg.in/fsnotify.v1 v1.4.7/go.mod h1:Tz8NjZHkW78fSQdbUxIjBTcgA1z1m8ZHf0WmKUhAMys= gopkg.in/gemnasium/logrus-airbrake-hook.v2 v2.1.2 h1:OAj3g0cR6Dx/R07QgQe8wkA9RNjB2u4i700xBkIT4e0= gopkg.in/gemnasium/logrus-airbrake-hook.v2 v2.1.2/go.mod h1:Xk6kEKp8OKb+X14hQBKWaSkCsqBpgog8nAV2xsGOxlo= +gopkg.in/go-playground/assert.v1 v1.2.1/go.mod h1:9RXL0bg/zibRAgZUYszZSwO/z8Y/a8bDuhia5mkpMnE= +gopkg.in/go-playground/validator.v8 v8.18.2/go.mod h1:RX2a/7Ha8BgOhfk7j780h4/u/RRjR0eouCJSH80/M2Y= +gopkg.in/go-playground/validator.v9 v9.29.1/go.mod h1:+c9/zcJMFNgbLvly1L1V+PpxWdVbfP1avr/N00E2vyQ= +gopkg.in/go-playground/validator.v9 v9.31.0 h1:bmXmP2RSNtFES+bn4uYuHT7iJFJv7Vj+an+ZQdDaD1M= +gopkg.in/go-playground/validator.v9 v9.31.0/go.mod h1:+c9/zcJMFNgbLvly1L1V+PpxWdVbfP1avr/N00E2vyQ= gopkg.in/natefinch/lumberjack.v2 v2.0.0 h1:1Lc07Kr7qY4U2YPouBjpCLxpiyxIVoxqXgkXLknAOE8= gopkg.in/natefinch/lumberjack.v2 v2.0.0/go.mod h1:l0ndWWf7gzL7RNwBG7wST/UCcT4T24xpD6X8LsfU/+k= gopkg.in/tomb.v1 v1.0.0-20141024135613-dd632973f1e7 h1:uRGJdciOHaEIrze2W8Q3AKkepLTh2hOroT7a+7czfdQ= @@ -306,6 +428,9 @@ gopkg.in/tomb.v1 v1.0.0-20141024135613-dd632973f1e7/go.mod h1:dt/ZhP58zS4L8KSrWD gopkg.in/yaml.v2 v2.2.1/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI= gopkg.in/yaml.v2 v2.2.2 h1:ZCJp+EgiOT7lHqUV2J862kp8Qj64Jo6az82+3Td9dZw= gopkg.in/yaml.v2 v2.2.2/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI= +gopkg.in/yaml.v2 v2.2.4/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI= +gopkg.in/yaml.v2 v2.2.7 h1:VUgggvou5XRW9mHwD/yXxIYSMtY0zoKQf/v226p2nyo= +gopkg.in/yaml.v2 v2.2.7/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI= honnef.co/go/tools v0.0.0-20190102054323-c2f93a96b099/go.mod h1:rf3lG4BRIbNafJWhAfAdb/ePZxsR/4RtNHQocxwk9r4= honnef.co/go/tools v0.0.0-20190523083050-ea95bdfd59fc/go.mod h1:rf3lG4BRIbNafJWhAfAdb/ePZxsR/4RtNHQocxwk9r4= honnef.co/go/tools v0.0.1-2019.2.3 h1:3JgtbtFHMiCmsznwGVTUWbgGov+pVqnlf1dEJTNAXeM= diff --git a/pkg/dashboard/uiserver/.gitignore b/pkg/dashboard/uiserver/.gitignore new file mode 100644 index 00000000000..6bdcefb9ec5 --- /dev/null +++ b/pkg/dashboard/uiserver/.gitignore @@ -0,0 +1 @@ +/embedded_assets_handler.go diff --git a/pkg/dashboard/uiserver/empty_assets_handler.go b/pkg/dashboard/uiserver/empty_assets_handler.go new file mode 100644 index 00000000000..8ae95dfae5a --- /dev/null +++ b/pkg/dashboard/uiserver/empty_assets_handler.go @@ -0,0 +1,23 @@ +// Copyright 2020 PingCAP, Inc. +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// See the License for the specific language governing permissions and +// limitations under the License. +// +build !dashboard_ui + +package uiserver + +import ( + assetfs "github.com/elazarl/go-bindata-assetfs" +) + +func assetFS() *assetfs.AssetFS { + return nil +} diff --git a/pkg/dashboard/uiserver/uiserver.go b/pkg/dashboard/uiserver/uiserver.go new file mode 100644 index 00000000000..81caebf4be1 --- /dev/null +++ b/pkg/dashboard/uiserver/uiserver.go @@ -0,0 +1,31 @@ +// Copyright 2020 PingCAP, Inc. +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// See the License for the specific language governing permissions and +// limitations under the License. + +package uiserver + +import ( + "io" + "net/http" +) + +func Handler() http.Handler { + fs := assetFS() + if fs == nil { + return http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) { + _, _ = io.WriteString(w, "Dashboard UI is not built.\n") + }) + } else { + fileServer := http.FileServer(assetFS()) + return fileServer + } +} diff --git a/scripts/embed-dashboard-ui.sh b/scripts/embed-dashboard-ui.sh new file mode 100755 index 00000000000..ee58973bf8f --- /dev/null +++ b/scripts/embed-dashboard-ui.sh @@ -0,0 +1,30 @@ +#!/usr/bin/env bash +set -euo pipefail + +BASE_DIR=$(git rev-parse --show-toplevel) + +echo '+ Fetch Dashboard Go module' +go mod download + +echo '+ Discover Dashboard UI version' + +DASHBOARD_DIR=$(go list -f "{{.Dir}}" -m github.com/pingcap-incubator/tidb-dashboard) +echo " - Dashboard directory: ${DASHBOARD_DIR}" + +DASHBOARD_UI_VERSION=$(grep -v '^#' ${DASHBOARD_DIR}/ui/.github_release_version) +echo " - Dashboard ui version: ${DASHBOARD_UI_VERSION}" + +echo '+ Fetch pre-built embedded assets' + +DOWNLOAD_URL="https://github.com/pingcap-incubator/tidb-dashboard/releases/download/ui_release_${DASHBOARD_UI_VERSION}/embedded-assets-golang.zip" +echo " - Download archive ${DOWNLOAD_URL}" +curl -L ${DOWNLOAD_URL} > embedded-assets-golang.zip + +echo '+ Unpack embedded asset' + +unzip -o embedded-assets-golang.zip +rm embedded-assets-golang.zip +MOVE_FILE=embedded_assets_handler.go +MOVE_DEST=pkg/dashboard/uiserver +mv ${MOVE_FILE} ${MOVE_DEST} +echo " - Unpacked ${MOVE_DEST}/${MOVE_FILE}" diff --git a/server/server.go b/server/server.go index de306bc8ab2..d516feab057 100755 --- a/server/server.go +++ b/server/server.go @@ -35,6 +35,7 @@ import ( "github.com/pingcap/kvproto/pkg/metapb" "github.com/pingcap/kvproto/pkg/pdpb" "github.com/pingcap/log" + "github.com/pingcap/pd/pkg/dashboard/uiserver" "github.com/pingcap/pd/pkg/etcdutil" "github.com/pingcap/pd/pkg/logutil" "github.com/pingcap/pd/pkg/typeutil" @@ -67,6 +68,7 @@ const ( pdRootPath = "/pd" pdAPIPrefix = "/pd/" webPath = "/web/" + dashboardPath = "/dashboard/" pdClusterIDPath = "/pd/cluster_id" ) @@ -206,8 +208,9 @@ func CreateServer(ctx context.Context, cfg *config.Config, apiBuilders ...Handle } etcdCfg.UserHandlers = map[string]http.Handler{ - pdAPIPrefix: apiHandler, - webPath: http.StripPrefix(webPath, ui.Handler()), + pdAPIPrefix: apiHandler, + webPath: http.StripPrefix(webPath, ui.Handler()), + dashboardPath: uiserver.Handler(), } } etcdCfg.ServiceRegister = func(gs *grpc.Server) { From 76627dc299f999f986b9b40404643694b9993be8 Mon Sep 17 00:00:00 2001 From: Breezewish Date: Wed, 8 Jan 2020 11:13:04 +0800 Subject: [PATCH 02/13] Integrate Dashboard with PD Signed-off-by: Breezewish --- .gitignore | 1 + go.mod | 4 ++-- go.sum | 4 ++++ scripts/embed-dashboard-ui.sh | 32 ++++++++++++++++++++++---------- server/server.go | 19 +++++++++++-------- 5 files changed, 40 insertions(+), 20 deletions(-) diff --git a/.gitignore b/.gitignore index 96848f7a830..a81dd23f71e 100644 --- a/.gitignore +++ b/.gitignore @@ -13,3 +13,4 @@ default* .vscode/ bindata.go /pkg/ui/pd-web/* +/.cache diff --git a/go.mod b/go.mod index e3b7ddd7417..873840c372c 100644 --- a/go.mod +++ b/go.mod @@ -29,7 +29,7 @@ require ( github.com/onsi/gomega v1.4.2 // indirect github.com/opentracing/opentracing-go v1.0.2 github.com/phf/go-queue v0.0.0-20170504031614-9abe38d0371d - github.com/pingcap-incubator/tidb-dashboard v0.0.0-20200106155313-2082b0f3cabc // indirect + github.com/pingcap-incubator/tidb-dashboard v0.0.0-20200108014525-06bfab74f3b7 github.com/pingcap/check v0.0.0-20191107115940-caf2b9e6ccf4 github.com/pingcap/errcode v0.0.0-20180921232412-a1a7271709d9 github.com/pingcap/failpoint v0.0.0-20191029060244-12f4ac2fd11d @@ -48,7 +48,7 @@ require ( go.etcd.io/etcd v0.5.0-alpha.5.0.20191023171146-3cf2f69b5738 go.uber.org/goleak v0.10.0 go.uber.org/zap v1.12.0 - golang.org/x/sys v0.0.0-20200106162015-b016eb3dc98e // indirect + golang.org/x/sys v0.0.0-20200107162124-548cf772de50 // indirect google.golang.org/grpc v1.25.1 gopkg.in/natefinch/lumberjack.v2 v2.0.0 ) diff --git a/go.sum b/go.sum index 3454f779f8f..eac9357bfd0 100644 --- a/go.sum +++ b/go.sum @@ -205,6 +205,8 @@ github.com/phf/go-queue v0.0.0-20170504031614-9abe38d0371d h1:U+PMnTlV2tu7RuMK5e github.com/phf/go-queue v0.0.0-20170504031614-9abe38d0371d/go.mod h1:lXfE4PvvTW5xOjO6Mba8zDPyw8M93B6AQ7frTGnMlA8= github.com/pingcap-incubator/tidb-dashboard v0.0.0-20200106155313-2082b0f3cabc h1:JDqCtzyqVkc+r8xDDNZ/3/hPSx4lZREFNi8DVGQTmt8= github.com/pingcap-incubator/tidb-dashboard v0.0.0-20200106155313-2082b0f3cabc/go.mod h1:Yx2Ix+adNvCO8F3tHgZmgt9sJhOjJy/B4CW/6filV4w= +github.com/pingcap-incubator/tidb-dashboard v0.0.0-20200108014525-06bfab74f3b7 h1:CXjxxx38HnMs/R4NkXoMkntBhKP+D28gAjxB7xAc0AA= +github.com/pingcap-incubator/tidb-dashboard v0.0.0-20200108014525-06bfab74f3b7/go.mod h1:Yx2Ix+adNvCO8F3tHgZmgt9sJhOjJy/B4CW/6filV4w= github.com/pingcap/check v0.0.0-20190102082844-67f458068fc8 h1:USx2/E1bX46VG32FIw034Au6seQ2fY9NEILmNh/UlQg= github.com/pingcap/check v0.0.0-20190102082844-67f458068fc8/go.mod h1:B1+S9LNcuMyLH/4HMTViQOJevkGiik3wW2AN9zb2fNQ= github.com/pingcap/check v0.0.0-20191107115940-caf2b9e6ccf4 h1:iRtOAQ6FXkY/BGvst3CDfTva4nTqh6CL8WXvanLdbu0= @@ -381,6 +383,8 @@ golang.org/x/sys v0.0.0-20200103143344-a1369afcdac7 h1:/W9OPMnnpmFXHYkcp2rQsbFUb golang.org/x/sys v0.0.0-20200103143344-a1369afcdac7/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20200106162015-b016eb3dc98e h1:LwyF2AFISC9nVbS6MgzsaQNSUsRXI49GS+YQ5KX/QH0= golang.org/x/sys v0.0.0-20200106162015-b016eb3dc98e/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20200107162124-548cf772de50 h1:YvQ10rzcqWXLlJZ3XCUoO25savxmscf4+SC+ZqiCHhA= +golang.org/x/sys v0.0.0-20200107162124-548cf772de50/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/text v0.3.0 h1:g61tztE5qeGQ89tm6NTjjM9VPIm088od1l6aSorWRWg= golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= golang.org/x/text v0.3.2 h1:tW2bmiBqwgJj/UpqtC8EpXEZVYOwU0yG4iWbprSVAcs= diff --git a/scripts/embed-dashboard-ui.sh b/scripts/embed-dashboard-ui.sh index ee58973bf8f..11597d95028 100755 --- a/scripts/embed-dashboard-ui.sh +++ b/scripts/embed-dashboard-ui.sh @@ -2,6 +2,10 @@ set -euo pipefail BASE_DIR=$(git rev-parse --show-toplevel) +CACHE_DIR=${BASE_DIR}/.cache + +echo '+ Create cache directory' +mkdir -p ${CACHE_DIR} echo '+ Fetch Dashboard Go module' go mod download @@ -14,16 +18,24 @@ echo " - Dashboard directory: ${DASHBOARD_DIR}" DASHBOARD_UI_VERSION=$(grep -v '^#' ${DASHBOARD_DIR}/ui/.github_release_version) echo " - Dashboard ui version: ${DASHBOARD_UI_VERSION}" -echo '+ Fetch pre-built embedded assets' - -DOWNLOAD_URL="https://github.com/pingcap-incubator/tidb-dashboard/releases/download/ui_release_${DASHBOARD_UI_VERSION}/embedded-assets-golang.zip" -echo " - Download archive ${DOWNLOAD_URL}" -curl -L ${DOWNLOAD_URL} > embedded-assets-golang.zip - -echo '+ Unpack embedded asset' - -unzip -o embedded-assets-golang.zip -rm embedded-assets-golang.zip +echo '+ Check embedded assets exists in cache' +CACHE_FILE=${CACHE_DIR}/embedded-assets-golang-${DASHBOARD_UI_VERSION}.zip +if [[ -f "$CACHE_FILE" ]]; then + echo " - Cached archive exists: ${CACHE_FILE}" +else + echo ' - Cached archive does not exist' + echo ' - Download pre-built embedded assets from GitHub release' + + DOWNLOAD_URL="https://github.com/pingcap-incubator/tidb-dashboard/releases/download/ui_release_${DASHBOARD_UI_VERSION}/embedded-assets-golang.zip" + echo " - Download ${DOWNLOAD_URL}" + curl -L ${DOWNLOAD_URL} > embedded-assets-golang.zip + + echo " - Save archive to cache: ${CACHE_FILE}" + mv embedded-assets-golang.zip ${CACHE_FILE} +fi + +echo '+ Unpack embedded asset from archive' +unzip -o ${CACHE_FILE} MOVE_FILE=embedded_assets_handler.go MOVE_DEST=pkg/dashboard/uiserver mv ${MOVE_FILE} ${MOVE_DEST} diff --git a/server/server.go b/server/server.go index d516feab057..0fc92c85f5e 100755 --- a/server/server.go +++ b/server/server.go @@ -29,6 +29,7 @@ import ( "github.com/coreos/go-semver/semver" "github.com/golang/protobuf/proto" "github.com/gorilla/mux" + "github.com/pingcap-incubator/tidb-dashboard/pkg/apiserver" "github.com/pingcap/failpoint" "github.com/pingcap/kvproto/pkg/configpb" "github.com/pingcap/kvproto/pkg/diagnosticspb" @@ -65,11 +66,12 @@ const ( serverMetricsInterval = time.Minute leaderTickInterval = 50 * time.Millisecond // pdRootPath for all pd servers. - pdRootPath = "/pd" - pdAPIPrefix = "/pd/" - webPath = "/web/" - dashboardPath = "/dashboard/" - pdClusterIDPath = "/pd/cluster_id" + pdRootPath = "/pd" + pdAPIPrefix = "/pd/" + webPath = "/web/" + dashboardUiPath = "/dashboard/" + dashboardApiPath = "/dashboard/api/" + pdClusterIDPath = "/pd/cluster_id" ) var ( @@ -208,9 +210,10 @@ func CreateServer(ctx context.Context, cfg *config.Config, apiBuilders ...Handle } etcdCfg.UserHandlers = map[string]http.Handler{ - pdAPIPrefix: apiHandler, - webPath: http.StripPrefix(webPath, ui.Handler()), - dashboardPath: uiserver.Handler(), + pdAPIPrefix: apiHandler, + webPath: http.StripPrefix(webPath, ui.Handler()), + dashboardUiPath: http.StripPrefix(dashboardUiPath, uiserver.Handler()), + dashboardApiPath: apiserver.Handler(dashboardApiPath), } } etcdCfg.ServiceRegister = func(gs *grpc.Server) { From 4affb6c6611139f0269303eaeda2eaaad72ea27e Mon Sep 17 00:00:00 2001 From: Breezewish Date: Wed, 8 Jan 2020 11:22:16 +0800 Subject: [PATCH 03/13] Fix some lint issues Signed-off-by: Breezewish --- pkg/dashboard/uiserver/uiserver.go | 13 +++++++------ server/server.go | 8 ++++---- 2 files changed, 11 insertions(+), 10 deletions(-) diff --git a/pkg/dashboard/uiserver/uiserver.go b/pkg/dashboard/uiserver/uiserver.go index 81caebf4be1..d833200b133 100644 --- a/pkg/dashboard/uiserver/uiserver.go +++ b/pkg/dashboard/uiserver/uiserver.go @@ -18,14 +18,15 @@ import ( "net/http" ) +// Handler returns an http.Handler that serves the dashboard UI. func Handler() http.Handler { fs := assetFS() - if fs == nil { - return http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) { - _, _ = io.WriteString(w, "Dashboard UI is not built.\n") - }) - } else { - fileServer := http.FileServer(assetFS()) + if fs != nil { + fileServer := http.FileServer(fs) return fileServer } + + return http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) { + _, _ = io.WriteString(w, "Dashboard UI is not built.\n") + }) } diff --git a/server/server.go b/server/server.go index 0fc92c85f5e..9b57a179107 100755 --- a/server/server.go +++ b/server/server.go @@ -69,8 +69,8 @@ const ( pdRootPath = "/pd" pdAPIPrefix = "/pd/" webPath = "/web/" - dashboardUiPath = "/dashboard/" - dashboardApiPath = "/dashboard/api/" + dashboardUIPath = "/dashboard/" + dashboardAPIPath = "/dashboard/api/" pdClusterIDPath = "/pd/cluster_id" ) @@ -212,8 +212,8 @@ func CreateServer(ctx context.Context, cfg *config.Config, apiBuilders ...Handle etcdCfg.UserHandlers = map[string]http.Handler{ pdAPIPrefix: apiHandler, webPath: http.StripPrefix(webPath, ui.Handler()), - dashboardUiPath: http.StripPrefix(dashboardUiPath, uiserver.Handler()), - dashboardApiPath: apiserver.Handler(dashboardApiPath), + dashboardUIPath: http.StripPrefix(dashboardUIPath, uiserver.Handler()), + dashboardAPIPath: apiserver.Handler(dashboardAPIPath), } } etcdCfg.ServiceRegister = func(gs *grpc.Server) { From c78ae28b823086aa075aa9fcb9a33c7903e36c8a Mon Sep 17 00:00:00 2001 From: Breezewish Date: Wed, 8 Jan 2020 11:50:21 +0800 Subject: [PATCH 04/13] Tidy go modules Signed-off-by: Breezewish --- go.mod | 1 - go.sum | 10 ++-------- 2 files changed, 2 insertions(+), 9 deletions(-) diff --git a/go.mod b/go.mod index 873840c372c..e8b95d03c40 100644 --- a/go.mod +++ b/go.mod @@ -19,7 +19,6 @@ require ( github.com/golang/protobuf v1.3.2 github.com/golang/snappy v0.0.0-20180518054509-2e65f85255db // indirect github.com/google/btree v1.0.0 - github.com/gorilla/context v0.0.0-20160226214623-1ea25387ff6f // indirect github.com/gorilla/mux v1.7.3 github.com/gorilla/websocket v1.2.0 // indirect github.com/grpc-ecosystem/go-grpc-prometheus v1.2.0 diff --git a/go.sum b/go.sum index eac9357bfd0..28767f39247 100644 --- a/go.sum +++ b/go.sum @@ -120,10 +120,6 @@ github.com/google/renameio v0.1.0/go.mod h1:KWCgfxg9yswjAJkECMjeO8J8rahYeXnNhOm4 github.com/google/shlex v0.0.0-20181106134648-c34317bd91bf/go.mod h1:RpwtwJQFrIEPstU94h88MWPXP2ektJZ8cZ0YntAmXiE= github.com/google/uuid v1.0.0 h1:b4Gk+7WdP/d3HZH8EJsZpvV7EtDOgaZLtnaNGIu1adA= github.com/google/uuid v1.0.0/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo= -github.com/gorilla/context v0.0.0-20160226214623-1ea25387ff6f h1:9oNbS1z4rVpbnkHBdPZU4jo9bSmrLpII768arSyMFgk= -github.com/gorilla/context v0.0.0-20160226214623-1ea25387ff6f/go.mod h1:kBGZzfjB9CEq2AlWe17Uuf7NDRt0dE0s8S51q0aT7Yg= -github.com/gorilla/mux v1.6.1 h1:KOwqsTYZdeuMacU7CxjMNYEKeBvLbxW+psodrbcEa3A= -github.com/gorilla/mux v1.6.1/go.mod h1:1lud6UwP+6orDFRuTfBEV8e9/aOM/c4fVVCaMa2zaAs= github.com/gorilla/mux v1.7.3 h1:gnP5JzjVOuiZD07fKKToCAOjS0yOpj/qPETTXCCS6hw= github.com/gorilla/mux v1.7.3/go.mod h1:1lud6UwP+6orDFRuTfBEV8e9/aOM/c4fVVCaMa2zaAs= github.com/gorilla/websocket v0.0.0-20170926233335-4201258b820c/go.mod h1:E7qHFY5m1UJ88s3WnNqhKjPHQ0heANvMoAMk2YaljkQ= @@ -203,8 +199,6 @@ github.com/opentracing/opentracing-go v1.0.2/go.mod h1:UkNAQd3GIcIGf0SeVgPpRdFSt github.com/pelletier/go-toml v1.3.0/go.mod h1:PN7xzY2wHTK0K9p34ErDQMlFxa51Fk0OUruD3k1mMwo= github.com/phf/go-queue v0.0.0-20170504031614-9abe38d0371d h1:U+PMnTlV2tu7RuMK5etusZG3Cf+rpow5hqQByeCzJ2g= github.com/phf/go-queue v0.0.0-20170504031614-9abe38d0371d/go.mod h1:lXfE4PvvTW5xOjO6Mba8zDPyw8M93B6AQ7frTGnMlA8= -github.com/pingcap-incubator/tidb-dashboard v0.0.0-20200106155313-2082b0f3cabc h1:JDqCtzyqVkc+r8xDDNZ/3/hPSx4lZREFNi8DVGQTmt8= -github.com/pingcap-incubator/tidb-dashboard v0.0.0-20200106155313-2082b0f3cabc/go.mod h1:Yx2Ix+adNvCO8F3tHgZmgt9sJhOjJy/B4CW/6filV4w= github.com/pingcap-incubator/tidb-dashboard v0.0.0-20200108014525-06bfab74f3b7 h1:CXjxxx38HnMs/R4NkXoMkntBhKP+D28gAjxB7xAc0AA= github.com/pingcap-incubator/tidb-dashboard v0.0.0-20200108014525-06bfab74f3b7/go.mod h1:Yx2Ix+adNvCO8F3tHgZmgt9sJhOjJy/B4CW/6filV4w= github.com/pingcap/check v0.0.0-20190102082844-67f458068fc8 h1:USx2/E1bX46VG32FIw034Au6seQ2fY9NEILmNh/UlQg= @@ -381,8 +375,6 @@ golang.org/x/sys v0.0.0-20190826190057-c7b8b68b1456/go.mod h1:h1NjWce9XRLGQEsW7w golang.org/x/sys v0.0.0-20191026070338-33540a1f6037/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20200103143344-a1369afcdac7 h1:/W9OPMnnpmFXHYkcp2rQsbFUbRlRzfECQjmAFiOyHE8= golang.org/x/sys v0.0.0-20200103143344-a1369afcdac7/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20200106162015-b016eb3dc98e h1:LwyF2AFISC9nVbS6MgzsaQNSUsRXI49GS+YQ5KX/QH0= -golang.org/x/sys v0.0.0-20200106162015-b016eb3dc98e/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20200107162124-548cf772de50 h1:YvQ10rzcqWXLlJZ3XCUoO25savxmscf4+SC+ZqiCHhA= golang.org/x/sys v0.0.0-20200107162124-548cf772de50/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/text v0.3.0 h1:g61tztE5qeGQ89tm6NTjjM9VPIm088od1l6aSorWRWg= @@ -405,6 +397,7 @@ golang.org/x/tools v0.0.0-20191029041327-9cc4af7d6b2c/go.mod h1:b+2E5dAYhXwXZwtn golang.org/x/tools v0.0.0-20191029190741-b9c20aec41a5/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= golang.org/x/tools v0.0.0-20191107010934-f79515f33823 h1:akkRBeitX2EZP59KdtKw310CI4WGPCNPyrLbE7WZA8Y= golang.org/x/tools v0.0.0-20191107010934-f79515f33823/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= +golang.org/x/tools v0.0.0-20200103221440-774c71fcf114 h1:DnSr2mCsxyCE6ZgIkmcWUQY2R5cH/6wL7eIxEmQOMSE= golang.org/x/tools v0.0.0-20200103221440-774c71fcf114/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28= golang.org/x/xerrors v0.0.0-20190717185122-a985d3407aa7/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= golang.org/x/xerrors v0.0.0-20191011141410-1b5146add898/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= @@ -433,6 +426,7 @@ gopkg.in/cheggaaa/pb.v1 v1.0.25/go.mod h1:V/YB90LKu/1FcN3WVnfiiE5oMCibMjukxqG/qS gopkg.in/errgo.v2 v2.1.0/go.mod h1:hNsd1EY+bozCKY1Ytp96fpM3vjJbqLJn88ws8XvfDNI= gopkg.in/fsnotify.v1 v1.4.7 h1:xOHLXZwVvI9hhs+cLKq5+I5onOuwQLhQwiu63xxlHs4= gopkg.in/fsnotify.v1 v1.4.7/go.mod h1:Tz8NjZHkW78fSQdbUxIjBTcgA1z1m8ZHf0WmKUhAMys= +gopkg.in/go-playground/assert.v1 v1.2.1 h1:xoYuJVE7KT85PYWrN730RguIQO0ePzVRfFMXadIrXTM= gopkg.in/go-playground/assert.v1 v1.2.1/go.mod h1:9RXL0bg/zibRAgZUYszZSwO/z8Y/a8bDuhia5mkpMnE= gopkg.in/go-playground/validator.v8 v8.18.2/go.mod h1:RX2a/7Ha8BgOhfk7j780h4/u/RRjR0eouCJSH80/M2Y= gopkg.in/go-playground/validator.v9 v9.29.1/go.mod h1:+c9/zcJMFNgbLvly1L1V+PpxWdVbfP1avr/N00E2vyQ= From d90be8fa52738aa9805c0cf944b401a6d51fe033 Mon Sep 17 00:00:00 2001 From: Breezewish Date: Wed, 8 Jan 2020 11:54:31 +0800 Subject: [PATCH 05/13] Add instructions to build with TiDB Dashboard Signed-off-by: Breezewish --- README.md | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/README.md b/README.md index 7604fa4cff8..b38c3cef0d9 100644 --- a/README.md +++ b/README.md @@ -14,6 +14,15 @@ PD supports distribution and fault-tolerance by embedding [etcd](https://github. 1. Make sure [​*Go*​](https://golang.org/) (version 1.13) is installed. 2. Use `make` to install PD. PD is installed in the `bin` directory. +### Build with [TiDB Dashboard](https://github.com/pingcap-incubator/tidb-dashboard) + +```sh +WITH_DASHBOARD=1 make pd-server +# Start PD: bin/pd-server +``` + +Dashboard UI is available at http://127.0.0.1:2379/dashboard by default. + ## Usage ### Command flags From 49fb59bca162a3263d54d577b4b813c00e3ba1b9 Mon Sep 17 00:00:00 2001 From: Breezewish Date: Wed, 8 Jan 2020 18:03:49 +0800 Subject: [PATCH 06/13] Add EnableDashboard CLI options Signed-off-by: Breezewish --- .gitignore | 1 - Makefile | 7 +++--- README.md | 9 -------- go.mod | 2 +- go.sum | 4 ++-- .../uiserver/empty_assets_handler.go | 23 ------------------- scripts/.gitignore | 1 + scripts/embed-dashboard-ui.sh | 4 ++-- server/config/config.go | 4 ++++ server/server.go | 17 ++++++++++---- 10 files changed, 26 insertions(+), 46 deletions(-) delete mode 100644 pkg/dashboard/uiserver/empty_assets_handler.go create mode 100644 scripts/.gitignore diff --git a/.gitignore b/.gitignore index a81dd23f71e..96848f7a830 100644 --- a/.gitignore +++ b/.gitignore @@ -13,4 +13,3 @@ default* .vscode/ bindata.go /pkg/ui/pd-web/* -/.cache diff --git a/Makefile b/Makefile index a4b99db5068..b726c616263 100644 --- a/Makefile +++ b/Makefile @@ -53,17 +53,16 @@ tools: pd-tso-bench pd-recover pd-analysis pd-heartbeat-bench pd-server: export GO111MODULE=on ifeq ("$(WITH_RACE)", "1") pd-server: + ./scripts/embed-dashboard-ui.sh CGO_ENABLED=1 go build -race -gcflags '$(GCFLAGS)' -ldflags '$(LDFLAGS)' -o bin/pd-server cmd/pd-server/main.go -else ifeq ("$(WITH_DASHBOARD)", "1") -pd-server: - @./scripts/embed-dashboard-ui.sh - CGO_ENABLED=0 go build -gcflags '$(GCFLAGS)' -ldflags '$(LDFLAGS)' -tags dashboard_ui -o bin/pd-server cmd/pd-server/main.go else ifeq ("$(PD_WEB)", "1") pd-server: retool-setup + ./scripts/embed-dashboard-ui.sh @./scripts/build-ui.sh CGO_ENABLED=0 go build -gcflags '$(GCFLAGS)' -ldflags '$(LDFLAGS)' -tags web -o bin/pd-server cmd/pd-server/main.go else pd-server: + ./scripts/embed-dashboard-ui.sh CGO_ENABLED=0 go build -gcflags '$(GCFLAGS)' -ldflags '$(LDFLAGS)' -o bin/pd-server cmd/pd-server/main.go endif diff --git a/README.md b/README.md index b38c3cef0d9..7604fa4cff8 100644 --- a/README.md +++ b/README.md @@ -14,15 +14,6 @@ PD supports distribution and fault-tolerance by embedding [etcd](https://github. 1. Make sure [​*Go*​](https://golang.org/) (version 1.13) is installed. 2. Use `make` to install PD. PD is installed in the `bin` directory. -### Build with [TiDB Dashboard](https://github.com/pingcap-incubator/tidb-dashboard) - -```sh -WITH_DASHBOARD=1 make pd-server -# Start PD: bin/pd-server -``` - -Dashboard UI is available at http://127.0.0.1:2379/dashboard by default. - ## Usage ### Command flags diff --git a/go.mod b/go.mod index e8b95d03c40..40bf732cd62 100644 --- a/go.mod +++ b/go.mod @@ -28,7 +28,7 @@ require ( github.com/onsi/gomega v1.4.2 // indirect github.com/opentracing/opentracing-go v1.0.2 github.com/phf/go-queue v0.0.0-20170504031614-9abe38d0371d - github.com/pingcap-incubator/tidb-dashboard v0.0.0-20200108014525-06bfab74f3b7 + github.com/pingcap-incubator/tidb-dashboard v0.0.0-20200108090704-cf6df9ce95b7 github.com/pingcap/check v0.0.0-20191107115940-caf2b9e6ccf4 github.com/pingcap/errcode v0.0.0-20180921232412-a1a7271709d9 github.com/pingcap/failpoint v0.0.0-20191029060244-12f4ac2fd11d diff --git a/go.sum b/go.sum index 28767f39247..66513065d13 100644 --- a/go.sum +++ b/go.sum @@ -199,8 +199,8 @@ github.com/opentracing/opentracing-go v1.0.2/go.mod h1:UkNAQd3GIcIGf0SeVgPpRdFSt github.com/pelletier/go-toml v1.3.0/go.mod h1:PN7xzY2wHTK0K9p34ErDQMlFxa51Fk0OUruD3k1mMwo= github.com/phf/go-queue v0.0.0-20170504031614-9abe38d0371d h1:U+PMnTlV2tu7RuMK5etusZG3Cf+rpow5hqQByeCzJ2g= github.com/phf/go-queue v0.0.0-20170504031614-9abe38d0371d/go.mod h1:lXfE4PvvTW5xOjO6Mba8zDPyw8M93B6AQ7frTGnMlA8= -github.com/pingcap-incubator/tidb-dashboard v0.0.0-20200108014525-06bfab74f3b7 h1:CXjxxx38HnMs/R4NkXoMkntBhKP+D28gAjxB7xAc0AA= -github.com/pingcap-incubator/tidb-dashboard v0.0.0-20200108014525-06bfab74f3b7/go.mod h1:Yx2Ix+adNvCO8F3tHgZmgt9sJhOjJy/B4CW/6filV4w= +github.com/pingcap-incubator/tidb-dashboard v0.0.0-20200108090704-cf6df9ce95b7 h1:iLLJ/Kn1Vvqfrrzjwsp7nhGPYPsPpobm3s4Xv1LBGpk= +github.com/pingcap-incubator/tidb-dashboard v0.0.0-20200108090704-cf6df9ce95b7/go.mod h1:Yx2Ix+adNvCO8F3tHgZmgt9sJhOjJy/B4CW/6filV4w= github.com/pingcap/check v0.0.0-20190102082844-67f458068fc8 h1:USx2/E1bX46VG32FIw034Au6seQ2fY9NEILmNh/UlQg= github.com/pingcap/check v0.0.0-20190102082844-67f458068fc8/go.mod h1:B1+S9LNcuMyLH/4HMTViQOJevkGiik3wW2AN9zb2fNQ= github.com/pingcap/check v0.0.0-20191107115940-caf2b9e6ccf4 h1:iRtOAQ6FXkY/BGvst3CDfTva4nTqh6CL8WXvanLdbu0= diff --git a/pkg/dashboard/uiserver/empty_assets_handler.go b/pkg/dashboard/uiserver/empty_assets_handler.go deleted file mode 100644 index 8ae95dfae5a..00000000000 --- a/pkg/dashboard/uiserver/empty_assets_handler.go +++ /dev/null @@ -1,23 +0,0 @@ -// Copyright 2020 PingCAP, Inc. -// -// Licensed under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at -// -// http://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// See the License for the specific language governing permissions and -// limitations under the License. -// +build !dashboard_ui - -package uiserver - -import ( - assetfs "github.com/elazarl/go-bindata-assetfs" -) - -func assetFS() *assetfs.AssetFS { - return nil -} diff --git a/scripts/.gitignore b/scripts/.gitignore new file mode 100644 index 00000000000..d597d17e8fd --- /dev/null +++ b/scripts/.gitignore @@ -0,0 +1 @@ +/.dashboard_asset_cache diff --git a/scripts/embed-dashboard-ui.sh b/scripts/embed-dashboard-ui.sh index 11597d95028..3be02ba644a 100755 --- a/scripts/embed-dashboard-ui.sh +++ b/scripts/embed-dashboard-ui.sh @@ -2,7 +2,7 @@ set -euo pipefail BASE_DIR=$(git rev-parse --show-toplevel) -CACHE_DIR=${BASE_DIR}/.cache +CACHE_DIR=${BASE_DIR}/scripts/.dashboard_asset_cache echo '+ Create cache directory' mkdir -p ${CACHE_DIR} @@ -25,7 +25,7 @@ if [[ -f "$CACHE_FILE" ]]; then else echo ' - Cached archive does not exist' echo ' - Download pre-built embedded assets from GitHub release' - + DOWNLOAD_URL="https://github.com/pingcap-incubator/tidb-dashboard/releases/download/ui_release_${DASHBOARD_UI_VERSION}/embedded-assets-golang.zip" echo " - Download ${DOWNLOAD_URL}" curl -L ${DOWNLOAD_URL} > embedded-assets-golang.zip diff --git a/server/config/config.go b/server/config/config.go index 9582c35cc58..79b11d5e9b4 100644 --- a/server/config/config.go +++ b/server/config/config.go @@ -131,6 +131,8 @@ type Config struct { logProps *log.ZapProperties EnableConfigManager bool + + EnableDashboard bool } // NewConfig creates a new config. @@ -166,6 +168,8 @@ func NewConfig() *Config { fs.BoolVar(&cfg.EnableConfigManager, "enable-config-manager", false, "Enable configuration manager") + fs.BoolVar(&cfg.EnableDashboard, "enable-dashboard", false, "Enable Dashboard API and UI on this node") + return cfg } diff --git a/server/server.go b/server/server.go index 9b57a179107..25005a589cc 100755 --- a/server/server.go +++ b/server/server.go @@ -30,6 +30,7 @@ import ( "github.com/golang/protobuf/proto" "github.com/gorilla/mux" "github.com/pingcap-incubator/tidb-dashboard/pkg/apiserver" + dashboardConfig "github.com/pingcap-incubator/tidb-dashboard/pkg/config" "github.com/pingcap/failpoint" "github.com/pingcap/kvproto/pkg/configpb" "github.com/pingcap/kvproto/pkg/diagnosticspb" @@ -210,10 +211,18 @@ func CreateServer(ctx context.Context, cfg *config.Config, apiBuilders ...Handle } etcdCfg.UserHandlers = map[string]http.Handler{ - pdAPIPrefix: apiHandler, - webPath: http.StripPrefix(webPath, ui.Handler()), - dashboardUIPath: http.StripPrefix(dashboardUIPath, uiserver.Handler()), - dashboardAPIPath: apiserver.Handler(dashboardAPIPath), + pdAPIPrefix: apiHandler, + webPath: http.StripPrefix(webPath, ui.Handler()), + } + + if cfg.EnableDashboard { + etcdCfg.UserHandlers[dashboardUIPath] = http.StripPrefix(dashboardUIPath, uiserver.Handler()) + etcdCfg.UserHandlers[dashboardAPIPath] = apiserver.Handler(dashboardAPIPath, &dashboardConfig.Config{ + DataDir: cfg.DataDir, + PDEndPoint: etcdCfg.ACUrls[0].String(), + }) + log.Info("Enabled Dashboard API", zap.String("path", dashboardAPIPath)) + log.Info("Enabled Dashboard UI", zap.String("path", dashboardUIPath)) } } etcdCfg.ServiceRegister = func(gs *grpc.Server) { From b232f8dd6561f27ca7c50b81ba9983afcd43d0a8 Mon Sep 17 00:00:00 2001 From: Breezewish Date: Wed, 8 Jan 2020 18:21:39 +0800 Subject: [PATCH 07/13] Exclude uiserver from PACKAGES since it includes generated code Signed-off-by: Breezewish --- Makefile | 2 +- scripts/embed-dashboard-ui.sh | 3 ++- 2 files changed, 3 insertions(+), 2 deletions(-) diff --git a/Makefile b/Makefile index b726c616263..91aacffcf90 100644 --- a/Makefile +++ b/Makefile @@ -6,7 +6,7 @@ INTEGRATION_TEST_PKGS := $(shell find . -iname "*_test.go" -exec dirname {} \; | sort -u | sed -e "s/^\./github.com\/pingcap\/pd/" | grep -E "tests") BASIC_TEST_PKGS := $(filter-out $(INTEGRATION_TEST_PKGS),$(TEST_PKGS)) -PACKAGES := go list ./... +PACKAGES := go list ./... | grep -v 'dashboard/uiserver' PACKAGE_DIRECTORIES := $(PACKAGES) | sed 's|github.com/pingcap/pd/||' GOCHECKER := awk '{ print } END { if (NR > 0) { exit 1 } }' RETOOL := ./scripts/retool diff --git a/scripts/embed-dashboard-ui.sh b/scripts/embed-dashboard-ui.sh index 3be02ba644a..b9edea14275 100755 --- a/scripts/embed-dashboard-ui.sh +++ b/scripts/embed-dashboard-ui.sh @@ -1,7 +1,8 @@ #!/usr/bin/env bash set -euo pipefail -BASE_DIR=$(git rev-parse --show-toplevel) +DIR="$( cd "$( dirname "${BASH_SOURCE[0]}" )" >/dev/null 2>&1 && pwd )" +BASE_DIR="$(dirname "$DIR")" CACHE_DIR=${BASE_DIR}/scripts/.dashboard_asset_cache echo '+ Create cache directory' From 7e638b8df15ec98059e15596db27d20aef7a1e2d Mon Sep 17 00:00:00 2001 From: Breezewish Date: Wed, 8 Jan 2020 18:25:15 +0800 Subject: [PATCH 08/13] Sync with origin/master submodule Signed-off-by: Breezewish --- pkg/ui/pd-web | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pkg/ui/pd-web b/pkg/ui/pd-web index 0f2ca887ac9..1e54b22b952 160000 --- a/pkg/ui/pd-web +++ b/pkg/ui/pd-web @@ -1 +1 @@ -Subproject commit 0f2ca887ac919d37c2b4e161b99e9a918df26b1f +Subproject commit 1e54b22b952f90ce68091a024057d4e5957ef8f5 From f2a625929298e71e2ecaa4cbf5ff552a7cbaee2c Mon Sep 17 00:00:00 2001 From: Wenxuan Date: Thu, 9 Jan 2020 09:09:58 +0800 Subject: [PATCH 09/13] Apply suggestions from code review MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Co-Authored-By: 混沌DM --- scripts/embed-dashboard-ui.sh | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/scripts/embed-dashboard-ui.sh b/scripts/embed-dashboard-ui.sh index b9edea14275..3355d51e709 100755 --- a/scripts/embed-dashboard-ui.sh +++ b/scripts/embed-dashboard-ui.sh @@ -6,7 +6,7 @@ BASE_DIR="$(dirname "$DIR")" CACHE_DIR=${BASE_DIR}/scripts/.dashboard_asset_cache echo '+ Create cache directory' -mkdir -p ${CACHE_DIR} +mkdir -p "${CACHE_DIR}" echo '+ Fetch Dashboard Go module' go mod download @@ -16,7 +16,7 @@ echo '+ Discover Dashboard UI version' DASHBOARD_DIR=$(go list -f "{{.Dir}}" -m github.com/pingcap-incubator/tidb-dashboard) echo " - Dashboard directory: ${DASHBOARD_DIR}" -DASHBOARD_UI_VERSION=$(grep -v '^#' ${DASHBOARD_DIR}/ui/.github_release_version) +DASHBOARD_UI_VERSION=$(grep -v '^#' "${DASHBOARD_DIR}/ui/.github_release_version") echo " - Dashboard ui version: ${DASHBOARD_UI_VERSION}" echo '+ Check embedded assets exists in cache' @@ -29,14 +29,14 @@ else DOWNLOAD_URL="https://github.com/pingcap-incubator/tidb-dashboard/releases/download/ui_release_${DASHBOARD_UI_VERSION}/embedded-assets-golang.zip" echo " - Download ${DOWNLOAD_URL}" - curl -L ${DOWNLOAD_URL} > embedded-assets-golang.zip + curl -L "${DOWNLOAD_URL}" > embedded-assets-golang.zip echo " - Save archive to cache: ${CACHE_FILE}" - mv embedded-assets-golang.zip ${CACHE_FILE} + mv embedded-assets-golang.zip "${CACHE_FILE}" fi echo '+ Unpack embedded asset from archive' -unzip -o ${CACHE_FILE} +unzip -o "${CACHE_FILE}" MOVE_FILE=embedded_assets_handler.go MOVE_DEST=pkg/dashboard/uiserver mv ${MOVE_FILE} ${MOVE_DEST} From fb2916736c14476aa1091ad9de27298b83635228 Mon Sep 17 00:00:00 2001 From: Breezewish Date: Tue, 14 Jan 2020 22:27:40 +0800 Subject: [PATCH 10/13] Move assets to standalone directory --- .gitignore | 1 + Makefile | 2 +- go.mod | 4 ++-- go.sum | 8 ++++---- pkg/dashboard/uiserver/.gitignore | 1 - pkg/dashboard/uiserver/assets/.gitignore | 1 + pkg/dashboard/uiserver/assets/assets.go | 20 ++++++++++++++++++++ pkg/dashboard/uiserver/uiserver.go | 4 +++- scripts/.gitignore | 1 - scripts/embed-dashboard-ui.sh | 6 +++--- 10 files changed, 35 insertions(+), 13 deletions(-) delete mode 100644 pkg/dashboard/uiserver/.gitignore create mode 100644 pkg/dashboard/uiserver/assets/.gitignore create mode 100644 pkg/dashboard/uiserver/assets/assets.go delete mode 100644 scripts/.gitignore diff --git a/.gitignore b/.gitignore index 96848f7a830..c3572503617 100644 --- a/.gitignore +++ b/.gitignore @@ -13,3 +13,4 @@ default* .vscode/ bindata.go /pkg/ui/pd-web/* +/.dashboard_asset_cache diff --git a/Makefile b/Makefile index 91aacffcf90..fbfca78f4cb 100644 --- a/Makefile +++ b/Makefile @@ -6,7 +6,7 @@ INTEGRATION_TEST_PKGS := $(shell find . -iname "*_test.go" -exec dirname {} \; | sort -u | sed -e "s/^\./github.com\/pingcap\/pd/" | grep -E "tests") BASIC_TEST_PKGS := $(filter-out $(INTEGRATION_TEST_PKGS),$(TEST_PKGS)) -PACKAGES := go list ./... | grep -v 'dashboard/uiserver' +PACKAGES := go list ./... | grep -v 'dashboard/uiserver/assets' PACKAGE_DIRECTORIES := $(PACKAGES) | sed 's|github.com/pingcap/pd/||' GOCHECKER := awk '{ print } END { if (NR > 0) { exit 1 } }' RETOOL := ./scripts/retool diff --git a/go.mod b/go.mod index 40bf732cd62..3d387be5ddd 100644 --- a/go.mod +++ b/go.mod @@ -28,7 +28,7 @@ require ( github.com/onsi/gomega v1.4.2 // indirect github.com/opentracing/opentracing-go v1.0.2 github.com/phf/go-queue v0.0.0-20170504031614-9abe38d0371d - github.com/pingcap-incubator/tidb-dashboard v0.0.0-20200108090704-cf6df9ce95b7 + github.com/pingcap-incubator/tidb-dashboard v0.0.0-20200114055541-46d1c268dc55 github.com/pingcap/check v0.0.0-20191107115940-caf2b9e6ccf4 github.com/pingcap/errcode v0.0.0-20180921232412-a1a7271709d9 github.com/pingcap/failpoint v0.0.0-20191029060244-12f4ac2fd11d @@ -47,7 +47,7 @@ require ( go.etcd.io/etcd v0.5.0-alpha.5.0.20191023171146-3cf2f69b5738 go.uber.org/goleak v0.10.0 go.uber.org/zap v1.12.0 - golang.org/x/sys v0.0.0-20200107162124-548cf772de50 // indirect + golang.org/x/sys v0.0.0-20200113162924-86b910548bc1 // indirect google.golang.org/grpc v1.25.1 gopkg.in/natefinch/lumberjack.v2 v2.0.0 ) diff --git a/go.sum b/go.sum index 66513065d13..209cbd9b7df 100644 --- a/go.sum +++ b/go.sum @@ -199,8 +199,8 @@ github.com/opentracing/opentracing-go v1.0.2/go.mod h1:UkNAQd3GIcIGf0SeVgPpRdFSt github.com/pelletier/go-toml v1.3.0/go.mod h1:PN7xzY2wHTK0K9p34ErDQMlFxa51Fk0OUruD3k1mMwo= github.com/phf/go-queue v0.0.0-20170504031614-9abe38d0371d h1:U+PMnTlV2tu7RuMK5etusZG3Cf+rpow5hqQByeCzJ2g= github.com/phf/go-queue v0.0.0-20170504031614-9abe38d0371d/go.mod h1:lXfE4PvvTW5xOjO6Mba8zDPyw8M93B6AQ7frTGnMlA8= -github.com/pingcap-incubator/tidb-dashboard v0.0.0-20200108090704-cf6df9ce95b7 h1:iLLJ/Kn1Vvqfrrzjwsp7nhGPYPsPpobm3s4Xv1LBGpk= -github.com/pingcap-incubator/tidb-dashboard v0.0.0-20200108090704-cf6df9ce95b7/go.mod h1:Yx2Ix+adNvCO8F3tHgZmgt9sJhOjJy/B4CW/6filV4w= +github.com/pingcap-incubator/tidb-dashboard v0.0.0-20200114055541-46d1c268dc55 h1:J8AYbkbzF9MrTIMo8lzLRkREsCKfW63sY5KVuLz5Fks= +github.com/pingcap-incubator/tidb-dashboard v0.0.0-20200114055541-46d1c268dc55/go.mod h1:Yx2Ix+adNvCO8F3tHgZmgt9sJhOjJy/B4CW/6filV4w= github.com/pingcap/check v0.0.0-20190102082844-67f458068fc8 h1:USx2/E1bX46VG32FIw034Au6seQ2fY9NEILmNh/UlQg= github.com/pingcap/check v0.0.0-20190102082844-67f458068fc8/go.mod h1:B1+S9LNcuMyLH/4HMTViQOJevkGiik3wW2AN9zb2fNQ= github.com/pingcap/check v0.0.0-20191107115940-caf2b9e6ccf4 h1:iRtOAQ6FXkY/BGvst3CDfTva4nTqh6CL8WXvanLdbu0= @@ -375,8 +375,8 @@ golang.org/x/sys v0.0.0-20190826190057-c7b8b68b1456/go.mod h1:h1NjWce9XRLGQEsW7w golang.org/x/sys v0.0.0-20191026070338-33540a1f6037/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20200103143344-a1369afcdac7 h1:/W9OPMnnpmFXHYkcp2rQsbFUbRlRzfECQjmAFiOyHE8= golang.org/x/sys v0.0.0-20200103143344-a1369afcdac7/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20200107162124-548cf772de50 h1:YvQ10rzcqWXLlJZ3XCUoO25savxmscf4+SC+ZqiCHhA= -golang.org/x/sys v0.0.0-20200107162124-548cf772de50/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20200113162924-86b910548bc1 h1:gZpLHxUX5BdYLA08Lj4YCJNN/jk7KtquiArPoeX0WvA= +golang.org/x/sys v0.0.0-20200113162924-86b910548bc1/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/text v0.3.0 h1:g61tztE5qeGQ89tm6NTjjM9VPIm088od1l6aSorWRWg= golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= golang.org/x/text v0.3.2 h1:tW2bmiBqwgJj/UpqtC8EpXEZVYOwU0yG4iWbprSVAcs= diff --git a/pkg/dashboard/uiserver/.gitignore b/pkg/dashboard/uiserver/.gitignore deleted file mode 100644 index 6bdcefb9ec5..00000000000 --- a/pkg/dashboard/uiserver/.gitignore +++ /dev/null @@ -1 +0,0 @@ -/embedded_assets_handler.go diff --git a/pkg/dashboard/uiserver/assets/.gitignore b/pkg/dashboard/uiserver/assets/.gitignore new file mode 100644 index 00000000000..37724f0b631 --- /dev/null +++ b/pkg/dashboard/uiserver/assets/.gitignore @@ -0,0 +1 @@ +/handler.go diff --git a/pkg/dashboard/uiserver/assets/assets.go b/pkg/dashboard/uiserver/assets/assets.go new file mode 100644 index 00000000000..08fe68dec8c --- /dev/null +++ b/pkg/dashboard/uiserver/assets/assets.go @@ -0,0 +1,20 @@ +// Copyright 2020 PingCAP, Inc. +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// See the License for the specific language governing permissions and +// limitations under the License. + +package assets + +import assetfs "github.com/elazarl/go-bindata-assetfs" + +func AssetFS() *assetfs.AssetFS { + return assetFS() +} diff --git a/pkg/dashboard/uiserver/uiserver.go b/pkg/dashboard/uiserver/uiserver.go index d833200b133..92e1f0707bc 100644 --- a/pkg/dashboard/uiserver/uiserver.go +++ b/pkg/dashboard/uiserver/uiserver.go @@ -16,11 +16,13 @@ package uiserver import ( "io" "net/http" + + "github.com/pingcap/pd/pkg/dashboard/uiserver/assets" ) // Handler returns an http.Handler that serves the dashboard UI. func Handler() http.Handler { - fs := assetFS() + fs := assets.AssetFS() if fs != nil { fileServer := http.FileServer(fs) return fileServer diff --git a/scripts/.gitignore b/scripts/.gitignore deleted file mode 100644 index d597d17e8fd..00000000000 --- a/scripts/.gitignore +++ /dev/null @@ -1 +0,0 @@ -/.dashboard_asset_cache diff --git a/scripts/embed-dashboard-ui.sh b/scripts/embed-dashboard-ui.sh index 3355d51e709..ffae1a90c06 100755 --- a/scripts/embed-dashboard-ui.sh +++ b/scripts/embed-dashboard-ui.sh @@ -3,7 +3,7 @@ set -euo pipefail DIR="$( cd "$( dirname "${BASH_SOURCE[0]}" )" >/dev/null 2>&1 && pwd )" BASE_DIR="$(dirname "$DIR")" -CACHE_DIR=${BASE_DIR}/scripts/.dashboard_asset_cache +CACHE_DIR=${BASE_DIR}/.dashboard_asset_cache echo '+ Create cache directory' mkdir -p "${CACHE_DIR}" @@ -38,6 +38,6 @@ fi echo '+ Unpack embedded asset from archive' unzip -o "${CACHE_FILE}" MOVE_FILE=embedded_assets_handler.go -MOVE_DEST=pkg/dashboard/uiserver +MOVE_DEST=pkg/dashboard/uiserver/assets/handler.go mv ${MOVE_FILE} ${MOVE_DEST} -echo " - Unpacked ${MOVE_DEST}/${MOVE_FILE}" +echo " - Unpacked ${MOVE_DEST}" From 6a0ad6fc255d76b968af14f0e2b0f7867b706ccc Mon Sep 17 00:00:00 2001 From: Breezewish Date: Tue, 14 Jan 2020 23:06:52 +0800 Subject: [PATCH 11/13] Enable dashboard by default Signed-off-by: Breezewish --- server/config/config.go | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/server/config/config.go b/server/config/config.go index 79b11d5e9b4..6879dd3e933 100644 --- a/server/config/config.go +++ b/server/config/config.go @@ -168,7 +168,7 @@ func NewConfig() *Config { fs.BoolVar(&cfg.EnableConfigManager, "enable-config-manager", false, "Enable configuration manager") - fs.BoolVar(&cfg.EnableDashboard, "enable-dashboard", false, "Enable Dashboard API and UI on this node") + fs.BoolVar(&cfg.EnableDashboard, "enable-dashboard", true, "Enable Dashboard API and UI on this node") return cfg } From e7f7d39287c263bd9eff4730c5ae461f06d67d80 Mon Sep 17 00:00:00 2001 From: Breezewish Date: Wed, 15 Jan 2020 00:16:56 +0800 Subject: [PATCH 12/13] Revert some changes Signed-off-by: Breezewish --- Makefile | 2 +- go.mod | 2 +- go.sum | 2 ++ pkg/dashboard/uiserver/.gitignore | 1 + pkg/dashboard/uiserver/assets/.gitignore | 1 - pkg/dashboard/uiserver/assets/assets.go | 20 -------------------- pkg/dashboard/uiserver/uiserver.go | 14 ++------------ scripts/embed-dashboard-ui.sh | 2 +- 8 files changed, 8 insertions(+), 36 deletions(-) create mode 100644 pkg/dashboard/uiserver/.gitignore delete mode 100644 pkg/dashboard/uiserver/assets/.gitignore delete mode 100644 pkg/dashboard/uiserver/assets/assets.go diff --git a/Makefile b/Makefile index fbfca78f4cb..91aacffcf90 100644 --- a/Makefile +++ b/Makefile @@ -6,7 +6,7 @@ INTEGRATION_TEST_PKGS := $(shell find . -iname "*_test.go" -exec dirname {} \; | sort -u | sed -e "s/^\./github.com\/pingcap\/pd/" | grep -E "tests") BASIC_TEST_PKGS := $(filter-out $(INTEGRATION_TEST_PKGS),$(TEST_PKGS)) -PACKAGES := go list ./... | grep -v 'dashboard/uiserver/assets' +PACKAGES := go list ./... | grep -v 'dashboard/uiserver' PACKAGE_DIRECTORIES := $(PACKAGES) | sed 's|github.com/pingcap/pd/||' GOCHECKER := awk '{ print } END { if (NR > 0) { exit 1 } }' RETOOL := ./scripts/retool diff --git a/go.mod b/go.mod index 3d387be5ddd..56ca011073e 100644 --- a/go.mod +++ b/go.mod @@ -28,7 +28,7 @@ require ( github.com/onsi/gomega v1.4.2 // indirect github.com/opentracing/opentracing-go v1.0.2 github.com/phf/go-queue v0.0.0-20170504031614-9abe38d0371d - github.com/pingcap-incubator/tidb-dashboard v0.0.0-20200114055541-46d1c268dc55 + github.com/pingcap-incubator/tidb-dashboard v0.0.0-20200110133619-1c1c65dd8750 github.com/pingcap/check v0.0.0-20191107115940-caf2b9e6ccf4 github.com/pingcap/errcode v0.0.0-20180921232412-a1a7271709d9 github.com/pingcap/failpoint v0.0.0-20191029060244-12f4ac2fd11d diff --git a/go.sum b/go.sum index 209cbd9b7df..163ac882b47 100644 --- a/go.sum +++ b/go.sum @@ -199,6 +199,8 @@ github.com/opentracing/opentracing-go v1.0.2/go.mod h1:UkNAQd3GIcIGf0SeVgPpRdFSt github.com/pelletier/go-toml v1.3.0/go.mod h1:PN7xzY2wHTK0K9p34ErDQMlFxa51Fk0OUruD3k1mMwo= github.com/phf/go-queue v0.0.0-20170504031614-9abe38d0371d h1:U+PMnTlV2tu7RuMK5etusZG3Cf+rpow5hqQByeCzJ2g= github.com/phf/go-queue v0.0.0-20170504031614-9abe38d0371d/go.mod h1:lXfE4PvvTW5xOjO6Mba8zDPyw8M93B6AQ7frTGnMlA8= +github.com/pingcap-incubator/tidb-dashboard v0.0.0-20200110133619-1c1c65dd8750 h1:kB0MylYNfV+VaIIIdAsIaOeh0HAyRvYc2um621OIXrM= +github.com/pingcap-incubator/tidb-dashboard v0.0.0-20200110133619-1c1c65dd8750/go.mod h1:Yx2Ix+adNvCO8F3tHgZmgt9sJhOjJy/B4CW/6filV4w= github.com/pingcap-incubator/tidb-dashboard v0.0.0-20200114055541-46d1c268dc55 h1:J8AYbkbzF9MrTIMo8lzLRkREsCKfW63sY5KVuLz5Fks= github.com/pingcap-incubator/tidb-dashboard v0.0.0-20200114055541-46d1c268dc55/go.mod h1:Yx2Ix+adNvCO8F3tHgZmgt9sJhOjJy/B4CW/6filV4w= github.com/pingcap/check v0.0.0-20190102082844-67f458068fc8 h1:USx2/E1bX46VG32FIw034Au6seQ2fY9NEILmNh/UlQg= diff --git a/pkg/dashboard/uiserver/.gitignore b/pkg/dashboard/uiserver/.gitignore new file mode 100644 index 00000000000..6bdcefb9ec5 --- /dev/null +++ b/pkg/dashboard/uiserver/.gitignore @@ -0,0 +1 @@ +/embedded_assets_handler.go diff --git a/pkg/dashboard/uiserver/assets/.gitignore b/pkg/dashboard/uiserver/assets/.gitignore deleted file mode 100644 index 37724f0b631..00000000000 --- a/pkg/dashboard/uiserver/assets/.gitignore +++ /dev/null @@ -1 +0,0 @@ -/handler.go diff --git a/pkg/dashboard/uiserver/assets/assets.go b/pkg/dashboard/uiserver/assets/assets.go deleted file mode 100644 index 08fe68dec8c..00000000000 --- a/pkg/dashboard/uiserver/assets/assets.go +++ /dev/null @@ -1,20 +0,0 @@ -// Copyright 2020 PingCAP, Inc. -// -// Licensed under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at -// -// http://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// See the License for the specific language governing permissions and -// limitations under the License. - -package assets - -import assetfs "github.com/elazarl/go-bindata-assetfs" - -func AssetFS() *assetfs.AssetFS { - return assetFS() -} diff --git a/pkg/dashboard/uiserver/uiserver.go b/pkg/dashboard/uiserver/uiserver.go index 92e1f0707bc..29693634416 100644 --- a/pkg/dashboard/uiserver/uiserver.go +++ b/pkg/dashboard/uiserver/uiserver.go @@ -14,21 +14,11 @@ package uiserver import ( - "io" "net/http" - - "github.com/pingcap/pd/pkg/dashboard/uiserver/assets" ) // Handler returns an http.Handler that serves the dashboard UI. func Handler() http.Handler { - fs := assets.AssetFS() - if fs != nil { - fileServer := http.FileServer(fs) - return fileServer - } - - return http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) { - _, _ = io.WriteString(w, "Dashboard UI is not built.\n") - }) + fileServer := http.FileServer(assetFS()) + return fileServer } diff --git a/scripts/embed-dashboard-ui.sh b/scripts/embed-dashboard-ui.sh index ffae1a90c06..90689ffb65a 100755 --- a/scripts/embed-dashboard-ui.sh +++ b/scripts/embed-dashboard-ui.sh @@ -38,6 +38,6 @@ fi echo '+ Unpack embedded asset from archive' unzip -o "${CACHE_FILE}" MOVE_FILE=embedded_assets_handler.go -MOVE_DEST=pkg/dashboard/uiserver/assets/handler.go +MOVE_DEST=pkg/dashboard/uiserver/${MOVE_FILE} mv ${MOVE_FILE} ${MOVE_DEST} echo " - Unpacked ${MOVE_DEST}" From 909ea8326565a8502c580a3e7a410ce4e2aff3d3 Mon Sep 17 00:00:00 2001 From: Breezewish Date: Wed, 15 Jan 2020 00:21:44 +0800 Subject: [PATCH 13/13] fix tidy Signed-off-by: Breezewish --- go.sum | 2 -- 1 file changed, 2 deletions(-) diff --git a/go.sum b/go.sum index 163ac882b47..0140da7f349 100644 --- a/go.sum +++ b/go.sum @@ -201,8 +201,6 @@ github.com/phf/go-queue v0.0.0-20170504031614-9abe38d0371d h1:U+PMnTlV2tu7RuMK5e github.com/phf/go-queue v0.0.0-20170504031614-9abe38d0371d/go.mod h1:lXfE4PvvTW5xOjO6Mba8zDPyw8M93B6AQ7frTGnMlA8= github.com/pingcap-incubator/tidb-dashboard v0.0.0-20200110133619-1c1c65dd8750 h1:kB0MylYNfV+VaIIIdAsIaOeh0HAyRvYc2um621OIXrM= github.com/pingcap-incubator/tidb-dashboard v0.0.0-20200110133619-1c1c65dd8750/go.mod h1:Yx2Ix+adNvCO8F3tHgZmgt9sJhOjJy/B4CW/6filV4w= -github.com/pingcap-incubator/tidb-dashboard v0.0.0-20200114055541-46d1c268dc55 h1:J8AYbkbzF9MrTIMo8lzLRkREsCKfW63sY5KVuLz5Fks= -github.com/pingcap-incubator/tidb-dashboard v0.0.0-20200114055541-46d1c268dc55/go.mod h1:Yx2Ix+adNvCO8F3tHgZmgt9sJhOjJy/B4CW/6filV4w= github.com/pingcap/check v0.0.0-20190102082844-67f458068fc8 h1:USx2/E1bX46VG32FIw034Au6seQ2fY9NEILmNh/UlQg= github.com/pingcap/check v0.0.0-20190102082844-67f458068fc8/go.mod h1:B1+S9LNcuMyLH/4HMTViQOJevkGiik3wW2AN9zb2fNQ= github.com/pingcap/check v0.0.0-20191107115940-caf2b9e6ccf4 h1:iRtOAQ6FXkY/BGvst3CDfTva4nTqh6CL8WXvanLdbu0=