Commit Graph

5031 Commits

Author SHA1 Message Date
Filip Barl
a0ddd311d3 Addressed Guy's comment. 2018-08-09 12:32:29 +02:00
Filip Barl
65dad7242e Removed old graph nodes obsolete code. 2018-08-09 12:31:12 +02:00
Filip Barl
18342634c8 Made networks overlay work. 2018-08-09 12:31:12 +02:00
Filip Barl
b05563d9ab Made searching and metric fills work. 2018-08-09 12:31:12 +02:00
Filip Barl
b5ee1e690c Use GraphNode component for graph nodes. 2018-08-09 12:31:12 +02:00
Bryan Boreham
62a6838209 Merge pull request #3308 from weaveworks/2018-08-08-fix-cri-socket-volume-name
Fix the CRI volumeMount name in the example manifest
2018-08-08 16:04:01 +01:00
Damien Lespiau
1a24894c23 Fix the CRI volumeMount name in the example manifest
volumeMounts need to refer to an existing volume name to be successfully
mounted. cri-socket is the defined volume name.
2018-08-08 15:30:41 +01:00
Lili Cosic
701bed6bef Merge pull request #3305 from LiliC/lili/disable-cri-probe
Disable CRI probe by default
2018-08-08 12:10:03 +02:00
Lili Cosic
b971bea426 Disable CRI probe by default
This was enabled by default but we want it to be disabled instead, just
like with the docker probe.
2018-08-08 09:58:33 +02:00
Bryan Boreham
50a83b060f Merge pull request #3279 from weaveworks/check-pid
Check container is running before trying to open its namespace
2018-08-07 09:32:21 +01:00
Filip Barl
c33c91c265 Merge pull request #3294 from weaveworks/3285-increase-header-opacity
Make header semitransparent
2018-08-03 11:20:42 +02:00
Filip Barl
e1b1837fd6 Fixed the background color when nodes in focus. 2018-08-02 15:51:42 +02:00
Filip Barl
1317bf6ddb Decreased the header overlay transparency to 80%. 2018-08-02 15:44:31 +02:00
Filip Barl
c0a359b31f Increase z-index value of NodeDetails panel by one. 2018-08-02 11:14:04 +02:00
Filip Barl
9f9123e171 Decrease filters background opacity + made selected items more purple. 2018-08-02 11:09:18 +02:00
Filip Barl
e806c848df Make header semitransparent. 2018-08-02 10:48:37 +02:00
Bryan Boreham
d624337dc1 Merge pull request #3272 from weaveworks/remove-old-controls
Remove old 'Controls' field which was replaced two years ago
2018-07-31 17:59:33 +01:00
Bryan Boreham
33ad809348 Merge pull request #3292 from weaveworks/add-bboreham-maintainer
Add Bryan Boreham as maintainer
2018-07-31 17:58:49 +01:00
Bryan Boreham
aa40f944d3 Merge pull request #3260 from openebs/storage-driver
Add storage driver name to Persistent Volume
2018-07-31 17:58:38 +01:00
Bryan Boreham
026993b526 Add Bryan Boreham as maintainer 2018-07-31 11:46:19 +01:00
Bryan Boreham
97377f451a Merge pull request #3290 from openebs/rbac-changes
Add rules in cluster role for k8s storage components
2018-07-28 11:12:27 +01:00
Satyam Zode
4dfa4acfe7 Add rules in cluster role for k8s storage components
This will add rules to cluster role for k8s storage components.
These RBAC permissions are required for scope to fetch details about PV, PVC, SC
resources.

