mirror of
https://github.com/rclone/rclone.git
synced 2024-11-29 03:48:27 +08:00
vendor: update all dependencies
This commit is contained in:
parent
fb5ee22112
commit
43bc381e90
54
go.mod
54
go.mod
|
@ -2,65 +2,57 @@ module github.com/ncw/rclone
|
||||||
|
|
||||||
require (
|
require (
|
||||||
bazil.org/fuse v0.0.0-20180421153158-65cc252bf669
|
bazil.org/fuse v0.0.0-20180421153158-65cc252bf669
|
||||||
cloud.google.com/go v0.33.1 // indirect
|
cloud.google.com/go v0.36.0 // indirect
|
||||||
github.com/Azure/azure-pipeline-go v0.1.8
|
github.com/Azure/azure-pipeline-go v0.1.8
|
||||||
github.com/Azure/azure-storage-blob-go v0.0.0-20181023070848-cf01652132cc
|
github.com/Azure/azure-storage-blob-go v0.0.0-20190123011202-457680cc0804
|
||||||
github.com/Azure/go-ansiterm v0.0.0-20170929234023-d6e3b3328b78
|
github.com/Azure/go-ansiterm v0.0.0-20170929234023-d6e3b3328b78
|
||||||
github.com/Unknwon/goconfig v0.0.0-20181105214110-56bd8ab18619
|
github.com/Unknwon/goconfig v0.0.0-20181105214110-56bd8ab18619
|
||||||
github.com/a8m/tree v0.0.0-20180321023834-3cf936ce15d6
|
github.com/a8m/tree v0.0.0-20181222104329-6a0b80129de4
|
||||||
github.com/abbot/go-http-auth v0.4.0
|
github.com/abbot/go-http-auth v0.4.0
|
||||||
github.com/anacrolix/dms v0.0.0-20180117034613-8af4925bffb5
|
github.com/anacrolix/dms v0.0.0-20180117034613-8af4925bffb5
|
||||||
github.com/aws/aws-sdk-go v1.15.81
|
github.com/aws/aws-sdk-go v1.16.31
|
||||||
github.com/billziss-gh/cgofuse v1.1.0
|
github.com/billziss-gh/cgofuse v1.1.0
|
||||||
github.com/coreos/bbolt v0.0.0-20180318001526-af9db2027c98
|
github.com/coreos/bbolt v1.3.2
|
||||||
github.com/cpuguy83/go-md2man v1.0.8 // indirect
|
github.com/cpuguy83/go-md2man v1.0.8 // indirect
|
||||||
github.com/davecgh/go-spew v1.1.1 // indirect
|
github.com/djherbis/times v1.2.0
|
||||||
github.com/djherbis/times v1.1.0
|
|
||||||
github.com/dropbox/dropbox-sdk-go-unofficial v5.4.0+incompatible
|
github.com/dropbox/dropbox-sdk-go-unofficial v5.4.0+incompatible
|
||||||
github.com/goftp/file-driver v0.0.0-20180502053751-5d604a0fc0c9 // indirect
|
github.com/goftp/file-driver v0.0.0-20180502053751-5d604a0fc0c9 // indirect
|
||||||
github.com/goftp/server v0.0.0-20190111142836-88de73f463af
|
github.com/goftp/server v0.0.0-20190111142836-88de73f463af
|
||||||
github.com/google/go-querystring v1.0.0 // indirect
|
|
||||||
github.com/gopherjs/gopherjs v0.0.0-20181103185306-d547d1d9531e // indirect
|
github.com/gopherjs/gopherjs v0.0.0-20181103185306-d547d1d9531e // indirect
|
||||||
github.com/inconshreveable/mousetrap v1.0.0 // indirect
|
github.com/inconshreveable/mousetrap v1.0.0 // indirect
|
||||||
github.com/jlaffaye/ftp v0.0.0-20181101112434-47f21d10f0ee
|
github.com/jlaffaye/ftp v0.0.0-20190126081051-8019e6774408
|
||||||
github.com/jmespath/go-jmespath v0.0.0-20180206201540-c2b33e8439af // indirect
|
|
||||||
github.com/jtolds/gls v4.2.1+incompatible // indirect
|
github.com/jtolds/gls v4.2.1+incompatible // indirect
|
||||||
github.com/kardianos/osext v0.0.0-20170510131534-ae77be60afb1 // indirect
|
github.com/kardianos/osext v0.0.0-20170510131534-ae77be60afb1 // indirect
|
||||||
github.com/kr/fs v0.1.0 // indirect
|
github.com/kr/fs v0.1.0 // indirect
|
||||||
github.com/kr/pretty v0.1.0 // indirect
|
github.com/mattn/go-runewidth v0.0.4 // indirect
|
||||||
github.com/mattn/go-runewidth v0.0.3 // indirect
|
|
||||||
github.com/ncw/go-acd v0.0.0-20171120105400-887eb06ab6a2
|
github.com/ncw/go-acd v0.0.0-20171120105400-887eb06ab6a2
|
||||||
github.com/ncw/swift v1.0.44
|
github.com/ncw/swift v1.0.44
|
||||||
github.com/nsf/termbox-go v0.0.0-20181027232701-60ab7e3d12ed
|
github.com/nsf/termbox-go v0.0.0-20190121233118-02980233997d
|
||||||
github.com/okzk/sdnotify v0.0.0-20180710141335-d9becc38acbd
|
github.com/okzk/sdnotify v0.0.0-20180710141335-d9becc38acbd
|
||||||
github.com/patrickmn/go-cache v2.1.0+incompatible
|
github.com/patrickmn/go-cache v2.1.0+incompatible
|
||||||
github.com/pengsrc/go-shared v0.2.0 // indirect
|
github.com/pengsrc/go-shared v0.2.0 // indirect
|
||||||
github.com/pkg/errors v0.8.0
|
github.com/pkg/errors v0.8.1
|
||||||
github.com/pkg/sftp v1.8.3
|
github.com/pkg/sftp v1.10.0
|
||||||
github.com/pmezard/go-difflib v1.0.0 // indirect
|
|
||||||
github.com/rfjakob/eme v0.0.0-20171028163933-2222dbd4ba46
|
github.com/rfjakob/eme v0.0.0-20171028163933-2222dbd4ba46
|
||||||
github.com/russross/blackfriday v1.5.2 // indirect
|
|
||||||
github.com/sevlyar/go-daemon v0.1.4
|
github.com/sevlyar/go-daemon v0.1.4
|
||||||
github.com/shurcooL/httpfs v0.0.0-20171119174359-809beceb2371 // indirect
|
github.com/skratchdot/open-golang v0.0.0-20190104022628-a2dfa6d0dab6
|
||||||
github.com/shurcooL/vfsgen v0.0.0-20181202132449-6a9ea43bcacd // indirect
|
github.com/smartystreets/assertions v0.0.0-20190116191733-b6c0e53d7304 // indirect
|
||||||
github.com/skratchdot/open-golang v0.0.0-20160302144031-75fb7ed4208c
|
|
||||||
github.com/smartystreets/assertions v0.0.0-20180927180507-b2de0cb4f26d // indirect
|
|
||||||
github.com/smartystreets/goconvey v0.0.0-20181108003508-044398e4856c // indirect
|
github.com/smartystreets/goconvey v0.0.0-20181108003508-044398e4856c // indirect
|
||||||
github.com/spf13/cobra v0.0.3
|
github.com/spf13/cobra v0.0.3
|
||||||
github.com/spf13/pflag v1.0.3
|
github.com/spf13/pflag v1.0.3
|
||||||
github.com/stretchr/testify v1.2.2
|
github.com/stretchr/testify v1.3.0
|
||||||
github.com/t3rm1n4l/go-mega v0.0.0-20190205172012-55a226cf41da
|
github.com/t3rm1n4l/go-mega v0.0.0-20190205172012-55a226cf41da
|
||||||
github.com/xanzy/ssh-agent v0.2.0
|
github.com/xanzy/ssh-agent v0.2.0
|
||||||
github.com/yunify/qingstor-sdk-go v2.2.15+incompatible
|
github.com/yunify/qingstor-sdk-go v2.2.15+incompatible
|
||||||
golang.org/x/crypto v0.0.0-20190131182504-b8fe1690c613
|
go.etcd.io/bbolt v1.3.2 // indirect
|
||||||
golang.org/x/net v0.0.0-20181114220301-adae6a3d119a
|
golang.org/x/crypto v0.0.0-20190208162236-193df9c0f06f
|
||||||
golang.org/x/oauth2 v0.0.0-20181120190819-8f65e3013eba
|
golang.org/x/net v0.0.0-20190206173232-65e2d4e15006
|
||||||
golang.org/x/sync v0.0.0-20181108010431-42b317875d0f
|
golang.org/x/oauth2 v0.0.0-20190130055435-99b60b757ec1
|
||||||
golang.org/x/sys v0.0.0-20181122145206-62eef0e2fa9b
|
golang.org/x/sync v0.0.0-20181221193216-37e7f081c4d4
|
||||||
golang.org/x/text v0.3.0
|
golang.org/x/sys v0.0.0-20190204203706-41f3e6584952
|
||||||
|
golang.org/x/text v0.3.1-0.20180807135948-17ff2d5776d2
|
||||||
golang.org/x/time v0.0.0-20181108054448-85acf8d2951c
|
golang.org/x/time v0.0.0-20181108054448-85acf8d2951c
|
||||||
google.golang.org/api v0.0.0-20181120235003-faade3cbb06a
|
google.golang.org/api v0.1.0
|
||||||
google.golang.org/appengine v1.3.0 // indirect
|
|
||||||
gopkg.in/check.v1 v1.0.0-20180628173108-788fd7840127 // indirect
|
gopkg.in/check.v1 v1.0.0-20180628173108-788fd7840127 // indirect
|
||||||
gopkg.in/yaml.v2 v2.2.1
|
gopkg.in/yaml.v2 v2.2.2
|
||||||
)
|
)
|
||||||
|
|
217
go.sum
217
go.sum
|
@ -1,152 +1,259 @@
|
||||||
bazil.org/fuse v0.0.0-20180421153158-65cc252bf669 h1:FNCRpXiquG1aoyqcIWVFmpTSKVcx2bQD38uZZeGtdlw=
|
bazil.org/fuse v0.0.0-20180421153158-65cc252bf669 h1:FNCRpXiquG1aoyqcIWVFmpTSKVcx2bQD38uZZeGtdlw=
|
||||||
bazil.org/fuse v0.0.0-20180421153158-65cc252bf669/go.mod h1:Xbm+BRKSBEpa4q4hTSxohYNQpsxXPbPry4JJWOB3LB8=
|
bazil.org/fuse v0.0.0-20180421153158-65cc252bf669/go.mod h1:Xbm+BRKSBEpa4q4hTSxohYNQpsxXPbPry4JJWOB3LB8=
|
||||||
cloud.google.com/go v0.33.1 h1:fmJQWZ1w9PGkHR1YL/P7HloDvqlmKQ4Vpb7PC2e+aCk=
|
cloud.google.com/go v0.26.0/go.mod h1:aQUYkXzVsufM+DwF1aE+0xfcU+56JwCaLick0ClmMTw=
|
||||||
cloud.google.com/go v0.33.1/go.mod h1:aQUYkXzVsufM+DwF1aE+0xfcU+56JwCaLick0ClmMTw=
|
cloud.google.com/go v0.31.0/go.mod h1:aQUYkXzVsufM+DwF1aE+0xfcU+56JwCaLick0ClmMTw=
|
||||||
|
cloud.google.com/go v0.34.0/go.mod h1:aQUYkXzVsufM+DwF1aE+0xfcU+56JwCaLick0ClmMTw=
|
||||||
|
cloud.google.com/go v0.36.0 h1:+aCSj7tOo2LODWVEuZDZeGCckdt6MlSF+X/rB3wUiS8=
|
||||||
|
cloud.google.com/go v0.36.0/go.mod h1:RUoy9p/M4ge0HzT8L+SDZ8jg+Q6fth0CiBuhFJpSV40=
|
||||||
|
dmitri.shuralyov.com/app/changes v0.0.0-20180602232624-0a106ad413e3/go.mod h1:Yl+fi1br7+Rr3LqpNJf1/uxUdtRUV+Tnj0o93V2B9MU=
|
||||||
|
dmitri.shuralyov.com/html/belt v0.0.0-20180602232347-f7d459c86be0/go.mod h1:JLBrvjyP0v+ecvNYvCpyZgu5/xkfAUhi6wJj28eUfSU=
|
||||||
|
dmitri.shuralyov.com/service/change v0.0.0-20181023043359-a85b471d5412/go.mod h1:a1inKt/atXimZ4Mv927x+r7UpyzRUf4emIoiiSC2TN4=
|
||||||
|
dmitri.shuralyov.com/state v0.0.0-20180228185332-28bcc343414c/go.mod h1:0PRwlb0D6DFvNNtx+9ybjezNCa8XF0xaYcETyp6rHWU=
|
||||||
|
git.apache.org/thrift.git v0.0.0-20180902110319-2566ecd5d999/go.mod h1:fPE2ZNJGynbRyZ4dJvy6G277gSllfV2HJqblrnkyeyg=
|
||||||
github.com/Azure/azure-pipeline-go v0.1.8 h1:KmVRa8oFMaargVesEuuEoiLCQ4zCCwQ8QX/xg++KS20=
|
github.com/Azure/azure-pipeline-go v0.1.8 h1:KmVRa8oFMaargVesEuuEoiLCQ4zCCwQ8QX/xg++KS20=
|
||||||
github.com/Azure/azure-pipeline-go v0.1.8/go.mod h1:XA1kFWRVhSK+KNFiOhfv83Fv8L9achrP7OxIzeTn1Yg=
|
github.com/Azure/azure-pipeline-go v0.1.8/go.mod h1:XA1kFWRVhSK+KNFiOhfv83Fv8L9achrP7OxIzeTn1Yg=
|
||||||
github.com/Azure/azure-storage-blob-go v0.0.0-20181023070848-cf01652132cc h1:BElWmFfsryQD72OcovStKpkIcd4e9ozSkdsTNQDSHGk=
|
github.com/Azure/azure-storage-blob-go v0.0.0-20190123011202-457680cc0804 h1:QjGHsWFbJyl312t0BtgkmZy2TTYA++FF0UakGbr3ZhQ=
|
||||||
github.com/Azure/azure-storage-blob-go v0.0.0-20181023070848-cf01652132cc/go.mod h1:oGfmITT1V6x//CswqY2gtAHND+xIP64/qL7a5QJix0Y=
|
github.com/Azure/azure-storage-blob-go v0.0.0-20190123011202-457680cc0804/go.mod h1:oGfmITT1V6x//CswqY2gtAHND+xIP64/qL7a5QJix0Y=
|
||||||
github.com/Azure/go-ansiterm v0.0.0-20170929234023-d6e3b3328b78 h1:w+iIsaOQNcT7OZ575w+acHgRric5iCyQh+xv+KJ4HB8=
|
github.com/Azure/go-ansiterm v0.0.0-20170929234023-d6e3b3328b78 h1:w+iIsaOQNcT7OZ575w+acHgRric5iCyQh+xv+KJ4HB8=
|
||||||
github.com/Azure/go-ansiterm v0.0.0-20170929234023-d6e3b3328b78/go.mod h1:LmzpDX56iTiv29bbRTIsUNlaFfuhWRQBWjQdVyAevI8=
|
github.com/Azure/go-ansiterm v0.0.0-20170929234023-d6e3b3328b78/go.mod h1:LmzpDX56iTiv29bbRTIsUNlaFfuhWRQBWjQdVyAevI8=
|
||||||
|
github.com/BurntSushi/toml v0.3.1/go.mod h1:xHWCNGjB5oqiDr8zfno3MHue2Ht5sIBksp03qcyfWMU=
|
||||||
github.com/Unknwon/goconfig v0.0.0-20181105214110-56bd8ab18619 h1:6X8iB881g299aNEv6KXrcjL31iLOH7yA6NXoQX+MbDg=
|
github.com/Unknwon/goconfig v0.0.0-20181105214110-56bd8ab18619 h1:6X8iB881g299aNEv6KXrcjL31iLOH7yA6NXoQX+MbDg=
|
||||||
github.com/Unknwon/goconfig v0.0.0-20181105214110-56bd8ab18619/go.mod h1:wngxua9XCNjvHjDiTiV26DaKDT+0c63QR6H5hjVUUxw=
|
github.com/Unknwon/goconfig v0.0.0-20181105214110-56bd8ab18619/go.mod h1:wngxua9XCNjvHjDiTiV26DaKDT+0c63QR6H5hjVUUxw=
|
||||||
github.com/a8m/tree v0.0.0-20180321023834-3cf936ce15d6 h1:UCQe3W9LxwL2ff5r0PqQfS6Oe5MCKpIH8twfK/dH9mw=
|
github.com/a8m/tree v0.0.0-20181222104329-6a0b80129de4 h1:mK1/QgFPU4osbhjJ26B1w738kjQHaGJcon8uCLMS8fk=
|
||||||
github.com/a8m/tree v0.0.0-20180321023834-3cf936ce15d6/go.mod h1:FSdwKX97koS5efgm8WevNf7XS3PqtyFkKDDXrz778cg=
|
github.com/a8m/tree v0.0.0-20181222104329-6a0b80129de4/go.mod h1:FSdwKX97koS5efgm8WevNf7XS3PqtyFkKDDXrz778cg=
|
||||||
github.com/abbot/go-http-auth v0.4.0 h1:QjmvZ5gSC7jm3Zg54DqWE/T5m1t2AfDu6QlXJT0EVT0=
|
github.com/abbot/go-http-auth v0.4.0 h1:QjmvZ5gSC7jm3Zg54DqWE/T5m1t2AfDu6QlXJT0EVT0=
|
||||||
github.com/abbot/go-http-auth v0.4.0/go.mod h1:Cz6ARTIzApMJDzh5bRMSUou6UMSp0IEXg9km/ci7TJM=
|
github.com/abbot/go-http-auth v0.4.0/go.mod h1:Cz6ARTIzApMJDzh5bRMSUou6UMSp0IEXg9km/ci7TJM=
|
||||||
github.com/anacrolix/dms v0.0.0-20180117034613-8af4925bffb5 h1:lmyFvZXNGOmsKCYXNwzDLWafnxeewxsFwdsvTvSC1sg=
|
github.com/anacrolix/dms v0.0.0-20180117034613-8af4925bffb5 h1:lmyFvZXNGOmsKCYXNwzDLWafnxeewxsFwdsvTvSC1sg=
|
||||||
github.com/anacrolix/dms v0.0.0-20180117034613-8af4925bffb5/go.mod h1:DGqLjaZ3ziKKNRt+U5Q9PLWJ52Q/4rxfaaH/b3QYKaE=
|
github.com/anacrolix/dms v0.0.0-20180117034613-8af4925bffb5/go.mod h1:DGqLjaZ3ziKKNRt+U5Q9PLWJ52Q/4rxfaaH/b3QYKaE=
|
||||||
github.com/aws/aws-sdk-go v1.15.81 h1:va7uoFaV9uKAtZ6BTmp1u7paoMsizYRRLvRuoC07nQ8=
|
github.com/anmitsu/go-shlex v0.0.0-20161002113705-648efa622239/go.mod h1:2FmKhYUyUczH0OGQWaF5ceTx0UBShxjsH6f8oGKYe2c=
|
||||||
github.com/aws/aws-sdk-go v1.15.81/go.mod h1:E3/ieXAlvM0XWO57iftYVDLLvQ824smPP3ATZkfNZeM=
|
github.com/aws/aws-sdk-go v1.16.31 h1:bE4FW2uulhXiAaF4Guw0OzX9gBZ4iWvXWe6VT8Jxr28=
|
||||||
|
github.com/aws/aws-sdk-go v1.16.31/go.mod h1:KmX6BPdI08NWTb3/sm4ZGu5ShLoqVDhKgpiN924inxo=
|
||||||
|
github.com/beorn7/perks v0.0.0-20180321164747-3a771d992973/go.mod h1:Dwedo/Wpr24TaqPxmxbtue+5NUziq4I4S80YR8gNf3Q=
|
||||||
github.com/billziss-gh/cgofuse v1.1.0 h1:tATn9ZDvuPcOVlvR4tJitGHgAqy1y18+4mKmRfdfjec=
|
github.com/billziss-gh/cgofuse v1.1.0 h1:tATn9ZDvuPcOVlvR4tJitGHgAqy1y18+4mKmRfdfjec=
|
||||||
github.com/billziss-gh/cgofuse v1.1.0/go.mod h1:LJjoaUojlVjgo5GQoEJTcJNqZJeRU0nCR84CyxKt2YM=
|
github.com/billziss-gh/cgofuse v1.1.0/go.mod h1:LJjoaUojlVjgo5GQoEJTcJNqZJeRU0nCR84CyxKt2YM=
|
||||||
github.com/coreos/bbolt v0.0.0-20180318001526-af9db2027c98 h1:0gQU5Ebjs1V8Ow5bBzxZzr0peNjJILSkSb30IfZtshQ=
|
github.com/bradfitz/go-smtpd v0.0.0-20170404230938-deb6d6237625/go.mod h1:HYsPBTaaSFSlLx/70C2HPIMNZpVV8+vt/A+FMnYP11g=
|
||||||
github.com/coreos/bbolt v0.0.0-20180318001526-af9db2027c98/go.mod h1:iRUV2dpdMOn7Bo10OQBFzIJO9kkE559Wcmn+qkEiiKk=
|
github.com/client9/misspell v0.3.4/go.mod h1:qj6jICC3Q7zFZvVWo7KLAzC3yx5G7kyvSDkc90ppPyw=
|
||||||
|
github.com/coreos/bbolt v1.3.2 h1:wZwiHHUieZCquLkDL0B8UhzreNWsPHooDAG3q34zk0s=
|
||||||
|
github.com/coreos/bbolt v1.3.2/go.mod h1:iRUV2dpdMOn7Bo10OQBFzIJO9kkE559Wcmn+qkEiiKk=
|
||||||
|
github.com/coreos/go-systemd v0.0.0-20181012123002-c6f51f82210d/go.mod h1:F5haX7vjVVG0kc13fIWeqUViNPyEJxv/OmvnBo0Yme4=
|
||||||
github.com/cpuguy83/go-md2man v1.0.8 h1:DwoNytLphI8hzS2Af4D0dfaEaiSq2bN05mEm4R6vf8M=
|
github.com/cpuguy83/go-md2man v1.0.8 h1:DwoNytLphI8hzS2Af4D0dfaEaiSq2bN05mEm4R6vf8M=
|
||||||
github.com/cpuguy83/go-md2man v1.0.8/go.mod h1:N6JayAiVKtlHSnuTCeuLSQVs75hb8q+dYQLjr7cDsKY=
|
github.com/cpuguy83/go-md2man v1.0.8/go.mod h1:N6JayAiVKtlHSnuTCeuLSQVs75hb8q+dYQLjr7cDsKY=
|
||||||
|
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/djherbis/times v1.1.0 h1:NFhBDODme0XNX+/5ETW9qL6v3Ty57psiXIQBrzzg44E=
|
github.com/djherbis/times v1.2.0 h1:xANXjsC/iBqbO00vkWlYwPWgBgEVU6m6AFYg0Pic+Mc=
|
||||||
github.com/djherbis/times v1.1.0/go.mod h1:CGMZlo255K5r4Yw0b9RRfFQpM2y7uOmxg4jm9HsaVf8=
|
github.com/djherbis/times v1.2.0/go.mod h1:CGMZlo255K5r4Yw0b9RRfFQpM2y7uOmxg4jm9HsaVf8=
|
||||||
github.com/dropbox/dropbox-sdk-go-unofficial v4.1.0+incompatible h1:ZFvUIiBbGhDY5zF8yjLoWhUAYs7uDodUpbvTS5oelDE=
|
|
||||||
github.com/dropbox/dropbox-sdk-go-unofficial v4.1.0+incompatible/go.mod h1:lr+LhMM3F6Y3lW1T9j2U5l7QeuWm87N9+PPXo3yH4qY=
|
|
||||||
github.com/dropbox/dropbox-sdk-go-unofficial v5.0.0+incompatible h1:FQu9Ef2dkC8g2rQmcQmpXXeoRegXHODBfveKKZu6+e8=
|
|
||||||
github.com/dropbox/dropbox-sdk-go-unofficial v5.0.1-0.20181205034806-56e5f6595305+incompatible h1:4HSS6BiPqvgsn/zrwt6KOYY+mw153zmhvewZIRh1+Ds=
|
|
||||||
github.com/dropbox/dropbox-sdk-go-unofficial v5.0.1-0.20181205034806-56e5f6595305+incompatible/go.mod h1:lr+LhMM3F6Y3lW1T9j2U5l7QeuWm87N9+PPXo3yH4qY=
|
|
||||||
github.com/dropbox/dropbox-sdk-go-unofficial v5.4.0+incompatible h1:9jnukMIowLSo3SY7+GTwxmYJv4QC0LxXbo97zHWCyoc=
|
github.com/dropbox/dropbox-sdk-go-unofficial v5.4.0+incompatible h1:9jnukMIowLSo3SY7+GTwxmYJv4QC0LxXbo97zHWCyoc=
|
||||||
github.com/dropbox/dropbox-sdk-go-unofficial v5.4.0+incompatible/go.mod h1:lr+LhMM3F6Y3lW1T9j2U5l7QeuWm87N9+PPXo3yH4qY=
|
github.com/dropbox/dropbox-sdk-go-unofficial v5.4.0+incompatible/go.mod h1:lr+LhMM3F6Y3lW1T9j2U5l7QeuWm87N9+PPXo3yH4qY=
|
||||||
|
github.com/dustin/go-humanize v1.0.0/go.mod h1:HtrtbFcZ19U5GC7JDqmcUSB87Iq5E25KnS6fMYU6eOk=
|
||||||
|
github.com/flynn/go-shlex v0.0.0-20150515145356-3f9db97f8568/go.mod h1:xEzjJPgXI435gkrCt3MPfRiAkVrwSbHsst4LCFVfpJc=
|
||||||
|
github.com/fsnotify/fsnotify v1.4.7/go.mod h1:jwhsz4b93w/PPRr/qN1Yymfu8t87LnFCMoQvtojpjFo=
|
||||||
|
github.com/ghodss/yaml v1.0.0/go.mod h1:4dBDuWmgqj2HViK6kFavaiC9ZROes6MMH2rRYeMEF04=
|
||||||
|
github.com/gliderlabs/ssh v0.1.1/go.mod h1:U7qILu1NlMHj9FlMhZLlkCdDnU1DBEAqr0aevW3Awn0=
|
||||||
github.com/goftp/file-driver v0.0.0-20180502053751-5d604a0fc0c9 h1:cC0Hbb+18DJ4i6ybqDybvj4wdIDS4vnD0QEci98PgM8=
|
github.com/goftp/file-driver v0.0.0-20180502053751-5d604a0fc0c9 h1:cC0Hbb+18DJ4i6ybqDybvj4wdIDS4vnD0QEci98PgM8=
|
||||||
github.com/goftp/file-driver v0.0.0-20180502053751-5d604a0fc0c9/go.mod h1:GpOj6zuVBG3Inr9qjEnuVTgBlk2lZ1S9DcoFiXWyKss=
|
github.com/goftp/file-driver v0.0.0-20180502053751-5d604a0fc0c9/go.mod h1:GpOj6zuVBG3Inr9qjEnuVTgBlk2lZ1S9DcoFiXWyKss=
|
||||||
github.com/goftp/server v0.0.0-20180914132916-1fd52c8552f1 h1:WjgeEHEDLGx56ndxS6FYi6qFjZGajSVHPuEPdpJ60cI=
|
|
||||||
github.com/goftp/server v0.0.0-20180914132916-1fd52c8552f1/go.mod h1:k/SS6VWkxY7dHPhoMQ8IdRu8L4lQtmGbhyXGg+vCnXE=
|
|
||||||
github.com/goftp/server v0.0.0-20190111142836-88de73f463af h1:PJxb1aA1z+Ohy2j28L92+ng9phXpZVFRFbPkfmJcRGo=
|
github.com/goftp/server v0.0.0-20190111142836-88de73f463af h1:PJxb1aA1z+Ohy2j28L92+ng9phXpZVFRFbPkfmJcRGo=
|
||||||
github.com/goftp/server v0.0.0-20190111142836-88de73f463af/go.mod h1:k/SS6VWkxY7dHPhoMQ8IdRu8L4lQtmGbhyXGg+vCnXE=
|
github.com/goftp/server v0.0.0-20190111142836-88de73f463af/go.mod h1:k/SS6VWkxY7dHPhoMQ8IdRu8L4lQtmGbhyXGg+vCnXE=
|
||||||
|
github.com/gogo/protobuf v1.1.1/go.mod h1:r8qH/GZQm5c6nD/R0oafs1akxWv10x8SbQlK7atdtwQ=
|
||||||
|
github.com/golang/glog v0.0.0-20160126235308-23def4e6c14b/go.mod h1:SBH7ygxi8pfUlaOkMMuAQtPIUF8ecWP5IEl/CR7VP2Q=
|
||||||
|
github.com/golang/lint v0.0.0-20180702182130-06c8688daad7/go.mod h1:tluoj9z5200jBnyusfRPU2LqT6J+DAorxEvtC7LHB+E=
|
||||||
|
github.com/golang/mock v1.1.1/go.mod h1:oTYuIxOrZwtPieC+H1uAHpcLFnEyAGVDL/k47Jfbm0A=
|
||||||
|
github.com/golang/mock v1.2.0/go.mod h1:oTYuIxOrZwtPieC+H1uAHpcLFnEyAGVDL/k47Jfbm0A=
|
||||||
github.com/golang/protobuf v1.2.0 h1:P3YflyNX/ehuJFLhxviNdFxQPkGK5cDcApsge1SqnvM=
|
github.com/golang/protobuf v1.2.0 h1:P3YflyNX/ehuJFLhxviNdFxQPkGK5cDcApsge1SqnvM=
|
||||||
github.com/golang/protobuf v1.2.0/go.mod h1:6lQm79b+lXiMfvg/cZm0SGofjICqVBUtrP5yJMmIC1U=
|
github.com/golang/protobuf v1.2.0/go.mod h1:6lQm79b+lXiMfvg/cZm0SGofjICqVBUtrP5yJMmIC1U=
|
||||||
|
github.com/google/btree v0.0.0-20180813153112-4030bb1f1f0c/go.mod h1:lNA+9X1NB3Zf8V7Ke586lFgjr2dZNuvo3lPJSGZ5JPQ=
|
||||||
|
github.com/google/go-cmp v0.2.0/go.mod h1:oXzfMopK8JAjlY9xF4vHSVASa0yLyX7SntLO5aqRK0M=
|
||||||
|
github.com/google/go-github v17.0.0+incompatible/go.mod h1:zLgOLi98H3fifZn+44m+umXrS52loVEgC2AApnigrVQ=
|
||||||
github.com/google/go-querystring v1.0.0 h1:Xkwi/a1rcvNg1PPYe5vI8GbeBY/jrVuDX5ASuANWTrk=
|
github.com/google/go-querystring v1.0.0 h1:Xkwi/a1rcvNg1PPYe5vI8GbeBY/jrVuDX5ASuANWTrk=
|
||||||
github.com/google/go-querystring v1.0.0/go.mod h1:odCYkC5MyYFN7vkCjXpyrEuKhc/BUO6wN/zVPAxq5ck=
|
github.com/google/go-querystring v1.0.0/go.mod h1:odCYkC5MyYFN7vkCjXpyrEuKhc/BUO6wN/zVPAxq5ck=
|
||||||
|
github.com/google/martian v2.1.0+incompatible/go.mod h1:9I4somxYTbIHy5NJKHRl3wXiIaQGbYVAs8BPL6v8lEs=
|
||||||
|
github.com/google/pprof v0.0.0-20181206194817-3ea8567a2e57/go.mod h1:zfwlbNMJ+OItoe0UupaVj+oy1omPYYDuagoSzA8v9mc=
|
||||||
|
github.com/googleapis/gax-go v2.0.0+incompatible/go.mod h1:SFVmujtThgffbyetf+mdk2eWhX2bMyUtNHzFKcPA9HY=
|
||||||
|
github.com/googleapis/gax-go/v2 v2.0.3/go.mod h1:LLvjysVCY1JZeum8Z6l8qUty8fiNwE08qbEPm1M08qg=
|
||||||
|
github.com/gopherjs/gopherjs v0.0.0-20181017120253-0766667cb4d1/go.mod h1:wJfORRmW1u3UXTncJ5qlYoELFm8eSnnEO6hX4iZ3EWY=
|
||||||
github.com/gopherjs/gopherjs v0.0.0-20181103185306-d547d1d9531e h1:JKmoR8x90Iww1ks85zJ1lfDGgIiMDuIptTOhJq+zKyg=
|
github.com/gopherjs/gopherjs v0.0.0-20181103185306-d547d1d9531e h1:JKmoR8x90Iww1ks85zJ1lfDGgIiMDuIptTOhJq+zKyg=
|
||||||
github.com/gopherjs/gopherjs v0.0.0-20181103185306-d547d1d9531e/go.mod h1:wJfORRmW1u3UXTncJ5qlYoELFm8eSnnEO6hX4iZ3EWY=
|
github.com/gopherjs/gopherjs v0.0.0-20181103185306-d547d1d9531e/go.mod h1:wJfORRmW1u3UXTncJ5qlYoELFm8eSnnEO6hX4iZ3EWY=
|
||||||
|
github.com/gregjones/httpcache v0.0.0-20180305231024-9cad4c3443a7/go.mod h1:FecbI9+v66THATjSRHfNgh1IVFe/9kFxbXtjV0ctIMA=
|
||||||
|
github.com/grpc-ecosystem/grpc-gateway v1.5.0/go.mod h1:RSKVYQBd5MCa4OVpNdGskqpgL2+G+NZTnrVHpWWfpdw=
|
||||||
github.com/inconshreveable/mousetrap v1.0.0 h1:Z8tu5sraLXCXIcARxBp/8cbvlwVa7Z1NHg9XEKhtSvM=
|
github.com/inconshreveable/mousetrap v1.0.0 h1:Z8tu5sraLXCXIcARxBp/8cbvlwVa7Z1NHg9XEKhtSvM=
|
||||||
github.com/inconshreveable/mousetrap v1.0.0/go.mod h1:PxqpIevigyE2G7u3NXJIT2ANytuPF1OarO4DADm73n8=
|
github.com/inconshreveable/mousetrap v1.0.0/go.mod h1:PxqpIevigyE2G7u3NXJIT2ANytuPF1OarO4DADm73n8=
|
||||||
github.com/jlaffaye/ftp v0.0.0-20181101112434-47f21d10f0ee h1:oCvgfeGIc6GipidJVyG0Hd9R/w6TO8bBYyJg15ZgJkw=
|
github.com/jellevandenhooff/dkim v0.0.0-20150330215556-f50fe3d243e1/go.mod h1:E0B/fFc00Y+Rasa88328GlI/XbtyysCtTHZS8h7IrBU=
|
||||||
github.com/jlaffaye/ftp v0.0.0-20181101112434-47f21d10f0ee/go.mod h1:lli8NYPQOFy3O++YmYbqVgOcQ1JPCwdOy+5zSjKJ9qY=
|
github.com/jlaffaye/ftp v0.0.0-20190126081051-8019e6774408 h1:9AeqmB6KVEJ7GQU985MGQc7Mtxz1+C+JZkgqBnUWqMU=
|
||||||
github.com/jmespath/go-jmespath v0.0.0-20160202185014-0b12d6b521d8 h1:12VvqtR6Aowv3l/EQUlocDHW2Cp4G9WJVH7uyH8QFJE=
|
github.com/jlaffaye/ftp v0.0.0-20190126081051-8019e6774408/go.mod h1:lli8NYPQOFy3O++YmYbqVgOcQ1JPCwdOy+5zSjKJ9qY=
|
||||||
github.com/jmespath/go-jmespath v0.0.0-20160202185014-0b12d6b521d8/go.mod h1:Nht3zPeWKUH0NzdCt2Blrr5ys8VGpn0CEB0cQHVjt7k=
|
|
||||||
github.com/jmespath/go-jmespath v0.0.0-20180206201540-c2b33e8439af h1:pmfjZENx5imkbgOkpRUYLnmbU7UEFbjtDA2hxJ1ichM=
|
github.com/jmespath/go-jmespath v0.0.0-20180206201540-c2b33e8439af h1:pmfjZENx5imkbgOkpRUYLnmbU7UEFbjtDA2hxJ1ichM=
|
||||||
github.com/jmespath/go-jmespath v0.0.0-20180206201540-c2b33e8439af/go.mod h1:Nht3zPeWKUH0NzdCt2Blrr5ys8VGpn0CEB0cQHVjt7k=
|
github.com/jmespath/go-jmespath v0.0.0-20180206201540-c2b33e8439af/go.mod h1:Nht3zPeWKUH0NzdCt2Blrr5ys8VGpn0CEB0cQHVjt7k=
|
||||||
github.com/jtolds/gls v4.2.1+incompatible h1:fSuqC+Gmlu6l/ZYAoZzx2pyucC8Xza35fpRVWLVmUEE=
|
github.com/jtolds/gls v4.2.1+incompatible h1:fSuqC+Gmlu6l/ZYAoZzx2pyucC8Xza35fpRVWLVmUEE=
|
||||||
github.com/jtolds/gls v4.2.1+incompatible/go.mod h1:QJZ7F/aHp+rZTRtaJ1ow/lLfFfVYBRgL+9YlvaHOwJU=
|
github.com/jtolds/gls v4.2.1+incompatible/go.mod h1:QJZ7F/aHp+rZTRtaJ1ow/lLfFfVYBRgL+9YlvaHOwJU=
|
||||||
github.com/kardianos/osext v0.0.0-20170510131534-ae77be60afb1 h1:PJPDf8OUfOK1bb/NeTKd4f1QXZItOX389VN3B6qC8ro=
|
github.com/kardianos/osext v0.0.0-20170510131534-ae77be60afb1 h1:PJPDf8OUfOK1bb/NeTKd4f1QXZItOX389VN3B6qC8ro=
|
||||||
github.com/kardianos/osext v0.0.0-20170510131534-ae77be60afb1/go.mod h1:1NbS8ALrpOvjt0rHPNLyCIeMtbizbir8U//inJ+zuB8=
|
github.com/kardianos/osext v0.0.0-20170510131534-ae77be60afb1/go.mod h1:1NbS8ALrpOvjt0rHPNLyCIeMtbizbir8U//inJ+zuB8=
|
||||||
|
github.com/kisielk/gotool v1.0.0/go.mod h1:XhKaO+MFFWcvkIS/tQcRk01m1F5IRFswLeQ+oQHNcck=
|
||||||
github.com/kr/fs v0.1.0 h1:Jskdu9ieNAYnjxsi0LbQp1ulIKZV1LAFgK1tWhpZgl8=
|
github.com/kr/fs v0.1.0 h1:Jskdu9ieNAYnjxsi0LbQp1ulIKZV1LAFgK1tWhpZgl8=
|
||||||
github.com/kr/fs v0.1.0/go.mod h1:FFnZGqtBN9Gxj7eW1uZ42v5BccTP0vu6NEaFoC2HwRg=
|
github.com/kr/fs v0.1.0/go.mod h1:FFnZGqtBN9Gxj7eW1uZ42v5BccTP0vu6NEaFoC2HwRg=
|
||||||
github.com/kr/pretty v0.1.0 h1:L/CwN0zerZDmRFUapSPitk6f+Q3+0za1rQkzVuMiMFI=
|
github.com/kr/pretty v0.1.0 h1:L/CwN0zerZDmRFUapSPitk6f+Q3+0za1rQkzVuMiMFI=
|
||||||
github.com/kr/pretty v0.1.0/go.mod h1:dAy3ld7l9f0ibDNOQOHHMYYIIbhfbHSm3C4ZsoJORNo=
|
github.com/kr/pretty v0.1.0/go.mod h1:dAy3ld7l9f0ibDNOQOHHMYYIIbhfbHSm3C4ZsoJORNo=
|
||||||
github.com/kr/pty v1.1.1/go.mod h1:pFQYn66WHrOpPYNljwOMqo10TkYh1fy3cYio2l3bCsQ=
|
github.com/kr/pty v1.1.1/go.mod h1:pFQYn66WHrOpPYNljwOMqo10TkYh1fy3cYio2l3bCsQ=
|
||||||
|
github.com/kr/pty v1.1.3/go.mod h1:pFQYn66WHrOpPYNljwOMqo10TkYh1fy3cYio2l3bCsQ=
|
||||||
github.com/kr/text v0.1.0 h1:45sCR5RtlFHMR4UwH9sdQ5TC8v0qDQCHnXt+kaKSTVE=
|
github.com/kr/text v0.1.0 h1:45sCR5RtlFHMR4UwH9sdQ5TC8v0qDQCHnXt+kaKSTVE=
|
||||||
github.com/kr/text v0.1.0/go.mod h1:4Jbv+DJW3UT/LiOwJeYQe1efqtUx/iVham/4vfdArNI=
|
github.com/kr/text v0.1.0/go.mod h1:4Jbv+DJW3UT/LiOwJeYQe1efqtUx/iVham/4vfdArNI=
|
||||||
github.com/mattn/go-runewidth v0.0.3 h1:a+kO+98RDGEfo6asOGMmpodZq4FNtnGP54yps8BzLR4=
|
github.com/mattn/go-runewidth v0.0.4 h1:2BvfKmzob6Bmd4YsL0zygOqfdFnK7GR4QL06Do4/p7Y=
|
||||||
github.com/mattn/go-runewidth v0.0.3/go.mod h1:LwmH8dsx7+W8Uxz3IHJYH5QSwggIsqBzpuz5H//U1FU=
|
github.com/mattn/go-runewidth v0.0.4/go.mod h1:LwmH8dsx7+W8Uxz3IHJYH5QSwggIsqBzpuz5H//U1FU=
|
||||||
|
github.com/matttproud/golang_protobuf_extensions v1.0.1/go.mod h1:D8He9yQNgCq6Z5Ld7szi9bcBfOoFv/3dc6xSMkL2PC0=
|
||||||
|
github.com/microcosm-cc/bluemonday v1.0.1/go.mod h1:hsXNsILzKxV+sX77C5b8FSuKF00vh2OMYv+xgHpAMF4=
|
||||||
github.com/ncw/go-acd v0.0.0-20171120105400-887eb06ab6a2 h1:VlXvEx6JbFp7F9iz92zXP2Ew+9VupSpfybr+TxmjdH0=
|
github.com/ncw/go-acd v0.0.0-20171120105400-887eb06ab6a2 h1:VlXvEx6JbFp7F9iz92zXP2Ew+9VupSpfybr+TxmjdH0=
|
||||||
github.com/ncw/go-acd v0.0.0-20171120105400-887eb06ab6a2/go.mod h1:MLIrzg7gp/kzVBxRE1olT7CWYMCklcUWU+ekoxOD9x0=
|
github.com/ncw/go-acd v0.0.0-20171120105400-887eb06ab6a2/go.mod h1:MLIrzg7gp/kzVBxRE1olT7CWYMCklcUWU+ekoxOD9x0=
|
||||||
github.com/ncw/swift v1.0.42 h1:ztvRb6hs52IHOcaYt73f9lXYLIeIuWgdooRDhdyllGI=
|
|
||||||
github.com/ncw/swift v1.0.42/go.mod h1:23YIA4yWVnGwv2dQlN4bB7egfYX6YLn0Yo/S6zZO/ZM=
|
|
||||||
github.com/ncw/swift v1.0.43 h1:TZn2l/bPV0CqG+/G5BFh/ROWnyX7dL2D0URaOjNQRsw=
|
|
||||||
github.com/ncw/swift v1.0.43/go.mod h1:23YIA4yWVnGwv2dQlN4bB7egfYX6YLn0Yo/S6zZO/ZM=
|
|
||||||
github.com/ncw/swift v1.0.44 h1:EKvOTvUxElbpDWqxsyVaVGvc2IfuOqQnRmjnR2AGhQ4=
|
github.com/ncw/swift v1.0.44 h1:EKvOTvUxElbpDWqxsyVaVGvc2IfuOqQnRmjnR2AGhQ4=
|
||||||
github.com/ncw/swift v1.0.44/go.mod h1:23YIA4yWVnGwv2dQlN4bB7egfYX6YLn0Yo/S6zZO/ZM=
|
github.com/ncw/swift v1.0.44/go.mod h1:23YIA4yWVnGwv2dQlN4bB7egfYX6YLn0Yo/S6zZO/ZM=
|
||||||
github.com/nsf/termbox-go v0.0.0-20181027232701-60ab7e3d12ed h1:bAVGG6B+R5qpSylrrA+BAMrzYkdAoiTaKPVxRB+4cyM=
|
github.com/neelance/astrewrite v0.0.0-20160511093645-99348263ae86/go.mod h1:kHJEU3ofeGjhHklVoIGuVj85JJwZ6kWPaJwCIxgnFmo=
|
||||||
github.com/nsf/termbox-go v0.0.0-20181027232701-60ab7e3d12ed/go.mod h1:IuKpRQcYE1Tfu+oAQqaLisqDeXgjyyltCfsaoYN18NQ=
|
github.com/neelance/sourcemap v0.0.0-20151028013722-8c68805598ab/go.mod h1:Qr6/a/Q4r9LP1IltGz7tA7iOK1WonHEYhu1HRBA7ZiM=
|
||||||
|
github.com/nsf/termbox-go v0.0.0-20190121233118-02980233997d h1:x3S6kxmy49zXVVyhcnrFqxvNVCBPb2KZ9hV2RBdS840=
|
||||||
|
github.com/nsf/termbox-go v0.0.0-20190121233118-02980233997d/go.mod h1:IuKpRQcYE1Tfu+oAQqaLisqDeXgjyyltCfsaoYN18NQ=
|
||||||
github.com/okzk/sdnotify v0.0.0-20180710141335-d9becc38acbd h1:+iAPaTbi1gZpcpDwe/BW1fx7Xoesv69hLNGPheoyhBs=
|
github.com/okzk/sdnotify v0.0.0-20180710141335-d9becc38acbd h1:+iAPaTbi1gZpcpDwe/BW1fx7Xoesv69hLNGPheoyhBs=
|
||||||
github.com/okzk/sdnotify v0.0.0-20180710141335-d9becc38acbd/go.mod h1:4soZNh0zW0LtYGdQ416i0jO0EIqMGcbtaspRS4BDvRQ=
|
github.com/okzk/sdnotify v0.0.0-20180710141335-d9becc38acbd/go.mod h1:4soZNh0zW0LtYGdQ416i0jO0EIqMGcbtaspRS4BDvRQ=
|
||||||
|
github.com/openzipkin/zipkin-go v0.1.1/go.mod h1:NtoC/o8u3JlF1lSlyPNswIbeQH9bJTmOf0Erfk+hxe8=
|
||||||
github.com/patrickmn/go-cache v2.1.0+incompatible h1:HRMgzkcYKYpi3C8ajMPV8OFXaaRUnok+kx1WdO15EQc=
|
github.com/patrickmn/go-cache v2.1.0+incompatible h1:HRMgzkcYKYpi3C8ajMPV8OFXaaRUnok+kx1WdO15EQc=
|
||||||
github.com/patrickmn/go-cache v2.1.0+incompatible/go.mod h1:3Qf8kWWT7OJRJbdiICTKqZju1ZixQ/KpMGzzAfe6+WQ=
|
github.com/patrickmn/go-cache v2.1.0+incompatible/go.mod h1:3Qf8kWWT7OJRJbdiICTKqZju1ZixQ/KpMGzzAfe6+WQ=
|
||||||
github.com/pengsrc/go-shared v0.2.0 h1:Ho86LhaXOYgv9FjBmIp5CO0LmaIj49H2HZhYh0+7uW8=
|
github.com/pengsrc/go-shared v0.2.0 h1:Ho86LhaXOYgv9FjBmIp5CO0LmaIj49H2HZhYh0+7uW8=
|
||||||
github.com/pengsrc/go-shared v0.2.0/go.mod h1:jVblp62SafmidSkvWrXyxAme3gaTfEtWwRPGz5cpvHg=
|
github.com/pengsrc/go-shared v0.2.0/go.mod h1:jVblp62SafmidSkvWrXyxAme3gaTfEtWwRPGz5cpvHg=
|
||||||
github.com/pkg/errors v0.8.0 h1:WdK/asTD0HN+q6hsWO3/vpuAkAr+tw6aNJNDFFf0+qw=
|
github.com/pkg/errors v0.8.1 h1:iURUrRGxPUNPdy5/HRSm+Yj6okJ6UtLINN0Q9M4+h3I=
|
||||||
github.com/pkg/errors v0.8.0/go.mod h1:bwawxfHBFNV+L2hUp1rHADufV3IMtnDRdf1r5NINEl0=
|
github.com/pkg/errors v0.8.1/go.mod h1:bwawxfHBFNV+L2hUp1rHADufV3IMtnDRdf1r5NINEl0=
|
||||||
github.com/pkg/sftp v1.8.3 h1:9jSe2SxTM8/3bXZjtqnkgTBW+lA8db0knZJyns7gpBA=
|
github.com/pkg/sftp v1.10.0 h1:DGA1KlA9esU6WcicH+P8PxFZOl15O6GYtab1cIJdOlE=
|
||||||
github.com/pkg/sftp v1.8.3/go.mod h1:NxmoDg/QLVWluQDUYG7XBZTLUpKeFa8e3aMf1BfjyHk=
|
github.com/pkg/sftp v1.10.0/go.mod h1:NxmoDg/QLVWluQDUYG7XBZTLUpKeFa8e3aMf1BfjyHk=
|
||||||
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/prometheus/client_golang v0.8.0/go.mod h1:7SWBe2y4D6OKWSNQJUaRYU/AaXPKyh/dDVn+NZz0KFw=
|
||||||
|
github.com/prometheus/client_model v0.0.0-20180712105110-5c3871d89910/go.mod h1:MbSGuTsp3dbXC40dX6PRTWyKYBIrTGTE9sqQNg2J8bo=
|
||||||
|
github.com/prometheus/common v0.0.0-20180801064454-c7de2306084e/go.mod h1:daVV7qP5qjZbuso7PdcryaAu0sAZbrN9i7WWcTMWvro=
|
||||||
|
github.com/prometheus/procfs v0.0.0-20180725123919-05ee40e3a273/go.mod h1:c3At6R/oaqEKCNdg8wHV1ftS6bRYblBhIjjI8uT2IGk=
|
||||||
github.com/rfjakob/eme v0.0.0-20171028163933-2222dbd4ba46 h1:w2CpS5muK+jyydnmlkqpAhzKmHmMBzBkfYUDjQNS1Dk=
|
github.com/rfjakob/eme v0.0.0-20171028163933-2222dbd4ba46 h1:w2CpS5muK+jyydnmlkqpAhzKmHmMBzBkfYUDjQNS1Dk=
|
||||||
github.com/rfjakob/eme v0.0.0-20171028163933-2222dbd4ba46/go.mod h1:U2bmx0hDj8EyDdcxmD5t3XHDnBFnyNNc22n1R4008eM=
|
github.com/rfjakob/eme v0.0.0-20171028163933-2222dbd4ba46/go.mod h1:U2bmx0hDj8EyDdcxmD5t3XHDnBFnyNNc22n1R4008eM=
|
||||||
github.com/russross/blackfriday v1.5.2 h1:HyvC0ARfnZBqnXwABFeSZHpKvJHJJfPz81GNueLj0oo=
|
github.com/russross/blackfriday v1.5.2 h1:HyvC0ARfnZBqnXwABFeSZHpKvJHJJfPz81GNueLj0oo=
|
||||||
github.com/russross/blackfriday v1.5.2/go.mod h1:JO/DiYxRf+HjHt06OyowR9PTA263kcR/rfWxYHBV53g=
|
github.com/russross/blackfriday v1.5.2/go.mod h1:JO/DiYxRf+HjHt06OyowR9PTA263kcR/rfWxYHBV53g=
|
||||||
|
github.com/sergi/go-diff v1.0.0/go.mod h1:0CfEIISq7TuYL3j771MWULgwwjU+GofnZX9QAmXWZgo=
|
||||||
github.com/sevlyar/go-daemon v0.1.4 h1:Ayxp/9SNHwPBjV+kKbnHl2ch6rhxTu08jfkGkoxgULQ=
|
github.com/sevlyar/go-daemon v0.1.4 h1:Ayxp/9SNHwPBjV+kKbnHl2ch6rhxTu08jfkGkoxgULQ=
|
||||||
github.com/sevlyar/go-daemon v0.1.4/go.mod h1:6dJpPatBT9eUwM5VCw9Bt6CdX9Tk6UWvhW3MebLDRKE=
|
github.com/sevlyar/go-daemon v0.1.4/go.mod h1:6dJpPatBT9eUwM5VCw9Bt6CdX9Tk6UWvhW3MebLDRKE=
|
||||||
|
github.com/shurcooL/component v0.0.0-20170202220835-f88ec8f54cc4/go.mod h1:XhFIlyj5a1fBNx5aJTbKoIq0mNaPvOagO+HjB3EtxrY=
|
||||||
|
github.com/shurcooL/events v0.0.0-20181021180414-410e4ca65f48/go.mod h1:5u70Mqkb5O5cxEA8nxTsgrgLehJeAw6Oc4Ab1c/P1HM=
|
||||||
|
github.com/shurcooL/github_flavored_markdown v0.0.0-20181002035957-2122de532470/go.mod h1:2dOwnU2uBioM+SGy2aZoq1f/Sd1l9OkAeAUvjSyvgU0=
|
||||||
|
github.com/shurcooL/go v0.0.0-20180423040247-9e1955d9fb6e/go.mod h1:TDJrrUr11Vxrven61rcy3hJMUqaf/CLWYhHNPmT14Lk=
|
||||||
|
github.com/shurcooL/go-goon v0.0.0-20170922171312-37c2f522c041/go.mod h1:N5mDOmsrJOB+vfqUK+7DmDyjhSLIIBnXo9lvZJj3MWQ=
|
||||||
|
github.com/shurcooL/gofontwoff v0.0.0-20180329035133-29b52fc0a18d/go.mod h1:05UtEgK5zq39gLST6uB0cf3NEHjETfB4Fgr3Gx5R9Vw=
|
||||||
|
github.com/shurcooL/gopherjslib v0.0.0-20160914041154-feb6d3990c2c/go.mod h1:8d3azKNyqcHP1GaQE/c6dDgjkgSx2BZ4IoEi4F1reUI=
|
||||||
|
github.com/shurcooL/highlight_diff v0.0.0-20170515013008-09bb4053de1b/go.mod h1:ZpfEhSmds4ytuByIcDnOLkTHGUI6KNqRNPDLHDk+mUU=
|
||||||
|
github.com/shurcooL/highlight_go v0.0.0-20181028180052-98c3abbbae20/go.mod h1:UDKB5a1T23gOMUJrI+uSuH0VRDStOiUVSjBTRDVBVag=
|
||||||
|
github.com/shurcooL/home v0.0.0-20181020052607-80b7ffcb30f9/go.mod h1:+rgNQw2P9ARFAs37qieuu7ohDNQ3gds9msbT2yn85sg=
|
||||||
|
github.com/shurcooL/htmlg v0.0.0-20170918183704-d01228ac9e50/go.mod h1:zPn1wHpTIePGnXSHpsVPWEktKXHr6+SS6x/IKRb7cpw=
|
||||||
|
github.com/shurcooL/httperror v0.0.0-20170206035902-86b7830d14cc/go.mod h1:aYMfkZ6DWSJPJ6c4Wwz3QtW22G7mf/PEgaB9k/ik5+Y=
|
||||||
github.com/shurcooL/httpfs v0.0.0-20171119174359-809beceb2371 h1:SWV2fHctRpRrp49VXJ6UZja7gU9QLHwRpIPBN89SKEo=
|
github.com/shurcooL/httpfs v0.0.0-20171119174359-809beceb2371 h1:SWV2fHctRpRrp49VXJ6UZja7gU9QLHwRpIPBN89SKEo=
|
||||||
github.com/shurcooL/httpfs v0.0.0-20171119174359-809beceb2371/go.mod h1:ZY1cvUeJuFPAdZ/B6v7RHavJWZn2YPVFQ1OSXhCGOkg=
|
github.com/shurcooL/httpfs v0.0.0-20171119174359-809beceb2371/go.mod h1:ZY1cvUeJuFPAdZ/B6v7RHavJWZn2YPVFQ1OSXhCGOkg=
|
||||||
github.com/shurcooL/vfsgen v0.0.0-20181202132449-6a9ea43bcacd h1:ug7PpSOB5RBPK1Kg6qskGBoP3Vnj/aNYFTznWvlkGo0=
|
github.com/shurcooL/httpgzip v0.0.0-20180522190206-b1c53ac65af9/go.mod h1:919LwcH0M7/W4fcZ0/jy0qGght1GIhqyS/EgWGH2j5Q=
|
||||||
github.com/shurcooL/vfsgen v0.0.0-20181202132449-6a9ea43bcacd/go.mod h1:TrYk7fJVaAttu97ZZKrO9UbRa8izdowaMIZcxYMbVaw=
|
github.com/shurcooL/issues v0.0.0-20181008053335-6292fdc1e191/go.mod h1:e2qWDig5bLteJ4fwvDAc2NHzqFEthkqn7aOZAOpj+PQ=
|
||||||
github.com/skratchdot/open-golang v0.0.0-20160302144031-75fb7ed4208c h1:fyKiXKO1/I/B6Y2U8T7WdQGWzwehOuGIrljPtt7YTTI=
|
github.com/shurcooL/issuesapp v0.0.0-20180602232740-048589ce2241/go.mod h1:NPpHK2TI7iSaM0buivtFUc9offApnI0Alt/K8hcHy0I=
|
||||||
github.com/skratchdot/open-golang v0.0.0-20160302144031-75fb7ed4208c/go.mod h1:sUM3LWHvSMaG192sy56D9F7CNvL7jUJVXoqM1QKLnog=
|
github.com/shurcooL/notifications v0.0.0-20181007000457-627ab5aea122/go.mod h1:b5uSkrEVM1jQUspwbixRBhaIjIzL2xazXp6kntxYle0=
|
||||||
github.com/smartystreets/assertions v0.0.0-20180927180507-b2de0cb4f26d h1:zE9ykElWQ6/NYmHa3jpm/yHnI4xSofP+UP6SpjHcSeM=
|
github.com/shurcooL/octicon v0.0.0-20181028054416-fa4f57f9efb2/go.mod h1:eWdoE5JD4R5UVWDucdOPg1g2fqQRq78IQa9zlOV1vpQ=
|
||||||
github.com/smartystreets/assertions v0.0.0-20180927180507-b2de0cb4f26d/go.mod h1:OnSkiWE9lh6wB0YB77sQom3nweQdgAjqCqsofrRNTgc=
|
github.com/shurcooL/reactions v0.0.0-20181006231557-f2e0b4ca5b82/go.mod h1:TCR1lToEk4d2s07G3XGfz2QrgHXg4RJBvjrOozvoWfk=
|
||||||
|
github.com/shurcooL/sanitized_anchor_name v0.0.0-20170918181015-86672fcb3f95/go.mod h1:1NzhyTcUVG4SuEtjjoZeVRXNmyL/1OwPU0+IJeTBvfc=
|
||||||
|
github.com/shurcooL/users v0.0.0-20180125191416-49c67e49c537/go.mod h1:QJTqeLYEDaXHZDBsXlPCDqdhQuJkuw4NOtaxYe3xii4=
|
||||||
|
github.com/shurcooL/webdavfs v0.0.0-20170829043945-18c3829fa133/go.mod h1:hKmq5kWdCj2z2KEozexVbfEZIWiTjhE0+UjmZgPqehw=
|
||||||
|
github.com/skratchdot/open-golang v0.0.0-20190104022628-a2dfa6d0dab6 h1:cGT4dcuEyBwwu/v6tosyqcDp2yoIo/LwjMGixUvg3nU=
|
||||||
|
github.com/skratchdot/open-golang v0.0.0-20190104022628-a2dfa6d0dab6/go.mod h1:sUM3LWHvSMaG192sy56D9F7CNvL7jUJVXoqM1QKLnog=
|
||||||
|
github.com/smartystreets/assertions v0.0.0-20190116191733-b6c0e53d7304 h1:Jpy1PXuP99tXNrhbq2BaPz9B+jNAvH1JPQQpG/9GCXY=
|
||||||
|
github.com/smartystreets/assertions v0.0.0-20190116191733-b6c0e53d7304/go.mod h1:OnSkiWE9lh6wB0YB77sQom3nweQdgAjqCqsofrRNTgc=
|
||||||
github.com/smartystreets/goconvey v0.0.0-20181108003508-044398e4856c h1:Ho+uVpkel/udgjbwB5Lktg9BtvJSh2DT0Hi6LPSyI2w=
|
github.com/smartystreets/goconvey v0.0.0-20181108003508-044398e4856c h1:Ho+uVpkel/udgjbwB5Lktg9BtvJSh2DT0Hi6LPSyI2w=
|
||||||
github.com/smartystreets/goconvey v0.0.0-20181108003508-044398e4856c/go.mod h1:XDJAKZRPZ1CvBcN2aX5YOUTYGHki24fSF0Iv48Ibg0s=
|
github.com/smartystreets/goconvey v0.0.0-20181108003508-044398e4856c/go.mod h1:XDJAKZRPZ1CvBcN2aX5YOUTYGHki24fSF0Iv48Ibg0s=
|
||||||
|
github.com/sourcegraph/annotate v0.0.0-20160123013949-f4cad6c6324d/go.mod h1:UdhH50NIW0fCiwBSr0co2m7BnFLdv4fQTgdqdJTHFeE=
|
||||||
|
github.com/sourcegraph/syntaxhighlight v0.0.0-20170531221838-bd320f5d308e/go.mod h1:HuIsMU8RRBOtsCgI77wP899iHVBQpCmg4ErYMZB+2IA=
|
||||||
github.com/spf13/cobra v0.0.3 h1:ZlrZ4XsMRm04Fr5pSFxBgfND2EBVa1nLpiy1stUsX/8=
|
github.com/spf13/cobra v0.0.3 h1:ZlrZ4XsMRm04Fr5pSFxBgfND2EBVa1nLpiy1stUsX/8=
|
||||||
github.com/spf13/cobra v0.0.3/go.mod h1:1l0Ry5zgKvJasoi3XT1TypsSe7PqH0Sj9dhYf7v3XqQ=
|
github.com/spf13/cobra v0.0.3/go.mod h1:1l0Ry5zgKvJasoi3XT1TypsSe7PqH0Sj9dhYf7v3XqQ=
|
||||||
github.com/spf13/pflag v1.0.3 h1:zPAT6CGy6wXeQ7NtTnaTerfKOsV6V6F8agHXFiazDkg=
|
github.com/spf13/pflag v1.0.3 h1:zPAT6CGy6wXeQ7NtTnaTerfKOsV6V6F8agHXFiazDkg=
|
||||||
github.com/spf13/pflag v1.0.3/go.mod h1:DYY7MBk1bdzusC3SYhjObp+wFpr4gzcvqqNjLnInEg4=
|
github.com/spf13/pflag v1.0.3/go.mod h1:DYY7MBk1bdzusC3SYhjObp+wFpr4gzcvqqNjLnInEg4=
|
||||||
|
github.com/stretchr/objx v0.1.0/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME=
|
||||||
github.com/stretchr/testify v1.2.2 h1:bSDNvY7ZPG5RlJ8otE/7V6gMiyenm9RtJ7IUVIAoJ1w=
|
github.com/stretchr/testify v1.2.2 h1:bSDNvY7ZPG5RlJ8otE/7V6gMiyenm9RtJ7IUVIAoJ1w=
|
||||||
github.com/stretchr/testify v1.2.2/go.mod h1:a8OnRcib4nhh0OaRAV+Yts87kKdq0PP7pXfy6kDkUVs=
|
github.com/stretchr/testify v1.2.2/go.mod h1:a8OnRcib4nhh0OaRAV+Yts87kKdq0PP7pXfy6kDkUVs=
|
||||||
github.com/t3rm1n4l/go-mega v0.0.0-20180817194457-854bf31d998b h1:Yt/fB2INfWb29Vcya4X0BNCLmObKmDdt0o0IndFzEY8=
|
github.com/stretchr/testify v1.3.0 h1:TivCn/peBQ7UY8ooIcPgZFpTNSz0Q2U6UrFlUfqbe0Q=
|
||||||
github.com/t3rm1n4l/go-mega v0.0.0-20180817194457-854bf31d998b/go.mod h1:ObGZcW2yPzFXEsaTZVMgLKhdUSHMYM3aEDE/u7YnfU8=
|
github.com/stretchr/testify v1.3.0/go.mod h1:M5WIy9Dh21IEIfnGCwXGc5bZfKNJtfHm1UVUgZn+9EI=
|
||||||
github.com/t3rm1n4l/go-mega v0.0.0-20190204171941-1b8ac3503be8 h1:pRD8qAFGq7u9wK/lTg64wkdpCZh4lsTvRoEzQWWLMGE=
|
|
||||||
github.com/t3rm1n4l/go-mega v0.0.0-20190204171941-1b8ac3503be8/go.mod h1:XWL4vDyd3JKmJx+hZWUVgCNmmhZ2dTBcaNDcxH465s0=
|
|
||||||
github.com/t3rm1n4l/go-mega v0.0.0-20190205172012-55a226cf41da h1:hWHAUYEtxnj8tb2pHj5WPGEIE8leSi/3cMND8fUjsBE=
|
github.com/t3rm1n4l/go-mega v0.0.0-20190205172012-55a226cf41da h1:hWHAUYEtxnj8tb2pHj5WPGEIE8leSi/3cMND8fUjsBE=
|
||||||
github.com/t3rm1n4l/go-mega v0.0.0-20190205172012-55a226cf41da/go.mod h1:XWL4vDyd3JKmJx+hZWUVgCNmmhZ2dTBcaNDcxH465s0=
|
github.com/t3rm1n4l/go-mega v0.0.0-20190205172012-55a226cf41da/go.mod h1:XWL4vDyd3JKmJx+hZWUVgCNmmhZ2dTBcaNDcxH465s0=
|
||||||
|
github.com/tarm/serial v0.0.0-20180830185346-98f6abe2eb07/go.mod h1:kDXzergiv9cbyO7IOYJZWg1U88JhDg3PB6klq9Hg2pA=
|
||||||
github.com/xanzy/ssh-agent v0.2.0 h1:Adglfbi5p9Z0BmK2oKU9nTG+zKfniSfnaMYB+ULd+Ro=
|
github.com/xanzy/ssh-agent v0.2.0 h1:Adglfbi5p9Z0BmK2oKU9nTG+zKfniSfnaMYB+ULd+Ro=
|
||||||
github.com/xanzy/ssh-agent v0.2.0/go.mod h1:0NyE30eGUDliuLEHJgYte/zncp2zdTStcOnWhgSqHD8=
|
github.com/xanzy/ssh-agent v0.2.0/go.mod h1:0NyE30eGUDliuLEHJgYte/zncp2zdTStcOnWhgSqHD8=
|
||||||
github.com/yunify/qingstor-sdk-go v2.2.15+incompatible h1:/Z0q3/eSMoPYAuRmhjWtuGSmVVciFC6hfm3yfCKuvz0=
|
github.com/yunify/qingstor-sdk-go v2.2.15+incompatible h1:/Z0q3/eSMoPYAuRmhjWtuGSmVVciFC6hfm3yfCKuvz0=
|
||||||
github.com/yunify/qingstor-sdk-go v2.2.15+incompatible/go.mod h1:w6wqLDQ5bBTzxGJ55581UrSwLrsTAsdo9N6yX/8d9RY=
|
github.com/yunify/qingstor-sdk-go v2.2.15+incompatible/go.mod h1:w6wqLDQ5bBTzxGJ55581UrSwLrsTAsdo9N6yX/8d9RY=
|
||||||
golang.org/x/crypto v0.0.0-20181112202954-3d3f9f413869 h1:kkXA53yGe04D0adEYJwEVQjeBppL01Exg+fnMjfUraU=
|
go.etcd.io/bbolt v1.3.2 h1:Z/90sZLPOeCy2PwprqkFa25PdkusRzaj9P8zm/KNyvk=
|
||||||
golang.org/x/crypto v0.0.0-20181112202954-3d3f9f413869/go.mod h1:6SG95UA2DQfeDnfUPMdvaQW0Q7yPrPDi9nlGo2tz2b4=
|
go.etcd.io/bbolt v1.3.2/go.mod h1:IbVyRI1SCnLcuJnV2u8VeU0CEYM7e686BmAb1XKL+uU=
|
||||||
|
go.opencensus.io v0.18.0/go.mod h1:vKdFvxhtzZ9onBp9VKHK8z/sRpBMnKAsufL7wlDrCOA=
|
||||||
|
go4.org v0.0.0-20180809161055-417644f6feb5/go.mod h1:MkTOUMDaeVYJUOUsaDXIhWPZYa1yOyC1qaOBpL57BhE=
|
||||||
|
golang.org/x/build v0.0.0-20190111050920-041ab4dc3f9d/go.mod h1:OWs+y06UdEOHN4y+MfF/py+xQ/tYqIWW03b70/CG9Rw=
|
||||||
|
golang.org/x/crypto v0.0.0-20181030102418-4d3f4d9ffa16/go.mod h1:6SG95UA2DQfeDnfUPMdvaQW0Q7yPrPDi9nlGo2tz2b4=
|
||||||
golang.org/x/crypto v0.0.0-20190131182504-b8fe1690c613 h1:MQ/ZZiDsUapFFiMS+vzwXkCTeEKaum+Do5rINYJDmxc=
|
golang.org/x/crypto v0.0.0-20190131182504-b8fe1690c613 h1:MQ/ZZiDsUapFFiMS+vzwXkCTeEKaum+Do5rINYJDmxc=
|
||||||
golang.org/x/crypto v0.0.0-20190131182504-b8fe1690c613/go.mod h1:6SG95UA2DQfeDnfUPMdvaQW0Q7yPrPDi9nlGo2tz2b4=
|
golang.org/x/crypto v0.0.0-20190131182504-b8fe1690c613/go.mod h1:6SG95UA2DQfeDnfUPMdvaQW0Q7yPrPDi9nlGo2tz2b4=
|
||||||
|
golang.org/x/crypto v0.0.0-20190208162236-193df9c0f06f h1:ETU2VEl7TnT5bl7IvuKEzTDpplg5wzGYsOCAPhdoEIg=
|
||||||
|
golang.org/x/crypto v0.0.0-20190208162236-193df9c0f06f/go.mod h1:6SG95UA2DQfeDnfUPMdvaQW0Q7yPrPDi9nlGo2tz2b4=
|
||||||
|
golang.org/x/exp v0.0.0-20190121172915-509febef88a4/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA=
|
||||||
|
golang.org/x/lint v0.0.0-20180702182130-06c8688daad7/go.mod h1:UVdnD1Gm6xHRNCYTkRU2/jEulfH38KcIWyp/GAMgvoE=
|
||||||
|
golang.org/x/lint v0.0.0-20181026193005-c67002cb31c3/go.mod h1:UVdnD1Gm6xHRNCYTkRU2/jEulfH38KcIWyp/GAMgvoE=
|
||||||
golang.org/x/net v0.0.0-20180724234803-3673e40ba225/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4=
|
golang.org/x/net v0.0.0-20180724234803-3673e40ba225/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4=
|
||||||
golang.org/x/net v0.0.0-20181114220301-adae6a3d119a h1:gOpx8G595UYyvj8UK4+OFyY4rx037g3fmfhe5SasG3U=
|
golang.org/x/net v0.0.0-20180826012351-8a410e7b638d/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4=
|
||||||
golang.org/x/net v0.0.0-20181114220301-adae6a3d119a/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4=
|
golang.org/x/net v0.0.0-20180906233101-161cd47e91fd/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4=
|
||||||
golang.org/x/oauth2 v0.0.0-20181120190819-8f65e3013eba h1:YDkOrzGLLYybtuP6ZgebnO4OWYEYVMFSniazXsxrFN8=
|
golang.org/x/net v0.0.0-20181029044818-c44066c5c816/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4=
|
||||||
golang.org/x/oauth2 v0.0.0-20181120190819-8f65e3013eba/go.mod h1:N/0e6XlmueqKjAGxoOufVs8QHGRruUQn6yWY3a++T0U=
|
golang.org/x/net v0.0.0-20181106065722-10aee1819953/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4=
|
||||||
|
golang.org/x/net v0.0.0-20190108225652-1e06a53dbb7e/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4=
|
||||||
|
golang.org/x/net v0.0.0-20190206173232-65e2d4e15006 h1:bfLnR+k0tq5Lqt6dflRLcZiz6UaXCMt3vhYJ1l4FQ80=
|
||||||
|
golang.org/x/net v0.0.0-20190206173232-65e2d4e15006/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4=
|
||||||
|
golang.org/x/oauth2 v0.0.0-20180821212333-d2e6202438be/go.mod h1:N/0e6XlmueqKjAGxoOufVs8QHGRruUQn6yWY3a++T0U=
|
||||||
|
golang.org/x/oauth2 v0.0.0-20181017192945-9dcd33a902f4/go.mod h1:N/0e6XlmueqKjAGxoOufVs8QHGRruUQn6yWY3a++T0U=
|
||||||
|
golang.org/x/oauth2 v0.0.0-20181203162652-d668ce993890/go.mod h1:N/0e6XlmueqKjAGxoOufVs8QHGRruUQn6yWY3a++T0U=
|
||||||
|
golang.org/x/oauth2 v0.0.0-20190130055435-99b60b757ec1 h1:VeAkjQVzKLmu+JnFcK96TPbkuaTIqwGGAzQ9hgwPjVg=
|
||||||
|
golang.org/x/oauth2 v0.0.0-20190130055435-99b60b757ec1/go.mod h1:gOpvHmFTYa4IltrdGE7lF6nIHvwfUNPOp7c8zoXwtLw=
|
||||||
|
golang.org/x/perf v0.0.0-20180704124530-6e6d33e29852/go.mod h1:JLpeXjPJfIyPr5TlbXLkXWLhP8nz10XfvxElABhCtcw=
|
||||||
|
golang.org/x/sync v0.0.0-20180314180146-1d60e4601c6f/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
|
||||||
golang.org/x/sync v0.0.0-20181108010431-42b317875d0f h1:Bl/8QSvNqXvPGPGXa2z5xUTmV7VDcZyvRZ+QQXkXTZQ=
|
golang.org/x/sync v0.0.0-20181108010431-42b317875d0f h1:Bl/8QSvNqXvPGPGXa2z5xUTmV7VDcZyvRZ+QQXkXTZQ=
|
||||||
golang.org/x/sync v0.0.0-20181108010431-42b317875d0f/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
|
golang.org/x/sync v0.0.0-20181108010431-42b317875d0f/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
|
||||||
golang.org/x/sys v0.0.0-20181122145206-62eef0e2fa9b h1:MQE+LT/ABUuuvEZ+YQAMSXindAdUh7slEmAkup74op4=
|
golang.org/x/sync v0.0.0-20181221193216-37e7f081c4d4 h1:YUO/7uOKsKeq9UokNS62b8FYywz3ker1l1vDZRCRefw=
|
||||||
golang.org/x/sys v0.0.0-20181122145206-62eef0e2fa9b/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY=
|
golang.org/x/sync v0.0.0-20181221193216-37e7f081c4d4/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
|
||||||
|
golang.org/x/sys v0.0.0-20180830151530-49385e6e1522/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY=
|
||||||
|
golang.org/x/sys v0.0.0-20180909124046-d0be0721c37e/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY=
|
||||||
|
golang.org/x/sys v0.0.0-20181029174526-d69651ed3497/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY=
|
||||||
|
golang.org/x/sys v0.0.0-20190204203706-41f3e6584952 h1:FDfvYgoVsA7TTZSbgiqjAbfPbK47CNHdWl3h/PJtii0=
|
||||||
|
golang.org/x/sys v0.0.0-20190204203706-41f3e6584952/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY=
|
||||||
golang.org/x/text v0.3.0 h1:g61tztE5qeGQ89tm6NTjjM9VPIm088od1l6aSorWRWg=
|
golang.org/x/text v0.3.0 h1:g61tztE5qeGQ89tm6NTjjM9VPIm088od1l6aSorWRWg=
|
||||||
golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ=
|
golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ=
|
||||||
|
golang.org/x/text v0.3.1-0.20180807135948-17ff2d5776d2 h1:z99zHgr7hKfrUcX/KsoJk5FJfjTceCKIp96+biqP4To=
|
||||||
|
golang.org/x/text v0.3.1-0.20180807135948-17ff2d5776d2/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ=
|
||||||
|
golang.org/x/time v0.0.0-20180412165947-fbb02b2291d2/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ=
|
||||||
golang.org/x/time v0.0.0-20181108054448-85acf8d2951c h1:fqgJT0MGcGpPgpWU7VRdRjuArfcOvC4AoJmILihzhDg=
|
golang.org/x/time v0.0.0-20181108054448-85acf8d2951c h1:fqgJT0MGcGpPgpWU7VRdRjuArfcOvC4AoJmILihzhDg=
|
||||||
golang.org/x/time v0.0.0-20181108054448-85acf8d2951c/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ=
|
golang.org/x/time v0.0.0-20181108054448-85acf8d2951c/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ=
|
||||||
google.golang.org/api v0.0.0-20181120235003-faade3cbb06a h1:yMfgT1baklxtECXVk3UtZBELVXtVhDbK3/7xLFkFypw=
|
golang.org/x/tools v0.0.0-20180828015842-6cd1fcedba52/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ=
|
||||||
google.golang.org/api v0.0.0-20181120235003-faade3cbb06a/go.mod h1:4mhQ8q/RsB7i+udVvVy5NUi08OU8ZlA0gRVgrF7VFY0=
|
golang.org/x/tools v0.0.0-20181030000716-a0a13e073c7b/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ=
|
||||||
|
google.golang.org/api v0.0.0-20180910000450-7ca32eb868bf/go.mod h1:4mhQ8q/RsB7i+udVvVy5NUi08OU8ZlA0gRVgrF7VFY0=
|
||||||
|
google.golang.org/api v0.0.0-20181030000543-1d582fd0359e/go.mod h1:4mhQ8q/RsB7i+udVvVy5NUi08OU8ZlA0gRVgrF7VFY0=
|
||||||
|
google.golang.org/api v0.1.0 h1:K6z2u68e86TPdSdefXdzvXgR1zEMa+459vBSfWYAZkI=
|
||||||
|
google.golang.org/api v0.1.0/go.mod h1:UGEZY7KEX120AnNLIHFMKIo4obdJhkp2tPbaPlQx13Y=
|
||||||
|
google.golang.org/appengine v1.1.0/go.mod h1:EbEs0AVv82hx2wNQdGPgUI5lhzA/G0D9YwlJXL52JkM=
|
||||||
|
google.golang.org/appengine v1.2.0/go.mod h1:xpcJRLb0r/rnEns0DIKYYv+WjYCduHsrkT7/EB5XEv4=
|
||||||
google.golang.org/appengine v1.3.0 h1:FBSsiFRMz3LBeXIomRnVzrQwSDj4ibvcRexLG0LZGQk=
|
google.golang.org/appengine v1.3.0 h1:FBSsiFRMz3LBeXIomRnVzrQwSDj4ibvcRexLG0LZGQk=
|
||||||
google.golang.org/appengine v1.3.0/go.mod h1:xpcJRLb0r/rnEns0DIKYYv+WjYCduHsrkT7/EB5XEv4=
|
google.golang.org/appengine v1.3.0/go.mod h1:xpcJRLb0r/rnEns0DIKYYv+WjYCduHsrkT7/EB5XEv4=
|
||||||
|
google.golang.org/appengine v1.4.0 h1:/wp5JvzpHIxhs/dumFmF7BXTf3Z+dd4uXta4kVyO508=
|
||||||
|
google.golang.org/appengine v1.4.0/go.mod h1:xpcJRLb0r/rnEns0DIKYYv+WjYCduHsrkT7/EB5XEv4=
|
||||||
|
google.golang.org/genproto v0.0.0-20180817151627-c66870c02cf8/go.mod h1:JiN7NxoALGmiZfu7CAH4rXhgtRTLTxftemlI0sWmxmc=
|
||||||
|
google.golang.org/genproto v0.0.0-20180831171423-11092d34479b/go.mod h1:JiN7NxoALGmiZfu7CAH4rXhgtRTLTxftemlI0sWmxmc=
|
||||||
|
google.golang.org/genproto v0.0.0-20181029155118-b69ba1387ce2/go.mod h1:JiN7NxoALGmiZfu7CAH4rXhgtRTLTxftemlI0sWmxmc=
|
||||||
|
google.golang.org/genproto v0.0.0-20181202183823-bd91e49a0898/go.mod h1:7Ep/1NZk928CDR8SjdVbjWNpdIf6nzjE3BTgJDr2Atg=
|
||||||
|
google.golang.org/genproto v0.0.0-20190201180003-4b09977fb922/go.mod h1:L3J43x8/uS+qIUoksaLKe6OS3nUKxOKuIFz1sl2/jx4=
|
||||||
|
google.golang.org/grpc v1.14.0/go.mod h1:yo6s7OP7yaDglbqo1J04qKzAhqBH6lvTonzMVmEdcZw=
|
||||||
|
google.golang.org/grpc v1.16.0/go.mod h1:0JHn/cJsOMiMfNA9+DeHDlAU7KAAB5GDlYFpa9MZMio=
|
||||||
|
google.golang.org/grpc v1.17.0/go.mod h1:6QZJwpn2B+Zp71q/5VxRsJ6NXXVCE5NRUHRo+f3cWCs=
|
||||||
gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405 h1:yhCVgyC4o1eVCa2tZl7eS0r+SDo693bJlVdllGtEeKM=
|
gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405 h1:yhCVgyC4o1eVCa2tZl7eS0r+SDo693bJlVdllGtEeKM=
|
||||||
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-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0=
|
gopkg.in/check.v1 v1.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0=
|
||||||
gopkg.in/check.v1 v1.0.0-20180628173108-788fd7840127 h1:qIbj1fsPNlZgppZ+VLlY7N33q108Sa+fhmuc+sWQYwY=
|
gopkg.in/check.v1 v1.0.0-20180628173108-788fd7840127 h1:qIbj1fsPNlZgppZ+VLlY7N33q108Sa+fhmuc+sWQYwY=
|
||||||
gopkg.in/check.v1 v1.0.0-20180628173108-788fd7840127/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0=
|
gopkg.in/check.v1 v1.0.0-20180628173108-788fd7840127/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0=
|
||||||
|
gopkg.in/inf.v0 v0.9.1/go.mod h1:cWUDdTG/fYaXco+Dcufb5Vnc6Gp2YChqWtbxRZE0mXw=
|
||||||
gopkg.in/yaml.v2 v2.2.1 h1:mUhvW9EsL+naU5Q3cakzfE91YhliOondGd6ZrsDBHQE=
|
gopkg.in/yaml.v2 v2.2.1 h1:mUhvW9EsL+naU5Q3cakzfE91YhliOondGd6ZrsDBHQE=
|
||||||
gopkg.in/yaml.v2 v2.2.1/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI=
|
gopkg.in/yaml.v2 v2.2.1/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI=
|
||||||
|
gopkg.in/yaml.v2 v2.2.2 h1:ZCJp+EgiOT7lHqUV2J862kp8Qj64Jo6az82+3Td9dZw=
|
||||||
|
gopkg.in/yaml.v2 v2.2.2/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI=
|
||||||
|
grpc.go4.org v0.0.0-20170609214715-11d0a25b4919/go.mod h1:77eQGdRu53HpSqPFJFmuJdjuHRquDANNeA4x7B8WQ9o=
|
||||||
|
honnef.co/go/tools v0.0.0-20180728063816-88497007e858/go.mod h1:rf3lG4BRIbNafJWhAfAdb/ePZxsR/4RtNHQocxwk9r4=
|
||||||
|
honnef.co/go/tools v0.0.0-20190106161140-3f1c8253044a/go.mod h1:rf3lG4BRIbNafJWhAfAdb/ePZxsR/4RtNHQocxwk9r4=
|
||||||
|
sourcegraph.com/sourcegraph/go-diff v0.5.0/go.mod h1:kuch7UrkMzY0X+p9CRK03kfuPQ2zzQcaEFbx8wA8rck=
|
||||||
|
sourcegraph.com/sqs/pbtypes v0.0.0-20180604144634-d3ebe8f20ae4/go.mod h1:ketZ/q3QxT9HOBeFhu6RdvsftgpsbFHBF5Cas6cDKZ0=
|
||||||
|
|
24
vendor/cloud.google.com/go/compute/metadata/metadata.go
generated
vendored
24
vendor/cloud.google.com/go/compute/metadata/metadata.go
generated
vendored
|
@ -137,7 +137,7 @@ func testOnGCE() bool {
|
||||||
resc := make(chan bool, 2)
|
resc := make(chan bool, 2)
|
||||||
|
|
||||||
// Try two strategies in parallel.
|
// Try two strategies in parallel.
|
||||||
// See https://github.com/GoogleCloudPlatform/google-cloud-go/issues/194
|
// See https://github.com/googleapis/google-cloud-go/issues/194
|
||||||
go func() {
|
go func() {
|
||||||
req, _ := http.NewRequest("GET", "http://"+metadataIP, nil)
|
req, _ := http.NewRequest("GET", "http://"+metadataIP, nil)
|
||||||
req.Header.Set("User-Agent", userAgent)
|
req.Header.Set("User-Agent", userAgent)
|
||||||
|
@ -300,8 +300,8 @@ func (c *Client) getETag(suffix string) (value, etag string, err error) {
|
||||||
// being stable anyway.
|
// being stable anyway.
|
||||||
host = metadataIP
|
host = metadataIP
|
||||||
}
|
}
|
||||||
url := "http://" + host + "/computeMetadata/v1/" + suffix
|
u := "http://" + host + "/computeMetadata/v1/" + suffix
|
||||||
req, _ := http.NewRequest("GET", url, nil)
|
req, _ := http.NewRequest("GET", u, nil)
|
||||||
req.Header.Set("Metadata-Flavor", "Google")
|
req.Header.Set("Metadata-Flavor", "Google")
|
||||||
req.Header.Set("User-Agent", userAgent)
|
req.Header.Set("User-Agent", userAgent)
|
||||||
res, err := c.hc.Do(req)
|
res, err := c.hc.Do(req)
|
||||||
|
@ -312,13 +312,13 @@ func (c *Client) getETag(suffix string) (value, etag string, err error) {
|
||||||
if res.StatusCode == http.StatusNotFound {
|
if res.StatusCode == http.StatusNotFound {
|
||||||
return "", "", NotDefinedError(suffix)
|
return "", "", NotDefinedError(suffix)
|
||||||
}
|
}
|
||||||
if res.StatusCode != 200 {
|
|
||||||
return "", "", fmt.Errorf("status code %d trying to fetch %s", res.StatusCode, url)
|
|
||||||
}
|
|
||||||
all, err := ioutil.ReadAll(res.Body)
|
all, err := ioutil.ReadAll(res.Body)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return "", "", err
|
return "", "", err
|
||||||
}
|
}
|
||||||
|
if res.StatusCode != 200 {
|
||||||
|
return "", "", &Error{Code: res.StatusCode, Message: string(all)}
|
||||||
|
}
|
||||||
return string(all), res.Header.Get("Etag"), nil
|
return string(all), res.Header.Get("Etag"), nil
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -499,3 +499,15 @@ func (c *Client) Subscribe(suffix string, fn func(v string, ok bool) error) erro
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Error contains an error response from the server.
|
||||||
|
type Error struct {
|
||||||
|
// Code is the HTTP response status code.
|
||||||
|
Code int
|
||||||
|
// Message is the server response message.
|
||||||
|
Message string
|
||||||
|
}
|
||||||
|
|
||||||
|
func (e *Error) Error() string {
|
||||||
|
return fmt.Sprintf("compute: Received %d `%s`", e.Code, e.Message)
|
||||||
|
}
|
||||||
|
|
5
vendor/github.com/Azure/azure-storage-blob-go/azblob/sas_service.go
generated
vendored
5
vendor/github.com/Azure/azure-storage-blob-go/azblob/sas_service.go
generated
vendored
|
@ -81,6 +81,11 @@ func (v BlobSASSignatureValues) NewSASQueryParameters(sharedKeyCredential *Share
|
||||||
// Container/Blob-specific SAS parameters
|
// Container/Blob-specific SAS parameters
|
||||||
resource: resource,
|
resource: resource,
|
||||||
identifier: v.Identifier,
|
identifier: v.Identifier,
|
||||||
|
cacheControl: v.CacheControl,
|
||||||
|
contentDisposition: v.ContentDisposition,
|
||||||
|
contentEncoding: v.ContentEncoding,
|
||||||
|
contentLanguage: v.ContentLanguage,
|
||||||
|
contentType: v.ContentType,
|
||||||
|
|
||||||
// Calculated SAS signature
|
// Calculated SAS signature
|
||||||
signature: signature,
|
signature: signature,
|
||||||
|
|
4
vendor/github.com/Azure/azure-storage-blob-go/azblob/url_container.go
generated
vendored
4
vendor/github.com/Azure/azure-storage-blob-go/azblob/url_container.go
generated
vendored
|
@ -229,7 +229,7 @@ func (c ContainerURL) ChangeLease(ctx context.Context, leaseID string, proposedI
|
||||||
// For more information, see https://docs.microsoft.com/rest/api/storageservices/list-blobs.
|
// For more information, see https://docs.microsoft.com/rest/api/storageservices/list-blobs.
|
||||||
func (c ContainerURL) ListBlobsFlatSegment(ctx context.Context, marker Marker, o ListBlobsSegmentOptions) (*ListBlobsFlatSegmentResponse, error) {
|
func (c ContainerURL) ListBlobsFlatSegment(ctx context.Context, marker Marker, o ListBlobsSegmentOptions) (*ListBlobsFlatSegmentResponse, error) {
|
||||||
prefix, include, maxResults := o.pointers()
|
prefix, include, maxResults := o.pointers()
|
||||||
return c.client.ListBlobFlatSegment(ctx, prefix, marker.val, maxResults, include, nil, nil)
|
return c.client.ListBlobFlatSegment(ctx, prefix, marker.Val, maxResults, include, nil, nil)
|
||||||
}
|
}
|
||||||
|
|
||||||
// ListBlobsHierarchySegment returns a single segment of blobs starting from the specified Marker. Use an empty
|
// ListBlobsHierarchySegment returns a single segment of blobs starting from the specified Marker. Use an empty
|
||||||
|
@ -242,7 +242,7 @@ func (c ContainerURL) ListBlobsHierarchySegment(ctx context.Context, marker Mark
|
||||||
return nil, errors.New("snapshots are not supported in this listing operation")
|
return nil, errors.New("snapshots are not supported in this listing operation")
|
||||||
}
|
}
|
||||||
prefix, include, maxResults := o.pointers()
|
prefix, include, maxResults := o.pointers()
|
||||||
return c.client.ListBlobHierarchySegment(ctx, delimiter, prefix, marker.val, maxResults, include, nil, nil)
|
return c.client.ListBlobHierarchySegment(ctx, delimiter, prefix, marker.Val, maxResults, include, nil, nil)
|
||||||
}
|
}
|
||||||
|
|
||||||
// ListBlobsSegmentOptions defines options available when calling ListBlobs.
|
// ListBlobsSegmentOptions defines options available when calling ListBlobs.
|
||||||
|
|
2
vendor/github.com/Azure/azure-storage-blob-go/azblob/url_service.go
generated
vendored
2
vendor/github.com/Azure/azure-storage-blob-go/azblob/url_service.go
generated
vendored
|
@ -80,7 +80,7 @@ func appendToURLPath(u url.URL, name string) url.URL {
|
||||||
// https://docs.microsoft.com/rest/api/storageservices/list-containers2.
|
// https://docs.microsoft.com/rest/api/storageservices/list-containers2.
|
||||||
func (s ServiceURL) ListContainersSegment(ctx context.Context, marker Marker, o ListContainersSegmentOptions) (*ListContainersSegmentResponse, error) {
|
func (s ServiceURL) ListContainersSegment(ctx context.Context, marker Marker, o ListContainersSegmentOptions) (*ListContainersSegmentResponse, error) {
|
||||||
prefix, include, maxResults := o.pointers()
|
prefix, include, maxResults := o.pointers()
|
||||||
return s.client.ListContainersSegment(ctx, prefix, marker.val, maxResults, include, nil, nil)
|
return s.client.ListContainersSegment(ctx, prefix, marker.Val, maxResults, include, nil, nil)
|
||||||
}
|
}
|
||||||
|
|
||||||
// ListContainersOptions defines options available when calling ListContainers.
|
// ListContainersOptions defines options available when calling ListContainers.
|
||||||
|
|
2
vendor/github.com/Azure/azure-storage-blob-go/azblob/version.go
generated
vendored
2
vendor/github.com/Azure/azure-storage-blob-go/azblob/version.go
generated
vendored
|
@ -1,3 +1,3 @@
|
||||||
package azblob
|
package azblob
|
||||||
|
|
||||||
const serviceLibVersion = "0.3"
|
const serviceLibVersion = "0.5"
|
||||||
|
|
8
vendor/github.com/Azure/azure-storage-blob-go/azblob/zc_policy_request_log.go
generated
vendored
8
vendor/github.com/Azure/azure-storage-blob-go/azblob/zc_policy_request_log.go
generated
vendored
|
@ -109,8 +109,8 @@ func NewRequestLogPolicyFactory(o RequestLogOptions) pipeline.Factory {
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
|
|
||||||
// redactSigQueryParam redacts the 'sig' query parameter in URL's raw query to protect secret.
|
// RedactSigQueryParam redacts the 'sig' query parameter in URL's raw query to protect secret.
|
||||||
func redactSigQueryParam(rawQuery string) (bool, string) {
|
func RedactSigQueryParam(rawQuery string) (bool, string) {
|
||||||
rawQuery = strings.ToLower(rawQuery) // lowercase the string so we can look for ?sig= and &sig=
|
rawQuery = strings.ToLower(rawQuery) // lowercase the string so we can look for ?sig= and &sig=
|
||||||
sigFound := strings.Contains(rawQuery, "?sig=")
|
sigFound := strings.Contains(rawQuery, "?sig=")
|
||||||
if !sigFound {
|
if !sigFound {
|
||||||
|
@ -131,7 +131,7 @@ func redactSigQueryParam(rawQuery string) (bool, string) {
|
||||||
|
|
||||||
func prepareRequestForLogging(request pipeline.Request) *http.Request {
|
func prepareRequestForLogging(request pipeline.Request) *http.Request {
|
||||||
req := request
|
req := request
|
||||||
if sigFound, rawQuery := redactSigQueryParam(req.URL.RawQuery); sigFound {
|
if sigFound, rawQuery := RedactSigQueryParam(req.URL.RawQuery); sigFound {
|
||||||
// Make copy so we don't destroy the query parameters we actually need to send in the request
|
// Make copy so we don't destroy the query parameters we actually need to send in the request
|
||||||
req = request.Copy()
|
req = request.Copy()
|
||||||
req.Request.URL.RawQuery = rawQuery
|
req.Request.URL.RawQuery = rawQuery
|
||||||
|
@ -161,7 +161,7 @@ func prepareRequestForServiceLogging(request pipeline.Request) *http.Request {
|
||||||
req = request.Copy()
|
req = request.Copy()
|
||||||
url, err := url.Parse(req.Header.Get(key))
|
url, err := url.Parse(req.Header.Get(key))
|
||||||
if err == nil {
|
if err == nil {
|
||||||
if sigFound, rawQuery := redactSigQueryParam(url.RawQuery); sigFound {
|
if sigFound, rawQuery := RedactSigQueryParam(url.RawQuery); sigFound {
|
||||||
url.RawQuery = rawQuery
|
url.RawQuery = rawQuery
|
||||||
req.Header.Set(xMsCopySourceHeader, url.String())
|
req.Header.Set(xMsCopySourceHeader, url.String())
|
||||||
}
|
}
|
||||||
|
|
87
vendor/github.com/Azure/azure-storage-blob-go/azblob/zc_retry_reader.go
generated
vendored
87
vendor/github.com/Azure/azure-storage-blob-go/azblob/zc_retry_reader.go
generated
vendored
|
@ -5,6 +5,8 @@ import (
|
||||||
"io"
|
"io"
|
||||||
"net"
|
"net"
|
||||||
"net/http"
|
"net/http"
|
||||||
|
"strings"
|
||||||
|
"sync"
|
||||||
)
|
)
|
||||||
|
|
||||||
const CountToEnd = 0
|
const CountToEnd = 0
|
||||||
|
@ -28,6 +30,9 @@ type HTTPGetterInfo struct {
|
||||||
ETag ETag
|
ETag ETag
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// FailedReadNotifier is a function type that represents the notification function called when a read fails
|
||||||
|
type FailedReadNotifier func(failureCount int, lastError error, offset int64, count int64, willRetry bool)
|
||||||
|
|
||||||
// RetryReaderOptions contains properties which can help to decide when to do retry.
|
// RetryReaderOptions contains properties which can help to decide when to do retry.
|
||||||
type RetryReaderOptions struct {
|
type RetryReaderOptions struct {
|
||||||
// MaxRetryRequests specifies the maximum number of HTTP GET requests that will be made
|
// MaxRetryRequests specifies the maximum number of HTTP GET requests that will be made
|
||||||
|
@ -36,6 +41,20 @@ type RetryReaderOptions struct {
|
||||||
MaxRetryRequests int
|
MaxRetryRequests int
|
||||||
doInjectError bool
|
doInjectError bool
|
||||||
doInjectErrorRound int
|
doInjectErrorRound int
|
||||||
|
|
||||||
|
// NotifyFailedRead is called, if non-nil, after any failure to read. Expected usage is diagnostic logging.
|
||||||
|
NotifyFailedRead FailedReadNotifier
|
||||||
|
|
||||||
|
// TreatEarlyCloseAsError can be set to true to prevent retries after "read on closed response body". By default,
|
||||||
|
// retryReader has the following special behaviour: closing the response body before it is all read is treated as a
|
||||||
|
// retryable error. This is to allow callers to force a retry by closing the body from another goroutine (e.g. if the =
|
||||||
|
// read is too slow, caller may want to force a retry in the hope that the retry will be quicker). If
|
||||||
|
// TreatEarlyCloseAsError is true, then retryReader's special behaviour is suppressed, and "read on closed body" is instead
|
||||||
|
// treated as a fatal (non-retryable) error.
|
||||||
|
// Note that setting TreatEarlyCloseAsError only guarantees that Closing will produce a fatal error if the Close happens
|
||||||
|
// from the same "thread" (goroutine) as Read. Concurrent Close calls from other goroutines may instead produce network errors
|
||||||
|
// which will be retried.
|
||||||
|
TreatEarlyCloseAsError bool
|
||||||
}
|
}
|
||||||
|
|
||||||
// retryReader implements io.ReaderCloser methods.
|
// retryReader implements io.ReaderCloser methods.
|
||||||
|
@ -45,17 +64,33 @@ type RetryReaderOptions struct {
|
||||||
// through reading from the new response.
|
// through reading from the new response.
|
||||||
type retryReader struct {
|
type retryReader struct {
|
||||||
ctx context.Context
|
ctx context.Context
|
||||||
response *http.Response
|
|
||||||
info HTTPGetterInfo
|
info HTTPGetterInfo
|
||||||
countWasBounded bool
|
countWasBounded bool
|
||||||
o RetryReaderOptions
|
o RetryReaderOptions
|
||||||
getter HTTPGetter
|
getter HTTPGetter
|
||||||
|
|
||||||
|
// we support Close-ing during Reads (from other goroutines), so we protect the shared state, which is response
|
||||||
|
responseMu *sync.Mutex
|
||||||
|
response *http.Response
|
||||||
}
|
}
|
||||||
|
|
||||||
// NewRetryReader creates a retry reader.
|
// NewRetryReader creates a retry reader.
|
||||||
func NewRetryReader(ctx context.Context, initialResponse *http.Response,
|
func NewRetryReader(ctx context.Context, initialResponse *http.Response,
|
||||||
info HTTPGetterInfo, o RetryReaderOptions, getter HTTPGetter) io.ReadCloser {
|
info HTTPGetterInfo, o RetryReaderOptions, getter HTTPGetter) io.ReadCloser {
|
||||||
return &retryReader{ctx: ctx, getter: getter, info: info, countWasBounded: info.Count != CountToEnd, response: initialResponse, o: o}
|
return &retryReader{
|
||||||
|
ctx: ctx,
|
||||||
|
getter: getter,
|
||||||
|
info: info,
|
||||||
|
countWasBounded: info.Count != CountToEnd,
|
||||||
|
response: initialResponse,
|
||||||
|
responseMu: &sync.Mutex{},
|
||||||
|
o: o}
|
||||||
|
}
|
||||||
|
|
||||||
|
func (s *retryReader) setResponse(r *http.Response) {
|
||||||
|
s.responseMu.Lock()
|
||||||
|
defer s.responseMu.Unlock()
|
||||||
|
s.response = r
|
||||||
}
|
}
|
||||||
|
|
||||||
func (s *retryReader) Read(p []byte) (n int, err error) {
|
func (s *retryReader) Read(p []byte) (n int, err error) {
|
||||||
|
@ -66,15 +101,19 @@ func (s *retryReader) Read(p []byte) (n int, err error) {
|
||||||
return 0, io.EOF
|
return 0, io.EOF
|
||||||
}
|
}
|
||||||
|
|
||||||
if s.response == nil { // We don't have a response stream to read from, try to get one.
|
s.responseMu.Lock()
|
||||||
response, err := s.getter(s.ctx, s.info)
|
resp := s.response
|
||||||
|
s.responseMu.Unlock()
|
||||||
|
if resp == nil { // We don't have a response stream to read from, try to get one.
|
||||||
|
newResponse, err := s.getter(s.ctx, s.info)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return 0, err
|
return 0, err
|
||||||
}
|
}
|
||||||
// Successful GET; this is the network stream we'll read from.
|
// Successful GET; this is the network stream we'll read from.
|
||||||
s.response = response
|
s.setResponse(newResponse)
|
||||||
|
resp = newResponse
|
||||||
}
|
}
|
||||||
n, err := s.response.Body.Read(p) // Read from the stream
|
n, err := resp.Body.Read(p) // Read from the stream (this will return non-nil err if forceRetry is called, from another goroutine, while it is running)
|
||||||
|
|
||||||
// Injection mechanism for testing.
|
// Injection mechanism for testing.
|
||||||
if s.o.doInjectError && try == s.o.doInjectErrorRound {
|
if s.o.doInjectError && try == s.o.doInjectErrorRound {
|
||||||
|
@ -90,22 +129,48 @@ func (s *retryReader) Read(p []byte) (n int, err error) {
|
||||||
return n, err // Return the return to the caller
|
return n, err // Return the return to the caller
|
||||||
}
|
}
|
||||||
s.Close() // Error, close stream
|
s.Close() // Error, close stream
|
||||||
s.response = nil // Our stream is no longer good
|
s.setResponse(nil) // Our stream is no longer good
|
||||||
|
|
||||||
// Check the retry count and error code, and decide whether to retry.
|
// Check the retry count and error code, and decide whether to retry.
|
||||||
if try >= s.o.MaxRetryRequests {
|
retriesExhausted := try >= s.o.MaxRetryRequests
|
||||||
return n, err // All retries exhausted
|
_, isNetError := err.(net.Error)
|
||||||
|
willRetry := (isNetError || s.wasRetryableEarlyClose(err)) && !retriesExhausted
|
||||||
|
|
||||||
|
// Notify, for logging purposes, of any failures
|
||||||
|
if s.o.NotifyFailedRead != nil {
|
||||||
|
failureCount := try + 1 // because try is zero-based
|
||||||
|
s.o.NotifyFailedRead(failureCount, err, s.info.Offset, s.info.Count, willRetry)
|
||||||
}
|
}
|
||||||
|
|
||||||
if _, ok := err.(net.Error); ok {
|
if willRetry {
|
||||||
continue
|
continue
|
||||||
// Loop around and try to get and read from new stream.
|
// Loop around and try to get and read from new stream.
|
||||||
}
|
}
|
||||||
return n, err // Not retryable, just return
|
return n, err // Not retryable, or retries exhausted, so just return
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// By default, we allow early Closing, from another concurrent goroutine, to be used to force a retry
|
||||||
|
// Is this safe, to close early from another goroutine? Early close ultimately ends up calling
|
||||||
|
// net.Conn.Close, and that is documented as "Any blocked Read or Write operations will be unblocked and return errors"
|
||||||
|
// which is exactly the behaviour we want.
|
||||||
|
// NOTE: that if caller has forced an early Close from a separate goroutine (separate from the Read)
|
||||||
|
// then there are two different types of error that may happen - either the one one we check for here,
|
||||||
|
// or a net.Error (due to closure of connection). Which one happens depends on timing. We only need this routine
|
||||||
|
// to check for one, since the other is a net.Error, which our main Read retry loop is already handing.
|
||||||
|
func (s *retryReader) wasRetryableEarlyClose(err error) bool {
|
||||||
|
if s.o.TreatEarlyCloseAsError {
|
||||||
|
return false // user wants all early closes to be errors, and so not retryable
|
||||||
|
}
|
||||||
|
// unfortunately, http.errReadOnClosedResBody is private, so the best we can do here is to check for its text
|
||||||
|
return strings.HasSuffix(err.Error(), ReadOnClosedBodyMessage)
|
||||||
|
}
|
||||||
|
|
||||||
|
const ReadOnClosedBodyMessage = "read on closed response body"
|
||||||
|
|
||||||
func (s *retryReader) Close() error {
|
func (s *retryReader) Close() error {
|
||||||
|
s.responseMu.Lock()
|
||||||
|
defer s.responseMu.Unlock()
|
||||||
if s.response != nil && s.response.Body != nil {
|
if s.response != nil && s.response.Body != nil {
|
||||||
return s.response.Body.Close()
|
return s.response.Body.Close()
|
||||||
}
|
}
|
||||||
|
|
50
vendor/github.com/Azure/azure-storage-blob-go/azblob/zc_sas_query_params.go
generated
vendored
50
vendor/github.com/Azure/azure-storage-blob-go/azblob/zc_sas_query_params.go
generated
vendored
|
@ -58,6 +58,11 @@ type SASQueryParameters struct {
|
||||||
resource string `param:"sr"`
|
resource string `param:"sr"`
|
||||||
permissions string `param:"sp"`
|
permissions string `param:"sp"`
|
||||||
signature string `param:"sig"`
|
signature string `param:"sig"`
|
||||||
|
cacheControl string `param:"rscc"`
|
||||||
|
contentDisposition string `param:"rscd"`
|
||||||
|
contentEncoding string `param:"rsce"`
|
||||||
|
contentLanguage string `param:"rscl"`
|
||||||
|
contentType string `param:"rsct"`
|
||||||
}
|
}
|
||||||
|
|
||||||
func (p *SASQueryParameters) Version() string {
|
func (p *SASQueryParameters) Version() string {
|
||||||
|
@ -99,6 +104,26 @@ func (p *SASQueryParameters) Signature() string {
|
||||||
return p.signature
|
return p.signature
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func (p *SASQueryParameters) CacheControl() string {
|
||||||
|
return p.cacheControl
|
||||||
|
}
|
||||||
|
|
||||||
|
func (p *SASQueryParameters) ContentDisposition() string {
|
||||||
|
return p.contentDisposition
|
||||||
|
}
|
||||||
|
|
||||||
|
func (p *SASQueryParameters) ContentEncoding() string {
|
||||||
|
return p.contentEncoding
|
||||||
|
}
|
||||||
|
|
||||||
|
func (p *SASQueryParameters) ContentLanguage() string {
|
||||||
|
return p.contentLanguage
|
||||||
|
}
|
||||||
|
|
||||||
|
func (p *SASQueryParameters) ContentType() string {
|
||||||
|
return p.contentType
|
||||||
|
}
|
||||||
|
|
||||||
// IPRange represents a SAS IP range's start IP and (optionally) end IP.
|
// IPRange represents a SAS IP range's start IP and (optionally) end IP.
|
||||||
type IPRange struct {
|
type IPRange struct {
|
||||||
Start net.IP // Not specified if length = 0
|
Start net.IP // Not specified if length = 0
|
||||||
|
@ -155,6 +180,16 @@ func newSASQueryParameters(values url.Values, deleteSASParametersFromValues bool
|
||||||
p.permissions = val
|
p.permissions = val
|
||||||
case "sig":
|
case "sig":
|
||||||
p.signature = val
|
p.signature = val
|
||||||
|
case "rscc":
|
||||||
|
p.cacheControl = val
|
||||||
|
case "rscd":
|
||||||
|
p.contentDisposition = val
|
||||||
|
case "rsce":
|
||||||
|
p.contentEncoding = val
|
||||||
|
case "rscl":
|
||||||
|
p.contentLanguage = val
|
||||||
|
case "rsct":
|
||||||
|
p.contentType = val
|
||||||
default:
|
default:
|
||||||
isSASKey = false // We didn't recognize the query parameter
|
isSASKey = false // We didn't recognize the query parameter
|
||||||
}
|
}
|
||||||
|
@ -200,6 +235,21 @@ func (p *SASQueryParameters) addToValues(v url.Values) url.Values {
|
||||||
if p.signature != "" {
|
if p.signature != "" {
|
||||||
v.Add("sig", p.signature)
|
v.Add("sig", p.signature)
|
||||||
}
|
}
|
||||||
|
if p.cacheControl != "" {
|
||||||
|
v.Add("rscc", p.cacheControl)
|
||||||
|
}
|
||||||
|
if p.contentDisposition != "" {
|
||||||
|
v.Add("rscd", p.contentDisposition)
|
||||||
|
}
|
||||||
|
if p.contentEncoding != "" {
|
||||||
|
v.Add("rsce", p.contentEncoding)
|
||||||
|
}
|
||||||
|
if p.contentLanguage != "" {
|
||||||
|
v.Add("rscl", p.contentLanguage)
|
||||||
|
}
|
||||||
|
if p.contentType != "" {
|
||||||
|
v.Add("rsct", p.contentType)
|
||||||
|
}
|
||||||
return v
|
return v
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
3
vendor/github.com/Azure/azure-storage-blob-go/azblob/zz_generated_append_blob.go
generated
vendored
3
vendor/github.com/Azure/azure-storage-blob-go/azblob/zz_generated_append_blob.go
generated
vendored
|
@ -6,13 +6,14 @@ package azblob
|
||||||
import (
|
import (
|
||||||
"context"
|
"context"
|
||||||
"encoding/base64"
|
"encoding/base64"
|
||||||
"github.com/Azure/azure-pipeline-go/pipeline"
|
|
||||||
"io"
|
"io"
|
||||||
"io/ioutil"
|
"io/ioutil"
|
||||||
"net/http"
|
"net/http"
|
||||||
"net/url"
|
"net/url"
|
||||||
"strconv"
|
"strconv"
|
||||||
"time"
|
"time"
|
||||||
|
|
||||||
|
"github.com/Azure/azure-pipeline-go/pipeline"
|
||||||
)
|
)
|
||||||
|
|
||||||
// appendBlobClient is the client for the AppendBlob methods of the Azblob service.
|
// appendBlobClient is the client for the AppendBlob methods of the Azblob service.
|
||||||
|
|
3
vendor/github.com/Azure/azure-storage-blob-go/azblob/zz_generated_block_blob.go
generated
vendored
3
vendor/github.com/Azure/azure-storage-blob-go/azblob/zz_generated_block_blob.go
generated
vendored
|
@ -8,13 +8,14 @@ import (
|
||||||
"context"
|
"context"
|
||||||
"encoding/base64"
|
"encoding/base64"
|
||||||
"encoding/xml"
|
"encoding/xml"
|
||||||
"github.com/Azure/azure-pipeline-go/pipeline"
|
|
||||||
"io"
|
"io"
|
||||||
"io/ioutil"
|
"io/ioutil"
|
||||||
"net/http"
|
"net/http"
|
||||||
"net/url"
|
"net/url"
|
||||||
"strconv"
|
"strconv"
|
||||||
"time"
|
"time"
|
||||||
|
|
||||||
|
"github.com/Azure/azure-pipeline-go/pipeline"
|
||||||
)
|
)
|
||||||
|
|
||||||
// blockBlobClient is the client for the BlockBlob methods of the Azblob service.
|
// blockBlobClient is the client for the BlockBlob methods of the Azblob service.
|
||||||
|
|
3
vendor/github.com/Azure/azure-storage-blob-go/azblob/zz_generated_client.go
generated
vendored
3
vendor/github.com/Azure/azure-storage-blob-go/azblob/zz_generated_client.go
generated
vendored
|
@ -4,8 +4,9 @@ package azblob
|
||||||
// Changes may cause incorrect behavior and will be lost if the code is regenerated.
|
// Changes may cause incorrect behavior and will be lost if the code is regenerated.
|
||||||
|
|
||||||
import (
|
import (
|
||||||
"github.com/Azure/azure-pipeline-go/pipeline"
|
|
||||||
"net/url"
|
"net/url"
|
||||||
|
|
||||||
|
"github.com/Azure/azure-pipeline-go/pipeline"
|
||||||
)
|
)
|
||||||
|
|
||||||
const (
|
const (
|
||||||
|
|
3
vendor/github.com/Azure/azure-storage-blob-go/azblob/zz_generated_container.go
generated
vendored
3
vendor/github.com/Azure/azure-storage-blob-go/azblob/zz_generated_container.go
generated
vendored
|
@ -7,13 +7,14 @@ import (
|
||||||
"bytes"
|
"bytes"
|
||||||
"context"
|
"context"
|
||||||
"encoding/xml"
|
"encoding/xml"
|
||||||
"github.com/Azure/azure-pipeline-go/pipeline"
|
|
||||||
"io"
|
"io"
|
||||||
"io/ioutil"
|
"io/ioutil"
|
||||||
"net/http"
|
"net/http"
|
||||||
"net/url"
|
"net/url"
|
||||||
"strconv"
|
"strconv"
|
||||||
"time"
|
"time"
|
||||||
|
|
||||||
|
"github.com/Azure/azure-pipeline-go/pipeline"
|
||||||
)
|
)
|
||||||
|
|
||||||
// containerClient is the client for the Container methods of the Azblob service.
|
// containerClient is the client for the Container methods of the Azblob service.
|
||||||
|
|
6
vendor/github.com/Azure/azure-storage-blob-go/azblob/zz_generated_models.go
generated
vendored
6
vendor/github.com/Azure/azure-storage-blob-go/azblob/zz_generated_models.go
generated
vendored
|
@ -55,7 +55,7 @@ func (md *Metadata) UnmarshalXML(d *xml.Decoder, start xml.StartElement) error {
|
||||||
|
|
||||||
// Marker represents an opaque value used in paged responses.
|
// Marker represents an opaque value used in paged responses.
|
||||||
type Marker struct {
|
type Marker struct {
|
||||||
val *string
|
Val *string
|
||||||
}
|
}
|
||||||
|
|
||||||
// NotDone returns true if the list enumeration should be started or is not yet complete. Specifically, NotDone returns true
|
// NotDone returns true if the list enumeration should be started or is not yet complete. Specifically, NotDone returns true
|
||||||
|
@ -63,14 +63,14 @@ type Marker struct {
|
||||||
// the service. NotDone also returns true whenever the service returns an interim result portion. NotDone returns false only
|
// the service. NotDone also returns true whenever the service returns an interim result portion. NotDone returns false only
|
||||||
// after the service has returned the final result portion.
|
// after the service has returned the final result portion.
|
||||||
func (m Marker) NotDone() bool {
|
func (m Marker) NotDone() bool {
|
||||||
return m.val == nil || *m.val != ""
|
return m.Val == nil || *m.Val != ""
|
||||||
}
|
}
|
||||||
|
|
||||||
// UnmarshalXML implements the xml.Unmarshaler interface for Marker.
|
// UnmarshalXML implements the xml.Unmarshaler interface for Marker.
|
||||||
func (m *Marker) UnmarshalXML(d *xml.Decoder, start xml.StartElement) error {
|
func (m *Marker) UnmarshalXML(d *xml.Decoder, start xml.StartElement) error {
|
||||||
var out string
|
var out string
|
||||||
err := d.DecodeElement(&out, &start)
|
err := d.DecodeElement(&out, &start)
|
||||||
m.val = &out
|
m.Val = &out
|
||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
3
vendor/github.com/Azure/azure-storage-blob-go/azblob/zz_generated_page_blob.go
generated
vendored
3
vendor/github.com/Azure/azure-storage-blob-go/azblob/zz_generated_page_blob.go
generated
vendored
|
@ -7,13 +7,14 @@ import (
|
||||||
"context"
|
"context"
|
||||||
"encoding/base64"
|
"encoding/base64"
|
||||||
"encoding/xml"
|
"encoding/xml"
|
||||||
"github.com/Azure/azure-pipeline-go/pipeline"
|
|
||||||
"io"
|
"io"
|
||||||
"io/ioutil"
|
"io/ioutil"
|
||||||
"net/http"
|
"net/http"
|
||||||
"net/url"
|
"net/url"
|
||||||
"strconv"
|
"strconv"
|
||||||
"time"
|
"time"
|
||||||
|
|
||||||
|
"github.com/Azure/azure-pipeline-go/pipeline"
|
||||||
)
|
)
|
||||||
|
|
||||||
// pageBlobClient is the client for the PageBlob methods of the Azblob service.
|
// pageBlobClient is the client for the PageBlob methods of the Azblob service.
|
||||||
|
|
|
@ -7,8 +7,9 @@ import (
|
||||||
"bytes"
|
"bytes"
|
||||||
"context"
|
"context"
|
||||||
"encoding/xml"
|
"encoding/xml"
|
||||||
"github.com/Azure/azure-pipeline-go/pipeline"
|
|
||||||
"io/ioutil"
|
"io/ioutil"
|
||||||
|
|
||||||
|
"github.com/Azure/azure-pipeline-go/pipeline"
|
||||||
)
|
)
|
||||||
|
|
||||||
type responder func(resp pipeline.Response) (result pipeline.Response, err error)
|
type responder func(resp pipeline.Response) (result pipeline.Response, err error)
|
||||||
|
|
3
vendor/github.com/Azure/azure-storage-blob-go/azblob/zz_generated_response_error.go
generated
vendored
3
vendor/github.com/Azure/azure-storage-blob-go/azblob/zz_generated_response_error.go
generated
vendored
|
@ -6,9 +6,10 @@ package azblob
|
||||||
import (
|
import (
|
||||||
"bytes"
|
"bytes"
|
||||||
"fmt"
|
"fmt"
|
||||||
"github.com/Azure/azure-pipeline-go/pipeline"
|
|
||||||
"net"
|
"net"
|
||||||
"net/http"
|
"net/http"
|
||||||
|
|
||||||
|
"github.com/Azure/azure-pipeline-go/pipeline"
|
||||||
)
|
)
|
||||||
|
|
||||||
// if you want to provide custom error handling set this variable to your constructor function
|
// if you want to provide custom error handling set this variable to your constructor function
|
||||||
|
|
3
vendor/github.com/Azure/azure-storage-blob-go/azblob/zz_generated_service.go
generated
vendored
3
vendor/github.com/Azure/azure-storage-blob-go/azblob/zz_generated_service.go
generated
vendored
|
@ -7,12 +7,13 @@ import (
|
||||||
"bytes"
|
"bytes"
|
||||||
"context"
|
"context"
|
||||||
"encoding/xml"
|
"encoding/xml"
|
||||||
"github.com/Azure/azure-pipeline-go/pipeline"
|
|
||||||
"io"
|
"io"
|
||||||
"io/ioutil"
|
"io/ioutil"
|
||||||
"net/http"
|
"net/http"
|
||||||
"net/url"
|
"net/url"
|
||||||
"strconv"
|
"strconv"
|
||||||
|
|
||||||
|
"github.com/Azure/azure-pipeline-go/pipeline"
|
||||||
)
|
)
|
||||||
|
|
||||||
// serviceClient is the client for the Service methods of the Azblob service.
|
// serviceClient is the client for the Service methods of the Azblob service.
|
||||||
|
|
3
vendor/github.com/Azure/azure-storage-blob-go/azblob/zz_generated_validation.go
generated
vendored
3
vendor/github.com/Azure/azure-storage-blob-go/azblob/zz_generated_validation.go
generated
vendored
|
@ -5,10 +5,11 @@ package azblob
|
||||||
|
|
||||||
import (
|
import (
|
||||||
"fmt"
|
"fmt"
|
||||||
"github.com/Azure/azure-pipeline-go/pipeline"
|
|
||||||
"reflect"
|
"reflect"
|
||||||
"regexp"
|
"regexp"
|
||||||
"strings"
|
"strings"
|
||||||
|
|
||||||
|
"github.com/Azure/azure-pipeline-go/pipeline"
|
||||||
)
|
)
|
||||||
|
|
||||||
// Constraint stores constraint name, target field name
|
// Constraint stores constraint name, target field name
|
||||||
|
|
12
vendor/github.com/a8m/tree/.travis.yml
generated
vendored
12
vendor/github.com/a8m/tree/.travis.yml
generated
vendored
|
@ -1,10 +1,16 @@
|
||||||
language: go
|
language: go
|
||||||
sudo: false
|
sudo: false
|
||||||
go:
|
go:
|
||||||
- 1.6.4
|
- 1.6.x
|
||||||
- 1.7.4
|
- 1.7.x
|
||||||
- 1.8.3
|
- 1.8.x
|
||||||
|
- 1.9.x
|
||||||
|
- 1.10.x
|
||||||
|
- 1.11.x
|
||||||
- tip
|
- tip
|
||||||
|
matrix:
|
||||||
|
allow_failures:
|
||||||
|
- go: tip
|
||||||
install:
|
install:
|
||||||
- go get -t -v ./...
|
- go get -t -v ./...
|
||||||
script:
|
script:
|
||||||
|
|
15
vendor/github.com/a8m/tree/compileall.sh
generated
vendored
15
vendor/github.com/a8m/tree/compileall.sh
generated
vendored
|
@ -5,10 +5,23 @@ go tool dist list >/dev/null || {
|
||||||
exit 0
|
exit 0
|
||||||
}
|
}
|
||||||
|
|
||||||
|
failures=0
|
||||||
while read -r line; do
|
while read -r line; do
|
||||||
parts=(${line//\// })
|
parts=(${line//\// })
|
||||||
export GOOS=${parts[0]}
|
export GOOS=${parts[0]}
|
||||||
export GOARCH=${parts[1]}
|
export GOARCH=${parts[1]}
|
||||||
|
if go tool compile -V >/dev/null 2>&1 ; then
|
||||||
echo Try GOOS=${GOOS} GOARCH=${GOARCH}
|
echo Try GOOS=${GOOS} GOARCH=${GOARCH}
|
||||||
go install
|
if ! go install; then
|
||||||
|
echo "*** Failed compiling GOOS=${GOOS} GOARCH=${GOARCH}"
|
||||||
|
failures=$((failures+1))
|
||||||
|
fi
|
||||||
|
else
|
||||||
|
echo Skipping GOOS=${GOOS} GOARCH=${GOARCH} as not supported
|
||||||
|
fi
|
||||||
done < <(go tool dist list)
|
done < <(go tool dist list)
|
||||||
|
|
||||||
|
if [ $failures -ne 0 ]; then
|
||||||
|
echo "*** $failures compile failures"
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
|
25
vendor/github.com/aws/aws-sdk-go/aws/awsutil/string_value.go
generated
vendored
25
vendor/github.com/aws/aws-sdk-go/aws/awsutil/string_value.go
generated
vendored
|
@ -23,28 +23,27 @@ func stringValue(v reflect.Value, indent int, buf *bytes.Buffer) {
|
||||||
case reflect.Struct:
|
case reflect.Struct:
|
||||||
buf.WriteString("{\n")
|
buf.WriteString("{\n")
|
||||||
|
|
||||||
names := []string{}
|
|
||||||
for i := 0; i < v.Type().NumField(); i++ {
|
for i := 0; i < v.Type().NumField(); i++ {
|
||||||
name := v.Type().Field(i).Name
|
ft := v.Type().Field(i)
|
||||||
f := v.Field(i)
|
fv := v.Field(i)
|
||||||
if name[0:1] == strings.ToLower(name[0:1]) {
|
|
||||||
|
if ft.Name[0:1] == strings.ToLower(ft.Name[0:1]) {
|
||||||
continue // ignore unexported fields
|
continue // ignore unexported fields
|
||||||
}
|
}
|
||||||
if (f.Kind() == reflect.Ptr || f.Kind() == reflect.Slice) && f.IsNil() {
|
if (fv.Kind() == reflect.Ptr || fv.Kind() == reflect.Slice) && fv.IsNil() {
|
||||||
continue // ignore unset fields
|
continue // ignore unset fields
|
||||||
}
|
}
|
||||||
names = append(names, name)
|
|
||||||
}
|
|
||||||
|
|
||||||
for i, n := range names {
|
|
||||||
val := v.FieldByName(n)
|
|
||||||
buf.WriteString(strings.Repeat(" ", indent+2))
|
buf.WriteString(strings.Repeat(" ", indent+2))
|
||||||
buf.WriteString(n + ": ")
|
buf.WriteString(ft.Name + ": ")
|
||||||
stringValue(val, indent+2, buf)
|
|
||||||
|
|
||||||
if i < len(names)-1 {
|
if tag := ft.Tag.Get("sensitive"); tag == "true" {
|
||||||
buf.WriteString(",\n")
|
buf.WriteString("<sensitive>")
|
||||||
|
} else {
|
||||||
|
stringValue(fv, indent+2, buf)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
buf.WriteString(",\n")
|
||||||
}
|
}
|
||||||
|
|
||||||
buf.WriteString("\n" + strings.Repeat(" ", indent) + "}")
|
buf.WriteString("\n" + strings.Repeat(" ", indent) + "}")
|
||||||
|
|
2
vendor/github.com/aws/aws-sdk-go/aws/client/client.go
generated
vendored
2
vendor/github.com/aws/aws-sdk-go/aws/client/client.go
generated
vendored
|
@ -18,7 +18,7 @@ type Config struct {
|
||||||
|
|
||||||
// States that the signing name did not come from a modeled source but
|
// States that the signing name did not come from a modeled source but
|
||||||
// was derived based on other data. Used by service client constructors
|
// was derived based on other data. Used by service client constructors
|
||||||
// to determine if the signin name can be overriden based on metadata the
|
// to determine if the signin name can be overridden based on metadata the
|
||||||
// service has.
|
// service has.
|
||||||
SigningNameDerived bool
|
SigningNameDerived bool
|
||||||
}
|
}
|
||||||
|
|
18
vendor/github.com/aws/aws-sdk-go/aws/config.go
generated
vendored
18
vendor/github.com/aws/aws-sdk-go/aws/config.go
generated
vendored
|
@ -239,6 +239,13 @@ type Config struct {
|
||||||
// Key: aws.String("/foo/bar/moo"),
|
// Key: aws.String("/foo/bar/moo"),
|
||||||
// })
|
// })
|
||||||
EnableEndpointDiscovery *bool
|
EnableEndpointDiscovery *bool
|
||||||
|
|
||||||
|
// DisableEndpointHostPrefix will disable the SDK's behavior of prefixing
|
||||||
|
// request endpoint hosts with modeled information.
|
||||||
|
//
|
||||||
|
// Disabling this feature is useful when you want to use local endpoints
|
||||||
|
// for testing that do not support the modeled host prefix pattern.
|
||||||
|
DisableEndpointHostPrefix *bool
|
||||||
}
|
}
|
||||||
|
|
||||||
// NewConfig returns a new Config pointer that can be chained with builder
|
// NewConfig returns a new Config pointer that can be chained with builder
|
||||||
|
@ -399,6 +406,13 @@ func (c *Config) WithEndpointDiscovery(t bool) *Config {
|
||||||
return c
|
return c
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// WithDisableEndpointHostPrefix will set whether or not to use modeled host prefix
|
||||||
|
// when making requests.
|
||||||
|
func (c *Config) WithDisableEndpointHostPrefix(t bool) *Config {
|
||||||
|
c.DisableEndpointHostPrefix = &t
|
||||||
|
return c
|
||||||
|
}
|
||||||
|
|
||||||
// MergeIn merges the passed in configs into the existing config object.
|
// MergeIn merges the passed in configs into the existing config object.
|
||||||
func (c *Config) MergeIn(cfgs ...*Config) {
|
func (c *Config) MergeIn(cfgs ...*Config) {
|
||||||
for _, other := range cfgs {
|
for _, other := range cfgs {
|
||||||
|
@ -502,6 +516,10 @@ func mergeInConfig(dst *Config, other *Config) {
|
||||||
if other.EnableEndpointDiscovery != nil {
|
if other.EnableEndpointDiscovery != nil {
|
||||||
dst.EnableEndpointDiscovery = other.EnableEndpointDiscovery
|
dst.EnableEndpointDiscovery = other.EnableEndpointDiscovery
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if other.DisableEndpointHostPrefix != nil {
|
||||||
|
dst.DisableEndpointHostPrefix = other.DisableEndpointHostPrefix
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
// Copy will return a shallow copy of the Config object. If any additional
|
// Copy will return a shallow copy of the Config object. If any additional
|
||||||
|
|
|
@ -1,8 +1,8 @@
|
||||||
|
// +build !go1.9
|
||||||
|
|
||||||
package aws
|
package aws
|
||||||
|
|
||||||
import (
|
import "time"
|
||||||
"time"
|
|
||||||
)
|
|
||||||
|
|
||||||
// Context is an copy of the Go v1.7 stdlib's context.Context interface.
|
// Context is an copy of the Go v1.7 stdlib's context.Context interface.
|
||||||
// It is represented as a SDK interface to enable you to use the "WithContext"
|
// It is represented as a SDK interface to enable you to use the "WithContext"
|
||||||
|
@ -35,37 +35,3 @@ type Context interface {
|
||||||
// functions.
|
// functions.
|
||||||
Value(key interface{}) interface{}
|
Value(key interface{}) interface{}
|
||||||
}
|
}
|
||||||
|
|
||||||
// BackgroundContext returns a context that will never be canceled, has no
|
|
||||||
// values, and no deadline. This context is used by the SDK to provide
|
|
||||||
// backwards compatibility with non-context API operations and functionality.
|
|
||||||
//
|
|
||||||
// Go 1.6 and before:
|
|
||||||
// This context function is equivalent to context.Background in the Go stdlib.
|
|
||||||
//
|
|
||||||
// Go 1.7 and later:
|
|
||||||
// The context returned will be the value returned by context.Background()
|
|
||||||
//
|
|
||||||
// See https://golang.org/pkg/context for more information on Contexts.
|
|
||||||
func BackgroundContext() Context {
|
|
||||||
return backgroundCtx
|
|
||||||
}
|
|
||||||
|
|
||||||
// SleepWithContext will wait for the timer duration to expire, or the context
|
|
||||||
// is canceled. Which ever happens first. If the context is canceled the Context's
|
|
||||||
// error will be returned.
|
|
||||||
//
|
|
||||||
// Expects Context to always return a non-nil error if the Done channel is closed.
|
|
||||||
func SleepWithContext(ctx Context, dur time.Duration) error {
|
|
||||||
t := time.NewTimer(dur)
|
|
||||||
defer t.Stop()
|
|
||||||
|
|
||||||
select {
|
|
||||||
case <-t.C:
|
|
||||||
break
|
|
||||||
case <-ctx.Done():
|
|
||||||
return ctx.Err()
|
|
||||||
}
|
|
||||||
|
|
||||||
return nil
|
|
||||||
}
|
|
9
vendor/github.com/aws/aws-sdk-go/aws/context_1_7.go
generated
vendored
9
vendor/github.com/aws/aws-sdk-go/aws/context_1_7.go
generated
vendored
|
@ -1,9 +0,0 @@
|
||||||
// +build go1.7
|
|
||||||
|
|
||||||
package aws
|
|
||||||
|
|
||||||
import "context"
|
|
||||||
|
|
||||||
var (
|
|
||||||
backgroundCtx = context.Background()
|
|
||||||
)
|
|
11
vendor/github.com/aws/aws-sdk-go/aws/context_1_9.go
generated
vendored
Normal file
11
vendor/github.com/aws/aws-sdk-go/aws/context_1_9.go
generated
vendored
Normal file
|
@ -0,0 +1,11 @@
|
||||||
|
// +build go1.9
|
||||||
|
|
||||||
|
package aws
|
||||||
|
|
||||||
|
import "context"
|
||||||
|
|
||||||
|
// Context is an alias of the Go stdlib's context.Context interface.
|
||||||
|
// It can be used within the SDK's API operation "WithContext" methods.
|
||||||
|
//
|
||||||
|
// See https://golang.org/pkg/context on how to use contexts.
|
||||||
|
type Context = context.Context
|
|
@ -39,3 +39,18 @@ func (e *emptyCtx) String() string {
|
||||||
var (
|
var (
|
||||||
backgroundCtx = new(emptyCtx)
|
backgroundCtx = new(emptyCtx)
|
||||||
)
|
)
|
||||||
|
|
||||||
|
// BackgroundContext returns a context that will never be canceled, has no
|
||||||
|
// values, and no deadline. This context is used by the SDK to provide
|
||||||
|
// backwards compatibility with non-context API operations and functionality.
|
||||||
|
//
|
||||||
|
// Go 1.6 and before:
|
||||||
|
// This context function is equivalent to context.Background in the Go stdlib.
|
||||||
|
//
|
||||||
|
// Go 1.7 and later:
|
||||||
|
// The context returned will be the value returned by context.Background()
|
||||||
|
//
|
||||||
|
// See https://golang.org/pkg/context for more information on Contexts.
|
||||||
|
func BackgroundContext() Context {
|
||||||
|
return backgroundCtx
|
||||||
|
}
|
20
vendor/github.com/aws/aws-sdk-go/aws/context_background_1_7.go
generated
vendored
Normal file
20
vendor/github.com/aws/aws-sdk-go/aws/context_background_1_7.go
generated
vendored
Normal file
|
@ -0,0 +1,20 @@
|
||||||
|
// +build go1.7
|
||||||
|
|
||||||
|
package aws
|
||||||
|
|
||||||
|
import "context"
|
||||||
|
|
||||||
|
// BackgroundContext returns a context that will never be canceled, has no
|
||||||
|
// values, and no deadline. This context is used by the SDK to provide
|
||||||
|
// backwards compatibility with non-context API operations and functionality.
|
||||||
|
//
|
||||||
|
// Go 1.6 and before:
|
||||||
|
// This context function is equivalent to context.Background in the Go stdlib.
|
||||||
|
//
|
||||||
|
// Go 1.7 and later:
|
||||||
|
// The context returned will be the value returned by context.Background()
|
||||||
|
//
|
||||||
|
// See https://golang.org/pkg/context for more information on Contexts.
|
||||||
|
func BackgroundContext() Context {
|
||||||
|
return context.Background()
|
||||||
|
}
|
24
vendor/github.com/aws/aws-sdk-go/aws/context_sleep.go
generated
vendored
Normal file
24
vendor/github.com/aws/aws-sdk-go/aws/context_sleep.go
generated
vendored
Normal file
|
@ -0,0 +1,24 @@
|
||||||
|
package aws
|
||||||
|
|
||||||
|
import (
|
||||||
|
"time"
|
||||||
|
)
|
||||||
|
|
||||||
|
// SleepWithContext will wait for the timer duration to expire, or the context
|
||||||
|
// is canceled. Which ever happens first. If the context is canceled the Context's
|
||||||
|
// error will be returned.
|
||||||
|
//
|
||||||
|
// Expects Context to always return a non-nil error if the Done channel is closed.
|
||||||
|
func SleepWithContext(ctx Context, dur time.Duration) error {
|
||||||
|
t := time.NewTimer(dur)
|
||||||
|
defer t.Stop()
|
||||||
|
|
||||||
|
select {
|
||||||
|
case <-t.C:
|
||||||
|
break
|
||||||
|
case <-ctx.Done():
|
||||||
|
return ctx.Err()
|
||||||
|
}
|
||||||
|
|
||||||
|
return nil
|
||||||
|
}
|
4
vendor/github.com/aws/aws-sdk-go/aws/corehandlers/handlers.go
generated
vendored
4
vendor/github.com/aws/aws-sdk-go/aws/corehandlers/handlers.go
generated
vendored
|
@ -72,9 +72,9 @@ var ValidateReqSigHandler = request.NamedHandler{
|
||||||
signedTime = r.LastSignedAt
|
signedTime = r.LastSignedAt
|
||||||
}
|
}
|
||||||
|
|
||||||
// 10 minutes to allow for some clock skew/delays in transmission.
|
// 5 minutes to allow for some clock skew/delays in transmission.
|
||||||
// Would be improved with aws/aws-sdk-go#423
|
// Would be improved with aws/aws-sdk-go#423
|
||||||
if signedTime.Add(10 * time.Minute).After(time.Now()) {
|
if signedTime.Add(5 * time.Minute).After(time.Now()) {
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
2
vendor/github.com/aws/aws-sdk-go/aws/corehandlers/user_agent.go
generated
vendored
2
vendor/github.com/aws/aws-sdk-go/aws/corehandlers/user_agent.go
generated
vendored
|
@ -17,7 +17,7 @@ var SDKVersionUserAgentHandler = request.NamedHandler{
|
||||||
}
|
}
|
||||||
|
|
||||||
const execEnvVar = `AWS_EXECUTION_ENV`
|
const execEnvVar = `AWS_EXECUTION_ENV`
|
||||||
const execEnvUAKey = `exec_env`
|
const execEnvUAKey = `exec-env`
|
||||||
|
|
||||||
// AddHostExecEnvUserAgentHander is a request handler appending the SDK's
|
// AddHostExecEnvUserAgentHander is a request handler appending the SDK's
|
||||||
// execution environment to the user agent.
|
// execution environment to the user agent.
|
||||||
|
|
35
vendor/github.com/aws/aws-sdk-go/aws/credentials/credentials.go
generated
vendored
35
vendor/github.com/aws/aws-sdk-go/aws/credentials/credentials.go
generated
vendored
|
@ -49,6 +49,8 @@
|
||||||
package credentials
|
package credentials
|
||||||
|
|
||||||
import (
|
import (
|
||||||
|
"fmt"
|
||||||
|
"github.com/aws/aws-sdk-go/aws/awserr"
|
||||||
"sync"
|
"sync"
|
||||||
"time"
|
"time"
|
||||||
)
|
)
|
||||||
|
@ -97,6 +99,14 @@ type Provider interface {
|
||||||
IsExpired() bool
|
IsExpired() bool
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// An Expirer is an interface that Providers can implement to expose the expiration
|
||||||
|
// time, if known. If the Provider cannot accurately provide this info,
|
||||||
|
// it should not implement this interface.
|
||||||
|
type Expirer interface {
|
||||||
|
// The time at which the credentials are no longer valid
|
||||||
|
ExpiresAt() time.Time
|
||||||
|
}
|
||||||
|
|
||||||
// An ErrorProvider is a stub credentials provider that always returns an error
|
// An ErrorProvider is a stub credentials provider that always returns an error
|
||||||
// this is used by the SDK when construction a known provider is not possible
|
// this is used by the SDK when construction a known provider is not possible
|
||||||
// due to an error.
|
// due to an error.
|
||||||
|
@ -163,6 +173,11 @@ func (e *Expiry) IsExpired() bool {
|
||||||
return e.expiration.Before(curTime())
|
return e.expiration.Before(curTime())
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// ExpiresAt returns the expiration time of the credential
|
||||||
|
func (e *Expiry) ExpiresAt() time.Time {
|
||||||
|
return e.expiration
|
||||||
|
}
|
||||||
|
|
||||||
// A Credentials provides concurrency safe retrieval of AWS credentials Value.
|
// A Credentials provides concurrency safe retrieval of AWS credentials Value.
|
||||||
// Credentials will cache the credentials value until they expire. Once the value
|
// Credentials will cache the credentials value until they expire. Once the value
|
||||||
// expires the next Get will attempt to retrieve valid credentials.
|
// expires the next Get will attempt to retrieve valid credentials.
|
||||||
|
@ -255,3 +270,23 @@ func (c *Credentials) IsExpired() bool {
|
||||||
func (c *Credentials) isExpired() bool {
|
func (c *Credentials) isExpired() bool {
|
||||||
return c.forceRefresh || c.provider.IsExpired()
|
return c.forceRefresh || c.provider.IsExpired()
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// ExpiresAt provides access to the functionality of the Expirer interface of
|
||||||
|
// the underlying Provider, if it supports that interface. Otherwise, it returns
|
||||||
|
// an error.
|
||||||
|
func (c *Credentials) ExpiresAt() (time.Time, error) {
|
||||||
|
c.m.RLock()
|
||||||
|
defer c.m.RUnlock()
|
||||||
|
|
||||||
|
expirer, ok := c.provider.(Expirer)
|
||||||
|
if !ok {
|
||||||
|
return time.Time{}, awserr.New("ProviderNotExpirer",
|
||||||
|
fmt.Sprintf("provider %s does not support ExpiresAt()", c.creds.ProviderName),
|
||||||
|
nil)
|
||||||
|
}
|
||||||
|
if c.forceRefresh {
|
||||||
|
// set expiration time to the distant past
|
||||||
|
return time.Time{}, nil
|
||||||
|
}
|
||||||
|
return expirer.ExpiresAt(), nil
|
||||||
|
}
|
||||||
|
|
425
vendor/github.com/aws/aws-sdk-go/aws/credentials/processcreds/provider.go
generated
vendored
Normal file
425
vendor/github.com/aws/aws-sdk-go/aws/credentials/processcreds/provider.go
generated
vendored
Normal file
|
@ -0,0 +1,425 @@
|
||||||
|
/*
|
||||||
|
Package processcreds is a credential Provider to retrieve `credential_process`
|
||||||
|
credentials.
|
||||||
|
|
||||||
|
WARNING: The following describes a method of sourcing credentials from an external
|
||||||
|
process. This can potentially be dangerous, so proceed with caution. Other
|
||||||
|
credential providers should be preferred if at all possible. If using this
|
||||||
|
option, you should make sure that the config file is as locked down as possible
|
||||||
|
using security best practices for your operating system.
|
||||||
|
|
||||||
|
You can use credentials from a `credential_process` in a variety of ways.
|
||||||
|
|
||||||
|
One way is to setup your shared config file, located in the default
|
||||||
|
location, with the `credential_process` key and the command you want to be
|
||||||
|
called. You also need to set the AWS_SDK_LOAD_CONFIG environment variable
|
||||||
|
(e.g., `export AWS_SDK_LOAD_CONFIG=1`) to use the shared config file.
|
||||||
|
|
||||||
|
[default]
|
||||||
|
credential_process = /command/to/call
|
||||||
|
|
||||||
|
Creating a new session will use the credential process to retrieve credentials.
|
||||||
|
NOTE: If there are credentials in the profile you are using, the credential
|
||||||
|
process will not be used.
|
||||||
|
|
||||||
|
// Initialize a session to load credentials.
|
||||||
|
sess, _ := session.NewSession(&aws.Config{
|
||||||
|
Region: aws.String("us-east-1")},
|
||||||
|
)
|
||||||
|
|
||||||
|
// Create S3 service client to use the credentials.
|
||||||
|
svc := s3.New(sess)
|
||||||
|
|
||||||
|
Another way to use the `credential_process` method is by using
|
||||||
|
`credentials.NewCredentials()` and providing a command to be executed to
|
||||||
|
retrieve credentials:
|
||||||
|
|
||||||
|
// Create credentials using the ProcessProvider.
|
||||||
|
creds := processcreds.NewCredentials("/path/to/command")
|
||||||
|
|
||||||
|
// Create service client value configured for credentials.
|
||||||
|
svc := s3.New(sess, &aws.Config{Credentials: creds})
|
||||||
|
|
||||||
|
You can set a non-default timeout for the `credential_process` with another
|
||||||
|
constructor, `credentials.NewCredentialsTimeout()`, providing the timeout. To
|
||||||
|
set a one minute timeout:
|
||||||
|
|
||||||
|
// Create credentials using the ProcessProvider.
|
||||||
|
creds := processcreds.NewCredentialsTimeout(
|
||||||
|
"/path/to/command",
|
||||||
|
time.Duration(500) * time.Millisecond)
|
||||||
|
|
||||||
|
If you need more control, you can set any configurable options in the
|
||||||
|
credentials using one or more option functions. For example, you can set a two
|
||||||
|
minute timeout, a credential duration of 60 minutes, and a maximum stdout
|
||||||
|
buffer size of 2k.
|
||||||
|
|
||||||
|
creds := processcreds.NewCredentials(
|
||||||
|
"/path/to/command",
|
||||||
|
func(opt *ProcessProvider) {
|
||||||
|
opt.Timeout = time.Duration(2) * time.Minute
|
||||||
|
opt.Duration = time.Duration(60) * time.Minute
|
||||||
|
opt.MaxBufSize = 2048
|
||||||
|
})
|
||||||
|
|
||||||
|
You can also use your own `exec.Cmd`:
|
||||||
|
|
||||||
|
// Create an exec.Cmd
|
||||||
|
myCommand := exec.Command("/path/to/command")
|
||||||
|
|
||||||
|
// Create credentials using your exec.Cmd and custom timeout
|
||||||
|
creds := processcreds.NewCredentialsCommand(
|
||||||
|
myCommand,
|
||||||
|
func(opt *processcreds.ProcessProvider) {
|
||||||
|
opt.Timeout = time.Duration(1) * time.Second
|
||||||
|
})
|
||||||
|
*/
|
||||||
|
package processcreds
|
||||||
|
|
||||||
|
import (
|
||||||
|
"bytes"
|
||||||
|
"encoding/json"
|
||||||
|
"fmt"
|
||||||
|
"io"
|
||||||
|
"io/ioutil"
|
||||||
|
"os"
|
||||||
|
"os/exec"
|
||||||
|
"runtime"
|
||||||
|
"strings"
|
||||||
|
"time"
|
||||||
|
|
||||||
|
"github.com/aws/aws-sdk-go/aws/awserr"
|
||||||
|
"github.com/aws/aws-sdk-go/aws/credentials"
|
||||||
|
)
|
||||||
|
|
||||||
|
const (
|
||||||
|
// ProviderName is the name this credentials provider will label any
|
||||||
|
// returned credentials Value with.
|
||||||
|
ProviderName = `ProcessProvider`
|
||||||
|
|
||||||
|
// ErrCodeProcessProviderParse error parsing process output
|
||||||
|
ErrCodeProcessProviderParse = "ProcessProviderParseError"
|
||||||
|
|
||||||
|
// ErrCodeProcessProviderVersion version error in output
|
||||||
|
ErrCodeProcessProviderVersion = "ProcessProviderVersionError"
|
||||||
|
|
||||||
|
// ErrCodeProcessProviderRequired required attribute missing in output
|
||||||
|
ErrCodeProcessProviderRequired = "ProcessProviderRequiredError"
|
||||||
|
|
||||||
|
// ErrCodeProcessProviderExecution execution of command failed
|
||||||
|
ErrCodeProcessProviderExecution = "ProcessProviderExecutionError"
|
||||||
|
|
||||||
|
// errMsgProcessProviderTimeout process took longer than allowed
|
||||||
|
errMsgProcessProviderTimeout = "credential process timed out"
|
||||||
|
|
||||||
|
// errMsgProcessProviderProcess process error
|
||||||
|
errMsgProcessProviderProcess = "error in credential_process"
|
||||||
|
|
||||||
|
// errMsgProcessProviderParse problem parsing output
|
||||||
|
errMsgProcessProviderParse = "parse failed of credential_process output"
|
||||||
|
|
||||||
|
// errMsgProcessProviderVersion version error in output
|
||||||
|
errMsgProcessProviderVersion = "wrong version in process output (not 1)"
|
||||||
|
|
||||||
|
// errMsgProcessProviderMissKey missing access key id in output
|
||||||
|
errMsgProcessProviderMissKey = "missing AccessKeyId in process output"
|
||||||
|
|
||||||
|
// errMsgProcessProviderMissSecret missing secret acess key in output
|
||||||
|
errMsgProcessProviderMissSecret = "missing SecretAccessKey in process output"
|
||||||
|
|
||||||
|
// errMsgProcessProviderPrepareCmd prepare of command failed
|
||||||
|
errMsgProcessProviderPrepareCmd = "failed to prepare command"
|
||||||
|
|
||||||
|
// errMsgProcessProviderEmptyCmd command must not be empty
|
||||||
|
errMsgProcessProviderEmptyCmd = "command must not be empty"
|
||||||
|
|
||||||
|
// errMsgProcessProviderPipe failed to initialize pipe
|
||||||
|
errMsgProcessProviderPipe = "failed to initialize pipe"
|
||||||
|
|
||||||
|
// DefaultDuration is the default amount of time in minutes that the
|
||||||
|
// credentials will be valid for.
|
||||||
|
DefaultDuration = time.Duration(15) * time.Minute
|
||||||
|
|
||||||
|
// DefaultBufSize limits buffer size from growing to an enormous
|
||||||
|
// amount due to a faulty process.
|
||||||
|
DefaultBufSize = 1024
|
||||||
|
|
||||||
|
// DefaultTimeout default limit on time a process can run.
|
||||||
|
DefaultTimeout = time.Duration(1) * time.Minute
|
||||||
|
)
|
||||||
|
|
||||||
|
// ProcessProvider satisfies the credentials.Provider interface, and is a
|
||||||
|
// client to retrieve credentials from a process.
|
||||||
|
type ProcessProvider struct {
|
||||||
|
staticCreds bool
|
||||||
|
credentials.Expiry
|
||||||
|
originalCommand []string
|
||||||
|
|
||||||
|
// Expiry duration of the credentials. Defaults to 15 minutes if not set.
|
||||||
|
Duration time.Duration
|
||||||
|
|
||||||
|
// ExpiryWindow will allow the credentials to trigger refreshing prior to
|
||||||
|
// the credentials actually expiring. This is beneficial so race conditions
|
||||||
|
// with expiring credentials do not cause request to fail unexpectedly
|
||||||
|
// due to ExpiredTokenException exceptions.
|
||||||
|
//
|
||||||
|
// So a ExpiryWindow of 10s would cause calls to IsExpired() to return true
|
||||||
|
// 10 seconds before the credentials are actually expired.
|
||||||
|
//
|
||||||
|
// If ExpiryWindow is 0 or less it will be ignored.
|
||||||
|
ExpiryWindow time.Duration
|
||||||
|
|
||||||
|
// A string representing an os command that should return a JSON with
|
||||||
|
// credential information.
|
||||||
|
command *exec.Cmd
|
||||||
|
|
||||||
|
// MaxBufSize limits memory usage from growing to an enormous
|
||||||
|
// amount due to a faulty process.
|
||||||
|
MaxBufSize int
|
||||||
|
|
||||||
|
// Timeout limits the time a process can run.
|
||||||
|
Timeout time.Duration
|
||||||
|
}
|
||||||
|
|
||||||
|
// NewCredentials returns a pointer to a new Credentials object wrapping the
|
||||||
|
// ProcessProvider. The credentials will expire every 15 minutes by default.
|
||||||
|
func NewCredentials(command string, options ...func(*ProcessProvider)) *credentials.Credentials {
|
||||||
|
p := &ProcessProvider{
|
||||||
|
command: exec.Command(command),
|
||||||
|
Duration: DefaultDuration,
|
||||||
|
Timeout: DefaultTimeout,
|
||||||
|
MaxBufSize: DefaultBufSize,
|
||||||
|
}
|
||||||
|
|
||||||
|
for _, option := range options {
|
||||||
|
option(p)
|
||||||
|
}
|
||||||
|
|
||||||
|
return credentials.NewCredentials(p)
|
||||||
|
}
|
||||||
|
|
||||||
|
// NewCredentialsTimeout returns a pointer to a new Credentials object with
|
||||||
|
// the specified command and timeout, and default duration and max buffer size.
|
||||||
|
func NewCredentialsTimeout(command string, timeout time.Duration) *credentials.Credentials {
|
||||||
|
p := NewCredentials(command, func(opt *ProcessProvider) {
|
||||||
|
opt.Timeout = timeout
|
||||||
|
})
|
||||||
|
|
||||||
|
return p
|
||||||
|
}
|
||||||
|
|
||||||
|
// NewCredentialsCommand returns a pointer to a new Credentials object with
|
||||||
|
// the specified command, and default timeout, duration and max buffer size.
|
||||||
|
func NewCredentialsCommand(command *exec.Cmd, options ...func(*ProcessProvider)) *credentials.Credentials {
|
||||||
|
p := &ProcessProvider{
|
||||||
|
command: command,
|
||||||
|
Duration: DefaultDuration,
|
||||||
|
Timeout: DefaultTimeout,
|
||||||
|
MaxBufSize: DefaultBufSize,
|
||||||
|
}
|
||||||
|
|
||||||
|
for _, option := range options {
|
||||||
|
option(p)
|
||||||
|
}
|
||||||
|
|
||||||
|
return credentials.NewCredentials(p)
|
||||||
|
}
|
||||||
|
|
||||||
|
type credentialProcessResponse struct {
|
||||||
|
Version int
|
||||||
|
AccessKeyID string `json:"AccessKeyId"`
|
||||||
|
SecretAccessKey string
|
||||||
|
SessionToken string
|
||||||
|
Expiration *time.Time
|
||||||
|
}
|
||||||
|
|
||||||
|
// Retrieve executes the 'credential_process' and returns the credentials.
|
||||||
|
func (p *ProcessProvider) Retrieve() (credentials.Value, error) {
|
||||||
|
out, err := p.executeCredentialProcess()
|
||||||
|
if err != nil {
|
||||||
|
return credentials.Value{ProviderName: ProviderName}, err
|
||||||
|
}
|
||||||
|
|
||||||
|
// Serialize and validate response
|
||||||
|
resp := &credentialProcessResponse{}
|
||||||
|
if err = json.Unmarshal(out, resp); err != nil {
|
||||||
|
return credentials.Value{ProviderName: ProviderName}, awserr.New(
|
||||||
|
ErrCodeProcessProviderParse,
|
||||||
|
fmt.Sprintf("%s: %s", errMsgProcessProviderParse, string(out)),
|
||||||
|
err)
|
||||||
|
}
|
||||||
|
|
||||||
|
if resp.Version != 1 {
|
||||||
|
return credentials.Value{ProviderName: ProviderName}, awserr.New(
|
||||||
|
ErrCodeProcessProviderVersion,
|
||||||
|
errMsgProcessProviderVersion,
|
||||||
|
nil)
|
||||||
|
}
|
||||||
|
|
||||||
|
if len(resp.AccessKeyID) == 0 {
|
||||||
|
return credentials.Value{ProviderName: ProviderName}, awserr.New(
|
||||||
|
ErrCodeProcessProviderRequired,
|
||||||
|
errMsgProcessProviderMissKey,
|
||||||
|
nil)
|
||||||
|
}
|
||||||
|
|
||||||
|
if len(resp.SecretAccessKey) == 0 {
|
||||||
|
return credentials.Value{ProviderName: ProviderName}, awserr.New(
|
||||||
|
ErrCodeProcessProviderRequired,
|
||||||
|
errMsgProcessProviderMissSecret,
|
||||||
|
nil)
|
||||||
|
}
|
||||||
|
|
||||||
|
// Handle expiration
|
||||||
|
p.staticCreds = resp.Expiration == nil
|
||||||
|
if resp.Expiration != nil {
|
||||||
|
p.SetExpiration(*resp.Expiration, p.ExpiryWindow)
|
||||||
|
}
|
||||||
|
|
||||||
|
return credentials.Value{
|
||||||
|
ProviderName: ProviderName,
|
||||||
|
AccessKeyID: resp.AccessKeyID,
|
||||||
|
SecretAccessKey: resp.SecretAccessKey,
|
||||||
|
SessionToken: resp.SessionToken,
|
||||||
|
}, nil
|
||||||
|
}
|
||||||
|
|
||||||
|
// IsExpired returns true if the credentials retrieved are expired, or not yet
|
||||||
|
// retrieved.
|
||||||
|
func (p *ProcessProvider) IsExpired() bool {
|
||||||
|
if p.staticCreds {
|
||||||
|
return false
|
||||||
|
}
|
||||||
|
return p.Expiry.IsExpired()
|
||||||
|
}
|
||||||
|
|
||||||
|
// prepareCommand prepares the command to be executed.
|
||||||
|
func (p *ProcessProvider) prepareCommand() error {
|
||||||
|
|
||||||
|
var cmdArgs []string
|
||||||
|
if runtime.GOOS == "windows" {
|
||||||
|
cmdArgs = []string{"cmd.exe", "/C"}
|
||||||
|
} else {
|
||||||
|
cmdArgs = []string{"sh", "-c"}
|
||||||
|
}
|
||||||
|
|
||||||
|
if len(p.originalCommand) == 0 {
|
||||||
|
p.originalCommand = make([]string, len(p.command.Args))
|
||||||
|
copy(p.originalCommand, p.command.Args)
|
||||||
|
|
||||||
|
// check for empty command because it succeeds
|
||||||
|
if len(strings.TrimSpace(p.originalCommand[0])) < 1 {
|
||||||
|
return awserr.New(
|
||||||
|
ErrCodeProcessProviderExecution,
|
||||||
|
fmt.Sprintf(
|
||||||
|
"%s: %s",
|
||||||
|
errMsgProcessProviderPrepareCmd,
|
||||||
|
errMsgProcessProviderEmptyCmd),
|
||||||
|
nil)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
cmdArgs = append(cmdArgs, p.originalCommand...)
|
||||||
|
p.command = exec.Command(cmdArgs[0], cmdArgs[1:]...)
|
||||||
|
p.command.Env = os.Environ()
|
||||||
|
|
||||||
|
return nil
|
||||||
|
}
|
||||||
|
|
||||||
|
// executeCredentialProcess starts the credential process on the OS and
|
||||||
|
// returns the results or an error.
|
||||||
|
func (p *ProcessProvider) executeCredentialProcess() ([]byte, error) {
|
||||||
|
|
||||||
|
if err := p.prepareCommand(); err != nil {
|
||||||
|
return nil, err
|
||||||
|
}
|
||||||
|
|
||||||
|
// Setup the pipes
|
||||||
|
outReadPipe, outWritePipe, err := os.Pipe()
|
||||||
|
if err != nil {
|
||||||
|
return nil, awserr.New(
|
||||||
|
ErrCodeProcessProviderExecution,
|
||||||
|
errMsgProcessProviderPipe,
|
||||||
|
err)
|
||||||
|
}
|
||||||
|
|
||||||
|
p.command.Stderr = os.Stderr // display stderr on console for MFA
|
||||||
|
p.command.Stdout = outWritePipe // get creds json on process's stdout
|
||||||
|
p.command.Stdin = os.Stdin // enable stdin for MFA
|
||||||
|
|
||||||
|
output := bytes.NewBuffer(make([]byte, 0, p.MaxBufSize))
|
||||||
|
|
||||||
|
stdoutCh := make(chan error, 1)
|
||||||
|
go readInput(
|
||||||
|
io.LimitReader(outReadPipe, int64(p.MaxBufSize)),
|
||||||
|
output,
|
||||||
|
stdoutCh)
|
||||||
|
|
||||||
|
execCh := make(chan error, 1)
|
||||||
|
go executeCommand(*p.command, execCh)
|
||||||
|
|
||||||
|
finished := false
|
||||||
|
var errors []error
|
||||||
|
for !finished {
|
||||||
|
select {
|
||||||
|
case readError := <-stdoutCh:
|
||||||
|
errors = appendError(errors, readError)
|
||||||
|
finished = true
|
||||||
|
case execError := <-execCh:
|
||||||
|
err := outWritePipe.Close()
|
||||||
|
errors = appendError(errors, err)
|
||||||
|
errors = appendError(errors, execError)
|
||||||
|
if errors != nil {
|
||||||
|
return output.Bytes(), awserr.NewBatchError(
|
||||||
|
ErrCodeProcessProviderExecution,
|
||||||
|
errMsgProcessProviderProcess,
|
||||||
|
errors)
|
||||||
|
}
|
||||||
|
case <-time.After(p.Timeout):
|
||||||
|
finished = true
|
||||||
|
return output.Bytes(), awserr.NewBatchError(
|
||||||
|
ErrCodeProcessProviderExecution,
|
||||||
|
errMsgProcessProviderTimeout,
|
||||||
|
errors) // errors can be nil
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
out := output.Bytes()
|
||||||
|
|
||||||
|
if runtime.GOOS == "windows" {
|
||||||
|
// windows adds slashes to quotes
|
||||||
|
out = []byte(strings.Replace(string(out), `\"`, `"`, -1))
|
||||||
|
}
|
||||||
|
|
||||||
|
return out, nil
|
||||||
|
}
|
||||||
|
|
||||||
|
// appendError conveniently checks for nil before appending slice
|
||||||
|
func appendError(errors []error, err error) []error {
|
||||||
|
if err != nil {
|
||||||
|
return append(errors, err)
|
||||||
|
}
|
||||||
|
return errors
|
||||||
|
}
|
||||||
|
|
||||||
|
func executeCommand(cmd exec.Cmd, exec chan error) {
|
||||||
|
// Start the command
|
||||||
|
err := cmd.Start()
|
||||||
|
if err == nil {
|
||||||
|
err = cmd.Wait()
|
||||||
|
}
|
||||||
|
|
||||||
|
exec <- err
|
||||||
|
}
|
||||||
|
|
||||||
|
func readInput(r io.Reader, w io.Writer, read chan error) {
|
||||||
|
tee := io.TeeReader(r, w)
|
||||||
|
|
||||||
|
_, err := ioutil.ReadAll(tee)
|
||||||
|
|
||||||
|
if err == io.EOF {
|
||||||
|
err = nil
|
||||||
|
}
|
||||||
|
|
||||||
|
read <- err // will only arrive here when write end of pipe is closed
|
||||||
|
}
|
56
vendor/github.com/aws/aws-sdk-go/aws/csm/metric.go
generated
vendored
56
vendor/github.com/aws/aws-sdk-go/aws/csm/metric.go
generated
vendored
|
@ -3,6 +3,8 @@ package csm
|
||||||
import (
|
import (
|
||||||
"strconv"
|
"strconv"
|
||||||
"time"
|
"time"
|
||||||
|
|
||||||
|
"github.com/aws/aws-sdk-go/aws"
|
||||||
)
|
)
|
||||||
|
|
||||||
type metricTime time.Time
|
type metricTime time.Time
|
||||||
|
@ -39,6 +41,12 @@ type metric struct {
|
||||||
SDKException *string `json:"SdkException,omitempty"`
|
SDKException *string `json:"SdkException,omitempty"`
|
||||||
SDKExceptionMessage *string `json:"SdkExceptionMessage,omitempty"`
|
SDKExceptionMessage *string `json:"SdkExceptionMessage,omitempty"`
|
||||||
|
|
||||||
|
FinalHTTPStatusCode *int `json:"FinalHttpStatusCode,omitempty"`
|
||||||
|
FinalAWSException *string `json:"FinalAwsException,omitempty"`
|
||||||
|
FinalAWSExceptionMessage *string `json:"FinalAwsExceptionMessage,omitempty"`
|
||||||
|
FinalSDKException *string `json:"FinalSdkException,omitempty"`
|
||||||
|
FinalSDKExceptionMessage *string `json:"FinalSdkExceptionMessage,omitempty"`
|
||||||
|
|
||||||
DestinationIP *string `json:"DestinationIp,omitempty"`
|
DestinationIP *string `json:"DestinationIp,omitempty"`
|
||||||
ConnectionReused *int `json:"ConnectionReused,omitempty"`
|
ConnectionReused *int `json:"ConnectionReused,omitempty"`
|
||||||
|
|
||||||
|
@ -51,3 +59,51 @@ type metric struct {
|
||||||
|
|
||||||
MaxRetriesExceeded *int `json:"MaxRetriesExceeded,omitempty"`
|
MaxRetriesExceeded *int `json:"MaxRetriesExceeded,omitempty"`
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func (m *metric) TruncateFields() {
|
||||||
|
m.ClientID = truncateString(m.ClientID, 255)
|
||||||
|
m.UserAgent = truncateString(m.UserAgent, 256)
|
||||||
|
|
||||||
|
m.AWSException = truncateString(m.AWSException, 128)
|
||||||
|
m.AWSExceptionMessage = truncateString(m.AWSExceptionMessage, 512)
|
||||||
|
|
||||||
|
m.SDKException = truncateString(m.SDKException, 128)
|
||||||
|
m.SDKExceptionMessage = truncateString(m.SDKExceptionMessage, 512)
|
||||||
|
|
||||||
|
m.FinalAWSException = truncateString(m.FinalAWSException, 128)
|
||||||
|
m.FinalAWSExceptionMessage = truncateString(m.FinalAWSExceptionMessage, 512)
|
||||||
|
|
||||||
|
m.FinalSDKException = truncateString(m.FinalSDKException, 128)
|
||||||
|
m.FinalSDKExceptionMessage = truncateString(m.FinalSDKExceptionMessage, 512)
|
||||||
|
}
|
||||||
|
|
||||||
|
func truncateString(v *string, l int) *string {
|
||||||
|
if v != nil && len(*v) > l {
|
||||||
|
nv := (*v)[:l]
|
||||||
|
return &nv
|
||||||
|
}
|
||||||
|
|
||||||
|
return v
|
||||||
|
}
|
||||||
|
|
||||||
|
func (m *metric) SetException(e metricException) {
|
||||||
|
switch te := e.(type) {
|
||||||
|
case awsException:
|
||||||
|
m.AWSException = aws.String(te.exception)
|
||||||
|
m.AWSExceptionMessage = aws.String(te.message)
|
||||||
|
case sdkException:
|
||||||
|
m.SDKException = aws.String(te.exception)
|
||||||
|
m.SDKExceptionMessage = aws.String(te.message)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
func (m *metric) SetFinalException(e metricException) {
|
||||||
|
switch te := e.(type) {
|
||||||
|
case awsException:
|
||||||
|
m.FinalAWSException = aws.String(te.exception)
|
||||||
|
m.FinalAWSExceptionMessage = aws.String(te.message)
|
||||||
|
case sdkException:
|
||||||
|
m.FinalSDKException = aws.String(te.exception)
|
||||||
|
m.FinalSDKExceptionMessage = aws.String(te.message)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
26
vendor/github.com/aws/aws-sdk-go/aws/csm/metric_exception.go
generated
vendored
Normal file
26
vendor/github.com/aws/aws-sdk-go/aws/csm/metric_exception.go
generated
vendored
Normal file
|
@ -0,0 +1,26 @@
|
||||||
|
package csm
|
||||||
|
|
||||||
|
type metricException interface {
|
||||||
|
Exception() string
|
||||||
|
Message() string
|
||||||
|
}
|
||||||
|
|
||||||
|
type requestException struct {
|
||||||
|
exception string
|
||||||
|
message string
|
||||||
|
}
|
||||||
|
|
||||||
|
func (e requestException) Exception() string {
|
||||||
|
return e.exception
|
||||||
|
}
|
||||||
|
func (e requestException) Message() string {
|
||||||
|
return e.message
|
||||||
|
}
|
||||||
|
|
||||||
|
type awsException struct {
|
||||||
|
requestException
|
||||||
|
}
|
||||||
|
|
||||||
|
type sdkException struct {
|
||||||
|
requestException
|
||||||
|
}
|
42
vendor/github.com/aws/aws-sdk-go/aws/csm/reporter.go
generated
vendored
42
vendor/github.com/aws/aws-sdk-go/aws/csm/reporter.go
generated
vendored
|
@ -82,14 +82,15 @@ func (rep *Reporter) sendAPICallAttemptMetric(r *request.Request) {
|
||||||
|
|
||||||
if r.Error != nil {
|
if r.Error != nil {
|
||||||
if awserr, ok := r.Error.(awserr.Error); ok {
|
if awserr, ok := r.Error.(awserr.Error); ok {
|
||||||
setError(&m, awserr)
|
m.SetException(getMetricException(awserr))
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
m.TruncateFields()
|
||||||
rep.metricsCh.Push(m)
|
rep.metricsCh.Push(m)
|
||||||
}
|
}
|
||||||
|
|
||||||
func setError(m *metric, err awserr.Error) {
|
func getMetricException(err awserr.Error) metricException {
|
||||||
msg := err.Error()
|
msg := err.Error()
|
||||||
code := err.Code()
|
code := err.Code()
|
||||||
|
|
||||||
|
@ -97,11 +98,13 @@ func setError(m *metric, err awserr.Error) {
|
||||||
case "RequestError",
|
case "RequestError",
|
||||||
"SerializationError",
|
"SerializationError",
|
||||||
request.CanceledErrorCode:
|
request.CanceledErrorCode:
|
||||||
m.SDKException = &code
|
return sdkException{
|
||||||
m.SDKExceptionMessage = &msg
|
requestException{exception: code, message: msg},
|
||||||
|
}
|
||||||
default:
|
default:
|
||||||
m.AWSException = &code
|
return awsException{
|
||||||
m.AWSExceptionMessage = &msg
|
requestException{exception: code, message: msg},
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -116,6 +119,7 @@ func (rep *Reporter) sendAPICallMetric(r *request.Request) {
|
||||||
API: aws.String(r.Operation.Name),
|
API: aws.String(r.Operation.Name),
|
||||||
Service: aws.String(r.ClientInfo.ServiceID),
|
Service: aws.String(r.ClientInfo.ServiceID),
|
||||||
Timestamp: (*metricTime)(&now),
|
Timestamp: (*metricTime)(&now),
|
||||||
|
UserAgent: aws.String(r.HTTPRequest.Header.Get("User-Agent")),
|
||||||
Type: aws.String("ApiCall"),
|
Type: aws.String("ApiCall"),
|
||||||
AttemptCount: aws.Int(r.RetryCount + 1),
|
AttemptCount: aws.Int(r.RetryCount + 1),
|
||||||
Region: r.Config.Region,
|
Region: r.Config.Region,
|
||||||
|
@ -124,6 +128,18 @@ func (rep *Reporter) sendAPICallMetric(r *request.Request) {
|
||||||
MaxRetriesExceeded: aws.Int(boolIntValue(r.RetryCount >= r.MaxRetries())),
|
MaxRetriesExceeded: aws.Int(boolIntValue(r.RetryCount >= r.MaxRetries())),
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if r.HTTPResponse != nil {
|
||||||
|
m.FinalHTTPStatusCode = aws.Int(r.HTTPResponse.StatusCode)
|
||||||
|
}
|
||||||
|
|
||||||
|
if r.Error != nil {
|
||||||
|
if awserr, ok := r.Error.(awserr.Error); ok {
|
||||||
|
m.SetFinalException(getMetricException(awserr))
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
m.TruncateFields()
|
||||||
|
|
||||||
// TODO: Probably want to figure something out for logging dropped
|
// TODO: Probably want to figure something out for logging dropped
|
||||||
// metrics
|
// metrics
|
||||||
rep.metricsCh.Push(m)
|
rep.metricsCh.Push(m)
|
||||||
|
@ -223,13 +239,15 @@ func (rep *Reporter) InjectHandlers(handlers *request.Handlers) {
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
|
||||||
apiCallHandler := request.NamedHandler{Name: APICallMetricHandlerName, Fn: rep.sendAPICallMetric}
|
handlers.Complete.PushFrontNamed(request.NamedHandler{
|
||||||
apiCallAttemptHandler := request.NamedHandler{Name: APICallAttemptMetricHandlerName, Fn: rep.sendAPICallAttemptMetric}
|
Name: APICallMetricHandlerName,
|
||||||
|
Fn: rep.sendAPICallMetric,
|
||||||
|
})
|
||||||
|
|
||||||
handlers.Complete.PushFrontNamed(apiCallHandler)
|
handlers.CompleteAttempt.PushFrontNamed(request.NamedHandler{
|
||||||
handlers.Complete.PushFrontNamed(apiCallAttemptHandler)
|
Name: APICallAttemptMetricHandlerName,
|
||||||
|
Fn: rep.sendAPICallAttemptMetric,
|
||||||
handlers.AfterRetry.PushFrontNamed(apiCallAttemptHandler)
|
})
|
||||||
}
|
}
|
||||||
|
|
||||||
// boolIntValue return 1 for true and 0 for false.
|
// boolIntValue return 1 for true and 0 for false.
|
||||||
|
|
4
vendor/github.com/aws/aws-sdk-go/aws/ec2metadata/api.go
generated
vendored
4
vendor/github.com/aws/aws-sdk-go/aws/ec2metadata/api.go
generated
vendored
|
@ -118,6 +118,10 @@ func (c *EC2Metadata) Region() (string, error) {
|
||||||
return "", err
|
return "", err
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if len(resp) == 0 {
|
||||||
|
return "", awserr.New("EC2MetadataError", "invalid Region response", nil)
|
||||||
|
}
|
||||||
|
|
||||||
// returns region without the suffix. Eg: us-west-2a becomes us-west-2
|
// returns region without the suffix. Eg: us-west-2a becomes us-west-2
|
||||||
return resp[:len(resp)-1], nil
|
return resp[:len(resp)-1], nil
|
||||||
}
|
}
|
||||||
|
|
2
vendor/github.com/aws/aws-sdk-go/aws/ec2metadata/service.go
generated
vendored
2
vendor/github.com/aws/aws-sdk-go/aws/ec2metadata/service.go
generated
vendored
|
@ -4,7 +4,7 @@
|
||||||
// This package's client can be disabled completely by setting the environment
|
// This package's client can be disabled completely by setting the environment
|
||||||
// variable "AWS_EC2_METADATA_DISABLED=true". This environment variable set to
|
// variable "AWS_EC2_METADATA_DISABLED=true". This environment variable set to
|
||||||
// true instructs the SDK to disable the EC2 Metadata client. The client cannot
|
// true instructs the SDK to disable the EC2 Metadata client. The client cannot
|
||||||
// be used while the environemnt variable is set to true, (case insensitive).
|
// be used while the environment variable is set to true, (case insensitive).
|
||||||
package ec2metadata
|
package ec2metadata
|
||||||
|
|
||||||
import (
|
import (
|
||||||
|
|
28
vendor/github.com/aws/aws-sdk-go/aws/endpoints/decode.go
generated
vendored
28
vendor/github.com/aws/aws-sdk-go/aws/endpoints/decode.go
generated
vendored
|
@ -85,6 +85,7 @@ func decodeV3Endpoints(modelDef modelDefinition, opts DecodeModelOptions) (Resol
|
||||||
custAddS3DualStack(p)
|
custAddS3DualStack(p)
|
||||||
custRmIotDataService(p)
|
custRmIotDataService(p)
|
||||||
custFixAppAutoscalingChina(p)
|
custFixAppAutoscalingChina(p)
|
||||||
|
custFixAppAutoscalingUsGov(p)
|
||||||
}
|
}
|
||||||
|
|
||||||
return ps, nil
|
return ps, nil
|
||||||
|
@ -149,6 +150,33 @@ func custFixAppAutoscalingChina(p *partition) {
|
||||||
p.Services[serviceName] = s
|
p.Services[serviceName] = s
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func custFixAppAutoscalingUsGov(p *partition) {
|
||||||
|
if p.ID != "aws-us-gov" {
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
|
const serviceName = "application-autoscaling"
|
||||||
|
s, ok := p.Services[serviceName]
|
||||||
|
if !ok {
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
|
if a := s.Defaults.CredentialScope.Service; a != "" {
|
||||||
|
fmt.Printf("custFixAppAutoscalingUsGov: ignoring customization, expected empty credential scope service, got %s\n", a)
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
|
if a := s.Defaults.Hostname; a != "" {
|
||||||
|
fmt.Printf("custFixAppAutoscalingUsGov: ignoring customization, expected empty hostname, got %s\n", a)
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
|
s.Defaults.CredentialScope.Service = "application-autoscaling"
|
||||||
|
s.Defaults.Hostname = "autoscaling.{region}.amazonaws.com"
|
||||||
|
|
||||||
|
p.Services[serviceName] = s
|
||||||
|
}
|
||||||
|
|
||||||
type decodeModelError struct {
|
type decodeModelError struct {
|
||||||
awsError
|
awsError
|
||||||
}
|
}
|
||||||
|
|
583
vendor/github.com/aws/aws-sdk-go/aws/endpoints/defaults.go
generated
vendored
583
vendor/github.com/aws/aws-sdk-go/aws/endpoints/defaults.go
generated
vendored
File diff suppressed because it is too large
Load Diff
141
vendor/github.com/aws/aws-sdk-go/aws/endpoints/dep_service_ids.go
generated
vendored
Normal file
141
vendor/github.com/aws/aws-sdk-go/aws/endpoints/dep_service_ids.go
generated
vendored
Normal file
|
@ -0,0 +1,141 @@
|
||||||
|
package endpoints
|
||||||
|
|
||||||
|
// Service identifiers
|
||||||
|
//
|
||||||
|
// Deprecated: Use client package's EndpointID value instead of these
|
||||||
|
// ServiceIDs. These IDs are not maintained, and are out of date.
|
||||||
|
const (
|
||||||
|
A4bServiceID = "a4b" // A4b.
|
||||||
|
AcmServiceID = "acm" // Acm.
|
||||||
|
AcmPcaServiceID = "acm-pca" // AcmPca.
|
||||||
|
ApiMediatailorServiceID = "api.mediatailor" // ApiMediatailor.
|
||||||
|
ApiPricingServiceID = "api.pricing" // ApiPricing.
|
||||||
|
ApiSagemakerServiceID = "api.sagemaker" // ApiSagemaker.
|
||||||
|
ApigatewayServiceID = "apigateway" // Apigateway.
|
||||||
|
ApplicationAutoscalingServiceID = "application-autoscaling" // ApplicationAutoscaling.
|
||||||
|
Appstream2ServiceID = "appstream2" // Appstream2.
|
||||||
|
AppsyncServiceID = "appsync" // Appsync.
|
||||||
|
AthenaServiceID = "athena" // Athena.
|
||||||
|
AutoscalingServiceID = "autoscaling" // Autoscaling.
|
||||||
|
AutoscalingPlansServiceID = "autoscaling-plans" // AutoscalingPlans.
|
||||||
|
BatchServiceID = "batch" // Batch.
|
||||||
|
BudgetsServiceID = "budgets" // Budgets.
|
||||||
|
CeServiceID = "ce" // Ce.
|
||||||
|
ChimeServiceID = "chime" // Chime.
|
||||||
|
Cloud9ServiceID = "cloud9" // Cloud9.
|
||||||
|
ClouddirectoryServiceID = "clouddirectory" // Clouddirectory.
|
||||||
|
CloudformationServiceID = "cloudformation" // Cloudformation.
|
||||||
|
CloudfrontServiceID = "cloudfront" // Cloudfront.
|
||||||
|
CloudhsmServiceID = "cloudhsm" // Cloudhsm.
|
||||||
|
Cloudhsmv2ServiceID = "cloudhsmv2" // Cloudhsmv2.
|
||||||
|
CloudsearchServiceID = "cloudsearch" // Cloudsearch.
|
||||||
|
CloudtrailServiceID = "cloudtrail" // Cloudtrail.
|
||||||
|
CodebuildServiceID = "codebuild" // Codebuild.
|
||||||
|
CodecommitServiceID = "codecommit" // Codecommit.
|
||||||
|
CodedeployServiceID = "codedeploy" // Codedeploy.
|
||||||
|
CodepipelineServiceID = "codepipeline" // Codepipeline.
|
||||||
|
CodestarServiceID = "codestar" // Codestar.
|
||||||
|
CognitoIdentityServiceID = "cognito-identity" // CognitoIdentity.
|
||||||
|
CognitoIdpServiceID = "cognito-idp" // CognitoIdp.
|
||||||
|
CognitoSyncServiceID = "cognito-sync" // CognitoSync.
|
||||||
|
ComprehendServiceID = "comprehend" // Comprehend.
|
||||||
|
ConfigServiceID = "config" // Config.
|
||||||
|
CurServiceID = "cur" // Cur.
|
||||||
|
DatapipelineServiceID = "datapipeline" // Datapipeline.
|
||||||
|
DaxServiceID = "dax" // Dax.
|
||||||
|
DevicefarmServiceID = "devicefarm" // Devicefarm.
|
||||||
|
DirectconnectServiceID = "directconnect" // Directconnect.
|
||||||
|
DiscoveryServiceID = "discovery" // Discovery.
|
||||||
|
DmsServiceID = "dms" // Dms.
|
||||||
|
DsServiceID = "ds" // Ds.
|
||||||
|
DynamodbServiceID = "dynamodb" // Dynamodb.
|
||||||
|
Ec2ServiceID = "ec2" // Ec2.
|
||||||
|
Ec2metadataServiceID = "ec2metadata" // Ec2metadata.
|
||||||
|
EcrServiceID = "ecr" // Ecr.
|
||||||
|
EcsServiceID = "ecs" // Ecs.
|
||||||
|
ElasticacheServiceID = "elasticache" // Elasticache.
|
||||||
|
ElasticbeanstalkServiceID = "elasticbeanstalk" // Elasticbeanstalk.
|
||||||
|
ElasticfilesystemServiceID = "elasticfilesystem" // Elasticfilesystem.
|
||||||
|
ElasticloadbalancingServiceID = "elasticloadbalancing" // Elasticloadbalancing.
|
||||||
|
ElasticmapreduceServiceID = "elasticmapreduce" // Elasticmapreduce.
|
||||||
|
ElastictranscoderServiceID = "elastictranscoder" // Elastictranscoder.
|
||||||
|
EmailServiceID = "email" // Email.
|
||||||
|
EntitlementMarketplaceServiceID = "entitlement.marketplace" // EntitlementMarketplace.
|
||||||
|
EsServiceID = "es" // Es.
|
||||||
|
EventsServiceID = "events" // Events.
|
||||||
|
FirehoseServiceID = "firehose" // Firehose.
|
||||||
|
FmsServiceID = "fms" // Fms.
|
||||||
|
GameliftServiceID = "gamelift" // Gamelift.
|
||||||
|
GlacierServiceID = "glacier" // Glacier.
|
||||||
|
GlueServiceID = "glue" // Glue.
|
||||||
|
GreengrassServiceID = "greengrass" // Greengrass.
|
||||||
|
GuarddutyServiceID = "guardduty" // Guardduty.
|
||||||
|
HealthServiceID = "health" // Health.
|
||||||
|
IamServiceID = "iam" // Iam.
|
||||||
|
ImportexportServiceID = "importexport" // Importexport.
|
||||||
|
InspectorServiceID = "inspector" // Inspector.
|
||||||
|
IotServiceID = "iot" // Iot.
|
||||||
|
IotanalyticsServiceID = "iotanalytics" // Iotanalytics.
|
||||||
|
KinesisServiceID = "kinesis" // Kinesis.
|
||||||
|
KinesisanalyticsServiceID = "kinesisanalytics" // Kinesisanalytics.
|
||||||
|
KinesisvideoServiceID = "kinesisvideo" // Kinesisvideo.
|
||||||
|
KmsServiceID = "kms" // Kms.
|
||||||
|
LambdaServiceID = "lambda" // Lambda.
|
||||||
|
LightsailServiceID = "lightsail" // Lightsail.
|
||||||
|
LogsServiceID = "logs" // Logs.
|
||||||
|
MachinelearningServiceID = "machinelearning" // Machinelearning.
|
||||||
|
MarketplacecommerceanalyticsServiceID = "marketplacecommerceanalytics" // Marketplacecommerceanalytics.
|
||||||
|
MediaconvertServiceID = "mediaconvert" // Mediaconvert.
|
||||||
|
MedialiveServiceID = "medialive" // Medialive.
|
||||||
|
MediapackageServiceID = "mediapackage" // Mediapackage.
|
||||||
|
MediastoreServiceID = "mediastore" // Mediastore.
|
||||||
|
MeteringMarketplaceServiceID = "metering.marketplace" // MeteringMarketplace.
|
||||||
|
MghServiceID = "mgh" // Mgh.
|
||||||
|
MobileanalyticsServiceID = "mobileanalytics" // Mobileanalytics.
|
||||||
|
ModelsLexServiceID = "models.lex" // ModelsLex.
|
||||||
|
MonitoringServiceID = "monitoring" // Monitoring.
|
||||||
|
MturkRequesterServiceID = "mturk-requester" // MturkRequester.
|
||||||
|
NeptuneServiceID = "neptune" // Neptune.
|
||||||
|
OpsworksServiceID = "opsworks" // Opsworks.
|
||||||
|
OpsworksCmServiceID = "opsworks-cm" // OpsworksCm.
|
||||||
|
OrganizationsServiceID = "organizations" // Organizations.
|
||||||
|
PinpointServiceID = "pinpoint" // Pinpoint.
|
||||||
|
PollyServiceID = "polly" // Polly.
|
||||||
|
RdsServiceID = "rds" // Rds.
|
||||||
|
RedshiftServiceID = "redshift" // Redshift.
|
||||||
|
RekognitionServiceID = "rekognition" // Rekognition.
|
||||||
|
ResourceGroupsServiceID = "resource-groups" // ResourceGroups.
|
||||||
|
Route53ServiceID = "route53" // Route53.
|
||||||
|
Route53domainsServiceID = "route53domains" // Route53domains.
|
||||||
|
RuntimeLexServiceID = "runtime.lex" // RuntimeLex.
|
||||||
|
RuntimeSagemakerServiceID = "runtime.sagemaker" // RuntimeSagemaker.
|
||||||
|
S3ServiceID = "s3" // S3.
|
||||||
|
S3ControlServiceID = "s3-control" // S3Control.
|
||||||
|
SagemakerServiceID = "api.sagemaker" // Sagemaker.
|
||||||
|
SdbServiceID = "sdb" // Sdb.
|
||||||
|
SecretsmanagerServiceID = "secretsmanager" // Secretsmanager.
|
||||||
|
ServerlessrepoServiceID = "serverlessrepo" // Serverlessrepo.
|
||||||
|
ServicecatalogServiceID = "servicecatalog" // Servicecatalog.
|
||||||
|
ServicediscoveryServiceID = "servicediscovery" // Servicediscovery.
|
||||||
|
ShieldServiceID = "shield" // Shield.
|
||||||
|
SmsServiceID = "sms" // Sms.
|
||||||
|
SnowballServiceID = "snowball" // Snowball.
|
||||||
|
SnsServiceID = "sns" // Sns.
|
||||||
|
SqsServiceID = "sqs" // Sqs.
|
||||||
|
SsmServiceID = "ssm" // Ssm.
|
||||||
|
StatesServiceID = "states" // States.
|
||||||
|
StoragegatewayServiceID = "storagegateway" // Storagegateway.
|
||||||
|
StreamsDynamodbServiceID = "streams.dynamodb" // StreamsDynamodb.
|
||||||
|
StsServiceID = "sts" // Sts.
|
||||||
|
SupportServiceID = "support" // Support.
|
||||||
|
SwfServiceID = "swf" // Swf.
|
||||||
|
TaggingServiceID = "tagging" // Tagging.
|
||||||
|
TransferServiceID = "transfer" // Transfer.
|
||||||
|
TranslateServiceID = "translate" // Translate.
|
||||||
|
WafServiceID = "waf" // Waf.
|
||||||
|
WafRegionalServiceID = "waf-regional" // WafRegional.
|
||||||
|
WorkdocsServiceID = "workdocs" // Workdocs.
|
||||||
|
WorkmailServiceID = "workmail" // Workmail.
|
||||||
|
WorkspacesServiceID = "workspaces" // Workspaces.
|
||||||
|
XrayServiceID = "xray" // Xray.
|
||||||
|
)
|
2
vendor/github.com/aws/aws-sdk-go/aws/endpoints/endpoints.go
generated
vendored
2
vendor/github.com/aws/aws-sdk-go/aws/endpoints/endpoints.go
generated
vendored
|
@ -35,7 +35,7 @@ type Options struct {
|
||||||
//
|
//
|
||||||
// If resolving an endpoint on the partition list the provided region will
|
// If resolving an endpoint on the partition list the provided region will
|
||||||
// be used to determine which partition's domain name pattern to the service
|
// be used to determine which partition's domain name pattern to the service
|
||||||
// endpoint ID with. If both the service and region are unkonwn and resolving
|
// endpoint ID with. If both the service and region are unknown and resolving
|
||||||
// the endpoint on partition list an UnknownEndpointError error will be returned.
|
// the endpoint on partition list an UnknownEndpointError error will be returned.
|
||||||
//
|
//
|
||||||
// If resolving and endpoint on a partition specific resolver that partition's
|
// If resolving and endpoint on a partition specific resolver that partition's
|
||||||
|
|
24
vendor/github.com/aws/aws-sdk-go/aws/endpoints/v3model_codegen.go
generated
vendored
24
vendor/github.com/aws/aws-sdk-go/aws/endpoints/v3model_codegen.go
generated
vendored
|
@ -16,6 +16,10 @@ import (
|
||||||
type CodeGenOptions struct {
|
type CodeGenOptions struct {
|
||||||
// Options for how the model will be decoded.
|
// Options for how the model will be decoded.
|
||||||
DecodeModelOptions DecodeModelOptions
|
DecodeModelOptions DecodeModelOptions
|
||||||
|
|
||||||
|
// Disables code generation of the service endpoint prefix IDs defined in
|
||||||
|
// the model.
|
||||||
|
DisableGenerateServiceIDs bool
|
||||||
}
|
}
|
||||||
|
|
||||||
// Set combines all of the option functions together
|
// Set combines all of the option functions together
|
||||||
|
@ -39,8 +43,16 @@ func CodeGenModel(modelFile io.Reader, outFile io.Writer, optFns ...func(*CodeGe
|
||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
|
|
||||||
|
v := struct {
|
||||||
|
Resolver
|
||||||
|
CodeGenOptions
|
||||||
|
}{
|
||||||
|
Resolver: resolver,
|
||||||
|
CodeGenOptions: opts,
|
||||||
|
}
|
||||||
|
|
||||||
tmpl := template.Must(template.New("tmpl").Funcs(funcMap).Parse(v3Tmpl))
|
tmpl := template.Must(template.New("tmpl").Funcs(funcMap).Parse(v3Tmpl))
|
||||||
if err := tmpl.ExecuteTemplate(outFile, "defaults", resolver); err != nil {
|
if err := tmpl.ExecuteTemplate(outFile, "defaults", v); err != nil {
|
||||||
return fmt.Errorf("failed to execute template, %v", err)
|
return fmt.Errorf("failed to execute template, %v", err)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -166,15 +178,17 @@ import (
|
||||||
"regexp"
|
"regexp"
|
||||||
)
|
)
|
||||||
|
|
||||||
{{ template "partition consts" . }}
|
{{ template "partition consts" $.Resolver }}
|
||||||
|
|
||||||
{{ range $_, $partition := . }}
|
{{ range $_, $partition := $.Resolver }}
|
||||||
{{ template "partition region consts" $partition }}
|
{{ template "partition region consts" $partition }}
|
||||||
{{ end }}
|
{{ end }}
|
||||||
|
|
||||||
{{ template "service consts" . }}
|
{{ if not $.DisableGenerateServiceIDs -}}
|
||||||
|
{{ template "service consts" $.Resolver }}
|
||||||
|
{{- end }}
|
||||||
|
|
||||||
{{ template "endpoint resolvers" . }}
|
{{ template "endpoint resolvers" $.Resolver }}
|
||||||
{{- end }}
|
{{- end }}
|
||||||
|
|
||||||
{{ define "partition consts" }}
|
{{ define "partition consts" }}
|
||||||
|
|
3
vendor/github.com/aws/aws-sdk-go/aws/request/handlers.go
generated
vendored
3
vendor/github.com/aws/aws-sdk-go/aws/request/handlers.go
generated
vendored
|
@ -19,6 +19,7 @@ type Handlers struct {
|
||||||
UnmarshalError HandlerList
|
UnmarshalError HandlerList
|
||||||
Retry HandlerList
|
Retry HandlerList
|
||||||
AfterRetry HandlerList
|
AfterRetry HandlerList
|
||||||
|
CompleteAttempt HandlerList
|
||||||
Complete HandlerList
|
Complete HandlerList
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -36,6 +37,7 @@ func (h *Handlers) Copy() Handlers {
|
||||||
UnmarshalMeta: h.UnmarshalMeta.copy(),
|
UnmarshalMeta: h.UnmarshalMeta.copy(),
|
||||||
Retry: h.Retry.copy(),
|
Retry: h.Retry.copy(),
|
||||||
AfterRetry: h.AfterRetry.copy(),
|
AfterRetry: h.AfterRetry.copy(),
|
||||||
|
CompleteAttempt: h.CompleteAttempt.copy(),
|
||||||
Complete: h.Complete.copy(),
|
Complete: h.Complete.copy(),
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -53,6 +55,7 @@ func (h *Handlers) Clear() {
|
||||||
h.ValidateResponse.Clear()
|
h.ValidateResponse.Clear()
|
||||||
h.Retry.Clear()
|
h.Retry.Clear()
|
||||||
h.AfterRetry.Clear()
|
h.AfterRetry.Clear()
|
||||||
|
h.CompleteAttempt.Clear()
|
||||||
h.Complete.Clear()
|
h.Complete.Clear()
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
136
vendor/github.com/aws/aws-sdk-go/aws/request/request.go
generated
vendored
136
vendor/github.com/aws/aws-sdk-go/aws/request/request.go
generated
vendored
|
@ -4,7 +4,6 @@ import (
|
||||||
"bytes"
|
"bytes"
|
||||||
"fmt"
|
"fmt"
|
||||||
"io"
|
"io"
|
||||||
"net"
|
|
||||||
"net/http"
|
"net/http"
|
||||||
"net/url"
|
"net/url"
|
||||||
"reflect"
|
"reflect"
|
||||||
|
@ -122,7 +121,6 @@ func New(cfg aws.Config, clientInfo metadata.ClientInfo, handlers Handlers,
|
||||||
Handlers: handlers.Copy(),
|
Handlers: handlers.Copy(),
|
||||||
|
|
||||||
Retryer: retryer,
|
Retryer: retryer,
|
||||||
AttemptTime: time.Now(),
|
|
||||||
Time: time.Now(),
|
Time: time.Now(),
|
||||||
ExpireTime: 0,
|
ExpireTime: 0,
|
||||||
Operation: operation,
|
Operation: operation,
|
||||||
|
@ -267,7 +265,7 @@ func (r *Request) SetReaderBody(reader io.ReadSeeker) {
|
||||||
|
|
||||||
// Presign returns the request's signed URL. Error will be returned
|
// Presign returns the request's signed URL. Error will be returned
|
||||||
// if the signing fails. The expire parameter is only used for presigned Amazon
|
// if the signing fails. The expire parameter is only used for presigned Amazon
|
||||||
// S3 API requests. All other AWS services will use a fixed expriation
|
// S3 API requests. All other AWS services will use a fixed expiration
|
||||||
// time of 15 minutes.
|
// time of 15 minutes.
|
||||||
//
|
//
|
||||||
// It is invalid to create a presigned URL with a expire duration 0 or less. An
|
// It is invalid to create a presigned URL with a expire duration 0 or less. An
|
||||||
|
@ -287,7 +285,7 @@ func (r *Request) Presign(expire time.Duration) (string, error) {
|
||||||
// PresignRequest behaves just like presign, with the addition of returning a
|
// PresignRequest behaves just like presign, with the addition of returning a
|
||||||
// set of headers that were signed. The expire parameter is only used for
|
// set of headers that were signed. The expire parameter is only used for
|
||||||
// presigned Amazon S3 API requests. All other AWS services will use a fixed
|
// presigned Amazon S3 API requests. All other AWS services will use a fixed
|
||||||
// expriation time of 15 minutes.
|
// expiration time of 15 minutes.
|
||||||
//
|
//
|
||||||
// It is invalid to create a presigned URL with a expire duration 0 or less. An
|
// It is invalid to create a presigned URL with a expire duration 0 or less. An
|
||||||
// error is returned if expire duration is 0 or less.
|
// error is returned if expire duration is 0 or less.
|
||||||
|
@ -466,9 +464,38 @@ func (r *Request) Send() error {
|
||||||
r.Handlers.Complete.Run(r)
|
r.Handlers.Complete.Run(r)
|
||||||
}()
|
}()
|
||||||
|
|
||||||
|
if err := r.Error; err != nil {
|
||||||
|
return err
|
||||||
|
}
|
||||||
|
|
||||||
for {
|
for {
|
||||||
|
r.Error = nil
|
||||||
r.AttemptTime = time.Now()
|
r.AttemptTime = time.Now()
|
||||||
if aws.BoolValue(r.Retryable) {
|
|
||||||
|
if err := r.Sign(); err != nil {
|
||||||
|
debugLogReqError(r, "Sign Request", false, err)
|
||||||
|
return err
|
||||||
|
}
|
||||||
|
|
||||||
|
if err := r.sendRequest(); err == nil {
|
||||||
|
return nil
|
||||||
|
} else if !shouldRetryCancel(r.Error) {
|
||||||
|
return err
|
||||||
|
} else {
|
||||||
|
r.Handlers.Retry.Run(r)
|
||||||
|
r.Handlers.AfterRetry.Run(r)
|
||||||
|
|
||||||
|
if r.Error != nil || !aws.BoolValue(r.Retryable) {
|
||||||
|
return r.Error
|
||||||
|
}
|
||||||
|
|
||||||
|
r.prepareRetry()
|
||||||
|
continue
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
func (r *Request) prepareRetry() {
|
||||||
if r.Config.LogLevel.Matches(aws.LogDebugWithRequestRetries) {
|
if r.Config.LogLevel.Matches(aws.LogDebugWithRequestRetries) {
|
||||||
r.Config.Logger.Log(fmt.Sprintf("DEBUG: Retrying Request %s/%s, attempt %d",
|
r.Config.Logger.Log(fmt.Sprintf("DEBUG: Retrying Request %s/%s, attempt %d",
|
||||||
r.ClientInfo.ServiceName, r.Operation.Name, r.RetryCount))
|
r.ClientInfo.ServiceName, r.Operation.Name, r.RetryCount))
|
||||||
|
@ -485,62 +512,31 @@ func (r *Request) Send() error {
|
||||||
if r.HTTPResponse != nil && r.HTTPResponse.Body != nil {
|
if r.HTTPResponse != nil && r.HTTPResponse.Body != nil {
|
||||||
r.HTTPResponse.Body.Close()
|
r.HTTPResponse.Body.Close()
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
r.Sign()
|
func (r *Request) sendRequest() (sendErr error) {
|
||||||
if r.Error != nil {
|
defer r.Handlers.CompleteAttempt.Run(r)
|
||||||
return r.Error
|
|
||||||
}
|
|
||||||
|
|
||||||
r.Retryable = nil
|
r.Retryable = nil
|
||||||
|
|
||||||
r.Handlers.Send.Run(r)
|
r.Handlers.Send.Run(r)
|
||||||
if r.Error != nil {
|
if r.Error != nil {
|
||||||
if !shouldRetryCancel(r) {
|
debugLogReqError(r, "Send Request", r.WillRetry(), r.Error)
|
||||||
return r.Error
|
return r.Error
|
||||||
}
|
}
|
||||||
|
|
||||||
err := r.Error
|
|
||||||
r.Handlers.Retry.Run(r)
|
|
||||||
r.Handlers.AfterRetry.Run(r)
|
|
||||||
if r.Error != nil {
|
|
||||||
debugLogReqError(r, "Send Request", false, err)
|
|
||||||
return r.Error
|
|
||||||
}
|
|
||||||
debugLogReqError(r, "Send Request", true, err)
|
|
||||||
continue
|
|
||||||
}
|
|
||||||
r.Handlers.UnmarshalMeta.Run(r)
|
r.Handlers.UnmarshalMeta.Run(r)
|
||||||
r.Handlers.ValidateResponse.Run(r)
|
r.Handlers.ValidateResponse.Run(r)
|
||||||
if r.Error != nil {
|
if r.Error != nil {
|
||||||
r.Handlers.UnmarshalError.Run(r)
|
r.Handlers.UnmarshalError.Run(r)
|
||||||
err := r.Error
|
debugLogReqError(r, "Validate Response", r.WillRetry(), r.Error)
|
||||||
|
|
||||||
r.Handlers.Retry.Run(r)
|
|
||||||
r.Handlers.AfterRetry.Run(r)
|
|
||||||
if r.Error != nil {
|
|
||||||
debugLogReqError(r, "Validate Response", false, err)
|
|
||||||
return r.Error
|
return r.Error
|
||||||
}
|
}
|
||||||
debugLogReqError(r, "Validate Response", true, err)
|
|
||||||
continue
|
|
||||||
}
|
|
||||||
|
|
||||||
r.Handlers.Unmarshal.Run(r)
|
r.Handlers.Unmarshal.Run(r)
|
||||||
if r.Error != nil {
|
if r.Error != nil {
|
||||||
err := r.Error
|
debugLogReqError(r, "Unmarshal Response", r.WillRetry(), r.Error)
|
||||||
r.Handlers.Retry.Run(r)
|
|
||||||
r.Handlers.AfterRetry.Run(r)
|
|
||||||
if r.Error != nil {
|
|
||||||
debugLogReqError(r, "Unmarshal Response", false, err)
|
|
||||||
return r.Error
|
return r.Error
|
||||||
}
|
}
|
||||||
debugLogReqError(r, "Unmarshal Response", true, err)
|
|
||||||
continue
|
|
||||||
}
|
|
||||||
|
|
||||||
break
|
|
||||||
}
|
|
||||||
|
|
||||||
return nil
|
return nil
|
||||||
}
|
}
|
||||||
|
@ -565,30 +561,46 @@ func AddToUserAgent(r *Request, s string) {
|
||||||
r.HTTPRequest.Header.Set("User-Agent", s)
|
r.HTTPRequest.Header.Set("User-Agent", s)
|
||||||
}
|
}
|
||||||
|
|
||||||
func shouldRetryCancel(r *Request) bool {
|
type temporary interface {
|
||||||
awsErr, ok := r.Error.(awserr.Error)
|
Temporary() bool
|
||||||
timeoutErr := false
|
}
|
||||||
errStr := r.Error.Error()
|
|
||||||
if ok {
|
func shouldRetryCancel(err error) bool {
|
||||||
if awsErr.Code() == CanceledErrorCode {
|
switch err := err.(type) {
|
||||||
|
case awserr.Error:
|
||||||
|
if err.Code() == CanceledErrorCode {
|
||||||
return false
|
return false
|
||||||
}
|
}
|
||||||
err := awsErr.OrigErr()
|
return shouldRetryCancel(err.OrigErr())
|
||||||
netErr, netOK := err.(net.Error)
|
case *url.Error:
|
||||||
timeoutErr = netOK && netErr.Temporary()
|
if strings.Contains(err.Error(), "connection refused") {
|
||||||
if urlErr, ok := err.(*url.Error); !timeoutErr && ok {
|
// Refused connections should be retried as the service may not yet
|
||||||
errStr = urlErr.Err.Error()
|
// be running on the port. Go TCP dial considers refused
|
||||||
|
// connections as not temporary.
|
||||||
|
return true
|
||||||
}
|
}
|
||||||
|
// *url.Error only implements Temporary after golang 1.6 but since
|
||||||
|
// url.Error only wraps the error:
|
||||||
|
return shouldRetryCancel(err.Err)
|
||||||
|
case temporary:
|
||||||
|
// If the error is temporary, we want to allow continuation of the
|
||||||
|
// retry process
|
||||||
|
return err.Temporary()
|
||||||
|
case nil:
|
||||||
|
// `awserr.Error.OrigErr()` can be nil, meaning there was an error but
|
||||||
|
// because we don't know the cause, it is marked as retriable. See
|
||||||
|
// TestRequest4xxUnretryable for an example.
|
||||||
|
return true
|
||||||
|
default:
|
||||||
|
switch err.Error() {
|
||||||
|
case "net/http: request canceled",
|
||||||
|
"net/http: request canceled while waiting for connection":
|
||||||
|
// known 1.5 error case when an http request is cancelled
|
||||||
|
return false
|
||||||
|
}
|
||||||
|
// here we don't know the error; so we allow a retry.
|
||||||
|
return true
|
||||||
}
|
}
|
||||||
|
|
||||||
// There can be two types of canceled errors here.
|
|
||||||
// The first being a net.Error and the other being an error.
|
|
||||||
// If the request was timed out, we want to continue the retry
|
|
||||||
// process. Otherwise, return the canceled error.
|
|
||||||
return timeoutErr ||
|
|
||||||
(errStr != "net/http: request canceled" &&
|
|
||||||
errStr != "net/http: request canceled while waiting for connection")
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
// SanitizeHostForHeader removes default port from host and updates request.Host
|
// SanitizeHostForHeader removes default port from host and updates request.Host
|
||||||
|
|
1
vendor/github.com/aws/aws-sdk-go/aws/request/retryer.go
generated
vendored
1
vendor/github.com/aws/aws-sdk-go/aws/request/retryer.go
generated
vendored
|
@ -40,6 +40,7 @@ var throttleCodes = map[string]struct{}{
|
||||||
"RequestThrottled": {},
|
"RequestThrottled": {},
|
||||||
"TooManyRequestsException": {}, // Lambda functions
|
"TooManyRequestsException": {}, // Lambda functions
|
||||||
"PriorRequestNotComplete": {}, // Route53
|
"PriorRequestNotComplete": {}, // Route53
|
||||||
|
"TransactionInProgressException": {},
|
||||||
}
|
}
|
||||||
|
|
||||||
// credsExpiredCodes is a collection of error codes which signify the credentials
|
// credsExpiredCodes is a collection of error codes which signify the credentials
|
||||||
|
|
25
vendor/github.com/aws/aws-sdk-go/aws/request/validation.go
generated
vendored
25
vendor/github.com/aws/aws-sdk-go/aws/request/validation.go
generated
vendored
|
@ -17,6 +17,8 @@ const (
|
||||||
ParamMinValueErrCode = "ParamMinValueError"
|
ParamMinValueErrCode = "ParamMinValueError"
|
||||||
// ParamMinLenErrCode is the error code for fields without enough elements.
|
// ParamMinLenErrCode is the error code for fields without enough elements.
|
||||||
ParamMinLenErrCode = "ParamMinLenError"
|
ParamMinLenErrCode = "ParamMinLenError"
|
||||||
|
// ParamMaxLenErrCode is the error code for value being too long.
|
||||||
|
ParamMaxLenErrCode = "ParamMaxLenError"
|
||||||
|
|
||||||
// ParamFormatErrCode is the error code for a field with invalid
|
// ParamFormatErrCode is the error code for a field with invalid
|
||||||
// format or characters.
|
// format or characters.
|
||||||
|
@ -237,6 +239,29 @@ func (e *ErrParamMinLen) MinLen() int {
|
||||||
return e.min
|
return e.min
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// An ErrParamMaxLen represents a maximum length parameter error.
|
||||||
|
type ErrParamMaxLen struct {
|
||||||
|
errInvalidParam
|
||||||
|
max int
|
||||||
|
}
|
||||||
|
|
||||||
|
// NewErrParamMaxLen creates a new maximum length parameter error.
|
||||||
|
func NewErrParamMaxLen(field string, max int, value string) *ErrParamMaxLen {
|
||||||
|
return &ErrParamMaxLen{
|
||||||
|
errInvalidParam: errInvalidParam{
|
||||||
|
code: ParamMaxLenErrCode,
|
||||||
|
field: field,
|
||||||
|
msg: fmt.Sprintf("maximum size of %v, %v", max, value),
|
||||||
|
},
|
||||||
|
max: max,
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// MaxLen returns the field's required minimum length.
|
||||||
|
func (e *ErrParamMaxLen) MaxLen() int {
|
||||||
|
return e.max
|
||||||
|
}
|
||||||
|
|
||||||
// An ErrParamFormat represents a invalid format parameter error.
|
// An ErrParamFormat represents a invalid format parameter error.
|
||||||
type ErrParamFormat struct {
|
type ErrParamFormat struct {
|
||||||
errInvalidParam
|
errInvalidParam
|
||||||
|
|
4
vendor/github.com/aws/aws-sdk-go/aws/session/doc.go
generated
vendored
4
vendor/github.com/aws/aws-sdk-go/aws/session/doc.go
generated
vendored
|
@ -99,7 +99,7 @@ handler logs every request and its payload made by a service client:
|
||||||
|
|
||||||
sess.Handlers.Send.PushFront(func(r *request.Request) {
|
sess.Handlers.Send.PushFront(func(r *request.Request) {
|
||||||
// Log every request made and its payload
|
// Log every request made and its payload
|
||||||
logger.Println("Request: %s/%s, Payload: %s",
|
logger.Printf("Request: %s/%s, Payload: %s",
|
||||||
r.ClientInfo.ServiceName, r.Operation, r.Params)
|
r.ClientInfo.ServiceName, r.Operation, r.Params)
|
||||||
})
|
})
|
||||||
|
|
||||||
|
@ -183,7 +183,7 @@ be returned when creating the session.
|
||||||
// from assumed role.
|
// from assumed role.
|
||||||
svc := s3.New(sess)
|
svc := s3.New(sess)
|
||||||
|
|
||||||
To setup assume role outside of a session see the stscrds.AssumeRoleProvider
|
To setup assume role outside of a session see the stscreds.AssumeRoleProvider
|
||||||
documentation.
|
documentation.
|
||||||
|
|
||||||
Environment Variables
|
Environment Variables
|
||||||
|
|
2
vendor/github.com/aws/aws-sdk-go/aws/session/env_config.go
generated
vendored
2
vendor/github.com/aws/aws-sdk-go/aws/session/env_config.go
generated
vendored
|
@ -80,7 +80,7 @@ type envConfig struct {
|
||||||
// AWS_CONFIG_FILE=$HOME/my_shared_config
|
// AWS_CONFIG_FILE=$HOME/my_shared_config
|
||||||
SharedConfigFile string
|
SharedConfigFile string
|
||||||
|
|
||||||
// Sets the path to a custom Credentials Authroity (CA) Bundle PEM file
|
// Sets the path to a custom Credentials Authority (CA) Bundle PEM file
|
||||||
// that the SDK will use instead of the system's root CA bundle.
|
// that the SDK will use instead of the system's root CA bundle.
|
||||||
// Only use this if you want to configure the SDK to use a custom set
|
// Only use this if you want to configure the SDK to use a custom set
|
||||||
// of CAs.
|
// of CAs.
|
||||||
|
|
5
vendor/github.com/aws/aws-sdk-go/aws/session/session.go
generated
vendored
5
vendor/github.com/aws/aws-sdk-go/aws/session/session.go
generated
vendored
|
@ -14,6 +14,7 @@ import (
|
||||||
"github.com/aws/aws-sdk-go/aws/client"
|
"github.com/aws/aws-sdk-go/aws/client"
|
||||||
"github.com/aws/aws-sdk-go/aws/corehandlers"
|
"github.com/aws/aws-sdk-go/aws/corehandlers"
|
||||||
"github.com/aws/aws-sdk-go/aws/credentials"
|
"github.com/aws/aws-sdk-go/aws/credentials"
|
||||||
|
"github.com/aws/aws-sdk-go/aws/credentials/processcreds"
|
||||||
"github.com/aws/aws-sdk-go/aws/credentials/stscreds"
|
"github.com/aws/aws-sdk-go/aws/credentials/stscreds"
|
||||||
"github.com/aws/aws-sdk-go/aws/csm"
|
"github.com/aws/aws-sdk-go/aws/csm"
|
||||||
"github.com/aws/aws-sdk-go/aws/defaults"
|
"github.com/aws/aws-sdk-go/aws/defaults"
|
||||||
|
@ -534,6 +535,10 @@ func mergeConfigSrcs(cfg, userCfg *aws.Config, envCfg envConfig, sharedCfg share
|
||||||
cfg.Credentials = credentials.NewStaticCredentialsFromCreds(
|
cfg.Credentials = credentials.NewStaticCredentialsFromCreds(
|
||||||
sharedCfg.Creds,
|
sharedCfg.Creds,
|
||||||
)
|
)
|
||||||
|
} else if len(sharedCfg.CredentialProcess) > 0 {
|
||||||
|
cfg.Credentials = processcreds.NewCredentials(
|
||||||
|
sharedCfg.CredentialProcess,
|
||||||
|
)
|
||||||
} else {
|
} else {
|
||||||
// Fallback to default credentials provider, include mock errors
|
// Fallback to default credentials provider, include mock errors
|
||||||
// for the credential chain so user can identify why credentials
|
// for the credential chain so user can identify why credentials
|
||||||
|
|
10
vendor/github.com/aws/aws-sdk-go/aws/session/shared_config.go
generated
vendored
10
vendor/github.com/aws/aws-sdk-go/aws/session/shared_config.go
generated
vendored
|
@ -28,6 +28,8 @@ const (
|
||||||
|
|
||||||
// endpoint discovery group
|
// endpoint discovery group
|
||||||
enableEndpointDiscoveryKey = `endpoint_discovery_enabled` // optional
|
enableEndpointDiscoveryKey = `endpoint_discovery_enabled` // optional
|
||||||
|
// External Credential Process
|
||||||
|
credentialProcessKey = `credential_process`
|
||||||
|
|
||||||
// DefaultSharedConfigProfile is the default profile to be used when
|
// DefaultSharedConfigProfile is the default profile to be used when
|
||||||
// loading configuration from the config files if another profile name
|
// loading configuration from the config files if another profile name
|
||||||
|
@ -60,6 +62,9 @@ type sharedConfig struct {
|
||||||
AssumeRole assumeRoleConfig
|
AssumeRole assumeRoleConfig
|
||||||
AssumeRoleSource *sharedConfig
|
AssumeRoleSource *sharedConfig
|
||||||
|
|
||||||
|
// An external process to request credentials
|
||||||
|
CredentialProcess string
|
||||||
|
|
||||||
// Region is the region the SDK should use for looking up AWS service endpoints
|
// Region is the region the SDK should use for looking up AWS service endpoints
|
||||||
// and signing requests.
|
// and signing requests.
|
||||||
//
|
//
|
||||||
|
@ -223,6 +228,11 @@ func (cfg *sharedConfig) setFromIniFile(profile string, file sharedConfigFile) e
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// `credential_process`
|
||||||
|
if credProc := section.String(credentialProcessKey); len(credProc) > 0 {
|
||||||
|
cfg.CredentialProcess = credProc
|
||||||
|
}
|
||||||
|
|
||||||
// Region
|
// Region
|
||||||
if v := section.String(regionKey); len(v) > 0 {
|
if v := section.String(regionKey); len(v) > 0 {
|
||||||
cfg.Region = v
|
cfg.Region = v
|
||||||
|
|
23
vendor/github.com/aws/aws-sdk-go/aws/signer/v4/v4.go
generated
vendored
23
vendor/github.com/aws/aws-sdk-go/aws/signer/v4/v4.go
generated
vendored
|
@ -182,7 +182,7 @@ type Signer struct {
|
||||||
// http://docs.aws.amazon.com/general/latest/gr/sigv4-create-canonical-request.html
|
// http://docs.aws.amazon.com/general/latest/gr/sigv4-create-canonical-request.html
|
||||||
DisableURIPathEscaping bool
|
DisableURIPathEscaping bool
|
||||||
|
|
||||||
// Disales the automatical setting of the HTTP request's Body field with the
|
// Disables the automatical setting of the HTTP request's Body field with the
|
||||||
// io.ReadSeeker passed in to the signer. This is useful if you're using a
|
// io.ReadSeeker passed in to the signer. This is useful if you're using a
|
||||||
// custom wrapper around the body for the io.ReadSeeker and want to preserve
|
// custom wrapper around the body for the io.ReadSeeker and want to preserve
|
||||||
// the Body value on the Request.Body.
|
// the Body value on the Request.Body.
|
||||||
|
@ -422,7 +422,7 @@ var SignRequestHandler = request.NamedHandler{
|
||||||
// If the credentials of the request's config are set to
|
// If the credentials of the request's config are set to
|
||||||
// credentials.AnonymousCredentials the request will not be signed.
|
// credentials.AnonymousCredentials the request will not be signed.
|
||||||
func SignSDKRequest(req *request.Request) {
|
func SignSDKRequest(req *request.Request) {
|
||||||
signSDKRequestWithCurrTime(req, time.Now)
|
SignSDKRequestWithCurrentTime(req, time.Now)
|
||||||
}
|
}
|
||||||
|
|
||||||
// BuildNamedHandler will build a generic handler for signing.
|
// BuildNamedHandler will build a generic handler for signing.
|
||||||
|
@ -430,12 +430,15 @@ func BuildNamedHandler(name string, opts ...func(*Signer)) request.NamedHandler
|
||||||
return request.NamedHandler{
|
return request.NamedHandler{
|
||||||
Name: name,
|
Name: name,
|
||||||
Fn: func(req *request.Request) {
|
Fn: func(req *request.Request) {
|
||||||
signSDKRequestWithCurrTime(req, time.Now, opts...)
|
SignSDKRequestWithCurrentTime(req, time.Now, opts...)
|
||||||
},
|
},
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
func signSDKRequestWithCurrTime(req *request.Request, curTimeFn func() time.Time, opts ...func(*Signer)) {
|
// SignSDKRequestWithCurrentTime will sign the SDK's request using the time
|
||||||
|
// function passed in. Behaves the same as SignSDKRequest with the exception
|
||||||
|
// the request is signed with the value returned by the current time function.
|
||||||
|
func SignSDKRequestWithCurrentTime(req *request.Request, curTimeFn func() time.Time, opts ...func(*Signer)) {
|
||||||
// If the request does not need to be signed ignore the signing of the
|
// If the request does not need to be signed ignore the signing of the
|
||||||
// request if the AnonymousCredentials object is used.
|
// request if the AnonymousCredentials object is used.
|
||||||
if req.Config.Credentials == credentials.AnonymousCredentials {
|
if req.Config.Credentials == credentials.AnonymousCredentials {
|
||||||
|
@ -471,13 +474,9 @@ func signSDKRequestWithCurrTime(req *request.Request, curTimeFn func() time.Time
|
||||||
opt(v4)
|
opt(v4)
|
||||||
}
|
}
|
||||||
|
|
||||||
signingTime := req.Time
|
curTime := curTimeFn()
|
||||||
if !req.LastSignedAt.IsZero() {
|
|
||||||
signingTime = req.LastSignedAt
|
|
||||||
}
|
|
||||||
|
|
||||||
signedHeaders, err := v4.signWithBody(req.HTTPRequest, req.GetBody(),
|
signedHeaders, err := v4.signWithBody(req.HTTPRequest, req.GetBody(),
|
||||||
name, region, req.ExpireTime, req.ExpireTime > 0, signingTime,
|
name, region, req.ExpireTime, req.ExpireTime > 0, curTime,
|
||||||
)
|
)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
req.Error = err
|
req.Error = err
|
||||||
|
@ -486,7 +485,7 @@ func signSDKRequestWithCurrTime(req *request.Request, curTimeFn func() time.Time
|
||||||
}
|
}
|
||||||
|
|
||||||
req.SignedHeaderVals = signedHeaders
|
req.SignedHeaderVals = signedHeaders
|
||||||
req.LastSignedAt = curTimeFn()
|
req.LastSignedAt = curTime
|
||||||
}
|
}
|
||||||
|
|
||||||
const logSignInfoMsg = `DEBUG: Request Signature:
|
const logSignInfoMsg = `DEBUG: Request Signature:
|
||||||
|
@ -755,7 +754,7 @@ func makeSha256Reader(reader io.ReadSeeker) []byte {
|
||||||
const doubleSpace = " "
|
const doubleSpace = " "
|
||||||
|
|
||||||
// stripExcessSpaces will rewrite the passed in slice's string values to not
|
// stripExcessSpaces will rewrite the passed in slice's string values to not
|
||||||
// contain muliple side-by-side spaces.
|
// contain multiple side-by-side spaces.
|
||||||
func stripExcessSpaces(vals []string) {
|
func stripExcessSpaces(vals []string) {
|
||||||
var j, k, l, m, spaces int
|
var j, k, l, m, spaces int
|
||||||
for i, str := range vals {
|
for i, str := range vals {
|
||||||
|
|
2
vendor/github.com/aws/aws-sdk-go/aws/version.go
generated
vendored
2
vendor/github.com/aws/aws-sdk-go/aws/version.go
generated
vendored
|
@ -5,4 +5,4 @@ package aws
|
||||||
const SDKName = "aws-sdk-go"
|
const SDKName = "aws-sdk-go"
|
||||||
|
|
||||||
// SDKVersion is the version of this SDK
|
// SDKVersion is the version of this SDK
|
||||||
const SDKVersion = "1.15.81"
|
const SDKVersion = "1.16.31"
|
||||||
|
|
2
vendor/github.com/aws/aws-sdk-go/internal/ini/ini_parser.go
generated
vendored
2
vendor/github.com/aws/aws-sdk-go/internal/ini/ini_parser.go
generated
vendored
|
@ -317,7 +317,7 @@ loop:
|
||||||
return nil, NewParseError(fmt.Sprintf("incomplete expression: %v", stack.container))
|
return nil, NewParseError(fmt.Sprintf("incomplete expression: %v", stack.container))
|
||||||
}
|
}
|
||||||
|
|
||||||
// returns a sublist which exludes the start symbol
|
// returns a sublist which excludes the start symbol
|
||||||
return stack.List(), nil
|
return stack.List(), nil
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
2
vendor/github.com/aws/aws-sdk-go/internal/ini/statement.go
generated
vendored
2
vendor/github.com/aws/aws-sdk-go/internal/ini/statement.go
generated
vendored
|
@ -15,7 +15,7 @@ func newExprStatement(ast AST) AST {
|
||||||
return newAST(ASTKindExprStatement, ast)
|
return newAST(ASTKindExprStatement, ast)
|
||||||
}
|
}
|
||||||
|
|
||||||
// CommentStatement represents a comment in the ini defintion.
|
// CommentStatement represents a comment in the ini definition.
|
||||||
//
|
//
|
||||||
// grammar:
|
// grammar:
|
||||||
// comment -> #comment' | ;comment'
|
// comment -> #comment' | ;comment'
|
||||||
|
|
2
vendor/github.com/aws/aws-sdk-go/internal/shareddefaults/ecs_container.go
generated
vendored
2
vendor/github.com/aws/aws-sdk-go/internal/shareddefaults/ecs_container.go
generated
vendored
|
@ -7,6 +7,6 @@ const (
|
||||||
)
|
)
|
||||||
|
|
||||||
// ECSContainerCredentialsURI is the endpoint to retrieve container
|
// ECSContainerCredentialsURI is the endpoint to retrieve container
|
||||||
// credentials. This can be overriden to test to ensure the credential process
|
// credentials. This can be overridden to test to ensure the credential process
|
||||||
// is behaving correctly.
|
// is behaving correctly.
|
||||||
var ECSContainerCredentialsURI = "http://169.254.170.2"
|
var ECSContainerCredentialsURI = "http://169.254.170.2"
|
||||||
|
|
51
vendor/github.com/aws/aws-sdk-go/private/protocol/host.go
generated
vendored
51
vendor/github.com/aws/aws-sdk-go/private/protocol/host.go
generated
vendored
|
@ -1,7 +1,54 @@
|
||||||
package protocol
|
package protocol
|
||||||
|
|
||||||
// ValidHostLabel returns if the label is a valid RFC 1123 Section 2.1 domain
|
import (
|
||||||
// host label name.
|
"strings"
|
||||||
|
|
||||||
|
"github.com/aws/aws-sdk-go/aws/request"
|
||||||
|
)
|
||||||
|
|
||||||
|
// ValidateEndpointHostHandler is a request handler that will validate the
|
||||||
|
// request endpoint's hosts is a valid RFC 3986 host.
|
||||||
|
var ValidateEndpointHostHandler = request.NamedHandler{
|
||||||
|
Name: "awssdk.protocol.ValidateEndpointHostHandler",
|
||||||
|
Fn: func(r *request.Request) {
|
||||||
|
err := ValidateEndpointHost(r.Operation.Name, r.HTTPRequest.URL.Host)
|
||||||
|
if err != nil {
|
||||||
|
r.Error = err
|
||||||
|
}
|
||||||
|
},
|
||||||
|
}
|
||||||
|
|
||||||
|
// ValidateEndpointHost validates that the host string passed in is a valid RFC
|
||||||
|
// 3986 host. Returns error if the host is not valid.
|
||||||
|
func ValidateEndpointHost(opName, host string) error {
|
||||||
|
paramErrs := request.ErrInvalidParams{Context: opName}
|
||||||
|
labels := strings.Split(host, ".")
|
||||||
|
|
||||||
|
for i, label := range labels {
|
||||||
|
if i == len(labels)-1 && len(label) == 0 {
|
||||||
|
// Allow trailing dot for FQDN hosts.
|
||||||
|
continue
|
||||||
|
}
|
||||||
|
|
||||||
|
if !ValidHostLabel(label) {
|
||||||
|
paramErrs.Add(request.NewErrParamFormat(
|
||||||
|
"endpoint host label", "[a-zA-Z0-9-]{1,63}", label))
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if len(host) > 255 {
|
||||||
|
paramErrs.Add(request.NewErrParamMaxLen(
|
||||||
|
"endpoint host", 255, host,
|
||||||
|
))
|
||||||
|
}
|
||||||
|
|
||||||
|
if paramErrs.Len() > 0 {
|
||||||
|
return paramErrs
|
||||||
|
}
|
||||||
|
return nil
|
||||||
|
}
|
||||||
|
|
||||||
|
// ValidHostLabel returns if the label is a valid RFC 3986 host label.
|
||||||
func ValidHostLabel(label string) bool {
|
func ValidHostLabel(label string) bool {
|
||||||
if l := len(label); l == 0 || l > 63 {
|
if l := len(label); l == 0 || l > 63 {
|
||||||
return false
|
return false
|
||||||
|
|
54
vendor/github.com/aws/aws-sdk-go/private/protocol/host_prefix.go
generated
vendored
Normal file
54
vendor/github.com/aws/aws-sdk-go/private/protocol/host_prefix.go
generated
vendored
Normal file
|
@ -0,0 +1,54 @@
|
||||||
|
package protocol
|
||||||
|
|
||||||
|
import (
|
||||||
|
"strings"
|
||||||
|
|
||||||
|
"github.com/aws/aws-sdk-go/aws"
|
||||||
|
"github.com/aws/aws-sdk-go/aws/request"
|
||||||
|
)
|
||||||
|
|
||||||
|
// HostPrefixHandlerName is the handler name for the host prefix request
|
||||||
|
// handler.
|
||||||
|
const HostPrefixHandlerName = "awssdk.endpoint.HostPrefixHandler"
|
||||||
|
|
||||||
|
// NewHostPrefixHandler constructs a build handler
|
||||||
|
func NewHostPrefixHandler(prefix string, labelsFn func() map[string]string) request.NamedHandler {
|
||||||
|
builder := HostPrefixBuilder{
|
||||||
|
Prefix: prefix,
|
||||||
|
LabelsFn: labelsFn,
|
||||||
|
}
|
||||||
|
|
||||||
|
return request.NamedHandler{
|
||||||
|
Name: HostPrefixHandlerName,
|
||||||
|
Fn: builder.Build,
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// HostPrefixBuilder provides the request handler to expand and prepend
|
||||||
|
// the host prefix into the operation's request endpoint host.
|
||||||
|
type HostPrefixBuilder struct {
|
||||||
|
Prefix string
|
||||||
|
LabelsFn func() map[string]string
|
||||||
|
}
|
||||||
|
|
||||||
|
// Build updates the passed in Request with the HostPrefix template expanded.
|
||||||
|
func (h HostPrefixBuilder) Build(r *request.Request) {
|
||||||
|
if aws.BoolValue(r.Config.DisableEndpointHostPrefix) {
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
|
var labels map[string]string
|
||||||
|
if h.LabelsFn != nil {
|
||||||
|
labels = h.LabelsFn()
|
||||||
|
}
|
||||||
|
|
||||||
|
prefix := h.Prefix
|
||||||
|
for name, value := range labels {
|
||||||
|
prefix = strings.Replace(prefix, "{"+name+"}", value, -1)
|
||||||
|
}
|
||||||
|
|
||||||
|
r.HTTPRequest.URL.Host = prefix + r.HTTPRequest.URL.Host
|
||||||
|
if len(r.HTTPRequest.Host) > 0 {
|
||||||
|
r.HTTPRequest.Host = prefix + r.HTTPRequest.Host
|
||||||
|
}
|
||||||
|
}
|
1988
vendor/github.com/aws/aws-sdk-go/service/s3/api.go
generated
vendored
1988
vendor/github.com/aws/aws-sdk-go/service/s3/api.go
generated
vendored
File diff suppressed because it is too large
Load Diff
1
vendor/github.com/aws/aws-sdk-go/service/s3/customizations.go
generated
vendored
1
vendor/github.com/aws/aws-sdk-go/service/s3/customizations.go
generated
vendored
|
@ -33,6 +33,7 @@ func defaultInitRequestFn(r *request.Request) {
|
||||||
switch r.Operation.Name {
|
switch r.Operation.Name {
|
||||||
case opPutBucketCors, opPutBucketLifecycle, opPutBucketPolicy,
|
case opPutBucketCors, opPutBucketLifecycle, opPutBucketPolicy,
|
||||||
opPutBucketTagging, opDeleteObjects, opPutBucketLifecycleConfiguration,
|
opPutBucketTagging, opDeleteObjects, opPutBucketLifecycleConfiguration,
|
||||||
|
opPutObjectLegalHold, opPutObjectRetention, opPutObjectLockConfiguration,
|
||||||
opPutBucketReplication:
|
opPutBucketReplication:
|
||||||
// These S3 operations require Content-MD5 to be set
|
// These S3 operations require Content-MD5 to be set
|
||||||
r.Handlers.Build.PushBack(contentMD5)
|
r.Handlers.Build.PushBack(contentMD5)
|
||||||
|
|
24
vendor/github.com/aws/aws-sdk-go/service/s3/s3iface/interface.go
generated
vendored
24
vendor/github.com/aws/aws-sdk-go/service/s3/s3iface/interface.go
generated
vendored
|
@ -228,6 +228,18 @@ type S3API interface {
|
||||||
GetObjectAclWithContext(aws.Context, *s3.GetObjectAclInput, ...request.Option) (*s3.GetObjectAclOutput, error)
|
GetObjectAclWithContext(aws.Context, *s3.GetObjectAclInput, ...request.Option) (*s3.GetObjectAclOutput, error)
|
||||||
GetObjectAclRequest(*s3.GetObjectAclInput) (*request.Request, *s3.GetObjectAclOutput)
|
GetObjectAclRequest(*s3.GetObjectAclInput) (*request.Request, *s3.GetObjectAclOutput)
|
||||||
|
|
||||||
|
GetObjectLegalHold(*s3.GetObjectLegalHoldInput) (*s3.GetObjectLegalHoldOutput, error)
|
||||||
|
GetObjectLegalHoldWithContext(aws.Context, *s3.GetObjectLegalHoldInput, ...request.Option) (*s3.GetObjectLegalHoldOutput, error)
|
||||||
|
GetObjectLegalHoldRequest(*s3.GetObjectLegalHoldInput) (*request.Request, *s3.GetObjectLegalHoldOutput)
|
||||||
|
|
||||||
|
GetObjectLockConfiguration(*s3.GetObjectLockConfigurationInput) (*s3.GetObjectLockConfigurationOutput, error)
|
||||||
|
GetObjectLockConfigurationWithContext(aws.Context, *s3.GetObjectLockConfigurationInput, ...request.Option) (*s3.GetObjectLockConfigurationOutput, error)
|
||||||
|
GetObjectLockConfigurationRequest(*s3.GetObjectLockConfigurationInput) (*request.Request, *s3.GetObjectLockConfigurationOutput)
|
||||||
|
|
||||||
|
GetObjectRetention(*s3.GetObjectRetentionInput) (*s3.GetObjectRetentionOutput, error)
|
||||||
|
GetObjectRetentionWithContext(aws.Context, *s3.GetObjectRetentionInput, ...request.Option) (*s3.GetObjectRetentionOutput, error)
|
||||||
|
GetObjectRetentionRequest(*s3.GetObjectRetentionInput) (*request.Request, *s3.GetObjectRetentionOutput)
|
||||||
|
|
||||||
GetObjectTagging(*s3.GetObjectTaggingInput) (*s3.GetObjectTaggingOutput, error)
|
GetObjectTagging(*s3.GetObjectTaggingInput) (*s3.GetObjectTaggingOutput, error)
|
||||||
GetObjectTaggingWithContext(aws.Context, *s3.GetObjectTaggingInput, ...request.Option) (*s3.GetObjectTaggingOutput, error)
|
GetObjectTaggingWithContext(aws.Context, *s3.GetObjectTaggingInput, ...request.Option) (*s3.GetObjectTaggingOutput, error)
|
||||||
GetObjectTaggingRequest(*s3.GetObjectTaggingInput) (*request.Request, *s3.GetObjectTaggingOutput)
|
GetObjectTaggingRequest(*s3.GetObjectTaggingInput) (*request.Request, *s3.GetObjectTaggingOutput)
|
||||||
|
@ -379,6 +391,18 @@ type S3API interface {
|
||||||
PutObjectAclWithContext(aws.Context, *s3.PutObjectAclInput, ...request.Option) (*s3.PutObjectAclOutput, error)
|
PutObjectAclWithContext(aws.Context, *s3.PutObjectAclInput, ...request.Option) (*s3.PutObjectAclOutput, error)
|
||||||
PutObjectAclRequest(*s3.PutObjectAclInput) (*request.Request, *s3.PutObjectAclOutput)
|
PutObjectAclRequest(*s3.PutObjectAclInput) (*request.Request, *s3.PutObjectAclOutput)
|
||||||
|
|
||||||
|
PutObjectLegalHold(*s3.PutObjectLegalHoldInput) (*s3.PutObjectLegalHoldOutput, error)
|
||||||
|
PutObjectLegalHoldWithContext(aws.Context, *s3.PutObjectLegalHoldInput, ...request.Option) (*s3.PutObjectLegalHoldOutput, error)
|
||||||
|
PutObjectLegalHoldRequest(*s3.PutObjectLegalHoldInput) (*request.Request, *s3.PutObjectLegalHoldOutput)
|
||||||
|
|
||||||
|
PutObjectLockConfiguration(*s3.PutObjectLockConfigurationInput) (*s3.PutObjectLockConfigurationOutput, error)
|
||||||
|
PutObjectLockConfigurationWithContext(aws.Context, *s3.PutObjectLockConfigurationInput, ...request.Option) (*s3.PutObjectLockConfigurationOutput, error)
|
||||||
|
PutObjectLockConfigurationRequest(*s3.PutObjectLockConfigurationInput) (*request.Request, *s3.PutObjectLockConfigurationOutput)
|
||||||
|
|
||||||
|
PutObjectRetention(*s3.PutObjectRetentionInput) (*s3.PutObjectRetentionOutput, error)
|
||||||
|
PutObjectRetentionWithContext(aws.Context, *s3.PutObjectRetentionInput, ...request.Option) (*s3.PutObjectRetentionOutput, error)
|
||||||
|
PutObjectRetentionRequest(*s3.PutObjectRetentionInput) (*request.Request, *s3.PutObjectRetentionOutput)
|
||||||
|
|
||||||
PutObjectTagging(*s3.PutObjectTaggingInput) (*s3.PutObjectTaggingOutput, error)
|
PutObjectTagging(*s3.PutObjectTaggingInput) (*s3.PutObjectTaggingOutput, error)
|
||||||
PutObjectTaggingWithContext(aws.Context, *s3.PutObjectTaggingInput, ...request.Option) (*s3.PutObjectTaggingOutput, error)
|
PutObjectTaggingWithContext(aws.Context, *s3.PutObjectTaggingInput, ...request.Option) (*s3.PutObjectTaggingOutput, error)
|
||||||
PutObjectTaggingRequest(*s3.PutObjectTaggingInput) (*request.Request, *s3.PutObjectTaggingOutput)
|
PutObjectTaggingRequest(*s3.PutObjectTaggingInput) (*request.Request, *s3.PutObjectTaggingOutput)
|
||||||
|
|
95
vendor/github.com/aws/aws-sdk-go/service/s3/s3manager/upload.go
generated
vendored
95
vendor/github.com/aws/aws-sdk-go/service/s3/s3manager/upload.go
generated
vendored
|
@ -6,7 +6,6 @@ import (
|
||||||
"io"
|
"io"
|
||||||
"sort"
|
"sort"
|
||||||
"sync"
|
"sync"
|
||||||
"time"
|
|
||||||
|
|
||||||
"github.com/aws/aws-sdk-go/aws"
|
"github.com/aws/aws-sdk-go/aws"
|
||||||
"github.com/aws/aws-sdk-go/aws/awserr"
|
"github.com/aws/aws-sdk-go/aws/awserr"
|
||||||
|
@ -96,100 +95,6 @@ func (m multiUploadError) UploadID() string {
|
||||||
return m.uploadID
|
return m.uploadID
|
||||||
}
|
}
|
||||||
|
|
||||||
// UploadInput contains all input for upload requests to Amazon S3.
|
|
||||||
type UploadInput struct {
|
|
||||||
// The canned ACL to apply to the object.
|
|
||||||
ACL *string `location:"header" locationName:"x-amz-acl" type:"string"`
|
|
||||||
|
|
||||||
Bucket *string `location:"uri" locationName:"Bucket" type:"string" required:"true"`
|
|
||||||
|
|
||||||
// Specifies caching behavior along the request/reply chain.
|
|
||||||
CacheControl *string `location:"header" locationName:"Cache-Control" type:"string"`
|
|
||||||
|
|
||||||
// Specifies presentational information for the object.
|
|
||||||
ContentDisposition *string `location:"header" locationName:"Content-Disposition" type:"string"`
|
|
||||||
|
|
||||||
// Specifies what content encodings have been applied to the object and thus
|
|
||||||
// what decoding mechanisms must be applied to obtain the media-type referenced
|
|
||||||
// by the Content-Type header field.
|
|
||||||
ContentEncoding *string `location:"header" locationName:"Content-Encoding" type:"string"`
|
|
||||||
|
|
||||||
// The language the content is in.
|
|
||||||
ContentLanguage *string `location:"header" locationName:"Content-Language" type:"string"`
|
|
||||||
|
|
||||||
// The base64-encoded 128-bit MD5 digest of the part data.
|
|
||||||
ContentMD5 *string `location:"header" locationName:"Content-MD5" type:"string"`
|
|
||||||
|
|
||||||
// A standard MIME type describing the format of the object data.
|
|
||||||
ContentType *string `location:"header" locationName:"Content-Type" type:"string"`
|
|
||||||
|
|
||||||
// The date and time at which the object is no longer cacheable.
|
|
||||||
Expires *time.Time `location:"header" locationName:"Expires" type:"timestamp" timestampFormat:"rfc822"`
|
|
||||||
|
|
||||||
// Gives the grantee READ, READ_ACP, and WRITE_ACP permissions on the object.
|
|
||||||
GrantFullControl *string `location:"header" locationName:"x-amz-grant-full-control" type:"string"`
|
|
||||||
|
|
||||||
// Allows grantee to read the object data and its metadata.
|
|
||||||
GrantRead *string `location:"header" locationName:"x-amz-grant-read" type:"string"`
|
|
||||||
|
|
||||||
// Allows grantee to read the object ACL.
|
|
||||||
GrantReadACP *string `location:"header" locationName:"x-amz-grant-read-acp" type:"string"`
|
|
||||||
|
|
||||||
// Allows grantee to write the ACL for the applicable object.
|
|
||||||
GrantWriteACP *string `location:"header" locationName:"x-amz-grant-write-acp" type:"string"`
|
|
||||||
|
|
||||||
Key *string `location:"uri" locationName:"Key" type:"string" required:"true"`
|
|
||||||
|
|
||||||
// A map of metadata to store with the object in S3.
|
|
||||||
Metadata map[string]*string `location:"headers" locationName:"x-amz-meta-" type:"map"`
|
|
||||||
|
|
||||||
// Confirms that the requester knows that she or he will be charged for the
|
|
||||||
// request. Bucket owners need not specify this parameter in their requests.
|
|
||||||
// Documentation on downloading objects from requester pays buckets can be found
|
|
||||||
// at http://docs.aws.amazon.com/AmazonS3/latest/dev/ObjectsinRequesterPaysBuckets.html
|
|
||||||
RequestPayer *string `location:"header" locationName:"x-amz-request-payer" type:"string"`
|
|
||||||
|
|
||||||
// Specifies the algorithm to use to when encrypting the object (e.g., AES256,
|
|
||||||
// aws:kms).
|
|
||||||
SSECustomerAlgorithm *string `location:"header" locationName:"x-amz-server-side-encryption-customer-algorithm" type:"string"`
|
|
||||||
|
|
||||||
// Specifies the customer-provided encryption key for Amazon S3 to use in encrypting
|
|
||||||
// data. This value is used to store the object and then it is discarded; Amazon
|
|
||||||
// does not store the encryption key. The key must be appropriate for use with
|
|
||||||
// the algorithm specified in the x-amz-server-side-encryption-customer-algorithm
|
|
||||||
// header.
|
|
||||||
SSECustomerKey *string `location:"header" locationName:"x-amz-server-side-encryption-customer-key" type:"string"`
|
|
||||||
|
|
||||||
// Specifies the 128-bit MD5 digest of the encryption key according to RFC 1321.
|
|
||||||
// Amazon S3 uses this header for a message integrity check to ensure the encryption
|
|
||||||
// key was transmitted without error.
|
|
||||||
SSECustomerKeyMD5 *string `location:"header" locationName:"x-amz-server-side-encryption-customer-key-MD5" type:"string"`
|
|
||||||
|
|
||||||
// Specifies the AWS KMS key ID to use for object encryption. All GET and PUT
|
|
||||||
// requests for an object protected by AWS KMS will fail if not made via SSL
|
|
||||||
// or using SigV4. Documentation on configuring any of the officially supported
|
|
||||||
// AWS SDKs and CLI can be found at http://docs.aws.amazon.com/AmazonS3/latest/dev/UsingAWSSDK.html#specify-signature-version
|
|
||||||
SSEKMSKeyId *string `location:"header" locationName:"x-amz-server-side-encryption-aws-kms-key-id" type:"string"`
|
|
||||||
|
|
||||||
// The Server-side encryption algorithm used when storing this object in S3
|
|
||||||
// (e.g., AES256, aws:kms).
|
|
||||||
ServerSideEncryption *string `location:"header" locationName:"x-amz-server-side-encryption" type:"string"`
|
|
||||||
|
|
||||||
// The type of storage to use for the object. Defaults to 'STANDARD'.
|
|
||||||
StorageClass *string `location:"header" locationName:"x-amz-storage-class" type:"string"`
|
|
||||||
|
|
||||||
// The tag-set for the object. The tag-set must be encoded as URL Query parameters
|
|
||||||
Tagging *string `location:"header" locationName:"x-amz-tagging" type:"string"`
|
|
||||||
|
|
||||||
// If the bucket is configured as a website, redirects requests for this object
|
|
||||||
// to another object in the same bucket or to an external URL. Amazon S3 stores
|
|
||||||
// the value of this header in the object metadata.
|
|
||||||
WebsiteRedirectLocation *string `location:"header" locationName:"x-amz-website-redirect-location" type:"string"`
|
|
||||||
|
|
||||||
// The readable body payload to send to S3.
|
|
||||||
Body io.Reader
|
|
||||||
}
|
|
||||||
|
|
||||||
// UploadOutput represents a response from the Upload() call.
|
// UploadOutput represents a response from the Upload() call.
|
||||||
type UploadOutput struct {
|
type UploadOutput struct {
|
||||||
// The URL where the object was uploaded to.
|
// The URL where the object was uploaded to.
|
||||||
|
|
122
vendor/github.com/aws/aws-sdk-go/service/s3/s3manager/upload_input.go
generated
vendored
Normal file
122
vendor/github.com/aws/aws-sdk-go/service/s3/s3manager/upload_input.go
generated
vendored
Normal file
|
@ -0,0 +1,122 @@
|
||||||
|
// Code generated by private/model/cli/gen-api/main.go. DO NOT EDIT.
|
||||||
|
|
||||||
|
package s3manager
|
||||||
|
|
||||||
|
import (
|
||||||
|
"io"
|
||||||
|
"time"
|
||||||
|
)
|
||||||
|
|
||||||
|
// UploadInput provides the input parameters for uploading a stream or buffer
|
||||||
|
// to an object in an Amazon S3 bucket. This type is similar to the s3
|
||||||
|
// package's PutObjectInput with the exception that the Body member is an
|
||||||
|
// io.Reader instead of an io.ReadSeeker.
|
||||||
|
type UploadInput struct {
|
||||||
|
_ struct{} `type:"structure" payload:"Body"`
|
||||||
|
|
||||||
|
// The canned ACL to apply to the object.
|
||||||
|
ACL *string `location:"header" locationName:"x-amz-acl" type:"string" enum:"ObjectCannedACL"`
|
||||||
|
|
||||||
|
// The readable body payload to send to S3.
|
||||||
|
Body io.Reader
|
||||||
|
|
||||||
|
// Name of the bucket to which the PUT operation was initiated.
|
||||||
|
//
|
||||||
|
// Bucket is a required field
|
||||||
|
Bucket *string `location:"uri" locationName:"Bucket" type:"string" required:"true"`
|
||||||
|
|
||||||
|
// Specifies caching behavior along the request/reply chain.
|
||||||
|
CacheControl *string `location:"header" locationName:"Cache-Control" type:"string"`
|
||||||
|
|
||||||
|
// Specifies presentational information for the object.
|
||||||
|
ContentDisposition *string `location:"header" locationName:"Content-Disposition" type:"string"`
|
||||||
|
|
||||||
|
// Specifies what content encodings have been applied to the object and thus
|
||||||
|
// what decoding mechanisms must be applied to obtain the media-type referenced
|
||||||
|
// by the Content-Type header field.
|
||||||
|
ContentEncoding *string `location:"header" locationName:"Content-Encoding" type:"string"`
|
||||||
|
|
||||||
|
// The language the content is in.
|
||||||
|
ContentLanguage *string `location:"header" locationName:"Content-Language" type:"string"`
|
||||||
|
|
||||||
|
// The base64-encoded 128-bit MD5 digest of the part data.
|
||||||
|
ContentMD5 *string `location:"header" locationName:"Content-MD5" type:"string"`
|
||||||
|
|
||||||
|
// A standard MIME type describing the format of the object data.
|
||||||
|
ContentType *string `location:"header" locationName:"Content-Type" type:"string"`
|
||||||
|
|
||||||
|
// The date and time at which the object is no longer cacheable.
|
||||||
|
Expires *time.Time `location:"header" locationName:"Expires" type:"timestamp"`
|
||||||
|
|
||||||
|
// Gives the grantee READ, READ_ACP, and WRITE_ACP permissions on the object.
|
||||||
|
GrantFullControl *string `location:"header" locationName:"x-amz-grant-full-control" type:"string"`
|
||||||
|
|
||||||
|
// Allows grantee to read the object data and its metadata.
|
||||||
|
GrantRead *string `location:"header" locationName:"x-amz-grant-read" type:"string"`
|
||||||
|
|
||||||
|
// Allows grantee to read the object ACL.
|
||||||
|
GrantReadACP *string `location:"header" locationName:"x-amz-grant-read-acp" type:"string"`
|
||||||
|
|
||||||
|
// Allows grantee to write the ACL for the applicable object.
|
||||||
|
GrantWriteACP *string `location:"header" locationName:"x-amz-grant-write-acp" type:"string"`
|
||||||
|
|
||||||
|
// Object key for which the PUT operation was initiated.
|
||||||
|
//
|
||||||
|
// Key is a required field
|
||||||
|
Key *string `location:"uri" locationName:"Key" min:"1" type:"string" required:"true"`
|
||||||
|
|
||||||
|
// A map of metadata to store with the object in S3.
|
||||||
|
Metadata map[string]*string `location:"headers" locationName:"x-amz-meta-" type:"map"`
|
||||||
|
|
||||||
|
// The Legal Hold status that you want to apply to the specified object.
|
||||||
|
ObjectLockLegalHoldStatus *string `location:"header" locationName:"x-amz-object-lock-legal-hold" type:"string" enum:"ObjectLockLegalHoldStatus"`
|
||||||
|
|
||||||
|
// The Object Lock mode that you want to apply to this object.
|
||||||
|
ObjectLockMode *string `location:"header" locationName:"x-amz-object-lock-mode" type:"string" enum:"ObjectLockMode"`
|
||||||
|
|
||||||
|
// The date and time when you want this object's Object Lock to expire.
|
||||||
|
ObjectLockRetainUntilDate *time.Time `location:"header" locationName:"x-amz-object-lock-retain-until-date" type:"timestamp" timestampFormat:"iso8601"`
|
||||||
|
|
||||||
|
// Confirms that the requester knows that she or he will be charged for the
|
||||||
|
// request. Bucket owners need not specify this parameter in their requests.
|
||||||
|
// Documentation on downloading objects from requester pays buckets can be found
|
||||||
|
// at http://docs.aws.amazon.com/AmazonS3/latest/dev/ObjectsinRequesterPaysBuckets.html
|
||||||
|
RequestPayer *string `location:"header" locationName:"x-amz-request-payer" type:"string" enum:"RequestPayer"`
|
||||||
|
|
||||||
|
// Specifies the algorithm to use to when encrypting the object (e.g., AES256).
|
||||||
|
SSECustomerAlgorithm *string `location:"header" locationName:"x-amz-server-side-encryption-customer-algorithm" type:"string"`
|
||||||
|
|
||||||
|
// Specifies the customer-provided encryption key for Amazon S3 to use in encrypting
|
||||||
|
// data. This value is used to store the object and then it is discarded; Amazon
|
||||||
|
// does not store the encryption key. The key must be appropriate for use with
|
||||||
|
// the algorithm specified in the x-amz-server-side-encryption-customer-algorithm
|
||||||
|
// header.
|
||||||
|
SSECustomerKey *string `location:"header" locationName:"x-amz-server-side-encryption-customer-key" type:"string" sensitive:"true"`
|
||||||
|
|
||||||
|
// Specifies the 128-bit MD5 digest of the encryption key according to RFC 1321.
|
||||||
|
// Amazon S3 uses this header for a message integrity check to ensure the encryption
|
||||||
|
// key was transmitted without error.
|
||||||
|
SSECustomerKeyMD5 *string `location:"header" locationName:"x-amz-server-side-encryption-customer-key-MD5" type:"string"`
|
||||||
|
|
||||||
|
// Specifies the AWS KMS key ID to use for object encryption. All GET and PUT
|
||||||
|
// requests for an object protected by AWS KMS will fail if not made via SSL
|
||||||
|
// or using SigV4. Documentation on configuring any of the officially supported
|
||||||
|
// AWS SDKs and CLI can be found at http://docs.aws.amazon.com/AmazonS3/latest/dev/UsingAWSSDK.html#specify-signature-version
|
||||||
|
SSEKMSKeyId *string `location:"header" locationName:"x-amz-server-side-encryption-aws-kms-key-id" type:"string" sensitive:"true"`
|
||||||
|
|
||||||
|
// The Server-side encryption algorithm used when storing this object in S3
|
||||||
|
// (e.g., AES256, aws:kms).
|
||||||
|
ServerSideEncryption *string `location:"header" locationName:"x-amz-server-side-encryption" type:"string" enum:"ServerSideEncryption"`
|
||||||
|
|
||||||
|
// The type of storage to use for the object. Defaults to 'STANDARD'.
|
||||||
|
StorageClass *string `location:"header" locationName:"x-amz-storage-class" type:"string" enum:"StorageClass"`
|
||||||
|
|
||||||
|
// The tag-set for the object. The tag-set must be encoded as URL Query parameters.
|
||||||
|
// (For example, "Key1=Value1")
|
||||||
|
Tagging *string `location:"header" locationName:"x-amz-tagging" type:"string"`
|
||||||
|
|
||||||
|
// If the bucket is configured as a website, redirects requests for this object
|
||||||
|
// to another object in the same bucket or to an external URL. Amazon S3 stores
|
||||||
|
// the value of this header in the object metadata.
|
||||||
|
WebsiteRedirectLocation *string `location:"header" locationName:"x-amz-website-redirect-location" type:"string"`
|
||||||
|
}
|
2
vendor/github.com/coreos/bbolt/.gitignore
generated
vendored
2
vendor/github.com/coreos/bbolt/.gitignore
generated
vendored
|
@ -2,4 +2,4 @@
|
||||||
*.test
|
*.test
|
||||||
*.swp
|
*.swp
|
||||||
/bin/
|
/bin/
|
||||||
cmd/bolt/bolt
|
cover.out
|
||||||
|
|
17
vendor/github.com/coreos/bbolt/.travis.yml
generated
vendored
Normal file
17
vendor/github.com/coreos/bbolt/.travis.yml
generated
vendored
Normal file
|
@ -0,0 +1,17 @@
|
||||||
|
language: go
|
||||||
|
go_import_path: go.etcd.io/bbolt
|
||||||
|
|
||||||
|
sudo: false
|
||||||
|
|
||||||
|
go:
|
||||||
|
- 1.11
|
||||||
|
|
||||||
|
before_install:
|
||||||
|
- go get -v honnef.co/go/tools/...
|
||||||
|
- go get -v github.com/kisielk/errcheck
|
||||||
|
|
||||||
|
script:
|
||||||
|
- make fmt
|
||||||
|
- make test
|
||||||
|
- make race
|
||||||
|
# - make errcheck
|
16
vendor/github.com/coreos/bbolt/Makefile
generated
vendored
16
vendor/github.com/coreos/bbolt/Makefile
generated
vendored
|
@ -5,7 +5,9 @@ GOLDFLAGS="-X main.branch $(BRANCH) -X main.commit $(COMMIT)"
|
||||||
default: build
|
default: build
|
||||||
|
|
||||||
race:
|
race:
|
||||||
@go test -v -race -test.run="TestSimulate_(100op|1000op)"
|
@TEST_FREELIST_TYPE=hashmap go test -v -race -test.run="TestSimulate_(100op|1000op)"
|
||||||
|
@echo "array freelist test"
|
||||||
|
@TEST_FREELIST_TYPE=array go test -v -race -test.run="TestSimulate_(100op|1000op)"
|
||||||
|
|
||||||
fmt:
|
fmt:
|
||||||
!(gofmt -l -s -d $(shell find . -name \*.go) | grep '[a-z]')
|
!(gofmt -l -s -d $(shell find . -name \*.go) | grep '[a-z]')
|
||||||
|
@ -20,11 +22,17 @@ unused:
|
||||||
|
|
||||||
# go get github.com/kisielk/errcheck
|
# go get github.com/kisielk/errcheck
|
||||||
errcheck:
|
errcheck:
|
||||||
@errcheck -ignorepkg=bytes -ignore=os:Remove github.com/coreos/bbolt
|
@errcheck -ignorepkg=bytes -ignore=os:Remove go.etcd.io/bbolt
|
||||||
|
|
||||||
test:
|
test:
|
||||||
go test -timeout 20m -v -coverprofile cover.out -covermode atomic
|
TEST_FREELIST_TYPE=hashmap go test -timeout 20m -v -coverprofile cover.out -covermode atomic
|
||||||
# Note: gets "program not an importable package" in out of path builds
|
# Note: gets "program not an importable package" in out of path builds
|
||||||
go test -v ./cmd/bolt
|
TEST_FREELIST_TYPE=hashmap go test -v ./cmd/bbolt
|
||||||
|
|
||||||
|
@echo "array freelist test"
|
||||||
|
|
||||||
|
@TEST_FREELIST_TYPE=array go test -timeout 20m -v -coverprofile cover.out -covermode atomic
|
||||||
|
# Note: gets "program not an importable package" in out of path builds
|
||||||
|
@TEST_FREELIST_TYPE=array go test -v ./cmd/bbolt
|
||||||
|
|
||||||
.PHONY: race fmt errcheck test gosimple unused
|
.PHONY: race fmt errcheck test gosimple unused
|
||||||
|
|
142
vendor/github.com/coreos/bbolt/README.md
generated
vendored
142
vendor/github.com/coreos/bbolt/README.md
generated
vendored
|
@ -1,9 +1,12 @@
|
||||||
bbolt
|
bbolt
|
||||||
====
|
=====
|
||||||
|
|
||||||
[![Go Report Card](https://goreportcard.com/badge/github.com/coreos/bbolt?style=flat-square)](https://goreportcard.com/report/github.com/coreos/bbolt)
|
[![Go Report Card](https://goreportcard.com/badge/github.com/etcd-io/bbolt?style=flat-square)](https://goreportcard.com/report/github.com/etcd-io/bbolt)
|
||||||
[![Coverage](https://codecov.io/gh/coreos/bbolt/branch/master/graph/badge.svg)](https://codecov.io/gh/coreos/bbolt)
|
[![Coverage](https://codecov.io/gh/etcd-io/bbolt/branch/master/graph/badge.svg)](https://codecov.io/gh/etcd-io/bbolt)
|
||||||
[![Godoc](http://img.shields.io/badge/go-documentation-blue.svg?style=flat-square)](https://godoc.org/github.com/coreos/bbolt)
|
[![Build Status Travis](https://img.shields.io/travis/etcd-io/bboltlabs.svg?style=flat-square&&branch=master)](https://travis-ci.com/etcd-io/bbolt)
|
||||||
|
[![Godoc](http://img.shields.io/badge/go-documentation-blue.svg?style=flat-square)](https://godoc.org/github.com/etcd-io/bbolt)
|
||||||
|
[![Releases](https://img.shields.io/github/release/etcd-io/bbolt/all.svg?style=flat-square)](https://github.com/etcd-io/bbolt/releases)
|
||||||
|
[![LICENSE](https://img.shields.io/github/license/etcd-io/bbolt.svg?style=flat-square)](https://github.com/etcd-io/bbolt/blob/master/LICENSE)
|
||||||
|
|
||||||
bbolt is a fork of [Ben Johnson's][gh_ben] [Bolt][bolt] key/value
|
bbolt is a fork of [Ben Johnson's][gh_ben] [Bolt][bolt] key/value
|
||||||
store. The purpose of this fork is to provide the Go community with an active
|
store. The purpose of this fork is to provide the Go community with an active
|
||||||
|
@ -33,9 +36,15 @@ consistency and thread safety. Bolt is currently used in high-load production
|
||||||
environments serving databases as large as 1TB. Many companies such as
|
environments serving databases as large as 1TB. Many companies such as
|
||||||
Shopify and Heroku use Bolt-backed services every day.
|
Shopify and Heroku use Bolt-backed services every day.
|
||||||
|
|
||||||
|
## Project versioning
|
||||||
|
|
||||||
|
bbolt uses [semantic versioning](http://semver.org).
|
||||||
|
API should not change between patch and minor releases.
|
||||||
|
New minor versions may add additional features to the API.
|
||||||
|
|
||||||
## Table of Contents
|
## Table of Contents
|
||||||
|
|
||||||
- [Getting Started](#getting-started)
|
- [Getting Started](#getting-started)
|
||||||
- [Installing](#installing)
|
- [Installing](#installing)
|
||||||
- [Opening a database](#opening-a-database)
|
- [Opening a database](#opening-a-database)
|
||||||
- [Transactions](#transactions)
|
- [Transactions](#transactions)
|
||||||
|
@ -55,14 +64,14 @@ Shopify and Heroku use Bolt-backed services every day.
|
||||||
- [Statistics](#statistics)
|
- [Statistics](#statistics)
|
||||||
- [Read-Only Mode](#read-only-mode)
|
- [Read-Only Mode](#read-only-mode)
|
||||||
- [Mobile Use (iOS/Android)](#mobile-use-iosandroid)
|
- [Mobile Use (iOS/Android)](#mobile-use-iosandroid)
|
||||||
- [Resources](#resources)
|
- [Resources](#resources)
|
||||||
- [Comparison with other databases](#comparison-with-other-databases)
|
- [Comparison with other databases](#comparison-with-other-databases)
|
||||||
- [Postgres, MySQL, & other relational databases](#postgres-mysql--other-relational-databases)
|
- [Postgres, MySQL, & other relational databases](#postgres-mysql--other-relational-databases)
|
||||||
- [LevelDB, RocksDB](#leveldb-rocksdb)
|
- [LevelDB, RocksDB](#leveldb-rocksdb)
|
||||||
- [LMDB](#lmdb)
|
- [LMDB](#lmdb)
|
||||||
- [Caveats & Limitations](#caveats--limitations)
|
- [Caveats & Limitations](#caveats--limitations)
|
||||||
- [Reading the Source](#reading-the-source)
|
- [Reading the Source](#reading-the-source)
|
||||||
- [Other Projects Using Bolt](#other-projects-using-bolt)
|
- [Other Projects Using Bolt](#other-projects-using-bolt)
|
||||||
|
|
||||||
## Getting Started
|
## Getting Started
|
||||||
|
|
||||||
|
@ -71,13 +80,28 @@ Shopify and Heroku use Bolt-backed services every day.
|
||||||
To start using Bolt, install Go and run `go get`:
|
To start using Bolt, install Go and run `go get`:
|
||||||
|
|
||||||
```sh
|
```sh
|
||||||
$ go get github.com/coreos/bbolt/...
|
$ go get go.etcd.io/bbolt/...
|
||||||
```
|
```
|
||||||
|
|
||||||
This will retrieve the library and install the `bolt` command line utility into
|
This will retrieve the library and install the `bolt` command line utility into
|
||||||
your `$GOBIN` path.
|
your `$GOBIN` path.
|
||||||
|
|
||||||
|
|
||||||
|
### Importing bbolt
|
||||||
|
|
||||||
|
To use bbolt as an embedded key-value store, import as:
|
||||||
|
|
||||||
|
```go
|
||||||
|
import bolt "go.etcd.io/bbolt"
|
||||||
|
|
||||||
|
db, err := bolt.Open(path, 0666, nil)
|
||||||
|
if err != nil {
|
||||||
|
return err
|
||||||
|
}
|
||||||
|
defer db.Close()
|
||||||
|
```
|
||||||
|
|
||||||
|
|
||||||
### Opening a database
|
### Opening a database
|
||||||
|
|
||||||
The top-level object in Bolt is a `DB`. It is represented as a single file on
|
The top-level object in Bolt is a `DB`. It is represented as a single file on
|
||||||
|
@ -91,7 +115,7 @@ package main
|
||||||
import (
|
import (
|
||||||
"log"
|
"log"
|
||||||
|
|
||||||
bolt "github.com/coreos/bbolt"
|
bolt "go.etcd.io/bbolt"
|
||||||
)
|
)
|
||||||
|
|
||||||
func main() {
|
func main() {
|
||||||
|
@ -534,7 +558,7 @@ this from a read-only transaction, it will perform a hot backup and not block
|
||||||
your other database reads and writes.
|
your other database reads and writes.
|
||||||
|
|
||||||
By default, it will use a regular file handle which will utilize the operating
|
By default, it will use a regular file handle which will utilize the operating
|
||||||
system's page cache. See the [`Tx`](https://godoc.org/github.com/coreos/bbolt#Tx)
|
system's page cache. See the [`Tx`](https://godoc.org/go.etcd.io/bbolt#Tx)
|
||||||
documentation for information about optimizing for larger-than-RAM datasets.
|
documentation for information about optimizing for larger-than-RAM datasets.
|
||||||
|
|
||||||
One common use case is to backup over HTTP so you can use tools like `cURL` to
|
One common use case is to backup over HTTP so you can use tools like `cURL` to
|
||||||
|
@ -875,54 +899,56 @@ them via pull request.
|
||||||
|
|
||||||
Below is a list of public, open source projects that use Bolt:
|
Below is a list of public, open source projects that use Bolt:
|
||||||
|
|
||||||
* [BoltDbWeb](https://github.com/evnix/boltdbweb) - A web based GUI for BoltDB files.
|
|
||||||
* [Operation Go: A Routine Mission](http://gocode.io) - An online programming game for Golang using Bolt for user accounts and a leaderboard.
|
|
||||||
* [Bazil](https://bazil.org/) - A file system that lets your data reside where it is most convenient for it to reside.
|
|
||||||
* [DVID](https://github.com/janelia-flyem/dvid) - Added Bolt as optional storage engine and testing it against Basho-tuned leveldb.
|
|
||||||
* [Skybox Analytics](https://github.com/skybox/skybox) - A standalone funnel analysis tool for web analytics.
|
|
||||||
* [Scuttlebutt](https://github.com/benbjohnson/scuttlebutt) - Uses Bolt to store and process all Twitter mentions of GitHub projects.
|
|
||||||
* [Wiki](https://github.com/peterhellberg/wiki) - A tiny wiki using Goji, BoltDB and Blackfriday.
|
|
||||||
* [ChainStore](https://github.com/pressly/chainstore) - Simple key-value interface to a variety of storage engines organized as a chain of operations.
|
|
||||||
* [MetricBase](https://github.com/msiebuhr/MetricBase) - Single-binary version of Graphite.
|
|
||||||
* [Gitchain](https://github.com/gitchain/gitchain) - Decentralized, peer-to-peer Git repositories aka "Git meets Bitcoin".
|
|
||||||
* [event-shuttle](https://github.com/sclasen/event-shuttle) - A Unix system service to collect and reliably deliver messages to Kafka.
|
|
||||||
* [ipxed](https://github.com/kelseyhightower/ipxed) - Web interface and api for ipxed.
|
|
||||||
* [BoltStore](https://github.com/yosssi/boltstore) - Session store using Bolt.
|
|
||||||
* [photosite/session](https://godoc.org/bitbucket.org/kardianos/photosite/session) - Sessions for a photo viewing site.
|
|
||||||
* [LedisDB](https://github.com/siddontang/ledisdb) - A high performance NoSQL, using Bolt as optional storage.
|
|
||||||
* [ipLocator](https://github.com/AndreasBriese/ipLocator) - A fast ip-geo-location-server using bolt with bloom filters.
|
|
||||||
* [cayley](https://github.com/google/cayley) - Cayley is an open-source graph database using Bolt as optional backend.
|
|
||||||
* [bleve](http://www.blevesearch.com/) - A pure Go search engine similar to ElasticSearch that uses Bolt as the default storage backend.
|
|
||||||
* [tentacool](https://github.com/optiflows/tentacool) - REST api server to manage system stuff (IP, DNS, Gateway...) on a linux server.
|
|
||||||
* [Seaweed File System](https://github.com/chrislusf/seaweedfs) - Highly scalable distributed key~file system with O(1) disk read.
|
|
||||||
* [InfluxDB](https://influxdata.com) - Scalable datastore for metrics, events, and real-time analytics.
|
|
||||||
* [Freehold](http://tshannon.bitbucket.org/freehold/) - An open, secure, and lightweight platform for your files and data.
|
|
||||||
* [Prometheus Annotation Server](https://github.com/oliver006/prom_annotation_server) - Annotation server for PromDash & Prometheus service monitoring system.
|
|
||||||
* [Consul](https://github.com/hashicorp/consul) - Consul is service discovery and configuration made easy. Distributed, highly available, and datacenter-aware.
|
|
||||||
* [Kala](https://github.com/ajvb/kala) - Kala is a modern job scheduler optimized to run on a single node. It is persistent, JSON over HTTP API, ISO 8601 duration notation, and dependent jobs.
|
|
||||||
* [drive](https://github.com/odeke-em/drive) - drive is an unofficial Google Drive command line client for \*NIX operating systems.
|
|
||||||
* [stow](https://github.com/djherbis/stow) - a persistence manager for objects
|
|
||||||
backed by boltdb.
|
|
||||||
* [buckets](https://github.com/joyrexus/buckets) - a bolt wrapper streamlining
|
|
||||||
simple tx and key scans.
|
|
||||||
* [mbuckets](https://github.com/abhigupta912/mbuckets) - A Bolt wrapper that allows easy operations on multi level (nested) buckets.
|
|
||||||
* [Request Baskets](https://github.com/darklynx/request-baskets) - A web service to collect arbitrary HTTP requests and inspect them via REST API or simple web UI, similar to [RequestBin](http://requestb.in/) service
|
|
||||||
* [Go Report Card](https://goreportcard.com/) - Go code quality report cards as a (free and open source) service.
|
|
||||||
* [Boltdb Boilerplate](https://github.com/bobintornado/boltdb-boilerplate) - Boilerplate wrapper around bolt aiming to make simple calls one-liners.
|
|
||||||
* [lru](https://github.com/crowdriff/lru) - Easy to use Bolt-backed Least-Recently-Used (LRU) read-through cache with chainable remote stores.
|
|
||||||
* [Storm](https://github.com/asdine/storm) - Simple and powerful ORM for BoltDB.
|
|
||||||
* [GoWebApp](https://github.com/josephspurrier/gowebapp) - A basic MVC web application in Go using BoltDB.
|
|
||||||
* [SimpleBolt](https://github.com/xyproto/simplebolt) - A simple way to use BoltDB. Deals mainly with strings.
|
|
||||||
* [Algernon](https://github.com/xyproto/algernon) - A HTTP/2 web server with built-in support for Lua. Uses BoltDB as the default database backend.
|
* [Algernon](https://github.com/xyproto/algernon) - A HTTP/2 web server with built-in support for Lua. Uses BoltDB as the default database backend.
|
||||||
* [MuLiFS](https://github.com/dankomiocevic/mulifs) - Music Library Filesystem creates a filesystem to organise your music files.
|
* [Bazil](https://bazil.org/) - A file system that lets your data reside where it is most convenient for it to reside.
|
||||||
* [GoShort](https://github.com/pankajkhairnar/goShort) - GoShort is a URL shortener written in Golang and BoltDB for persistent key/value storage and for routing it's using high performent HTTPRouter.
|
|
||||||
* [torrent](https://github.com/anacrolix/torrent) - Full-featured BitTorrent client package and utilities in Go. BoltDB is a storage backend in development.
|
|
||||||
* [gopherpit](https://github.com/gopherpit/gopherpit) - A web service to manage Go remote import paths with custom domains
|
|
||||||
* [bolter](https://github.com/hasit/bolter) - Command-line app for viewing BoltDB file in your terminal.
|
* [bolter](https://github.com/hasit/bolter) - Command-line app for viewing BoltDB file in your terminal.
|
||||||
* [boltcli](https://github.com/spacewander/boltcli) - the redis-cli for boltdb with Lua script support.
|
* [boltcli](https://github.com/spacewander/boltcli) - the redis-cli for boltdb with Lua script support.
|
||||||
* [btcwallet](https://github.com/btcsuite/btcwallet) - A bitcoin wallet.
|
|
||||||
* [dcrwallet](https://github.com/decred/dcrwallet) - A wallet for the Decred cryptocurrency.
|
|
||||||
* [Ironsmith](https://github.com/timshannon/ironsmith) - A simple, script-driven continuous integration (build - > test -> release) tool, with no external dependencies
|
|
||||||
* [BoltHold](https://github.com/timshannon/bolthold) - An embeddable NoSQL store for Go types built on BoltDB
|
* [BoltHold](https://github.com/timshannon/bolthold) - An embeddable NoSQL store for Go types built on BoltDB
|
||||||
|
* [BoltStore](https://github.com/yosssi/boltstore) - Session store using Bolt.
|
||||||
|
* [Boltdb Boilerplate](https://github.com/bobintornado/boltdb-boilerplate) - Boilerplate wrapper around bolt aiming to make simple calls one-liners.
|
||||||
|
* [BoltDbWeb](https://github.com/evnix/boltdbweb) - A web based GUI for BoltDB files.
|
||||||
|
* [bleve](http://www.blevesearch.com/) - A pure Go search engine similar to ElasticSearch that uses Bolt as the default storage backend.
|
||||||
|
* [btcwallet](https://github.com/btcsuite/btcwallet) - A bitcoin wallet.
|
||||||
|
* [buckets](https://github.com/joyrexus/buckets) - a bolt wrapper streamlining
|
||||||
|
simple tx and key scans.
|
||||||
|
* [cayley](https://github.com/google/cayley) - Cayley is an open-source graph database using Bolt as optional backend.
|
||||||
|
* [ChainStore](https://github.com/pressly/chainstore) - Simple key-value interface to a variety of storage engines organized as a chain of operations.
|
||||||
|
* [Consul](https://github.com/hashicorp/consul) - Consul is service discovery and configuration made easy. Distributed, highly available, and datacenter-aware.
|
||||||
|
* [DVID](https://github.com/janelia-flyem/dvid) - Added Bolt as optional storage engine and testing it against Basho-tuned leveldb.
|
||||||
|
* [dcrwallet](https://github.com/decred/dcrwallet) - A wallet for the Decred cryptocurrency.
|
||||||
|
* [drive](https://github.com/odeke-em/drive) - drive is an unofficial Google Drive command line client for \*NIX operating systems.
|
||||||
|
* [event-shuttle](https://github.com/sclasen/event-shuttle) - A Unix system service to collect and reliably deliver messages to Kafka.
|
||||||
|
* [Freehold](http://tshannon.bitbucket.org/freehold/) - An open, secure, and lightweight platform for your files and data.
|
||||||
|
* [Go Report Card](https://goreportcard.com/) - Go code quality report cards as a (free and open source) service.
|
||||||
|
* [GoWebApp](https://github.com/josephspurrier/gowebapp) - A basic MVC web application in Go using BoltDB.
|
||||||
|
* [GoShort](https://github.com/pankajkhairnar/goShort) - GoShort is a URL shortener written in Golang and BoltDB for persistent key/value storage and for routing it's using high performent HTTPRouter.
|
||||||
|
* [gopherpit](https://github.com/gopherpit/gopherpit) - A web service to manage Go remote import paths with custom domains
|
||||||
|
* [Gitchain](https://github.com/gitchain/gitchain) - Decentralized, peer-to-peer Git repositories aka "Git meets Bitcoin".
|
||||||
|
* [InfluxDB](https://influxdata.com) - Scalable datastore for metrics, events, and real-time analytics.
|
||||||
|
* [ipLocator](https://github.com/AndreasBriese/ipLocator) - A fast ip-geo-location-server using bolt with bloom filters.
|
||||||
|
* [ipxed](https://github.com/kelseyhightower/ipxed) - Web interface and api for ipxed.
|
||||||
|
* [Ironsmith](https://github.com/timshannon/ironsmith) - A simple, script-driven continuous integration (build - > test -> release) tool, with no external dependencies
|
||||||
|
* [Kala](https://github.com/ajvb/kala) - Kala is a modern job scheduler optimized to run on a single node. It is persistent, JSON over HTTP API, ISO 8601 duration notation, and dependent jobs.
|
||||||
|
* [Key Value Access Langusge (KVAL)](https://github.com/kval-access-language) - A proposed grammar for key-value datastores offering a bbolt binding.
|
||||||
|
* [LedisDB](https://github.com/siddontang/ledisdb) - A high performance NoSQL, using Bolt as optional storage.
|
||||||
|
* [lru](https://github.com/crowdriff/lru) - Easy to use Bolt-backed Least-Recently-Used (LRU) read-through cache with chainable remote stores.
|
||||||
|
* [mbuckets](https://github.com/abhigupta912/mbuckets) - A Bolt wrapper that allows easy operations on multi level (nested) buckets.
|
||||||
|
* [MetricBase](https://github.com/msiebuhr/MetricBase) - Single-binary version of Graphite.
|
||||||
|
* [MuLiFS](https://github.com/dankomiocevic/mulifs) - Music Library Filesystem creates a filesystem to organise your music files.
|
||||||
|
* [Operation Go: A Routine Mission](http://gocode.io) - An online programming game for Golang using Bolt for user accounts and a leaderboard.
|
||||||
|
* [photosite/session](https://godoc.org/bitbucket.org/kardianos/photosite/session) - Sessions for a photo viewing site.
|
||||||
|
* [Prometheus Annotation Server](https://github.com/oliver006/prom_annotation_server) - Annotation server for PromDash & Prometheus service monitoring system.
|
||||||
|
* [reef-pi](https://github.com/reef-pi/reef-pi) - reef-pi is an award winning, modular, DIY reef tank controller using easy to learn electronics based on a Raspberry Pi.
|
||||||
|
* [Request Baskets](https://github.com/darklynx/request-baskets) - A web service to collect arbitrary HTTP requests and inspect them via REST API or simple web UI, similar to [RequestBin](http://requestb.in/) service
|
||||||
|
* [Seaweed File System](https://github.com/chrislusf/seaweedfs) - Highly scalable distributed key~file system with O(1) disk read.
|
||||||
|
* [stow](https://github.com/djherbis/stow) - a persistence manager for objects
|
||||||
|
backed by boltdb.
|
||||||
|
* [Storm](https://github.com/asdine/storm) - Simple and powerful ORM for BoltDB.
|
||||||
|
* [SimpleBolt](https://github.com/xyproto/simplebolt) - A simple way to use BoltDB. Deals mainly with strings.
|
||||||
|
* [Skybox Analytics](https://github.com/skybox/skybox) - A standalone funnel analysis tool for web analytics.
|
||||||
|
* [Scuttlebutt](https://github.com/benbjohnson/scuttlebutt) - Uses Bolt to store and process all Twitter mentions of GitHub projects.
|
||||||
|
* [tentacool](https://github.com/optiflows/tentacool) - REST api server to manage system stuff (IP, DNS, Gateway...) on a linux server.
|
||||||
|
* [torrent](https://github.com/anacrolix/torrent) - Full-featured BitTorrent client package and utilities in Go. BoltDB is a storage backend in development.
|
||||||
|
* [Wiki](https://github.com/peterhellberg/wiki) - A tiny wiki using Goji, BoltDB and Blackfriday.
|
||||||
|
|
||||||
If you are using Bolt in a project please send a pull request to add it to the list.
|
If you are using Bolt in a project please send a pull request to add it to the list.
|
||||||
|
|
18
vendor/github.com/coreos/bbolt/appveyor.yml
generated
vendored
18
vendor/github.com/coreos/bbolt/appveyor.yml
generated
vendored
|
@ -1,18 +0,0 @@
|
||||||
version: "{build}"
|
|
||||||
|
|
||||||
os: Windows Server 2012 R2
|
|
||||||
|
|
||||||
clone_folder: c:\gopath\src\github.com\boltdb\bolt
|
|
||||||
|
|
||||||
environment:
|
|
||||||
GOPATH: c:\gopath
|
|
||||||
|
|
||||||
install:
|
|
||||||
- echo %PATH%
|
|
||||||
- echo %GOPATH%
|
|
||||||
- go version
|
|
||||||
- go env
|
|
||||||
- go get -v -t ./...
|
|
||||||
|
|
||||||
build_script:
|
|
||||||
- go test -v ./...
|
|
2
vendor/github.com/coreos/bbolt/bolt_386.go
generated
vendored
2
vendor/github.com/coreos/bbolt/bolt_386.go
generated
vendored
|
@ -1,4 +1,4 @@
|
||||||
package bolt
|
package bbolt
|
||||||
|
|
||||||
// maxMapSize represents the largest mmap size supported by Bolt.
|
// maxMapSize represents the largest mmap size supported by Bolt.
|
||||||
const maxMapSize = 0x7FFFFFFF // 2GB
|
const maxMapSize = 0x7FFFFFFF // 2GB
|
||||||
|
|
2
vendor/github.com/coreos/bbolt/bolt_amd64.go
generated
vendored
2
vendor/github.com/coreos/bbolt/bolt_amd64.go
generated
vendored
|
@ -1,4 +1,4 @@
|
||||||
package bolt
|
package bbolt
|
||||||
|
|
||||||
// maxMapSize represents the largest mmap size supported by Bolt.
|
// maxMapSize represents the largest mmap size supported by Bolt.
|
||||||
const maxMapSize = 0xFFFFFFFFFFFF // 256TB
|
const maxMapSize = 0xFFFFFFFFFFFF // 256TB
|
||||||
|
|
2
vendor/github.com/coreos/bbolt/bolt_arm.go
generated
vendored
2
vendor/github.com/coreos/bbolt/bolt_arm.go
generated
vendored
|
@ -1,4 +1,4 @@
|
||||||
package bolt
|
package bbolt
|
||||||
|
|
||||||
import "unsafe"
|
import "unsafe"
|
||||||
|
|
||||||
|
|
2
vendor/github.com/coreos/bbolt/bolt_arm64.go
generated
vendored
2
vendor/github.com/coreos/bbolt/bolt_arm64.go
generated
vendored
|
@ -1,6 +1,6 @@
|
||||||
// +build arm64
|
// +build arm64
|
||||||
|
|
||||||
package bolt
|
package bbolt
|
||||||
|
|
||||||
// maxMapSize represents the largest mmap size supported by Bolt.
|
// maxMapSize represents the largest mmap size supported by Bolt.
|
||||||
const maxMapSize = 0xFFFFFFFFFFFF // 256TB
|
const maxMapSize = 0xFFFFFFFFFFFF // 256TB
|
||||||
|
|
2
vendor/github.com/coreos/bbolt/bolt_linux.go
generated
vendored
2
vendor/github.com/coreos/bbolt/bolt_linux.go
generated
vendored
|
@ -1,4 +1,4 @@
|
||||||
package bolt
|
package bbolt
|
||||||
|
|
||||||
import (
|
import (
|
||||||
"syscall"
|
"syscall"
|
||||||
|
|
2
vendor/github.com/coreos/bbolt/bolt_mips64x.go
generated
vendored
2
vendor/github.com/coreos/bbolt/bolt_mips64x.go
generated
vendored
|
@ -1,6 +1,6 @@
|
||||||
// +build mips64 mips64le
|
// +build mips64 mips64le
|
||||||
|
|
||||||
package bolt
|
package bbolt
|
||||||
|
|
||||||
// maxMapSize represents the largest mmap size supported by Bolt.
|
// maxMapSize represents the largest mmap size supported by Bolt.
|
||||||
const maxMapSize = 0x8000000000 // 512GB
|
const maxMapSize = 0x8000000000 // 512GB
|
||||||
|
|
2
vendor/github.com/coreos/bbolt/bolt_mipsx.go
generated
vendored
2
vendor/github.com/coreos/bbolt/bolt_mipsx.go
generated
vendored
|
@ -1,6 +1,6 @@
|
||||||
// +build mips mipsle
|
// +build mips mipsle
|
||||||
|
|
||||||
package bolt
|
package bbolt
|
||||||
|
|
||||||
// maxMapSize represents the largest mmap size supported by Bolt.
|
// maxMapSize represents the largest mmap size supported by Bolt.
|
||||||
const maxMapSize = 0x40000000 // 1GB
|
const maxMapSize = 0x40000000 // 1GB
|
||||||
|
|
2
vendor/github.com/coreos/bbolt/bolt_openbsd.go
generated
vendored
2
vendor/github.com/coreos/bbolt/bolt_openbsd.go
generated
vendored
|
@ -1,4 +1,4 @@
|
||||||
package bolt
|
package bbolt
|
||||||
|
|
||||||
import (
|
import (
|
||||||
"syscall"
|
"syscall"
|
||||||
|
|
2
vendor/github.com/coreos/bbolt/bolt_ppc.go
generated
vendored
2
vendor/github.com/coreos/bbolt/bolt_ppc.go
generated
vendored
|
@ -1,6 +1,6 @@
|
||||||
// +build ppc
|
// +build ppc
|
||||||
|
|
||||||
package bolt
|
package bbolt
|
||||||
|
|
||||||
// maxMapSize represents the largest mmap size supported by Bolt.
|
// maxMapSize represents the largest mmap size supported by Bolt.
|
||||||
const maxMapSize = 0x7FFFFFFF // 2GB
|
const maxMapSize = 0x7FFFFFFF // 2GB
|
||||||
|
|
2
vendor/github.com/coreos/bbolt/bolt_ppc64.go
generated
vendored
2
vendor/github.com/coreos/bbolt/bolt_ppc64.go
generated
vendored
|
@ -1,6 +1,6 @@
|
||||||
// +build ppc64
|
// +build ppc64
|
||||||
|
|
||||||
package bolt
|
package bbolt
|
||||||
|
|
||||||
// maxMapSize represents the largest mmap size supported by Bolt.
|
// maxMapSize represents the largest mmap size supported by Bolt.
|
||||||
const maxMapSize = 0xFFFFFFFFFFFF // 256TB
|
const maxMapSize = 0xFFFFFFFFFFFF // 256TB
|
||||||
|
|
2
vendor/github.com/coreos/bbolt/bolt_ppc64le.go
generated
vendored
2
vendor/github.com/coreos/bbolt/bolt_ppc64le.go
generated
vendored
|
@ -1,6 +1,6 @@
|
||||||
// +build ppc64le
|
// +build ppc64le
|
||||||
|
|
||||||
package bolt
|
package bbolt
|
||||||
|
|
||||||
// maxMapSize represents the largest mmap size supported by Bolt.
|
// maxMapSize represents the largest mmap size supported by Bolt.
|
||||||
const maxMapSize = 0xFFFFFFFFFFFF // 256TB
|
const maxMapSize = 0xFFFFFFFFFFFF // 256TB
|
||||||
|
|
2
vendor/github.com/coreos/bbolt/bolt_s390x.go
generated
vendored
2
vendor/github.com/coreos/bbolt/bolt_s390x.go
generated
vendored
|
@ -1,6 +1,6 @@
|
||||||
// +build s390x
|
// +build s390x
|
||||||
|
|
||||||
package bolt
|
package bbolt
|
||||||
|
|
||||||
// maxMapSize represents the largest mmap size supported by Bolt.
|
// maxMapSize represents the largest mmap size supported by Bolt.
|
||||||
const maxMapSize = 0xFFFFFFFFFFFF // 256TB
|
const maxMapSize = 0xFFFFFFFFFFFF // 256TB
|
||||||
|
|
5
vendor/github.com/coreos/bbolt/bolt_unix.go
generated
vendored
5
vendor/github.com/coreos/bbolt/bolt_unix.go
generated
vendored
|
@ -1,17 +1,16 @@
|
||||||
// +build !windows,!plan9,!solaris
|
// +build !windows,!plan9,!solaris
|
||||||
|
|
||||||
package bolt
|
package bbolt
|
||||||
|
|
||||||
import (
|
import (
|
||||||
"fmt"
|
"fmt"
|
||||||
"os"
|
|
||||||
"syscall"
|
"syscall"
|
||||||
"time"
|
"time"
|
||||||
"unsafe"
|
"unsafe"
|
||||||
)
|
)
|
||||||
|
|
||||||
// flock acquires an advisory lock on a file descriptor.
|
// flock acquires an advisory lock on a file descriptor.
|
||||||
func flock(db *DB, mode os.FileMode, exclusive bool, timeout time.Duration) error {
|
func flock(db *DB, exclusive bool, timeout time.Duration) error {
|
||||||
var t time.Time
|
var t time.Time
|
||||||
if timeout != 0 {
|
if timeout != 0 {
|
||||||
t = time.Now()
|
t = time.Now()
|
||||||
|
|
5
vendor/github.com/coreos/bbolt/bolt_unix_solaris.go
generated
vendored
5
vendor/github.com/coreos/bbolt/bolt_unix_solaris.go
generated
vendored
|
@ -1,8 +1,7 @@
|
||||||
package bolt
|
package bbolt
|
||||||
|
|
||||||
import (
|
import (
|
||||||
"fmt"
|
"fmt"
|
||||||
"os"
|
|
||||||
"syscall"
|
"syscall"
|
||||||
"time"
|
"time"
|
||||||
"unsafe"
|
"unsafe"
|
||||||
|
@ -11,7 +10,7 @@ import (
|
||||||
)
|
)
|
||||||
|
|
||||||
// flock acquires an advisory lock on a file descriptor.
|
// flock acquires an advisory lock on a file descriptor.
|
||||||
func flock(db *DB, mode os.FileMode, exclusive bool, timeout time.Duration) error {
|
func flock(db *DB, exclusive bool, timeout time.Duration) error {
|
||||||
var t time.Time
|
var t time.Time
|
||||||
if timeout != 0 {
|
if timeout != 0 {
|
||||||
t = time.Now()
|
t = time.Now()
|
||||||
|
|
34
vendor/github.com/coreos/bbolt/bolt_windows.go
generated
vendored
34
vendor/github.com/coreos/bbolt/bolt_windows.go
generated
vendored
|
@ -1,4 +1,4 @@
|
||||||
package bolt
|
package bbolt
|
||||||
|
|
||||||
import (
|
import (
|
||||||
"fmt"
|
"fmt"
|
||||||
|
@ -16,8 +16,6 @@ var (
|
||||||
)
|
)
|
||||||
|
|
||||||
const (
|
const (
|
||||||
lockExt = ".lock"
|
|
||||||
|
|
||||||
// see https://msdn.microsoft.com/en-us/library/windows/desktop/aa365203(v=vs.85).aspx
|
// see https://msdn.microsoft.com/en-us/library/windows/desktop/aa365203(v=vs.85).aspx
|
||||||
flagLockExclusive = 2
|
flagLockExclusive = 2
|
||||||
flagLockFailImmediately = 1
|
flagLockFailImmediately = 1
|
||||||
|
@ -48,28 +46,24 @@ func fdatasync(db *DB) error {
|
||||||
}
|
}
|
||||||
|
|
||||||
// flock acquires an advisory lock on a file descriptor.
|
// flock acquires an advisory lock on a file descriptor.
|
||||||
func flock(db *DB, mode os.FileMode, exclusive bool, timeout time.Duration) error {
|
func flock(db *DB, exclusive bool, timeout time.Duration) error {
|
||||||
// Create a separate lock file on windows because a process
|
|
||||||
// cannot share an exclusive lock on the same file. This is
|
|
||||||
// needed during Tx.WriteTo().
|
|
||||||
f, err := os.OpenFile(db.path+lockExt, os.O_CREATE, mode)
|
|
||||||
if err != nil {
|
|
||||||
return err
|
|
||||||
}
|
|
||||||
db.lockfile = f
|
|
||||||
|
|
||||||
var t time.Time
|
var t time.Time
|
||||||
if timeout != 0 {
|
if timeout != 0 {
|
||||||
t = time.Now()
|
t = time.Now()
|
||||||
}
|
}
|
||||||
fd := f.Fd()
|
|
||||||
var flag uint32 = flagLockFailImmediately
|
var flag uint32 = flagLockFailImmediately
|
||||||
if exclusive {
|
if exclusive {
|
||||||
flag |= flagLockExclusive
|
flag |= flagLockExclusive
|
||||||
}
|
}
|
||||||
for {
|
for {
|
||||||
// Attempt to obtain an exclusive lock.
|
// Fix for https://github.com/etcd-io/bbolt/issues/121. Use byte-range
|
||||||
err := lockFileEx(syscall.Handle(fd), flag, 0, 1, 0, &syscall.Overlapped{})
|
// -1..0 as the lock on the database file.
|
||||||
|
var m1 uint32 = (1 << 32) - 1 // -1 in a uint32
|
||||||
|
err := lockFileEx(syscall.Handle(db.file.Fd()), flag, 0, 1, 0, &syscall.Overlapped{
|
||||||
|
Offset: m1,
|
||||||
|
OffsetHigh: m1,
|
||||||
|
})
|
||||||
|
|
||||||
if err == nil {
|
if err == nil {
|
||||||
return nil
|
return nil
|
||||||
} else if err != errLockViolation {
|
} else if err != errLockViolation {
|
||||||
|
@ -88,9 +82,11 @@ func flock(db *DB, mode os.FileMode, exclusive bool, timeout time.Duration) erro
|
||||||
|
|
||||||
// funlock releases an advisory lock on a file descriptor.
|
// funlock releases an advisory lock on a file descriptor.
|
||||||
func funlock(db *DB) error {
|
func funlock(db *DB) error {
|
||||||
err := unlockFileEx(syscall.Handle(db.lockfile.Fd()), 0, 1, 0, &syscall.Overlapped{})
|
var m1 uint32 = (1 << 32) - 1 // -1 in a uint32
|
||||||
db.lockfile.Close()
|
err := unlockFileEx(syscall.Handle(db.file.Fd()), 0, 1, 0, &syscall.Overlapped{
|
||||||
os.Remove(db.path + lockExt)
|
Offset: m1,
|
||||||
|
OffsetHigh: m1,
|
||||||
|
})
|
||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
2
vendor/github.com/coreos/bbolt/boltsync_unix.go
generated
vendored
2
vendor/github.com/coreos/bbolt/boltsync_unix.go
generated
vendored
|
@ -1,6 +1,6 @@
|
||||||
// +build !windows,!plan9,!linux,!openbsd
|
// +build !windows,!plan9,!linux,!openbsd
|
||||||
|
|
||||||
package bolt
|
package bbolt
|
||||||
|
|
||||||
// fdatasync flushes written data to a file descriptor.
|
// fdatasync flushes written data to a file descriptor.
|
||||||
func fdatasync(db *DB) error {
|
func fdatasync(db *DB) error {
|
||||||
|
|
2
vendor/github.com/coreos/bbolt/bucket.go
generated
vendored
2
vendor/github.com/coreos/bbolt/bucket.go
generated
vendored
|
@ -1,4 +1,4 @@
|
||||||
package bolt
|
package bbolt
|
||||||
|
|
||||||
import (
|
import (
|
||||||
"bytes"
|
"bytes"
|
||||||
|
|
2
vendor/github.com/coreos/bbolt/cursor.go
generated
vendored
2
vendor/github.com/coreos/bbolt/cursor.go
generated
vendored
|
@ -1,4 +1,4 @@
|
||||||
package bolt
|
package bbolt
|
||||||
|
|
||||||
import (
|
import (
|
||||||
"bytes"
|
"bytes"
|
||||||
|
|
40
vendor/github.com/coreos/bbolt/db.go
generated
vendored
40
vendor/github.com/coreos/bbolt/db.go
generated
vendored
|
@ -1,4 +1,4 @@
|
||||||
package bolt
|
package bbolt
|
||||||
|
|
||||||
import (
|
import (
|
||||||
"errors"
|
"errors"
|
||||||
|
@ -43,6 +43,16 @@ var defaultPageSize = os.Getpagesize()
|
||||||
// The time elapsed between consecutive file locking attempts.
|
// The time elapsed between consecutive file locking attempts.
|
||||||
const flockRetryTimeout = 50 * time.Millisecond
|
const flockRetryTimeout = 50 * time.Millisecond
|
||||||
|
|
||||||
|
// FreelistType is the type of the freelist backend
|
||||||
|
type FreelistType string
|
||||||
|
|
||||||
|
const (
|
||||||
|
// FreelistArrayType indicates backend freelist type is array
|
||||||
|
FreelistArrayType = FreelistType("array")
|
||||||
|
// FreelistMapType indicates backend freelist type is hashmap
|
||||||
|
FreelistMapType = FreelistType("hashmap")
|
||||||
|
)
|
||||||
|
|
||||||
// DB represents a collection of buckets persisted to a file on disk.
|
// DB represents a collection of buckets persisted to a file on disk.
|
||||||
// All data access is performed through transactions which can be obtained through the DB.
|
// All data access is performed through transactions which can be obtained through the DB.
|
||||||
// All the functions on DB will return a ErrDatabaseNotOpen if accessed before Open() is called.
|
// All the functions on DB will return a ErrDatabaseNotOpen if accessed before Open() is called.
|
||||||
|
@ -70,6 +80,13 @@ type DB struct {
|
||||||
// re-sync during recovery.
|
// re-sync during recovery.
|
||||||
NoFreelistSync bool
|
NoFreelistSync bool
|
||||||
|
|
||||||
|
// FreelistType sets the backend freelist type. There are two options. Array which is simple but endures
|
||||||
|
// dramatic performance degradation if database is large and framentation in freelist is common.
|
||||||
|
// The alternative one is using hashmap, it is faster in almost all circumstances
|
||||||
|
// but it doesn't guarantee that it offers the smallest page id available. In normal case it is safe.
|
||||||
|
// The default type is array
|
||||||
|
FreelistType FreelistType
|
||||||
|
|
||||||
// When true, skips the truncate call when growing the database.
|
// When true, skips the truncate call when growing the database.
|
||||||
// Setting this to true is only safe on non-ext3/ext4 systems.
|
// Setting this to true is only safe on non-ext3/ext4 systems.
|
||||||
// Skipping truncation avoids preallocation of hard drive space and
|
// Skipping truncation avoids preallocation of hard drive space and
|
||||||
|
@ -105,7 +122,6 @@ type DB struct {
|
||||||
|
|
||||||
path string
|
path string
|
||||||
file *os.File
|
file *os.File
|
||||||
lockfile *os.File // windows only
|
|
||||||
dataref []byte // mmap'ed readonly, write throws SEGV
|
dataref []byte // mmap'ed readonly, write throws SEGV
|
||||||
data *[maxMapSize]byte
|
data *[maxMapSize]byte
|
||||||
datasz int
|
datasz int
|
||||||
|
@ -170,6 +186,7 @@ func Open(path string, mode os.FileMode, options *Options) (*DB, error) {
|
||||||
db.NoGrowSync = options.NoGrowSync
|
db.NoGrowSync = options.NoGrowSync
|
||||||
db.MmapFlags = options.MmapFlags
|
db.MmapFlags = options.MmapFlags
|
||||||
db.NoFreelistSync = options.NoFreelistSync
|
db.NoFreelistSync = options.NoFreelistSync
|
||||||
|
db.FreelistType = options.FreelistType
|
||||||
|
|
||||||
// Set default values for later DB operations.
|
// Set default values for later DB operations.
|
||||||
db.MaxBatchSize = DefaultMaxBatchSize
|
db.MaxBatchSize = DefaultMaxBatchSize
|
||||||
|
@ -197,8 +214,7 @@ func Open(path string, mode os.FileMode, options *Options) (*DB, error) {
|
||||||
// if !options.ReadOnly.
|
// if !options.ReadOnly.
|
||||||
// The database file is locked using the shared lock (more than one process may
|
// The database file is locked using the shared lock (more than one process may
|
||||||
// hold a lock at the same time) otherwise (options.ReadOnly is set).
|
// hold a lock at the same time) otherwise (options.ReadOnly is set).
|
||||||
if err := flock(db, mode, !db.readOnly, options.Timeout); err != nil {
|
if err := flock(db, !db.readOnly, options.Timeout); err != nil {
|
||||||
db.lockfile = nil // make 'unused' happy. TODO: rework locks
|
|
||||||
_ = db.close()
|
_ = db.close()
|
||||||
return nil, err
|
return nil, err
|
||||||
}
|
}
|
||||||
|
@ -285,7 +301,7 @@ func Open(path string, mode os.FileMode, options *Options) (*DB, error) {
|
||||||
// concurrent accesses being made to the freelist.
|
// concurrent accesses being made to the freelist.
|
||||||
func (db *DB) loadFreelist() {
|
func (db *DB) loadFreelist() {
|
||||||
db.freelistLoad.Do(func() {
|
db.freelistLoad.Do(func() {
|
||||||
db.freelist = newFreelist()
|
db.freelist = newFreelist(db.FreelistType)
|
||||||
if !db.hasSyncedFreelist() {
|
if !db.hasSyncedFreelist() {
|
||||||
// Reconstruct free list by scanning the DB.
|
// Reconstruct free list by scanning the DB.
|
||||||
db.freelist.readIDs(db.freepages())
|
db.freelist.readIDs(db.freepages())
|
||||||
|
@ -293,7 +309,7 @@ func (db *DB) loadFreelist() {
|
||||||
// Read free list from freelist page.
|
// Read free list from freelist page.
|
||||||
db.freelist.read(db.page(db.meta().freelist))
|
db.freelist.read(db.page(db.meta().freelist))
|
||||||
}
|
}
|
||||||
db.stats.FreePageN = len(db.freelist.ids)
|
db.stats.FreePageN = db.freelist.free_count()
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -454,8 +470,8 @@ func (db *DB) Close() error {
|
||||||
db.metalock.Lock()
|
db.metalock.Lock()
|
||||||
defer db.metalock.Unlock()
|
defer db.metalock.Unlock()
|
||||||
|
|
||||||
db.mmaplock.RLock()
|
db.mmaplock.Lock()
|
||||||
defer db.mmaplock.RUnlock()
|
defer db.mmaplock.Unlock()
|
||||||
|
|
||||||
return db.close()
|
return db.close()
|
||||||
}
|
}
|
||||||
|
@ -1007,6 +1023,13 @@ type Options struct {
|
||||||
// under normal operation, but requires a full database re-sync during recovery.
|
// under normal operation, but requires a full database re-sync during recovery.
|
||||||
NoFreelistSync bool
|
NoFreelistSync bool
|
||||||
|
|
||||||
|
// FreelistType sets the backend freelist type. There are two options. Array which is simple but endures
|
||||||
|
// dramatic performance degradation if database is large and framentation in freelist is common.
|
||||||
|
// The alternative one is using hashmap, it is faster in almost all circumstances
|
||||||
|
// but it doesn't guarantee that it offers the smallest page id available. In normal case it is safe.
|
||||||
|
// The default type is array
|
||||||
|
FreelistType FreelistType
|
||||||
|
|
||||||
// Open database in read-only mode. Uses flock(..., LOCK_SH |LOCK_NB) to
|
// Open database in read-only mode. Uses flock(..., LOCK_SH |LOCK_NB) to
|
||||||
// grab a shared lock (UNIX).
|
// grab a shared lock (UNIX).
|
||||||
ReadOnly bool
|
ReadOnly bool
|
||||||
|
@ -1038,6 +1061,7 @@ type Options struct {
|
||||||
var DefaultOptions = &Options{
|
var DefaultOptions = &Options{
|
||||||
Timeout: 0,
|
Timeout: 0,
|
||||||
NoGrowSync: false,
|
NoGrowSync: false,
|
||||||
|
FreelistType: FreelistArrayType,
|
||||||
}
|
}
|
||||||
|
|
||||||
// Stats represents statistics about the database.
|
// Stats represents statistics about the database.
|
||||||
|
|
4
vendor/github.com/coreos/bbolt/doc.go
generated
vendored
4
vendor/github.com/coreos/bbolt/doc.go
generated
vendored
|
@ -1,5 +1,5 @@
|
||||||
/*
|
/*
|
||||||
Package bolt implements a low-level key/value store in pure Go. It supports
|
package bbolt implements a low-level key/value store in pure Go. It supports
|
||||||
fully serializable transactions, ACID semantics, and lock-free MVCC with
|
fully serializable transactions, ACID semantics, and lock-free MVCC with
|
||||||
multiple readers and a single writer. Bolt can be used for projects that
|
multiple readers and a single writer. Bolt can be used for projects that
|
||||||
want a simple data store without the need to add large dependencies such as
|
want a simple data store without the need to add large dependencies such as
|
||||||
|
@ -41,4 +41,4 @@ point to different data or can point to invalid memory which will cause a panic.
|
||||||
|
|
||||||
|
|
||||||
*/
|
*/
|
||||||
package bolt
|
package bbolt
|
||||||
|
|
2
vendor/github.com/coreos/bbolt/errors.go
generated
vendored
2
vendor/github.com/coreos/bbolt/errors.go
generated
vendored
|
@ -1,4 +1,4 @@
|
||||||
package bolt
|
package bbolt
|
||||||
|
|
||||||
import "errors"
|
import "errors"
|
||||||
|
|
||||||
|
|
97
vendor/github.com/coreos/bbolt/freelist.go
generated
vendored
97
vendor/github.com/coreos/bbolt/freelist.go
generated
vendored
|
@ -1,4 +1,4 @@
|
||||||
package bolt
|
package bbolt
|
||||||
|
|
||||||
import (
|
import (
|
||||||
"fmt"
|
"fmt"
|
||||||
|
@ -14,22 +14,54 @@ type txPending struct {
|
||||||
lastReleaseBegin txid // beginning txid of last matching releaseRange
|
lastReleaseBegin txid // beginning txid of last matching releaseRange
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// pidSet holds the set of starting pgids which have the same span size
|
||||||
|
type pidSet map[pgid]struct{}
|
||||||
|
|
||||||
// freelist represents a list of all pages that are available for allocation.
|
// freelist represents a list of all pages that are available for allocation.
|
||||||
// It also tracks pages that have been freed but are still in use by open transactions.
|
// It also tracks pages that have been freed but are still in use by open transactions.
|
||||||
type freelist struct {
|
type freelist struct {
|
||||||
|
freelistType FreelistType // freelist type
|
||||||
ids []pgid // all free and available free page ids.
|
ids []pgid // all free and available free page ids.
|
||||||
allocs map[pgid]txid // mapping of txid that allocated a pgid.
|
allocs map[pgid]txid // mapping of txid that allocated a pgid.
|
||||||
pending map[txid]*txPending // mapping of soon-to-be free page ids by tx.
|
pending map[txid]*txPending // mapping of soon-to-be free page ids by tx.
|
||||||
cache map[pgid]bool // fast lookup of all free and pending page ids.
|
cache map[pgid]bool // fast lookup of all free and pending page ids.
|
||||||
|
freemaps map[uint64]pidSet // key is the size of continuous pages(span), value is a set which contains the starting pgids of same size
|
||||||
|
forwardMap map[pgid]uint64 // key is start pgid, value is its span size
|
||||||
|
backwardMap map[pgid]uint64 // key is end pgid, value is its span size
|
||||||
|
allocate func(txid txid, n int) pgid // the freelist allocate func
|
||||||
|
free_count func() int // the function which gives you free page number
|
||||||
|
mergeSpans func(ids pgids) // the mergeSpan func
|
||||||
|
getFreePageIDs func() []pgid // get free pgids func
|
||||||
|
readIDs func(pgids []pgid) // readIDs func reads list of pages and init the freelist
|
||||||
}
|
}
|
||||||
|
|
||||||
// newFreelist returns an empty, initialized freelist.
|
// newFreelist returns an empty, initialized freelist.
|
||||||
func newFreelist() *freelist {
|
func newFreelist(freelistType FreelistType) *freelist {
|
||||||
return &freelist{
|
f := &freelist{
|
||||||
|
freelistType: freelistType,
|
||||||
allocs: make(map[pgid]txid),
|
allocs: make(map[pgid]txid),
|
||||||
pending: make(map[txid]*txPending),
|
pending: make(map[txid]*txPending),
|
||||||
cache: make(map[pgid]bool),
|
cache: make(map[pgid]bool),
|
||||||
|
freemaps: make(map[uint64]pidSet),
|
||||||
|
forwardMap: make(map[pgid]uint64),
|
||||||
|
backwardMap: make(map[pgid]uint64),
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if freelistType == FreelistMapType {
|
||||||
|
f.allocate = f.hashmapAllocate
|
||||||
|
f.free_count = f.hashmapFreeCount
|
||||||
|
f.mergeSpans = f.hashmapMergeSpans
|
||||||
|
f.getFreePageIDs = f.hashmapGetFreePageIDs
|
||||||
|
f.readIDs = f.hashmapReadIDs
|
||||||
|
} else {
|
||||||
|
f.allocate = f.arrayAllocate
|
||||||
|
f.free_count = f.arrayFreeCount
|
||||||
|
f.mergeSpans = f.arrayMergeSpans
|
||||||
|
f.getFreePageIDs = f.arrayGetFreePageIDs
|
||||||
|
f.readIDs = f.arrayReadIDs
|
||||||
|
}
|
||||||
|
|
||||||
|
return f
|
||||||
}
|
}
|
||||||
|
|
||||||
// size returns the size of the page after serialization.
|
// size returns the size of the page after serialization.
|
||||||
|
@ -47,8 +79,8 @@ func (f *freelist) count() int {
|
||||||
return f.free_count() + f.pending_count()
|
return f.free_count() + f.pending_count()
|
||||||
}
|
}
|
||||||
|
|
||||||
// free_count returns count of free pages
|
// arrayFreeCount returns count of free pages(array version)
|
||||||
func (f *freelist) free_count() int {
|
func (f *freelist) arrayFreeCount() int {
|
||||||
return len(f.ids)
|
return len(f.ids)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -69,12 +101,12 @@ func (f *freelist) copyall(dst []pgid) {
|
||||||
m = append(m, txp.ids...)
|
m = append(m, txp.ids...)
|
||||||
}
|
}
|
||||||
sort.Sort(m)
|
sort.Sort(m)
|
||||||
mergepgids(dst, f.ids, m)
|
mergepgids(dst, f.getFreePageIDs(), m)
|
||||||
}
|
}
|
||||||
|
|
||||||
// allocate returns the starting page id of a contiguous list of pages of a given size.
|
// arrayAllocate returns the starting page id of a contiguous list of pages of a given size.
|
||||||
// If a contiguous block cannot be found then 0 is returned.
|
// If a contiguous block cannot be found then 0 is returned.
|
||||||
func (f *freelist) allocate(txid txid, n int) pgid {
|
func (f *freelist) arrayAllocate(txid txid, n int) pgid {
|
||||||
if len(f.ids) == 0 {
|
if len(f.ids) == 0 {
|
||||||
return 0
|
return 0
|
||||||
}
|
}
|
||||||
|
@ -160,8 +192,7 @@ func (f *freelist) release(txid txid) {
|
||||||
delete(f.pending, tid)
|
delete(f.pending, tid)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
sort.Sort(m)
|
f.mergeSpans(m)
|
||||||
f.ids = pgids(f.ids).merge(m)
|
|
||||||
}
|
}
|
||||||
|
|
||||||
// releaseRange moves pending pages allocated within an extent [begin,end] to the free list.
|
// releaseRange moves pending pages allocated within an extent [begin,end] to the free list.
|
||||||
|
@ -194,8 +225,7 @@ func (f *freelist) releaseRange(begin, end txid) {
|
||||||
delete(f.pending, tid)
|
delete(f.pending, tid)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
sort.Sort(m)
|
f.mergeSpans(m)
|
||||||
f.ids = pgids(f.ids).merge(m)
|
|
||||||
}
|
}
|
||||||
|
|
||||||
// rollback removes the pages from a given pending tx.
|
// rollback removes the pages from a given pending tx.
|
||||||
|
@ -222,8 +252,7 @@ func (f *freelist) rollback(txid txid) {
|
||||||
}
|
}
|
||||||
// Remove pages from pending list and mark as free if allocated by txid.
|
// Remove pages from pending list and mark as free if allocated by txid.
|
||||||
delete(f.pending, txid)
|
delete(f.pending, txid)
|
||||||
sort.Sort(m)
|
f.mergeSpans(m)
|
||||||
f.ids = pgids(f.ids).merge(m)
|
|
||||||
}
|
}
|
||||||
|
|
||||||
// freed returns whether a given page is in the free list.
|
// freed returns whether a given page is in the free list.
|
||||||
|
@ -249,21 +278,25 @@ func (f *freelist) read(p *page) {
|
||||||
f.ids = nil
|
f.ids = nil
|
||||||
} else {
|
} else {
|
||||||
ids := ((*[maxAllocSize]pgid)(unsafe.Pointer(&p.ptr)))[idx : idx+count]
|
ids := ((*[maxAllocSize]pgid)(unsafe.Pointer(&p.ptr)))[idx : idx+count]
|
||||||
f.ids = make([]pgid, len(ids))
|
|
||||||
copy(f.ids, ids)
|
|
||||||
|
|
||||||
|
// copy the ids, so we don't modify on the freelist page directly
|
||||||
|
idsCopy := make([]pgid, count)
|
||||||
|
copy(idsCopy, ids)
|
||||||
// Make sure they're sorted.
|
// Make sure they're sorted.
|
||||||
sort.Sort(pgids(f.ids))
|
sort.Sort(pgids(idsCopy))
|
||||||
}
|
|
||||||
|
|
||||||
// Rebuild the page cache.
|
f.readIDs(idsCopy)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// arrayReadIDs initializes the freelist from a given list of ids.
|
||||||
|
func (f *freelist) arrayReadIDs(ids []pgid) {
|
||||||
|
f.ids = ids
|
||||||
f.reindex()
|
f.reindex()
|
||||||
}
|
}
|
||||||
|
|
||||||
// read initializes the freelist from a given list of ids.
|
func (f *freelist) arrayGetFreePageIDs() []pgid {
|
||||||
func (f *freelist) readIDs(ids []pgid) {
|
return f.ids
|
||||||
f.ids = ids
|
|
||||||
f.reindex()
|
|
||||||
}
|
}
|
||||||
|
|
||||||
// write writes the page ids onto a freelist page. All free and pending ids are
|
// write writes the page ids onto a freelist page. All free and pending ids are
|
||||||
|
@ -307,22 +340,20 @@ func (f *freelist) reload(p *page) {
|
||||||
// Check each page in the freelist and build a new available freelist
|
// Check each page in the freelist and build a new available freelist
|
||||||
// with any pages not in the pending lists.
|
// with any pages not in the pending lists.
|
||||||
var a []pgid
|
var a []pgid
|
||||||
for _, id := range f.ids {
|
for _, id := range f.getFreePageIDs() {
|
||||||
if !pcache[id] {
|
if !pcache[id] {
|
||||||
a = append(a, id)
|
a = append(a, id)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
f.ids = a
|
|
||||||
|
|
||||||
// Once the available list is rebuilt then rebuild the free cache so that
|
f.readIDs(a)
|
||||||
// it includes the available and pending free pages.
|
|
||||||
f.reindex()
|
|
||||||
}
|
}
|
||||||
|
|
||||||
// reindex rebuilds the free cache based on available and pending free lists.
|
// reindex rebuilds the free cache based on available and pending free lists.
|
||||||
func (f *freelist) reindex() {
|
func (f *freelist) reindex() {
|
||||||
f.cache = make(map[pgid]bool, len(f.ids))
|
ids := f.getFreePageIDs()
|
||||||
for _, id := range f.ids {
|
f.cache = make(map[pgid]bool, len(ids))
|
||||||
|
for _, id := range ids {
|
||||||
f.cache[id] = true
|
f.cache[id] = true
|
||||||
}
|
}
|
||||||
for _, txp := range f.pending {
|
for _, txp := range f.pending {
|
||||||
|
@ -331,3 +362,9 @@ func (f *freelist) reindex() {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// arrayMergeSpans try to merge list of pages(represented by pgids) with existing spans but using array
|
||||||
|
func (f *freelist) arrayMergeSpans(ids pgids) {
|
||||||
|
sort.Sort(ids)
|
||||||
|
f.ids = pgids(f.ids).merge(ids)
|
||||||
|
}
|
||||||
|
|
178
vendor/github.com/coreos/bbolt/freelist_hmap.go
generated
vendored
Normal file
178
vendor/github.com/coreos/bbolt/freelist_hmap.go
generated
vendored
Normal file
|
@ -0,0 +1,178 @@
|
||||||
|
package bbolt
|
||||||
|
|
||||||
|
import "sort"
|
||||||
|
|
||||||
|
// hashmapFreeCount returns count of free pages(hashmap version)
|
||||||
|
func (f *freelist) hashmapFreeCount() int {
|
||||||
|
// use the forwardmap to get the total count
|
||||||
|
count := 0
|
||||||
|
for _, size := range f.forwardMap {
|
||||||
|
count += int(size)
|
||||||
|
}
|
||||||
|
return count
|
||||||
|
}
|
||||||
|
|
||||||
|
// hashmapAllocate serves the same purpose as arrayAllocate, but use hashmap as backend
|
||||||
|
func (f *freelist) hashmapAllocate(txid txid, n int) pgid {
|
||||||
|
if n == 0 {
|
||||||
|
return 0
|
||||||
|
}
|
||||||
|
|
||||||
|
// if we have a exact size match just return short path
|
||||||
|
if bm, ok := f.freemaps[uint64(n)]; ok {
|
||||||
|
for pid := range bm {
|
||||||
|
// remove the span
|
||||||
|
f.delSpan(pid, uint64(n))
|
||||||
|
|
||||||
|
f.allocs[pid] = txid
|
||||||
|
|
||||||
|
for i := pgid(0); i < pgid(n); i++ {
|
||||||
|
delete(f.cache, pid+pgid(i))
|
||||||
|
}
|
||||||
|
return pid
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// lookup the map to find larger span
|
||||||
|
for size, bm := range f.freemaps {
|
||||||
|
if size < uint64(n) {
|
||||||
|
continue
|
||||||
|
}
|
||||||
|
|
||||||
|
for pid := range bm {
|
||||||
|
// remove the initial
|
||||||
|
f.delSpan(pid, uint64(size))
|
||||||
|
|
||||||
|
f.allocs[pid] = txid
|
||||||
|
|
||||||
|
remain := size - uint64(n)
|
||||||
|
|
||||||
|
// add remain span
|
||||||
|
f.addSpan(pid+pgid(n), remain)
|
||||||
|
|
||||||
|
for i := pgid(0); i < pgid(n); i++ {
|
||||||
|
delete(f.cache, pid+pgid(i))
|
||||||
|
}
|
||||||
|
return pid
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
return 0
|
||||||
|
}
|
||||||
|
|
||||||
|
// hashmapReadIDs reads pgids as input an initial the freelist(hashmap version)
|
||||||
|
func (f *freelist) hashmapReadIDs(pgids []pgid) {
|
||||||
|
f.init(pgids)
|
||||||
|
|
||||||
|
// Rebuild the page cache.
|
||||||
|
f.reindex()
|
||||||
|
}
|
||||||
|
|
||||||
|
// hashmapGetFreePageIDs returns the sorted free page ids
|
||||||
|
func (f *freelist) hashmapGetFreePageIDs() []pgid {
|
||||||
|
count := f.free_count()
|
||||||
|
if count == 0 {
|
||||||
|
return nil
|
||||||
|
}
|
||||||
|
|
||||||
|
m := make([]pgid, 0, count)
|
||||||
|
for start, size := range f.forwardMap {
|
||||||
|
for i := 0; i < int(size); i++ {
|
||||||
|
m = append(m, start+pgid(i))
|
||||||
|
}
|
||||||
|
}
|
||||||
|
sort.Sort(pgids(m))
|
||||||
|
|
||||||
|
return m
|
||||||
|
}
|
||||||
|
|
||||||
|
// hashmapMergeSpans try to merge list of pages(represented by pgids) with existing spans
|
||||||
|
func (f *freelist) hashmapMergeSpans(ids pgids) {
|
||||||
|
for _, id := range ids {
|
||||||
|
// try to see if we can merge and update
|
||||||
|
f.mergeWithExistingSpan(id)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// mergeWithExistingSpan merges pid to the existing free spans, try to merge it backward and forward
|
||||||
|
func (f *freelist) mergeWithExistingSpan(pid pgid) {
|
||||||
|
prev := pid - 1
|
||||||
|
next := pid + 1
|
||||||
|
|
||||||
|
preSize, mergeWithPrev := f.backwardMap[prev]
|
||||||
|
nextSize, mergeWithNext := f.forwardMap[next]
|
||||||
|
newStart := pid
|
||||||
|
newSize := uint64(1)
|
||||||
|
|
||||||
|
if mergeWithPrev {
|
||||||
|
//merge with previous span
|
||||||
|
start := prev + 1 - pgid(preSize)
|
||||||
|
f.delSpan(start, preSize)
|
||||||
|
|
||||||
|
newStart -= pgid(preSize)
|
||||||
|
newSize += preSize
|
||||||
|
}
|
||||||
|
|
||||||
|
if mergeWithNext {
|
||||||
|
// merge with next span
|
||||||
|
f.delSpan(next, nextSize)
|
||||||
|
newSize += nextSize
|
||||||
|
}
|
||||||
|
|
||||||
|
f.addSpan(newStart, newSize)
|
||||||
|
}
|
||||||
|
|
||||||
|
func (f *freelist) addSpan(start pgid, size uint64) {
|
||||||
|
f.backwardMap[start-1+pgid(size)] = size
|
||||||
|
f.forwardMap[start] = size
|
||||||
|
if _, ok := f.freemaps[size]; !ok {
|
||||||
|
f.freemaps[size] = make(map[pgid]struct{})
|
||||||
|
}
|
||||||
|
|
||||||
|
f.freemaps[size][start] = struct{}{}
|
||||||
|
}
|
||||||
|
|
||||||
|
func (f *freelist) delSpan(start pgid, size uint64) {
|
||||||
|
delete(f.forwardMap, start)
|
||||||
|
delete(f.backwardMap, start+pgid(size-1))
|
||||||
|
delete(f.freemaps[size], start)
|
||||||
|
if len(f.freemaps[size]) == 0 {
|
||||||
|
delete(f.freemaps, size)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// initial from pgids using when use hashmap version
|
||||||
|
// pgids must be sorted
|
||||||
|
func (f *freelist) init(pgids []pgid) {
|
||||||
|
if len(pgids) == 0 {
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
|
size := uint64(1)
|
||||||
|
start := pgids[0]
|
||||||
|
|
||||||
|
if !sort.SliceIsSorted([]pgid(pgids), func(i, j int) bool { return pgids[i] < pgids[j] }) {
|
||||||
|
panic("pgids not sorted")
|
||||||
|
}
|
||||||
|
|
||||||
|
f.freemaps = make(map[uint64]pidSet)
|
||||||
|
f.forwardMap = make(map[pgid]uint64)
|
||||||
|
f.backwardMap = make(map[pgid]uint64)
|
||||||
|
|
||||||
|
for i := 1; i < len(pgids); i++ {
|
||||||
|
// continuous page
|
||||||
|
if pgids[i] == pgids[i-1]+1 {
|
||||||
|
size++
|
||||||
|
} else {
|
||||||
|
f.addSpan(start, size)
|
||||||
|
|
||||||
|
size = 1
|
||||||
|
start = pgids[i]
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// init the tail
|
||||||
|
if size != 0 && start != 0 {
|
||||||
|
f.addSpan(start, size)
|
||||||
|
}
|
||||||
|
}
|
2
vendor/github.com/coreos/bbolt/node.go
generated
vendored
2
vendor/github.com/coreos/bbolt/node.go
generated
vendored
|
@ -1,4 +1,4 @@
|
||||||
package bolt
|
package bbolt
|
||||||
|
|
||||||
import (
|
import (
|
||||||
"bytes"
|
"bytes"
|
||||||
|
|
2
vendor/github.com/coreos/bbolt/page.go
generated
vendored
2
vendor/github.com/coreos/bbolt/page.go
generated
vendored
|
@ -1,4 +1,4 @@
|
||||||
package bolt
|
package bbolt
|
||||||
|
|
||||||
import (
|
import (
|
||||||
"fmt"
|
"fmt"
|
||||||
|
|
2
vendor/github.com/coreos/bbolt/tx.go
generated
vendored
2
vendor/github.com/coreos/bbolt/tx.go
generated
vendored
|
@ -1,4 +1,4 @@
|
||||||
package bolt
|
package bbolt
|
||||||
|
|
||||||
import (
|
import (
|
||||||
"fmt"
|
"fmt"
|
||||||
|
|
28
vendor/github.com/djherbis/times/.travis.sh
generated
vendored
Normal file
28
vendor/github.com/djherbis/times/.travis.sh
generated
vendored
Normal file
|
@ -0,0 +1,28 @@
|
||||||
|
#!/bin/bash
|
||||||
|
set -e
|
||||||
|
|
||||||
|
script() {
|
||||||
|
if [ "${TRAVIS_PULL_REQUEST}" == "false" ];
|
||||||
|
then
|
||||||
|
COVERALLS_PARALLEL=true
|
||||||
|
|
||||||
|
if [ ! -z "$JS" ];
|
||||||
|
then
|
||||||
|
bash js.cover.sh
|
||||||
|
else
|
||||||
|
go test -covermode=count -coverprofile=profile.cov
|
||||||
|
fi
|
||||||
|
|
||||||
|
go get github.com/axw/gocov/gocov github.com/mattn/goveralls golang.org/x/tools/cmd/cover
|
||||||
|
$HOME/gopath/bin/goveralls --coverprofile=profile.cov -service=travis-ci
|
||||||
|
fi
|
||||||
|
|
||||||
|
if [ -z "$JS" ];
|
||||||
|
then
|
||||||
|
go get golang.org/x/lint/golint && golint ./...
|
||||||
|
go vet
|
||||||
|
go test -bench=.* -v ./...
|
||||||
|
fi
|
||||||
|
}
|
||||||
|
|
||||||
|
"$@"
|
31
vendor/github.com/djherbis/times/.travis.yml
generated
vendored
31
vendor/github.com/djherbis/times/.travis.yml
generated
vendored
|
@ -1,22 +1,19 @@
|
||||||
language: go
|
language: go
|
||||||
go:
|
matrix:
|
||||||
- tip
|
include:
|
||||||
before_install:
|
- os: linux
|
||||||
- go get -u golang.org/x/lint/golint
|
go: 1.11
|
||||||
- go get github.com/axw/gocov/gocov
|
- os: linux
|
||||||
- go get github.com/mattn/goveralls
|
go: 1.11
|
||||||
- if ! go get code.google.com/p/go.tools/cmd/cover; then go get golang.org/x/tools/cmd/cover;
|
env:
|
||||||
fi
|
- JS=1
|
||||||
script:
|
- os: osx
|
||||||
- '[ "${TRAVIS_PULL_REQUEST}" != "false" ] || $HOME/gopath/bin/goveralls -service=travis-ci
|
go: 1.11
|
||||||
-repotoken $COVERALLS_TOKEN'
|
- os: windows
|
||||||
- "$HOME/gopath/bin/golint ./..."
|
go: 1.11
|
||||||
- go vet
|
script: bash .travis.sh script
|
||||||
- go test -bench=.* -v ./...
|
|
||||||
notifications:
|
notifications:
|
||||||
|
webhooks: https://coveralls.io/webhook
|
||||||
email:
|
email:
|
||||||
on_success: never
|
on_success: never
|
||||||
on_failure: change
|
on_failure: change
|
||||||
env:
|
|
||||||
global:
|
|
||||||
secure: JLdvT4dl+oifYzbQN5I0G8mZi1KVj3D3zTC8N3D9eLEvHY26QggS2I6M5CNAYkbGSB2RDp7gZLHui8zVzvudD5GuxP2xZe+WN4+n9lf+jLnCuB77ZjKCuDa1+Wg/o466L4PK0BaiTQahbk9qsDNOdfTzXXLEnqBDo1WtvLJ1mn02pL5Wyt3aAA4yeK3z7eUYFNxyi/KJ22bwhjIv6Qa9RHT7ZfR6x9YQSGeLZIWPUx5S+vmySd7sM7gRTw+lRmR/i0PNMHjlOKoyedAT8YLAWX28xgPtc7E5j+pBm6ZmDcN79tTelhiAS9uifEKkdsugZZjfnLBl9gks19bmXP4mxUIo1iKQgIbKVs7R/QMdH7RXW+isfQP/vtk6SNC86os+r7tSJ1EOtF1cZfQ7H4o2RevA3VVTVZ+45gnrK8v00eckbLmsGGho7RGORIt+JGvD0oe84dXdk/lFtBTzWhOJn2Ujlm6L3z3r/YMN2CGFfH5JGpsUKJh1uRzJ5MPqkdxRwcGrtN4DGC1L8tRMfYPo06dQxa8p4TnbYQSZ6qwuVZMMcNvr9c/edwLizMh9KXivPodmHpLAMAUPSyWLtF8pp305DUhajpRsUEvTvs082KJAK4bUNE+AxRIBwtuB0Z2r0DpgfVwAUIXh42l9RDxEA1mwUyX2EKolyRqxQGPv9NQ=
|
|
||||||
|
|
16
vendor/github.com/djherbis/times/README.md
generated
vendored
16
vendor/github.com/djherbis/times/README.md
generated
vendored
|
@ -21,7 +21,7 @@ package main
|
||||||
import (
|
import (
|
||||||
"log"
|
"log"
|
||||||
|
|
||||||
"github.com/djherbis/times"
|
"gopkg.in/djherbis/times.v1"
|
||||||
)
|
)
|
||||||
|
|
||||||
func main() {
|
func main() {
|
||||||
|
@ -45,12 +45,12 @@ func main() {
|
||||||
|
|
||||||
Supported Times
|
Supported Times
|
||||||
------------
|
------------
|
||||||
| | windows | linux | solaris | dragonfly | nacl | freebsd | darwin | netbsd | openbsd | plan9 |
|
| | windows | linux | solaris | dragonfly | nacl | freebsd | darwin | netbsd | openbsd | plan9 | js |
|
||||||
|:-----:|:-------:|:-----:|:-------:|:---------:|:------:|:-------:|:----:|:------:|:-------:|:-----:|
|
|:-----:|:-------:|:-----:|:-------:|:---------:|:------:|:-------:|:----:|:------:|:-------:|:-----:|:-----:|
|
||||||
| atime | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ |
|
| atime | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ |
|
||||||
| mtime | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ |
|
| mtime | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ |
|
||||||
| ctime | ✓* | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | |
|
| ctime | ✓* | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | | ✓ |
|
||||||
| btime | ✓ | | | | | ✓ | ✓| ✓ |
|
| btime | ✓ | | | | | ✓ | ✓| ✓ | |
|
||||||
|
|
||||||
* Windows XP does not have ChangeTime so HasChangeTime = false,
|
* Windows XP does not have ChangeTime so HasChangeTime = false,
|
||||||
however Vista onward does have ChangeTime so Timespec.HasChangeTime() will
|
however Vista onward does have ChangeTime so Timespec.HasChangeTime() will
|
||||||
|
@ -60,5 +60,5 @@ only return false on those platforms when the syscall used to obtain them fails.
|
||||||
Installation
|
Installation
|
||||||
------------
|
------------
|
||||||
```sh
|
```sh
|
||||||
go get github.com/djherbis/times
|
go get gopkg.in/djherbis/times.v1
|
||||||
```
|
```
|
||||||
|
|
3
vendor/github.com/djherbis/times/ctime_windows.go
generated
vendored
3
vendor/github.com/djherbis/times/ctime_windows.go
generated
vendored
|
@ -140,10 +140,9 @@ func getFileInformationByHandleEx(handle syscall.Handle, data *fileBasicInfo) (e
|
||||||
|
|
||||||
r1, _, e1 := syscall.Syscall6(procGetFileInformationByHandleEx.Addr(), 4, uintptr(handle), uintptr(fileBasicInfoClass), uintptr(unsafe.Pointer(data)), unsafe.Sizeof(*data), 0, 0)
|
r1, _, e1 := syscall.Syscall6(procGetFileInformationByHandleEx.Addr(), 4, uintptr(handle), uintptr(fileBasicInfoClass), uintptr(unsafe.Pointer(data)), unsafe.Sizeof(*data), 0, 0)
|
||||||
if r1 == 0 {
|
if r1 == 0 {
|
||||||
|
err = syscall.EINVAL
|
||||||
if e1 != 0 {
|
if e1 != 0 {
|
||||||
err = error(e1)
|
err = error(e1)
|
||||||
} else {
|
|
||||||
err = syscall.EINVAL
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
return
|
return
|
||||||
|
|
Some files were not shown because too many files have changed in this diff Show More
Loading…
Reference in New Issue
Block a user