You are viewing a plain text version of this content. The canonical link for it is here.
Posted to notifications@skywalking.apache.org by ke...@apache.org on 2020/12/19 13:30:54 UTC
[skywalking-cli] branch master updated: chore: reorganize the
project layout and add an example of .skywalking.yaml (#82)
This is an automated email from the ASF dual-hosted git repository.
kezhenxu94 pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/skywalking-cli.git
The following commit(s) were added to refs/heads/master by this push:
new b3b919d chore: reorganize the project layout and add an example of .skywalking.yaml (#82)
b3b919d is described below
commit b3b919d5c89d43aebfc6f25f147bf41db11950bf
Author: Zhenxu Ke <ke...@apache.org>
AuthorDate: Sat Dec 19 21:30:46 2020 +0800
chore: reorganize the project layout and add an example of .skywalking.yaml (#82)
---
.github/workflows/go.yml | 8 +-
CONTRIBUTING.md | 12 +--
Makefile | 12 +--
README.md | 6 +-
{graphql/schema => api}/schema.go | 2 +-
assets/assets.gen.go | 20 ++---
assets/assets.go | 2 +-
.../healthcheck.graphql} | 0
cmd/{ => swctl}/main.go | 22 ++---
.../.skywalking.yaml | 9 +-
{example => examples}/global.yml | 0
go.mod | 3 +-
go.sum | 33 +++++++-
gqlgen.yml | 6 +-
.../commands}/dashboard/dashboard.go | 2 +-
.../commands}/dashboard/global/global.go | 21 +++--
.../commands}/dashboard/global/metrics.go | 23 +++--
.../commands}/endpoint/endpoint.go | 0
{commands => internal/commands}/endpoint/list.go | 14 ++-
.../commands/healthcheck/healthcheck.go | 18 ++--
.../commands}/instance/instance.go | 4 +-
{commands => internal/commands}/instance/list.go | 22 +++--
{commands => internal/commands}/instance/search.go | 24 ++++--
.../commands}/interceptor/duration.go | 15 ++--
.../commands}/interceptor/duration_test.go | 12 +--
.../commands}/interceptor/entity.go | 24 +++---
.../commands}/interceptor/entity_test.go | 34 ++++----
.../commands}/interceptor/interceptor.go | 0
.../commands}/interceptor/timezone.go | 4 +-
.../commands}/metrics/aggregation/topn.go | 30 ++++---
.../commands}/metrics/linear/linear-metrics.go | 25 +++---
.../metrics/linear/multiple-linear-metrics.go | 28 +++---
.../commands}/metrics/list/list-metrics.go | 14 ++-
{commands => internal/commands}/metrics/metrics.go | 10 +--
.../commands}/metrics/single/single-metrics.go | 25 +++---
.../metrics/thermodynamic/thermodynamic.go | 25 +++---
{commands => internal/commands}/service/list.go | 31 ++++---
{commands => internal/commands}/service/service.go | 0
{commands => internal/commands}/trace/list.go | 36 ++++----
{commands => internal/commands}/trace/trace.go | 14 ++-
{commands => internal}/flags/duration.go | 13 +--
{commands => internal}/flags/entity.go | 0
{commands => internal}/flags/flags.go | 0
{commands => internal}/flags/instance.go | 0
{commands => internal}/flags/metrics.go | 12 +--
{commands => internal}/flags/search.go | 0
{logger => internal/logger}/log.go | 0
{commands => internal}/model/order.go | 12 +--
{commands => internal}/model/scope.go | 12 +--
{commands => internal}/model/step.go | 12 +--
{display => pkg/display}/display.go | 10 +--
.../display}/displayable/displayable.go | 6 +-
{display => pkg/display}/graph/dashboard/global.go | 35 ++++----
{display => pkg/display}/graph/gauge/gauge.go | 19 +++--
{display => pkg/display}/graph/graph.go | 25 +++---
{display => pkg/display}/graph/heatmap/heatmap.go | 17 ++--
{display => pkg/display}/graph/linear/linear.go | 0
{display => pkg/display}/graph/tree/adapter.go | 29 ++++---
{display => pkg/display}/graph/tree/list.go | 41 ++++++---
{display => pkg/display}/graph/tree/tree.go | 2 +-
{display => pkg/display}/json/json.go | 2 +-
{display => pkg/display}/json/json_test.go | 12 +--
{display => pkg/display}/table/table.go | 4 +-
{display => pkg/display}/table/table_test.go | 12 +--
{display => pkg/display}/yaml/yaml.go | 2 +-
{display => pkg/display}/yaml/yaml_test.go | 12 +--
{graphql => pkg/graphql}/client/client.go | 9 +-
{graphql => pkg/graphql}/dashboard/global.go | 99 ++++++++++++++--------
.../graphql/healthcheck/healthcheck.go | 17 ++--
{graphql => pkg/graphql}/metadata/metadata.go | 44 +++++-----
{graphql => pkg/graphql}/metrics/metrics.go | 54 ++++++------
{graphql => pkg/graphql}/trace/trace.go | 21 ++---
{graphql => pkg/graphql}/utils/adapter.go | 13 +--
{graphql => pkg/graphql}/utils/adapter_test.go | 16 ++--
{graphql => pkg/graphql}/utils/constants.go | 22 ++---
grpc/health.go => pkg/healthcheck/grpc.go | 4 +-
{lib => pkg}/heatmap/axes/axes.go | 0
{lib => pkg}/heatmap/axes/label.go | 0
{lib => pkg}/heatmap/heatmap.go | 2 +-
{lib => pkg}/heatmap/options.go | 0
{util => pkg/util}/io.go | 2 +-
{util => pkg/util}/lang.go | 0
{util => pkg/util}/math.go | 0
{hack => scripts}/boilerplate.go.txt | 0
{hack => scripts}/build-header.sh | 0
{test => scripts}/test_commands.sh | 0
86 files changed, 676 insertions(+), 506 deletions(-)
diff --git a/.github/workflows/go.yml b/.github/workflows/go.yml
index 4bab776..6d1bc2d 100644
--- a/.github/workflows/go.yml
+++ b/.github/workflows/go.yml
@@ -27,10 +27,10 @@ jobs:
name: Build
runs-on: ubuntu-latest
steps:
- - name: Set up Go 1.13
- uses: actions/setup-go@v1
+ - name: Set up Go 1.14
+ uses: actions/setup-go@v2
with:
- go-version: 1.13
+ go-version: 1.14
id: go
- name: Check out code into the Go module directory
@@ -63,4 +63,4 @@ jobs:
run: make build -j3
- name: Test commands
- run: make test-commands
\ No newline at end of file
+ run: make test-commands
diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md
index 9688f0d..6a9d939 100644
--- a/CONTRIBUTING.md
+++ b/CONTRIBUTING.md
@@ -47,17 +47,17 @@ make
```
## Writing a new command
-All commands files locate in directory [`commands`](commands), and an individual directory for each second-level command,
-an individual `go` file for each third-level command, for example, there is a directory [`service`](commands/service) for command `swctl service`,
-and a [`list.go`](commands/service/list.go) file for `swctl service list` command.
+All commands files locate in directory [`commands`](internal/commands), and an individual directory for each second-level command,
+an individual `go` file for each third-level command, for example, there is a directory [`service`](internal/commands/service) for command `swctl service`,
+and a [`list.go`](internal/commands/service/list.go) file for `swctl service list` command.
Determine what entity your command will operate on, and put your command `go` file into that directory, or create one if it doesn't exist,
for example, if you want to create a command to `list` all the `instance`s of a service, create a directory `commands/instance`,
and a `go` file `commands/instance/list.go`.
## Reusing common options
-There're some [common options](#common-options) that can be shared by multiple commands, check [`commands/flags`](commands/flags)
-to get all the shared options, and reuse them when possible, an example shares the options is [`commands/service/list.go`](commands/service/list.go#L35)
+There're some [common options](#common-options) that can be shared by multiple commands, check [`commands/flags`](internal/flags)
+to get all the shared options, and reuse them when possible, an example shares the options is [`commands/service/list.go`](internal/commands/service/list.go#L35)
## Linting your codes
We have some rules for the code style and please lint your codes locally before opening a pull request
@@ -99,4 +99,4 @@ This section guides committers and PMC members to release SkyWalking CLI in Apac
- [Send internal announcement](docs/How-to-release.md#make-the-internal-announcements)
- [Wait at least 48 hours for test responses](docs/How-to-release.md#wait-at-least-48-hours-for-test-responses)
- [Call for vote](docs/How-to-release.md#call-a-vote-in-dev)
-- [Publish release](docs/How-to-release.md#publish-release)
\ No newline at end of file
+- [Publish release](docs/How-to-release.md#publish-release)
diff --git a/Makefile b/Makefile
index e8017d5..d063a07 100644
--- a/Makefile
+++ b/Makefile
@@ -51,7 +51,7 @@ tools:
mkdir -p $(GO_PATH)/bin
$(GO_BINDATA) -v || curl --location --output $(GO_BINDATA) https://github.com/kevinburke/go-bindata/releases/download/$(GOBINDATA_VERSION)/go-bindata-$(OSNAME)-amd64 \
&& chmod +x $(GO_BINDATA)
- $(GO_LINT) version || curl -sfL https://raw.githubusercontent.com/golangci/golangci-lint/master/install.sh | sh -s -- -b $(GO_PATH)/bin v1.21.0
+ $(GO_LINT) version || curl -sfL https://raw.githubusercontent.com/golangci/golangci-lint/master/install.sh | sh -s -- -b $(GO_PATH)/bin
$(GO_LICENSER) -version || GO111MODULE=off $(GO_GET) -u github.com/elastic/go-licenser
$(GQL_GEN) version || GO111MODULE=off $(GO_GET) -u github.com/99designs/gqlgen
@@ -63,14 +63,14 @@ assets: tools
cd assets \
&& $(GO_BINDATA) --nocompress --nometadata --pkg assets --ignore '.*\.go' \
-o "assets.gen.go" ./... \
- && ../hack/build-header.sh assets.gen.go \
+ && ../scripts/build-header.sh assets.gen.go \
&& cd ..
gqlgen: tools
echo 'scalar Long' > query-protocol/schema.graphqls
$(GQL_GEN) generate
-rm -rf generated.go
- -hack/build-header.sh graphql/schema/schema.go
+ -scripts/build-header.sh api/schema.go
-rm query-protocol/schema.graphqls
codegen: clean assets gqlgen
@@ -79,7 +79,7 @@ codegen: clean assets gqlgen
.PHONY: $(PLATFORMS)
$(PLATFORMS):
mkdir -p $(OUT_DIR)
- GOOS=$(os) GOARCH=$(ARCH) $(GO_BUILD) $(GO_BUILD_FLAGS) -ldflags "$(GO_BUILD_LDFLAGS)" -o $(OUT_DIR)/$(BINARY)-$(VERSION)-$(os)-$(ARCH) cmd/main.go
+ GOOS=$(os) GOARCH=$(ARCH) $(GO_BUILD) $(GO_BUILD_FLAGS) -ldflags "$(GO_BUILD_LDFLAGS)" -o $(OUT_DIR)/$(BINARY)-$(VERSION)-$(os)-$(ARCH) cmd/swctl/main.go
.PHONY: lint
lint: codegen tools
@@ -163,6 +163,6 @@ test-commands:
docker container prune -f; \
docker run --name oap -p 12800:12800 -p 11800:11800 -d -e SW_HEALTH_CHECKER=default -e SW_TELEMETRY=prometheus apache/skywalking-oap-server:latest; \
fi
- ./test/test_commands.sh
+ ./scripts/test_commands.sh
@docker container stop oap
- @docker container prune -f
\ No newline at end of file
+ @docker container prune -f
diff --git a/README.md b/README.md
index 0c28b09..5398c77 100644
--- a/README.md
+++ b/README.md
@@ -82,7 +82,7 @@ This section covers all the available commands in SkyWalking CLI and their usage
| option | description | default |
| :--- | :--- | :--- |
-| `--config` | from where the default options values will be loaded | `~/.skywalking.yml` |
+| `--config` | from where the default options values will be loaded | `~/.skywalking.yml`, example can be found [here](examples/.skywalking.yaml) |
| `--debug` | enable debug mode, will print more detailed information at runtime | `false` |
| `--base-url` | base url of GraphQL backend | `http://127.0.0.1:12800/graphql` |
| `--username` | username of `Basic` authorization | `` |
@@ -322,7 +322,7 @@ Ascii Graph, like coloring in terminal, so please use `json` or `yaml` instead.
| `--start` | See [Common options](#common-options) | See [Common options](#common-options) |
| `--end` | See [Common options](#common-options) | See [Common options](#common-options) |
-You can imitate the content of [the default template file](example/global.yml) to customize the dashboard.
+You can imitate the content of [the default template file](examples/global.yml) to customize the dashboard.
</details>
@@ -341,7 +341,7 @@ You can imitate the content of [the default template file](example/global.yml) t
| `--start` | See [Common options](#common-options) | See [Common options](#common-options) |
| `--end` | See [Common options](#common-options) | See [Common options](#common-options) |
-You can imitate the content of [the default template file](example/global.yml) to customize the dashboard.
+You can imitate the content of [the default template file](examples/global.yml) to customize the dashboard.
</details>
diff --git a/graphql/schema/schema.go b/api/schema.go
similarity index 99%
rename from graphql/schema/schema.go
rename to api/schema.go
index 8c0b78c..6b45fac 100644
--- a/graphql/schema/schema.go
+++ b/api/schema.go
@@ -17,7 +17,7 @@
// Code generated by github.com/99designs/gqlgen, DO NOT EDIT.
-package schema
+package api
import (
"fmt"
diff --git a/assets/assets.gen.go b/assets/assets.gen.go
index ea21200..ffefe2f 100644
--- a/assets/assets.gen.go
+++ b/assets/assets.gen.go
@@ -17,7 +17,7 @@
// Code generated by go-bindata. DO NOT EDIT.
// sources:
-// graphqls/common/checkHealth.graphql (870B)
+// graphqls/healthcheck/healthcheck.graphql (870B)
// graphqls/metadata/AllServices.graphql (911B)
// graphqls/metadata/Instances.graphql (1.069kB)
// graphqls/metadata/SearchEndpoints.graphql (975B)
@@ -77,7 +77,7 @@ func (fi bindataFileInfo) Sys() interface{} {
return nil
}
-var _graphqlsCommonCheckhealthGraphql = []byte(`# Licensed to Apache Software Foundation (ASF) under one or more contributor
+var _graphqlsHealthcheckHealthcheckGraphql = []byte(`# Licensed to Apache Software Foundation (ASF) under one or more contributor
# license agreements. See the NOTICE file distributed with
# this work for additional information regarding copyright
# ownership. Apache Software Foundation (ASF) licenses this file to you under
@@ -102,17 +102,17 @@ query {
}
`)
-func graphqlsCommonCheckhealthGraphqlBytes() ([]byte, error) {
- return _graphqlsCommonCheckhealthGraphql, nil
+func graphqlsHealthcheckHealthcheckGraphqlBytes() ([]byte, error) {
+ return _graphqlsHealthcheckHealthcheckGraphql, nil
}
-func graphqlsCommonCheckhealthGraphql() (*asset, error) {
- bytes, err := graphqlsCommonCheckhealthGraphqlBytes()
+func graphqlsHealthcheckHealthcheckGraphql() (*asset, error) {
+ bytes, err := graphqlsHealthcheckHealthcheckGraphqlBytes()
if err != nil {
return nil, err
}
- info := bindataFileInfo{name: "graphqls/common/checkHealth.graphql", size: 0, mode: os.FileMode(0), modTime: time.Unix(0, 0)}
+ info := bindataFileInfo{name: "graphqls/healthcheck/healthcheck.graphql", size: 0, mode: os.FileMode(0), modTime: time.Unix(0, 0)}
a := &asset{bytes: bytes, info: info, digest: [32]uint8{0xc0, 0x71, 0x53, 0x13, 0xd0, 0x51, 0xd7, 0x12, 0xd1, 0xed, 0xd9, 0x34, 0x17, 0xef, 0x22, 0xf8, 0xa0, 0xa2, 0x35, 0x57, 0xb, 0x54, 0x6d, 0x5a, 0xb1, 0x8f, 0xbd, 0xb3, 0x40, 0x34, 0xc2, 0x2d}}
return a, nil
}
@@ -884,7 +884,7 @@ func AssetNames() []string {
// _bindata is a table, holding each asset generator, mapped to its name.
var _bindata = map[string]func() (*asset, error){
- "graphqls/common/checkHealth.graphql": graphqlsCommonCheckhealthGraphql,
+ "graphqls/healthcheck/healthcheck.graphql": graphqlsHealthcheckHealthcheckGraphql,
"graphqls/metadata/AllServices.graphql": graphqlsMetadataAllservicesGraphql,
"graphqls/metadata/Instances.graphql": graphqlsMetadataInstancesGraphql,
"graphqls/metadata/SearchEndpoints.graphql": graphqlsMetadataSearchendpointsGraphql,
@@ -946,8 +946,8 @@ type bintree struct {
var _bintree = &bintree{nil, map[string]*bintree{
"graphqls": &bintree{nil, map[string]*bintree{
- "common": &bintree{nil, map[string]*bintree{
- "checkHealth.graphql": &bintree{graphqlsCommonCheckhealthGraphql, map[string]*bintree{}},
+ "healthcheck": &bintree{nil, map[string]*bintree{
+ "healthcheck.graphql": &bintree{graphqlsHealthcheckHealthcheckGraphql, map[string]*bintree{}},
}},
"metadata": &bintree{nil, map[string]*bintree{
"AllServices.graphql": &bintree{graphqlsMetadataAllservicesGraphql, map[string]*bintree{}},
diff --git a/assets/assets.go b/assets/assets.go
index 8983ff9..665e0c3 100644
--- a/assets/assets.go
+++ b/assets/assets.go
@@ -18,7 +18,7 @@
package assets
import (
- "github.com/apache/skywalking-cli/logger"
+ "github.com/apache/skywalking-cli/internal/logger"
)
// Read reads all content from a file under assets, which is packed in to the binary
diff --git a/assets/graphqls/common/checkHealth.graphql b/assets/graphqls/healthcheck/healthcheck.graphql
similarity index 100%
copy from assets/graphqls/common/checkHealth.graphql
copy to assets/graphqls/healthcheck/healthcheck.graphql
diff --git a/cmd/main.go b/cmd/swctl/main.go
similarity index 85%
rename from cmd/main.go
rename to cmd/swctl/main.go
index 189bd5a..46c7acb 100644
--- a/cmd/main.go
+++ b/cmd/swctl/main.go
@@ -21,24 +21,24 @@ import (
"io/ioutil"
"os"
- "github.com/apache/skywalking-cli/commands/common"
- "github.com/apache/skywalking-cli/commands/trace"
+ "github.com/apache/skywalking-cli/internal/commands/healthcheck"
+ "github.com/apache/skywalking-cli/internal/commands/trace"
- "github.com/apache/skywalking-cli/commands/dashboard"
+ "github.com/apache/skywalking-cli/internal/commands/dashboard"
- "github.com/apache/skywalking-cli/commands/metrics"
+ "github.com/apache/skywalking-cli/internal/commands/metrics"
- "github.com/apache/skywalking-cli/commands/endpoint"
- "github.com/apache/skywalking-cli/commands/instance"
+ "github.com/apache/skywalking-cli/internal/commands/endpoint"
+ "github.com/apache/skywalking-cli/internal/commands/instance"
"github.com/sirupsen/logrus"
"github.com/urfave/cli"
"github.com/urfave/cli/altsrc"
- "github.com/apache/skywalking-cli/commands/interceptor"
- "github.com/apache/skywalking-cli/commands/service"
- "github.com/apache/skywalking-cli/logger"
- "github.com/apache/skywalking-cli/util"
+ "github.com/apache/skywalking-cli/internal/commands/interceptor"
+ "github.com/apache/skywalking-cli/internal/commands/service"
+ "github.com/apache/skywalking-cli/internal/logger"
+ "github.com/apache/skywalking-cli/pkg/util"
)
var log *logrus.Logger
@@ -108,7 +108,7 @@ func main() {
service.Command,
metrics.Command,
trace.Command,
- common.Command,
+ healthcheck.Command,
dashboard.Command,
}
diff --git a/assets/graphqls/common/checkHealth.graphql b/examples/.skywalking.yaml
similarity index 87%
rename from assets/graphqls/common/checkHealth.graphql
rename to examples/.skywalking.yaml
index 25297f2..04355cd 100644
--- a/assets/graphqls/common/checkHealth.graphql
+++ b/examples/.skywalking.yaml
@@ -15,9 +15,6 @@
# specific language governing permissions and limitations
# under the License.
-query {
- checkHealth {
- score
- details
- }
-}
+base-url: http://demo.skywalking.apache.org/graphql
+username: basic-auth-username
+password: basic-auth-password
diff --git a/example/global.yml b/examples/global.yml
similarity index 100%
rename from example/global.yml
rename to examples/global.yml
diff --git a/go.mod b/go.mod
index caf1f12..4dffc4f 100644
--- a/go.mod
+++ b/go.mod
@@ -20,7 +20,8 @@ require (
github.com/urfave/cli v1.22.1
golang.org/x/net v0.0.0-20201021035429-f5854403a974 // indirect
golang.org/x/sys v0.0.0-20201119102817-f84b799fce68 // indirect
- google.golang.org/grpc v1.24.0
+ google.golang.org/grpc v1.27.0
+ google.golang.org/protobuf v1.25.0 // indirect
gopkg.in/check.v1 v1.0.0-20190902080502-41f04d3bba15 // indirect
gopkg.in/yaml.v2 v2.4.0
)
diff --git a/go.sum b/go.sum
index e44a9b5..1f05b71 100644
--- a/go.sum
+++ b/go.sum
@@ -25,6 +25,7 @@ github.com/beorn7/perks v0.0.0-20180321164747-3a771d992973/go.mod h1:Dwedo/Wpr24
github.com/beorn7/perks v1.0.0/go.mod h1:KWe93zE9D1o94FZ5RNwFwVgaQK1VOXiVxmqh+CedLV8=
github.com/bgentry/speakeasy v0.1.0/go.mod h1:+zsyZBPWlz7T6j88CTgSN5bM796AkVf0kBD4zp0CCIs=
github.com/bketelsen/crypt v0.0.3-0.20200106085610-5cbc8cc4026c/go.mod h1:MKsuJmJgSg28kpZDP6UIiPt0e0Oz0kqKNGyRaWEPv84=
+github.com/census-instrumentation/opencensus-proto v0.2.1/go.mod h1:f6KPmirojxKA12rnyqOA5BBL4O983OfeGPqjHWSTneU=
github.com/cespare/xxhash v1.1.0/go.mod h1:XrSqR1VqqWfGrhpAt58auRo0WTKS1nRRg3ghfAqPWnc=
github.com/client9/misspell v0.3.4/go.mod h1:qj6jICC3Q7zFZvVWo7KLAzC3yx5G7kyvSDkc90ppPyw=
github.com/coreos/bbolt v1.3.2/go.mod h1:iRUV2dpdMOn7Bo10OQBFzIJO9kkE559Wcmn+qkEiiKk=
@@ -40,6 +41,8 @@ github.com/davecgh/go-spew v1.1.1 h1:vj9j/u1bqnvCEfJOwUhtlOARqs3+rkHYY13jYWTU97c
github.com/davecgh/go-spew v1.1.1/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38=
github.com/dgrijalva/jwt-go v3.2.0+incompatible/go.mod h1:E3ru+11k8xSBh+hMPgOLZmtrrCbhqsmaPHjLKYnJCaQ=
github.com/dgryski/go-sip13 v0.0.0-20181026042036-e10d5fee7954/go.mod h1:vAd38F8PWV+bWy6jNmig1y/TA+kYO4g3RSRF0IAv0no=
+github.com/envoyproxy/go-control-plane v0.9.1-0.20191026205805-5f8ba28d4473/go.mod h1:YTl/9mNaCwkRvm6d1a2C3ymFceY/DCBVvsKhRF0iEA4=
+github.com/envoyproxy/protoc-gen-validate v0.1.0/go.mod h1:iSmxcyjqTsJpI2R4NaDN7+kN2VEUnK/pcBlmesArF7c=
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=
@@ -65,10 +68,21 @@ github.com/golang/protobuf v1.2.0/go.mod h1:6lQm79b+lXiMfvg/cZm0SGofjICqVBUtrP5y
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/protobuf v1.4.0-rc.1/go.mod h1:ceaxUfeHdC40wWswd/P6IGgMaK3YpKi5j83Wpe3EHw8=
+github.com/golang/protobuf v1.4.0-rc.1.0.20200221234624-67d41d38c208/go.mod h1:xKAWHe0F5eneWXFV3EuXVDTCmh+JuBKY0li0aMyXATA=
+github.com/golang/protobuf v1.4.0-rc.2/go.mod h1:LlEzMj4AhA7rCAGe4KMBDvJI+AwstrUpVNzEA03Pprs=
+github.com/golang/protobuf v1.4.0-rc.4.0.20200313231945-b860323f09d0/go.mod h1:WU3c8KckQ9AFe+yFwt9sWVRKCVIyN9cPHBJSNnbL67w=
+github.com/golang/protobuf v1.4.0/go.mod h1:jodUvKwWbYaEsadDk5Fwe5c77LiNKVO9IDvqG2KuDX0=
+github.com/golang/protobuf v1.4.1 h1:ZFgWrT+bLgsYPirOnRfKLYJLvssAegOj/hgyMFdJZe0=
+github.com/golang/protobuf v1.4.1/go.mod h1:U8fpvMrcmy5pZrNK1lt4xCsGvpyWQ/VVv6QDs8UjoX8=
github.com/google/btree v0.0.0-20180813153112-4030bb1f1f0c/go.mod h1:lNA+9X1NB3Zf8V7Ke586lFgjr2dZNuvo3lPJSGZ5JPQ=
github.com/google/btree v1.0.0/go.mod h1:lNA+9X1NB3Zf8V7Ke586lFgjr2dZNuvo3lPJSGZ5JPQ=
github.com/google/go-cmp v0.2.0/go.mod h1:oXzfMopK8JAjlY9xF4vHSVASa0yLyX7SntLO5aqRK0M=
github.com/google/go-cmp v0.3.0/go.mod h1:8QqcDgzrUqlUb/G2PQTWiueGozuR1884gddMywk6iLU=
+github.com/google/go-cmp v0.3.1/go.mod h1:8QqcDgzrUqlUb/G2PQTWiueGozuR1884gddMywk6iLU=
+github.com/google/go-cmp v0.4.0/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE=
+github.com/google/go-cmp v0.5.0 h1:/QaMHBdZ26BB3SSst0Iwl10Epc+xhTquomWX0oZEB6w=
+github.com/google/go-cmp v0.5.0/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE=
github.com/google/martian v2.1.0+incompatible/go.mod h1:9I4somxYTbIHy5NJKHRl3wXiIaQGbYVAs8BPL6v8lEs=
github.com/google/pprof v0.0.0-20181206194817-3ea8567a2e57/go.mod h1:zfwlbNMJ+OItoe0UupaVj+oy1omPYYDuagoSzA8v9mc=
github.com/google/pprof v0.0.0-20190515194954-54271f7e092f/go.mod h1:zfwlbNMJ+OItoe0UupaVj+oy1omPYYDuagoSzA8v9mc=
@@ -177,6 +191,7 @@ github.com/prometheus/client_golang v0.9.1/go.mod h1:7SWBe2y4D6OKWSNQJUaRYU/AaXP
github.com/prometheus/client_golang v0.9.3/go.mod h1:/TN21ttK/J9q6uSwhBd54HahCDft0ttaMvbicHlPoso=
github.com/prometheus/client_model v0.0.0-20180712105110-5c3871d89910/go.mod h1:MbSGuTsp3dbXC40dX6PRTWyKYBIrTGTE9sqQNg2J8bo=
github.com/prometheus/client_model v0.0.0-20190129233127-fd36f4220a90/go.mod h1:xMI15A0UPsDsEKsMN9yxemIoYk6Tm2C1GtYGdfGttqA=
+github.com/prometheus/client_model v0.0.0-20190812154241-14fe0d1b01d4/go.mod h1:xMI15A0UPsDsEKsMN9yxemIoYk6Tm2C1GtYGdfGttqA=
github.com/prometheus/common v0.0.0-20181113130724-41aa239b4cce/go.mod h1:daVV7qP5qjZbuso7PdcryaAu0sAZbrN9i7WWcTMWvro=
github.com/prometheus/common v0.4.0/go.mod h1:TNfzLD0ON7rHzMJeJkieUDPYmFC7Snx/y86RQel1bk4=
github.com/prometheus/procfs v0.0.0-20181005140218-185b4288413d/go.mod h1:c3At6R/oaqEKCNdg8wHV1ftS6bRYblBhIjjI8uT2IGk=
@@ -326,6 +341,8 @@ golang.org/x/tools v0.0.0-20190911174233-4f2ddba30aff/go.mod h1:b+2E5dAYhXwXZwtn
golang.org/x/tools v0.0.0-20191012152004-8de300cfc20a/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo=
golang.org/x/tools v0.0.0-20191112195655-aa38f8e97acc/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo=
golang.org/x/xerrors v0.0.0-20190717185122-a985d3407aa7/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0=
+golang.org/x/xerrors v0.0.0-20191204190536-9bdfabe68543 h1:E7g+9GITq07hpfrRu66IVDexMakfv52eLZ2CXBWiKr4=
+golang.org/x/xerrors v0.0.0-20191204190536-9bdfabe68543/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0=
google.golang.org/api v0.4.0/go.mod h1:8k5glujaEP+g9n7WNsDg8QP6cUVNI86fCNMcbazEtwE=
google.golang.org/api v0.7.0/go.mod h1:WtwebWUNSVBH/HAw79HIFXZNqEvBhG+Ra+ax0hx3E3M=
google.golang.org/api v0.8.0/go.mod h1:o4eAsZoiT+ibD93RtjEohWalFOjRDx6CVaqeizhEnKg=
@@ -346,11 +363,23 @@ google.golang.org/genproto v0.0.0-20190819201941-24fa4b261c55/go.mod h1:DMBHOl98
google.golang.org/genproto v0.0.0-20190911173649-1774047e7e51/go.mod h1:IbNlFCBrqXvoKpeg0TB2l7cyZUmoaFKYIwrEpbDKLA8=
google.golang.org/genproto v0.0.0-20191108220845-16a3f7862a1a h1:Ob5/580gVHBJZgXnff1cZDbG+xLtMVE5mDRTe+nIsX4=
google.golang.org/genproto v0.0.0-20191108220845-16a3f7862a1a/go.mod h1:n3cpQtvxv34hfy77yVDNjmbRyujviMdxYliBSkLhpCc=
+google.golang.org/genproto v0.0.0-20200526211855-cb27e3aa2013 h1:+kGHl1aib/qcwaRi1CbqBZ1rk19r85MNUf8HaBghugY=
+google.golang.org/genproto v0.0.0-20200526211855-cb27e3aa2013/go.mod h1:NbSheEEYHJ7i3ixzK3sjbqSGDJWnxyFXZblF3eUsNvo=
google.golang.org/grpc v1.19.0/go.mod h1:mqu4LbDTu4XGKhr4mRzUsmM4RtVoemTSY81AxZiDr8c=
google.golang.org/grpc v1.20.1/go.mod h1:10oTOabMzJvdu6/UiuZezV6QK5dSlG84ov/aaiqXj38=
google.golang.org/grpc v1.21.1/go.mod h1:oYelfM1adQP15Ek0mdvEgi9Df8B9CZIaU1084ijfRaM=
-google.golang.org/grpc v1.24.0 h1:vb/1TCsVn3DcJlQ0Gs1yB1pKI6Do2/QNwxdKqmc/b0s=
-google.golang.org/grpc v1.24.0/go.mod h1:XDChyiUovWa60DnaeDeZmSW86xtLtjtZbwvSiRnRtcA=
+google.golang.org/grpc v1.23.0/go.mod h1:Y5yQAOtifL1yxbo5wqy6BxZv8vAUGQwXBOALyacEbxg=
+google.golang.org/grpc v1.27.0 h1:rRYRFMVgRv6E0D70Skyfsr28tDXIuuPZyWGMPdMcnXg=
+google.golang.org/grpc v1.27.0/go.mod h1:qbnxyOmOxrQa7FizSgH+ReBfzJrCY1pSN7KXBS8abTk=
+google.golang.org/protobuf v0.0.0-20200109180630-ec00e32a8dfd/go.mod h1:DFci5gLYBciE7Vtevhsrf46CRTquxDuWsQurQQe4oz8=
+google.golang.org/protobuf v0.0.0-20200221191635-4d8936d0db64/go.mod h1:kwYJMbMJ01Woi6D6+Kah6886xMZcty6N08ah7+eCXa0=
+google.golang.org/protobuf v0.0.0-20200228230310-ab0ca4ff8a60/go.mod h1:cfTl7dwQJ+fmap5saPgwCLgHXTUD7jkjRqWcaiX5VyM=
+google.golang.org/protobuf v1.20.1-0.20200309200217-e05f789c0967/go.mod h1:A+miEFZTKqfCUM6K7xSMQL9OKL/b6hQv+e19PK+JZNE=
+google.golang.org/protobuf v1.21.0/go.mod h1:47Nbq4nVaFHyn7ilMalzfO3qCViNmqZ2kzikPIcrTAo=
+google.golang.org/protobuf v1.22.0/go.mod h1:EGpADcykh3NcUnDUJcl1+ZksZNG86OlYog2l/sGQquU=
+google.golang.org/protobuf v1.23.1-0.20200526195155-81db48ad09cc/go.mod h1:EGpADcykh3NcUnDUJcl1+ZksZNG86OlYog2l/sGQquU=
+google.golang.org/protobuf v1.25.0 h1:Ejskq+SyPohKW+1uil0JJMtmHCgJPJ/qWTxr8qp+R4c=
+google.golang.org/protobuf v1.25.0/go.mod h1:9JNX74DMeImyA3h4bdi1ymwjUzf21/xIlbajtzgsN7c=
gopkg.in/alecthomas/kingpin.v2 v2.2.6/go.mod h1:FMv+mEhP44yOT+4EoQTLFTRgOQ1FBLkstjWtayDeSgw=
gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0=
gopkg.in/check.v1 v1.0.0-20180628173108-788fd7840127/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0=
diff --git a/gqlgen.yml b/gqlgen.yml
index 81cf26e..c613e5e 100644
--- a/gqlgen.yml
+++ b/gqlgen.yml
@@ -20,9 +20,9 @@ schema:
skip_validation: true
model:
- filename: graphql/schema/schema.go
- package: schema
+ filename: api/schema.go
+ package: api
models:
Long:
- model: github.com/99designs/gqlgen/graphql.Int64
\ No newline at end of file
+ model: github.com/99designs/gqlgen/graphql.Int64
diff --git a/commands/dashboard/dashboard.go b/internal/commands/dashboard/dashboard.go
similarity index 93%
rename from commands/dashboard/dashboard.go
rename to internal/commands/dashboard/dashboard.go
index cb1c7c7..5d270da 100644
--- a/commands/dashboard/dashboard.go
+++ b/internal/commands/dashboard/dashboard.go
@@ -20,7 +20,7 @@ package dashboard
import (
"github.com/urfave/cli"
- "github.com/apache/skywalking-cli/commands/dashboard/global"
+ "github.com/apache/skywalking-cli/internal/commands/dashboard/global"
)
var Command = cli.Command{
diff --git a/commands/dashboard/global/global.go b/internal/commands/dashboard/global/global.go
similarity index 77%
rename from commands/dashboard/global/global.go
rename to internal/commands/dashboard/global/global.go
index 577abde..dcdf3db 100644
--- a/commands/dashboard/global/global.go
+++ b/internal/commands/dashboard/global/global.go
@@ -20,15 +20,16 @@ package global
import (
"github.com/urfave/cli"
- "github.com/apache/skywalking-cli/commands/model"
- "github.com/apache/skywalking-cli/graphql/schema"
+ "github.com/apache/skywalking-cli/api"
+ "github.com/apache/skywalking-cli/internal/logger"
- "github.com/apache/skywalking-cli/display/displayable"
+ "github.com/apache/skywalking-cli/internal/model"
+ "github.com/apache/skywalking-cli/pkg/display/displayable"
- "github.com/apache/skywalking-cli/commands/flags"
- "github.com/apache/skywalking-cli/commands/interceptor"
- "github.com/apache/skywalking-cli/display"
- "github.com/apache/skywalking-cli/graphql/dashboard"
+ "github.com/apache/skywalking-cli/internal/commands/interceptor"
+ "github.com/apache/skywalking-cli/internal/flags"
+ "github.com/apache/skywalking-cli/pkg/display"
+ "github.com/apache/skywalking-cli/pkg/graphql/dashboard"
)
var GlobalCommand = cli.Command{
@@ -62,12 +63,16 @@ var GlobalCommand = cli.Command{
start := ctx.String("start")
step := ctx.Generic("step")
- globalData := dashboard.Global(ctx, schema.Duration{
+ globalData, err := dashboard.Global(ctx, api.Duration{
Start: start,
End: end,
Step: step.(*model.StepEnumValue).Selected,
})
+ if err != nil {
+ logger.Log.Fatalln(err)
+ }
+
return display.Display(ctx, &displayable.Displayable{Data: globalData})
},
}
diff --git a/commands/dashboard/global/metrics.go b/internal/commands/dashboard/global/metrics.go
similarity index 75%
rename from commands/dashboard/global/metrics.go
rename to internal/commands/dashboard/global/metrics.go
index d5ffa40..2ad636f 100644
--- a/commands/dashboard/global/metrics.go
+++ b/internal/commands/dashboard/global/metrics.go
@@ -18,15 +18,16 @@
package global
import (
- "github.com/apache/skywalking-cli/commands/flags"
- "github.com/apache/skywalking-cli/commands/interceptor"
- "github.com/apache/skywalking-cli/commands/model"
- "github.com/apache/skywalking-cli/display"
- "github.com/apache/skywalking-cli/display/displayable"
- "github.com/apache/skywalking-cli/graphql/dashboard"
- "github.com/apache/skywalking-cli/graphql/schema"
-
"github.com/urfave/cli"
+
+ "github.com/apache/skywalking-cli/api"
+ "github.com/apache/skywalking-cli/internal/commands/interceptor"
+ "github.com/apache/skywalking-cli/internal/flags"
+ "github.com/apache/skywalking-cli/internal/logger"
+ "github.com/apache/skywalking-cli/internal/model"
+ "github.com/apache/skywalking-cli/pkg/display"
+ "github.com/apache/skywalking-cli/pkg/display/displayable"
+ "github.com/apache/skywalking-cli/pkg/graphql/dashboard"
)
var Metrics = cli.Command{
@@ -52,12 +53,16 @@ var Metrics = cli.Command{
start := ctx.String("start")
step := ctx.Generic("step")
- globalMetrics := dashboard.Metrics(ctx, schema.Duration{
+ globalMetrics, err := dashboard.Metrics(ctx, api.Duration{
Start: start,
End: end,
Step: step.(*model.StepEnumValue).Selected,
})
+ if err != nil {
+ logger.Log.Fatalln(err)
+ }
+
return display.Display(ctx, &displayable.Displayable{Data: globalMetrics})
},
}
diff --git a/commands/endpoint/endpoint.go b/internal/commands/endpoint/endpoint.go
similarity index 100%
rename from commands/endpoint/endpoint.go
rename to internal/commands/endpoint/endpoint.go
diff --git a/commands/endpoint/list.go b/internal/commands/endpoint/list.go
similarity index 83%
rename from commands/endpoint/list.go
rename to internal/commands/endpoint/list.go
index 3c6767b..4c692e3 100644
--- a/commands/endpoint/list.go
+++ b/internal/commands/endpoint/list.go
@@ -20,11 +20,13 @@ package endpoint
import (
"github.com/urfave/cli"
- "github.com/apache/skywalking-cli/display/displayable"
+ "github.com/apache/skywalking-cli/internal/logger"
- "github.com/apache/skywalking-cli/graphql/metadata"
+ "github.com/apache/skywalking-cli/pkg/display/displayable"
- "github.com/apache/skywalking-cli/display"
+ "github.com/apache/skywalking-cli/pkg/graphql/metadata"
+
+ "github.com/apache/skywalking-cli/pkg/display"
)
var ListCommand = cli.Command{
@@ -56,7 +58,11 @@ var ListCommand = cli.Command{
limit := ctx.Int("limit")
keyword := ctx.String("keyword")
- endpoints := metadata.SearchEndpoints(ctx, serviceID, keyword, limit)
+ endpoints, err := metadata.SearchEndpoints(ctx, serviceID, keyword, limit)
+
+ if err != nil {
+ logger.Log.Fatalln(err)
+ }
return display.Display(ctx, &displayable.Displayable{Data: endpoints})
},
diff --git a/commands/common/common.go b/internal/commands/healthcheck/healthcheck.go
similarity index 82%
rename from commands/common/common.go
rename to internal/commands/healthcheck/healthcheck.go
index 7457569..12ab088 100644
--- a/commands/common/common.go
+++ b/internal/commands/healthcheck/healthcheck.go
@@ -15,14 +15,15 @@
// specific language governing permissions and limitations
// under the License.
-package common
+package healthcheck
import (
"github.com/urfave/cli"
- "github.com/apache/skywalking-cli/graphql/common"
- "github.com/apache/skywalking-cli/grpc"
- "github.com/apache/skywalking-cli/logger"
+ "github.com/apache/skywalking-cli/pkg/healthcheck"
+
+ "github.com/apache/skywalking-cli/internal/logger"
+ hc "github.com/apache/skywalking-cli/pkg/graphql/healthcheck"
)
var Command = cli.Command{
@@ -48,7 +49,12 @@ var Command = cli.Command{
},
},
Action: func(ctx *cli.Context) error {
- healthStatus := common.CheckHealth(ctx)
+ healthStatus, err := hc.CheckHealth(ctx)
+
+ if err != nil {
+ logger.Log.Fatalln(err)
+ }
+
if healthStatus.Score != 0 {
return cli.NewExitError(healthStatus.Details, healthStatus.Score)
}
@@ -56,7 +62,7 @@ var Command = cli.Command{
if !ctx.BoolT("grpc") {
return nil
}
- retCode := grpc.HealthCheck(ctx.String("grpcAddr"), ctx.Bool("grpcTLS"))
+ retCode := healthcheck.HealthCheck(ctx.String("grpcAddr"), ctx.Bool("grpcTLS"))
if retCode != 0 {
return cli.NewExitError("gRPC: failed to check health", retCode)
}
diff --git a/commands/instance/instance.go b/internal/commands/instance/instance.go
similarity index 93%
rename from commands/instance/instance.go
rename to internal/commands/instance/instance.go
index 29c86a7..9277086 100644
--- a/commands/instance/instance.go
+++ b/internal/commands/instance/instance.go
@@ -20,9 +20,9 @@ package instance
import (
"github.com/urfave/cli"
- "github.com/apache/skywalking-cli/graphql/metadata"
+ "github.com/apache/skywalking-cli/pkg/graphql/metadata"
- "github.com/apache/skywalking-cli/logger"
+ "github.com/apache/skywalking-cli/internal/logger"
)
var Command = cli.Command{
diff --git a/commands/instance/list.go b/internal/commands/instance/list.go
similarity index 74%
rename from commands/instance/list.go
rename to internal/commands/instance/list.go
index 1cfcd88..4318903 100644
--- a/commands/instance/list.go
+++ b/internal/commands/instance/list.go
@@ -20,15 +20,17 @@ package instance
import (
"github.com/urfave/cli"
- "github.com/apache/skywalking-cli/display/displayable"
+ "github.com/apache/skywalking-cli/api"
+ "github.com/apache/skywalking-cli/internal/logger"
- "github.com/apache/skywalking-cli/graphql/metadata"
+ "github.com/apache/skywalking-cli/pkg/display/displayable"
- "github.com/apache/skywalking-cli/commands/flags"
- "github.com/apache/skywalking-cli/commands/interceptor"
- "github.com/apache/skywalking-cli/commands/model"
- "github.com/apache/skywalking-cli/display"
- "github.com/apache/skywalking-cli/graphql/schema"
+ "github.com/apache/skywalking-cli/pkg/graphql/metadata"
+
+ "github.com/apache/skywalking-cli/internal/commands/interceptor"
+ "github.com/apache/skywalking-cli/internal/flags"
+ "github.com/apache/skywalking-cli/internal/model"
+ "github.com/apache/skywalking-cli/pkg/display"
)
var ListCommand = cli.Command{
@@ -47,12 +49,16 @@ var ListCommand = cli.Command{
start := ctx.String("start")
step := ctx.Generic("step")
- instances := metadata.Instances(ctx, serviceID, schema.Duration{
+ instances, err := metadata.Instances(ctx, serviceID, api.Duration{
Start: start,
End: end,
Step: step.(*model.StepEnumValue).Selected,
})
+ if err != nil {
+ logger.Log.Fatalln(err)
+ }
+
return display.Display(ctx, &displayable.Displayable{Data: instances})
},
}
diff --git a/commands/instance/search.go b/internal/commands/instance/search.go
similarity index 75%
rename from commands/instance/search.go
rename to internal/commands/instance/search.go
index 548606f..ab9cbec 100644
--- a/commands/instance/search.go
+++ b/internal/commands/instance/search.go
@@ -20,17 +20,19 @@ package instance
import (
"regexp"
- "github.com/apache/skywalking-cli/display/displayable"
+ "github.com/apache/skywalking-cli/api"
+ "github.com/apache/skywalking-cli/internal/logger"
- "github.com/apache/skywalking-cli/graphql/metadata"
+ "github.com/apache/skywalking-cli/pkg/display/displayable"
+
+ "github.com/apache/skywalking-cli/pkg/graphql/metadata"
"github.com/urfave/cli"
- "github.com/apache/skywalking-cli/commands/flags"
- "github.com/apache/skywalking-cli/commands/interceptor"
- "github.com/apache/skywalking-cli/commands/model"
- "github.com/apache/skywalking-cli/display"
- "github.com/apache/skywalking-cli/graphql/schema"
+ "github.com/apache/skywalking-cli/internal/commands/interceptor"
+ "github.com/apache/skywalking-cli/internal/flags"
+ "github.com/apache/skywalking-cli/internal/model"
+ "github.com/apache/skywalking-cli/pkg/display"
)
var SearchCommand = cli.Command{
@@ -50,13 +52,17 @@ var SearchCommand = cli.Command{
regex := ctx.String("regex")
- instances := metadata.Instances(ctx, serviceID, schema.Duration{
+ instances, err := metadata.Instances(ctx, serviceID, api.Duration{
Start: start,
End: end,
Step: step.(*model.StepEnumValue).Selected,
})
- var result []schema.ServiceInstance
+ if err != nil {
+ logger.Log.Fatalln(err)
+ }
+
+ var result []api.ServiceInstance
if len(instances) > 0 {
for _, instance := range instances {
if ok, _ := regexp.Match(regex, []byte(instance.Name)); ok {
diff --git a/commands/interceptor/duration.go b/internal/commands/interceptor/duration.go
similarity index 91%
rename from commands/interceptor/duration.go
rename to internal/commands/interceptor/duration.go
index 6e382e0..36b83da 100644
--- a/commands/interceptor/duration.go
+++ b/internal/commands/interceptor/duration.go
@@ -21,15 +21,16 @@ import (
"strconv"
"time"
- "github.com/apache/skywalking-cli/graphql/utils"
+ "github.com/apache/skywalking-cli/api"
+
+ "github.com/apache/skywalking-cli/pkg/graphql/utils"
"github.com/urfave/cli"
- "github.com/apache/skywalking-cli/graphql/schema"
- "github.com/apache/skywalking-cli/logger"
+ "github.com/apache/skywalking-cli/internal/logger"
)
-func TryParseTime(unparsed string) (schema.Step, time.Time, error) {
+func TryParseTime(unparsed string) (api.Step, time.Time, error) {
var possibleError error = nil
for step, layout := range utils.StepFormats {
t, err := time.Parse(layout, unparsed)
@@ -38,7 +39,7 @@ func TryParseTime(unparsed string) (schema.Step, time.Time, error) {
}
possibleError = err
}
- return schema.StepSecond, time.Time{}, possibleError
+ return api.StepSecond, time.Time{}, possibleError
}
// DurationInterceptor sets the duration if absent, and formats it accordingly,
@@ -70,7 +71,7 @@ func DurationInterceptor(ctx *cli.Context) error {
// then: end := now + 30 units, where unit is the precision of `start`, (hours, minutes, etc.)
// if --start is absent, --end is given,
// then: start := end - 30 units, where unit is the precision of `end`, (hours, minutes, etc.)
-func ParseDuration(start, end, timezone string) (startTime, endTime time.Time, step schema.Step, dt utils.DurationType) {
+func ParseDuration(start, end, timezone string) (startTime, endTime time.Time, step api.Step, dt utils.DurationType) {
logger.Log.Debugln("Start time:", start, "end time:", end, "timezone:", timezone)
now := time.Now()
@@ -86,7 +87,7 @@ func ParseDuration(start, end, timezone string) (startTime, endTime time.Time, s
// both are absent
if start == "" && end == "" {
- return now.Add(-30 * time.Minute), now, schema.StepMinute, utils.BothAbsent
+ return now.Add(-30 * time.Minute), now, api.StepMinute, utils.BothAbsent
}
var err error
diff --git a/commands/interceptor/duration_test.go b/internal/commands/interceptor/duration_test.go
similarity index 94%
rename from commands/interceptor/duration_test.go
rename to internal/commands/interceptor/duration_test.go
index 10c8de5..4af91d0 100644
--- a/commands/interceptor/duration_test.go
+++ b/internal/commands/interceptor/duration_test.go
@@ -22,7 +22,7 @@ import (
"testing"
"time"
- "github.com/apache/skywalking-cli/graphql/schema"
+ "github.com/apache/skywalking-cli/api"
)
func TestParseDuration(t *testing.T) {
@@ -37,7 +37,7 @@ func TestParseDuration(t *testing.T) {
args args
wantedStartTime time.Time
wantedEndTime time.Time
- wantedStep schema.Step
+ wantedStep api.Step
}{
{
name: "Should set current time if start is absent",
@@ -47,7 +47,7 @@ func TestParseDuration(t *testing.T) {
},
wantedStartTime: now.Add(-30 * time.Minute),
wantedEndTime: now,
- wantedStep: schema.StepMinute,
+ wantedStep: api.StepMinute,
},
{
name: "Should set current time if end is absent",
@@ -57,7 +57,7 @@ func TestParseDuration(t *testing.T) {
},
wantedStartTime: now,
wantedEndTime: now.Add(30 * time.Minute),
- wantedStep: schema.StepMinute,
+ wantedStep: api.StepMinute,
},
{
name: "Should keep both if both are present",
@@ -67,7 +67,7 @@ func TestParseDuration(t *testing.T) {
},
wantedStartTime: now.Add(-10 * time.Minute),
wantedEndTime: now.Add(10 * time.Minute),
- wantedStep: schema.StepMinute,
+ wantedStep: api.StepMinute,
},
{
name: "Should set both if both are absent",
@@ -77,7 +77,7 @@ func TestParseDuration(t *testing.T) {
},
wantedStartTime: now.Add(-30 * time.Minute),
wantedEndTime: now,
- wantedStep: schema.StepMinute,
+ wantedStep: api.StepMinute,
},
}
for _, tt := range tests {
diff --git a/commands/interceptor/entity.go b/internal/commands/interceptor/entity.go
similarity index 81%
rename from commands/interceptor/entity.go
rename to internal/commands/interceptor/entity.go
index f9544ca..552309a 100644
--- a/commands/interceptor/entity.go
+++ b/internal/commands/interceptor/entity.go
@@ -18,12 +18,12 @@
package interceptor
import (
- "github.com/apache/skywalking-cli/graphql/schema"
-
"github.com/urfave/cli"
+
+ "github.com/apache/skywalking-cli/api"
)
-func ParseEntity(ctx *cli.Context) *schema.Entity {
+func ParseEntity(ctx *cli.Context) *api.Entity {
service := ctx.String("service")
normal := ctx.BoolT("isNormal")
instance := ctx.String("instance")
@@ -34,7 +34,7 @@ func ParseEntity(ctx *cli.Context) *schema.Entity {
destInstance := ctx.String("destServiceInstance")
destEndpoint := ctx.String("destEndpoint")
- entity := &schema.Entity{
+ entity := &api.Entity{
ServiceName: &service,
Normal: &normal,
ServiceInstanceName: &instance,
@@ -50,21 +50,21 @@ func ParseEntity(ctx *cli.Context) *schema.Entity {
}
// parseScope defines the scope based on the input parameters.
-func parseScope(entity *schema.Entity) schema.Scope {
- scope := schema.ScopeAll
+func parseScope(entity *api.Entity) api.Scope {
+ scope := api.ScopeAll
if *entity.DestEndpointName != "" {
- scope = schema.ScopeEndpointRelation
+ scope = api.ScopeEndpointRelation
} else if *entity.DestServiceInstanceName != "" {
- scope = schema.ScopeServiceInstanceRelation
+ scope = api.ScopeServiceInstanceRelation
} else if *entity.DestServiceName != "" {
- scope = schema.ScopeServiceRelation
+ scope = api.ScopeServiceRelation
} else if *entity.EndpointName != "" {
- scope = schema.ScopeEndpoint
+ scope = api.ScopeEndpoint
} else if *entity.ServiceInstanceName != "" {
- scope = schema.ScopeServiceInstance
+ scope = api.ScopeServiceInstance
} else if *entity.ServiceName != "" {
- scope = schema.ScopeService
+ scope = api.ScopeService
}
return scope
diff --git a/commands/interceptor/entity_test.go b/internal/commands/interceptor/entity_test.go
similarity index 85%
rename from commands/interceptor/entity_test.go
rename to internal/commands/interceptor/entity_test.go
index da3a03a..2f66f52 100644
--- a/commands/interceptor/entity_test.go
+++ b/internal/commands/interceptor/entity_test.go
@@ -20,7 +20,7 @@ package interceptor
import (
"testing"
- "github.com/apache/skywalking-cli/graphql/schema"
+ "github.com/apache/skywalking-cli/api"
)
func Test_parseScope(t *testing.T) {
@@ -28,12 +28,12 @@ func Test_parseScope(t *testing.T) {
nonEmpty := "test"
tests := []struct {
name string
- args *schema.Entity
- want schema.Scope
+ args *api.Entity
+ want api.Scope
}{
{
name: "all of names are empty",
- args: &schema.Entity{
+ args: &api.Entity{
ServiceName: &empty,
ServiceInstanceName: &empty,
EndpointName: &empty,
@@ -41,11 +41,11 @@ func Test_parseScope(t *testing.T) {
DestServiceInstanceName: &empty,
DestEndpointName: &empty,
},
- want: schema.ScopeAll,
+ want: api.ScopeAll,
},
{
name: "all of names are not empty",
- args: &schema.Entity{
+ args: &api.Entity{
ServiceName: &nonEmpty,
ServiceInstanceName: &nonEmpty,
EndpointName: &nonEmpty,
@@ -53,11 +53,11 @@ func Test_parseScope(t *testing.T) {
DestServiceInstanceName: &nonEmpty,
DestEndpointName: &nonEmpty,
},
- want: schema.ScopeEndpointRelation,
+ want: api.ScopeEndpointRelation,
},
{
name: "only serviceName is not empty",
- args: &schema.Entity{
+ args: &api.Entity{
ServiceName: &nonEmpty,
ServiceInstanceName: &empty,
EndpointName: &empty,
@@ -65,11 +65,11 @@ func Test_parseScope(t *testing.T) {
DestServiceInstanceName: &empty,
DestEndpointName: &empty,
},
- want: schema.ScopeService,
+ want: api.ScopeService,
},
{
name: "instanceName is not empty",
- args: &schema.Entity{
+ args: &api.Entity{
ServiceName: &nonEmpty,
ServiceInstanceName: &nonEmpty,
EndpointName: &empty,
@@ -77,11 +77,11 @@ func Test_parseScope(t *testing.T) {
DestServiceInstanceName: &empty,
DestEndpointName: &empty,
},
- want: schema.ScopeServiceInstance,
+ want: api.ScopeServiceInstance,
},
{
name: "endpointName is not empty",
- args: &schema.Entity{
+ args: &api.Entity{
ServiceName: &nonEmpty,
ServiceInstanceName: &empty,
EndpointName: &nonEmpty,
@@ -89,11 +89,11 @@ func Test_parseScope(t *testing.T) {
DestServiceInstanceName: &empty,
DestEndpointName: &empty,
},
- want: schema.ScopeEndpoint,
+ want: api.ScopeEndpoint,
},
{
name: "destService is not empty",
- args: &schema.Entity{
+ args: &api.Entity{
ServiceName: &nonEmpty,
ServiceInstanceName: &empty,
EndpointName: &empty,
@@ -101,11 +101,11 @@ func Test_parseScope(t *testing.T) {
DestServiceInstanceName: &empty,
DestEndpointName: &empty,
},
- want: schema.ScopeServiceRelation,
+ want: api.ScopeServiceRelation,
},
{
name: "destInstance is not empty",
- args: &schema.Entity{
+ args: &api.Entity{
ServiceName: &nonEmpty,
ServiceInstanceName: &nonEmpty,
EndpointName: &empty,
@@ -113,7 +113,7 @@ func Test_parseScope(t *testing.T) {
DestServiceInstanceName: &nonEmpty,
DestEndpointName: &empty,
},
- want: schema.ScopeServiceInstanceRelation,
+ want: api.ScopeServiceInstanceRelation,
},
}
for _, tt := range tests {
diff --git a/commands/interceptor/interceptor.go b/internal/commands/interceptor/interceptor.go
similarity index 100%
rename from commands/interceptor/interceptor.go
rename to internal/commands/interceptor/interceptor.go
diff --git a/commands/interceptor/timezone.go b/internal/commands/interceptor/timezone.go
similarity index 93%
rename from commands/interceptor/timezone.go
rename to internal/commands/interceptor/timezone.go
index c724276..f75c318 100644
--- a/commands/interceptor/timezone.go
+++ b/internal/commands/interceptor/timezone.go
@@ -22,8 +22,8 @@ import (
"github.com/urfave/cli"
- "github.com/apache/skywalking-cli/graphql/metadata"
- "github.com/apache/skywalking-cli/logger"
+ "github.com/apache/skywalking-cli/internal/logger"
+ "github.com/apache/skywalking-cli/pkg/graphql/metadata"
)
// TimezoneInterceptor sets the server timezone if the server supports the API,
diff --git a/commands/metrics/aggregation/topn.go b/internal/commands/metrics/aggregation/topn.go
similarity index 77%
rename from commands/metrics/aggregation/topn.go
rename to internal/commands/metrics/aggregation/topn.go
index a3505cf..519d2dc 100644
--- a/commands/metrics/aggregation/topn.go
+++ b/internal/commands/metrics/aggregation/topn.go
@@ -21,15 +21,17 @@ import (
"fmt"
"strconv"
- "github.com/apache/skywalking-cli/commands/flags"
- "github.com/apache/skywalking-cli/commands/interceptor"
- "github.com/apache/skywalking-cli/commands/model"
- "github.com/apache/skywalking-cli/display"
- "github.com/apache/skywalking-cli/display/displayable"
- "github.com/apache/skywalking-cli/graphql/metrics"
- "github.com/apache/skywalking-cli/graphql/schema"
+ "github.com/apache/skywalking-cli/api"
+ "github.com/apache/skywalking-cli/internal/logger"
"github.com/urfave/cli"
+
+ "github.com/apache/skywalking-cli/internal/commands/interceptor"
+ "github.com/apache/skywalking-cli/internal/flags"
+ "github.com/apache/skywalking-cli/internal/model"
+ "github.com/apache/skywalking-cli/pkg/display"
+ "github.com/apache/skywalking-cli/pkg/display/displayable"
+ "github.com/apache/skywalking-cli/pkg/graphql/metrics"
)
var TopN = cli.Command{
@@ -44,9 +46,9 @@ var TopN = cli.Command{
Name: "order",
Usage: "the `order` by which the top entities are sorted",
Value: &model.OrderEnumValue{
- Enum: schema.AllOrder,
- Default: schema.OrderDes,
- Selected: schema.OrderDes,
+ Enum: api.AllOrder,
+ Default: api.OrderDes,
+ Selected: api.OrderDes,
},
},
},
@@ -75,13 +77,13 @@ var TopN = cli.Command{
topN = nn
}
- duration := schema.Duration{
+ duration := api.Duration{
Start: start,
End: end,
Step: step,
}
- metricsValues := metrics.SortMetrics(ctx, schema.TopNCondition{
+ metricsValues, err := metrics.SortMetrics(ctx, api.TopNCondition{
Name: metricsName,
ParentService: &parentService,
Normal: &normal,
@@ -90,6 +92,10 @@ var TopN = cli.Command{
Order: order,
}, duration)
+ if err != nil {
+ logger.Log.Fatalln(err)
+ }
+
return display.Display(ctx, &displayable.Displayable{Data: metricsValues})
},
}
diff --git a/commands/metrics/linear/linear-metrics.go b/internal/commands/metrics/linear/linear-metrics.go
similarity index 72%
rename from commands/metrics/linear/linear-metrics.go
rename to internal/commands/metrics/linear/linear-metrics.go
index 717943c..e48ca36 100644
--- a/commands/metrics/linear/linear-metrics.go
+++ b/internal/commands/metrics/linear/linear-metrics.go
@@ -18,14 +18,15 @@
package linear
import (
- "github.com/apache/skywalking-cli/commands/flags"
- "github.com/apache/skywalking-cli/commands/interceptor"
- "github.com/apache/skywalking-cli/commands/model"
- "github.com/apache/skywalking-cli/display"
- "github.com/apache/skywalking-cli/display/displayable"
- "github.com/apache/skywalking-cli/graphql/metrics"
- "github.com/apache/skywalking-cli/graphql/schema"
- "github.com/apache/skywalking-cli/graphql/utils"
+ "github.com/apache/skywalking-cli/api"
+ "github.com/apache/skywalking-cli/internal/commands/interceptor"
+ "github.com/apache/skywalking-cli/internal/flags"
+ "github.com/apache/skywalking-cli/internal/logger"
+ "github.com/apache/skywalking-cli/internal/model"
+ "github.com/apache/skywalking-cli/pkg/display"
+ "github.com/apache/skywalking-cli/pkg/display/displayable"
+ "github.com/apache/skywalking-cli/pkg/graphql/metrics"
+ "github.com/apache/skywalking-cli/pkg/graphql/utils"
"github.com/urfave/cli"
)
@@ -50,17 +51,21 @@ var Single = cli.Command{
metricsName := ctx.String("name")
entity := interceptor.ParseEntity(ctx)
- duration := schema.Duration{
+ duration := api.Duration{
Start: start,
End: end,
Step: step.(*model.StepEnumValue).Selected,
}
- metricsValues := metrics.LinearIntValues(ctx, schema.MetricsCondition{
+ metricsValues, err := metrics.LinearIntValues(ctx, api.MetricsCondition{
Name: metricsName,
Entity: entity,
}, duration)
+ if err != nil {
+ logger.Log.Fatalln(err)
+ }
+
return display.Display(ctx, &displayable.Displayable{Data: utils.MetricsValuesToMap(duration, metricsValues)})
},
}
diff --git a/commands/metrics/linear/multiple-linear-metrics.go b/internal/commands/metrics/linear/multiple-linear-metrics.go
similarity index 74%
rename from commands/metrics/linear/multiple-linear-metrics.go
rename to internal/commands/metrics/linear/multiple-linear-metrics.go
index d5165cf..6a1e2fb 100644
--- a/commands/metrics/linear/multiple-linear-metrics.go
+++ b/internal/commands/metrics/linear/multiple-linear-metrics.go
@@ -21,14 +21,16 @@ import (
"fmt"
"strings"
- "github.com/apache/skywalking-cli/commands/flags"
- "github.com/apache/skywalking-cli/commands/interceptor"
- "github.com/apache/skywalking-cli/commands/model"
- "github.com/apache/skywalking-cli/display"
- "github.com/apache/skywalking-cli/display/displayable"
- "github.com/apache/skywalking-cli/graphql/metrics"
- "github.com/apache/skywalking-cli/graphql/schema"
- "github.com/apache/skywalking-cli/graphql/utils"
+ "github.com/apache/skywalking-cli/api"
+ "github.com/apache/skywalking-cli/internal/logger"
+
+ "github.com/apache/skywalking-cli/internal/commands/interceptor"
+ "github.com/apache/skywalking-cli/internal/flags"
+ "github.com/apache/skywalking-cli/internal/model"
+ "github.com/apache/skywalking-cli/pkg/display"
+ "github.com/apache/skywalking-cli/pkg/display/displayable"
+ "github.com/apache/skywalking-cli/pkg/graphql/metrics"
+ "github.com/apache/skywalking-cli/pkg/graphql/utils"
"github.com/urfave/cli"
)
@@ -62,21 +64,25 @@ var Multiple = cli.Command{
labels := ctx.String("labels")
entity := interceptor.ParseEntity(ctx)
- if *entity.ServiceName == "" && entity.Scope != schema.ScopeAll {
+ if *entity.ServiceName == "" && entity.Scope != api.ScopeAll {
return fmt.Errorf("the name of service should be specified when metrics' scope is not `All`")
}
- duration := schema.Duration{
+ duration := api.Duration{
Start: start,
End: end,
Step: step.(*model.StepEnumValue).Selected,
}
- metricsValuesArray := metrics.MultipleLinearIntValues(ctx, schema.MetricsCondition{
+ metricsValuesArray, err := metrics.MultipleLinearIntValues(ctx, api.MetricsCondition{
Name: metricsName,
Entity: interceptor.ParseEntity(ctx),
}, strings.Split(labels, ","), duration)
+ if err != nil {
+ logger.Log.Fatalln(err)
+ }
+
reshaped := utils.MetricsValuesArrayToMap(duration, metricsValuesArray)
return display.Display(ctx, &displayable.Displayable{Data: reshaped})
},
diff --git a/commands/metrics/list/list-metrics.go b/internal/commands/metrics/list/list-metrics.go
similarity index 79%
rename from commands/metrics/list/list-metrics.go
rename to internal/commands/metrics/list/list-metrics.go
index 8b22349..ca67689 100644
--- a/commands/metrics/list/list-metrics.go
+++ b/internal/commands/metrics/list/list-metrics.go
@@ -20,9 +20,11 @@ package list
import (
"github.com/urfave/cli"
- "github.com/apache/skywalking-cli/display"
- "github.com/apache/skywalking-cli/display/displayable"
- "github.com/apache/skywalking-cli/graphql/metrics"
+ "github.com/apache/skywalking-cli/internal/logger"
+
+ "github.com/apache/skywalking-cli/pkg/display"
+ "github.com/apache/skywalking-cli/pkg/display/displayable"
+ "github.com/apache/skywalking-cli/pkg/graphql/metrics"
)
var Command = cli.Command{
@@ -38,7 +40,11 @@ var Command = cli.Command{
Action: func(ctx *cli.Context) error {
regex := ctx.String("regex")
- metricsValue := metrics.ListMetrics(ctx, regex)
+ metricsValue, err := metrics.ListMetrics(ctx, regex)
+
+ if err != nil {
+ logger.Log.Fatalln(err)
+ }
return display.Display(ctx, &displayable.Displayable{Data: metricsValue})
},
diff --git a/commands/metrics/metrics.go b/internal/commands/metrics/metrics.go
similarity index 75%
rename from commands/metrics/metrics.go
rename to internal/commands/metrics/metrics.go
index 9ba471b..78196d7 100644
--- a/commands/metrics/metrics.go
+++ b/internal/commands/metrics/metrics.go
@@ -20,13 +20,13 @@ package metrics
import (
"github.com/urfave/cli"
- "github.com/apache/skywalking-cli/commands/metrics/aggregation"
- "github.com/apache/skywalking-cli/commands/metrics/list"
+ "github.com/apache/skywalking-cli/internal/commands/metrics/aggregation"
+ "github.com/apache/skywalking-cli/internal/commands/metrics/list"
- "github.com/apache/skywalking-cli/commands/metrics/thermodynamic"
+ "github.com/apache/skywalking-cli/internal/commands/metrics/thermodynamic"
- "github.com/apache/skywalking-cli/commands/metrics/linear"
- "github.com/apache/skywalking-cli/commands/metrics/single"
+ "github.com/apache/skywalking-cli/internal/commands/metrics/linear"
+ "github.com/apache/skywalking-cli/internal/commands/metrics/single"
)
var Command = cli.Command{
diff --git a/commands/metrics/single/single-metrics.go b/internal/commands/metrics/single/single-metrics.go
similarity index 74%
rename from commands/metrics/single/single-metrics.go
rename to internal/commands/metrics/single/single-metrics.go
index 05469ec..d4ff085 100644
--- a/commands/metrics/single/single-metrics.go
+++ b/internal/commands/metrics/single/single-metrics.go
@@ -18,15 +18,16 @@
package single
import (
- "github.com/apache/skywalking-cli/commands/flags"
- "github.com/apache/skywalking-cli/commands/interceptor"
- "github.com/apache/skywalking-cli/commands/model"
- "github.com/apache/skywalking-cli/display"
- "github.com/apache/skywalking-cli/display/displayable"
- "github.com/apache/skywalking-cli/graphql/metrics"
- "github.com/apache/skywalking-cli/graphql/schema"
-
"github.com/urfave/cli"
+
+ "github.com/apache/skywalking-cli/api"
+ "github.com/apache/skywalking-cli/internal/commands/interceptor"
+ "github.com/apache/skywalking-cli/internal/flags"
+ "github.com/apache/skywalking-cli/internal/logger"
+ "github.com/apache/skywalking-cli/internal/model"
+ "github.com/apache/skywalking-cli/pkg/display"
+ "github.com/apache/skywalking-cli/pkg/display/displayable"
+ "github.com/apache/skywalking-cli/pkg/graphql/metrics"
)
var Command = cli.Command{
@@ -49,17 +50,21 @@ var Command = cli.Command{
metricsName := ctx.String("name")
entity := interceptor.ParseEntity(ctx)
- duration := schema.Duration{
+ duration := api.Duration{
Start: start,
End: end,
Step: step.(*model.StepEnumValue).Selected,
}
- metricsValue := metrics.IntValues(ctx, schema.MetricsCondition{
+ metricsValue, err := metrics.IntValues(ctx, api.MetricsCondition{
Name: metricsName,
Entity: entity,
}, duration)
+ if err != nil {
+ logger.Log.Fatalln(err)
+ }
+
return display.Display(ctx, &displayable.Displayable{Data: metricsValue})
},
}
diff --git a/commands/metrics/thermodynamic/thermodynamic.go b/internal/commands/metrics/thermodynamic/thermodynamic.go
similarity index 75%
rename from commands/metrics/thermodynamic/thermodynamic.go
rename to internal/commands/metrics/thermodynamic/thermodynamic.go
index 63d3f94..ccc2cd7 100644
--- a/commands/metrics/thermodynamic/thermodynamic.go
+++ b/internal/commands/metrics/thermodynamic/thermodynamic.go
@@ -18,15 +18,16 @@
package thermodynamic
import (
- "github.com/apache/skywalking-cli/commands/flags"
- "github.com/apache/skywalking-cli/commands/interceptor"
- "github.com/apache/skywalking-cli/commands/model"
- "github.com/apache/skywalking-cli/display"
- "github.com/apache/skywalking-cli/display/displayable"
- "github.com/apache/skywalking-cli/graphql/metrics"
- "github.com/apache/skywalking-cli/graphql/schema"
-
"github.com/urfave/cli"
+
+ "github.com/apache/skywalking-cli/api"
+ "github.com/apache/skywalking-cli/internal/commands/interceptor"
+ "github.com/apache/skywalking-cli/internal/flags"
+ "github.com/apache/skywalking-cli/internal/logger"
+ "github.com/apache/skywalking-cli/internal/model"
+ "github.com/apache/skywalking-cli/pkg/display"
+ "github.com/apache/skywalking-cli/pkg/display/displayable"
+ "github.com/apache/skywalking-cli/pkg/graphql/metrics"
)
var Command = cli.Command{
@@ -50,17 +51,21 @@ var Command = cli.Command{
metricsName := ctx.String("name")
entity := interceptor.ParseEntity(ctx)
- duration := schema.Duration{
+ duration := api.Duration{
Start: start,
End: end,
Step: step.(*model.StepEnumValue).Selected,
}
- metricsValues := metrics.Thermodynamic(ctx, schema.MetricsCondition{
+ metricsValues, err := metrics.Thermodynamic(ctx, api.MetricsCondition{
Name: metricsName,
Entity: entity,
}, duration)
+ if err != nil {
+ logger.Log.Fatalln(err)
+ }
+
return display.Display(ctx, &displayable.Displayable{
Data: metricsValues,
Duration: duration,
diff --git a/commands/service/list.go b/internal/commands/service/list.go
similarity index 69%
rename from commands/service/list.go
rename to internal/commands/service/list.go
index 14e2830..3776ab7 100644
--- a/commands/service/list.go
+++ b/internal/commands/service/list.go
@@ -20,15 +20,17 @@ package service
import (
"github.com/urfave/cli"
- "github.com/apache/skywalking-cli/display/displayable"
+ "github.com/apache/skywalking-cli/api"
+ "github.com/apache/skywalking-cli/internal/logger"
- "github.com/apache/skywalking-cli/graphql/metadata"
+ "github.com/apache/skywalking-cli/pkg/display/displayable"
- "github.com/apache/skywalking-cli/commands/flags"
- "github.com/apache/skywalking-cli/commands/interceptor"
- "github.com/apache/skywalking-cli/commands/model"
- "github.com/apache/skywalking-cli/display"
- "github.com/apache/skywalking-cli/graphql/schema"
+ "github.com/apache/skywalking-cli/pkg/graphql/metadata"
+
+ "github.com/apache/skywalking-cli/internal/commands/interceptor"
+ "github.com/apache/skywalking-cli/internal/flags"
+ "github.com/apache/skywalking-cli/internal/model"
+ "github.com/apache/skywalking-cli/pkg/display"
)
var ListCommand = cli.Command{
@@ -47,17 +49,24 @@ var ListCommand = cli.Command{
start := ctx.String("start")
step := ctx.Generic("step")
- var services []schema.Service
+ var services []api.Service
+ var err error
if args := ctx.Args(); len(args) == 0 {
- services = metadata.AllServices(ctx, schema.Duration{
+ services, err = metadata.AllServices(ctx, api.Duration{
Start: start,
End: end,
Step: step.(*model.StepEnumValue).Selected,
})
+ if err != nil {
+ logger.Log.Fatalln(err)
+ }
} else {
- service, _ := metadata.SearchService(ctx, args.First())
- services = []schema.Service{service}
+ service, err := metadata.SearchService(ctx, args.First())
+ if err != nil {
+ logger.Log.Fatalln(err)
+ }
+ services = []api.Service{service}
}
return display.Display(ctx, &displayable.Displayable{Data: services})
diff --git a/commands/service/service.go b/internal/commands/service/service.go
similarity index 100%
rename from commands/service/service.go
rename to internal/commands/service/service.go
diff --git a/commands/trace/list.go b/internal/commands/trace/list.go
similarity index 76%
rename from commands/trace/list.go
rename to internal/commands/trace/list.go
index 0d875c7..067d745 100644
--- a/commands/trace/list.go
+++ b/internal/commands/trace/list.go
@@ -20,18 +20,20 @@ package trace
import (
"strings"
- "github.com/apache/skywalking-cli/display/displayable"
+ "github.com/apache/skywalking-cli/api"
+ "github.com/apache/skywalking-cli/internal/logger"
- "github.com/apache/skywalking-cli/commands/interceptor"
+ "github.com/apache/skywalking-cli/pkg/display/displayable"
+
+ "github.com/apache/skywalking-cli/internal/commands/interceptor"
"github.com/urfave/cli"
- "github.com/apache/skywalking-cli/commands/flags"
- "github.com/apache/skywalking-cli/commands/model"
- "github.com/apache/skywalking-cli/display"
+ "github.com/apache/skywalking-cli/internal/flags"
+ "github.com/apache/skywalking-cli/internal/model"
+ "github.com/apache/skywalking-cli/pkg/display"
- "github.com/apache/skywalking-cli/graphql/schema"
- "github.com/apache/skywalking-cli/graphql/trace"
+ "github.com/apache/skywalking-cli/pkg/graphql/trace"
)
const DefaultPageSize = 15
@@ -75,7 +77,7 @@ var ListCommand = cli.Command{
end := ctx.String("end")
step := ctx.Generic("step")
- duration := schema.Duration{
+ duration := api.Duration{
Start: start,
End: end,
Step: step.(*model.StepEnumValue).Selected,
@@ -84,24 +86,24 @@ var ListCommand = cli.Command{
serviceInstanceID := ctx.String("service-instance-id")
traceID := ctx.String("trace-id")
tagStr := ctx.String("tags")
- var tags []*schema.SpanTag = nil
+ var tags []*api.SpanTag = nil
if tagStr != "" {
tagArr := strings.Split(tagStr, ",")
for _, tag := range tagArr {
kv := strings.Split(tag, "=")
- tags = append(tags, &schema.SpanTag{Key: kv[0], Value: &kv[1]})
+ tags = append(tags, &api.SpanTag{Key: kv[0], Value: &kv[1]})
}
}
pageNum := 1
needTotal := true
- paging := schema.Pagination{
+ paging := api.Pagination{
PageNum: &pageNum,
PageSize: DefaultPageSize,
NeedTotal: &needTotal,
}
- condition := &schema.TraceQueryCondition{
+ condition := &api.TraceQueryCondition{
ServiceID: &serviceID,
ServiceInstanceID: &serviceInstanceID,
TraceID: &traceID,
@@ -110,12 +112,16 @@ var ListCommand = cli.Command{
QueryDuration: &duration,
MinTraceDuration: nil,
MaxTraceDuration: nil,
- TraceState: schema.TraceStateAll,
- QueryOrder: schema.QueryOrderByDuration,
+ TraceState: api.TraceStateAll,
+ QueryOrder: api.QueryOrderByDuration,
Tags: tags,
Paging: &paging,
}
- traces := trace.Traces(ctx, condition)
+ traces, err := trace.Traces(ctx, condition)
+
+ if err != nil {
+ logger.Log.Fatalln(err)
+ }
return display.Display(ctx, &displayable.Displayable{Data: traces, Condition: condition})
},
diff --git a/commands/trace/trace.go b/internal/commands/trace/trace.go
similarity index 80%
rename from commands/trace/trace.go
rename to internal/commands/trace/trace.go
index a6dd408..9def645 100644
--- a/commands/trace/trace.go
+++ b/internal/commands/trace/trace.go
@@ -20,11 +20,13 @@ package trace
import (
"fmt"
+ "github.com/apache/skywalking-cli/internal/logger"
+
"github.com/urfave/cli"
- "github.com/apache/skywalking-cli/display"
- "github.com/apache/skywalking-cli/display/displayable"
- "github.com/apache/skywalking-cli/graphql/trace"
+ "github.com/apache/skywalking-cli/pkg/display"
+ "github.com/apache/skywalking-cli/pkg/display/displayable"
+ "github.com/apache/skywalking-cli/pkg/graphql/trace"
)
var Command = cli.Command{
@@ -37,7 +39,11 @@ var Command = cli.Command{
return fmt.Errorf("command trace without sub command requires 1 trace id as argument")
}
- trace := trace.Trace(ctx, ctx.Args().First())
+ trace, err := trace.Trace(ctx, ctx.Args().First())
+
+ if err != nil {
+ logger.Log.Fatalln(err)
+ }
return display.Display(ctx, &displayable.Displayable{Data: trace})
},
diff --git a/commands/flags/duration.go b/internal/flags/duration.go
similarity index 83%
rename from commands/flags/duration.go
rename to internal/flags/duration.go
index 152ba0e..00d9ce8 100644
--- a/commands/flags/duration.go
+++ b/internal/flags/duration.go
@@ -20,11 +20,12 @@ package flags
import (
"github.com/urfave/cli"
- "github.com/apache/skywalking-cli/commands/model"
- "github.com/apache/skywalking-cli/graphql/schema"
+ "github.com/apache/skywalking-cli/api"
+
+ "github.com/apache/skywalking-cli/internal/model"
)
-// DurationFlags are common flags that involves a duration, composed
+// DurationFlags are healthcheck flags that involves a duration, composed
// by a start time, an end time, and a step, which is commonly used
// in most of the commands
var DurationFlags = []cli.Flag{
@@ -40,9 +41,9 @@ var DurationFlags = []cli.Flag{
Name: "step",
Hidden: true,
Value: &model.StepEnumValue{
- Enum: schema.AllStep,
- Default: schema.StepMinute,
- Selected: schema.StepMinute,
+ Enum: api.AllStep,
+ Default: api.StepMinute,
+ Selected: api.StepMinute,
},
},
cli.StringFlag{
diff --git a/commands/flags/entity.go b/internal/flags/entity.go
similarity index 100%
rename from commands/flags/entity.go
rename to internal/flags/entity.go
diff --git a/commands/flags/flags.go b/internal/flags/flags.go
similarity index 100%
rename from commands/flags/flags.go
rename to internal/flags/flags.go
diff --git a/commands/flags/instance.go b/internal/flags/instance.go
similarity index 100%
rename from commands/flags/instance.go
rename to internal/flags/instance.go
diff --git a/commands/flags/metrics.go b/internal/flags/metrics.go
similarity index 87%
rename from commands/flags/metrics.go
rename to internal/flags/metrics.go
index cda10a3..51ece74 100644
--- a/commands/flags/metrics.go
+++ b/internal/flags/metrics.go
@@ -18,10 +18,10 @@
package flags
import (
- "github.com/apache/skywalking-cli/commands/model"
- "github.com/apache/skywalking-cli/graphql/schema"
-
"github.com/urfave/cli"
+
+ "github.com/apache/skywalking-cli/api"
+ "github.com/apache/skywalking-cli/internal/model"
)
// MetricsFlags can be reused in metrics commands.
@@ -46,9 +46,9 @@ var MetricsFlags = []cli.Flag{
Name: "scope",
Usage: "the scope of the metrics entity",
Value: &model.ScopeEnumValue{
- Enum: schema.AllScope,
- Default: schema.ScopeService,
- Selected: schema.ScopeService,
+ Enum: api.AllScope,
+ Default: api.ScopeService,
+ Selected: api.ScopeService,
},
},
}
diff --git a/commands/flags/search.go b/internal/flags/search.go
similarity index 100%
rename from commands/flags/search.go
rename to internal/flags/search.go
diff --git a/logger/log.go b/internal/logger/log.go
similarity index 100%
rename from logger/log.go
rename to internal/logger/log.go
diff --git a/commands/model/order.go b/internal/model/order.go
similarity index 86%
rename from commands/model/order.go
rename to internal/model/order.go
index 77a20ba..83bfb12 100644
--- a/commands/model/order.go
+++ b/internal/model/order.go
@@ -21,14 +21,14 @@ import (
"fmt"
"strings"
- "github.com/apache/skywalking-cli/graphql/schema"
+ "github.com/apache/skywalking-cli/api"
)
// OrderEnumValue defines the values domain of --order option
type OrderEnumValue struct {
- Enum []schema.Order
- Default schema.Order
- Selected schema.Order
+ Enum []api.Order
+ Default api.Order
+ Selected api.Order
}
// Set the --order value, from raw string to OrderEnumValue
@@ -39,8 +39,8 @@ func (s *OrderEnumValue) Set(value string) error {
return nil
}
}
- orders := make([]string, len(schema.AllOrder))
- for i, order := range schema.AllOrder {
+ orders := make([]string, len(api.AllOrder))
+ for i, order := range api.AllOrder {
orders[i] = order.String()
}
return fmt.Errorf("allowed orders are %s", strings.Join(orders, ", "))
diff --git a/commands/model/scope.go b/internal/model/scope.go
similarity index 86%
rename from commands/model/scope.go
rename to internal/model/scope.go
index 7adc5e2..1175cb2 100644
--- a/commands/model/scope.go
+++ b/internal/model/scope.go
@@ -21,14 +21,14 @@ import (
"fmt"
"strings"
- "github.com/apache/skywalking-cli/graphql/schema"
+ "github.com/apache/skywalking-cli/api"
)
// ScopeEnumValue defines the values domain of --scope option
type ScopeEnumValue struct {
- Enum []schema.Scope
- Default schema.Scope
- Selected schema.Scope
+ Enum []api.Scope
+ Default api.Scope
+ Selected api.Scope
}
// Set the --scope value, from raw string to ScopeEnumValue
@@ -39,8 +39,8 @@ func (s *ScopeEnumValue) Set(value string) error {
return nil
}
}
- scopes := make([]string, len(schema.AllScope))
- for i, scope := range schema.AllScope {
+ scopes := make([]string, len(api.AllScope))
+ for i, scope := range api.AllScope {
scopes[i] = scope.String()
}
return fmt.Errorf("allowed scopes are %s", strings.Join(scopes, ", "))
diff --git a/commands/model/step.go b/internal/model/step.go
similarity index 87%
rename from commands/model/step.go
rename to internal/model/step.go
index 8f363be..eeef268 100644
--- a/commands/model/step.go
+++ b/internal/model/step.go
@@ -21,14 +21,14 @@ import (
"fmt"
"strings"
- "github.com/apache/skywalking-cli/graphql/schema"
+ "github.com/apache/skywalking-cli/api"
)
// StepEnumValue defines the values domain of --step option
type StepEnumValue struct {
- Enum []schema.Step
- Default schema.Step
- Selected schema.Step
+ Enum []api.Step
+ Default api.Step
+ Selected api.Step
}
// Set the --step value, from raw string to StepEnumValue
@@ -39,8 +39,8 @@ func (s *StepEnumValue) Set(value string) error {
return nil
}
}
- steps := make([]string, len(schema.AllStep))
- for i, step := range schema.AllStep {
+ steps := make([]string, len(api.AllStep))
+ for i, step := range api.AllStep {
steps[i] = step.String()
}
return fmt.Errorf("allowed steps are %s", strings.Join(steps, ", "))
diff --git a/display/display.go b/pkg/display/display.go
similarity index 84%
rename from display/display.go
rename to pkg/display/display.go
index 9e7d132..9dd17b8 100644
--- a/display/display.go
+++ b/pkg/display/display.go
@@ -21,15 +21,15 @@ import (
"fmt"
"strings"
- d "github.com/apache/skywalking-cli/display/displayable"
+ d "github.com/apache/skywalking-cli/pkg/display/displayable"
- "github.com/apache/skywalking-cli/display/graph"
+ "github.com/apache/skywalking-cli/pkg/display/graph"
"github.com/urfave/cli"
- "github.com/apache/skywalking-cli/display/json"
- "github.com/apache/skywalking-cli/display/table"
- "github.com/apache/skywalking-cli/display/yaml"
+ "github.com/apache/skywalking-cli/pkg/display/json"
+ "github.com/apache/skywalking-cli/pkg/display/table"
+ "github.com/apache/skywalking-cli/pkg/display/yaml"
)
const (
diff --git a/display/displayable/displayable.go b/pkg/display/displayable/displayable.go
similarity index 91%
rename from display/displayable/displayable.go
rename to pkg/display/displayable/displayable.go
index d4678f4..eff05d0 100644
--- a/display/displayable/displayable.go
+++ b/pkg/display/displayable/displayable.go
@@ -17,11 +17,13 @@
package displayable
-import "github.com/apache/skywalking-cli/graphql/schema"
+import (
+ "github.com/apache/skywalking-cli/api"
+)
type Displayable struct {
Data interface{}
Condition interface{}
- Duration schema.Duration
+ Duration api.Duration
Title string
}
diff --git a/display/graph/dashboard/global.go b/pkg/display/graph/dashboard/global.go
similarity index 91%
rename from display/graph/dashboard/global.go
rename to pkg/display/graph/dashboard/global.go
index 0865a2e..084952e 100644
--- a/display/graph/dashboard/global.go
+++ b/pkg/display/graph/dashboard/global.go
@@ -24,10 +24,11 @@ import (
"strings"
"time"
- "github.com/apache/skywalking-cli/commands/interceptor"
- "github.com/apache/skywalking-cli/graphql/schema"
- "github.com/apache/skywalking-cli/graphql/utils"
- lib "github.com/apache/skywalking-cli/lib/heatmap"
+ "github.com/apache/skywalking-cli/api"
+
+ "github.com/apache/skywalking-cli/internal/commands/interceptor"
+ "github.com/apache/skywalking-cli/pkg/graphql/utils"
+ lib "github.com/apache/skywalking-cli/pkg/heatmap"
"github.com/mattn/go-runewidth"
"github.com/mum4k/termdash"
@@ -37,10 +38,10 @@ import (
"github.com/mum4k/termdash/terminal/terminalapi"
"github.com/urfave/cli"
- "github.com/apache/skywalking-cli/display/graph/gauge"
- "github.com/apache/skywalking-cli/display/graph/heatmap"
- "github.com/apache/skywalking-cli/display/graph/linear"
- "github.com/apache/skywalking-cli/graphql/dashboard"
+ "github.com/apache/skywalking-cli/pkg/display/graph/gauge"
+ "github.com/apache/skywalking-cli/pkg/display/graph/heatmap"
+ "github.com/apache/skywalking-cli/pkg/display/graph/linear"
+ "github.com/apache/skywalking-cli/pkg/graphql/dashboard"
"github.com/mum4k/termdash/cell"
"github.com/mum4k/termdash/container"
@@ -202,8 +203,8 @@ func newWidgets(data *dashboard.GlobalData) error {
var linears []*linechart.LineChart
// Create gauges to display global metrics.
- for i, t := range template.Metrics {
- col, err := gauge.NewMetricColumn(data.Metrics[i], &t)
+ for i := range template.Metrics {
+ col, err := gauge.NewMetricColumn(data.Metrics[i], &template.Metrics[i])
if err != nil {
return err
}
@@ -340,7 +341,11 @@ func refresh(con context.Context, ctx *cli.Context, interval time.Duration) {
continue
}
- data := dashboard.Global(ctx, d)
+ data, err := dashboard.Global(ctx, d)
+ if err != nil {
+ continue
+ }
+
if err := updateAllWidgets(data); err != nil {
continue
}
@@ -353,10 +358,10 @@ func refresh(con context.Context, ctx *cli.Context, interval time.Duration) {
// updateDuration will check if the duration changes after adding the interval.
// If the duration doesn't change, an error will be returned, and the dashboard will not refresh.
// Otherwise, a new duration will be returned, which is used to get the latest global data.
-func updateDuration(interval time.Duration) (schema.Duration, error) {
+func updateDuration(interval time.Duration) (api.Duration, error) {
step, _, err := interceptor.TryParseTime(initStartStr)
if err != nil {
- return schema.Duration{}, err
+ return api.Duration{}, err
}
curStartTime = curStartTime.Add(interval)
@@ -366,12 +371,12 @@ func updateDuration(interval time.Duration) (schema.Duration, error) {
curEndStr := curEndTime.Format(utils.StepFormats[step])
if curStartStr == initStartStr && curEndStr == initEndStr {
- return schema.Duration{}, fmt.Errorf("the duration does not update")
+ return api.Duration{}, fmt.Errorf("the duration does not update")
}
initStartStr = curStartStr
initEndStr = curEndStr
- return schema.Duration{
+ return api.Duration{
Start: curStartStr,
End: curEndStr,
Step: step,
diff --git a/display/graph/gauge/gauge.go b/pkg/display/graph/gauge/gauge.go
similarity index 91%
rename from display/graph/gauge/gauge.go
rename to pkg/display/graph/gauge/gauge.go
index a99234d..14ab4ae 100644
--- a/display/graph/gauge/gauge.go
+++ b/pkg/display/graph/gauge/gauge.go
@@ -24,11 +24,12 @@ import (
"strconv"
"strings"
+ "github.com/apache/skywalking-cli/api"
+
"github.com/urfave/cli"
- "github.com/apache/skywalking-cli/graphql/dashboard"
- "github.com/apache/skywalking-cli/graphql/schema"
- "github.com/apache/skywalking-cli/util"
+ "github.com/apache/skywalking-cli/pkg/graphql/dashboard"
+ "github.com/apache/skywalking-cli/pkg/util"
"github.com/mum4k/termdash"
"github.com/mum4k/termdash/cell"
@@ -50,7 +51,7 @@ type MetricColumn struct {
}
// Update updates the MetricColumn's `Absolute` and `BorderTitle`.
-func (mc *MetricColumn) Update(data []*schema.SelectedRecord) error {
+func (mc *MetricColumn) Update(data []*api.SelectedRecord) error {
for i, item := range data {
// The number of `SelectedRecord` data may exceed the number of gauges in a `MetricColumn`.
if i >= len(mc.gauges) {
@@ -79,7 +80,7 @@ func (mc *MetricColumn) Update(data []*schema.SelectedRecord) error {
return nil
}
-func NewMetricColumn(column []*schema.SelectedRecord, config *dashboard.MetricTemplate) (*MetricColumn, error) {
+func NewMetricColumn(column []*api.SelectedRecord, config *dashboard.MetricTemplate) (*MetricColumn, error) {
var ret MetricColumn
t, err := text.New()
@@ -193,7 +194,7 @@ func layout(columns []grid.Element) ([]container.Option, error) {
return gridOpts, nil
}
-func Display(ctx *cli.Context, metrics [][]*schema.SelectedRecord) error {
+func Display(ctx *cli.Context, metrics [][]*api.SelectedRecord) error {
t, err := termbox.New()
if err != nil {
return err
@@ -215,8 +216,8 @@ func Display(ctx *cli.Context, metrics [][]*schema.SelectedRecord) error {
return nil
}
- for i, config := range configs.Metrics {
- col, innerErr := NewMetricColumn(metrics[i], &config)
+ for i := range configs.Metrics {
+ col, innerErr := NewMetricColumn(metrics[i], &configs.Metrics[i])
if innerErr != nil {
return innerErr
}
@@ -251,7 +252,7 @@ func Display(ctx *cli.Context, metrics [][]*schema.SelectedRecord) error {
}
// findMaxValue finds the maximum value in the array of `schema.SelectedRecord`.
-func findMaxValue(column []*schema.SelectedRecord) (int, error) {
+func findMaxValue(column []*api.SelectedRecord) (int, error) {
var ret int
for _, c := range column {
diff --git a/display/graph/graph.go b/pkg/display/graph/graph.go
similarity index 79%
rename from display/graph/graph.go
rename to pkg/display/graph/graph.go
index 22aad02..c05b2c0 100644
--- a/display/graph/graph.go
+++ b/pkg/display/graph/graph.go
@@ -22,25 +22,26 @@ import (
"reflect"
"strings"
+ "github.com/apache/skywalking-cli/api"
+
"github.com/urfave/cli"
- d "github.com/apache/skywalking-cli/display/displayable"
- db "github.com/apache/skywalking-cli/display/graph/dashboard"
- "github.com/apache/skywalking-cli/display/graph/gauge"
- "github.com/apache/skywalking-cli/display/graph/heatmap"
- "github.com/apache/skywalking-cli/display/graph/linear"
- "github.com/apache/skywalking-cli/display/graph/tree"
- "github.com/apache/skywalking-cli/graphql/dashboard"
- "github.com/apache/skywalking-cli/graphql/schema"
+ d "github.com/apache/skywalking-cli/pkg/display/displayable"
+ db "github.com/apache/skywalking-cli/pkg/display/graph/dashboard"
+ "github.com/apache/skywalking-cli/pkg/display/graph/gauge"
+ "github.com/apache/skywalking-cli/pkg/display/graph/heatmap"
+ "github.com/apache/skywalking-cli/pkg/display/graph/linear"
+ "github.com/apache/skywalking-cli/pkg/display/graph/tree"
+ "github.com/apache/skywalking-cli/pkg/graphql/dashboard"
)
type (
- Thermodynamic = schema.HeatMap
+ Thermodynamic = api.HeatMap
LinearMetrics = map[string]float64
MultiLinearMetrics = []LinearMetrics
- Trace = schema.Trace
- TraceBrief = schema.TraceBrief
- GlobalMetrics = [][]*schema.SelectedRecord
+ Trace = api.Trace
+ TraceBrief = api.TraceBrief
+ GlobalMetrics = [][]*api.SelectedRecord
GlobalData = dashboard.GlobalData
)
diff --git a/display/graph/heatmap/heatmap.go b/pkg/display/graph/heatmap/heatmap.go
similarity index 86%
rename from display/graph/heatmap/heatmap.go
rename to pkg/display/graph/heatmap/heatmap.go
index 12f64d4..1416077 100644
--- a/display/graph/heatmap/heatmap.go
+++ b/pkg/display/graph/heatmap/heatmap.go
@@ -22,6 +22,8 @@ import (
"fmt"
"strings"
+ "github.com/apache/skywalking-cli/api"
+
"github.com/mum4k/termdash"
"github.com/mum4k/termdash/container"
"github.com/mum4k/termdash/container/grid"
@@ -30,15 +32,14 @@ import (
"github.com/mum4k/termdash/terminal/terminalapi"
"github.com/mum4k/termdash/widgetapi"
- d "github.com/apache/skywalking-cli/display/displayable"
- "github.com/apache/skywalking-cli/graphql/schema"
- "github.com/apache/skywalking-cli/graphql/utils"
- "github.com/apache/skywalking-cli/lib/heatmap"
+ d "github.com/apache/skywalking-cli/pkg/display/displayable"
+ "github.com/apache/skywalking-cli/pkg/graphql/utils"
+ "github.com/apache/skywalking-cli/pkg/heatmap"
)
const rootID = "root"
-func NewHeatMapWidget(data schema.HeatMap) (hp *heatmap.HeatMap, err error) {
+func NewHeatMapWidget(data api.HeatMap) (hp *heatmap.HeatMap, err error) {
hp, err = heatmap.NewHeatMap()
if err != nil {
return hp, err
@@ -48,14 +49,14 @@ func NewHeatMapWidget(data schema.HeatMap) (hp *heatmap.HeatMap, err error) {
return
}
-func SetData(hp *heatmap.HeatMap, data schema.HeatMap) {
+func SetData(hp *heatmap.HeatMap, data api.HeatMap) {
hpColumns, yLabels := processData(data)
hp.SetColumns(hpColumns)
hp.SetYLabels(yLabels)
}
// processData converts data into hpColumns and yValues for the heat map.
-func processData(data schema.HeatMap) (hpColumns map[string][]int64, yLabels []string) {
+func processData(data api.HeatMap) (hpColumns map[string][]int64, yLabels []string) {
hpColumns = utils.HeatMapToMap(&data)
yLabels = utils.BucketsToStrings(data.Buckets)
return
@@ -97,7 +98,7 @@ func Display(displayable *d.Displayable) error {
return err
}
- data := displayable.Data.(schema.HeatMap)
+ data := displayable.Data.(api.HeatMap)
hp, err := NewHeatMapWidget(data)
if err != nil {
return err
diff --git a/display/graph/linear/linear.go b/pkg/display/graph/linear/linear.go
similarity index 100%
rename from display/graph/linear/linear.go
rename to pkg/display/graph/linear/linear.go
diff --git a/display/graph/tree/adapter.go b/pkg/display/graph/tree/adapter.go
similarity index 89%
rename from display/graph/tree/adapter.go
rename to pkg/display/graph/tree/adapter.go
index 895b5fd..7e4758c 100644
--- a/display/graph/tree/adapter.go
+++ b/pkg/display/graph/tree/adapter.go
@@ -21,11 +21,12 @@ import (
"fmt"
"strings"
- "github.com/apache/skywalking-cli/graphql/schema"
- "github.com/apache/skywalking-cli/util"
+ "github.com/apache/skywalking-cli/api"
+
+ "github.com/apache/skywalking-cli/pkg/util"
)
-func Adapt(trace schema.Trace) (roots []*Node, serviceNames []string) {
+func Adapt(trace api.Trace) (roots []*Node, serviceNames []string) {
all := make(map[string]*Node)
set := make(map[string]bool)
var traceID string
@@ -73,7 +74,7 @@ func Adapt(trace schema.Trace) (roots []*Node, serviceNames []string) {
return roots, serviceNames
}
-func buildTree(all map[string]*Node, seen map[string]bool, trace schema.Trace) {
+func buildTree(all map[string]*Node, seen map[string]bool, trace api.Trace) {
for len(seen) < len(trace.Spans) {
for _, span := range trace.Spans {
if seen[id(span)] {
@@ -96,13 +97,13 @@ func buildTree(all map[string]*Node, seen map[string]bool, trace schema.Trace) {
}
}
-func virtualSpan(spanID int, ref schema.Ref) *schema.Span {
+func virtualSpan(spanID int, ref api.Ref) *api.Span {
endpointName := fmt.Sprintf("VNode: %s", ref.ParentSegmentID)
component := fmt.Sprintf("VirtualNode: #%d", spanID)
peer := "No Peer"
fail := true
layer := "Broken"
- span := schema.Span{
+ span := api.Span{
TraceID: ref.TraceID,
SegmentID: ref.ParentSegmentID,
SpanID: spanID,
@@ -120,27 +121,27 @@ func virtualSpan(spanID int, ref schema.Ref) *schema.Span {
return &span
}
-func isRoot(span *schema.Span) bool {
+func isRoot(span *api.Span) bool {
return span.SpanID == 0 && span.ParentSpanID == -1 && len(span.Refs) == 0
}
-func id(span *schema.Span) string {
+func id(span *api.Span) string {
return fmt.Sprintf("%s:%s:%d", span.TraceID, span.SegmentID, span.SpanID)
}
-func pid(span *schema.Span) string {
+func pid(span *api.Span) string {
return fmt.Sprintf("%s:%s:%d", span.TraceID, span.SegmentID, span.ParentSpanID)
}
-func id0(ref *schema.Ref) string {
+func id0(ref *api.Ref) string {
return fmt.Sprintf("%s:%s:%d", ref.TraceID, ref.ParentSegmentID, ref.ParentSpanID)
}
-func id1(ref *schema.Ref) string {
+func id1(ref *api.Ref) string {
return fmt.Sprintf("%s:%s:%d", ref.TraceID, ref.ParentSegmentID, ref.ParentSpanID-1)
}
-func node(span *schema.Span) *Node {
+func node(span *api.Span) *Node {
return &Node{
Children: []*Node{},
Value: util.Stringify{Str: value(span)},
@@ -148,7 +149,7 @@ func node(span *schema.Span) *Node {
}
}
-func value(span *schema.Span) string {
+func value(span *api.Span) string {
if *span.IsError {
return fmt.Sprintf(
"[|%s| %s [%s/%s]](mod:bold,fg:white,bg:red)",
@@ -161,7 +162,7 @@ func value(span *schema.Span) string {
)
}
-func detail(span *schema.Span) string {
+func detail(span *api.Span) string {
var lines []string
lines = append(lines,
diff --git a/display/graph/tree/list.go b/pkg/display/graph/tree/list.go
similarity index 86%
rename from display/graph/tree/list.go
rename to pkg/display/graph/tree/list.go
index 8fa53bc..8028e79 100644
--- a/display/graph/tree/list.go
+++ b/pkg/display/graph/tree/list.go
@@ -21,15 +21,16 @@ import (
"fmt"
"strings"
- d "github.com/apache/skywalking-cli/display/displayable"
- "github.com/apache/skywalking-cli/graphql/schema"
- "github.com/apache/skywalking-cli/graphql/trace"
+ "github.com/apache/skywalking-cli/api"
+
+ d "github.com/apache/skywalking-cli/pkg/display/displayable"
+ "github.com/apache/skywalking-cli/pkg/graphql/trace"
ui "github.com/gizak/termui/v3"
"github.com/gizak/termui/v3/widgets"
"github.com/urfave/cli"
- "github.com/apache/skywalking-cli/logger"
+ "github.com/apache/skywalking-cli/internal/logger"
)
const DefaultPageSize = 15
@@ -38,8 +39,8 @@ const Detail = " Detail "
const Quit = "<C-c>"
func DisplayList(ctx *cli.Context, displayable *d.Displayable) error {
- data := displayable.Data.(schema.TraceBrief)
- condition := displayable.Condition.(*schema.TraceQueryCondition)
+ data := displayable.Data.(api.TraceBrief)
+ condition := displayable.Condition.(*api.TraceQueryCondition)
if err := ui.Init(); err != nil {
logger.Log.Fatalf("failed to initialize termui: %v", err)
}
@@ -89,8 +90,8 @@ func DisplayList(ctx *cli.Context, displayable *d.Displayable) error {
return nil
}
-func draw(list *widgets.List, tree *widgets.Tree, detail, help *widgets.Paragraph, data schema.TraceBrief,
- ctx *cli.Context, condition *schema.TraceQueryCondition) {
+func draw(list *widgets.List, tree *widgets.Tree, detail, help *widgets.Paragraph, data api.TraceBrief,
+ ctx *cli.Context, condition *api.TraceQueryCondition) {
x, y := ui.TerminalDimensions()
if data.Total != 0 {
@@ -124,10 +125,11 @@ func totalPages(total int) int {
return total/DefaultPageSize + 1
}
-func listenTracesKeyboard(list *widgets.List, tree *widgets.Tree, data schema.TraceBrief, ctx *cli.Context,
- detail, help *widgets.Paragraph, condition *schema.TraceQueryCondition) {
+func listenTracesKeyboard(list *widgets.List, tree *widgets.Tree, data api.TraceBrief, ctx *cli.Context,
+ detail, help *widgets.Paragraph, condition *api.TraceQueryCondition) {
uiEvents := ui.PollEvents()
listActive := true
+ var err error
for {
e := <-uiEvents
@@ -139,7 +141,10 @@ func listenTracesKeyboard(list *widgets.List, tree *widgets.Tree, data schema.Tr
if pageNum != 1 {
pageNum--
condition.Paging.PageNum = &pageNum
- data = trace.Traces(ctx, condition)
+ data, err = trace.Traces(ctx, condition)
+ if err != nil {
+ logger.Log.Fatalln(err)
+ }
}
tree.SelectedRow = 0
case "<C-f>", "n":
@@ -147,7 +152,10 @@ func listenTracesKeyboard(list *widgets.List, tree *widgets.Tree, data schema.Tr
if pageNum < totalPages(data.Total) {
pageNum++
condition.Paging.PageNum = &pageNum
- data = trace.Traces(ctx, condition)
+ data, err = trace.Traces(ctx, condition)
+ if err != nil {
+ logger.Log.Fatalln(err)
+ }
}
tree.SelectedRow = 0
case "<Right>":
@@ -199,7 +207,12 @@ func listActions(key string, list *widgets.List, tree *widgets.Tree, listActive
}
func getNodeData(ctx *cli.Context, traceID string) (nodes []*widgets.TreeNode, serviceNames []string) {
- data := trace.Trace(ctx, traceID)
+ data, err := trace.Trace(ctx, traceID)
+
+ if err != nil {
+ logger.Log.Fatalln(err)
+ }
+
var roots []*Node
roots, serviceNames = Adapt(data)
@@ -214,7 +227,7 @@ func getNodeData(ctx *cli.Context, traceID string) (nodes []*widgets.TreeNode, s
return nodes, serviceNames
}
-func rows(data schema.TraceBrief, subLen int) []string {
+func rows(data api.TraceBrief, subLen int) []string {
var rows []string
for _, t := range data.Traces {
diff --git a/display/graph/tree/tree.go b/pkg/display/graph/tree/tree.go
similarity index 99%
rename from display/graph/tree/tree.go
rename to pkg/display/graph/tree/tree.go
index ee0e168..916c94c 100644
--- a/display/graph/tree/tree.go
+++ b/pkg/display/graph/tree/tree.go
@@ -24,7 +24,7 @@ import (
ui "github.com/gizak/termui/v3"
"github.com/gizak/termui/v3/widgets"
- "github.com/apache/skywalking-cli/logger"
+ "github.com/apache/skywalking-cli/internal/logger"
)
type Node struct {
diff --git a/display/json/json.go b/pkg/display/json/json.go
similarity index 94%
rename from display/json/json.go
rename to pkg/display/json/json.go
index 12a506f..e3f2cf8 100644
--- a/display/json/json.go
+++ b/pkg/display/json/json.go
@@ -21,7 +21,7 @@ import (
"encoding/json"
"fmt"
- d "github.com/apache/skywalking-cli/display/displayable"
+ d "github.com/apache/skywalking-cli/pkg/display/displayable"
)
func Display(displayable *d.Displayable) error {
diff --git a/display/json/json_test.go b/pkg/display/json/json_test.go
similarity index 80%
rename from display/json/json_test.go
rename to pkg/display/json/json_test.go
index 9d8ead4..c4e7258 100644
--- a/display/json/json_test.go
+++ b/pkg/display/json/json_test.go
@@ -20,24 +20,24 @@ package json
import (
"testing"
- d "github.com/apache/skywalking-cli/display/displayable"
+ "github.com/apache/skywalking-cli/api"
- "github.com/apache/skywalking-cli/graphql/schema"
+ d "github.com/apache/skywalking-cli/pkg/display/displayable"
)
func TestJsonDisplay(t *testing.T) {
- var result []schema.Service
+ var result []api.Service
display(t, result)
- result = make([]schema.Service, 0)
+ result = make([]api.Service, 0)
display(t, result)
- result = append(result, schema.Service{
+ result = append(result, api.Service{
ID: "1",
Name: "json",
})
display(t, result)
}
-func display(t *testing.T, result []schema.Service) {
+func display(t *testing.T, result []api.Service) {
if err := Display(&d.Displayable{Data: result}); err != nil {
t.Error(err)
}
diff --git a/display/table/table.go b/pkg/display/table/table.go
similarity index 93%
rename from display/table/table.go
rename to pkg/display/table/table.go
index 8e2227d..0c82376 100644
--- a/display/table/table.go
+++ b/pkg/display/table/table.go
@@ -21,9 +21,9 @@ import (
"encoding/json"
"os"
- d "github.com/apache/skywalking-cli/display/displayable"
+ d "github.com/apache/skywalking-cli/pkg/display/displayable"
- "github.com/apache/skywalking-cli/logger"
+ "github.com/apache/skywalking-cli/internal/logger"
"github.com/olekukonko/tablewriter"
)
diff --git a/display/table/table_test.go b/pkg/display/table/table_test.go
similarity index 80%
rename from display/table/table_test.go
rename to pkg/display/table/table_test.go
index ec2b265..eadfcea 100644
--- a/display/table/table_test.go
+++ b/pkg/display/table/table_test.go
@@ -20,24 +20,24 @@ package table
import (
"testing"
- "github.com/apache/skywalking-cli/display/displayable"
+ "github.com/apache/skywalking-cli/api"
- "github.com/apache/skywalking-cli/graphql/schema"
+ "github.com/apache/skywalking-cli/pkg/display/displayable"
)
func TestTableDisplay(t *testing.T) {
- var result []schema.Service
+ var result []api.Service
display(t, result)
- result = make([]schema.Service, 0)
+ result = make([]api.Service, 0)
display(t, result)
- result = append(result, schema.Service{
+ result = append(result, api.Service{
ID: "1",
Name: "table",
})
display(t, result)
}
-func display(t *testing.T, result []schema.Service) {
+func display(t *testing.T, result []api.Service) {
if err := Display(&displayable.Displayable{Data: result}); err != nil {
t.Error(err)
}
diff --git a/display/yaml/yaml.go b/pkg/display/yaml/yaml.go
similarity index 94%
rename from display/yaml/yaml.go
rename to pkg/display/yaml/yaml.go
index 3f3c98b..4cfe9af 100644
--- a/display/yaml/yaml.go
+++ b/pkg/display/yaml/yaml.go
@@ -20,7 +20,7 @@ package yaml
import (
"fmt"
- d "github.com/apache/skywalking-cli/display/displayable"
+ d "github.com/apache/skywalking-cli/pkg/display/displayable"
"gopkg.in/yaml.v2"
)
diff --git a/display/yaml/yaml_test.go b/pkg/display/yaml/yaml_test.go
similarity index 80%
rename from display/yaml/yaml_test.go
rename to pkg/display/yaml/yaml_test.go
index aaada3a..d2c667d 100644
--- a/display/yaml/yaml_test.go
+++ b/pkg/display/yaml/yaml_test.go
@@ -20,24 +20,24 @@ package yaml
import (
"testing"
- "github.com/apache/skywalking-cli/display/displayable"
+ "github.com/apache/skywalking-cli/api"
- "github.com/apache/skywalking-cli/graphql/schema"
+ "github.com/apache/skywalking-cli/pkg/display/displayable"
)
func TestYamlDisplay(t *testing.T) {
- var result []schema.Service
+ var result []api.Service
display(t, result)
- result = make([]schema.Service, 0)
+ result = make([]api.Service, 0)
display(t, result)
- result = append(result, schema.Service{
+ result = append(result, api.Service{
ID: "1",
Name: "yaml",
})
display(t, result)
}
-func display(t *testing.T, result []schema.Service) {
+func display(t *testing.T, result []api.Service) {
if err := Display(&displayable.Displayable{Data: result}); err != nil {
t.Error(err)
}
diff --git a/graphql/client/client.go b/pkg/graphql/client/client.go
similarity index 84%
rename from graphql/client/client.go
rename to pkg/graphql/client/client.go
index ebadd9c..0d71c8d 100644
--- a/graphql/client/client.go
+++ b/pkg/graphql/client/client.go
@@ -24,7 +24,7 @@ import (
"github.com/machinebox/graphql"
"github.com/urfave/cli"
- "github.com/apache/skywalking-cli/logger"
+ "github.com/apache/skywalking-cli/internal/logger"
)
func newClient(cliCtx *cli.Context) (client *graphql.Client) {
@@ -52,10 +52,3 @@ func ExecuteQuery(cliCtx *cli.Context, request *graphql.Request, response interf
err := client.Run(ctx, request, response)
return err
}
-
-// ExecuteQuery executes the `request` and parse to the `response`, panic if there is any `error`.
-func ExecuteQueryOrFail(cliCtx *cli.Context, request *graphql.Request, response interface{}) {
- if err := ExecuteQuery(cliCtx, request, response); err != nil {
- logger.Log.Fatalln(err)
- }
-}
diff --git a/graphql/dashboard/global.go b/pkg/graphql/dashboard/global.go
similarity index 68%
rename from graphql/dashboard/global.go
rename to pkg/graphql/dashboard/global.go
index c004acd..1e29b30 100644
--- a/graphql/dashboard/global.go
+++ b/pkg/graphql/dashboard/global.go
@@ -23,15 +23,17 @@ import (
"strings"
"sync"
+ "github.com/apache/skywalking-cli/api"
+ "github.com/apache/skywalking-cli/internal/logger"
+
"github.com/spf13/viper"
"github.com/urfave/cli"
"gopkg.in/yaml.v2"
"github.com/apache/skywalking-cli/assets"
- "github.com/apache/skywalking-cli/graphql/metrics"
- "github.com/apache/skywalking-cli/graphql/schema"
- "github.com/apache/skywalking-cli/graphql/utils"
+ "github.com/apache/skywalking-cli/pkg/graphql/metrics"
+ "github.com/apache/skywalking-cli/pkg/graphql/utils"
)
type ButtonTemplate struct {
@@ -41,18 +43,18 @@ type ButtonTemplate struct {
}
type MetricTemplate struct {
- Condition schema.TopNCondition `mapstructure:"condition"`
- Title string `mapstructure:"title"`
- Aggregation string `mapstructure:"aggregation"`
- AggregationNum string `mapstructure:"aggregationNum"`
+ Condition api.TopNCondition `mapstructure:"condition"`
+ Title string `mapstructure:"title"`
+ Aggregation string `mapstructure:"aggregation"`
+ AggregationNum string `mapstructure:"aggregationNum"`
}
type ChartTemplate struct {
- Condition schema.MetricsCondition `mapstructure:"condition"`
- Title string `mapstructure:"title"`
- Unit string `mapstructure:"unit"`
- Labels string `mapstructure:"labels"`
- LabelsIndex string `mapstructure:"labelsIndex"`
+ Condition api.MetricsCondition `mapstructure:"condition"`
+ Title string `mapstructure:"title"`
+ Unit string `mapstructure:"unit"`
+ Labels string `mapstructure:"labels"`
+ LabelsIndex string `mapstructure:"labelsIndex"`
}
type GlobalTemplate struct {
@@ -63,9 +65,9 @@ type GlobalTemplate struct {
}
type GlobalData struct {
- Metrics [][]*schema.SelectedRecord `json:"metrics"`
- ResponseLatency []map[string]float64 `json:"responseLatency"`
- HeatMap schema.HeatMap `json:"heatMap"`
+ Metrics [][]*api.SelectedRecord `json:"metrics"`
+ ResponseLatency []map[string]float64 `json:"responseLatency"`
+ HeatMap api.HeatMap `json:"heatMap"`
}
// Use singleton pattern to make sure to load template only once.
@@ -138,27 +140,31 @@ func getButtonTexts(byteValue []byte) ([]string, error) {
return ret, nil
}
-func Metrics(ctx *cli.Context, duration schema.Duration) [][]*schema.SelectedRecord {
- var ret [][]*schema.SelectedRecord
+func Metrics(ctx *cli.Context, duration api.Duration) ([][]*api.SelectedRecord, error) {
+ var ret [][]*api.SelectedRecord
template, err := LoadTemplate(ctx.String("template"))
if err != nil {
- return nil
+ return nil, nil
}
// Check if there is a template of metrics.
if template.Metrics == nil {
- return nil
+ return nil, nil
}
for _, m := range template.Metrics {
- ret = append(ret, metrics.SortMetrics(ctx, m.Condition, duration))
+ sortMetrics, err := metrics.SortMetrics(ctx, m.Condition, duration)
+ if err != nil {
+ return nil, err
+ }
+ ret = append(ret, sortMetrics)
}
- return ret
+ return ret, nil
}
-func responseLatency(ctx *cli.Context, duration schema.Duration) []map[string]float64 {
+func responseLatency(ctx *cli.Context, duration api.Duration) []map[string]float64 {
template, err := LoadTemplate(ctx.String("template"))
if err != nil {
return nil
@@ -173,39 +179,49 @@ func responseLatency(ctx *cli.Context, duration schema.Duration) []map[string]fl
// need use ", " to split into string array for graphql query.
labelsIndex := strings.Split(template.ResponseLatency.LabelsIndex, ", ")
- responseLatency := metrics.MultipleLinearIntValues(ctx, template.ResponseLatency.Condition, labelsIndex, duration)
+ responseLatency, err := metrics.MultipleLinearIntValues(ctx, template.ResponseLatency.Condition, labelsIndex, duration)
+
+ if err != nil {
+ logger.Log.Fatalln(err)
+ }
// Convert metrics values to map type data.
return utils.MetricsValuesArrayToMap(duration, responseLatency)
}
-func heatMap(ctx *cli.Context, duration schema.Duration) schema.HeatMap {
+func heatMap(ctx *cli.Context, duration api.Duration) (api.HeatMap, error) {
template, err := LoadTemplate(ctx.String("template"))
if err != nil {
- return schema.HeatMap{}
+ return api.HeatMap{}, nil
}
// Check if there is a template of heat map.
if template.HeatMap == (ChartTemplate{}) {
- return schema.HeatMap{}
+ return api.HeatMap{}, nil
}
return metrics.Thermodynamic(ctx, template.HeatMap.Condition, duration)
}
-func Global(ctx *cli.Context, duration schema.Duration) *GlobalData {
+func Global(ctx *cli.Context, duration api.Duration) (*GlobalData, error) {
// Load template to `globalTemplate`, so the subsequent three calls can ues it directly.
_, err := LoadTemplate(ctx.String("template"))
if err != nil {
- return nil
+ return nil, nil
}
+ errors := make(chan error)
+ done := make(chan bool)
+
// Use three goroutines to enable concurrent execution of three graphql queries.
var wg sync.WaitGroup
wg.Add(3)
- var m [][]*schema.SelectedRecord
+ var m [][]*api.SelectedRecord
go func() {
- m = Metrics(ctx, duration)
+ m, err = Metrics(ctx, duration)
+ if err != nil {
+ errors <- err
+ }
wg.Done()
}()
var rl []map[string]float64
@@ -213,17 +229,32 @@ func Global(ctx *cli.Context, duration schema.Duration) *GlobalData {
rl = responseLatency(ctx, duration)
wg.Done()
}()
- var hm schema.HeatMap
+ var hm api.HeatMap
go func() {
- hm = heatMap(ctx, duration)
+ hm, err = heatMap(ctx, duration)
+ if err != nil {
+ errors <- err
+ }
wg.Done()
}()
- wg.Wait()
+
+ go func() {
+ wg.Wait()
+ close(done)
+ }()
+
+ select {
+ case <-done:
+ break
+ case err := <-errors:
+ close(errors)
+ return nil, err
+ }
var globalData GlobalData
globalData.Metrics = m
globalData.ResponseLatency = rl
globalData.HeatMap = hm
- return &globalData
+ return &globalData, nil
}
diff --git a/graphql/common/common.go b/pkg/graphql/healthcheck/healthcheck.go
similarity index 71%
rename from graphql/common/common.go
rename to pkg/graphql/healthcheck/healthcheck.go
index 1f1c417..3f0348f 100644
--- a/graphql/common/common.go
+++ b/pkg/graphql/healthcheck/healthcheck.go
@@ -15,24 +15,25 @@
// specific language governing permissions and limitations
// under the License.
-package common
+package healthcheck
import (
"github.com/machinebox/graphql"
"github.com/urfave/cli"
+ "github.com/apache/skywalking-cli/api"
+
"github.com/apache/skywalking-cli/assets"
- "github.com/apache/skywalking-cli/graphql/client"
- "github.com/apache/skywalking-cli/graphql/schema"
+ "github.com/apache/skywalking-cli/pkg/graphql/client"
)
// CheckHealth intends to query the health status of OAP server
-func CheckHealth(ctx *cli.Context) schema.HealthStatus {
- var response map[string]schema.HealthStatus
+func CheckHealth(ctx *cli.Context) (api.HealthStatus, error) {
+ var response map[string]api.HealthStatus
- request := graphql.NewRequest(assets.Read("graphqls/common/checkHealth.graphql"))
+ request := graphql.NewRequest(assets.Read("graphqls/healthcheck/healthcheck.graphql"))
- client.ExecuteQueryOrFail(ctx, request, &response)
+ err := client.ExecuteQuery(ctx, request, &response)
- return response["checkHealth"]
+ return response["checkHealth"], err
}
diff --git a/graphql/metadata/metadata.go b/pkg/graphql/metadata/metadata.go
similarity index 66%
rename from graphql/metadata/metadata.go
rename to pkg/graphql/metadata/metadata.go
index 49e88be..f29577e 100644
--- a/graphql/metadata/metadata.go
+++ b/pkg/graphql/metadata/metadata.go
@@ -20,32 +20,34 @@ package metadata
import (
"fmt"
+ "github.com/apache/skywalking-cli/api"
+
"github.com/apache/skywalking-cli/assets"
"github.com/machinebox/graphql"
"github.com/urfave/cli"
- "github.com/apache/skywalking-cli/graphql/client"
- "github.com/apache/skywalking-cli/graphql/schema"
+ "github.com/apache/skywalking-cli/pkg/graphql/client"
)
-func AllServices(cliCtx *cli.Context, duration schema.Duration) []schema.Service {
- var response map[string][]schema.Service
+func AllServices(cliCtx *cli.Context, duration api.Duration) ([]api.Service, error) {
+ var response map[string][]api.Service
request := graphql.NewRequest(assets.Read("graphqls/metadata/AllServices.graphql"))
request.Var("duration", duration)
- client.ExecuteQueryOrFail(cliCtx, request, &response)
- return response["result"]
+ err := client.ExecuteQuery(cliCtx, request, &response)
+
+ return response["result"], err
}
-func SearchService(cliCtx *cli.Context, serviceCode string) (service schema.Service, err error) {
- var response map[string]schema.Service
+func SearchService(cliCtx *cli.Context, serviceCode string) (service api.Service, err error) {
+ var response map[string]api.Service
request := graphql.NewRequest(assets.Read("graphqls/metadata/SearchService.graphql"))
request.Var("serviceCode", serviceCode)
- client.ExecuteQueryOrFail(cliCtx, request, &response)
+ err = client.ExecuteQuery(cliCtx, request, &response)
service = response["result"]
@@ -53,41 +55,41 @@ func SearchService(cliCtx *cli.Context, serviceCode string) (service schema.Serv
return service, fmt.Errorf("no such service [%s]", serviceCode)
}
- return service, nil
+ return service, err
}
-func SearchEndpoints(cliCtx *cli.Context, serviceID, keyword string, limit int) []schema.Endpoint {
- var response map[string][]schema.Endpoint
+func SearchEndpoints(cliCtx *cli.Context, serviceID, keyword string, limit int) ([]api.Endpoint, error) {
+ var response map[string][]api.Endpoint
request := graphql.NewRequest(assets.Read("graphqls/metadata/SearchEndpoints.graphql"))
request.Var("serviceId", serviceID)
request.Var("keyword", keyword)
request.Var("limit", limit)
- client.ExecuteQueryOrFail(cliCtx, request, &response)
+ err := client.ExecuteQuery(cliCtx, request, &response)
- return response["result"]
+ return response["result"], err
}
-func Instances(cliCtx *cli.Context, serviceID string, duration schema.Duration) []schema.ServiceInstance {
- var response map[string][]schema.ServiceInstance
+func Instances(cliCtx *cli.Context, serviceID string, duration api.Duration) ([]api.ServiceInstance, error) {
+ var response map[string][]api.ServiceInstance
request := graphql.NewRequest(assets.Read("graphqls/metadata/Instances.graphql"))
request.Var("serviceId", serviceID)
request.Var("duration", duration)
- client.ExecuteQueryOrFail(cliCtx, request, &response)
+ err := client.ExecuteQuery(cliCtx, request, &response)
- return response["result"]
+ return response["result"], err
}
-func ServerTimeInfo(cliCtx *cli.Context) (schema.TimeInfo, error) {
- var response map[string]schema.TimeInfo
+func ServerTimeInfo(cliCtx *cli.Context) (api.TimeInfo, error) {
+ var response map[string]api.TimeInfo
request := graphql.NewRequest(assets.Read("graphqls/metadata/ServerTimeInfo.graphql"))
if err := client.ExecuteQuery(cliCtx, request, &response); err != nil {
- return schema.TimeInfo{}, err
+ return api.TimeInfo{}, err
}
return response["result"], nil
diff --git a/graphql/metrics/metrics.go b/pkg/graphql/metrics/metrics.go
similarity index 56%
rename from graphql/metrics/metrics.go
rename to pkg/graphql/metrics/metrics.go
index 8a73a58..85073bd 100644
--- a/graphql/metrics/metrics.go
+++ b/pkg/graphql/metrics/metrics.go
@@ -18,15 +18,15 @@
package metrics
import (
- "github.com/apache/skywalking-cli/assets"
- "github.com/apache/skywalking-cli/graphql/client"
- "github.com/apache/skywalking-cli/graphql/schema"
-
"github.com/machinebox/graphql"
"github.com/urfave/cli"
+
+ "github.com/apache/skywalking-cli/api"
+ "github.com/apache/skywalking-cli/assets"
+ "github.com/apache/skywalking-cli/pkg/graphql/client"
)
-func IntValues(ctx *cli.Context, condition schema.MetricsCondition, duration schema.Duration) int {
+func IntValues(ctx *cli.Context, condition api.MetricsCondition, duration api.Duration) (int, error) {
var response map[string]int
request := graphql.NewRequest(assets.Read("graphqls/metrics/MetricsValue.graphql"))
@@ -34,26 +34,26 @@ func IntValues(ctx *cli.Context, condition schema.MetricsCondition, duration sch
request.Var("condition", condition)
request.Var("duration", duration)
- client.ExecuteQueryOrFail(ctx, request, &response)
+ err := client.ExecuteQuery(ctx, request, &response)
- return response["result"]
+ return response["result"], err
}
-func LinearIntValues(ctx *cli.Context, condition schema.MetricsCondition, duration schema.Duration) schema.MetricsValues {
- var response map[string]schema.MetricsValues
+func LinearIntValues(ctx *cli.Context, condition api.MetricsCondition, duration api.Duration) (api.MetricsValues, error) {
+ var response map[string]api.MetricsValues
request := graphql.NewRequest(assets.Read("graphqls/metrics/MetricsValues.graphql"))
request.Var("condition", condition)
request.Var("duration", duration)
- client.ExecuteQueryOrFail(ctx, request, &response)
+ err := client.ExecuteQuery(ctx, request, &response)
- return response["result"]
+ return response["result"], err
}
-func MultipleLinearIntValues(ctx *cli.Context, condition schema.MetricsCondition, labels []string, duration schema.Duration) []schema.MetricsValues {
- var response map[string][]schema.MetricsValues
+func MultipleLinearIntValues(ctx *cli.Context, condition api.MetricsCondition, labels []string, duration api.Duration) ([]api.MetricsValues, error) {
+ var response map[string][]api.MetricsValues
request := graphql.NewRequest(assets.Read("graphqls/metrics/LabeledMetricsValues.graphql"))
@@ -61,42 +61,42 @@ func MultipleLinearIntValues(ctx *cli.Context, condition schema.MetricsCondition
request.Var("condition", condition)
request.Var("labels", labels)
- client.ExecuteQueryOrFail(ctx, request, &response)
+ err := client.ExecuteQuery(ctx, request, &response)
- return response["result"]
+ return response["result"], err
}
-func Thermodynamic(ctx *cli.Context, condition schema.MetricsCondition, duration schema.Duration) schema.HeatMap {
- var response map[string]schema.HeatMap
+func Thermodynamic(ctx *cli.Context, condition api.MetricsCondition, duration api.Duration) (api.HeatMap, error) {
+ var response map[string]api.HeatMap
request := graphql.NewRequest(assets.Read("graphqls/metrics/HeatMap.graphql"))
request.Var("condition", condition)
request.Var("duration", duration)
- client.ExecuteQueryOrFail(ctx, request, &response)
+ err := client.ExecuteQuery(ctx, request, &response)
- return response["result"]
+ return response["result"], err
}
-func SortMetrics(ctx *cli.Context, condition schema.TopNCondition, duration schema.Duration) []*schema.SelectedRecord {
- var response map[string][]*schema.SelectedRecord
+func SortMetrics(ctx *cli.Context, condition api.TopNCondition, duration api.Duration) ([]*api.SelectedRecord, error) {
+ var response map[string][]*api.SelectedRecord
request := graphql.NewRequest(assets.Read("graphqls/metrics/SortMetrics.graphql"))
request.Var("condition", condition)
request.Var("duration", duration)
- client.ExecuteQueryOrFail(ctx, request, &response)
+ err := client.ExecuteQuery(ctx, request, &response)
- return response["result"]
+ return response["result"], err
}
-func ListMetrics(ctx *cli.Context, regex string) []*schema.MetricDefinition {
- var response map[string][]*schema.MetricDefinition
+func ListMetrics(ctx *cli.Context, regex string) ([]*api.MetricDefinition, error) {
+ var response map[string][]*api.MetricDefinition
request := graphql.NewRequest(assets.Read("graphqls/metrics/ListMetrics.graphql"))
request.Var("regex", regex)
- client.ExecuteQueryOrFail(ctx, request, &response)
+ err := client.ExecuteQuery(ctx, request, &response)
- return response["result"]
+ return response["result"], err
}
diff --git a/graphql/trace/trace.go b/pkg/graphql/trace/trace.go
similarity index 70%
rename from graphql/trace/trace.go
rename to pkg/graphql/trace/trace.go
index fab21e7..bf45f95 100644
--- a/graphql/trace/trace.go
+++ b/pkg/graphql/trace/trace.go
@@ -21,29 +21,30 @@ import (
"github.com/machinebox/graphql"
"github.com/urfave/cli"
+ "github.com/apache/skywalking-cli/api"
+
"github.com/apache/skywalking-cli/assets"
- "github.com/apache/skywalking-cli/graphql/client"
- "github.com/apache/skywalking-cli/graphql/schema"
+ "github.com/apache/skywalking-cli/pkg/graphql/client"
)
-func Trace(ctx *cli.Context, traceID string) schema.Trace {
- var response map[string]schema.Trace
+func Trace(ctx *cli.Context, traceID string) (api.Trace, error) {
+ var response map[string]api.Trace
request := graphql.NewRequest(assets.Read("graphqls/trace/Trace.graphql"))
request.Var("traceId", traceID)
- client.ExecuteQueryOrFail(ctx, request, &response)
+ err := client.ExecuteQuery(ctx, request, &response)
- return response["result"]
+ return response["result"], err
}
-func Traces(ctx *cli.Context, condition *schema.TraceQueryCondition) schema.TraceBrief {
- var response map[string]schema.TraceBrief
+func Traces(ctx *cli.Context, condition *api.TraceQueryCondition) (api.TraceBrief, error) {
+ var response map[string]api.TraceBrief
request := graphql.NewRequest(assets.Read("graphqls/trace/Traces.graphql"))
request.Var("condition", condition)
- client.ExecuteQueryOrFail(ctx, request, &response)
+ err := client.ExecuteQuery(ctx, request, &response)
- return response["result"]
+ return response["result"], err
}
diff --git a/graphql/utils/adapter.go b/pkg/graphql/utils/adapter.go
similarity index 84%
rename from graphql/utils/adapter.go
rename to pkg/graphql/utils/adapter.go
index 1f5918f..e5bb575 100644
--- a/graphql/utils/adapter.go
+++ b/pkg/graphql/utils/adapter.go
@@ -22,12 +22,13 @@ import (
"strings"
"time"
- "github.com/apache/skywalking-cli/graphql/schema"
- "github.com/apache/skywalking-cli/logger"
+ "github.com/apache/skywalking-cli/api"
+
+ "github.com/apache/skywalking-cli/internal/logger"
)
// MetricsValuesArrayToMap converts Array of MetricsValues into a map that uses time as key.
-func MetricsValuesArrayToMap(duration schema.Duration, mvArray []schema.MetricsValues) []map[string]float64 {
+func MetricsValuesArrayToMap(duration api.Duration, mvArray []api.MetricsValues) []map[string]float64 {
ret := make([]map[string]float64, len(mvArray))
for _, mvs := range mvArray {
index, err := strconv.Atoi(strings.TrimSpace(*mvs.Label))
@@ -41,7 +42,7 @@ func MetricsValuesArrayToMap(duration schema.Duration, mvArray []schema.MetricsV
}
// MetricsValuesToMap converts MetricsValues into a map that uses time as key.
-func MetricsValuesToMap(duration schema.Duration, metricsValues schema.MetricsValues) map[string]float64 {
+func MetricsValuesToMap(duration api.Duration, metricsValues api.MetricsValues) map[string]float64 {
kvInts := metricsValues.Values.Values
ret := map[string]float64{}
format := StepFormats[duration.Step]
@@ -60,7 +61,7 @@ func MetricsValuesToMap(duration schema.Duration, metricsValues schema.MetricsVa
}
// HeatMapToMap converts a HeatMap into a map that uses time as key.
-func HeatMapToMap(hp *schema.HeatMap) map[string][]int64 {
+func HeatMapToMap(hp *api.HeatMap) map[string][]int64 {
ret := make(map[string][]int64)
for _, col := range hp.Values {
// col.id is a string represents date, like "202007292131",
@@ -78,7 +79,7 @@ func HeatMapToMap(hp *schema.HeatMap) map[string][]int64 {
}
// BucketsToStrings extracts strings from buckets as a chart's labels.
-func BucketsToStrings(buckets []*schema.Bucket) []string {
+func BucketsToStrings(buckets []*api.Bucket) []string {
var ret []string
for _, b := range buckets {
ret = append(ret, b.Min)
diff --git a/graphql/utils/adapter_test.go b/pkg/graphql/utils/adapter_test.go
similarity index 86%
rename from graphql/utils/adapter_test.go
rename to pkg/graphql/utils/adapter_test.go
index 1d8270d..a3e84ca 100644
--- a/graphql/utils/adapter_test.go
+++ b/pkg/graphql/utils/adapter_test.go
@@ -21,13 +21,13 @@ import (
"reflect"
"testing"
- "github.com/apache/skywalking-cli/graphql/schema"
+ "github.com/apache/skywalking-cli/api"
)
func TestMetricsToMap(t *testing.T) {
type args struct {
- duration schema.Duration
- metricsValues schema.MetricsValues
+ duration api.Duration
+ metricsValues api.MetricsValues
}
tests := []struct {
name string
@@ -37,14 +37,14 @@ func TestMetricsToMap(t *testing.T) {
{
name: "Should convert to map",
args: args{
- duration: schema.Duration{
+ duration: api.Duration{
Start: "2020-01-01 0000",
End: "2020-01-01 0007",
- Step: schema.StepMinute,
+ Step: api.StepMinute,
},
- metricsValues: schema.MetricsValues{
- Values: &schema.IntValues{
- Values: []*schema.KVInt{
+ metricsValues: api.MetricsValues{
+ Values: &api.IntValues{
+ Values: []*api.KVInt{
{Value: 0},
{Value: 1},
{Value: 2},
diff --git a/graphql/utils/constants.go b/pkg/graphql/utils/constants.go
similarity index 74%
rename from graphql/utils/constants.go
rename to pkg/graphql/utils/constants.go
index 2f527e3..ba1f73d 100644
--- a/graphql/utils/constants.go
+++ b/pkg/graphql/utils/constants.go
@@ -20,23 +20,23 @@ package utils
import (
"time"
- "github.com/apache/skywalking-cli/graphql/schema"
+ "github.com/apache/skywalking-cli/api"
)
// StepFormats is a mapping from schema.Step to its time format
-var StepFormats = map[schema.Step]string{
- schema.StepSecond: "2006-01-02 150405",
- schema.StepMinute: "2006-01-02 1504",
- schema.StepHour: "2006-01-02 15",
- schema.StepDay: "2006-01-02",
+var StepFormats = map[api.Step]string{
+ api.StepSecond: "2006-01-02 150405",
+ api.StepMinute: "2006-01-02 1504",
+ api.StepHour: "2006-01-02 15",
+ api.StepDay: "2006-01-02",
}
// StepDuration is a mapping from schema.Step to its time.Duration
-var StepDuration = map[schema.Step]time.Duration{
- schema.StepSecond: time.Second,
- schema.StepMinute: time.Minute,
- schema.StepHour: time.Hour,
- schema.StepDay: time.Hour * 24,
+var StepDuration = map[api.Step]time.Duration{
+ api.StepSecond: time.Second,
+ api.StepMinute: time.Minute,
+ api.StepHour: time.Hour,
+ api.StepDay: time.Hour * 24,
}
type DurationType string
diff --git a/grpc/health.go b/pkg/healthcheck/grpc.go
similarity index 97%
rename from grpc/health.go
rename to pkg/healthcheck/grpc.go
index 3b83ad2..f4c6357 100644
--- a/grpc/health.go
+++ b/pkg/healthcheck/grpc.go
@@ -15,14 +15,14 @@
// specific language governing permissions and limitations
// under the License.
-package grpc
+package healthcheck
import (
"context"
"crypto/tls"
"time"
- "github.com/apache/skywalking-cli/logger"
+ "github.com/apache/skywalking-cli/internal/logger"
"google.golang.org/grpc"
"google.golang.org/grpc/codes"
diff --git a/lib/heatmap/axes/axes.go b/pkg/heatmap/axes/axes.go
similarity index 100%
rename from lib/heatmap/axes/axes.go
rename to pkg/heatmap/axes/axes.go
diff --git a/lib/heatmap/axes/label.go b/pkg/heatmap/axes/label.go
similarity index 100%
rename from lib/heatmap/axes/label.go
rename to pkg/heatmap/axes/label.go
diff --git a/lib/heatmap/heatmap.go b/pkg/heatmap/heatmap.go
similarity index 99%
rename from lib/heatmap/heatmap.go
rename to pkg/heatmap/heatmap.go
index cdc466f..5c87730 100644
--- a/lib/heatmap/heatmap.go
+++ b/pkg/heatmap/heatmap.go
@@ -25,7 +25,7 @@ import (
"sort"
"sync"
- "github.com/apache/skywalking-cli/lib/heatmap/axes"
+ "github.com/apache/skywalking-cli/pkg/heatmap/axes"
"github.com/mum4k/termdash/cell"
"github.com/mum4k/termdash/private/area"
diff --git a/lib/heatmap/options.go b/pkg/heatmap/options.go
similarity index 100%
rename from lib/heatmap/options.go
rename to pkg/heatmap/options.go
diff --git a/util/io.go b/pkg/util/io.go
similarity index 96%
rename from util/io.go
rename to pkg/util/io.go
index ee65b8e..3e957f4 100644
--- a/util/io.go
+++ b/pkg/util/io.go
@@ -21,7 +21,7 @@ import (
"os/user"
"strings"
- "github.com/apache/skywalking-cli/logger"
+ "github.com/apache/skywalking-cli/internal/logger"
)
// UserHomeDir returns the current user's home directory absolute path,
diff --git a/util/lang.go b/pkg/util/lang.go
similarity index 100%
rename from util/lang.go
rename to pkg/util/lang.go
diff --git a/util/math.go b/pkg/util/math.go
similarity index 100%
rename from util/math.go
rename to pkg/util/math.go
diff --git a/hack/boilerplate.go.txt b/scripts/boilerplate.go.txt
similarity index 100%
rename from hack/boilerplate.go.txt
rename to scripts/boilerplate.go.txt
diff --git a/hack/build-header.sh b/scripts/build-header.sh
similarity index 100%
rename from hack/build-header.sh
rename to scripts/build-header.sh
diff --git a/test/test_commands.sh b/scripts/test_commands.sh
similarity index 100%
rename from test/test_commands.sh
rename to scripts/test_commands.sh