Signed-off-by: Satyam Zode <satyamzode@gmail.com>
2018-07-28 00:26:07 +05:30
Filip Barl
b3c9a9f2cf Merge pull request #3282 from weaveworks/320-reduce-border-radius
Bump ui-components version
2018-07-27 14:09:05 +02:00
Filip Barl
b9656566bb Add border radius to resource view rectangles and grid view color icons. 2018-07-27 10:28:44 +02:00
Filip Barl
c30b23c274 Bump ui-components to v0.11.8 2018-07-27 10:28:44 +02:00
Lili Cosic
6a2c556599 Merge pull request #3275 from LiliC/lili/cri-support
Add initial CRI support
2018-07-26 11:15:17 +01:00
Lili Cosic
df380ced08 Revendor to add gogo/protobuf 2018-07-26 10:57:39 +01:00
Lili Cosic
55c3f8006d Add example for cri-o
cri-o was used as an example as it is relatively easy to setup a cluster
using that container runtime as compared to others.
2018-07-26 10:52:08 +01:00
Lili Cosic
e6d9bcc1cb Add CRI probe
When the probe.cri is enabled the CRI probe will be used to gather
the container information via the CRI API. For now only the basic
information is included in the generated report, those that we can get
via the CRI ListContainersRequest.
2018-07-26 10:51:59 +01:00
Lili Cosic
31d68c44a2 Add make target to generate CRI files
The cri make target generates the api.pb.go files by first fetching the
latest proto files from upstream and uses protoc to generate them.
2018-07-26 10:51:53 +01:00
Lili Cosic
acfc2a0dba Generate CRI runtime files 2018-07-26 10:51:46 +01:00
Bryan Boreham
74883b89b7 Merge branch 'release-1.9' 2018-07-25 12:37:32 +00:00
Bryan Boreham
e8b3c13195 Merge pull request #3281 from weaveworks/fix-withlatest
Fix WithLatests() fixup on duplicate keys
2018-07-25 13:36:55 +01:00
Bryan Boreham
ba656a37f7 Fix WithLatests() de-duplication
The fixup() method was modifying a copy of its input, so you could get
duplicate keys in the output. Change it to return the new slice.

Thankfully this is rare: in most cases WithLatests() is called with
fields that are not duplicates of existing ones.
2018-07-25 11:58:08 +00:00
Marc Carré
058eedc7f1 Merge pull request #3280 from weaveworks/fix-ugorji-version
Fix ugorji/go's version
2018-07-25 11:43:25 +02:00
Marc Carré
1e614d8053 Fix ugorji/go's version
Not sure what happened, but `gvt` is most likely buggy.
Indeed, if you try to remove `ugorji/go/codec` and pull it again, with the revision listed in `vendor/manifest`, i.e.:
```
$ gvt delete github.com/ugorji/go/codec
$ gvt fetch --revision c062049c1793b01a3cc3fe786108edabbaf7756b github.com/ugorji/go/codec
YYYY/MM/DD HH:mm:SS Fetching: github.com/ugorji/go/codec
```
you then get the below build errors:
```
report/latest_map_generated.go:245:27: r.DecodeStringAsBytes undefined (type codec.decDriver has no field or method DecodeStringAsBytes)
report/latest_map_generated.go:497:27: r.DecodeStringAsBytes undefined (type codec.decDriver has no field or method DecodeStringAsBytes)
report/map_helpers.go:114:27: r.DecodeStringAsBytes undefined (type codec.decDriver has no field or method DecodeStringAsBytes)
report/report.codecgen.go:191:14: r.DecodeStringAsBytes undefined (type codec.decDriver has no field or method DecodeStringAsBytes)
report/report.codecgen.go:496:14: r.DecodeStringAsBytes undefined (type codec.decDriver has no field or method DecodeStringAsBytes)
report/report.codecgen.go:803:14: r.DecodeStringAsBytes undefined (type codec.decDriver has no field or method DecodeStringAsBytes)
report/report.codecgen.go:1001:14: r.DecodeStringAsBytes undefined (type codec.decDriver has no field or method DecodeStringAsBytes)
report/report.codecgen.go:1240:14: r.DecodeStringAsBytes undefined (type codec.decDriver has no field or method DecodeStringAsBytes)
report/report.codecgen.go:1567:14: r.DecodeStringAsBytes undefined (type codec.decDriver has no field or method DecodeStringAsBytes)
report/report.codecgen.go:1858:14: r.DecodeStringAsBytes undefined (type codec.decDriver has no field or method DecodeStringAsBytes)
report/report.codecgen.go:1858:14: too many errors
Makefile:104: recipe for target 'render/detailed/detailed.codecgen.go' failed
```
which I also got in another project importing Scope.

