| @@ -7,7 +7,6 @@ require ( | |||||
| github.com/google/uuid v1.3.0 | github.com/google/uuid v1.3.0 | ||||
| github.com/hashicorp/go-multierror v1.1.1 | github.com/hashicorp/go-multierror v1.1.1 | ||||
| github.com/imdario/mergo v0.3.15 | github.com/imdario/mergo v0.3.15 | ||||
| github.com/ipfs/go-ipfs-api v0.6.0 | |||||
| github.com/json-iterator/go v1.1.12 | github.com/json-iterator/go v1.1.12 | ||||
| github.com/magefile/mage v1.15.0 | github.com/magefile/mage v1.15.0 | ||||
| github.com/mitchellh/mapstructure v1.5.0 | github.com/mitchellh/mapstructure v1.5.0 | ||||
| @@ -26,46 +25,25 @@ require ( | |||||
| github.com/benbjohnson/clock v1.3.0 // indirect | github.com/benbjohnson/clock v1.3.0 // indirect | ||||
| github.com/coreos/go-semver v0.3.0 // indirect | github.com/coreos/go-semver v0.3.0 // indirect | ||||
| github.com/coreos/go-systemd/v22 v22.5.0 // indirect | github.com/coreos/go-systemd/v22 v22.5.0 // indirect | ||||
| github.com/crackcomm/go-gitignore v0.0.0-20170627025303-887ab5e44cc3 // indirect | |||||
| github.com/decred/dcrd/dcrec/secp256k1/v4 v4.1.0 // indirect | |||||
| github.com/gogo/protobuf v1.3.2 // indirect | github.com/gogo/protobuf v1.3.2 // indirect | ||||
| github.com/golang/protobuf v1.5.3 // indirect | github.com/golang/protobuf v1.5.3 // indirect | ||||
| github.com/gopherjs/gopherjs v1.17.2 // indirect | github.com/gopherjs/gopherjs v1.17.2 // indirect | ||||
| github.com/hashicorp/errwrap v1.1.0 // indirect | github.com/hashicorp/errwrap v1.1.0 // indirect | ||||
| github.com/ipfs/boxo v0.8.0 // indirect | |||||
| github.com/ipfs/go-cid v0.4.0 // indirect | |||||
| github.com/jtolds/gls v4.20.0+incompatible // indirect | github.com/jtolds/gls v4.20.0+incompatible // indirect | ||||
| github.com/klauspost/cpuid/v2 v2.2.3 // indirect | |||||
| github.com/libp2p/go-buffer-pool v0.1.0 // indirect | |||||
| github.com/libp2p/go-flow-metrics v0.1.0 // indirect | |||||
| github.com/libp2p/go-libp2p v0.26.3 // indirect | |||||
| github.com/minio/sha256-simd v1.0.0 // indirect | |||||
| github.com/mitchellh/go-homedir v1.1.0 // indirect | |||||
| github.com/modern-go/concurrent v0.0.0-20180228061459-e0a39a4cb421 // indirect | github.com/modern-go/concurrent v0.0.0-20180228061459-e0a39a4cb421 // indirect | ||||
| github.com/mr-tron/base58 v1.2.0 // indirect | |||||
| github.com/multiformats/go-base32 v0.1.0 // indirect | |||||
| github.com/multiformats/go-base36 v0.2.0 // indirect | |||||
| github.com/multiformats/go-multiaddr v0.8.0 // indirect | |||||
| github.com/multiformats/go-multibase v0.1.1 // indirect | |||||
| github.com/multiformats/go-multicodec v0.8.1 // indirect | |||||
| github.com/multiformats/go-multihash v0.2.1 // indirect | |||||
| github.com/multiformats/go-multistream v0.4.1 // indirect | |||||
| github.com/multiformats/go-varint v0.0.7 // indirect | |||||
| github.com/pkg/errors v0.9.1 // indirect | |||||
| github.com/smartystreets/assertions v1.13.1 // indirect | github.com/smartystreets/assertions v1.13.1 // indirect | ||||
| github.com/spaolacci/murmur3 v1.1.0 // indirect | |||||
| github.com/whyrusleeping/tar-utils v0.0.0-20180509141711-8c6c8ba81d5c // indirect | |||||
| github.com/stretchr/testify v1.8.2 // indirect | |||||
| go.etcd.io/etcd/api/v3 v3.5.9 // indirect | go.etcd.io/etcd/api/v3 v3.5.9 // indirect | ||||
| go.etcd.io/etcd/client/pkg/v3 v3.5.9 // indirect | go.etcd.io/etcd/client/pkg/v3 v3.5.9 // indirect | ||||
| go.uber.org/atomic v1.10.0 // indirect | go.uber.org/atomic v1.10.0 // indirect | ||||
| go.uber.org/goleak v1.1.12 // indirect | |||||
| go.uber.org/multierr v1.9.0 // indirect | go.uber.org/multierr v1.9.0 // indirect | ||||
| go.uber.org/zap v1.24.0 // indirect | go.uber.org/zap v1.24.0 // indirect | ||||
| golang.org/x/crypto v0.6.0 // indirect | |||||
| golang.org/x/net v0.8.0 // indirect | golang.org/x/net v0.8.0 // indirect | ||||
| golang.org/x/sync v0.1.0 | |||||
| golang.org/x/sys v0.6.0 // indirect | golang.org/x/sys v0.6.0 // indirect | ||||
| golang.org/x/text v0.8.0 // indirect | golang.org/x/text v0.8.0 // indirect | ||||
| google.golang.org/genproto v0.0.0-20230403163135-c38d8f061ccd // indirect | google.golang.org/genproto v0.0.0-20230403163135-c38d8f061ccd // indirect | ||||
| google.golang.org/grpc v1.54.0 // indirect | google.golang.org/grpc v1.54.0 // indirect | ||||
| google.golang.org/protobuf v1.30.0 // indirect | google.golang.org/protobuf v1.30.0 // indirect | ||||
| lukechampine.com/blake3 v1.1.7 // indirect | |||||
| ) | ) | ||||
| @@ -2,19 +2,13 @@ github.com/antonfisher/nested-logrus-formatter v1.3.1 h1:NFJIr+pzwv5QLHTPyKz9UME | |||||
| github.com/antonfisher/nested-logrus-formatter v1.3.1/go.mod h1:6WTfyWFkBc9+zyBaKIqRrg/KwMqBbodBjgbHjDz7zjA= | github.com/antonfisher/nested-logrus-formatter v1.3.1/go.mod h1:6WTfyWFkBc9+zyBaKIqRrg/KwMqBbodBjgbHjDz7zjA= | ||||
| github.com/benbjohnson/clock v1.3.0 h1:ip6w0uFQkncKQ979AypyG0ER7mqUSBdKLOgAle/AT8A= | github.com/benbjohnson/clock v1.3.0 h1:ip6w0uFQkncKQ979AypyG0ER7mqUSBdKLOgAle/AT8A= | ||||
| github.com/benbjohnson/clock v1.3.0/go.mod h1:J11/hYXuz8f4ySSvYwY0FKfm+ezbsZBKZxNJlLklBHA= | github.com/benbjohnson/clock v1.3.0/go.mod h1:J11/hYXuz8f4ySSvYwY0FKfm+ezbsZBKZxNJlLklBHA= | ||||
| github.com/cheekybits/is v0.0.0-20150225183255-68e9c0620927 h1:SKI1/fuSdodxmNNyVBR8d7X/HuLnRpvvFO0AgyQk764= | |||||
| github.com/coreos/go-semver v0.3.0 h1:wkHLiw0WNATZnSG7epLsujiMCgPAc9xhjJ4tgnAxmfM= | github.com/coreos/go-semver v0.3.0 h1:wkHLiw0WNATZnSG7epLsujiMCgPAc9xhjJ4tgnAxmfM= | ||||
| github.com/coreos/go-semver v0.3.0/go.mod h1:nnelYz7RCh+5ahJtPPxZlU+153eP4D4r3EedlOD2RNk= | github.com/coreos/go-semver v0.3.0/go.mod h1:nnelYz7RCh+5ahJtPPxZlU+153eP4D4r3EedlOD2RNk= | ||||
| github.com/coreos/go-systemd/v22 v22.5.0 h1:RrqgGjYQKalulkV8NGVIfkXQf6YYmOyiJKk8iXXhfZs= | github.com/coreos/go-systemd/v22 v22.5.0 h1:RrqgGjYQKalulkV8NGVIfkXQf6YYmOyiJKk8iXXhfZs= | ||||
| github.com/coreos/go-systemd/v22 v22.5.0/go.mod h1:Y58oyj3AT4RCenI/lSvhwexgC+NSVTIJ3seZv2GcEnc= | github.com/coreos/go-systemd/v22 v22.5.0/go.mod h1:Y58oyj3AT4RCenI/lSvhwexgC+NSVTIJ3seZv2GcEnc= | ||||
| github.com/crackcomm/go-gitignore v0.0.0-20170627025303-887ab5e44cc3 h1:HVTnpeuvF6Owjd5mniCL8DEXo7uYXdQEmOP4FJbV5tg= | |||||
| github.com/crackcomm/go-gitignore v0.0.0-20170627025303-887ab5e44cc3/go.mod h1:p1d6YEZWvFzEh4KLyvBcVSnrfNDDvK2zfK/4x2v/4pE= | |||||
| github.com/davecgh/go-spew v1.1.0/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= | github.com/davecgh/go-spew v1.1.0/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= | ||||
| github.com/davecgh/go-spew v1.1.1 h1:vj9j/u1bqnvCEfJOwUhtlOARqs3+rkHYY13jYWTU97c= | 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/davecgh/go-spew v1.1.1/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= | ||||
| github.com/decred/dcrd/crypto/blake256 v1.0.0 h1:/8DMNYp9SGi5f0w7uCm6d6M4OU2rGFK09Y2A4Xv7EE0= | |||||
| github.com/decred/dcrd/dcrec/secp256k1/v4 v4.1.0 h1:HbphB4TFFXpv7MNrT52FGrrgVXF1owhMVTHFZIlnvd4= | |||||
| github.com/decred/dcrd/dcrec/secp256k1/v4 v4.1.0/go.mod h1:DZGJHZMqrU4JJqFAWUS2UO1+lbSKsdiOoYi9Zzey7Fc= | |||||
| github.com/godbus/dbus/v5 v5.0.4/go.mod h1:xhWf0FNVPg57R7Z0UbKHbJfkEywrmjJnf7w5xrFpKfA= | github.com/godbus/dbus/v5 v5.0.4/go.mod h1:xhWf0FNVPg57R7Z0UbKHbJfkEywrmjJnf7w5xrFpKfA= | ||||
| github.com/gogo/protobuf v1.3.2 h1:Ov1cvc58UF3b5XjBnZv7+opcTcQFZebYjWzi34vdm4Q= | github.com/gogo/protobuf v1.3.2 h1:Ov1cvc58UF3b5XjBnZv7+opcTcQFZebYjWzi34vdm4Q= | ||||
| github.com/gogo/protobuf v1.3.2/go.mod h1:P1XiOD3dCwIKUDQYPy72D8LYyHL2YPYrpS2s69NZV8Q= | github.com/gogo/protobuf v1.3.2/go.mod h1:P1XiOD3dCwIKUDQYPy72D8LYyHL2YPYrpS2s69NZV8Q= | ||||
| @@ -35,62 +29,28 @@ github.com/hashicorp/go-multierror v1.1.1 h1:H5DkEtf6CXdFp0N0Em5UCwQpXMWke8IA0+l | |||||
| github.com/hashicorp/go-multierror v1.1.1/go.mod h1:iw975J/qwKPdAO1clOe2L8331t/9/fmwbPZ6JB6eMoM= | github.com/hashicorp/go-multierror v1.1.1/go.mod h1:iw975J/qwKPdAO1clOe2L8331t/9/fmwbPZ6JB6eMoM= | ||||
| github.com/imdario/mergo v0.3.15 h1:M8XP7IuFNsqUx6VPK2P9OSmsYsI/YFaGil0uD21V3dM= | github.com/imdario/mergo v0.3.15 h1:M8XP7IuFNsqUx6VPK2P9OSmsYsI/YFaGil0uD21V3dM= | ||||
| github.com/imdario/mergo v0.3.15/go.mod h1:WBLT9ZmE3lPoWsEzCh9LPo3TiwVN+ZKEjmz+hD27ysY= | github.com/imdario/mergo v0.3.15/go.mod h1:WBLT9ZmE3lPoWsEzCh9LPo3TiwVN+ZKEjmz+hD27ysY= | ||||
| github.com/ipfs/boxo v0.8.0 h1:UdjAJmHzQHo/j3g3b1bAcAXCj/GM6iTwvSlBDvPBNBs= | |||||
| github.com/ipfs/boxo v0.8.0/go.mod h1:RIsi4CnTyQ7AUsNn5gXljJYZlQrHBMnJp94p73liFiA= | |||||
| github.com/ipfs/go-cid v0.4.0 h1:a4pdZq0sx6ZSxbCizebnKiMCx/xI/aBBFlB73IgH4rA= | |||||
| github.com/ipfs/go-cid v0.4.0/go.mod h1:uQHwDeX4c6CtyrFwdqyhpNcxVewur1M7l7fNU7LKwZk= | |||||
| github.com/ipfs/go-ipfs-api v0.6.0 h1:JARgG0VTbjyVhO5ZfesnbXv9wTcMvoKRBLF1SzJqzmg= | |||||
| github.com/ipfs/go-ipfs-api v0.6.0/go.mod h1:iDC2VMwN9LUpQV/GzEeZ2zNqd8NUdRmWcFM+K/6odf0= | |||||
| github.com/json-iterator/go v1.1.12 h1:PV8peI4a0ysnczrg+LtxykD8LfKY9ML6u2jnxaEnrnM= | github.com/json-iterator/go v1.1.12 h1:PV8peI4a0ysnczrg+LtxykD8LfKY9ML6u2jnxaEnrnM= | ||||
| github.com/json-iterator/go v1.1.12/go.mod h1:e30LSqwooZae/UwlEbR2852Gd8hjQvJoHmT4TnhNGBo= | github.com/json-iterator/go v1.1.12/go.mod h1:e30LSqwooZae/UwlEbR2852Gd8hjQvJoHmT4TnhNGBo= | ||||
| github.com/jtolds/gls v4.20.0+incompatible h1:xdiiI2gbIgH/gLH7ADydsJ1uDOEzR8yvV7C0MuV77Wo= | github.com/jtolds/gls v4.20.0+incompatible h1:xdiiI2gbIgH/gLH7ADydsJ1uDOEzR8yvV7C0MuV77Wo= | ||||
| github.com/jtolds/gls v4.20.0+incompatible/go.mod h1:QJZ7F/aHp+rZTRtaJ1ow/lLfFfVYBRgL+9YlvaHOwJU= | github.com/jtolds/gls v4.20.0+incompatible/go.mod h1:QJZ7F/aHp+rZTRtaJ1ow/lLfFfVYBRgL+9YlvaHOwJU= | ||||
| github.com/kisielk/errcheck v1.5.0/go.mod h1:pFxgyoBC7bSaBwPgfKdkLd5X25qrDl4LWUI2bnpBCr8= | github.com/kisielk/errcheck v1.5.0/go.mod h1:pFxgyoBC7bSaBwPgfKdkLd5X25qrDl4LWUI2bnpBCr8= | ||||
| github.com/kisielk/gotool v1.0.0/go.mod h1:XhKaO+MFFWcvkIS/tQcRk01m1F5IRFswLeQ+oQHNcck= | github.com/kisielk/gotool v1.0.0/go.mod h1:XhKaO+MFFWcvkIS/tQcRk01m1F5IRFswLeQ+oQHNcck= | ||||
| github.com/klauspost/cpuid/v2 v2.0.4/go.mod h1:FInQzS24/EEf25PyTYn52gqo7WaD8xa0213Md/qVLRg= | |||||
| github.com/klauspost/cpuid/v2 v2.0.9/go.mod h1:FInQzS24/EEf25PyTYn52gqo7WaD8xa0213Md/qVLRg= | |||||
| github.com/klauspost/cpuid/v2 v2.2.3 h1:sxCkb+qR91z4vsqw4vGGZlDgPz3G7gjaLyK3V8y70BU= | |||||
| github.com/klauspost/cpuid/v2 v2.2.3/go.mod h1:RVVoqg1df56z8g3pUjL/3lE5UfnlrJX8tyFgg4nqhuY= | |||||
| github.com/libp2p/go-buffer-pool v0.1.0 h1:oK4mSFcQz7cTQIfqbe4MIj9gLW+mnanjyFtc6cdF0Y8= | |||||
| github.com/libp2p/go-buffer-pool v0.1.0/go.mod h1:N+vh8gMqimBzdKkSMVuydVDq+UV5QTWy5HSiZacSbPg= | |||||
| github.com/libp2p/go-flow-metrics v0.1.0 h1:0iPhMI8PskQwzh57jB9WxIuIOQ0r+15PChFGkx3Q3WM= | |||||
| github.com/libp2p/go-flow-metrics v0.1.0/go.mod h1:4Xi8MX8wj5aWNDAZttg6UPmc0ZrnFNsMtpsYUClFtro= | |||||
| github.com/libp2p/go-libp2p v0.26.3 h1:6g/psubqwdaBqNNoidbRKSTBEYgaOuKBhHl8Q5tO+PM= | |||||
| github.com/libp2p/go-libp2p v0.26.3/go.mod h1:x75BN32YbwuY0Awm2Uix4d4KOz+/4piInkp4Wr3yOo8= | |||||
| github.com/kr/pretty v0.1.0/go.mod h1:dAy3ld7l9f0ibDNOQOHHMYYIIbhfbHSm3C4ZsoJORNo= | |||||
| github.com/kr/pty v1.1.1/go.mod h1:pFQYn66WHrOpPYNljwOMqo10TkYh1fy3cYio2l3bCsQ= | |||||
| github.com/kr/text v0.1.0/go.mod h1:4Jbv+DJW3UT/LiOwJeYQe1efqtUx/iVham/4vfdArNI= | |||||
| github.com/magefile/mage v1.15.0 h1:BvGheCMAsG3bWUDbZ8AyXXpCNwU9u5CB6sM+HNb9HYg= | github.com/magefile/mage v1.15.0 h1:BvGheCMAsG3bWUDbZ8AyXXpCNwU9u5CB6sM+HNb9HYg= | ||||
| github.com/magefile/mage v1.15.0/go.mod h1:z5UZb/iS3GoOSn0JgWuiw7dxlurVYTu+/jHXqQg881A= | github.com/magefile/mage v1.15.0/go.mod h1:z5UZb/iS3GoOSn0JgWuiw7dxlurVYTu+/jHXqQg881A= | ||||
| github.com/minio/sha256-simd v1.0.0 h1:v1ta+49hkWZyvaKwrQB8elexRqm6Y0aMLjCNsrYxo6g= | |||||
| github.com/minio/sha256-simd v1.0.0/go.mod h1:OuYzVNI5vcoYIAmbIvHPl3N3jUzVedXbKy5RFepssQM= | |||||
| github.com/mitchellh/go-homedir v1.1.0 h1:lukF9ziXFxDFPkA1vsr5zpc1XuPDn/wFntq5mG+4E0Y= | |||||
| github.com/mitchellh/go-homedir v1.1.0/go.mod h1:SfyaCUpYCn1Vlf4IUYiD9fPX4A5wJrkLzIz1N1q0pr0= | |||||
| github.com/mitchellh/mapstructure v1.5.0 h1:jeMsZIYE/09sWLaz43PL7Gy6RuMjD2eJVyuac5Z2hdY= | github.com/mitchellh/mapstructure v1.5.0 h1:jeMsZIYE/09sWLaz43PL7Gy6RuMjD2eJVyuac5Z2hdY= | ||||
| github.com/mitchellh/mapstructure v1.5.0/go.mod h1:bFUtVrKA4DC2yAKiSyO/QUcy7e+RRV2QTWOzhPopBRo= | github.com/mitchellh/mapstructure v1.5.0/go.mod h1:bFUtVrKA4DC2yAKiSyO/QUcy7e+RRV2QTWOzhPopBRo= | ||||
| github.com/modern-go/concurrent v0.0.0-20180228061459-e0a39a4cb421 h1:ZqeYNhU3OHLH3mGKHDcjJRFFRrJa6eAM5H+CtDdOsPc= | github.com/modern-go/concurrent v0.0.0-20180228061459-e0a39a4cb421 h1:ZqeYNhU3OHLH3mGKHDcjJRFFRrJa6eAM5H+CtDdOsPc= | ||||
| github.com/modern-go/concurrent v0.0.0-20180228061459-e0a39a4cb421/go.mod h1:6dJC0mAP4ikYIbvyc7fijjWJddQyLn8Ig3JB5CqoB9Q= | github.com/modern-go/concurrent v0.0.0-20180228061459-e0a39a4cb421/go.mod h1:6dJC0mAP4ikYIbvyc7fijjWJddQyLn8Ig3JB5CqoB9Q= | ||||
| github.com/modern-go/reflect2 v1.0.2 h1:xBagoLtFs94CBntxluKeaWgTMpvLxC4ur3nMaC9Gz0M= | github.com/modern-go/reflect2 v1.0.2 h1:xBagoLtFs94CBntxluKeaWgTMpvLxC4ur3nMaC9Gz0M= | ||||
| github.com/modern-go/reflect2 v1.0.2/go.mod h1:yWuevngMOJpCy52FWWMvUC8ws7m/LJsjYzDa0/r8luk= | github.com/modern-go/reflect2 v1.0.2/go.mod h1:yWuevngMOJpCy52FWWMvUC8ws7m/LJsjYzDa0/r8luk= | ||||
| github.com/mr-tron/base58 v1.2.0 h1:T/HDJBh4ZCPbU39/+c3rRvE0uKBQlU27+QI8LJ4t64o= | |||||
| github.com/mr-tron/base58 v1.2.0/go.mod h1:BinMc/sQntlIE1frQmRFPUoPA1Zkr8VRgBdjWI2mNwc= | |||||
| github.com/multiformats/go-base32 v0.1.0 h1:pVx9xoSPqEIQG8o+UbAe7DNi51oej1NtK+aGkbLYxPE= | |||||
| github.com/multiformats/go-base32 v0.1.0/go.mod h1:Kj3tFY6zNr+ABYMqeUNeGvkIC/UYgtWibDcT0rExnbI= | |||||
| github.com/multiformats/go-base36 v0.2.0 h1:lFsAbNOGeKtuKozrtBsAkSVhv1p9D0/qedU9rQyccr0= | |||||
| github.com/multiformats/go-base36 v0.2.0/go.mod h1:qvnKE++v+2MWCfePClUEjE78Z7P2a1UV0xHgWc0hkp4= | |||||
| github.com/multiformats/go-multiaddr v0.8.0 h1:aqjksEcqK+iD/Foe1RRFsGZh8+XFiGo7FgUCZlpv3LU= | |||||
| github.com/multiformats/go-multiaddr v0.8.0/go.mod h1:Fs50eBDWvZu+l3/9S6xAE7ZYj6yhxlvaVZjakWN7xRs= | |||||
| github.com/multiformats/go-multibase v0.1.1 h1:3ASCDsuLX8+j4kx58qnJ4YFq/JWTJpCyDW27ztsVTOI= | |||||
| github.com/multiformats/go-multibase v0.1.1/go.mod h1:ZEjHE+IsUrgp5mhlEAYjMtZwK1k4haNkcaPg9aoe1a8= | |||||
| github.com/multiformats/go-multicodec v0.8.1 h1:ycepHwavHafh3grIbR1jIXnKCsFm0fqsfEOsJ8NtKE8= | |||||
| github.com/multiformats/go-multicodec v0.8.1/go.mod h1:L3QTQvMIaVBkXOXXtVmYE+LI16i14xuaojr/H7Ai54k= | |||||
| github.com/multiformats/go-multihash v0.2.1 h1:aem8ZT0VA2nCHHk7bPJ1BjUbHNciqZC/d16Vve9l108= | |||||
| github.com/multiformats/go-multihash v0.2.1/go.mod h1:WxoMcYG85AZVQUyRyo9s4wULvW5qrI9vb2Lt6evduFc= | |||||
| github.com/multiformats/go-multistream v0.4.1 h1:rFy0Iiyn3YT0asivDUIR05leAdwZq3de4741sbiSdfo= | |||||
| github.com/multiformats/go-multistream v0.4.1/go.mod h1:Mz5eykRVAjJWckE2U78c6xqdtyNUEhKSM0Lwar2p77Q= | |||||
| github.com/multiformats/go-varint v0.0.7 h1:sWSGR+f/eu5ABZA2ZpYKBILXTTs9JWpdEM/nEGOHFS8= | |||||
| github.com/multiformats/go-varint v0.0.7/go.mod h1:r8PUYw/fD/SjBCiKOoDlGF6QawOELpZAu9eioSos/OU= | |||||
| github.com/otiai10/copy v1.12.0 h1:cLMgSQnXBs1eehF0Wy/FAGsgDTDmAqFR7rQylBb1nDY= | github.com/otiai10/copy v1.12.0 h1:cLMgSQnXBs1eehF0Wy/FAGsgDTDmAqFR7rQylBb1nDY= | ||||
| github.com/otiai10/copy v1.12.0/go.mod h1:rSaLseMUsZFFbsFGc7wCJnnkTAvdc5L6VWxPE4308Ww= | github.com/otiai10/copy v1.12.0/go.mod h1:rSaLseMUsZFFbsFGc7wCJnnkTAvdc5L6VWxPE4308Ww= | ||||
| github.com/otiai10/mint v1.5.1 h1:XaPLeE+9vGbuyEHem1JNk3bYc7KKqyI/na0/mLd/Kks= | github.com/otiai10/mint v1.5.1 h1:XaPLeE+9vGbuyEHem1JNk3bYc7KKqyI/na0/mLd/Kks= | ||||
| github.com/pkg/errors v0.9.1 h1:FEBLx1zS214owpjy7qsBeixbURkuhQAwrK5UwLGTwt4= | github.com/pkg/errors v0.9.1 h1:FEBLx1zS214owpjy7qsBeixbURkuhQAwrK5UwLGTwt4= | ||||
| github.com/pkg/errors v0.9.1/go.mod h1:bwawxfHBFNV+L2hUp1rHADufV3IMtnDRdf1r5NINEl0= | |||||
| github.com/pmezard/go-difflib v1.0.0 h1:4DBwDE0NGyQoBHbLQYPwSUPoCMWR5BEzIk/f1lZbAQM= | github.com/pmezard/go-difflib v1.0.0 h1:4DBwDE0NGyQoBHbLQYPwSUPoCMWR5BEzIk/f1lZbAQM= | ||||
| github.com/pmezard/go-difflib v1.0.0/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4= | github.com/pmezard/go-difflib v1.0.0/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4= | ||||
| github.com/samber/lo v1.36.0 h1:4LaOxH1mHnbDGhTVE0i1z8v/lWaQW8AIfOD3HU4mSaw= | github.com/samber/lo v1.36.0 h1:4LaOxH1mHnbDGhTVE0i1z8v/lWaQW8AIfOD3HU4mSaw= | ||||
| @@ -101,19 +61,21 @@ github.com/smartystreets/assertions v1.13.1 h1:Ef7KhSmjZcK6AVf9YbJdvPYG9avaF0Zxu | |||||
| github.com/smartystreets/assertions v1.13.1/go.mod h1:cXr/IwVfSo/RbCSPhoAPv73p3hlSdrBH/b3SdnW/LMY= | github.com/smartystreets/assertions v1.13.1/go.mod h1:cXr/IwVfSo/RbCSPhoAPv73p3hlSdrBH/b3SdnW/LMY= | ||||
| github.com/smartystreets/goconvey v1.8.0 h1:Oi49ha/2MURE0WexF052Z0m+BNSGirfjg5RL+JXWq3w= | github.com/smartystreets/goconvey v1.8.0 h1:Oi49ha/2MURE0WexF052Z0m+BNSGirfjg5RL+JXWq3w= | ||||
| github.com/smartystreets/goconvey v1.8.0/go.mod h1:EdX8jtrTIj26jmjCOVNMVSIYAtgexqXKHOXW2Dx9JLg= | github.com/smartystreets/goconvey v1.8.0/go.mod h1:EdX8jtrTIj26jmjCOVNMVSIYAtgexqXKHOXW2Dx9JLg= | ||||
| github.com/spaolacci/murmur3 v1.1.0 h1:7c1g84S4BPRrfL5Xrdp6fOJ206sU9y293DDHaoy0bLI= | |||||
| github.com/spaolacci/murmur3 v1.1.0/go.mod h1:JwIasOWyU6f++ZhiEuf87xNszmSA2myDM2Kzu9HwQUA= | |||||
| github.com/streadway/amqp v1.1.0 h1:py12iX8XSyI7aN/3dUT8DFIDJazNJsVJdxNVEpnQTZM= | github.com/streadway/amqp v1.1.0 h1:py12iX8XSyI7aN/3dUT8DFIDJazNJsVJdxNVEpnQTZM= | ||||
| github.com/streadway/amqp v1.1.0/go.mod h1:WYSrTEYHOXHd0nwFeUXAe2G2hRnQT+deZJJf88uS9Bg= | github.com/streadway/amqp v1.1.0/go.mod h1:WYSrTEYHOXHd0nwFeUXAe2G2hRnQT+deZJJf88uS9Bg= | ||||
| github.com/stretchr/objx v0.1.0/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME= | github.com/stretchr/objx v0.1.0/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME= | ||||
| github.com/stretchr/objx v0.4.0/go.mod h1:YvHI0jy2hoMjB+UWwv71VJQ9isScKT/TqJzVSSt89Yw= | |||||
| github.com/stretchr/objx v0.5.0/go.mod h1:Yh+to48EsGEfYuaHDzXPcE3xhTkx73EhmCGUpEOglKo= | |||||
| github.com/stretchr/testify v1.3.0/go.mod h1:M5WIy9Dh21IEIfnGCwXGc5bZfKNJtfHm1UVUgZn+9EI= | github.com/stretchr/testify v1.3.0/go.mod h1:M5WIy9Dh21IEIfnGCwXGc5bZfKNJtfHm1UVUgZn+9EI= | ||||
| github.com/stretchr/testify v1.7.0/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/h/Wwjteg= | github.com/stretchr/testify v1.7.0/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/h/Wwjteg= | ||||
| github.com/stretchr/testify v1.7.1/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/h/Wwjteg= | |||||
| github.com/stretchr/testify v1.8.0/go.mod h1:yNjHg4UonilssWZ8iaSj1OCr/vHnekPRkoO+kdMU+MU= | |||||
| github.com/stretchr/testify v1.8.2 h1:+h33VjcLVPDHtOdpUCuF+7gSuG3yGIftsP1YvFihtJ8= | github.com/stretchr/testify v1.8.2 h1:+h33VjcLVPDHtOdpUCuF+7gSuG3yGIftsP1YvFihtJ8= | ||||
| github.com/stretchr/testify v1.8.2/go.mod h1:w2LPCIKwWwSfY2zedu0+kehJoqGctiVI29o6fzry7u4= | |||||
| github.com/thoas/go-funk v0.9.1 h1:O549iLZqPpTUQ10ykd26sZhzD+rmR5pWhuElrhbC20M= | github.com/thoas/go-funk v0.9.1 h1:O549iLZqPpTUQ10ykd26sZhzD+rmR5pWhuElrhbC20M= | ||||
| github.com/whyrusleeping/tar-utils v0.0.0-20180509141711-8c6c8ba81d5c h1:GGsyl0dZ2jJgVT+VvWBf/cNijrHRhkrTjkmp5wg7li0= | |||||
| github.com/whyrusleeping/tar-utils v0.0.0-20180509141711-8c6c8ba81d5c/go.mod h1:xxcJeBb7SIUl/Wzkz1eVKJE/CB34YNrqX2TQI6jY9zs= | |||||
| github.com/yuin/goldmark v1.1.27/go.mod h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9decYSb74= | github.com/yuin/goldmark v1.1.27/go.mod h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9decYSb74= | ||||
| github.com/yuin/goldmark v1.2.1/go.mod h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9decYSb74= | github.com/yuin/goldmark v1.2.1/go.mod h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9decYSb74= | ||||
| github.com/yuin/goldmark v1.3.5/go.mod h1:mwnBkeHKe2W/ZEtQ+71ViKU8L12m81fl3OWwC1Zlc8k= | |||||
| github.com/zyedidia/generic v1.2.1 h1:Zv5KS/N2m0XZZiuLS82qheRG4X1o5gsWreGb0hR7XDc= | github.com/zyedidia/generic v1.2.1 h1:Zv5KS/N2m0XZZiuLS82qheRG4X1o5gsWreGb0hR7XDc= | ||||
| github.com/zyedidia/generic v1.2.1/go.mod h1:ly2RBz4mnz1yeuVbQA/VFwGjK3mnHGRj1JuoG336Bis= | github.com/zyedidia/generic v1.2.1/go.mod h1:ly2RBz4mnz1yeuVbQA/VFwGjK3mnHGRj1JuoG336Bis= | ||||
| go.etcd.io/etcd/api/v3 v3.5.9 h1:4wSsluwyTbGGmyjJktOf3wFQoTBIURXHnq9n/G/JQHs= | go.etcd.io/etcd/api/v3 v3.5.9 h1:4wSsluwyTbGGmyjJktOf3wFQoTBIURXHnq9n/G/JQHs= | ||||
| @@ -125,6 +87,7 @@ go.etcd.io/etcd/client/v3 v3.5.9/go.mod h1:i/Eo5LrZ5IKqpbtpPDuaUnDOUv471oDg8cjQa | |||||
| go.uber.org/atomic v1.10.0 h1:9qC72Qh0+3MqyJbAn8YU5xVq1frD8bn3JtD2oXtafVQ= | go.uber.org/atomic v1.10.0 h1:9qC72Qh0+3MqyJbAn8YU5xVq1frD8bn3JtD2oXtafVQ= | ||||
| go.uber.org/atomic v1.10.0/go.mod h1:LUxbIzbOniOlMKjJjyPfpl4v+PKK2cNJn91OQbhoJI0= | go.uber.org/atomic v1.10.0/go.mod h1:LUxbIzbOniOlMKjJjyPfpl4v+PKK2cNJn91OQbhoJI0= | ||||
| go.uber.org/goleak v1.1.12 h1:gZAh5/EyT/HQwlpkCy6wTpqfH9H8Lz8zbm3dZh+OyzA= | go.uber.org/goleak v1.1.12 h1:gZAh5/EyT/HQwlpkCy6wTpqfH9H8Lz8zbm3dZh+OyzA= | ||||
| go.uber.org/goleak v1.1.12/go.mod h1:cwTWslyiVhfpKIDGSZEM2HlOvcqm+tG4zioyIeLoqMQ= | |||||
| go.uber.org/multierr v1.9.0 h1:7fIwc/ZtS0q++VgcfqFDxSBZVv/Xo49/SYnDFupUwlI= | go.uber.org/multierr v1.9.0 h1:7fIwc/ZtS0q++VgcfqFDxSBZVv/Xo49/SYnDFupUwlI= | ||||
| go.uber.org/multierr v1.9.0/go.mod h1:X2jQV1h+kxSjClGpnseKVIxpmcjrj7MNnI0bnlfKTVQ= | go.uber.org/multierr v1.9.0/go.mod h1:X2jQV1h+kxSjClGpnseKVIxpmcjrj7MNnI0bnlfKTVQ= | ||||
| go.uber.org/zap v1.24.0 h1:FiJd5l1UOLj0wCgbSE0rwwXHzEdAZS6hiiSnxJN/D60= | go.uber.org/zap v1.24.0 h1:FiJd5l1UOLj0wCgbSE0rwwXHzEdAZS6hiiSnxJN/D60= | ||||
| @@ -132,38 +95,44 @@ go.uber.org/zap v1.24.0/go.mod h1:2kMP+WWQ8aoFoedH3T2sq6iJ2yDWpHbP0f6MQbS9Gkg= | |||||
| golang.org/x/crypto v0.0.0-20190308221718-c2843e01d9a2/go.mod h1:djNgcEr1/C05ACkg1iLfiJU5Ep61QUkGW8qpdssI0+w= | golang.org/x/crypto v0.0.0-20190308221718-c2843e01d9a2/go.mod h1:djNgcEr1/C05ACkg1iLfiJU5Ep61QUkGW8qpdssI0+w= | ||||
| golang.org/x/crypto v0.0.0-20191011191535-87dc89f01550/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI= | golang.org/x/crypto v0.0.0-20191011191535-87dc89f01550/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI= | ||||
| golang.org/x/crypto v0.0.0-20200622213623-75b288015ac9/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto= | golang.org/x/crypto v0.0.0-20200622213623-75b288015ac9/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto= | ||||
| golang.org/x/crypto v0.6.0 h1:qfktjS5LUO+fFKeJXZ+ikTRijMmljikvG68fpMMruSc= | |||||
| golang.org/x/crypto v0.6.0/go.mod h1:OFC/31mSvZgRz0V1QTNCzfAI1aIRzbiufJtkMIlEp58= | |||||
| golang.org/x/exp v0.0.0-20230519143937-03e91628a987 h1:3xJIFvzUFbu4ls0BTBYcgbCGhA63eAOEMxIHugyXJqA= | golang.org/x/exp v0.0.0-20230519143937-03e91628a987 h1:3xJIFvzUFbu4ls0BTBYcgbCGhA63eAOEMxIHugyXJqA= | ||||
| golang.org/x/exp v0.0.0-20230519143937-03e91628a987/go.mod h1:V1LtkGg67GoY2N1AnLN78QLrzxkLyJw7RJb1gzOOz9w= | golang.org/x/exp v0.0.0-20230519143937-03e91628a987/go.mod h1:V1LtkGg67GoY2N1AnLN78QLrzxkLyJw7RJb1gzOOz9w= | ||||
| golang.org/x/lint v0.0.0-20190930215403-16217165b5de/go.mod h1:6SW0HCj/g11FgYtHlgUYUwCkIfeOF89ocIRzGO/8vkc= | |||||
| golang.org/x/mod v0.2.0/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA= | golang.org/x/mod v0.2.0/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA= | ||||
| golang.org/x/mod v0.3.0/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA= | golang.org/x/mod v0.3.0/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA= | ||||
| golang.org/x/mod v0.4.2/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA= | |||||
| golang.org/x/net v0.0.0-20190311183353-d8887717615a/go.mod h1:t9HGtf8HONx5eT2rtn7q6eTqICYqUVnKs3thJo3Qplg= | |||||
| golang.org/x/net v0.0.0-20190404232315-eb5bcb51f2a3/go.mod h1:t9HGtf8HONx5eT2rtn7q6eTqICYqUVnKs3thJo3Qplg= | golang.org/x/net v0.0.0-20190404232315-eb5bcb51f2a3/go.mod h1:t9HGtf8HONx5eT2rtn7q6eTqICYqUVnKs3thJo3Qplg= | ||||
| golang.org/x/net v0.0.0-20190620200207-3b0461eec859/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= | golang.org/x/net v0.0.0-20190620200207-3b0461eec859/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= | ||||
| golang.org/x/net v0.0.0-20200226121028-0de0cce0169b/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= | golang.org/x/net v0.0.0-20200226121028-0de0cce0169b/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= | ||||
| golang.org/x/net v0.0.0-20201021035429-f5854403a974/go.mod h1:sp8m0HH+o8qH0wwXwYZr8TS3Oi6o0r6Gce1SSxlDquU= | golang.org/x/net v0.0.0-20201021035429-f5854403a974/go.mod h1:sp8m0HH+o8qH0wwXwYZr8TS3Oi6o0r6Gce1SSxlDquU= | ||||
| golang.org/x/net v0.0.0-20210405180319-a5a99cb37ef4/go.mod h1:p54w0d4576C0XHj96bSt6lcn1PtDYWL6XObtHCRCNQM= | |||||
| golang.org/x/net v0.8.0 h1:Zrh2ngAOFYneWTAIAPethzeaQLuHwhuBkuV6ZiRnUaQ= | golang.org/x/net v0.8.0 h1:Zrh2ngAOFYneWTAIAPethzeaQLuHwhuBkuV6ZiRnUaQ= | ||||
| golang.org/x/net v0.8.0/go.mod h1:QVkue5JL9kW//ek3r6jTKnTFis1tRmNAW2P1shuFdJc= | golang.org/x/net v0.8.0/go.mod h1:QVkue5JL9kW//ek3r6jTKnTFis1tRmNAW2P1shuFdJc= | ||||
| golang.org/x/sync v0.0.0-20190423024810-112230192c58/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= | golang.org/x/sync v0.0.0-20190423024810-112230192c58/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= | ||||
| golang.org/x/sync v0.0.0-20190911185100-cd5d95a43a6e/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= | golang.org/x/sync v0.0.0-20190911185100-cd5d95a43a6e/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= | ||||
| golang.org/x/sync v0.0.0-20201020160332-67f06af15bc9/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= | golang.org/x/sync v0.0.0-20201020160332-67f06af15bc9/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= | ||||
| golang.org/x/sync v0.1.0 h1:wsuoTGHzEhffawBOhz5CYhcrV4IdKZbEyZjBMuTp12o= | |||||
| golang.org/x/sync v0.1.0/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= | |||||
| golang.org/x/sync v0.0.0-20210220032951-036812b2e83c/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= | |||||
| golang.org/x/sys v0.0.0-20190215142949-d0b11bdaac8a/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= | golang.org/x/sys v0.0.0-20190215142949-d0b11bdaac8a/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= | ||||
| golang.org/x/sys v0.0.0-20190412213103-97732733099d/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= | golang.org/x/sys v0.0.0-20190412213103-97732733099d/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= | ||||
| golang.org/x/sys v0.0.0-20200930185726-fdedc70b468f/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= | golang.org/x/sys v0.0.0-20200930185726-fdedc70b468f/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= | ||||
| golang.org/x/sys v0.0.0-20220704084225-05e143d24a9e/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= | |||||
| golang.org/x/sys v0.0.0-20201119102817-f84b799fce68/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= | |||||
| golang.org/x/sys v0.0.0-20210330210617-4fbd30eecc44/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= | |||||
| golang.org/x/sys v0.0.0-20210510120138-977fb7262007/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= | |||||
| golang.org/x/sys v0.0.0-20220715151400-c0bba94af5f8/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= | golang.org/x/sys v0.0.0-20220715151400-c0bba94af5f8/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= | ||||
| golang.org/x/sys v0.6.0 h1:MVltZSvRTcU2ljQOhs94SXPftV6DCNnZViHeQps87pQ= | golang.org/x/sys v0.6.0 h1:MVltZSvRTcU2ljQOhs94SXPftV6DCNnZViHeQps87pQ= | ||||
| golang.org/x/sys v0.6.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= | golang.org/x/sys v0.6.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= | ||||
| golang.org/x/term v0.0.0-20201126162022-7de9c90e9dd1/go.mod h1:bj7SfCRtBDWHUb9snDiAeCFNEtKQo2Wmx5Cou7ajbmo= | |||||
| golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= | golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= | ||||
| golang.org/x/text v0.3.3/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ= | golang.org/x/text v0.3.3/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ= | ||||
| golang.org/x/text v0.8.0 h1:57P1ETyNKtuIjB4SRd15iJxuhj8Gc416Y78H3qgMh68= | golang.org/x/text v0.8.0 h1:57P1ETyNKtuIjB4SRd15iJxuhj8Gc416Y78H3qgMh68= | ||||
| golang.org/x/text v0.8.0/go.mod h1:e1OnstbJyHTd6l/uOt8jFFHp6TRDWZR/bV3emEE/zU8= | golang.org/x/text v0.8.0/go.mod h1:e1OnstbJyHTd6l/uOt8jFFHp6TRDWZR/bV3emEE/zU8= | ||||
| golang.org/x/tools v0.0.0-20180917221912-90fa682c2a6e/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= | golang.org/x/tools v0.0.0-20180917221912-90fa682c2a6e/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= | ||||
| golang.org/x/tools v0.0.0-20190311212946-11955173bddd/go.mod h1:LCzVGOaR6xXOjkQ3onu1FJEFr0SW1gC7cKk1uF8kGRs= | |||||
| golang.org/x/tools v0.0.0-20191119224855-298f0cb1881e/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= | golang.org/x/tools v0.0.0-20191119224855-298f0cb1881e/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= | ||||
| golang.org/x/tools v0.0.0-20200619180055-7c47624df98f/go.mod h1:EkVYQZoAsY45+roYkvgYkIh4xh/qjgUK9TdY2XT94GE= | golang.org/x/tools v0.0.0-20200619180055-7c47624df98f/go.mod h1:EkVYQZoAsY45+roYkvgYkIh4xh/qjgUK9TdY2XT94GE= | ||||
| golang.org/x/tools v0.0.0-20210106214847-113979e3529a/go.mod h1:emZCQorbCU4vsT4fOWvOPXz4eW1wZW4PmDk9uLelYpA= | golang.org/x/tools v0.0.0-20210106214847-113979e3529a/go.mod h1:emZCQorbCU4vsT4fOWvOPXz4eW1wZW4PmDk9uLelYpA= | ||||
| golang.org/x/tools v0.1.5/go.mod h1:o0xws9oXOQQZyjljx8fwUC0k7L1pTE6eaCbjGeHmOkk= | |||||
| golang.org/x/xerrors v0.0.0-20190717185122-a985d3407aa7/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= | golang.org/x/xerrors v0.0.0-20190717185122-a985d3407aa7/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= | ||||
| golang.org/x/xerrors v0.0.0-20191011141410-1b5146add898/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= | golang.org/x/xerrors v0.0.0-20191011141410-1b5146add898/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= | ||||
| golang.org/x/xerrors v0.0.0-20191204190536-9bdfabe68543/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= | golang.org/x/xerrors v0.0.0-20191204190536-9bdfabe68543/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= | ||||
| @@ -177,9 +146,8 @@ google.golang.org/protobuf v1.26.0/go.mod h1:9q0QmTI4eRPtz6boOQmLYwt+qCgq0jsYwAQ | |||||
| google.golang.org/protobuf v1.30.0 h1:kPPoIgf3TsEvrm0PFe15JQ+570QVxYzEvvHqChK+cng= | google.golang.org/protobuf v1.30.0 h1:kPPoIgf3TsEvrm0PFe15JQ+570QVxYzEvvHqChK+cng= | ||||
| google.golang.org/protobuf v1.30.0/go.mod h1:HV8QOd/L58Z+nl8r43ehVNZIU/HEI6OcFqwMG9pJV4I= | google.golang.org/protobuf v1.30.0/go.mod h1:HV8QOd/L58Z+nl8r43ehVNZIU/HEI6OcFqwMG9pJV4I= | ||||
| gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= | 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= | |||||
| gopkg.in/yaml.v2 v2.4.0 h1:D8xgwECY7CYvx+Y2n4sBz93Jn9JRvxdiyyo8CTfuKaY= | gopkg.in/yaml.v2 v2.4.0 h1:D8xgwECY7CYvx+Y2n4sBz93Jn9JRvxdiyyo8CTfuKaY= | ||||
| gopkg.in/yaml.v3 v3.0.0-20200313102051-9f266ea9e77c/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM= | gopkg.in/yaml.v3 v3.0.0-20200313102051-9f266ea9e77c/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM= | ||||
| gopkg.in/yaml.v3 v3.0.1 h1:fxVm/GzAzEWqLHuvctI91KS9hhNmmWOoWu0XTYJS7CA= | gopkg.in/yaml.v3 v3.0.1 h1:fxVm/GzAzEWqLHuvctI91KS9hhNmmWOoWu0XTYJS7CA= | ||||
| gopkg.in/yaml.v3 v3.0.1/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM= | gopkg.in/yaml.v3 v3.0.1/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM= | ||||
| lukechampine.com/blake3 v1.1.7 h1:GgRMhmdsuK8+ii6UZFDL8Nb+VyMwadAgcJyfYHxG6n0= | |||||
| lukechampine.com/blake3 v1.1.7/go.mod h1:tkKEOtDkNtklkXtLNEOGNq5tcV90tJiA1vAA12R78LA= | |||||
| @@ -7,7 +7,7 @@ import ( | |||||
| "strconv" | "strconv" | ||||
| "time" | "time" | ||||
| cdssdk "gitlink.org.cn/cloudream/common/sdks/storage" | |||||
| "gitlink.org.cn/cloudream/common/sdks/storage/cdsapi" | |||||
| ) | ) | ||||
| func main() { | func main() { | ||||
| @@ -16,7 +16,7 @@ func main() { | |||||
| } | } | ||||
| func test1(url string) { | func test1(url string) { | ||||
| cli := cdssdk.NewClient(&cdssdk.Config{ | |||||
| cli := cdsapi.NewClient(&cdsapi.Config{ | |||||
| URL: url, | URL: url, | ||||
| }) | }) | ||||
| @@ -39,7 +39,7 @@ func test1(url string) { | |||||
| } | } | ||||
| startTime := time.Now() | startTime := time.Now() | ||||
| obj, err := cli.Object().Download(cdssdk.ObjectDownload{ | |||||
| obj, err := cli.Object().Download(cdsapi.ObjectDownload{ | |||||
| UserID: 1, | UserID: 1, | ||||
| ObjectID: 470790, | ObjectID: 470790, | ||||
| Offset: 0, | Offset: 0, | ||||
| @@ -67,11 +67,11 @@ func test1(url string) { | |||||
| } | } | ||||
| func test2(url string) { | func test2(url string) { | ||||
| cli := cdssdk.NewClient(&cdssdk.Config{ | |||||
| cli := cdsapi.NewClient(&cdsapi.Config{ | |||||
| URL: url, | URL: url, | ||||
| }) | }) | ||||
| obj, err := cli.Object().Download(cdssdk.ObjectDownload{ | |||||
| obj, err := cli.Object().Download(cdsapi.ObjectDownload{ | |||||
| UserID: 1, | UserID: 1, | ||||
| ObjectID: 27151, | ObjectID: 27151, | ||||
| Offset: 0, | Offset: 0, | ||||
| @@ -92,4 +92,3 @@ func test2(url string) { | |||||
| io.Copy(f, obj.File) | io.Copy(f, obj.File) | ||||
| } | } | ||||
| @@ -0,0 +1,52 @@ | |||||
| package exec | |||||
| import ( | |||||
| "context" | |||||
| "fmt" | |||||
| "gitlink.org.cn/cloudream/common/utils/reflect2" | |||||
| ) | |||||
| var ErrValueNotFound = fmt.Errorf("value not found") | |||||
| type ExecContext struct { | |||||
| Context context.Context | |||||
| Values map[any]any | |||||
| } | |||||
| func NewExecContext() *ExecContext { | |||||
| return NewWithContext(context.Background()) | |||||
| } | |||||
| func NewWithContext(ctx context.Context) *ExecContext { | |||||
| return &ExecContext{Context: ctx, Values: make(map[any]any)} | |||||
| } | |||||
| // error只会是ErrValueNotFound | |||||
| func (c *ExecContext) Value(key any) (any, error) { | |||||
| value, ok := c.Values[key] | |||||
| if !ok { | |||||
| return nil, ErrValueNotFound | |||||
| } | |||||
| return value, nil | |||||
| } | |||||
| func (c *ExecContext) SetValue(key any, value any) { | |||||
| c.Values[key] = value | |||||
| } | |||||
| func ValueByType[T any](ctx *ExecContext) (T, error) { | |||||
| var ret T | |||||
| value, err := ctx.Value(reflect2.TypeOf[T]()) | |||||
| if err != nil { | |||||
| return ret, err | |||||
| } | |||||
| ret, ok := value.(T) | |||||
| if !ok { | |||||
| return ret, fmt.Errorf("value is %T, not %T", value, ret) | |||||
| } | |||||
| return ret, nil | |||||
| } | |||||
| @@ -14,7 +14,7 @@ type Driver struct { | |||||
| planID PlanID | planID PlanID | ||||
| planBlder *PlanBuilder | planBlder *PlanBuilder | ||||
| callback *future.SetValueFuture[map[string]any] | callback *future.SetValueFuture[map[string]any] | ||||
| ctx context.Context | |||||
| ctx *ExecContext | |||||
| cancel context.CancelFunc | cancel context.CancelFunc | ||||
| driverExec *Executor | driverExec *Executor | ||||
| } | } | ||||
| @@ -32,7 +32,7 @@ func (e *Driver) BeginWriteRanged(str io.ReadCloser, handle *DriverWriteStream) | |||||
| } | } | ||||
| func (e *Driver) BeginRead(handle *DriverReadStream) (io.ReadCloser, error) { | func (e *Driver) BeginRead(handle *DriverReadStream) (io.ReadCloser, error) { | ||||
| err := e.driverExec.BindVars(e.ctx, handle.Var) | |||||
| err := e.driverExec.BindVars(e.ctx.Context, handle.Var) | |||||
| if err != nil { | if err != nil { | ||||
| return nil, fmt.Errorf("bind vars: %w", err) | return nil, fmt.Errorf("bind vars: %w", err) | ||||
| } | } | ||||
| @@ -74,7 +74,7 @@ func (e *Driver) execute() { | |||||
| } | } | ||||
| defer cli.Close() | defer cli.Close() | ||||
| err = cli.ExecutePlan(e.ctx, plan) | |||||
| err = cli.ExecutePlan(e.ctx.Context, plan) | |||||
| if err != nil { | if err != nil { | ||||
| e.stopWith(fmt.Errorf("execute plan at worker %v: %w", p.Worker, err)) | e.stopWith(fmt.Errorf("execute plan at worker %v: %w", p.Worker, err)) | ||||
| return | return | ||||
| @@ -1,8 +1,6 @@ | |||||
| package exec | package exec | ||||
| import ( | import ( | ||||
| "context" | |||||
| "gitlink.org.cn/cloudream/common/pkgs/types" | "gitlink.org.cn/cloudream/common/pkgs/types" | ||||
| "gitlink.org.cn/cloudream/common/utils/reflect2" | "gitlink.org.cn/cloudream/common/utils/reflect2" | ||||
| "gitlink.org.cn/cloudream/common/utils/serder" | "gitlink.org.cn/cloudream/common/utils/serder" | ||||
| @@ -18,7 +16,7 @@ type Plan struct { | |||||
| var opUnion = serder.UseTypeUnionExternallyTagged(types.Ref(types.NewTypeUnion[Op]())) | var opUnion = serder.UseTypeUnionExternallyTagged(types.Ref(types.NewTypeUnion[Op]())) | ||||
| type Op interface { | type Op interface { | ||||
| Execute(ctx context.Context, e *Executor) error | |||||
| Execute(ctx *ExecContext, e *Executor) error | |||||
| String() string | String() string | ||||
| } | } | ||||
| @@ -38,12 +38,14 @@ func (s *Executor) Plan() *Plan { | |||||
| return &s.plan | return &s.plan | ||||
| } | } | ||||
| func (s *Executor) Run(ctx context.Context) (map[string]any, error) { | |||||
| ctx2, cancel := context.WithCancel(ctx) | |||||
| func (s *Executor) Run(ctx *ExecContext) (map[string]any, error) { | |||||
| c, cancel := context.WithCancel(ctx.Context) | |||||
| ctx.Context = c | |||||
| defer cancel() | defer cancel() | ||||
| err := sync2.ParallelDo(s.plan.Ops, func(o Op, idx int) error { | err := sync2.ParallelDo(s.plan.Ops, func(o Op, idx int) error { | ||||
| err := o.Execute(ctx2, s) | |||||
| err := o.Execute(ctx, s) | |||||
| s.lock.Lock() | s.lock.Lock() | ||||
| defer s.lock.Unlock() | defer s.lock.Unlock() | ||||
| @@ -76,8 +76,10 @@ func (b *PlanBuilder) NewSignalVar() *SignalVar { | |||||
| return v | return v | ||||
| } | } | ||||
| func (b *PlanBuilder) Execute() *Driver { | |||||
| ctx, cancel := context.WithCancel(context.Background()) | |||||
| func (b *PlanBuilder) Execute(ctx *ExecContext) *Driver { | |||||
| c, cancel := context.WithCancel(ctx.Context) | |||||
| ctx.Context = c | |||||
| planID := genRandomPlanID() | planID := genRandomPlanID() | ||||
| execPlan := Plan{ | execPlan := Plan{ | ||||
| @@ -1,7 +1,6 @@ | |||||
| package ops | package ops | ||||
| import ( | import ( | ||||
| "context" | |||||
| "fmt" | "fmt" | ||||
| "io" | "io" | ||||
| @@ -17,8 +16,8 @@ type DropStream struct { | |||||
| Input *exec.StreamVar `json:"input"` | Input *exec.StreamVar `json:"input"` | ||||
| } | } | ||||
| func (o *DropStream) Execute(ctx context.Context, e *exec.Executor) error { | |||||
| err := e.BindVars(ctx, o.Input) | |||||
| func (o *DropStream) Execute(ctx *exec.ExecContext, e *exec.Executor) error { | |||||
| err := e.BindVars(ctx.Context, o.Input) | |||||
| if err != nil { | if err != nil { | ||||
| return err | return err | ||||
| } | } | ||||
| @@ -1,7 +1,6 @@ | |||||
| package ops | package ops | ||||
| import ( | import ( | ||||
| "context" | |||||
| "fmt" | "fmt" | ||||
| "io" | "io" | ||||
| @@ -24,8 +23,8 @@ type SendStream struct { | |||||
| Worker exec.WorkerInfo `json:"worker"` | Worker exec.WorkerInfo `json:"worker"` | ||||
| } | } | ||||
| func (o *SendStream) Execute(ctx context.Context, e *exec.Executor) error { | |||||
| err := e.BindVars(ctx, o.Input) | |||||
| func (o *SendStream) Execute(ctx *exec.ExecContext, e *exec.Executor) error { | |||||
| err := e.BindVars(ctx.Context, o.Input) | |||||
| if err != nil { | if err != nil { | ||||
| return err | return err | ||||
| } | } | ||||
| @@ -38,7 +37,7 @@ func (o *SendStream) Execute(ctx context.Context, e *exec.Executor) error { | |||||
| defer cli.Close() | defer cli.Close() | ||||
| // 发送后流的ID不同 | // 发送后流的ID不同 | ||||
| err = cli.SendStream(ctx, e.Plan().ID, o.Send, o.Input.Stream) | |||||
| err = cli.SendStream(ctx.Context, e.Plan().ID, o.Send, o.Input.Stream) | |||||
| if err != nil { | if err != nil { | ||||
| return fmt.Errorf("sending stream: %w", err) | return fmt.Errorf("sending stream: %w", err) | ||||
| } | } | ||||
| @@ -57,14 +56,14 @@ type GetStream struct { | |||||
| Worker exec.WorkerInfo `json:"worker"` | Worker exec.WorkerInfo `json:"worker"` | ||||
| } | } | ||||
| func (o *GetStream) Execute(ctx context.Context, e *exec.Executor) error { | |||||
| func (o *GetStream) Execute(ctx *exec.ExecContext, e *exec.Executor) error { | |||||
| cli, err := o.Worker.NewClient() | cli, err := o.Worker.NewClient() | ||||
| if err != nil { | if err != nil { | ||||
| return fmt.Errorf("new worker %v client: %w", o.Worker, err) | return fmt.Errorf("new worker %v client: %w", o.Worker, err) | ||||
| } | } | ||||
| defer cli.Close() | defer cli.Close() | ||||
| str, err := cli.GetStream(ctx, e.Plan().ID, o.Target, o.Signal) | |||||
| str, err := cli.GetStream(ctx.Context, e.Plan().ID, o.Target, o.Signal) | |||||
| if err != nil { | if err != nil { | ||||
| return fmt.Errorf("getting stream: %w", err) | return fmt.Errorf("getting stream: %w", err) | ||||
| } | } | ||||
| @@ -76,7 +75,7 @@ func (o *GetStream) Execute(ctx context.Context, e *exec.Executor) error { | |||||
| }) | }) | ||||
| e.PutVars(o.Output) | e.PutVars(o.Output) | ||||
| return fut.Wait(ctx) | |||||
| return fut.Wait(ctx.Context) | |||||
| } | } | ||||
| func (o *GetStream) String() string { | func (o *GetStream) String() string { | ||||
| @@ -89,8 +88,8 @@ type SendVar struct { | |||||
| Worker exec.WorkerInfo `json:"worker"` | Worker exec.WorkerInfo `json:"worker"` | ||||
| } | } | ||||
| func (o *SendVar) Execute(ctx context.Context, e *exec.Executor) error { | |||||
| err := e.BindVars(ctx, o.Input) | |||||
| func (o *SendVar) Execute(ctx *exec.ExecContext, e *exec.Executor) error { | |||||
| err := e.BindVars(ctx.Context, o.Input) | |||||
| if err != nil { | if err != nil { | ||||
| return err | return err | ||||
| } | } | ||||
| @@ -102,7 +101,7 @@ func (o *SendVar) Execute(ctx context.Context, e *exec.Executor) error { | |||||
| defer cli.Close() | defer cli.Close() | ||||
| exec.AssignVar(o.Input, o.Send) | exec.AssignVar(o.Input, o.Send) | ||||
| err = cli.SendVar(ctx, e.Plan().ID, o.Send) | |||||
| err = cli.SendVar(ctx.Context, e.Plan().ID, o.Send) | |||||
| if err != nil { | if err != nil { | ||||
| return fmt.Errorf("sending var: %w", err) | return fmt.Errorf("sending var: %w", err) | ||||
| } | } | ||||
| @@ -121,14 +120,14 @@ type GetVar struct { | |||||
| Worker exec.WorkerInfo `json:"worker"` | Worker exec.WorkerInfo `json:"worker"` | ||||
| } | } | ||||
| func (o *GetVar) Execute(ctx context.Context, e *exec.Executor) error { | |||||
| func (o *GetVar) Execute(ctx *exec.ExecContext, e *exec.Executor) error { | |||||
| cli, err := o.Worker.NewClient() | cli, err := o.Worker.NewClient() | ||||
| if err != nil { | if err != nil { | ||||
| return fmt.Errorf("new worker %v client: %w", o.Worker, err) | return fmt.Errorf("new worker %v client: %w", o.Worker, err) | ||||
| } | } | ||||
| defer cli.Close() | defer cli.Close() | ||||
| err = cli.GetVar(ctx, e.Plan().ID, o.Target, o.Signal) | |||||
| err = cli.GetVar(ctx.Context, e.Plan().ID, o.Target, o.Signal) | |||||
| if err != nil { | if err != nil { | ||||
| return fmt.Errorf("getting var: %w", err) | return fmt.Errorf("getting var: %w", err) | ||||
| } | } | ||||
| @@ -1,7 +1,6 @@ | |||||
| package ops | package ops | ||||
| import ( | import ( | ||||
| "context" | |||||
| "fmt" | "fmt" | ||||
| "gitlink.org.cn/cloudream/common/pkgs/ioswitch/dag" | "gitlink.org.cn/cloudream/common/pkgs/ioswitch/dag" | ||||
| @@ -13,8 +12,8 @@ type Store struct { | |||||
| Key string | Key string | ||||
| } | } | ||||
| func (o *Store) Execute(ctx context.Context, e *exec.Executor) error { | |||||
| err := e.BindVars(ctx, o.Var) | |||||
| func (o *Store) Execute(ctx *exec.ExecContext, e *exec.Executor) error { | |||||
| err := e.BindVars(ctx.Context, o.Var) | |||||
| if err != nil { | if err != nil { | ||||
| return err | return err | ||||
| } | } | ||||
| @@ -1,7 +1,6 @@ | |||||
| package ops | package ops | ||||
| import ( | import ( | ||||
| "context" | |||||
| "fmt" | "fmt" | ||||
| "io" | "io" | ||||
| @@ -25,8 +24,8 @@ type OnStreamBegin struct { | |||||
| Signal *exec.SignalVar `json:"signal"` | Signal *exec.SignalVar `json:"signal"` | ||||
| } | } | ||||
| func (o *OnStreamBegin) Execute(ctx context.Context, e *exec.Executor) error { | |||||
| err := e.BindVars(ctx, o.Raw) | |||||
| func (o *OnStreamBegin) Execute(ctx *exec.ExecContext, e *exec.Executor) error { | |||||
| err := e.BindVars(ctx.Context, o.Raw) | |||||
| if err != nil { | if err != nil { | ||||
| return err | return err | ||||
| } | } | ||||
| @@ -67,8 +66,8 @@ func (o *onStreamEnd) Close() error { | |||||
| return o.inner.Close() | return o.inner.Close() | ||||
| } | } | ||||
| func (o *OnStreamEnd) Execute(ctx context.Context, e *exec.Executor) error { | |||||
| err := e.BindVars(ctx, o.Raw) | |||||
| func (o *OnStreamEnd) Execute(ctx *exec.ExecContext, e *exec.Executor) error { | |||||
| err := e.BindVars(ctx.Context, o.Raw) | |||||
| if err != nil { | if err != nil { | ||||
| return err | return err | ||||
| } | } | ||||
| @@ -81,7 +80,7 @@ func (o *OnStreamEnd) Execute(ctx context.Context, e *exec.Executor) error { | |||||
| } | } | ||||
| e.PutVars(o.New) | e.PutVars(o.New) | ||||
| err = cb.Wait(ctx) | |||||
| err = cb.Wait(ctx.Context) | |||||
| if err != nil { | if err != nil { | ||||
| return err | return err | ||||
| } | } | ||||
| @@ -100,13 +99,13 @@ type HoldUntil struct { | |||||
| Emits []exec.Var `json:"emits"` | Emits []exec.Var `json:"emits"` | ||||
| } | } | ||||
| func (w *HoldUntil) Execute(ctx context.Context, e *exec.Executor) error { | |||||
| err := e.BindVars(ctx, w.Holds...) | |||||
| func (w *HoldUntil) Execute(ctx *exec.ExecContext, e *exec.Executor) error { | |||||
| err := e.BindVars(ctx.Context, w.Holds...) | |||||
| if err != nil { | if err != nil { | ||||
| return err | return err | ||||
| } | } | ||||
| err = exec.BindArrayVars(e, ctx, w.Waits) | |||||
| err = exec.BindArrayVars(e, ctx.Context, w.Waits) | |||||
| if err != nil { | if err != nil { | ||||
| return err | return err | ||||
| } | } | ||||
| @@ -131,8 +130,8 @@ type HangUntil struct { | |||||
| Op exec.Op `json:"op"` | Op exec.Op `json:"op"` | ||||
| } | } | ||||
| func (h *HangUntil) Execute(ctx context.Context, e *exec.Executor) error { | |||||
| err := exec.BindArrayVars(e, ctx, h.Waits) | |||||
| func (h *HangUntil) Execute(ctx *exec.ExecContext, e *exec.Executor) error { | |||||
| err := exec.BindArrayVars(e, ctx.Context, h.Waits) | |||||
| if err != nil { | if err != nil { | ||||
| return err | return err | ||||
| } | } | ||||
| @@ -149,8 +148,8 @@ type Broadcast struct { | |||||
| Targets []*exec.SignalVar `json:"targets"` | Targets []*exec.SignalVar `json:"targets"` | ||||
| } | } | ||||
| func (b *Broadcast) Execute(ctx context.Context, e *exec.Executor) error { | |||||
| err := e.BindVars(ctx, b.Source) | |||||
| func (b *Broadcast) Execute(ctx *exec.ExecContext, e *exec.Executor) error { | |||||
| err := e.BindVars(ctx.Context, b.Source) | |||||
| if err != nil { | if err != nil { | ||||
| return err | return err | ||||
| } | } | ||||
| @@ -1,8 +1,6 @@ | |||||
| package ops | package ops | ||||
| import ( | import ( | ||||
| "context" | |||||
| "gitlink.org.cn/cloudream/common/pkgs/ioswitch/exec" | "gitlink.org.cn/cloudream/common/pkgs/ioswitch/exec" | ||||
| ) | ) | ||||
| @@ -14,7 +12,7 @@ type ConstVar struct { | |||||
| Var *exec.StringVar `json:"var"` | Var *exec.StringVar `json:"var"` | ||||
| } | } | ||||
| func (o *ConstVar) Execute(ctx context.Context, e *exec.Executor) error { | |||||
| func (o *ConstVar) Execute(ctx *exec.ExecContext, e *exec.Executor) error { | |||||
| e.PutVars(o.Var) | e.PutVars(o.Var) | ||||
| return nil | return nil | ||||
| } | } | ||||
| @@ -1,5 +0,0 @@ | |||||
| package ipfs | |||||
| type Config struct { | |||||
| Address string `json:"address"` | |||||
| } | |||||
| @@ -1,129 +0,0 @@ | |||||
| package ipfs | |||||
| import ( | |||||
| "context" | |||||
| "fmt" | |||||
| "io" | |||||
| shell "github.com/ipfs/go-ipfs-api" | |||||
| "gitlink.org.cn/cloudream/common/utils/io2" | |||||
| ) | |||||
| type ReadOption struct { | |||||
| Offset int64 `json:"offset,string"` // 从指定位置开始读取,为-1时代表不设置,从头开始读 | |||||
| Length int64 `json:"length,string"` // 读取长度,为-1时代表不设置,读取Offset之后的所有内容 | |||||
| } | |||||
| type Client struct { | |||||
| shell *shell.Shell | |||||
| } | |||||
| func NewClient(cfg *Config) (*Client, error) { | |||||
| sh := shell.NewShell(cfg.Address) | |||||
| // 检测连通性 | |||||
| if !sh.IsUp() { | |||||
| return nil, fmt.Errorf("cannot connect to %s", cfg.Address) | |||||
| } | |||||
| return &Client{ | |||||
| shell: sh, | |||||
| }, nil | |||||
| } | |||||
| func (fs *Client) IsUp() bool { | |||||
| return fs.shell.IsUp() | |||||
| } | |||||
| func (fs *Client) CreateFileStream() (io2.PromiseWriteCloser[string], error) { | |||||
| pr, pw := io.Pipe() | |||||
| ipfsWriter := ipfsWriter{ | |||||
| writer: pw, | |||||
| finished: make(chan any, 1), | |||||
| } | |||||
| go func() { | |||||
| hash, err := fs.shell.Add(pr) | |||||
| ipfsWriter.finishErr = err | |||||
| ipfsWriter.fileHash = hash | |||||
| close(ipfsWriter.finished) | |||||
| pr.CloseWithError(err) | |||||
| }() | |||||
| return &ipfsWriter, nil | |||||
| } | |||||
| func (fs *Client) CreateFile(file io.Reader) (string, error) { | |||||
| return fs.shell.Add(file) | |||||
| } | |||||
| func (fs *Client) OpenRead(hash string, opts ...ReadOption) (io.ReadCloser, error) { | |||||
| opt := ReadOption{ | |||||
| Offset: 0, | |||||
| Length: -1, | |||||
| } | |||||
| if len(opts) > 0 { | |||||
| opt = opts[0] | |||||
| } | |||||
| req := fs.shell.Request("cat", hash) | |||||
| if opt.Offset >= 0 { | |||||
| req.Option("offset", opt.Offset) | |||||
| } | |||||
| if opt.Length >= 0 { | |||||
| req.Option("length", opt.Length) | |||||
| } | |||||
| resp, err := req.Send(context.Background()) | |||||
| if err != nil { | |||||
| return nil, err | |||||
| } | |||||
| if resp.Error != nil { | |||||
| return nil, resp.Error | |||||
| } | |||||
| return resp.Output, nil | |||||
| } | |||||
| func (fs *Client) Pin(hash string) error { | |||||
| return fs.shell.Pin(hash) | |||||
| } | |||||
| func (fs *Client) Unpin(hash string) error { | |||||
| return fs.shell.Unpin(hash) | |||||
| } | |||||
| func (fs *Client) GetPinnedFiles() (map[string]shell.PinInfo, error) { | |||||
| return fs.shell.PinsOfType(context.Background(), shell.RecursivePin) | |||||
| } | |||||
| func (fs *Client) List(hash string) ([]*shell.LsLink, error) { | |||||
| return fs.shell.List(hash) | |||||
| } | |||||
| type ipfsWriter struct { | |||||
| writer *io.PipeWriter | |||||
| finished chan any | |||||
| finishErr error | |||||
| fileHash string | |||||
| } | |||||
| func (p *ipfsWriter) Write(data []byte) (n int, err error) { | |||||
| return p.writer.Write(data) | |||||
| } | |||||
| // 设置一个error中断写入 | |||||
| func (w *ipfsWriter) Abort(err error) { | |||||
| w.writer.CloseWithError(err) | |||||
| } | |||||
| // Finish 结束写入,并获得返回值(文件哈希值) | |||||
| func (w *ipfsWriter) Finish() (string, error) { | |||||
| w.writer.CloseWithError(io.EOF) | |||||
| <-w.finished | |||||
| return w.fileHash, w.finishErr | |||||
| } | |||||
| @@ -1,34 +0,0 @@ | |||||
| package ipfs | |||||
| type PoolClient struct { | |||||
| *Client | |||||
| owner *Pool | |||||
| } | |||||
| func (c *PoolClient) Close() { | |||||
| c.owner.Release(c) | |||||
| } | |||||
| type Pool struct { | |||||
| cfg *Config | |||||
| } | |||||
| func NewPool(cfg *Config) *Pool { | |||||
| return &Pool{ | |||||
| cfg: cfg, | |||||
| } | |||||
| } | |||||
| func (p *Pool) Acquire() (*PoolClient, error) { | |||||
| cli, err := NewClient(p.cfg) | |||||
| if err != nil { | |||||
| return nil, err | |||||
| } | |||||
| return &PoolClient{ | |||||
| Client: cli, | |||||
| owner: p, | |||||
| }, nil | |||||
| } | |||||
| func (p *Pool) Release(cli *PoolClient) { | |||||
| } | |||||
| @@ -1,9 +1,10 @@ | |||||
| package cdssdk | |||||
| package cdsapi | |||||
| import ( | import ( | ||||
| "net/url" | "net/url" | ||||
| "gitlink.org.cn/cloudream/common/consts/errorcode" | "gitlink.org.cn/cloudream/common/consts/errorcode" | ||||
| cdssdk "gitlink.org.cn/cloudream/common/sdks/storage" | |||||
| "gitlink.org.cn/cloudream/common/utils/http2" | "gitlink.org.cn/cloudream/common/utils/http2" | ||||
| ) | ) | ||||
| @@ -18,11 +19,11 @@ func (c *Client) Bucket() *BucketService { | |||||
| const BucketGetByNamePath = "/bucket/getByName" | const BucketGetByNamePath = "/bucket/getByName" | ||||
| type BucketGetByName struct { | type BucketGetByName struct { | ||||
| UserID UserID `json:"userID" form:"userID" binding:"required"` | |||||
| Name string `json:"name" form:"name" binding:"required"` | |||||
| UserID cdssdk.UserID `json:"userID" form:"userID" binding:"required"` | |||||
| Name string `json:"name" form:"name" binding:"required"` | |||||
| } | } | ||||
| type BucketGetByNameResp struct { | type BucketGetByNameResp struct { | ||||
| Bucket Bucket `json:"bucket"` | |||||
| Bucket cdssdk.Bucket `json:"bucket"` | |||||
| } | } | ||||
| func (c *BucketService) GetByName(req BucketGetByName) (*BucketGetByNameResp, error) { | func (c *BucketService) GetByName(req BucketGetByName) (*BucketGetByNameResp, error) { | ||||
| @@ -53,12 +54,12 @@ func (c *BucketService) GetByName(req BucketGetByName) (*BucketGetByNameResp, er | |||||
| const BucketCreatePath = "/bucket/create" | const BucketCreatePath = "/bucket/create" | ||||
| type BucketCreate struct { | type BucketCreate struct { | ||||
| UserID UserID `json:"userID" binding:"required"` | |||||
| Name string `json:"name" binding:"required"` | |||||
| UserID cdssdk.UserID `json:"userID" binding:"required"` | |||||
| Name string `json:"name" binding:"required"` | |||||
| } | } | ||||
| type BucketCreateResp struct { | type BucketCreateResp struct { | ||||
| Bucket Bucket `json:"bucket"` | |||||
| Bucket cdssdk.Bucket `json:"bucket"` | |||||
| } | } | ||||
| func (c *BucketService) Create(req BucketCreate) (*BucketCreateResp, error) { | func (c *BucketService) Create(req BucketCreate) (*BucketCreateResp, error) { | ||||
| @@ -89,8 +90,8 @@ func (c *BucketService) Create(req BucketCreate) (*BucketCreateResp, error) { | |||||
| const BucketDeletePath = "/bucket/delete" | const BucketDeletePath = "/bucket/delete" | ||||
| type BucketDelete struct { | type BucketDelete struct { | ||||
| UserID UserID `json:"userID" binding:"required"` | |||||
| BucketID BucketID `json:"bucketID" binding:"required"` | |||||
| UserID cdssdk.UserID `json:"userID" binding:"required"` | |||||
| BucketID cdssdk.BucketID `json:"bucketID" binding:"required"` | |||||
| } | } | ||||
| type BucketDeleteResp struct{} | type BucketDeleteResp struct{} | ||||
| @@ -123,11 +124,11 @@ func (c *BucketService) Delete(req BucketDelete) error { | |||||
| const BucketListUserBucketsPath = "/bucket/listUserBuckets" | const BucketListUserBucketsPath = "/bucket/listUserBuckets" | ||||
| type BucketListUserBucketsReq struct { | type BucketListUserBucketsReq struct { | ||||
| UserID UserID `form:"userID" json:"userID" binding:"required"` | |||||
| UserID cdssdk.UserID `form:"userID" json:"userID" binding:"required"` | |||||
| } | } | ||||
| type BucketListUserBucketsResp struct { | type BucketListUserBucketsResp struct { | ||||
| Buckets []Bucket `json:"buckets"` | |||||
| Buckets []cdssdk.Bucket `json:"buckets"` | |||||
| } | } | ||||
| func (c *BucketService) ListUserBuckets(req BucketListUserBucketsReq) (*BucketListUserBucketsResp, error) { | func (c *BucketService) ListUserBuckets(req BucketListUserBucketsReq) (*BucketListUserBucketsResp, error) { | ||||
| @@ -1,18 +1,19 @@ | |||||
| package cdssdk | |||||
| package cdsapi | |||||
| import ( | import ( | ||||
| "net/url" | "net/url" | ||||
| "gitlink.org.cn/cloudream/common/consts/errorcode" | "gitlink.org.cn/cloudream/common/consts/errorcode" | ||||
| cdssdk "gitlink.org.cn/cloudream/common/sdks/storage" | |||||
| "gitlink.org.cn/cloudream/common/utils/http2" | "gitlink.org.cn/cloudream/common/utils/http2" | ||||
| ) | ) | ||||
| const CacheMovePackagePath = "/cache/movePackage" | const CacheMovePackagePath = "/cache/movePackage" | ||||
| type CacheMovePackageReq struct { | type CacheMovePackageReq struct { | ||||
| UserID UserID `json:"userID"` | |||||
| PackageID PackageID `json:"packageID"` | |||||
| NodeID NodeID `json:"nodeID"` | |||||
| UserID cdssdk.UserID `json:"userID"` | |||||
| PackageID cdssdk.PackageID `json:"packageID"` | |||||
| NodeID cdssdk.NodeID `json:"nodeID"` | |||||
| } | } | ||||
| type CacheMovePackageResp struct{} | type CacheMovePackageResp struct{} | ||||
| @@ -1,4 +1,4 @@ | |||||
| package cdssdk | |||||
| package cdsapi | |||||
| import ( | import ( | ||||
| "gitlink.org.cn/cloudream/common/sdks" | "gitlink.org.cn/cloudream/common/sdks" | ||||
| @@ -1,4 +1,4 @@ | |||||
| package cdssdk | |||||
| package cdsapi | |||||
| type Config struct { | type Config struct { | ||||
| URL string `json:"url"` | URL string `json:"url"` | ||||
| @@ -1,17 +1,18 @@ | |||||
| package cdssdk | |||||
| package cdsapi | |||||
| import ( | import ( | ||||
| "bytes" | "bytes" | ||||
| "fmt" | "fmt" | ||||
| "gitlink.org.cn/cloudream/common/consts/errorcode" | |||||
| "gitlink.org.cn/cloudream/common/pkgs/ioswitch/exec" | |||||
| "gitlink.org.cn/cloudream/common/utils/http2" | |||||
| "gitlink.org.cn/cloudream/common/utils/serder" | |||||
| "io" | "io" | ||||
| "mime/multipart" | "mime/multipart" | ||||
| "net/http" | "net/http" | ||||
| "net/url" | "net/url" | ||||
| "strings" | "strings" | ||||
| "gitlink.org.cn/cloudream/common/consts/errorcode" | |||||
| "gitlink.org.cn/cloudream/common/pkgs/ioswitch/exec" | |||||
| "gitlink.org.cn/cloudream/common/utils/http2" | |||||
| "gitlink.org.cn/cloudream/common/utils/serder" | |||||
| ) | ) | ||||
| const GetStreamPath = "/hubIO/getStream" | const GetStreamPath = "/hubIO/getStream" | ||||
| @@ -1,20 +1,21 @@ | |||||
| package cdssdk | |||||
| package cdsapi | |||||
| import ( | import ( | ||||
| "net/url" | "net/url" | ||||
| "gitlink.org.cn/cloudream/common/consts/errorcode" | "gitlink.org.cn/cloudream/common/consts/errorcode" | ||||
| cdssdk "gitlink.org.cn/cloudream/common/sdks/storage" | |||||
| "gitlink.org.cn/cloudream/common/utils/http2" | "gitlink.org.cn/cloudream/common/utils/http2" | ||||
| ) | ) | ||||
| var NodeGetNodesPath = "/node/getNodes" | var NodeGetNodesPath = "/node/getNodes" | ||||
| type NodeGetNodesReq struct { | type NodeGetNodesReq struct { | ||||
| NodeIDs []NodeID `json:"nodeIDs"` | |||||
| NodeIDs []cdssdk.NodeID `json:"nodeIDs"` | |||||
| } | } | ||||
| type NodeGetNodesResp struct { | type NodeGetNodesResp struct { | ||||
| Nodes []Node `json:"nodes"` | |||||
| Nodes []cdssdk.Node `json:"nodes"` | |||||
| } | } | ||||
| func (c *Client) NodeGetNodes(req NodeGetNodesReq) (*NodeGetNodesResp, error) { | func (c *Client) NodeGetNodes(req NodeGetNodesReq) (*NodeGetNodesResp, error) { | ||||
| @@ -1,4 +1,4 @@ | |||||
| package cdssdk | |||||
| package cdsapi | |||||
| import ( | import ( | ||||
| "fmt" | "fmt" | ||||
| @@ -10,6 +10,7 @@ import ( | |||||
| "gitlink.org.cn/cloudream/common/consts/errorcode" | "gitlink.org.cn/cloudream/common/consts/errorcode" | ||||
| "gitlink.org.cn/cloudream/common/pkgs/iterator" | "gitlink.org.cn/cloudream/common/pkgs/iterator" | ||||
| cdssdk "gitlink.org.cn/cloudream/common/sdks/storage" | |||||
| "gitlink.org.cn/cloudream/common/utils/http2" | "gitlink.org.cn/cloudream/common/utils/http2" | ||||
| "gitlink.org.cn/cloudream/common/utils/serder" | "gitlink.org.cn/cloudream/common/utils/serder" | ||||
| ) | ) | ||||
| @@ -32,9 +33,9 @@ type ObjectUpload struct { | |||||
| } | } | ||||
| type ObjectUploadInfo struct { | type ObjectUploadInfo struct { | ||||
| UserID UserID `json:"userID" binding:"required"` | |||||
| PackageID PackageID `json:"packageID" binding:"required"` | |||||
| NodeAffinity *NodeID `json:"nodeAffinity"` | |||||
| UserID cdssdk.UserID `json:"userID" binding:"required"` | |||||
| PackageID cdssdk.PackageID `json:"packageID" binding:"required"` | |||||
| NodeAffinity *cdssdk.NodeID `json:"nodeAffinity"` | |||||
| } | } | ||||
| type UploadingObject struct { | type UploadingObject struct { | ||||
| @@ -48,8 +49,8 @@ type ObjectUploadResp struct { | |||||
| Uploadeds []UploadedObject `json:"uploadeds"` | Uploadeds []UploadedObject `json:"uploadeds"` | ||||
| } | } | ||||
| type UploadedObject struct { | type UploadedObject struct { | ||||
| Object *Object `json:"object"` | |||||
| Error string `json:"error"` | |||||
| Object *cdssdk.Object `json:"object"` | |||||
| Error string `json:"error"` | |||||
| } | } | ||||
| func (c *ObjectService) Upload(req ObjectUpload) (*ObjectUploadResp, error) { | func (c *ObjectService) Upload(req ObjectUpload) (*ObjectUploadResp, error) { | ||||
| @@ -99,11 +100,11 @@ func (c *ObjectService) Upload(req ObjectUpload) (*ObjectUploadResp, error) { | |||||
| const ObjectDownloadPath = "/object/download" | const ObjectDownloadPath = "/object/download" | ||||
| type ObjectDownload struct { | type ObjectDownload struct { | ||||
| UserID UserID `form:"userID" json:"userID" binding:"required"` | |||||
| ObjectID ObjectID `form:"objectID" json:"objectID" binding:"required"` | |||||
| Offset int64 `form:"offset" json:"offset,omitempty"` | |||||
| Length *int64 `form:"length" json:"length,omitempty"` | |||||
| PartSize int64 `form:"partSize" json:"partSize,omitempty"` | |||||
| UserID cdssdk.UserID `form:"userID" json:"userID" binding:"required"` | |||||
| ObjectID cdssdk.ObjectID `form:"objectID" json:"objectID" binding:"required"` | |||||
| Offset int64 `form:"offset" json:"offset,omitempty"` | |||||
| Length *int64 `form:"length" json:"length,omitempty"` | |||||
| PartSize int64 `form:"partSize" json:"partSize,omitempty"` | |||||
| } | } | ||||
| type DownloadingObject struct { | type DownloadingObject struct { | ||||
| Path string | Path string | ||||
| @@ -148,21 +149,21 @@ func (c *ObjectService) Download(req ObjectDownload) (*DownloadingObject, error) | |||||
| const ObjectUpdateInfoPath = "/object/updateInfo" | const ObjectUpdateInfoPath = "/object/updateInfo" | ||||
| type UpdatingObject struct { | type UpdatingObject struct { | ||||
| ObjectID ObjectID `json:"objectID" binding:"required"` | |||||
| UpdateTime time.Time `json:"updateTime" binding:"required"` | |||||
| ObjectID cdssdk.ObjectID `json:"objectID" binding:"required"` | |||||
| UpdateTime time.Time `json:"updateTime" binding:"required"` | |||||
| } | } | ||||
| func (u *UpdatingObject) ApplyTo(obj *Object) { | |||||
| func (u *UpdatingObject) ApplyTo(obj *cdssdk.Object) { | |||||
| obj.UpdateTime = u.UpdateTime | obj.UpdateTime = u.UpdateTime | ||||
| } | } | ||||
| type ObjectUpdateInfo struct { | type ObjectUpdateInfo struct { | ||||
| UserID UserID `json:"userID" binding:"required"` | |||||
| UserID cdssdk.UserID `json:"userID" binding:"required"` | |||||
| Updatings []UpdatingObject `json:"updatings" binding:"required"` | Updatings []UpdatingObject `json:"updatings" binding:"required"` | ||||
| } | } | ||||
| type ObjectUpdateInfoResp struct { | type ObjectUpdateInfoResp struct { | ||||
| Successes []ObjectID `json:"successes"` | |||||
| Successes []cdssdk.ObjectID `json:"successes"` | |||||
| } | } | ||||
| func (c *ObjectService) UpdateInfo(req ObjectUpdateInfo) (*ObjectUpdateInfoResp, error) { | func (c *ObjectService) UpdateInfo(req ObjectUpdateInfo) (*ObjectUpdateInfoResp, error) { | ||||
| @@ -193,23 +194,23 @@ func (c *ObjectService) UpdateInfo(req ObjectUpdateInfo) (*ObjectUpdateInfoResp, | |||||
| const ObjectMovePath = "/object/move" | const ObjectMovePath = "/object/move" | ||||
| type MovingObject struct { | type MovingObject struct { | ||||
| ObjectID ObjectID `json:"objectID" binding:"required"` | |||||
| PackageID PackageID `json:"packageID" binding:"required"` | |||||
| Path string `json:"path" binding:"required"` | |||||
| ObjectID cdssdk.ObjectID `json:"objectID" binding:"required"` | |||||
| PackageID cdssdk.PackageID `json:"packageID" binding:"required"` | |||||
| Path string `json:"path" binding:"required"` | |||||
| } | } | ||||
| func (m *MovingObject) ApplyTo(obj *Object) { | |||||
| func (m *MovingObject) ApplyTo(obj *cdssdk.Object) { | |||||
| obj.PackageID = m.PackageID | obj.PackageID = m.PackageID | ||||
| obj.Path = m.Path | obj.Path = m.Path | ||||
| } | } | ||||
| type ObjectMove struct { | type ObjectMove struct { | ||||
| UserID UserID `json:"userID" binding:"required"` | |||||
| UserID cdssdk.UserID `json:"userID" binding:"required"` | |||||
| Movings []MovingObject `json:"movings" binding:"required"` | Movings []MovingObject `json:"movings" binding:"required"` | ||||
| } | } | ||||
| type ObjectMoveResp struct { | type ObjectMoveResp struct { | ||||
| Successes []ObjectID `json:"successes"` | |||||
| Successes []cdssdk.ObjectID `json:"successes"` | |||||
| } | } | ||||
| func (c *ObjectService) Move(req ObjectMove) (*ObjectMoveResp, error) { | func (c *ObjectService) Move(req ObjectMove) (*ObjectMoveResp, error) { | ||||
| @@ -240,8 +241,8 @@ func (c *ObjectService) Move(req ObjectMove) (*ObjectMoveResp, error) { | |||||
| const ObjectDeletePath = "/object/delete" | const ObjectDeletePath = "/object/delete" | ||||
| type ObjectDelete struct { | type ObjectDelete struct { | ||||
| UserID UserID `json:"userID" binding:"required"` | |||||
| ObjectIDs []ObjectID `json:"objectIDs" binding:"required"` | |||||
| UserID cdssdk.UserID `json:"userID" binding:"required"` | |||||
| ObjectIDs []cdssdk.ObjectID `json:"objectIDs" binding:"required"` | |||||
| } | } | ||||
| type ObjectDeleteResp struct{} | type ObjectDeleteResp struct{} | ||||
| @@ -274,11 +275,11 @@ func (c *ObjectService) Delete(req ObjectDelete) error { | |||||
| const ObjectGetPackageObjectsPath = "/object/getPackageObjects" | const ObjectGetPackageObjectsPath = "/object/getPackageObjects" | ||||
| type ObjectGetPackageObjects struct { | type ObjectGetPackageObjects struct { | ||||
| UserID UserID `form:"userID" json:"userID" binding:"required"` | |||||
| PackageID PackageID `form:"packageID" json:"packageID" binding:"required"` | |||||
| UserID cdssdk.UserID `form:"userID" json:"userID" binding:"required"` | |||||
| PackageID cdssdk.PackageID `form:"packageID" json:"packageID" binding:"required"` | |||||
| } | } | ||||
| type ObjectGetPackageObjectsResp struct { | type ObjectGetPackageObjectsResp struct { | ||||
| Objects []Object `json:"objects"` | |||||
| Objects []cdssdk.Object `json:"objects"` | |||||
| } | } | ||||
| func (c *ObjectService) GetPackageObjects(req ObjectGetPackageObjects) (*ObjectGetPackageObjectsResp, error) { | func (c *ObjectService) GetPackageObjects(req ObjectGetPackageObjects) (*ObjectGetPackageObjectsResp, error) { | ||||
| @@ -1,4 +1,4 @@ | |||||
| package cdssdk | |||||
| package cdsapi | |||||
| import ( | import ( | ||||
| "fmt" | "fmt" | ||||
| @@ -6,6 +6,7 @@ import ( | |||||
| "strings" | "strings" | ||||
| "gitlink.org.cn/cloudream/common/consts/errorcode" | "gitlink.org.cn/cloudream/common/consts/errorcode" | ||||
| cdssdk "gitlink.org.cn/cloudream/common/sdks/storage" | |||||
| "gitlink.org.cn/cloudream/common/utils/http2" | "gitlink.org.cn/cloudream/common/utils/http2" | ||||
| "gitlink.org.cn/cloudream/common/utils/serder" | "gitlink.org.cn/cloudream/common/utils/serder" | ||||
| ) | ) | ||||
| @@ -21,11 +22,11 @@ func (c *Client) Package() *PackageService { | |||||
| const PackageGetPath = "/package/get" | const PackageGetPath = "/package/get" | ||||
| type PackageGetReq struct { | type PackageGetReq struct { | ||||
| UserID UserID `form:"userID" json:"userID" binding:"required"` | |||||
| PackageID PackageID `form:"packageID" json:"packageID" binding:"required"` | |||||
| UserID cdssdk.UserID `form:"userID" json:"userID" binding:"required"` | |||||
| PackageID cdssdk.PackageID `form:"packageID" json:"packageID" binding:"required"` | |||||
| } | } | ||||
| type PackageGetResp struct { | type PackageGetResp struct { | ||||
| Package | |||||
| cdssdk.Package | |||||
| } | } | ||||
| func (c *PackageService) Get(req PackageGetReq) (*PackageGetResp, error) { | func (c *PackageService) Get(req PackageGetReq) (*PackageGetResp, error) { | ||||
| @@ -56,12 +57,12 @@ func (c *PackageService) Get(req PackageGetReq) (*PackageGetResp, error) { | |||||
| const PackageGetByNamePath = "/package/getByName" | const PackageGetByNamePath = "/package/getByName" | ||||
| type PackageGetByName struct { | type PackageGetByName struct { | ||||
| UserID UserID `form:"userID" json:"userID" binding:"required"` | |||||
| BucketName string `form:"bucketName" json:"bucketName" binding:"required"` | |||||
| PackageName string `form:"packageName" json:"packageName" binding:"required"` | |||||
| UserID cdssdk.UserID `form:"userID" json:"userID" binding:"required"` | |||||
| BucketName string `form:"bucketName" json:"bucketName" binding:"required"` | |||||
| PackageName string `form:"packageName" json:"packageName" binding:"required"` | |||||
| } | } | ||||
| type PackageGetByNameResp struct { | type PackageGetByNameResp struct { | ||||
| Package Package `json:"package"` | |||||
| Package cdssdk.Package `json:"package"` | |||||
| } | } | ||||
| func (c *PackageService) GetByName(req PackageGetByName) (*PackageGetByNameResp, error) { | func (c *PackageService) GetByName(req PackageGetByName) (*PackageGetByNameResp, error) { | ||||
| @@ -92,13 +93,13 @@ func (c *PackageService) GetByName(req PackageGetByName) (*PackageGetByNameResp, | |||||
| const PackageCreatePath = "/package/create" | const PackageCreatePath = "/package/create" | ||||
| type PackageCreate struct { | type PackageCreate struct { | ||||
| UserID UserID `json:"userID"` | |||||
| BucketID BucketID `json:"bucketID"` | |||||
| Name string `json:"name"` | |||||
| UserID cdssdk.UserID `json:"userID"` | |||||
| BucketID cdssdk.BucketID `json:"bucketID"` | |||||
| Name string `json:"name"` | |||||
| } | } | ||||
| type PackageCreateResp struct { | type PackageCreateResp struct { | ||||
| Package Package `json:"package"` | |||||
| Package cdssdk.Package `json:"package"` | |||||
| } | } | ||||
| func (s *PackageService) Create(req PackageCreate) (*PackageCreateResp, error) { | func (s *PackageService) Create(req PackageCreate) (*PackageCreateResp, error) { | ||||
| @@ -129,8 +130,8 @@ func (s *PackageService) Create(req PackageCreate) (*PackageCreateResp, error) { | |||||
| const PackageDeletePath = "/package/delete" | const PackageDeletePath = "/package/delete" | ||||
| type PackageDelete struct { | type PackageDelete struct { | ||||
| UserID UserID `json:"userID" binding:"required"` | |||||
| PackageID PackageID `json:"packageID" binding:"required"` | |||||
| UserID cdssdk.UserID `json:"userID" binding:"required"` | |||||
| PackageID cdssdk.PackageID `json:"packageID" binding:"required"` | |||||
| } | } | ||||
| func (c *PackageService) Delete(req PackageDelete) error { | func (c *PackageService) Delete(req PackageDelete) error { | ||||
| @@ -167,12 +168,12 @@ func (c *PackageService) Delete(req PackageDelete) error { | |||||
| const PackageListBucketPackagesPath = "/package/listBucketPackages" | const PackageListBucketPackagesPath = "/package/listBucketPackages" | ||||
| type PackageListBucketPackages struct { | type PackageListBucketPackages struct { | ||||
| UserID UserID `form:"userID" json:"userID" binding:"required"` | |||||
| BucketID BucketID `form:"bucketID" json:"bucketID" binding:"required"` | |||||
| UserID cdssdk.UserID `form:"userID" json:"userID" binding:"required"` | |||||
| BucketID cdssdk.BucketID `form:"bucketID" json:"bucketID" binding:"required"` | |||||
| } | } | ||||
| type PackageListBucketPackagesResp struct { | type PackageListBucketPackagesResp struct { | ||||
| Packages []Package `json:"packages"` | |||||
| Packages []cdssdk.Package `json:"packages"` | |||||
| } | } | ||||
| func (c *PackageService) ListBucketPackages(req PackageListBucketPackages) (*PackageListBucketPackagesResp, error) { | func (c *PackageService) ListBucketPackages(req PackageListBucketPackages) (*PackageListBucketPackagesResp, error) { | ||||
| @@ -203,12 +204,12 @@ func (c *PackageService) ListBucketPackages(req PackageListBucketPackages) (*Pac | |||||
| const PackageGetCachedNodesPath = "/package/getCachedNodes" | const PackageGetCachedNodesPath = "/package/getCachedNodes" | ||||
| type PackageGetCachedNodesReq struct { | type PackageGetCachedNodesReq struct { | ||||
| PackageID PackageID `form:"packageID" json:"packageID" binding:"required"` | |||||
| UserID UserID `form:"userID" json:"userID" binding:"required"` | |||||
| PackageID cdssdk.PackageID `form:"packageID" json:"packageID" binding:"required"` | |||||
| UserID cdssdk.UserID `form:"userID" json:"userID" binding:"required"` | |||||
| } | } | ||||
| type PackageGetCachedNodesResp struct { | type PackageGetCachedNodesResp struct { | ||||
| PackageCachingInfo | |||||
| cdssdk.PackageCachingInfo | |||||
| } | } | ||||
| func (c *PackageService) GetCachedNodes(req PackageGetCachedNodesReq) (*PackageGetCachedNodesResp, error) { | func (c *PackageService) GetCachedNodes(req PackageGetCachedNodesReq) (*PackageGetCachedNodesResp, error) { | ||||
| @@ -238,12 +239,12 @@ func (c *PackageService) GetCachedNodes(req PackageGetCachedNodesReq) (*PackageG | |||||
| const PackageGetLoadedNodesPath = "/package/getLoadedNodes" | const PackageGetLoadedNodesPath = "/package/getLoadedNodes" | ||||
| type PackageGetLoadedNodesReq struct { | type PackageGetLoadedNodesReq struct { | ||||
| PackageID PackageID `form:"packageID" json:"packageID" binding:"required"` | |||||
| UserID UserID `form:"userID" json:"userID" binding:"required"` | |||||
| PackageID cdssdk.PackageID `form:"packageID" json:"packageID" binding:"required"` | |||||
| UserID cdssdk.UserID `form:"userID" json:"userID" binding:"required"` | |||||
| } | } | ||||
| type PackageGetLoadedNodesResp struct { | type PackageGetLoadedNodesResp struct { | ||||
| NodeIDs []NodeID `json:"nodeIDs"` | |||||
| NodeIDs []cdssdk.NodeID `json:"nodeIDs"` | |||||
| } | } | ||||
| func (c *PackageService) GetLoadedNodes(req PackageGetLoadedNodesReq) (*PackageGetLoadedNodesResp, error) { | func (c *PackageService) GetLoadedNodes(req PackageGetLoadedNodesReq) (*PackageGetLoadedNodesResp, error) { | ||||
| @@ -1,4 +1,4 @@ | |||||
| package cdssdk | |||||
| package cdsapi | |||||
| import ( | import ( | ||||
| "fmt" | "fmt" | ||||
| @@ -6,6 +6,7 @@ import ( | |||||
| "strings" | "strings" | ||||
| "gitlink.org.cn/cloudream/common/consts/errorcode" | "gitlink.org.cn/cloudream/common/consts/errorcode" | ||||
| cdssdk "gitlink.org.cn/cloudream/common/sdks/storage" | |||||
| "gitlink.org.cn/cloudream/common/utils/http2" | "gitlink.org.cn/cloudream/common/utils/http2" | ||||
| "gitlink.org.cn/cloudream/common/utils/serder" | "gitlink.org.cn/cloudream/common/utils/serder" | ||||
| ) | ) | ||||
| @@ -13,9 +14,9 @@ import ( | |||||
| const StorageLoadPackagePath = "/storage/loadPackage" | const StorageLoadPackagePath = "/storage/loadPackage" | ||||
| type StorageLoadPackageReq struct { | type StorageLoadPackageReq struct { | ||||
| UserID UserID `json:"userID" binding:"required"` | |||||
| PackageID PackageID `json:"packageID" binding:"required"` | |||||
| StorageID StorageID `json:"storageID" binding:"required"` | |||||
| UserID cdssdk.UserID `json:"userID" binding:"required"` | |||||
| PackageID cdssdk.PackageID `json:"packageID" binding:"required"` | |||||
| StorageID cdssdk.StorageID `json:"storageID" binding:"required"` | |||||
| } | } | ||||
| type StorageLoadPackageResp struct { | type StorageLoadPackageResp struct { | ||||
| FullPath string `json:"fullPath"` // TODO 临时保留给中期测试的前端使用,后续会删除 | FullPath string `json:"fullPath"` // TODO 临时保留给中期测试的前端使用,后续会删除 | ||||
| @@ -52,16 +53,16 @@ func (c *Client) StorageLoadPackage(req StorageLoadPackageReq) (*StorageLoadPack | |||||
| const StorageCreatePackagePath = "/storage/createPackage" | const StorageCreatePackagePath = "/storage/createPackage" | ||||
| type StorageCreatePackageReq struct { | type StorageCreatePackageReq struct { | ||||
| UserID UserID `json:"userID" binding:"required"` | |||||
| StorageID StorageID `json:"storageID" binding:"required"` | |||||
| Path string `json:"path" binding:"required"` | |||||
| BucketID BucketID `json:"bucketID" binding:"required"` | |||||
| Name string `json:"name" binding:"required"` | |||||
| NodeAffinity *NodeID `json:"nodeAffinity"` | |||||
| UserID cdssdk.UserID `json:"userID" binding:"required"` | |||||
| StorageID cdssdk.StorageID `json:"storageID" binding:"required"` | |||||
| Path string `json:"path" binding:"required"` | |||||
| BucketID cdssdk.BucketID `json:"bucketID" binding:"required"` | |||||
| Name string `json:"name" binding:"required"` | |||||
| NodeAffinity *cdssdk.NodeID `json:"nodeAffinity"` | |||||
| } | } | ||||
| type StorageCreatePackageResp struct { | type StorageCreatePackageResp struct { | ||||
| PackageID PackageID `json:"packageID"` | |||||
| PackageID cdssdk.PackageID `json:"packageID"` | |||||
| } | } | ||||
| func (c *Client) StorageCreatePackage(req StorageCreatePackageReq) (*StorageCreatePackageResp, error) { | func (c *Client) StorageCreatePackage(req StorageCreatePackageReq) (*StorageCreatePackageResp, error) { | ||||
| @@ -97,11 +98,11 @@ func (c *Client) StorageCreatePackage(req StorageCreatePackageReq) (*StorageCrea | |||||
| const StorageGetPath = "/storage/get" | const StorageGetPath = "/storage/get" | ||||
| type StorageGet struct { | type StorageGet struct { | ||||
| UserID UserID `form:"userID" json:"userID" binding:"required"` | |||||
| StorageID StorageID `form:"storageID" json:"storageID" binding:"required"` | |||||
| UserID cdssdk.UserID `form:"userID" json:"userID" binding:"required"` | |||||
| StorageID cdssdk.StorageID `form:"storageID" json:"storageID" binding:"required"` | |||||
| } | } | ||||
| type StorageGetResp struct { | type StorageGetResp struct { | ||||
| Storage | |||||
| cdssdk.Storage | |||||
| } | } | ||||
| func (c *Client) StorageGet(req StorageGet) (*StorageGetResp, error) { | func (c *Client) StorageGet(req StorageGet) (*StorageGetResp, error) { | ||||
| @@ -1,4 +1,4 @@ | |||||
| package cdssdk | |||||
| package cdsapi | |||||
| import ( | import ( | ||||
| "bytes" | "bytes" | ||||
| @@ -9,6 +9,7 @@ import ( | |||||
| "github.com/google/uuid" | "github.com/google/uuid" | ||||
| . "github.com/smartystreets/goconvey/convey" | . "github.com/smartystreets/goconvey/convey" | ||||
| "gitlink.org.cn/cloudream/common/pkgs/iterator" | "gitlink.org.cn/cloudream/common/pkgs/iterator" | ||||
| cdssdk "gitlink.org.cn/cloudream/common/sdks/storage" | |||||
| ) | ) | ||||
| func Test_PackageGet(t *testing.T) { | func Test_PackageGet(t *testing.T) { | ||||
| @@ -76,7 +77,7 @@ func Test_Object(t *testing.T) { | |||||
| fileData[i] = byte(i) | fileData[i] = byte(i) | ||||
| } | } | ||||
| nodeAff := NodeID(2) | |||||
| nodeAff := cdssdk.NodeID(2) | |||||
| pkgName := uuid.NewString() | pkgName := uuid.NewString() | ||||
| createResp, err := cli.Package().Create(PackageCreate{ | createResp, err := cli.Package().Create(PackageCreate{ | ||||
| @@ -1,4 +1,4 @@ | |||||
| package cdssdk | |||||
| package cdsapi | |||||
| import ( | import ( | ||||
| "fmt" | "fmt" | ||||
| @@ -245,15 +245,6 @@ type NodeConnectivity struct { | |||||
| TestTime time.Time `db:"TestTime" json:"testTime"` | TestTime time.Time `db:"TestTime" json:"testTime"` | ||||
| } | } | ||||
| type Storage struct { | |||||
| StorageID StorageID `db:"StorageID" json:"storageID"` | |||||
| Name string `db:"Name" json:"name"` | |||||
| NodeID NodeID `db:"NodeID" json:"nodeID"` | |||||
| LocalBase string `db:"LocalBase" json:"localBase"` // 存储服务挂载在代理节点的目录 | |||||
| RemoteBase string `db:"RemoteBase" json:"remoteBase"` // 挂载在本地的目录对应存储服务的哪个路径 | |||||
| State string `db:"State" json:"state"` | |||||
| } | |||||
| type NodePackageCachingInfo struct { | type NodePackageCachingInfo struct { | ||||
| NodeID NodeID `json:"nodeID"` | NodeID NodeID `json:"nodeID"` | ||||
| FileSize int64 `json:"fileSize"` | FileSize int64 `json:"fileSize"` | ||||
| @@ -280,3 +271,44 @@ type CodeError struct { | |||||
| func (e *CodeError) Error() string { | func (e *CodeError) Error() string { | ||||
| return fmt.Sprintf("code: %s, message: %s", e.Code, e.Message) | return fmt.Sprintf("code: %s, message: %s", e.Code, e.Message) | ||||
| } | } | ||||
| type StorageAddress interface { | |||||
| GetType() string | |||||
| // 输出调试用的字符串,不要包含敏感信息 | |||||
| String() string | |||||
| } | |||||
| type Feature interface { | |||||
| GetType() string | |||||
| } | |||||
| type Storage struct { | |||||
| StorageID StorageID `json:"storageID" gorm:"column:StorageID; primaryKey; autoIncrement;"` | |||||
| Name string `json:"name" gorm:"column:Name; not null"` | |||||
| // 存储服务的地址,包含鉴权所需数据 | |||||
| Address StorageAddress `json:"address" gorm:"column:Address; type:json; not null; serializer:union"` | |||||
| // 存储服务拥有的特别功能 | |||||
| Features []Feature `json:"features" gorm:"column:Features; type:json; serializer:union"` | |||||
| } | |||||
| type ShardStoreConfig interface { | |||||
| GetType() string | |||||
| } | |||||
| type ShardStorage struct { | |||||
| StorageID StorageID `json:"storageID" gorm:"column:StorageID; primaryKey"` | |||||
| // 完全管理此存储服务的Hub的ID | |||||
| MasterHub NodeID `json:"masterHub" gorm:"column:MasterHub; not null"` | |||||
| // Shard存储空间在存储服务的目录 | |||||
| Root string `json:"root" gorm:"column:Root; not null"` | |||||
| // ShardStore配置数据 | |||||
| Config ShardStoreConfig `json:"config" gorm:"column:Config; type:json; not null; serializer:union"` | |||||
| } | |||||
| type SharedStorage struct { | |||||
| StorageID StorageID `json:"storageID" gorm:"column:StorageID; primaryKey"` | |||||
| // 调度文件时保存文件的根路径 | |||||
| LoadBase string `json:"loadBase" gorm:"column:LoadBase; not null"` | |||||
| // 回源数据时数据存放位置的根路径 | |||||
| DataReturnBase string `json:"dataReturnBase" gorm:"column:DataReturnBase; not null"` | |||||
| } | |||||