This is fixed by running the following:
```
$ gvt delete github.com/ugorji/go/codec
$ gvt fetch --revision 54210f4e076c57f351166f0ed60e67d3fca57a36 github.com/ugorji/go/codec
YYYY/MM/DD HH:mm:SS Fetching: github.com/ugorji/go/codec
```
Note that this revision was found in previous commit messages:
```
$ git log -S ugorji
[...]
commit 42bf0dedba
Author: Bryan Boreham <bjboreham@gmail.com>
Date:   Sat Sep 23 21:08:33 2017 +0000

    Update ugorji/go/codec to latest commit 54210f4e076c57f351166f0ed60e67d3fca57a36

[...]
```
2018-07-24 19:24:32 +02:00
Bryan Boreham
53c406f7e0 Check container is running before trying to open its namespace
Otherwise we get pointless errors.
2018-07-23 21:37:22 +00:00
Marc Carré
e9a751a8d3 Merge pull request #3277 from weaveworks/fix-nil-logger
Pass a logger to middleware.Log
2018-07-23 23:13:14 +02:00
Marc Carré
10f6aaf9b7 Pass logger to middleware.Log
Should fix:
```
2018/07/23 20:29:49 http: panic serving 10.244.204.241:34716: runtime error: invalid memory address or nil pointer dereference
goroutine 1169 [running]:
net/http.(*conn).serve.func1(0xc420739a40)
/usr/local/go/src/net/http/server.go:1726 +0xd0
panic(0x17d5200, 0x2a7f5e0)
/usr/local/go/src/runtime/panic.go:502 +0x229
github.com/weaveworks/scope/vendor/github.com/weaveworks/common/middleware.Log.Wrap.func1(0x1dc60e0, 0xc4215e7a40, 0xc4202cee00)
/go/src/github.com/weaveworks/scope/vendor/github.com/weaveworks/common/middleware/logging.go:40 +0x3c7
[...]
```
2018-07-23 22:42:54 +02:00
Bryan Boreham
fbe4cd2af9 Merge branch 'release-1.9' 2018-07-23 19:56:54 +00:00
Marc Carré
aaa63bbed0 Merge pull request #3276 from weaveworks/update-to-lowercase-sirupsen-logrus
Update from Sirupsen/logrus to sirupsen/logrus
2018-07-23 20:44:59 +02:00
Marc Carré
069d780fc5 Add .cache to .gitignore
This file appears when building under macOS
2018-07-23 20:10:19 +02:00
Marc Carré
bcbc462842 Fix probe & app's shutdown to please signals.SignalHandlerLoop
Fixes:
```
not enough arguments in call to signals.SignalHandlerLoop
	have ()
	want (logging.Interface, ...signals.SignalReceiver)
```
2018-07-23 20:10:19 +02:00
Marc Carré
e07b093b1c Scope now uses signals.SignalHandlerLoop instead of common.*
This fixes:
```
prog/app.go:310:2: undefined: "github.com/weaveworks/scope/vendor/github.com/weaveworks/weave/common".SignalHandlerLoop
prog/probe.go:309:2: undefined: "github.com/weaveworks/scope/vendor/github.com/weaveworks/weave/common".SignalHandlerLoop
```
2018-07-23 20:10:19 +02:00
Marc Carré
9c43419488 Remove nested sirupsen/logrus dependency
```
$ rm -fr vendor/github.com/weaveworks/weave/vendor/github.com/sirupsen
```
fixed:
```
	"github.com/weaveworks/scope/vendor/github.com/weaveworks/weave/vendor/github.com/sirupsen/logrus".Formatter does not implement "github.com/weaveworks/scope/vendor/github.com/sirupsen/logrus".Formatter (wrong type for Format method)
		have Format(*"github.com/weaveworks/scope/vendor/github.com/weaveworks/weave/vendor/github.com/sirupsen/logrus".Entry) ([]byte, error)
		want Format(*"github.com/weaveworks/scope/vendor/github.com/sirupsen/logrus".Entry) ([]byte, error)
```
2018-07-23 20:10:19 +02:00
Marc Carré
893bd7fd76 Fix protobuf-related compilation errors: undefined: proto.InternalMessageInfo
```
$ gvt delete github.com/weaveworks/weave/vendor/github.com/gogo/protobuf/proto
$ gvt delete github.com/docker/docker/vendor/github.com/gogo/protobuf/proto
$ gvt delete github.com/gogo/protobuf/gogoproto
$ gvt delete github.com/gogo/protobuf/proto
$ gvt delete github.com/gogo/protobuf/protoc-gen-gogo/descriptor
$ gvt delete github.com/gogo/protobuf/sortkeys
$ gvt delete github.com/gogo/protobuf/types
$ gvt delete google.golang.org/genproto/googleapis/rpc/status
$ gvt delete github.com/golang/protobuf/jsonpb
$ gvt delete github.com/golang/protobuf/proto
$ gvt delete github.com/golang/protobuf/protoc-gen-go/descriptor
$ gvt delete github.com/golang/protobuf/ptypes
$ gvt delete github.com/matttproud/golang_protobuf_extensions/pbutil
$ gvt fetch github.com/gogo/protobuf/proto
2018/07/23 18:33:10 Fetching: github.com/gogo/protobuf/proto
2018/07/23 18:33:15 · Fetching recursive dependency: github.com/gogo/protobuf/types
2018/07/23 18:33:15 ·· Fetching recursive dependency: github.com/gogo/protobuf/sortkeys
$ gvt fetch github.com/golang/protobuf/proto
2018/07/23 18:33:16 Fetching: github.com/golang/protobuf/proto
2018/07/23 18:33:19 · Fetching recursive dependency: github.com/golang/protobuf/ptypes/any
$ gvt fetch github.com/golang/protobuf/ptypes
2018/07/23 18:33:19 Fetching: github.com/golang/protobuf/ptypes
2018/07/23 18:33:19  Deleting existing subpackage to prevent overlap: github.com/golang/protobuf/ptypes/any
2018/07/23 18:33:22 · Skipping (existing): github.com/golang/protobuf/proto
$ gvt fetch github.com/matttproud/golang_protobuf_extensions/pbutil
2018/07/23 18:33:23 Fetching: github.com/matttproud/golang_protobuf_extensions/pbutil
2018/07/23 18:33:25 · Skipping (existing): github.com/golang/protobuf/proto
$ gvt fetch google.golang.org/genproto/googleapis/rpc/status
2018/07/23 18:33:25 Fetching: google.golang.org/genproto/googleapis/rpc/status
2018/07/23 18:33:31 · Skipping (existing): github.com/golang/protobuf/proto
2018/07/23 18:33:31 · Skipping (existing): github.com/golang/protobuf/ptypes/any
```
fixed:
```
vendor/google.golang.org/genproto/googleapis/rpc/status/status.pb.go:111:28: undefined: proto.InternalMessageInfo
```
2018-07-23 20:10:19 +02:00
Marc Carré
2ba50b8b3d Update golang.org/x/net/context to latest
```
$ gvt delete golang.org/x/net/context
$ gvt fetch golang.org/x/net/context
2018/07/23 18:03:49 Fetching: golang.org/x/net/context
$ git grep -l "golang.org/x/net/context" | grep -v vendor | xargs sed -i '' 's:golang.org/x/net/context:context:g'
$ git grep -l "context/ctxhttp" | grep -v vendor | xargs sed -i '' 's:context/ctxhttp:golang.org/x/net/context/ctxhttp:g'
$ gofmt -s -w app
$ gofmt -s -w common
$ gofmt -s -w probe
$ gofmt -s -w prog
$ gofmt -s -w tools
```
fixed a bunch of:
```
cannot use func literal (type func("github.com/weaveworks/scope/vendor/golang.org/x/net/context".Context) error) as type func("context".Context) error
```
2018-07-23 20:10:18 +02:00
Marc Carré
4f9a84fd16 Update weaveworks/promrus to v1.2.0
```
$ gvt delete github.com/weaveworks/promrus
$ gvt fetch --tag v1.2.0 github.com/weaveworks/promrus
2018/07/23 17:46:59 Fetching: github.com/weaveworks/promrus
2018/07/23 17:47:03 · Skipping (existing): golang.org/x/net/context/ctxhttp
2018/07/23 17:47:03 · Skipping (existing): github.com/go-kit/kit/log
2018/07/23 17:47:03 · Skipping (existing): github.com/julienschmidt/httprouter
2018/07/23 17:47:03 · Skipping (existing): github.com/go-kit/kit/log/level
2018/07/23 17:47:03 · Skipping (existing): github.com/pkg/errors
2018/07/23 17:47:03 · Skipping (existing): gopkg.in/yaml.v2
2018/07/23 17:47:03 · Skipping (existing): gopkg.in/alecthomas/kingpin.v2
2018/07/23 17:47:03 · Skipping (existing): golang.org/x/net/context
2018/07/23 17:47:03 · Skipping (existing): github.com/stretchr/objx
$ rm -fr vendor/github.com/weaveworks/promrus/vendor/github.com/sirupsen/
```
switched from a "legacy" version of `promrus` to a regular one, and fixed:
```
	*promrus.PrometheusHook does not implement "github.com/weaveworks/scope/vendor/github.com/sirupsen/logrus".Hook (wrong type for Fire method)
		have Fire(*"github.com/weaveworks/scope/vendor/github.com/weaveworks/promrus/vendor/github.com/sirupsen/logrus".Entry) error
		want Fire(*"github.com/weaveworks/scope/vendor/github.com/sirupsen/logrus".Entry) error
```
2018-07-23 20:10:18 +02:00
Marc Carré
e8b804a928 Clean emicklei/go-restful-openapi again, and add sirupsen/logrus
For some reason, `Sirupsen/logrus` was still in `emicklei/go-restful-openapi`:
```
$ git grep Sirupsen
vendor/github.com/emicklei/go-restful-openapi/examples/security/api.go: "github.com/Sirupsen/logrus"
```
After running:
```
$ gvt delete github.com/emicklei/go-restful-openapi
$ gvt delete github.com/marccarre/go-restful-openapi
$ gvt fetch --revision 129557de7d9f2d2ca4a90cd31c379db90a561ad8 --branch lowercase-sirupsen github.com/marccarre/go-restful-openapi
2018/07/23 17:28:40 Fetching: github.com/marccarre/go-restful-openapi
2018/07/23 17:28:42 · Fetching recursive dependency: github.com/emicklei/go-restful-openapi
2018/07/23 17:28:44 ·· Skipping (existing): github.com/go-openapi/spec
2018/07/23 17:28:44 ·· Skipping (existing): github.com/emicklei/go-restful
2018/07/23 17:28:44 ·· Fetching recursive dependency: github.com/Sirupsen/logrus
2018/07/23 17:28:46 ··· Skipping (existing): github.com/sirupsen/logrus
2018/07/23 17:28:46 ··· Skipping (existing): golang.org/x/crypto/ssh/terminal
2018/07/23 17:28:46 ··· Skipping (existing): golang.org/x/sys/unix
2018/07/23 17:28:46 · Skipping (existing): github.com/go-openapi/spec
2018/07/23 17:28:46 · Skipping (existing): github.com/sirupsen/logrus
2018/07/23 17:28:46 · Skipping (existing): github.com/emicklei/go-restful
$ rm -fr vendor/github.com/Sirupsen/
$ git reset HEAD vendor/manifest
$ git checkout -- vendor/manifest
$ gvt delete github.com/sirupsen/logrus
$ gvt fetch --tag v1.0.6 github.com/sirupsen/logrus
```
it was gone.
2018-07-23 20:10:18 +02:00
Marc Carré
179a93b418 Update weaveworks/weave to 4da998ab (which removes Sirupsen/logrus)
```
$ gvt delete github.com/weaveworks/weave/common
$ gvt fetch --revision 4da998ab4507b6a4852bf341b5df68eb7fca8a57 github.com/weaveworks/weave/common
2018/07/23 17:21:52 Fetching: github.com/weaveworks/weave/common
2018/07/23 17:22:05 · Fetching recursive dependency: github.com/weaveworks/weave/vendor/github.com/fsouza/go-dockerclient
2018/07/23 17:22:05 ·· Fetching recursive dependency: github.com/weaveworks/weave/vendor/github.com/docker/docker/pkg/archive
2018/07/23 17:22:05 ··· Fetching recursive dependency: github.com/weaveworks/weave/vendor/github.com/docker/docker/pkg/system
2018/07/23 17:22:05 ···· Fetching recursive dependency: github.com/weaveworks/weave/vendor/github.com/opencontainers/image-spec/specs-go/v1
2018/07/23 17:22:05 ····· Fetching recursive dependency: github.com/weaveworks/weave/vendor/github.com/opencontainers/go-digest
2018/07/23 17:22:05 ····· Fetching recursive dependency: github.com/weaveworks/weave/vendor/github.com/opencontainers/image-spec/specs-go
2018/07/23 17:22:05 ···· Fetching recursive dependency: github.com/weaveworks/weave/vendor/golang.org/x/sys/unix
2018/07/23 17:22:05 ···· Fetching recursive dependency: github.com/weaveworks/weave/vendor/github.com/docker/go-units
2018/07/23 17:22:05 ···· Fetching recursive dependency: github.com/weaveworks/weave/vendor/github.com/containerd/continuity/pathdriver
2018/07/23 17:22:05 ···· Fetching recursive dependency: github.com/weaveworks/weave/vendor/github.com/Microsoft/go-winio
2018/07/23 17:22:05 ····· Fetching recursive dependency: github.com/weaveworks/weave/vendor/golang.org/x/sys/windows
2018/07/23 17:22:05 ···· Fetching recursive dependency: github.com/weaveworks/weave/vendor/github.com/docker/docker/pkg/mount
2018/07/23 17:22:05 ····· Fetching recursive dependency: github.com/weaveworks/weave/vendor/github.com/sirupsen/logrus
2018/07/23 17:22:05 ······ Fetching recursive dependency: github.com/weaveworks/weave/vendor/golang.org/x/crypto/ssh/terminal
2018/07/23 17:22:06 ···· Fetching recursive dependency: github.com/weaveworks/weave/vendor/github.com/pkg/errors
2018/07/23 17:22:06 ··· Fetching recursive dependency: github.com/weaveworks/weave/vendor/github.com/docker/docker/pkg/longpath
2018/07/23 17:22:06 ··· Fetching recursive dependency: github.com/weaveworks/weave/vendor/github.com/docker/docker/pkg/idtools
2018/07/23 17:22:06 ···· Fetching recursive dependency: github.com/weaveworks/weave/vendor/github.com/opencontainers/runc/libcontainer/user
2018/07/23 17:22:06 ··· Fetching recursive dependency: github.com/weaveworks/weave/vendor/github.com/docker/docker/pkg/fileutils
2018/07/23 17:22:06 ··· Fetching recursive dependency: github.com/weaveworks/weave/vendor/github.com/docker/docker/pkg/pools
2018/07/23 17:22:06 ···· Fetching recursive dependency: github.com/weaveworks/weave/vendor/github.com/docker/docker/pkg/ioutils
2018/07/23 17:22:06 ····· Fetching recursive dependency: github.com/weaveworks/weave/vendor/golang.org/x/net/context
2018/07/23 17:22:06 ··· Fetching recursive dependency: github.com/weaveworks/weave/vendor/github.com/opencontainers/runc/libcontainer/system
2018/07/23 17:22:06 ·· Fetching recursive dependency: github.com/weaveworks/weave/vendor/github.com/docker/docker/opts
2018/07/23 17:22:06 ··· Fetching recursive dependency: github.com/weaveworks/weave/vendor/github.com/docker/docker/api/types
2018/07/23 17:22:06 ···· Fetching recursive dependency: github.com/weaveworks/weave/vendor/github.com/gogo/protobuf/proto
2018/07/23 17:22:06 ···· Fetching recursive dependency: github.com/weaveworks/weave/vendor/github.com/docker/go-connections/nat
2018/07/23 17:22:06 ·· Fetching recursive dependency: github.com/weaveworks/weave/vendor/github.com/docker/docker/pkg/stdcopy
2018/07/23 17:22:06 ·· Fetching recursive dependency: github.com/weaveworks/weave/vendor/github.com/docker/docker/pkg/homedir
2018/07/23 17:22:06 ·· Fetching recursive dependency: github.com/weaveworks/weave/vendor/github.com/docker/docker/pkg/jsonmessage
2018/07/23 17:22:06 ··· Fetching recursive dependency: github.com/weaveworks/weave/vendor/github.com/Nvveen/Gotty
2018/07/23 17:22:06 ··· Fetching recursive dependency: github.com/weaveworks/weave/vendor/github.com/docker/docker/pkg/term
2018/07/23 17:22:06 ···· Fetching recursive dependency: github.com/weaveworks/weave/vendor/github.com/Azure/go-ansiterm/winterm
2018/07/23 17:22:06 ····· Fetching recursive dependency: github.com/weaveworks/weave/vendor/github.com/Azure/go-ansiterm
2018/07/23 17:22:06 · Fetching recursive dependency: github.com/weaveworks/weave/vendor/github.com/weaveworks/go-odp/odp
```
2018-07-23 20:10:17 +02:00