diff --git a/go.mod b/go.mod index 8bda5f61..949c1d87 100644 --- a/go.mod +++ b/go.mod @@ -1,9 +1,10 @@ module code.cloudfoundry.org/tps -go 1.26.0 +go 1.26.2 require ( - code.cloudfoundry.org/bbs v0.0.0-20251029140956-4e01df8b0ac1 + code.cloudfoundry.org/bbs v1.11.0 + code.cloudfoundry.org/bbs/models v1.7.0 code.cloudfoundry.org/clock v1.76.0 code.cloudfoundry.org/debugserver v0.103.0 code.cloudfoundry.org/diego-logging-client v0.113.0 @@ -20,7 +21,9 @@ require ( ) require ( - code.cloudfoundry.org/cfhttp/v2 v2.0.1-0.20210513172332-4c5ee488a657 // indirect + code.cloudfoundry.org/bbs/encryption v1.9.0 // indirect + code.cloudfoundry.org/bbs/format v1.9.0 // indirect + code.cloudfoundry.org/cfhttp/v2 v2.83.0 // indirect code.cloudfoundry.org/durationjson v0.78.0 // indirect code.cloudfoundry.org/go-diodes v0.0.0-20260629064500-85da08bf73ac // indirect code.cloudfoundry.org/go-loggregator/v9 v9.2.1 // indirect @@ -41,7 +44,7 @@ require ( github.com/pkg/errors v0.9.1 // indirect github.com/square/certstrap v1.3.0 // indirect github.com/tedsuo/rata v1.0.0 // indirect - github.com/vito/go-sse v1.0.0 // indirect + github.com/vito/go-sse v1.1.3 // indirect go.step.sm/crypto v0.84.1 // indirect go.yaml.in/yaml/v3 v3.0.4 // indirect golang.org/x/crypto v0.53.0 // indirect diff --git a/go.sum b/go.sum index beeba216..4c6c63a0 100644 --- a/go.sum +++ b/go.sum @@ -592,10 +592,16 @@ cloud.google.com/go/workflows v1.7.0/go.mod h1:JhSrZuVZWuiDfKEFxU0/F1PQjmpnpcoIS cloud.google.com/go/workflows v1.8.0/go.mod h1:ysGhmEajwZxGn1OhGOGKsTXc5PyxOc0vfKf5Af+to4M= cloud.google.com/go/workflows v1.9.0/go.mod h1:ZGkj1aFIOd9c8Gerkjjq7OW7I5+l6cSvT3ujaO/WwSA= cloud.google.com/go/workflows v1.10.0/go.mod h1:fZ8LmRmZQWacon9UCX1r/g/DfAXx5VcPALq2CxzdePw= -code.cloudfoundry.org/bbs v0.0.0-20251029140956-4e01df8b0ac1 h1:I8GHH9o33/lZm2lq4qqXYpnPetBmVLMYQL7Re8oc/DY= -code.cloudfoundry.org/bbs v0.0.0-20251029140956-4e01df8b0ac1/go.mod h1:XKlGVVXFi5EcHHMPzw3xgONK9PeEZuUbIC43XNwxD10= -code.cloudfoundry.org/cfhttp/v2 v2.0.1-0.20210513172332-4c5ee488a657 h1:8rnhkeAe8Bnx+8r3unO++S3syBw8P22qPbw3LLFWEoc= -code.cloudfoundry.org/cfhttp/v2 v2.0.1-0.20210513172332-4c5ee488a657/go.mod h1:Fwt0o/haXfwgOHMom4AM96pXCVw9EAiIcSsPb8hWK9s= +code.cloudfoundry.org/bbs v1.11.0 h1:w8Q+ORAmTW+nmHwWROrfCqtM5U2p7rOfmIDNqWJLQKM= +code.cloudfoundry.org/bbs v1.11.0/go.mod h1:AZp+BWN9K/9A5KiQ7KT+F5V8nWDkBFN4ieGAg40OFXI= +code.cloudfoundry.org/bbs/encryption v1.9.0 h1:1IiWKO4nqJonCi0JeoIVobPsTE8FRhbB9Fq1MRTikEA= +code.cloudfoundry.org/bbs/encryption v1.9.0/go.mod h1:4o0NH8H9O19jmxSe7bV032LR7crwgZOfjPYwU8sSsAM= +code.cloudfoundry.org/bbs/format v1.9.0 h1:VR52K4jo/UD9ryiPEM8Y2JnC4PEPW7OYT4pyTpmOEJc= +code.cloudfoundry.org/bbs/format v1.9.0/go.mod h1:iheQ6y6V5iK+hfYKWbjJwLreBbZ9hoJWoaclcyWB3lA= +code.cloudfoundry.org/bbs/models v1.7.0 h1:Tqip2Q4Is0rsCWJD+Wd6zI8Q+2oyaB8BBBydSeCsQuc= +code.cloudfoundry.org/bbs/models v1.7.0/go.mod h1:NlBOq23o68bIv1fn0Ji+D4PwKqKIEKx12C3O6dgQg5w= +code.cloudfoundry.org/cfhttp/v2 v2.83.0 h1:XP43/VVeA8+3He1Qp4yqXwAwZkgBM2tx3VIX9gYzpzQ= +code.cloudfoundry.org/cfhttp/v2 v2.83.0/go.mod h1:OAYoWcMpQzzkMrqGNrL4Lj1u07jelqdtNT56CRu/X8I= code.cloudfoundry.org/clock v1.76.0 h1:guwRh0ZjP7g/dj+j2CITvh9/0gMa8bNaw7WMAjd78dU= code.cloudfoundry.org/clock v1.76.0/go.mod h1:1hr8418A6RkZpIz103qhsqiRSfbIKovz5sct6lkJ0VY= code.cloudfoundry.org/debugserver v0.103.0 h1:+X5rfFbkooqz67Ig4Q6wufHuSdQ2zgVoDRW5VrOFCnE= @@ -702,8 +708,9 @@ github.com/envoyproxy/protoc-gen-validate v0.10.1/go.mod h1:DRjgyB0I43LtJapqN6Ni github.com/fogleman/gg v1.2.1-0.20190220221249-0403632d5b90/go.mod h1:R/bRT+9gY/C5z7JzPU0zXsXHKM4/ayA+zqcVNZzPa1k= github.com/fogleman/gg v1.3.0/go.mod h1:R/bRT+9gY/C5z7JzPU0zXsXHKM4/ayA+zqcVNZzPa1k= github.com/fsnotify/fsnotify v1.4.7/go.mod h1:jwhsz4b93w/PPRr/qN1Yymfu8t87LnFCMoQvtojpjFo= -github.com/fsnotify/fsnotify v1.4.9 h1:hsms1Qyu0jgnwNXIxa+/V/PDsU6CfLf6CNO8H7IWoS4= github.com/fsnotify/fsnotify v1.4.9/go.mod h1:znqG4EE+3YCdAaPaxE2ZRY/06pZUdp0tY4IgpuI1SZQ= +github.com/fsnotify/fsnotify v1.7.0 h1:8JEhPFa5W2WU7YfeZzPNqzMP6Lwt7L2715Ggo0nosvA= +github.com/fsnotify/fsnotify v1.7.0/go.mod h1:40Bi/Hjc2AVfZrqy+aj+yEI+/bRxZnMJyTJwOpGvigM= github.com/ghodss/yaml v1.0.0/go.mod h1:4dBDuWmgqj2HViK6kFavaiC9ZROes6MMH2rRYeMEF04= github.com/gkampitakis/ciinfo v0.3.2 h1:JcuOPk8ZU7nZQjdUhctuhQofk7BGHuIy0c9Ez8BNhXs= github.com/gkampitakis/ciinfo v0.3.2/go.mod h1:1NIwaOcFChN4fa/B0hEBdAb6npDlFL8Bwx4dfRLRqAo= @@ -729,14 +736,12 @@ github.com/go-logr/stdr v1.2.2 h1:hSWxHoqTgW2S2qGc0LTAI563KZ5YKYRhT3MFKZMbjag= github.com/go-logr/stdr v1.2.2/go.mod h1:mMo/vtBO5dYbehREoey6XUKy/eSumjCCveDpRre4VKE= github.com/go-pdf/fpdf v0.5.0/go.mod h1:HzcnA+A23uwogo0tp9yU+l3V+KXhiESpt1PMayhOh5M= github.com/go-pdf/fpdf v0.6.0/go.mod h1:HzcnA+A23uwogo0tp9yU+l3V+KXhiESpt1PMayhOh5M= -github.com/go-sql-driver/mysql v1.10.0 h1:Q+1LV8DkHJvSYAdR83XzuhDaTykuDx0l6fkXxoWCWfw= -github.com/go-sql-driver/mysql v1.10.0/go.mod h1:M+cqaI7+xxXGG9swrdeUIoPG3Y3KCkF0pZej+SK+nWk= github.com/go-task/slim-sprig v0.0.0-20210107165309-348f09dbbbc0/go.mod h1:fyg7847qk6SyHyPtNmDHnmrv/HOrqktSC+C9fM+CJOE= github.com/go-task/slim-sprig v0.0.0-20230315185526-52ccab3ef572/go.mod h1:9Pwr4B2jHnOSGXyyzV8ROjYa2ojvAY6HCGYYfMoC3Ls= github.com/go-task/slim-sprig/v3 v3.0.0 h1:sUs3vkvUymDpBKi3qH1YSqBQk9+9D/8M2mN1vB6EwHI= github.com/go-task/slim-sprig/v3 v3.0.0/go.mod h1:W848ghGpv3Qj3dhTPRyJypKRiqCdHZiAzKg9hl15HA8= -github.com/go-test/deep v1.1.0 h1:WOcxcdHcvdgThNXjw0t76K42FXTU7HpNQWHpA2HHNlg= -github.com/go-test/deep v1.1.0/go.mod h1:5C2ZWiW0ErCdrYzpqxLbTX7MG14M9iiw8DgHncVwcsE= +github.com/go-test/deep v1.1.1 h1:0r/53hagsehfO4bzD2Pgr/+RgHqhmf+k1Bpse2cTu1U= +github.com/go-test/deep v1.1.1/go.mod h1:5C2ZWiW0ErCdrYzpqxLbTX7MG14M9iiw8DgHncVwcsE= github.com/goccy/go-json v0.9.11/go.mod h1:6MelG93GURQebXPDq3khkgXZkazVtN9CRI+MGFi0w8I= github.com/goccy/go-yaml v1.18.0 h1:8W7wMFS12Pcas7KU+VVkaiCng+kG8QiFeFwzFb+rwuw= github.com/goccy/go-yaml v1.18.0/go.mod h1:XBurs7gK8ATbW4ZPGKgcbrY1Br56PdM69F7LkFRi1kA= @@ -855,14 +860,6 @@ github.com/hpcloud/tail v1.0.0/go.mod h1:ab1qPbhIpdTxEkNHXyeSf5vhxWSCs/tWer42PpO github.com/iancoleman/strcase v0.2.0/go.mod h1:iwCmte+B7n89clKwxIoIXy/HfoL7AsD47ZCWhYzw7ho= github.com/ianlancetaylor/demangle v0.0.0-20181102032728-5e5cf60278f6/go.mod h1:aSSvb/t6k1mPoxDqO4vJh6VOCGPwU4O0C2/Eqndh1Sc= github.com/ianlancetaylor/demangle v0.0.0-20200824232613-28f6c0f3b639/go.mod h1:aSSvb/t6k1mPoxDqO4vJh6VOCGPwU4O0C2/Eqndh1Sc= -github.com/jackc/pgpassfile v1.0.0 h1:/6Hmqy13Ss2zCq62VdNG8tM1wchn8zjSGOBJ6icpsIM= -github.com/jackc/pgpassfile v1.0.0/go.mod h1:CEx0iS5ambNFdcRtxPj5JhEz+xB6uRky5eyVu/W2HEg= -github.com/jackc/pgservicefile v0.0.0-20240606120523-5a60cdf6a761 h1:iCEnooe7UlwOQYpKFhBabPMi4aNAfoODPEFNiAnClxo= -github.com/jackc/pgservicefile v0.0.0-20240606120523-5a60cdf6a761/go.mod h1:5TJZWKEWniPve33vlWYSoGYefn3gLQRzjfDlhSJ9ZKM= -github.com/jackc/pgx/v5 v5.10.0 h1:VhSvgU2jSli8o3AqIEOTJr7rZwAEUVo4E4XhR94Zfr0= -github.com/jackc/pgx/v5 v5.10.0/go.mod h1:mal1tBGAFfLHvZzaYh77YS/eC6IX9OWbRV1QIIM0Jn4= -github.com/jackc/puddle/v2 v2.2.2 h1:PR8nw+E/1w0GLuRFSmiioY6UooMp6KJv0/61nB7icHo= -github.com/jackc/puddle/v2 v2.2.2/go.mod h1:vriiEXHvEE654aYKXXjOvZM39qJ0q+azkZFrfEOc3H4= github.com/josharian/intern v1.0.0 h1:vlS4z54oSdjm0bgjRigI+G1HpF+tI+9rE5LLzOg8HmY= github.com/josharian/intern v1.0.0/go.mod h1:5DoeVV0s6jJacbCEi61lwdGj/aVlrQvzHFFd8Hwg//Y= github.com/joshdk/go-junit v1.0.0 h1:S86cUKIdwBHWwA6xCmFlf3RTLfVXYQfvanM5Uh+K6GE= @@ -909,8 +906,6 @@ github.com/nxadm/tail v1.4.4/go.mod h1:kenIhsEOeOJmVchQTgglprH7qJGnHDVpk1VPCcaMI github.com/nxadm/tail v1.4.8 h1:nPr65rt6Y5JFSKQO7qToXr7pePgD6Gwiw05lkbyAQTE= github.com/nxadm/tail v1.4.8/go.mod h1:+ncqLTQzXmGhMZNUePPaPqPvBxHAIsmXswZKocGu+AU= github.com/onsi/ginkgo v1.6.0/go.mod h1:lLunBs/Ym6LB5Z9jYTR76FiuTmxDTDusOGeTQH+WWjE= -github.com/onsi/ginkgo v1.7.0/go.mod h1:lLunBs/Ym6LB5Z9jYTR76FiuTmxDTDusOGeTQH+WWjE= -github.com/onsi/ginkgo v1.8.0/go.mod h1:lLunBs/Ym6LB5Z9jYTR76FiuTmxDTDusOGeTQH+WWjE= github.com/onsi/ginkgo v1.12.1/go.mod h1:zj2OWP4+oCPe1qIXoGWkgMRwljMUYCdkwsT2108oapk= github.com/onsi/ginkgo v1.16.4/go.mod h1:dX+/inL/fNMqNlz0e9LfyB9TswhZpCVdJM/Z6Vvnwo0= github.com/onsi/ginkgo v1.16.5 h1:8xi0RTUf59SOSfEtZMvwTvXYMzG4gV23XVHOZiXNtnE= @@ -929,8 +924,6 @@ github.com/onsi/ginkgo/v2 v2.9.2/go.mod h1:WHcJJG2dIlcCqVfBAwUCrJxSPFb6v4azBwgxe github.com/onsi/ginkgo/v2 v2.9.4/go.mod h1:gCQYp2Q+kSoIj7ykSVb9nskRSsR6PUj4AiLywzIhbKM= github.com/onsi/ginkgo/v2 v2.32.0 h1:Hw7s2pVrQo/8Yz5N77qdnpHaoc+c6cC9WIV1Jce+J6E= github.com/onsi/ginkgo/v2 v2.32.0/go.mod h1:+aXOY+vzZ5mu2iI2HpTZUPmM//oQfsNFX6gU9kNcA44= -github.com/onsi/gomega v1.4.3/go.mod h1:ex+gbHU/CVuBBDIJjb2X0qEXbFg53c61hWP/1CpauHY= -github.com/onsi/gomega v1.5.0/go.mod h1:ex+gbHU/CVuBBDIJjb2X0qEXbFg53c61hWP/1CpauHY= github.com/onsi/gomega v1.7.1/go.mod h1:XdKZgCCFLUoM/7CFJVPcG8C1xQ1AJ0vpAezJrB7JYyY= github.com/onsi/gomega v1.10.1/go.mod h1:iN09h71vgCQne3DLsj+A5owkum+a2tYe+TOCB1ybHNo= github.com/onsi/gomega v1.17.0/go.mod h1:HnhC7FXeEQY45zxNK3PPoIUhzk/80Xly9PcubAlGdZY= @@ -1004,8 +997,8 @@ github.com/tidwall/pretty v1.2.1 h1:qjsOFOWWQl+N3RsoF5/ssm1pHmJJwhjlSbZ51I6wMl4= github.com/tidwall/pretty v1.2.1/go.mod h1:ITEVvHYasfjBbM0u2Pg8T2nJnzm8xPwvNhhsoaGGjNU= github.com/tidwall/sjson v1.2.5 h1:kLy8mja+1c9jlljvWTlSazM7cKDRfJuR/bOJhcY5NcY= github.com/tidwall/sjson v1.2.5/go.mod h1:Fvgq9kS/6ociJEDnK0Fk1cpYF4FIW6ZF7LAe+6jwd28= -github.com/vito/go-sse v1.0.0 h1:e6/iTrrvy8BRrOwJwmQmlndlil+TLdxXvHi55ZDzH6M= -github.com/vito/go-sse v1.0.0/go.mod h1:2wkcaQ+jtlZ94Uve8gYZjFpL68luAjssTINA2hpgcZs= +github.com/vito/go-sse v1.1.3 h1:tZOiC+xKmuRPoySTupO6liK7ciSX0B2NKXha5hEtUAE= +github.com/vito/go-sse v1.1.3/go.mod h1:kMjgO+XCwBS0se2X/aS5T4aLBvHWAKOUqZOqXKdyrAg= github.com/yuin/goldmark v1.1.25/go.mod h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9decYSb74= github.com/yuin/goldmark v1.1.27/go.mod h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9decYSb74= github.com/yuin/goldmark v1.1.32/go.mod h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9decYSb74= @@ -1711,7 +1704,6 @@ gopkg.in/errgo.v2 v2.1.0/go.mod h1:hNsd1EY+bozCKY1Ytp96fpM3vjJbqLJn88ws8XvfDNI= gopkg.in/fsnotify.v1 v1.4.7/go.mod h1:Tz8NjZHkW78fSQdbUxIjBTcgA1z1m8ZHf0WmKUhAMys= gopkg.in/tomb.v1 v1.0.0-20141024135613-dd632973f1e7 h1:uRGJdciOHaEIrze2W8Q3AKkepLTh2hOroT7a+7czfdQ= gopkg.in/tomb.v1 v1.0.0-20141024135613-dd632973f1e7/go.mod h1:dt/ZhP58zS4L8KSrWDmTeBkI65Dw0HsyUHuEVlX15mw= -gopkg.in/yaml.v2 v2.2.1/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI= gopkg.in/yaml.v2 v2.2.2/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI= gopkg.in/yaml.v2 v2.2.3/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI= gopkg.in/yaml.v2 v2.2.4/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI= diff --git a/vendor/code.cloudfoundry.org/bbs/client.go b/vendor/code.cloudfoundry.org/bbs/client.go index c210bdd5..604b3f77 100644 --- a/vendor/code.cloudfoundry.org/bbs/client.go +++ b/vendor/code.cloudfoundry.org/bbs/client.go @@ -140,6 +140,9 @@ type ExternalActualLRPClient interface { // Returns all ActualLRPs matching the given ActualLRPFilter ActualLRPs(lager.Logger, string, models.ActualLRPFilter) ([]*models.ActualLRP, error) + // Returns all ActualLRPs matching the given process GUIDs + ActualLRPsByProcessGuids(logger lager.Logger, traceID string, processGuids []string) ([]*models.ActualLRP, error) + // Returns all ActualLRPGroups matching the given ActualLRPFilter //lint:ignore SA1019 - deprecated function returning deprecated data // Deprecated: use ActualLRPs instead @@ -278,7 +281,7 @@ func newSecureClient(cfg ClientConfig) (InternalClient, error) { return nil, err } if bbsURL.Scheme != "https" { - return nil, errors.New("Expected https URL") + return nil, errors.New("expected https URL") } var clientOpts []tlsconfig.ClientOption @@ -374,6 +377,19 @@ func (c *client) ActualLRPs(logger lager.Logger, traceID string, filter models.A return response.ActualLrps, response.Error.ToError() } +func (c *client) ActualLRPsByProcessGuids(logger lager.Logger, traceID string, processGuids []string) ([]*models.ActualLRP, error) { + request := models.ActualLRPsByProcessGuidsRequest{ + ProcessGuids: processGuids, + } + response := models.ActualLRPsByProcessGuidsResponse{} + err := c.doRequest(logger, traceID, ActualLRPsByProcessGuidsRoute_r0, nil, nil, &request, &response) + if err != nil { + return nil, err + } + + return response.ActualLrps, response.Error.ToError() +} + // Deprecated: use ActualLRPs instead func (c *client) ActualLRPGroups(logger lager.Logger, traceID string, filter models.ActualLRPFilter) ([]*models.ActualLRPGroup, error) { request := models.ActualLRPGroupsRequest{ diff --git a/vendor/code.cloudfoundry.org/bbs/encryption/LICENSE b/vendor/code.cloudfoundry.org/bbs/encryption/LICENSE new file mode 100644 index 00000000..f49a4e16 --- /dev/null +++ b/vendor/code.cloudfoundry.org/bbs/encryption/LICENSE @@ -0,0 +1,201 @@ + Apache License + Version 2.0, January 2004 + http://www.apache.org/licenses/ + + TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION + + 1. Definitions. + + "License" shall mean the terms and conditions for use, reproduction, + and distribution as defined by Sections 1 through 9 of this document. + + "Licensor" shall mean the copyright owner or entity authorized by + the copyright owner that is granting the License. + + "Legal Entity" shall mean the union of the acting entity and all + other entities that control, are controlled by, or are under common + control with that entity. For the purposes of this definition, + "control" means (i) the power, direct or indirect, to cause the + direction or management of such entity, whether by contract or + otherwise, or (ii) ownership of fifty percent (50%) or more of the + outstanding shares, or (iii) beneficial ownership of such entity. + + "You" (or "Your") shall mean an individual or Legal Entity + exercising permissions granted by this License. + + "Source" form shall mean the preferred form for making modifications, + including but not limited to software source code, documentation + source, and configuration files. + + "Object" form shall mean any form resulting from mechanical + transformation or translation of a Source form, including but + not limited to compiled object code, generated documentation, + and conversions to other media types. + + "Work" shall mean the work of authorship, whether in Source or + Object form, made available under the License, as indicated by a + copyright notice that is included in or attached to the work + (an example is provided in the Appendix below). + + "Derivative Works" shall mean any work, whether in Source or Object + form, that is based on (or derived from) the Work and for which the + editorial revisions, annotations, elaborations, or other modifications + represent, as a whole, an original work of authorship. For the purposes + of this License, Derivative Works shall not include works that remain + separable from, or merely link (or bind by name) to the interfaces of, + the Work and Derivative Works thereof. + + "Contribution" shall mean any work of authorship, including + the original version of the Work and any modifications or additions + to that Work or Derivative Works thereof, that is intentionally + submitted to Licensor for inclusion in the Work by the copyright owner + or by an individual or Legal Entity authorized to submit on behalf of + the copyright owner. For the purposes of this definition, "submitted" + means any form of electronic, verbal, or written communication sent + to the Licensor or its representatives, including but not limited to + communication on electronic mailing lists, source code control systems, + and issue tracking systems that are managed by, or on behalf of, the + Licensor for the purpose of discussing and improving the Work, but + excluding communication that is conspicuously marked or otherwise + designated in writing by the copyright owner as "Not a Contribution." + + "Contributor" shall mean Licensor and any individual or Legal Entity + on behalf of whom a Contribution has been received by Licensor and + subsequently incorporated within the Work. + + 2. Grant of Copyright License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + copyright license to reproduce, prepare Derivative Works of, + publicly display, publicly perform, sublicense, and distribute the + Work and such Derivative Works in Source or Object form. + + 3. Grant of Patent License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + (except as stated in this section) patent license to make, have made, + use, offer to sell, sell, import, and otherwise transfer the Work, + where such license applies only to those patent claims licensable + by such Contributor that are necessarily infringed by their + Contribution(s) alone or by combination of their Contribution(s) + with the Work to which such Contribution(s) was submitted. If You + institute patent litigation against any entity (including a + cross-claim or counterclaim in a lawsuit) alleging that the Work + or a Contribution incorporated within the Work constitutes direct + or contributory patent infringement, then any patent licenses + granted to You under this License for that Work shall terminate + as of the date such litigation is filed. + + 4. Redistribution. You may reproduce and distribute copies of the + Work or Derivative Works thereof in any medium, with or without + modifications, and in Source or Object form, provided that You + meet the following conditions: + + (a) You must give any other recipients of the Work or + Derivative Works a copy of this License; and + + (b) You must cause any modified files to carry prominent notices + stating that You changed the files; and + + (c) You must retain, in the Source form of any Derivative Works + that You distribute, all copyright, patent, trademark, and + attribution notices from the Source form of the Work, + excluding those notices that do not pertain to any part of + the Derivative Works; and + + (d) If the Work includes a "NOTICE" text file as part of its + distribution, then any Derivative Works that You distribute must + include a readable copy of the attribution notices contained + within such NOTICE file, excluding those notices that do not + pertain to any part of the Derivative Works, in at least one + of the following places: within a NOTICE text file distributed + as part of the Derivative Works; within the Source form or + documentation, if provided along with the Derivative Works; or, + within a display generated by the Derivative Works, if and + wherever such third-party notices normally appear. The contents + of the NOTICE file are for informational purposes only and + do not modify the License. You may add Your own attribution + notices within Derivative Works that You distribute, alongside + or as an addendum to the NOTICE text from the Work, provided + that such additional attribution notices cannot be construed + as modifying the License. + + You may add Your own copyright statement to Your modifications and + may provide additional or different license terms and conditions + for use, reproduction, or distribution of Your modifications, or + for any such Derivative Works as a whole, provided Your use, + reproduction, and distribution of the Work otherwise complies with + the conditions stated in this License. + + 5. Submission of Contributions. Unless You explicitly state otherwise, + any Contribution intentionally submitted for inclusion in the Work + by You to the Licensor shall be under the terms and conditions of + this License, without any additional terms or conditions. + Notwithstanding the above, nothing herein shall supersede or modify + the terms of any separate license agreement you may have executed + with Licensor regarding such Contributions. + + 6. Trademarks. This License does not grant permission to use the trade + names, trademarks, service marks, or product names of the Licensor, + except as required for reasonable and customary use in describing the + origin of the Work and reproducing the content of the NOTICE file. + + 7. Disclaimer of Warranty. Unless required by applicable law or + agreed to in writing, Licensor provides the Work (and each + Contributor provides its Contributions) on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or + implied, including, without limitation, any warranties or conditions + of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A + PARTICULAR PURPOSE. You are solely responsible for determining the + appropriateness of using or redistributing the Work and assume any + risks associated with Your exercise of permissions under this License. + + 8. Limitation of Liability. In no event and under no legal theory, + whether in tort (including negligence), contract, or otherwise, + unless required by applicable law (such as deliberate and grossly + negligent acts) or agreed to in writing, shall any Contributor be + liable to You for damages, including any direct, indirect, special, + incidental, or consequential damages of any character arising as a + result of this License or out of the use or inability to use the + Work (including but not limited to damages for loss of goodwill, + work stoppage, computer failure or malfunction, or any and all + other commercial damages or losses), even if such Contributor + has been advised of the possibility of such damages. + + 9. Accepting Warranty or Additional Liability. While redistributing + the Work or Derivative Works thereof, You may choose to offer, + and charge a fee for, acceptance of support, warranty, indemnity, + or other liability obligations and/or rights consistent with this + License. However, in accepting such obligations, You may act only + on Your own behalf and on Your sole responsibility, not on behalf + of any other Contributor, and only if You agree to indemnify, + defend, and hold each Contributor harmless for any liability + incurred by, or claims asserted against, such Contributor by reason + of your accepting any such warranty or additional liability. + + END OF TERMS AND CONDITIONS + + APPENDIX: How to apply the Apache License to your work. + + To apply the Apache License to your work, attach the following + boilerplate notice, with the fields enclosed by brackets "[]" + replaced with your own identifying information. (Don't include + the brackets!) The text should be enclosed in the appropriate + comment syntax for the file format. We also recommend that a + file or class name and description of purpose be included on the + same "printed page" as the copyright notice for easier + identification within third-party archives. + + Copyright [yyyy] [name of copyright owner] + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. \ No newline at end of file diff --git a/vendor/code.cloudfoundry.org/bbs/encryption/crypt.go b/vendor/code.cloudfoundry.org/bbs/encryption/crypt.go index 3d70071c..048bfc6a 100644 --- a/vendor/code.cloudfoundry.org/bbs/encryption/crypt.go +++ b/vendor/code.cloudfoundry.org/bbs/encryption/crypt.go @@ -48,13 +48,13 @@ func (c *cryptor) Encrypt(plaintext []byte) (Encrypted, error) { aead, err := cipher.NewGCM(key.Block()) if err != nil { - return Encrypted{}, fmt.Errorf("Unable to create GCM-wrapped cipher: %q", err) + return Encrypted{}, fmt.Errorf("unable to create GCM-wrapped cipher: %q", err) } nonce := make([]byte, aead.NonceSize()) _, err = io.ReadFull(c.prng, nonce) if err != nil { - return Encrypted{}, fmt.Errorf("Unable to generate random nonce: %q", err) + return Encrypted{}, fmt.Errorf("unable to generate random nonce: %q", err) } ciphertext := aead.Seal(nil, nonce, plaintext, nil) @@ -69,7 +69,7 @@ func (d *cryptor) Decrypt(encrypted Encrypted) ([]byte, error) { aead, err := cipher.NewGCM(key.Block()) if err != nil { - return nil, fmt.Errorf("Unable to create GCM-wrapped cipher: %q", err) + return nil, fmt.Errorf("unable to create GCM-wrapped cipher: %q", err) } // #nosec G407 - G407 is incorrectly flagging Decrypt calls that use the nonce provided in the encrypted data. we randomize this for encryption, which is where it matters. https://github.com/securego/gosec/issues/1209 diff --git a/vendor/code.cloudfoundry.org/bbs/encryption/encryption_config.go b/vendor/code.cloudfoundry.org/bbs/encryption/encryption_config.go index 8e8c883a..3121dccb 100644 --- a/vendor/code.cloudfoundry.org/bbs/encryption/encryption_config.go +++ b/vendor/code.cloudfoundry.org/bbs/encryption/encryption_config.go @@ -9,11 +9,11 @@ type EncryptionConfig struct { func (ef *EncryptionConfig) Parse() (Key, []Key, error) { if len(ef.EncryptionKeys) == 0 { - return nil, nil, errors.New("Must have at least one encryption key set") + return nil, nil, errors.New("must have at least one encryption key set") } if len(ef.ActiveKeyLabel) == 0 { - return nil, nil, errors.New("Must select an active encryption key") + return nil, nil, errors.New("must select an active encryption key") } var encryptionKey Key @@ -30,7 +30,7 @@ func (ef *EncryptionConfig) Parse() (Key, []Key, error) { encryptionKey, ok := labelsToKeys[ef.ActiveKeyLabel] if !ok { - return nil, nil, errors.New("The selected active key must be listed on the encryption keys flag") + return nil, nil, errors.New("the selected active key must be listed on the encryption keys flag") } keys := []Key{} diff --git a/vendor/code.cloudfoundry.org/bbs/encryption/key.go b/vendor/code.cloudfoundry.org/bbs/encryption/key.go index 715a6438..c755bb27 100644 --- a/vendor/code.cloudfoundry.org/bbs/encryption/key.go +++ b/vendor/code.cloudfoundry.org/bbs/encryption/key.go @@ -21,7 +21,7 @@ type key struct { func NewKey(label, phrase string) (Key, error) { if label == "" { - return nil, errors.New("A key label is required") + return nil, errors.New("a key label is required") } if len(label) > 127 { diff --git a/vendor/code.cloudfoundry.org/bbs/encryption/key_manager.go b/vendor/code.cloudfoundry.org/bbs/encryption/key_manager.go index 441cc28c..3e670743 100644 --- a/vendor/code.cloudfoundry.org/bbs/encryption/key_manager.go +++ b/vendor/code.cloudfoundry.org/bbs/encryption/key_manager.go @@ -19,7 +19,7 @@ func NewKeyManager(encryptionKey Key, decryptionKeys []Key) (KeyManager, error) for _, key := range decryptionKeys { if existingKey, ok := decryptionKeyMap[key.Label()]; ok && key != existingKey { - return nil, fmt.Errorf("Multiple keys with the same label: %q", key.Label()) + return nil, fmt.Errorf("multiple keys with the same label: %q", key.Label()) } decryptionKeyMap[key.Label()] = key } diff --git a/vendor/code.cloudfoundry.org/bbs/events/eventfakes/fake_event_source.go b/vendor/code.cloudfoundry.org/bbs/events/eventfakes/fake_event_source.go index bbc370d4..a17e48c0 100644 --- a/vendor/code.cloudfoundry.org/bbs/events/eventfakes/fake_event_source.go +++ b/vendor/code.cloudfoundry.org/bbs/events/eventfakes/fake_event_source.go @@ -147,10 +147,6 @@ func (fake *FakeEventSource) NextReturnsOnCall(i int, result1 models.Event, resu func (fake *FakeEventSource) Invocations() map[string][][]interface{} { fake.invocationsMutex.RLock() defer fake.invocationsMutex.RUnlock() - fake.closeMutex.RLock() - defer fake.closeMutex.RUnlock() - fake.nextMutex.RLock() - defer fake.nextMutex.RUnlock() copiedInvocations := map[string][][]interface{}{} for key, value := range fake.invocations { copiedInvocations[key] = value diff --git a/vendor/code.cloudfoundry.org/bbs/events/eventfakes/fake_hub.go b/vendor/code.cloudfoundry.org/bbs/events/eventfakes/fake_hub.go index 7c9c4efc..b25c7281 100644 --- a/vendor/code.cloudfoundry.org/bbs/events/eventfakes/fake_hub.go +++ b/vendor/code.cloudfoundry.org/bbs/events/eventfakes/fake_hub.go @@ -249,16 +249,6 @@ func (fake *FakeHub) UnregisterCallbackCalls(stub func()) { func (fake *FakeHub) Invocations() map[string][][]interface{} { fake.invocationsMutex.RLock() defer fake.invocationsMutex.RUnlock() - fake.closeMutex.RLock() - defer fake.closeMutex.RUnlock() - fake.emitMutex.RLock() - defer fake.emitMutex.RUnlock() - fake.registerCallbackMutex.RLock() - defer fake.registerCallbackMutex.RUnlock() - fake.subscribeMutex.RLock() - defer fake.subscribeMutex.RUnlock() - fake.unregisterCallbackMutex.RLock() - defer fake.unregisterCallbackMutex.RUnlock() copiedInvocations := map[string][][]interface{}{} for key, value := range fake.invocations { copiedInvocations[key] = value diff --git a/vendor/code.cloudfoundry.org/bbs/events/eventfakes/fake_raw_event_source.go b/vendor/code.cloudfoundry.org/bbs/events/eventfakes/fake_raw_event_source.go index 0504f5ea..5a04c869 100644 --- a/vendor/code.cloudfoundry.org/bbs/events/eventfakes/fake_raw_event_source.go +++ b/vendor/code.cloudfoundry.org/bbs/events/eventfakes/fake_raw_event_source.go @@ -147,10 +147,6 @@ func (fake *FakeRawEventSource) NextReturnsOnCall(i int, result1 sse.Event, resu func (fake *FakeRawEventSource) Invocations() map[string][][]interface{} { fake.invocationsMutex.RLock() defer fake.invocationsMutex.RUnlock() - fake.closeMutex.RLock() - defer fake.closeMutex.RUnlock() - fake.nextMutex.RLock() - defer fake.nextMutex.RUnlock() copiedInvocations := map[string][][]interface{}{} for key, value := range fake.invocations { copiedInvocations[key] = value diff --git a/vendor/code.cloudfoundry.org/bbs/fake_bbs/fake_client.go b/vendor/code.cloudfoundry.org/bbs/fake_bbs/fake_client.go index cd43ebaf..d8ab5271 100644 --- a/vendor/code.cloudfoundry.org/bbs/fake_bbs/fake_client.go +++ b/vendor/code.cloudfoundry.org/bbs/fake_bbs/fake_client.go @@ -73,6 +73,21 @@ type FakeClient struct { result1 []*models.ActualLRP result2 error } + ActualLRPsByProcessGuidsStub func(lager.Logger, string, []string) ([]*models.ActualLRP, error) + actualLRPsByProcessGuidsMutex sync.RWMutex + actualLRPsByProcessGuidsArgsForCall []struct { + arg1 lager.Logger + arg2 string + arg3 []string + } + actualLRPsByProcessGuidsReturns struct { + result1 []*models.ActualLRP + result2 error + } + actualLRPsByProcessGuidsReturnsOnCall map[int]struct { + result1 []*models.ActualLRP + result2 error + } CancelTaskStub func(lager.Logger, string, string) error cancelTaskMutex sync.RWMutex cancelTaskArgsForCall []struct { @@ -719,6 +734,77 @@ func (fake *FakeClient) ActualLRPsReturnsOnCall(i int, result1 []*models.ActualL }{result1, result2} } +func (fake *FakeClient) ActualLRPsByProcessGuids(arg1 lager.Logger, arg2 string, arg3 []string) ([]*models.ActualLRP, error) { + var arg3Copy []string + if arg3 != nil { + arg3Copy = make([]string, len(arg3)) + copy(arg3Copy, arg3) + } + fake.actualLRPsByProcessGuidsMutex.Lock() + ret, specificReturn := fake.actualLRPsByProcessGuidsReturnsOnCall[len(fake.actualLRPsByProcessGuidsArgsForCall)] + fake.actualLRPsByProcessGuidsArgsForCall = append(fake.actualLRPsByProcessGuidsArgsForCall, struct { + arg1 lager.Logger + arg2 string + arg3 []string + }{arg1, arg2, arg3Copy}) + stub := fake.ActualLRPsByProcessGuidsStub + fakeReturns := fake.actualLRPsByProcessGuidsReturns + fake.recordInvocation("ActualLRPsByProcessGuids", []interface{}{arg1, arg2, arg3Copy}) + fake.actualLRPsByProcessGuidsMutex.Unlock() + if stub != nil { + return stub(arg1, arg2, arg3) + } + if specificReturn { + return ret.result1, ret.result2 + } + return fakeReturns.result1, fakeReturns.result2 +} + +func (fake *FakeClient) ActualLRPsByProcessGuidsCallCount() int { + fake.actualLRPsByProcessGuidsMutex.RLock() + defer fake.actualLRPsByProcessGuidsMutex.RUnlock() + return len(fake.actualLRPsByProcessGuidsArgsForCall) +} + +func (fake *FakeClient) ActualLRPsByProcessGuidsCalls(stub func(lager.Logger, string, []string) ([]*models.ActualLRP, error)) { + fake.actualLRPsByProcessGuidsMutex.Lock() + defer fake.actualLRPsByProcessGuidsMutex.Unlock() + fake.ActualLRPsByProcessGuidsStub = stub +} + +func (fake *FakeClient) ActualLRPsByProcessGuidsArgsForCall(i int) (lager.Logger, string, []string) { + fake.actualLRPsByProcessGuidsMutex.RLock() + defer fake.actualLRPsByProcessGuidsMutex.RUnlock() + argsForCall := fake.actualLRPsByProcessGuidsArgsForCall[i] + return argsForCall.arg1, argsForCall.arg2, argsForCall.arg3 +} + +func (fake *FakeClient) ActualLRPsByProcessGuidsReturns(result1 []*models.ActualLRP, result2 error) { + fake.actualLRPsByProcessGuidsMutex.Lock() + defer fake.actualLRPsByProcessGuidsMutex.Unlock() + fake.ActualLRPsByProcessGuidsStub = nil + fake.actualLRPsByProcessGuidsReturns = struct { + result1 []*models.ActualLRP + result2 error + }{result1, result2} +} + +func (fake *FakeClient) ActualLRPsByProcessGuidsReturnsOnCall(i int, result1 []*models.ActualLRP, result2 error) { + fake.actualLRPsByProcessGuidsMutex.Lock() + defer fake.actualLRPsByProcessGuidsMutex.Unlock() + fake.ActualLRPsByProcessGuidsStub = nil + if fake.actualLRPsByProcessGuidsReturnsOnCall == nil { + fake.actualLRPsByProcessGuidsReturnsOnCall = make(map[int]struct { + result1 []*models.ActualLRP + result2 error + }) + } + fake.actualLRPsByProcessGuidsReturnsOnCall[i] = struct { + result1 []*models.ActualLRP + result2 error + }{result1, result2} +} + func (fake *FakeClient) CancelTask(arg1 lager.Logger, arg2 string, arg3 string) error { fake.cancelTaskMutex.Lock() ret, specificReturn := fake.cancelTaskReturnsOnCall[len(fake.cancelTaskArgsForCall)] @@ -2466,68 +2552,6 @@ func (fake *FakeClient) UpsertDomainReturnsOnCall(i int, result1 error) { func (fake *FakeClient) Invocations() map[string][][]interface{} { fake.invocationsMutex.RLock() defer fake.invocationsMutex.RUnlock() - fake.actualLRPGroupByProcessGuidAndIndexMutex.RLock() - defer fake.actualLRPGroupByProcessGuidAndIndexMutex.RUnlock() - fake.actualLRPGroupsMutex.RLock() - defer fake.actualLRPGroupsMutex.RUnlock() - fake.actualLRPGroupsByProcessGuidMutex.RLock() - defer fake.actualLRPGroupsByProcessGuidMutex.RUnlock() - fake.actualLRPsMutex.RLock() - defer fake.actualLRPsMutex.RUnlock() - fake.cancelTaskMutex.RLock() - defer fake.cancelTaskMutex.RUnlock() - fake.cellsMutex.RLock() - defer fake.cellsMutex.RUnlock() - fake.deleteTaskMutex.RLock() - defer fake.deleteTaskMutex.RUnlock() - fake.desireLRPMutex.RLock() - defer fake.desireLRPMutex.RUnlock() - fake.desireTaskMutex.RLock() - defer fake.desireTaskMutex.RUnlock() - fake.desiredLRPByProcessGuidMutex.RLock() - defer fake.desiredLRPByProcessGuidMutex.RUnlock() - fake.desiredLRPRoutingInfosMutex.RLock() - defer fake.desiredLRPRoutingInfosMutex.RUnlock() - fake.desiredLRPSchedulingInfoByProcessGuidMutex.RLock() - defer fake.desiredLRPSchedulingInfoByProcessGuidMutex.RUnlock() - fake.desiredLRPSchedulingInfosMutex.RLock() - defer fake.desiredLRPSchedulingInfosMutex.RUnlock() - fake.desiredLRPsMutex.RLock() - defer fake.desiredLRPsMutex.RUnlock() - fake.domainsMutex.RLock() - defer fake.domainsMutex.RUnlock() - fake.pingMutex.RLock() - defer fake.pingMutex.RUnlock() - fake.removeDesiredLRPMutex.RLock() - defer fake.removeDesiredLRPMutex.RUnlock() - fake.resolvingTaskMutex.RLock() - defer fake.resolvingTaskMutex.RUnlock() - fake.retireActualLRPMutex.RLock() - defer fake.retireActualLRPMutex.RUnlock() - fake.subscribeToEventsMutex.RLock() - defer fake.subscribeToEventsMutex.RUnlock() - fake.subscribeToEventsByCellIDMutex.RLock() - defer fake.subscribeToEventsByCellIDMutex.RUnlock() - fake.subscribeToInstanceEventsMutex.RLock() - defer fake.subscribeToInstanceEventsMutex.RUnlock() - fake.subscribeToInstanceEventsByCellIDMutex.RLock() - defer fake.subscribeToInstanceEventsByCellIDMutex.RUnlock() - fake.subscribeToTaskEventsMutex.RLock() - defer fake.subscribeToTaskEventsMutex.RUnlock() - fake.taskByGuidMutex.RLock() - defer fake.taskByGuidMutex.RUnlock() - fake.tasksMutex.RLock() - defer fake.tasksMutex.RUnlock() - fake.tasksByCellIDMutex.RLock() - defer fake.tasksByCellIDMutex.RUnlock() - fake.tasksByDomainMutex.RLock() - defer fake.tasksByDomainMutex.RUnlock() - fake.tasksWithFilterMutex.RLock() - defer fake.tasksWithFilterMutex.RUnlock() - fake.updateDesiredLRPMutex.RLock() - defer fake.updateDesiredLRPMutex.RUnlock() - fake.upsertDomainMutex.RLock() - defer fake.upsertDomainMutex.RUnlock() copiedInvocations := map[string][][]interface{}{} for key, value := range fake.invocations { copiedInvocations[key] = value diff --git a/vendor/code.cloudfoundry.org/bbs/fake_bbs/fake_internal_client.go b/vendor/code.cloudfoundry.org/bbs/fake_bbs/fake_internal_client.go index 0e84d75f..60df211d 100644 --- a/vendor/code.cloudfoundry.org/bbs/fake_bbs/fake_internal_client.go +++ b/vendor/code.cloudfoundry.org/bbs/fake_bbs/fake_internal_client.go @@ -73,6 +73,21 @@ type FakeInternalClient struct { result1 []*models.ActualLRP result2 error } + ActualLRPsByProcessGuidsStub func(lager.Logger, string, []string) ([]*models.ActualLRP, error) + actualLRPsByProcessGuidsMutex sync.RWMutex + actualLRPsByProcessGuidsArgsForCall []struct { + arg1 lager.Logger + arg2 string + arg3 []string + } + actualLRPsByProcessGuidsReturns struct { + result1 []*models.ActualLRP + result2 error + } + actualLRPsByProcessGuidsReturnsOnCall map[int]struct { + result1 []*models.ActualLRP + result2 error + } CancelTaskStub func(lager.Logger, string, string) error cancelTaskMutex sync.RWMutex cancelTaskArgsForCall []struct { @@ -940,6 +955,77 @@ func (fake *FakeInternalClient) ActualLRPsReturnsOnCall(i int, result1 []*models }{result1, result2} } +func (fake *FakeInternalClient) ActualLRPsByProcessGuids(arg1 lager.Logger, arg2 string, arg3 []string) ([]*models.ActualLRP, error) { + var arg3Copy []string + if arg3 != nil { + arg3Copy = make([]string, len(arg3)) + copy(arg3Copy, arg3) + } + fake.actualLRPsByProcessGuidsMutex.Lock() + ret, specificReturn := fake.actualLRPsByProcessGuidsReturnsOnCall[len(fake.actualLRPsByProcessGuidsArgsForCall)] + fake.actualLRPsByProcessGuidsArgsForCall = append(fake.actualLRPsByProcessGuidsArgsForCall, struct { + arg1 lager.Logger + arg2 string + arg3 []string + }{arg1, arg2, arg3Copy}) + stub := fake.ActualLRPsByProcessGuidsStub + fakeReturns := fake.actualLRPsByProcessGuidsReturns + fake.recordInvocation("ActualLRPsByProcessGuids", []interface{}{arg1, arg2, arg3Copy}) + fake.actualLRPsByProcessGuidsMutex.Unlock() + if stub != nil { + return stub(arg1, arg2, arg3) + } + if specificReturn { + return ret.result1, ret.result2 + } + return fakeReturns.result1, fakeReturns.result2 +} + +func (fake *FakeInternalClient) ActualLRPsByProcessGuidsCallCount() int { + fake.actualLRPsByProcessGuidsMutex.RLock() + defer fake.actualLRPsByProcessGuidsMutex.RUnlock() + return len(fake.actualLRPsByProcessGuidsArgsForCall) +} + +func (fake *FakeInternalClient) ActualLRPsByProcessGuidsCalls(stub func(lager.Logger, string, []string) ([]*models.ActualLRP, error)) { + fake.actualLRPsByProcessGuidsMutex.Lock() + defer fake.actualLRPsByProcessGuidsMutex.Unlock() + fake.ActualLRPsByProcessGuidsStub = stub +} + +func (fake *FakeInternalClient) ActualLRPsByProcessGuidsArgsForCall(i int) (lager.Logger, string, []string) { + fake.actualLRPsByProcessGuidsMutex.RLock() + defer fake.actualLRPsByProcessGuidsMutex.RUnlock() + argsForCall := fake.actualLRPsByProcessGuidsArgsForCall[i] + return argsForCall.arg1, argsForCall.arg2, argsForCall.arg3 +} + +func (fake *FakeInternalClient) ActualLRPsByProcessGuidsReturns(result1 []*models.ActualLRP, result2 error) { + fake.actualLRPsByProcessGuidsMutex.Lock() + defer fake.actualLRPsByProcessGuidsMutex.Unlock() + fake.ActualLRPsByProcessGuidsStub = nil + fake.actualLRPsByProcessGuidsReturns = struct { + result1 []*models.ActualLRP + result2 error + }{result1, result2} +} + +func (fake *FakeInternalClient) ActualLRPsByProcessGuidsReturnsOnCall(i int, result1 []*models.ActualLRP, result2 error) { + fake.actualLRPsByProcessGuidsMutex.Lock() + defer fake.actualLRPsByProcessGuidsMutex.Unlock() + fake.ActualLRPsByProcessGuidsStub = nil + if fake.actualLRPsByProcessGuidsReturnsOnCall == nil { + fake.actualLRPsByProcessGuidsReturnsOnCall = make(map[int]struct { + result1 []*models.ActualLRP + result2 error + }) + } + fake.actualLRPsByProcessGuidsReturnsOnCall[i] = struct { + result1 []*models.ActualLRP + result2 error + }{result1, result2} +} + func (fake *FakeInternalClient) CancelTask(arg1 lager.Logger, arg2 string, arg3 string) error { fake.cancelTaskMutex.Lock() ret, specificReturn := fake.cancelTaskReturnsOnCall[len(fake.cancelTaskArgsForCall)] @@ -3623,96 +3709,6 @@ func (fake *FakeInternalClient) UpsertDomainReturnsOnCall(i int, result1 error) func (fake *FakeInternalClient) Invocations() map[string][][]interface{} { fake.invocationsMutex.RLock() defer fake.invocationsMutex.RUnlock() - fake.actualLRPGroupByProcessGuidAndIndexMutex.RLock() - defer fake.actualLRPGroupByProcessGuidAndIndexMutex.RUnlock() - fake.actualLRPGroupsMutex.RLock() - defer fake.actualLRPGroupsMutex.RUnlock() - fake.actualLRPGroupsByProcessGuidMutex.RLock() - defer fake.actualLRPGroupsByProcessGuidMutex.RUnlock() - fake.actualLRPsMutex.RLock() - defer fake.actualLRPsMutex.RUnlock() - fake.cancelTaskMutex.RLock() - defer fake.cancelTaskMutex.RUnlock() - fake.cellsMutex.RLock() - defer fake.cellsMutex.RUnlock() - fake.claimActualLRPMutex.RLock() - defer fake.claimActualLRPMutex.RUnlock() - fake.completeTaskMutex.RLock() - defer fake.completeTaskMutex.RUnlock() - fake.crashActualLRPMutex.RLock() - defer fake.crashActualLRPMutex.RUnlock() - fake.deleteTaskMutex.RLock() - defer fake.deleteTaskMutex.RUnlock() - fake.desireLRPMutex.RLock() - defer fake.desireLRPMutex.RUnlock() - fake.desireTaskMutex.RLock() - defer fake.desireTaskMutex.RUnlock() - fake.desiredLRPByProcessGuidMutex.RLock() - defer fake.desiredLRPByProcessGuidMutex.RUnlock() - fake.desiredLRPRoutingInfosMutex.RLock() - defer fake.desiredLRPRoutingInfosMutex.RUnlock() - fake.desiredLRPSchedulingInfoByProcessGuidMutex.RLock() - defer fake.desiredLRPSchedulingInfoByProcessGuidMutex.RUnlock() - fake.desiredLRPSchedulingInfosMutex.RLock() - defer fake.desiredLRPSchedulingInfosMutex.RUnlock() - fake.desiredLRPsMutex.RLock() - defer fake.desiredLRPsMutex.RUnlock() - fake.domainsMutex.RLock() - defer fake.domainsMutex.RUnlock() - fake.evacuateClaimedActualLRPMutex.RLock() - defer fake.evacuateClaimedActualLRPMutex.RUnlock() - fake.evacuateCrashedActualLRPMutex.RLock() - defer fake.evacuateCrashedActualLRPMutex.RUnlock() - fake.evacuateRunningActualLRPMutex.RLock() - defer fake.evacuateRunningActualLRPMutex.RUnlock() - fake.evacuateStoppedActualLRPMutex.RLock() - defer fake.evacuateStoppedActualLRPMutex.RUnlock() - fake.failActualLRPMutex.RLock() - defer fake.failActualLRPMutex.RUnlock() - fake.failTaskMutex.RLock() - defer fake.failTaskMutex.RUnlock() - fake.pingMutex.RLock() - defer fake.pingMutex.RUnlock() - fake.rejectTaskMutex.RLock() - defer fake.rejectTaskMutex.RUnlock() - fake.removeActualLRPMutex.RLock() - defer fake.removeActualLRPMutex.RUnlock() - fake.removeDesiredLRPMutex.RLock() - defer fake.removeDesiredLRPMutex.RUnlock() - fake.removeEvacuatingActualLRPMutex.RLock() - defer fake.removeEvacuatingActualLRPMutex.RUnlock() - fake.resolvingTaskMutex.RLock() - defer fake.resolvingTaskMutex.RUnlock() - fake.retireActualLRPMutex.RLock() - defer fake.retireActualLRPMutex.RUnlock() - fake.startActualLRPMutex.RLock() - defer fake.startActualLRPMutex.RUnlock() - fake.startTaskMutex.RLock() - defer fake.startTaskMutex.RUnlock() - fake.subscribeToEventsMutex.RLock() - defer fake.subscribeToEventsMutex.RUnlock() - fake.subscribeToEventsByCellIDMutex.RLock() - defer fake.subscribeToEventsByCellIDMutex.RUnlock() - fake.subscribeToInstanceEventsMutex.RLock() - defer fake.subscribeToInstanceEventsMutex.RUnlock() - fake.subscribeToInstanceEventsByCellIDMutex.RLock() - defer fake.subscribeToInstanceEventsByCellIDMutex.RUnlock() - fake.subscribeToTaskEventsMutex.RLock() - defer fake.subscribeToTaskEventsMutex.RUnlock() - fake.taskByGuidMutex.RLock() - defer fake.taskByGuidMutex.RUnlock() - fake.tasksMutex.RLock() - defer fake.tasksMutex.RUnlock() - fake.tasksByCellIDMutex.RLock() - defer fake.tasksByCellIDMutex.RUnlock() - fake.tasksByDomainMutex.RLock() - defer fake.tasksByDomainMutex.RUnlock() - fake.tasksWithFilterMutex.RLock() - defer fake.tasksWithFilterMutex.RUnlock() - fake.updateDesiredLRPMutex.RLock() - defer fake.updateDesiredLRPMutex.RUnlock() - fake.upsertDomainMutex.RLock() - defer fake.upsertDomainMutex.RUnlock() copiedInvocations := map[string][][]interface{}{} for key, value := range fake.invocations { copiedInvocations[key] = value diff --git a/vendor/code.cloudfoundry.org/bbs/format/LICENSE b/vendor/code.cloudfoundry.org/bbs/format/LICENSE new file mode 100644 index 00000000..f49a4e16 --- /dev/null +++ b/vendor/code.cloudfoundry.org/bbs/format/LICENSE @@ -0,0 +1,201 @@ + Apache License + Version 2.0, January 2004 + http://www.apache.org/licenses/ + + TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION + + 1. Definitions. + + "License" shall mean the terms and conditions for use, reproduction, + and distribution as defined by Sections 1 through 9 of this document. + + "Licensor" shall mean the copyright owner or entity authorized by + the copyright owner that is granting the License. + + "Legal Entity" shall mean the union of the acting entity and all + other entities that control, are controlled by, or are under common + control with that entity. For the purposes of this definition, + "control" means (i) the power, direct or indirect, to cause the + direction or management of such entity, whether by contract or + otherwise, or (ii) ownership of fifty percent (50%) or more of the + outstanding shares, or (iii) beneficial ownership of such entity. + + "You" (or "Your") shall mean an individual or Legal Entity + exercising permissions granted by this License. + + "Source" form shall mean the preferred form for making modifications, + including but not limited to software source code, documentation + source, and configuration files. + + "Object" form shall mean any form resulting from mechanical + transformation or translation of a Source form, including but + not limited to compiled object code, generated documentation, + and conversions to other media types. + + "Work" shall mean the work of authorship, whether in Source or + Object form, made available under the License, as indicated by a + copyright notice that is included in or attached to the work + (an example is provided in the Appendix below). + + "Derivative Works" shall mean any work, whether in Source or Object + form, that is based on (or derived from) the Work and for which the + editorial revisions, annotations, elaborations, or other modifications + represent, as a whole, an original work of authorship. For the purposes + of this License, Derivative Works shall not include works that remain + separable from, or merely link (or bind by name) to the interfaces of, + the Work and Derivative Works thereof. + + "Contribution" shall mean any work of authorship, including + the original version of the Work and any modifications or additions + to that Work or Derivative Works thereof, that is intentionally + submitted to Licensor for inclusion in the Work by the copyright owner + or by an individual or Legal Entity authorized to submit on behalf of + the copyright owner. For the purposes of this definition, "submitted" + means any form of electronic, verbal, or written communication sent + to the Licensor or its representatives, including but not limited to + communication on electronic mailing lists, source code control systems, + and issue tracking systems that are managed by, or on behalf of, the + Licensor for the purpose of discussing and improving the Work, but + excluding communication that is conspicuously marked or otherwise + designated in writing by the copyright owner as "Not a Contribution." + + "Contributor" shall mean Licensor and any individual or Legal Entity + on behalf of whom a Contribution has been received by Licensor and + subsequently incorporated within the Work. + + 2. Grant of Copyright License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + copyright license to reproduce, prepare Derivative Works of, + publicly display, publicly perform, sublicense, and distribute the + Work and such Derivative Works in Source or Object form. + + 3. Grant of Patent License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + (except as stated in this section) patent license to make, have made, + use, offer to sell, sell, import, and otherwise transfer the Work, + where such license applies only to those patent claims licensable + by such Contributor that are necessarily infringed by their + Contribution(s) alone or by combination of their Contribution(s) + with the Work to which such Contribution(s) was submitted. If You + institute patent litigation against any entity (including a + cross-claim or counterclaim in a lawsuit) alleging that the Work + or a Contribution incorporated within the Work constitutes direct + or contributory patent infringement, then any patent licenses + granted to You under this License for that Work shall terminate + as of the date such litigation is filed. + + 4. Redistribution. You may reproduce and distribute copies of the + Work or Derivative Works thereof in any medium, with or without + modifications, and in Source or Object form, provided that You + meet the following conditions: + + (a) You must give any other recipients of the Work or + Derivative Works a copy of this License; and + + (b) You must cause any modified files to carry prominent notices + stating that You changed the files; and + + (c) You must retain, in the Source form of any Derivative Works + that You distribute, all copyright, patent, trademark, and + attribution notices from the Source form of the Work, + excluding those notices that do not pertain to any part of + the Derivative Works; and + + (d) If the Work includes a "NOTICE" text file as part of its + distribution, then any Derivative Works that You distribute must + include a readable copy of the attribution notices contained + within such NOTICE file, excluding those notices that do not + pertain to any part of the Derivative Works, in at least one + of the following places: within a NOTICE text file distributed + as part of the Derivative Works; within the Source form or + documentation, if provided along with the Derivative Works; or, + within a display generated by the Derivative Works, if and + wherever such third-party notices normally appear. The contents + of the NOTICE file are for informational purposes only and + do not modify the License. You may add Your own attribution + notices within Derivative Works that You distribute, alongside + or as an addendum to the NOTICE text from the Work, provided + that such additional attribution notices cannot be construed + as modifying the License. + + You may add Your own copyright statement to Your modifications and + may provide additional or different license terms and conditions + for use, reproduction, or distribution of Your modifications, or + for any such Derivative Works as a whole, provided Your use, + reproduction, and distribution of the Work otherwise complies with + the conditions stated in this License. + + 5. Submission of Contributions. Unless You explicitly state otherwise, + any Contribution intentionally submitted for inclusion in the Work + by You to the Licensor shall be under the terms and conditions of + this License, without any additional terms or conditions. + Notwithstanding the above, nothing herein shall supersede or modify + the terms of any separate license agreement you may have executed + with Licensor regarding such Contributions. + + 6. Trademarks. This License does not grant permission to use the trade + names, trademarks, service marks, or product names of the Licensor, + except as required for reasonable and customary use in describing the + origin of the Work and reproducing the content of the NOTICE file. + + 7. Disclaimer of Warranty. Unless required by applicable law or + agreed to in writing, Licensor provides the Work (and each + Contributor provides its Contributions) on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or + implied, including, without limitation, any warranties or conditions + of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A + PARTICULAR PURPOSE. You are solely responsible for determining the + appropriateness of using or redistributing the Work and assume any + risks associated with Your exercise of permissions under this License. + + 8. Limitation of Liability. In no event and under no legal theory, + whether in tort (including negligence), contract, or otherwise, + unless required by applicable law (such as deliberate and grossly + negligent acts) or agreed to in writing, shall any Contributor be + liable to You for damages, including any direct, indirect, special, + incidental, or consequential damages of any character arising as a + result of this License or out of the use or inability to use the + Work (including but not limited to damages for loss of goodwill, + work stoppage, computer failure or malfunction, or any and all + other commercial damages or losses), even if such Contributor + has been advised of the possibility of such damages. + + 9. Accepting Warranty or Additional Liability. While redistributing + the Work or Derivative Works thereof, You may choose to offer, + and charge a fee for, acceptance of support, warranty, indemnity, + or other liability obligations and/or rights consistent with this + License. However, in accepting such obligations, You may act only + on Your own behalf and on Your sole responsibility, not on behalf + of any other Contributor, and only if You agree to indemnify, + defend, and hold each Contributor harmless for any liability + incurred by, or claims asserted against, such Contributor by reason + of your accepting any such warranty or additional liability. + + END OF TERMS AND CONDITIONS + + APPENDIX: How to apply the Apache License to your work. + + To apply the Apache License to your work, attach the following + boilerplate notice, with the fields enclosed by brackets "[]" + replaced with your own identifying information. (Don't include + the brackets!) The text should be enclosed in the appropriate + comment syntax for the file format. We also recommend that a + file or class name and description of purpose be included on the + same "printed page" as the copyright notice for easier + identification within third-party archives. + + Copyright [yyyy] [name of copyright owner] + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. \ No newline at end of file diff --git a/vendor/code.cloudfoundry.org/bbs/format/encoding.go b/vendor/code.cloudfoundry.org/bbs/format/encoding.go index 37776147..4a5b6ff7 100644 --- a/vendor/code.cloudfoundry.org/bbs/format/encoding.go +++ b/vendor/code.cloudfoundry.org/bbs/format/encoding.go @@ -47,7 +47,7 @@ func (e *encoder) Decode(payload []byte) ([]byte, error) { } return e.decrypt(encrypted) default: - return nil, fmt.Errorf("Unknown encoding: %v", encoding) + return nil, fmt.Errorf("unknown encoding: %v", encoding) } } diff --git a/vendor/code.cloudfoundry.org/bbs/models/LICENSE b/vendor/code.cloudfoundry.org/bbs/models/LICENSE new file mode 100644 index 00000000..f49a4e16 --- /dev/null +++ b/vendor/code.cloudfoundry.org/bbs/models/LICENSE @@ -0,0 +1,201 @@ + Apache License + Version 2.0, January 2004 + http://www.apache.org/licenses/ + + TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION + + 1. Definitions. + + "License" shall mean the terms and conditions for use, reproduction, + and distribution as defined by Sections 1 through 9 of this document. + + "Licensor" shall mean the copyright owner or entity authorized by + the copyright owner that is granting the License. + + "Legal Entity" shall mean the union of the acting entity and all + other entities that control, are controlled by, or are under common + control with that entity. For the purposes of this definition, + "control" means (i) the power, direct or indirect, to cause the + direction or management of such entity, whether by contract or + otherwise, or (ii) ownership of fifty percent (50%) or more of the + outstanding shares, or (iii) beneficial ownership of such entity. + + "You" (or "Your") shall mean an individual or Legal Entity + exercising permissions granted by this License. + + "Source" form shall mean the preferred form for making modifications, + including but not limited to software source code, documentation + source, and configuration files. + + "Object" form shall mean any form resulting from mechanical + transformation or translation of a Source form, including but + not limited to compiled object code, generated documentation, + and conversions to other media types. + + "Work" shall mean the work of authorship, whether in Source or + Object form, made available under the License, as indicated by a + copyright notice that is included in or attached to the work + (an example is provided in the Appendix below). + + "Derivative Works" shall mean any work, whether in Source or Object + form, that is based on (or derived from) the Work and for which the + editorial revisions, annotations, elaborations, or other modifications + represent, as a whole, an original work of authorship. For the purposes + of this License, Derivative Works shall not include works that remain + separable from, or merely link (or bind by name) to the interfaces of, + the Work and Derivative Works thereof. + + "Contribution" shall mean any work of authorship, including + the original version of the Work and any modifications or additions + to that Work or Derivative Works thereof, that is intentionally + submitted to Licensor for inclusion in the Work by the copyright owner + or by an individual or Legal Entity authorized to submit on behalf of + the copyright owner. For the purposes of this definition, "submitted" + means any form of electronic, verbal, or written communication sent + to the Licensor or its representatives, including but not limited to + communication on electronic mailing lists, source code control systems, + and issue tracking systems that are managed by, or on behalf of, the + Licensor for the purpose of discussing and improving the Work, but + excluding communication that is conspicuously marked or otherwise + designated in writing by the copyright owner as "Not a Contribution." + + "Contributor" shall mean Licensor and any individual or Legal Entity + on behalf of whom a Contribution has been received by Licensor and + subsequently incorporated within the Work. + + 2. Grant of Copyright License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + copyright license to reproduce, prepare Derivative Works of, + publicly display, publicly perform, sublicense, and distribute the + Work and such Derivative Works in Source or Object form. + + 3. Grant of Patent License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + (except as stated in this section) patent license to make, have made, + use, offer to sell, sell, import, and otherwise transfer the Work, + where such license applies only to those patent claims licensable + by such Contributor that are necessarily infringed by their + Contribution(s) alone or by combination of their Contribution(s) + with the Work to which such Contribution(s) was submitted. If You + institute patent litigation against any entity (including a + cross-claim or counterclaim in a lawsuit) alleging that the Work + or a Contribution incorporated within the Work constitutes direct + or contributory patent infringement, then any patent licenses + granted to You under this License for that Work shall terminate + as of the date such litigation is filed. + + 4. Redistribution. You may reproduce and distribute copies of the + Work or Derivative Works thereof in any medium, with or without + modifications, and in Source or Object form, provided that You + meet the following conditions: + + (a) You must give any other recipients of the Work or + Derivative Works a copy of this License; and + + (b) You must cause any modified files to carry prominent notices + stating that You changed the files; and + + (c) You must retain, in the Source form of any Derivative Works + that You distribute, all copyright, patent, trademark, and + attribution notices from the Source form of the Work, + excluding those notices that do not pertain to any part of + the Derivative Works; and + + (d) If the Work includes a "NOTICE" text file as part of its + distribution, then any Derivative Works that You distribute must + include a readable copy of the attribution notices contained + within such NOTICE file, excluding those notices that do not + pertain to any part of the Derivative Works, in at least one + of the following places: within a NOTICE text file distributed + as part of the Derivative Works; within the Source form or + documentation, if provided along with the Derivative Works; or, + within a display generated by the Derivative Works, if and + wherever such third-party notices normally appear. The contents + of the NOTICE file are for informational purposes only and + do not modify the License. You may add Your own attribution + notices within Derivative Works that You distribute, alongside + or as an addendum to the NOTICE text from the Work, provided + that such additional attribution notices cannot be construed + as modifying the License. + + You may add Your own copyright statement to Your modifications and + may provide additional or different license terms and conditions + for use, reproduction, or distribution of Your modifications, or + for any such Derivative Works as a whole, provided Your use, + reproduction, and distribution of the Work otherwise complies with + the conditions stated in this License. + + 5. Submission of Contributions. Unless You explicitly state otherwise, + any Contribution intentionally submitted for inclusion in the Work + by You to the Licensor shall be under the terms and conditions of + this License, without any additional terms or conditions. + Notwithstanding the above, nothing herein shall supersede or modify + the terms of any separate license agreement you may have executed + with Licensor regarding such Contributions. + + 6. Trademarks. This License does not grant permission to use the trade + names, trademarks, service marks, or product names of the Licensor, + except as required for reasonable and customary use in describing the + origin of the Work and reproducing the content of the NOTICE file. + + 7. Disclaimer of Warranty. Unless required by applicable law or + agreed to in writing, Licensor provides the Work (and each + Contributor provides its Contributions) on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or + implied, including, without limitation, any warranties or conditions + of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A + PARTICULAR PURPOSE. You are solely responsible for determining the + appropriateness of using or redistributing the Work and assume any + risks associated with Your exercise of permissions under this License. + + 8. Limitation of Liability. In no event and under no legal theory, + whether in tort (including negligence), contract, or otherwise, + unless required by applicable law (such as deliberate and grossly + negligent acts) or agreed to in writing, shall any Contributor be + liable to You for damages, including any direct, indirect, special, + incidental, or consequential damages of any character arising as a + result of this License or out of the use or inability to use the + Work (including but not limited to damages for loss of goodwill, + work stoppage, computer failure or malfunction, or any and all + other commercial damages or losses), even if such Contributor + has been advised of the possibility of such damages. + + 9. Accepting Warranty or Additional Liability. While redistributing + the Work or Derivative Works thereof, You may choose to offer, + and charge a fee for, acceptance of support, warranty, indemnity, + or other liability obligations and/or rights consistent with this + License. However, in accepting such obligations, You may act only + on Your own behalf and on Your sole responsibility, not on behalf + of any other Contributor, and only if You agree to indemnify, + defend, and hold each Contributor harmless for any liability + incurred by, or claims asserted against, such Contributor by reason + of your accepting any such warranty or additional liability. + + END OF TERMS AND CONDITIONS + + APPENDIX: How to apply the Apache License to your work. + + To apply the Apache License to your work, attach the following + boilerplate notice, with the fields enclosed by brackets "[]" + replaced with your own identifying information. (Don't include + the brackets!) The text should be enclosed in the appropriate + comment syntax for the file format. We also recommend that a + file or class name and description of purpose be included on the + same "printed page" as the copyright notice for easier + identification within third-party archives. + + Copyright [yyyy] [name of copyright owner] + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. \ No newline at end of file diff --git a/vendor/code.cloudfoundry.org/bbs/models/actual_lrp.go b/vendor/code.cloudfoundry.org/bbs/models/actual_lrp.go index 759a7d62..0e0e731b 100644 --- a/vendor/code.cloudfoundry.org/bbs/models/actual_lrp.go +++ b/vendor/code.cloudfoundry.org/bbs/models/actual_lrp.go @@ -53,7 +53,22 @@ func NewActualLRPInstanceKey(instanceGuid string, cellId string) ActualLRPInstan } func NewActualLRPNetInfo(address string, instanceAddress string, preferredAddress ActualLRPNetInfo_PreferredAddress, ports ...*PortMapping) ActualLRPNetInfo { - return ActualLRPNetInfo{address, ports, instanceAddress, preferredAddress} + return ActualLRPNetInfo{ + Address: address, + Ports: ports, + InstanceAddress: instanceAddress, + PreferredAddress: preferredAddress, + } +} + +func NewActualLRPNetInfoWithIPv6(address, instanceAddress, instanceIPv6Address string, preferredAddress ActualLRPNetInfo_PreferredAddress, ports ...*PortMapping) ActualLRPNetInfo { + return ActualLRPNetInfo{ + Address: address, + Ports: ports, + InstanceAddress: instanceAddress, + PreferredAddress: preferredAddress, + InstanceIpv6Address: instanceIPv6Address, + } } func EmptyActualLRPNetInfo() ActualLRPNetInfo { diff --git a/vendor/code.cloudfoundry.org/bbs/models/actual_lrp.pb.go b/vendor/code.cloudfoundry.org/bbs/models/actual_lrp.pb.go index e9c46897..2a69b9a8 100644 --- a/vendor/code.cloudfoundry.org/bbs/models/actual_lrp.pb.go +++ b/vendor/code.cloudfoundry.org/bbs/models/actual_lrp.pb.go @@ -305,10 +305,11 @@ func (m *ActualLRPInstanceKey) GetCellId() string { } type ActualLRPNetInfo struct { - Address string `protobuf:"bytes,1,opt,name=address,proto3" json:"address"` - Ports []*PortMapping `protobuf:"bytes,2,rep,name=ports,proto3" json:"ports"` - InstanceAddress string `protobuf:"bytes,3,opt,name=instance_address,json=instanceAddress,proto3" json:"instance_address,omitempty"` - PreferredAddress ActualLRPNetInfo_PreferredAddress `protobuf:"varint,4,opt,name=preferred_address,json=preferredAddress,proto3,enum=models.ActualLRPNetInfo_PreferredAddress" json:"preferred_address"` + Address string `protobuf:"bytes,1,opt,name=address,proto3" json:"address"` + Ports []*PortMapping `protobuf:"bytes,2,rep,name=ports,proto3" json:"ports"` + InstanceAddress string `protobuf:"bytes,3,opt,name=instance_address,json=instanceAddress,proto3" json:"instance_address,omitempty"` + PreferredAddress ActualLRPNetInfo_PreferredAddress `protobuf:"varint,4,opt,name=preferred_address,json=preferredAddress,proto3,enum=models.ActualLRPNetInfo_PreferredAddress" json:"preferred_address"` + InstanceIpv6Address string `protobuf:"bytes,5,opt,name=instance_ipv6_address,json=instanceIpv6Address,proto3" json:"instance_ipv6_address,omitempty"` } func (m *ActualLRPNetInfo) Reset() { *m = ActualLRPNetInfo{} } @@ -371,6 +372,13 @@ func (m *ActualLRPNetInfo) GetPreferredAddress() ActualLRPNetInfo_PreferredAddre return ActualLRPNetInfo_PreferredAddressUnknown } +func (m *ActualLRPNetInfo) GetInstanceIpv6Address() string { + if m != nil { + return m.InstanceIpv6Address + } + return "" +} + type ActualLRPInternalRoute struct { Hostname string `protobuf:"bytes,1,opt,name=hostname,proto3" json:"hostname"` } @@ -585,82 +593,83 @@ func init() { func init() { proto.RegisterFile("actual_lrp.proto", fileDescriptor_25e5e77bfca46c1a) } var fileDescriptor_25e5e77bfca46c1a = []byte{ - // 1187 bytes of a gzipped FileDescriptorProto - 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0x74, 0x56, 0x4d, 0x6f, 0xdb, 0x46, - 0x13, 0x16, 0xe5, 0xd8, 0x96, 0x46, 0xb2, 0x4c, 0xaf, 0x9d, 0x98, 0xd0, 0x1b, 0x90, 0x8a, 0xf0, - 0x16, 0x75, 0x02, 0xc4, 0x69, 0x9d, 0xa0, 0x68, 0x03, 0xf4, 0x60, 0x3a, 0x6e, 0x6c, 0x24, 0x91, - 0x8d, 0xb5, 0xdd, 0xa2, 0x1f, 0x80, 0xba, 0xa6, 0xd6, 0x0a, 0x11, 0x8a, 0x4b, 0x2c, 0x57, 0x6e, - 0xd4, 0x53, 0x8f, 0x85, 0xd1, 0x43, 0x81, 0x5e, 0x7a, 0xf1, 0xbd, 0xbf, 0xa1, 0xbf, 0x20, 0x47, - 0x1f, 0x73, 0x22, 0x1a, 0xe5, 0x52, 0xf0, 0x94, 0x9f, 0x50, 0xec, 0xf2, 0x23, 0xb4, 0x14, 0x9f, - 0x76, 0xf7, 0xd9, 0x99, 0x67, 0x86, 0x33, 0xcf, 0x8e, 0x04, 0x3a, 0x71, 0xc4, 0x90, 0x78, 0x5d, - 0x8f, 0x07, 0xeb, 0x01, 0x67, 0x82, 0xa1, 0xb9, 0x01, 0xeb, 0x51, 0x2f, 0x6c, 0xde, 0xed, 0xbb, - 0xe2, 0xf9, 0xf0, 0x78, 0xdd, 0x61, 0x83, 0x7b, 0x7d, 0xd6, 0x67, 0xf7, 0xd4, 0xf5, 0xf1, 0xf0, - 0x44, 0x9d, 0xd4, 0x41, 0xed, 0x12, 0xb7, 0xe6, 0x8d, 0x01, 0xeb, 0xb9, 0x27, 0xae, 0x43, 0x84, - 0xcb, 0xfc, 0xae, 0x20, 0xfd, 0x04, 0x6f, 0x9f, 0x42, 0x63, 0x53, 0x85, 0x78, 0x8a, 0xf7, 0x1f, - 0x73, 0x36, 0x0c, 0xd0, 0x5d, 0xa8, 0xb8, 0x7e, 0x28, 0x88, 0xef, 0x50, 0x43, 0x6b, 0x69, 0x6b, - 0xb5, 0x8d, 0xa5, 0xf5, 0x24, 0xe6, 0x7a, 0x6e, 0x89, 0x73, 0x13, 0xf4, 0x29, 0x00, 0x3d, 0x25, - 0xce, 0x90, 0x08, 0xd7, 0xef, 0x1b, 0xe5, 0xab, 0x1c, 0x0a, 0x46, 0x0f, 0xcb, 0x86, 0xd6, 0xfe, - 0xa3, 0x0c, 0xb5, 0x7d, 0xc6, 0xc5, 0x33, 0x12, 0x04, 0xae, 0xdf, 0x47, 0x5f, 0x40, 0xc3, 0x61, - 0xbe, 0x20, 0xae, 0x4f, 0x79, 0x37, 0x60, 0x5c, 0xa8, 0xd8, 0x0b, 0x36, 0x8a, 0x23, 0x6b, 0xe2, - 0x06, 0x2f, 0xe4, 0x67, 0xc9, 0x80, 0xee, 0x40, 0xf5, 0x39, 0x0b, 0x45, 0xe2, 0x55, 0x56, 0x5e, - 0x0b, 0x71, 0x64, 0xbd, 0x07, 0x71, 0x45, 0x6e, 0x95, 0xed, 0x11, 0x18, 0xef, 0xc9, 0x84, 0x17, - 0x76, 0x03, 0xce, 0x5e, 0x8e, 0x12, 0xd7, 0x19, 0xe5, 0x7a, 0x33, 0x8e, 0xac, 0x2b, 0x6d, 0xf0, - 0xf5, 0xfc, 0xe6, 0xd0, 0x0b, 0xf7, 0x25, 0xae, 0x68, 0xbf, 0x82, 0x65, 0x15, 0x6d, 0x82, 0xf1, - 0x9a, 0x62, 0x5c, 0x8d, 0x23, 0xeb, 0x43, 0xd7, 0x58, 0x97, 0x60, 0x91, 0xa7, 0xfd, 0xab, 0x06, - 0xf5, 0xbc, 0x66, 0x4f, 0xe8, 0x08, 0xdd, 0x87, 0x7a, 0xc0, 0x99, 0x43, 0xc3, 0xb0, 0xdb, 0x1f, - 0xba, 0x3d, 0x55, 0x94, 0xaa, 0xad, 0xc7, 0x91, 0x75, 0x09, 0xc7, 0xb5, 0xf4, 0xf4, 0x78, 0xe8, - 0xf6, 0x90, 0x05, 0xb3, 0xae, 0xdf, 0xa3, 0x2f, 0x55, 0x31, 0x66, 0xed, 0x6a, 0x1c, 0x59, 0x09, - 0x80, 0x93, 0x05, 0xb5, 0x61, 0xae, 0xc7, 0x06, 0xc4, 0xf5, 0xd5, 0x37, 0x57, 0x6d, 0x88, 0x23, - 0x2b, 0x45, 0x70, 0xba, 0xb6, 0x05, 0xac, 0xe4, 0x99, 0xec, 0xa6, 0xcd, 0x96, 0x19, 0x7d, 0x06, - 0x0b, 0x59, 0xef, 0x8b, 0x29, 0x2d, 0xc5, 0x91, 0x75, 0xf9, 0x02, 0xd7, 0xb3, 0xa3, 0x4a, 0xea, - 0xff, 0x30, 0xef, 0x50, 0xcf, 0xeb, 0xba, 0x3d, 0x95, 0x56, 0xd5, 0xae, 0xc5, 0x91, 0x95, 0x41, - 0x78, 0x4e, 0x6e, 0x76, 0x7b, 0xed, 0x3f, 0x67, 0x40, 0xcf, 0xc3, 0x76, 0xa8, 0xd8, 0xf5, 0x4f, - 0x18, 0xfa, 0x08, 0xe6, 0x49, 0xaf, 0xc7, 0x69, 0x18, 0xa6, 0xc1, 0x94, 0x6b, 0x0a, 0xe1, 0x6c, - 0x83, 0x1e, 0xc0, 0xac, 0x2c, 0x6b, 0x68, 0x94, 0x5b, 0x33, 0x6b, 0xb5, 0x8d, 0xe5, 0x4c, 0x84, - 0x05, 0x99, 0x25, 0xb5, 0x50, 0x56, 0x38, 0x59, 0xd0, 0x6d, 0xd0, 0xf3, 0xb4, 0xb3, 0x28, 0xaa, - 0x2a, 0x78, 0x31, 0xc3, 0x37, 0xd3, 0x00, 0x03, 0x58, 0x0a, 0x38, 0x3d, 0xa1, 0x9c, 0xd3, 0x5e, - 0x6e, 0x2b, 0x7b, 0xdc, 0xd8, 0xb8, 0x3d, 0xa5, 0xf8, 0x34, 0xf9, 0xf5, 0xfd, 0xcc, 0x23, 0x65, - 0xb1, 0xaf, 0xc7, 0x91, 0x35, 0xcd, 0x83, 0xf5, 0x60, 0xc2, 0xb0, 0xfd, 0x9b, 0x06, 0xfa, 0xa4, - 0x37, 0x5a, 0x83, 0xf9, 0xa3, 0xce, 0x93, 0xce, 0xde, 0x37, 0x1d, 0xbd, 0xd4, 0xfc, 0xdf, 0xd9, - 0x79, 0x6b, 0x75, 0xd2, 0xe4, 0xc8, 0x7f, 0xe1, 0xb3, 0x9f, 0x7c, 0x74, 0x07, 0x2a, 0xbb, 0x9d, - 0x83, 0xc3, 0xcd, 0xce, 0xd6, 0xb6, 0xae, 0x35, 0x6f, 0x9e, 0x9d, 0xb7, 0x8c, 0x49, 0xd3, 0xac, - 0xaf, 0xa8, 0x0d, 0xd7, 0x76, 0xf6, 0x0e, 0x0e, 0xf5, 0x72, 0xd3, 0x38, 0x3b, 0x6f, 0xad, 0x4c, - 0xda, 0xed, 0xb0, 0x50, 0xb4, 0x6d, 0xb8, 0x51, 0x10, 0x84, 0xa0, 0xdc, 0x27, 0x1e, 0x66, 0x43, - 0x41, 0xd1, 0x1a, 0xa8, 0x07, 0xe6, 0x93, 0x01, 0x4d, 0x1b, 0x54, 0x8f, 0x23, 0x2b, 0xc7, 0x70, - 0xbe, 0x6b, 0xff, 0x5d, 0x81, 0x6a, 0x4e, 0x82, 0x76, 0xa0, 0xf1, 0x7e, 0xbc, 0x75, 0x5f, 0xd0, - 0x51, 0x3a, 0x6f, 0x56, 0xa6, 0x8a, 0xf9, 0x84, 0x8e, 0xec, 0xfa, 0xab, 0xc8, 0x2a, 0x5d, 0x44, - 0x96, 0x16, 0x47, 0x56, 0x09, 0xd7, 0x13, 0xcf, 0xa7, 0x3c, 0x90, 0xa2, 0x24, 0xb0, 0x5a, 0x60, - 0xca, 0xfb, 0x29, 0x29, 0x93, 0x89, 0x74, 0x73, 0x8a, 0xb2, 0xa0, 0xe9, 0x09, 0xea, 0x95, 0x9c, - 0xba, 0xa8, 0xfb, 0x23, 0x58, 0x2e, 0x84, 0xf0, 0xa9, 0xe8, 0xba, 0xfe, 0x09, 0x53, 0x52, 0xa9, - 0x6d, 0x18, 0x57, 0xb5, 0x7f, 0x82, 0x5a, 0xcf, 0xa9, 0x33, 0x6d, 0x7f, 0x02, 0x35, 0x87, 0x93, - 0xf0, 0x79, 0xd7, 0x61, 0x43, 0x3f, 0x99, 0x18, 0xb3, 0xf6, 0x62, 0x1c, 0x59, 0x45, 0x18, 0x83, - 0x3a, 0x6c, 0xc9, 0x3d, 0xba, 0x05, 0xf5, 0xe4, 0x8a, 0x53, 0x12, 0x32, 0xdf, 0x98, 0x55, 0x62, - 0x4d, 0xcc, 0xb1, 0x82, 0xe4, 0x00, 0x08, 0x05, 0x11, 0xd4, 0x98, 0x53, 0xdd, 0x50, 0xa2, 0x57, - 0x00, 0x4e, 0x16, 0xf4, 0x31, 0x2c, 0x06, 0x1e, 0x71, 0xe8, 0x80, 0xfa, 0xa2, 0x4b, 0x39, 0x67, - 0xdc, 0x98, 0x57, 0x34, 0x8d, 0x1c, 0xde, 0x96, 0xa8, 0x62, 0x72, 0xe5, 0x2f, 0x41, 0xa5, 0xa5, - 0xad, 0xcd, 0xa4, 0x4c, 0x12, 0xc0, 0xc9, 0x82, 0x7e, 0x00, 0x7d, 0xf2, 0x97, 0xc5, 0xa8, 0xaa, - 0x9a, 0xac, 0x66, 0x35, 0x79, 0x56, 0xb8, 0x3f, 0x24, 0x7d, 0xdb, 0x90, 0x25, 0x89, 0x23, 0x6b, - 0xca, 0x11, 0x2f, 0x0e, 0x2e, 0x9b, 0xa2, 0x47, 0x50, 0x09, 0x38, 0x0d, 0xa9, 0xcc, 0x00, 0xd4, - 0x43, 0x6b, 0x4e, 0x55, 0x5a, 0xbe, 0x30, 0x65, 0x91, 0xa8, 0x2e, 0xb3, 0xc7, 0xf9, 0x0e, 0x7d, - 0x0f, 0xcd, 0x4b, 0xea, 0x48, 0xb4, 0xdb, 0xe5, 0x52, 0xbc, 0xa1, 0x51, 0x53, 0xd3, 0xc2, 0xfc, - 0x80, 0x40, 0x0a, 0x1a, 0xc7, 0xab, 0x05, 0x51, 0x14, 0xf0, 0x10, 0xd9, 0x50, 0x1b, 0x50, 0xc1, - 0x5d, 0x47, 0x7e, 0x41, 0x68, 0xd4, 0x15, 0xdb, 0xad, 0xe9, 0x2c, 0x9f, 0x29, 0xa3, 0x43, 0xd2, - 0x0f, 0xb7, 0x7d, 0xc1, 0x47, 0x18, 0x06, 0x39, 0x20, 0x9f, 0xaa, 0x4c, 0x86, 0x1c, 0x7b, 0xd4, - 0x58, 0x68, 0x69, 0x6b, 0x95, 0xe4, 0x53, 0x32, 0x6c, 0xa7, 0x84, 0xf3, 0x3d, 0xb2, 0x61, 0x89, - 0x9c, 0x12, 0xd7, 0x23, 0xc7, 0xae, 0xe7, 0x8a, 0x51, 0xf7, 0x67, 0xe6, 0x53, 0xa3, 0xa1, 0xfa, - 0xac, 0x26, 0xcb, 0xd4, 0x25, 0xd6, 0x8b, 0xd0, 0x77, 0xcc, 0xa7, 0xcd, 0x2f, 0x61, 0x71, 0x22, - 0x1d, 0xa4, 0xc3, 0x4c, 0xf6, 0x00, 0xab, 0x58, 0x6e, 0xd1, 0x0a, 0xcc, 0x9e, 0x12, 0x6f, 0x48, - 0x93, 0x71, 0x8d, 0x93, 0xc3, 0xc3, 0xf2, 0xe7, 0x5a, 0xfb, 0x47, 0xa8, 0x64, 0x35, 0x47, 0x4d, - 0xa8, 0xec, 0xe1, 0x47, 0xbb, 0x9d, 0x4d, 0xfc, 0xad, 0x5e, 0x6a, 0xd6, 0xcf, 0xce, 0x5b, 0x95, - 0x3d, 0xde, 0x73, 0x7d, 0xc2, 0x47, 0xc8, 0x04, 0xd8, 0xfe, 0x7a, 0x73, 0xeb, 0x68, 0xf3, 0x70, - 0xb7, 0xf3, 0x58, 0xd7, 0x9a, 0x8d, 0xb3, 0xf3, 0x16, 0x6c, 0xe7, 0xff, 0x03, 0x90, 0x01, 0xf3, - 0x07, 0x47, 0x07, 0xfb, 0xdb, 0x5b, 0x72, 0xf0, 0xd4, 0xce, 0xce, 0x5b, 0xf3, 0x07, 0xc3, 0x30, - 0xa0, 0x8e, 0xb0, 0x97, 0x61, 0x89, 0x05, 0x52, 0x04, 0x69, 0x9b, 0xe4, 0x97, 0xdb, 0x0f, 0x2e, - 0xde, 0x98, 0xda, 0xeb, 0x37, 0x66, 0xe9, 0xdd, 0x1b, 0x53, 0xfb, 0x65, 0x6c, 0x6a, 0x7f, 0x8d, - 0x4d, 0xed, 0xd5, 0xd8, 0xd4, 0x2e, 0xc6, 0xa6, 0xf6, 0xcf, 0xd8, 0xd4, 0xfe, 0x1d, 0x9b, 0xa5, - 0x77, 0x63, 0x53, 0xfb, 0xfd, 0xad, 0x59, 0xba, 0x78, 0x6b, 0x96, 0x5e, 0xbf, 0x35, 0x4b, 0xc7, - 0x73, 0xea, 0x7f, 0xce, 0xfd, 0xff, 0x02, 0x00, 0x00, 0xff, 0xff, 0xa8, 0xf8, 0x7a, 0x0a, 0x4a, - 0x09, 0x00, 0x00, + // 1207 bytes of a gzipped FileDescriptorProto + 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0x74, 0x56, 0xcd, 0x6e, 0xdb, 0x46, + 0x10, 0x16, 0xed, 0xd8, 0x96, 0x46, 0xb2, 0x4c, 0xaf, 0x9d, 0x98, 0x50, 0x03, 0x52, 0x11, 0x5a, + 0xd4, 0x09, 0x10, 0xa7, 0x75, 0x82, 0xa0, 0x0d, 0xd0, 0x83, 0xe9, 0xb8, 0xb1, 0x90, 0x44, 0x36, + 0xd6, 0x76, 0x8b, 0xfe, 0x00, 0xea, 0x9a, 0x5a, 0x2b, 0x44, 0x28, 0x2e, 0xb1, 0x5c, 0xb9, 0x51, + 0x4f, 0x3d, 0x16, 0x46, 0x0f, 0x05, 0x7a, 0xf6, 0xbd, 0xcf, 0xd0, 0x27, 0xc8, 0xa1, 0x07, 0x1f, + 0x73, 0x22, 0x1a, 0xe5, 0x52, 0xf0, 0x94, 0x47, 0x28, 0x76, 0xf9, 0x13, 0x5a, 0x4a, 0x4e, 0x3b, + 0xfb, 0xcd, 0xcc, 0x37, 0xc3, 0xd9, 0x99, 0x91, 0x40, 0x27, 0x8e, 0x18, 0x12, 0xaf, 0xeb, 0xf1, + 0x60, 0x23, 0xe0, 0x4c, 0x30, 0x34, 0x3f, 0x60, 0x3d, 0xea, 0x85, 0x8d, 0xdb, 0x7d, 0x57, 0x3c, + 0x1b, 0x1e, 0x6f, 0x38, 0x6c, 0x70, 0xa7, 0xcf, 0xfa, 0xec, 0x8e, 0x52, 0x1f, 0x0f, 0x4f, 0xd4, + 0x4d, 0x5d, 0x94, 0x94, 0xb8, 0x35, 0xae, 0x0d, 0x58, 0xcf, 0x3d, 0x71, 0x1d, 0x22, 0x5c, 0xe6, + 0x77, 0x05, 0xe9, 0x27, 0x78, 0xeb, 0x14, 0xea, 0x5b, 0x2a, 0xc4, 0x13, 0xbc, 0xff, 0x88, 0xb3, + 0x61, 0x80, 0x6e, 0x43, 0xd9, 0xf5, 0x43, 0x41, 0x7c, 0x87, 0x1a, 0x5a, 0x53, 0x5b, 0xaf, 0x6e, + 0x2e, 0x6f, 0x24, 0x31, 0x37, 0x72, 0x4b, 0x9c, 0x9b, 0xa0, 0xcf, 0x01, 0xe8, 0x29, 0x71, 0x86, + 0x44, 0xb8, 0x7e, 0xdf, 0x98, 0xf9, 0x90, 0x43, 0xc1, 0xe8, 0xc1, 0x8c, 0xa1, 0xb5, 0xfe, 0x9c, + 0x81, 0xea, 0x3e, 0xe3, 0xe2, 0x29, 0x09, 0x02, 0xd7, 0xef, 0xa3, 0x2f, 0xa1, 0xee, 0x30, 0x5f, + 0x10, 0xd7, 0xa7, 0xbc, 0x1b, 0x30, 0x2e, 0x54, 0xec, 0x45, 0x1b, 0xc5, 0x91, 0x35, 0xa1, 0xc1, + 0x8b, 0xf9, 0x5d, 0x32, 0xa0, 0x5b, 0x50, 0x79, 0xc6, 0x42, 0x91, 0x78, 0xcd, 0x28, 0xaf, 0xc5, + 0x38, 0xb2, 0xde, 0x81, 0xb8, 0x2c, 0x45, 0x65, 0x7b, 0x04, 0xc6, 0x3b, 0x32, 0xe1, 0x85, 0xdd, + 0x80, 0xb3, 0x17, 0xa3, 0xc4, 0x75, 0x56, 0xb9, 0x5e, 0x8f, 0x23, 0xeb, 0x83, 0x36, 0xf8, 0x6a, + 0xae, 0x39, 0xf4, 0xc2, 0x7d, 0x89, 0x2b, 0xda, 0xaf, 0x61, 0x45, 0x45, 0x9b, 0x60, 0xbc, 0xa2, + 0x18, 0xd7, 0xe2, 0xc8, 0x7a, 0x9f, 0x1a, 0xeb, 0x12, 0x2c, 0xf2, 0xb4, 0x7e, 0xd3, 0xa0, 0x96, + 0xd7, 0xec, 0x31, 0x1d, 0xa1, 0xbb, 0x50, 0x0b, 0x38, 0x73, 0x68, 0x18, 0x76, 0xfb, 0x43, 0xb7, + 0xa7, 0x8a, 0x52, 0xb1, 0xf5, 0x38, 0xb2, 0x2e, 0xe1, 0xb8, 0x9a, 0xde, 0x1e, 0x0d, 0xdd, 0x1e, + 0xb2, 0x60, 0xce, 0xf5, 0x7b, 0xf4, 0x85, 0x2a, 0xc6, 0x9c, 0x5d, 0x89, 0x23, 0x2b, 0x01, 0x70, + 0x72, 0xa0, 0x16, 0xcc, 0xf7, 0xd8, 0x80, 0xb8, 0xbe, 0xfa, 0xe6, 0x8a, 0x0d, 0x71, 0x64, 0xa5, + 0x08, 0x4e, 0xcf, 0x96, 0x80, 0xd5, 0x3c, 0x93, 0x76, 0xfa, 0xd8, 0x32, 0xa3, 0xfb, 0xb0, 0x98, + 0xbd, 0x7d, 0x31, 0xa5, 0xe5, 0x38, 0xb2, 0x2e, 0x2b, 0x70, 0x2d, 0xbb, 0xaa, 0xa4, 0x3e, 0x86, + 0x05, 0x87, 0x7a, 0x5e, 0xd7, 0xed, 0xa9, 0xb4, 0x2a, 0x76, 0x35, 0x8e, 0xac, 0x0c, 0xc2, 0xf3, + 0x52, 0x68, 0xf7, 0x5a, 0xff, 0xcc, 0x82, 0x9e, 0x87, 0xed, 0x50, 0xd1, 0xf6, 0x4f, 0x18, 0xfa, + 0x04, 0x16, 0x48, 0xaf, 0xc7, 0x69, 0x18, 0xa6, 0xc1, 0x94, 0x6b, 0x0a, 0xe1, 0x4c, 0x40, 0xf7, + 0x60, 0x4e, 0x96, 0x35, 0x34, 0x66, 0x9a, 0xb3, 0xeb, 0xd5, 0xcd, 0x95, 0xac, 0x09, 0x0b, 0x6d, + 0x96, 0xd4, 0x42, 0x59, 0xe1, 0xe4, 0x40, 0x37, 0x41, 0xcf, 0xd3, 0xce, 0xa2, 0xa8, 0xaa, 0xe0, + 0xa5, 0x0c, 0xdf, 0x4a, 0x03, 0x0c, 0x60, 0x39, 0xe0, 0xf4, 0x84, 0x72, 0x4e, 0x7b, 0xb9, 0xad, + 0x7c, 0xe3, 0xfa, 0xe6, 0xcd, 0xa9, 0x8e, 0x4f, 0x93, 0xdf, 0xd8, 0xcf, 0x3c, 0x52, 0x16, 0xfb, + 0x6a, 0x1c, 0x59, 0xd3, 0x3c, 0x58, 0x0f, 0x26, 0x0c, 0xd1, 0x26, 0x5c, 0xcd, 0x33, 0x73, 0x83, + 0xd3, 0xfb, 0x79, 0xc8, 0x39, 0x95, 0xde, 0x4a, 0xa6, 0x6c, 0x07, 0xa7, 0xf7, 0x53, 0x9f, 0xd6, + 0xef, 0x1a, 0xe8, 0x93, 0x11, 0xd1, 0x3a, 0x2c, 0x1c, 0x75, 0x1e, 0x77, 0xf6, 0xbe, 0xed, 0xe8, + 0xa5, 0xc6, 0x47, 0x67, 0xe7, 0xcd, 0xb5, 0x49, 0x93, 0x23, 0xff, 0xb9, 0xcf, 0x7e, 0xf6, 0xd1, + 0x2d, 0x28, 0xb7, 0x3b, 0x07, 0x87, 0x5b, 0x9d, 0xed, 0x1d, 0x5d, 0x6b, 0x5c, 0x3f, 0x3b, 0x6f, + 0x1a, 0x93, 0xa6, 0x59, 0x2f, 0xa0, 0x16, 0x5c, 0xd9, 0xdd, 0x3b, 0x38, 0xd4, 0x67, 0x1a, 0xc6, + 0xd9, 0x79, 0x73, 0x75, 0xd2, 0x6e, 0x97, 0x85, 0xa2, 0x65, 0xc3, 0xb5, 0x42, 0x13, 0x09, 0xca, + 0x7d, 0xe2, 0x61, 0x36, 0x14, 0x14, 0xad, 0x83, 0x1a, 0x4a, 0x9f, 0x0c, 0x68, 0xfa, 0xa8, 0xb5, + 0x38, 0xb2, 0x72, 0x0c, 0xe7, 0x52, 0xeb, 0xef, 0x32, 0x54, 0x72, 0x12, 0xb4, 0x0b, 0xf5, 0x77, + 0x2b, 0xb1, 0xfb, 0x9c, 0x8e, 0xd2, 0x1d, 0xb5, 0x3a, 0xf5, 0x00, 0x8f, 0xe9, 0xc8, 0xae, 0xbd, + 0x8c, 0xac, 0xd2, 0x45, 0x64, 0x69, 0x71, 0x64, 0x95, 0x70, 0x2d, 0xf1, 0x7c, 0xc2, 0x03, 0xd9, + 0xc8, 0x04, 0xd6, 0x0a, 0x4c, 0x79, 0xa5, 0x25, 0x65, 0xb2, 0xc5, 0xae, 0x4f, 0x51, 0x16, 0xe6, + 0x60, 0x82, 0x7a, 0x35, 0xa7, 0x2e, 0xce, 0xca, 0x11, 0xac, 0x14, 0x42, 0xf8, 0x54, 0x74, 0x5d, + 0xff, 0x84, 0xa9, 0xf6, 0xaa, 0x6e, 0x1a, 0x1f, 0x6a, 0x99, 0x09, 0x6a, 0x3d, 0xa7, 0xce, 0xe6, + 0xe1, 0x33, 0xa8, 0x3a, 0x9c, 0x84, 0xcf, 0xba, 0x0e, 0x1b, 0xfa, 0xc9, 0x96, 0x99, 0xb3, 0x97, + 0xe2, 0xc8, 0x2a, 0xc2, 0x18, 0xd4, 0x65, 0x5b, 0xca, 0xe8, 0x06, 0xd4, 0x12, 0x15, 0xa7, 0x24, + 0x64, 0x7e, 0xda, 0x41, 0x89, 0x39, 0x56, 0x90, 0x5c, 0x1a, 0xa1, 0x20, 0x82, 0x1a, 0xf3, 0xea, + 0x35, 0xd4, 0xa0, 0x28, 0x00, 0x27, 0x07, 0xfa, 0x14, 0x96, 0x02, 0x8f, 0x38, 0x74, 0x40, 0x7d, + 0xd1, 0xa5, 0x9c, 0x33, 0x6e, 0x2c, 0x28, 0x9a, 0x7a, 0x0e, 0xef, 0x48, 0x54, 0x31, 0xb9, 0xf2, + 0xd7, 0xa3, 0xdc, 0xd4, 0xd6, 0x67, 0x53, 0x26, 0x09, 0xe0, 0xe4, 0x40, 0x3f, 0x82, 0x3e, 0xf9, + 0x6b, 0x64, 0x54, 0x54, 0x4d, 0xd6, 0xb2, 0x9a, 0x3c, 0x2d, 0xe8, 0x0f, 0x49, 0xdf, 0x36, 0x64, + 0x49, 0xe2, 0xc8, 0x9a, 0x72, 0xc4, 0x4b, 0x83, 0xcb, 0xa6, 0xe8, 0x21, 0x94, 0x03, 0x4e, 0x43, + 0x2a, 0x33, 0x00, 0x35, 0x9c, 0x8d, 0xa9, 0x4a, 0xcb, 0xa9, 0x54, 0x16, 0x49, 0xd7, 0x65, 0xf6, + 0x38, 0x97, 0xd0, 0x0f, 0xd0, 0xb8, 0xd4, 0x1d, 0x49, 0xef, 0x76, 0xb9, 0x6c, 0xde, 0xd0, 0xa8, + 0xaa, 0x0d, 0x63, 0xbe, 0xa7, 0x41, 0x0a, 0x3d, 0x8e, 0xd7, 0x0a, 0x4d, 0x51, 0xc0, 0x43, 0x64, + 0x43, 0x75, 0x40, 0x05, 0x77, 0x1d, 0xf9, 0x05, 0xa1, 0x51, 0x53, 0x6c, 0x37, 0xa6, 0xb3, 0x7c, + 0xaa, 0x8c, 0x0e, 0x49, 0x3f, 0xdc, 0xf1, 0x05, 0x1f, 0x61, 0x18, 0xe4, 0x80, 0x1c, 0x55, 0x99, + 0x0c, 0x39, 0xf6, 0xa8, 0xb1, 0xd8, 0xd4, 0xd6, 0xcb, 0xc9, 0xa7, 0x64, 0xd8, 0x6e, 0x09, 0xe7, + 0x32, 0xb2, 0x61, 0x99, 0x9c, 0x12, 0xd7, 0x23, 0xc7, 0xae, 0xe7, 0x8a, 0x51, 0xf7, 0x17, 0xe6, + 0x53, 0xa3, 0xae, 0xde, 0x59, 0x6d, 0xa3, 0x29, 0x25, 0xd6, 0x8b, 0xd0, 0xf7, 0xcc, 0xa7, 0x8d, + 0xaf, 0x60, 0x69, 0x22, 0x1d, 0xa4, 0xc3, 0x6c, 0x36, 0x80, 0x15, 0x2c, 0x45, 0xb4, 0x0a, 0x73, + 0xa7, 0xc4, 0x1b, 0xd2, 0x64, 0xc5, 0xe3, 0xe4, 0xf2, 0x60, 0xe6, 0x0b, 0xad, 0xf5, 0x13, 0x94, + 0xb3, 0x9a, 0xa3, 0x06, 0x94, 0xf7, 0xf0, 0xc3, 0x76, 0x67, 0x0b, 0x7f, 0xa7, 0x97, 0x1a, 0xb5, + 0xb3, 0xf3, 0x66, 0x79, 0x8f, 0xf7, 0x5c, 0x9f, 0xf0, 0x11, 0x32, 0x01, 0x76, 0xbe, 0xd9, 0xda, + 0x3e, 0xda, 0x3a, 0x6c, 0x77, 0x1e, 0xe9, 0x5a, 0xa3, 0x7e, 0x76, 0xde, 0x84, 0x9d, 0xfc, 0xbf, + 0x03, 0x32, 0x60, 0xe1, 0xe0, 0xe8, 0x60, 0x7f, 0x67, 0x5b, 0x2e, 0x9e, 0xea, 0xd9, 0x79, 0x73, + 0xe1, 0x60, 0x18, 0x06, 0xd4, 0x11, 0xf6, 0x0a, 0x2c, 0xb3, 0x40, 0x36, 0x41, 0xfa, 0x4c, 0xf2, + 0xcb, 0xed, 0x7b, 0x17, 0xaf, 0x4d, 0xed, 0xd5, 0x6b, 0xb3, 0xf4, 0xf6, 0xb5, 0xa9, 0xfd, 0x3a, + 0x36, 0xb5, 0xbf, 0xc6, 0xa6, 0xf6, 0x72, 0x6c, 0x6a, 0x17, 0x63, 0x53, 0xfb, 0x77, 0x6c, 0x6a, + 0xff, 0x8d, 0xcd, 0xd2, 0xdb, 0xb1, 0xa9, 0xfd, 0xf1, 0xc6, 0x2c, 0x5d, 0xbc, 0x31, 0x4b, 0xaf, + 0xde, 0x98, 0xa5, 0xe3, 0x79, 0xf5, 0xdf, 0xe8, 0xee, 0xff, 0x01, 0x00, 0x00, 0xff, 0xff, 0xe0, + 0x7b, 0x18, 0xfe, 0x7e, 0x09, 0x00, 0x00, } func (x ActualLRPNetInfo_PreferredAddress) String() string { @@ -830,6 +839,9 @@ func (this *ActualLRPNetInfo) Equal(that interface{}) bool { if this.PreferredAddress != that1.PreferredAddress { return false } + if this.InstanceIpv6Address != that1.InstanceIpv6Address { + return false + } return true } func (this *ActualLRPInternalRoute) Equal(that interface{}) bool { @@ -1014,7 +1026,7 @@ func (this *ActualLRPNetInfo) GoString() string { if this == nil { return "nil" } - s := make([]string, 0, 8) + s := make([]string, 0, 9) s = append(s, "&models.ActualLRPNetInfo{") s = append(s, "Address: "+fmt.Sprintf("%#v", this.Address)+",\n") if this.Ports != nil { @@ -1022,6 +1034,7 @@ func (this *ActualLRPNetInfo) GoString() string { } s = append(s, "InstanceAddress: "+fmt.Sprintf("%#v", this.InstanceAddress)+",\n") s = append(s, "PreferredAddress: "+fmt.Sprintf("%#v", this.PreferredAddress)+",\n") + s = append(s, "InstanceIpv6Address: "+fmt.Sprintf("%#v", this.InstanceIpv6Address)+",\n") s = append(s, "}") return strings.Join(s, "") } @@ -1279,6 +1292,13 @@ func (m *ActualLRPNetInfo) MarshalToSizedBuffer(dAtA []byte) (int, error) { _ = i var l int _ = l + if len(m.InstanceIpv6Address) > 0 { + i -= len(m.InstanceIpv6Address) + copy(dAtA[i:], m.InstanceIpv6Address) + i = encodeVarintActualLrp(dAtA, i, uint64(len(m.InstanceIpv6Address))) + i-- + dAtA[i] = 0x2a + } if m.PreferredAddress != 0 { i = encodeVarintActualLrp(dAtA, i, uint64(m.PreferredAddress)) i-- @@ -1619,6 +1639,10 @@ func (m *ActualLRPNetInfo) Size() (n int) { if m.PreferredAddress != 0 { n += 1 + sovActualLrp(uint64(m.PreferredAddress)) } + l = len(m.InstanceIpv6Address) + if l > 0 { + n += 1 + l + sovActualLrp(uint64(l)) + } return n } @@ -1771,6 +1795,7 @@ func (this *ActualLRPNetInfo) String() string { `Ports:` + repeatedStringForPorts + `,`, `InstanceAddress:` + fmt.Sprintf("%v", this.InstanceAddress) + `,`, `PreferredAddress:` + fmt.Sprintf("%v", this.PreferredAddress) + `,`, + `InstanceIpv6Address:` + fmt.Sprintf("%v", this.InstanceIpv6Address) + `,`, `}`, }, "") return s @@ -2482,6 +2507,38 @@ func (m *ActualLRPNetInfo) Unmarshal(dAtA []byte) error { break } } + case 5: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field InstanceIpv6Address", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowActualLrp + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + stringLen |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + intStringLen := int(stringLen) + if intStringLen < 0 { + return ErrInvalidLengthActualLrp + } + postIndex := iNdEx + intStringLen + if postIndex < 0 { + return ErrInvalidLengthActualLrp + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.InstanceIpv6Address = string(dAtA[iNdEx:postIndex]) + iNdEx = postIndex default: iNdEx = preIndex skippy, err := skipActualLrp(dAtA[iNdEx:]) diff --git a/vendor/code.cloudfoundry.org/bbs/models/actual_lrp.proto b/vendor/code.cloudfoundry.org/bbs/models/actual_lrp.proto index aa089c96..f4623c32 100644 --- a/vendor/code.cloudfoundry.org/bbs/models/actual_lrp.proto +++ b/vendor/code.cloudfoundry.org/bbs/models/actual_lrp.proto @@ -43,6 +43,7 @@ message ActualLRPNetInfo { } PreferredAddress preferred_address = 4 [(gogoproto.jsontag) = "preferred_address"]; + string instance_ipv6_address = 5; } message ActualLRPInternalRoute { diff --git a/vendor/code.cloudfoundry.org/bbs/models/auctioneer_types.go b/vendor/code.cloudfoundry.org/bbs/models/auctioneer_types.go new file mode 100644 index 00000000..1afc576b --- /dev/null +++ b/vendor/code.cloudfoundry.org/bbs/models/auctioneer_types.go @@ -0,0 +1,115 @@ +package models + +// Auctioneer types moved here from code.cloudfoundry.org/auctioneer +// to break the bbs <-> auctioneer module cycle. + +import ( + "errors" + + "code.cloudfoundry.org/lager/v3" +) + +// AuctioneerClient is the interface bbs uses to communicate with the auctioneer. +// auctioneer implements this interface. Defined here to break the bbs <-> auctioneer cycle. +// +//go:generate counterfeiter -o fakes/fake_auctioneer_client.go . AuctioneerClient +type AuctioneerClient interface { + RequestLRPAuctions(logger lager.Logger, traceID string, lrpStart []*LRPStartRequest) error + RequestTaskAuctions(logger lager.Logger, traceID string, tasks []*TaskStartRequest) error +} + +type TaskStartRequest struct { + Task SchedulingTask +} + +func NewTaskStartRequest(task SchedulingTask) TaskStartRequest { + return TaskStartRequest{Task: task} +} + +func NewTaskStartRequestFromModel(taskGuid, domain string, taskDef *TaskDefinition) TaskStartRequest { + volumeMounts := []string{} + for _, volumeMount := range taskDef.VolumeMounts { + volumeMounts = append(volumeMounts, volumeMount.Driver) + } + return TaskStartRequest{ + Task: NewSchedulingTask( + taskGuid, + domain, + NewResource(taskDef.MemoryMb, taskDef.DiskMb, taskDef.MaxPids), + NewPlacementConstraint(taskDef.RootFs, taskDef.PlacementTags, volumeMounts), + ), + } +} + +func (t *TaskStartRequest) Validate() error { + switch { + case t.Task.TaskGuid == "": + return errors.New("task guid is empty") + case !t.Task.Resource.Valid(): + return errors.New("resources cannot be less than zero") + case !t.Task.PlacementConstraint.Valid(): + return errors.New("placement constraint cannot be empty") + default: + return nil + } +} + +type LRPStartRequest struct { + ProcessGuid string `json:"process_guid"` + Domain string `json:"domain"` + Indices []int `json:"indices"` + PlacementConstraint + Resource +} + +func NewLRPStartRequest(processGuid, domain string, indices []int, res Resource, pl PlacementConstraint) LRPStartRequest { + return LRPStartRequest{ + ProcessGuid: processGuid, + Domain: domain, + Indices: indices, + Resource: res, + PlacementConstraint: pl, + } +} + +func NewLRPStartRequestFromModel(d *DesiredLRP, indices ...int) LRPStartRequest { + volumeDrivers := []string{} + for _, volumeMount := range d.VolumeMounts { + volumeDrivers = append(volumeDrivers, volumeMount.Driver) + } + + return NewLRPStartRequest( + d.ProcessGuid, + d.Domain, + indices, + NewResource(d.MemoryMb, d.DiskMb, d.MaxPids), + NewPlacementConstraint(d.RootFs, d.PlacementTags, volumeDrivers), + ) +} + +func NewLRPStartRequestFromSchedulingInfo(s *DesiredLRPSchedulingInfo, indices ...int) LRPStartRequest { + return NewLRPStartRequest( + s.ProcessGuid, + s.Domain, + indices, + NewResource(s.MemoryMb, s.DiskMb, s.MaxPids), + NewPlacementConstraint(s.RootFs, s.PlacementTags, s.VolumePlacement.DriverNames), + ) +} + +func (lrpstart *LRPStartRequest) Validate() error { + switch { + case lrpstart.ProcessGuid == "": + return errors.New("process guid is empty") + case lrpstart.Domain == "": + return errors.New("domain is empty") + case len(lrpstart.Indices) == 0: + return errors.New("indices must not be empty") + case !lrpstart.Resource.Valid(): + return errors.New("resources cannot be less than 0") + case !lrpstart.PlacementConstraint.Valid(): + return errors.New("placement constraint cannot be empty") + default: + return nil + } +} diff --git a/vendor/code.cloudfoundry.org/bbs/models/cell_presence.go b/vendor/code.cloudfoundry.org/bbs/models/cell_presence.go index 9c940670..754cbc05 100644 --- a/vendor/code.cloudfoundry.org/bbs/models/cell_presence.go +++ b/vendor/code.cloudfoundry.org/bbs/models/cell_presence.go @@ -1,6 +1,9 @@ package models -import "strings" +import ( + "encoding/json" + "strings" +) type CellSet map[string]*CellPresence @@ -72,18 +75,22 @@ func (cap CellCapacity) Validate() error { func NewCellPresence( cellID, repAddress, repUrl, zone string, capacity CellCapacity, - rootFSProviders, preloadedRootFSes, placementTags, optionalPlacementTags []string, + rootFSProviders, preloadedRootFSes, extraRootFSes, placementTags, optionalPlacementTags []string, + annotations map[string]string, ) CellPresence { var providers []*Provider - var pProviders []string - pProviders = append(pProviders, preloadedRootFSes...) - providers = append(providers, &Provider{PreloadedRootFSScheme, pProviders}) - providers = append(providers, &Provider{PreloadedOCIRootFSScheme, pProviders}) + providers = append(providers, &Provider{PreloadedRootFSScheme, preloadedRootFSes}) + providers = append(providers, &Provider{PreloadedOCIRootFSScheme, preloadedRootFSes}) + providers = append(providers, &Provider{ExtraRootFSScheme, extraRootFSes}) for _, prov := range rootFSProviders { providers = append(providers, &Provider{prov, []string{}}) } + if annotations == nil { + annotations = map[string]string{} + } + return CellPresence{ CellId: cellID, RepAddress: repAddress, @@ -93,6 +100,7 @@ func NewCellPresence( RootfsProviders: providers, PlacementTags: placementTags, OptionalPlacementTags: optionalPlacementTags, + Annotations: annotations, } } @@ -115,6 +123,13 @@ func (c CellPresence) Validate() error { validationError = validationError.Append(err) } + for k, v := range c.Annotations { + if k == "" || v == "" { + validationError = validationError.Append(ErrInvalidField{"annotations"}) + break + } + } + if !validationError.Empty() { return validationError } @@ -151,3 +166,11 @@ func (c *CellPresence) Copy() *CellPresence { newCellPresense := *c return &newCellPresense } + +func (c CellPresence) MarshalJSON() ([]byte, error) { + if c.Annotations == nil { + c.Annotations = map[string]string{} + } + type cellPresenceAlias CellPresence + return json.Marshal(cellPresenceAlias(c)) +} diff --git a/vendor/code.cloudfoundry.org/bbs/models/cells.pb.go b/vendor/code.cloudfoundry.org/bbs/models/cells.pb.go index 36d9d7b7..8e7b149d 100644 --- a/vendor/code.cloudfoundry.org/bbs/models/cells.pb.go +++ b/vendor/code.cloudfoundry.org/bbs/models/cells.pb.go @@ -7,6 +7,7 @@ import ( fmt "fmt" _ "github.com/gogo/protobuf/gogoproto" proto "github.com/gogo/protobuf/proto" + github_com_gogo_protobuf_sortkeys "github.com/gogo/protobuf/sortkeys" io "io" math "math" math_bits "math/bits" @@ -85,14 +86,15 @@ func (m *CellCapacity) GetContainers() int32 { } type CellPresence struct { - CellId string `protobuf:"bytes,1,opt,name=cell_id,json=cellId,proto3" json:"cell_id"` - RepAddress string `protobuf:"bytes,2,opt,name=rep_address,json=repAddress,proto3" json:"rep_address"` - Zone string `protobuf:"bytes,3,opt,name=zone,proto3" json:"zone"` - Capacity *CellCapacity `protobuf:"bytes,4,opt,name=capacity,proto3" json:"capacity,omitempty"` - RootfsProviders []*Provider `protobuf:"bytes,5,rep,name=rootfs_providers,json=rootfsProviders,proto3" json:"rootfs_provider_list,omitempty"` - PlacementTags []string `protobuf:"bytes,6,rep,name=placement_tags,json=placementTags,proto3" json:"placement_tags,omitempty"` - OptionalPlacementTags []string `protobuf:"bytes,7,rep,name=optional_placement_tags,json=optionalPlacementTags,proto3" json:"optional_placement_tags,omitempty"` - RepUrl string `protobuf:"bytes,8,opt,name=rep_url,json=repUrl,proto3" json:"rep_url"` + CellId string `protobuf:"bytes,1,opt,name=cell_id,json=cellId,proto3" json:"cell_id"` + RepAddress string `protobuf:"bytes,2,opt,name=rep_address,json=repAddress,proto3" json:"rep_address"` + Zone string `protobuf:"bytes,3,opt,name=zone,proto3" json:"zone"` + Capacity *CellCapacity `protobuf:"bytes,4,opt,name=capacity,proto3" json:"capacity,omitempty"` + RootfsProviders []*Provider `protobuf:"bytes,5,rep,name=rootfs_providers,json=rootfsProviders,proto3" json:"rootfs_provider_list,omitempty"` + PlacementTags []string `protobuf:"bytes,6,rep,name=placement_tags,json=placementTags,proto3" json:"placement_tags,omitempty"` + OptionalPlacementTags []string `protobuf:"bytes,7,rep,name=optional_placement_tags,json=optionalPlacementTags,proto3" json:"optional_placement_tags,omitempty"` + RepUrl string `protobuf:"bytes,8,opt,name=rep_url,json=repUrl,proto3" json:"rep_url"` + Annotations map[string]string `protobuf:"bytes,9,rep,name=annotations,proto3" json:"annotations" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"` } func (m *CellPresence) Reset() { *m = CellPresence{} } @@ -183,6 +185,13 @@ func (m *CellPresence) GetRepUrl() string { return "" } +func (m *CellPresence) GetAnnotations() map[string]string { + if m != nil { + return m.Annotations + } + return nil +} + type Provider struct { Name string `protobuf:"bytes,1,opt,name=name,proto3" json:"name"` Properties []string `protobuf:"bytes,2,rep,name=properties,proto3" json:"properties,omitempty"` @@ -288,6 +297,7 @@ func (m *CellsResponse) GetCells() []*CellPresence { func init() { proto.RegisterType((*CellCapacity)(nil), "models.CellCapacity") proto.RegisterType((*CellPresence)(nil), "models.CellPresence") + proto.RegisterMapType((map[string]string)(nil), "models.CellPresence.AnnotationsEntry") proto.RegisterType((*Provider)(nil), "models.Provider") proto.RegisterType((*CellsResponse)(nil), "models.CellsResponse") } @@ -295,42 +305,46 @@ func init() { func init() { proto.RegisterFile("cells.proto", fileDescriptor_842e821272d22ff7) } var fileDescriptor_842e821272d22ff7 = []byte{ - // 548 bytes of a gzipped FileDescriptorProto - 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0x5c, 0x53, 0x4f, 0x6f, 0xd3, 0x30, - 0x14, 0x4f, 0xe8, 0x9a, 0xb5, 0x0e, 0xdd, 0x26, 0x0b, 0x44, 0x35, 0x21, 0xa7, 0x2a, 0x43, 0xaa, - 0x26, 0xe8, 0xa6, 0x81, 0xb8, 0xd3, 0x09, 0x09, 0x0e, 0x93, 0x26, 0x0b, 0xce, 0x21, 0x7f, 0xde, - 0x4a, 0x44, 0x12, 0x5b, 0xb6, 0x8b, 0x54, 0x4e, 0x7c, 0x84, 0x7d, 0x00, 0x3e, 0x00, 0x1f, 0x85, - 0x63, 0x8f, 0x3b, 0x45, 0x34, 0xbd, 0xa0, 0x9c, 0xf6, 0x11, 0x90, 0x9d, 0x66, 0x2b, 0xbd, 0x58, - 0xbf, 0xf7, 0x7b, 0xbf, 0x67, 0x3f, 0xff, 0x9e, 0x8d, 0xdc, 0x08, 0xd2, 0x54, 0x8e, 0xb9, 0x60, - 0x8a, 0x61, 0x27, 0x63, 0x31, 0xa4, 0xf2, 0xf0, 0xe5, 0x34, 0x51, 0x5f, 0x66, 0xe1, 0x38, 0x62, - 0xd9, 0xc9, 0x94, 0x4d, 0xd9, 0x89, 0x49, 0x87, 0xb3, 0x2b, 0x13, 0x99, 0xc0, 0xa0, 0xba, 0xec, - 0xd0, 0x05, 0x21, 0x98, 0xa8, 0x83, 0xe1, 0xb5, 0x8d, 0x1e, 0x9e, 0x43, 0x9a, 0x9e, 0x07, 0x3c, - 0x88, 0x12, 0x35, 0xc7, 0xc7, 0xa8, 0x9b, 0x41, 0xc6, 0xc4, 0xdc, 0xcf, 0xc2, 0xbe, 0x3d, 0xb0, - 0x47, 0xed, 0x49, 0xaf, 0x2a, 0xbc, 0x7b, 0x92, 0x76, 0x6a, 0x78, 0x11, 0xe2, 0x23, 0xb4, 0x1b, - 0x27, 0xf2, 0xab, 0x56, 0x3e, 0x30, 0x4a, 0xb7, 0x2a, 0xbc, 0x86, 0xa2, 0x8e, 0x06, 0x17, 0x21, - 0x1e, 0x23, 0x14, 0xb1, 0x5c, 0x05, 0x49, 0x0e, 0x42, 0xf6, 0x5b, 0x46, 0xb8, 0x57, 0x15, 0xde, - 0x06, 0x4b, 0x37, 0xf0, 0xf0, 0x67, 0xab, 0x6e, 0xe9, 0x52, 0x80, 0x84, 0x3c, 0x02, 0x7d, 0x8c, - 0xbe, 0xb6, 0x9f, 0xc4, 0xa6, 0xa1, 0x6e, 0x7d, 0xcc, 0x9a, 0xa2, 0x8e, 0x06, 0x1f, 0x62, 0x7c, - 0x8a, 0x5c, 0x01, 0xdc, 0x0f, 0xe2, 0x58, 0x80, 0x94, 0xa6, 0xa1, 0xee, 0x64, 0xbf, 0x2a, 0xbc, - 0x4d, 0x9a, 0x22, 0x01, 0xfc, 0x6d, 0x8d, 0xf1, 0x53, 0xb4, 0xf3, 0x9d, 0xe5, 0x60, 0x5a, 0xea, - 0x4e, 0x3a, 0x55, 0xe1, 0x99, 0x98, 0x9a, 0x15, 0x9f, 0xa2, 0x4e, 0xb4, 0x36, 0xa5, 0xbf, 0x33, - 0xb0, 0x47, 0xee, 0xd9, 0xa3, 0x71, 0x6d, 0xf8, 0x78, 0xd3, 0x30, 0x7a, 0xa7, 0xc2, 0x3e, 0x3a, - 0x10, 0x8c, 0xa9, 0x2b, 0xe9, 0x73, 0xc1, 0xbe, 0x25, 0xb1, 0xbe, 0x6e, 0x7b, 0xd0, 0x1a, 0xb9, - 0x67, 0x07, 0x4d, 0xe5, 0xe5, 0x3a, 0x31, 0x19, 0x56, 0x85, 0x47, 0xb6, 0xd4, 0x7e, 0x9a, 0x48, - 0xf5, 0x82, 0x65, 0x89, 0x82, 0x8c, 0xab, 0x39, 0xdd, 0xaf, 0xf3, 0x4d, 0x8d, 0xc4, 0xcf, 0xd1, - 0x1e, 0x4f, 0x83, 0x08, 0x32, 0xc8, 0x95, 0xaf, 0x82, 0xa9, 0xec, 0x3b, 0x83, 0xd6, 0xa8, 0x4b, - 0x7b, 0x77, 0xec, 0xc7, 0x60, 0x2a, 0xf1, 0x1b, 0xf4, 0x84, 0x71, 0x95, 0xb0, 0x3c, 0x48, 0xfd, - 0x2d, 0xfd, 0xae, 0xd1, 0x3f, 0x6e, 0xd2, 0x97, 0xff, 0xd5, 0x1d, 0xa1, 0x5d, 0x6d, 0xd5, 0x4c, - 0xa4, 0xfd, 0xce, 0xbd, 0xcf, 0x6b, 0x8a, 0x3a, 0x02, 0xf8, 0x27, 0x91, 0x0e, 0xdf, 0xa3, 0x4e, - 0xd3, 0x91, 0x76, 0x30, 0x0f, 0x32, 0x58, 0x8f, 0xc5, 0x38, 0xa8, 0x63, 0x6a, 0x56, 0x4c, 0x10, - 0xe2, 0x82, 0x71, 0x10, 0x2a, 0x01, 0x3d, 0x10, 0x7d, 0xf4, 0x06, 0x33, 0xfc, 0x8c, 0x7a, 0xda, - 0x49, 0x49, 0x41, 0x72, 0x96, 0x4b, 0xc0, 0xcf, 0x50, 0xdb, 0xbc, 0x4d, 0xb3, 0x9f, 0x7b, 0xd6, - 0x6b, 0x5c, 0x7b, 0xa7, 0x49, 0x5a, 0xe7, 0xf0, 0x31, 0x6a, 0x9b, 0x4f, 0x60, 0x36, 0xdc, 0x1a, - 0x4a, 0xf3, 0x64, 0x68, 0x2d, 0x99, 0xbc, 0x5e, 0x2c, 0x89, 0x75, 0xb3, 0x24, 0xd6, 0xed, 0x92, - 0xd8, 0x3f, 0x4a, 0x62, 0xff, 0x2a, 0x89, 0xfd, 0xbb, 0x24, 0xf6, 0xa2, 0x24, 0xf6, 0x9f, 0x92, - 0xd8, 0x7f, 0x4b, 0x62, 0xdd, 0x96, 0xc4, 0xbe, 0x5e, 0x11, 0x6b, 0xb1, 0x22, 0xd6, 0xcd, 0x8a, - 0x58, 0xa1, 0x63, 0xbe, 0xc6, 0xab, 0x7f, 0x01, 0x00, 0x00, 0xff, 0xff, 0x12, 0x8c, 0x77, 0x8d, - 0x6d, 0x03, 0x00, 0x00, + // 617 bytes of a gzipped FileDescriptorProto + 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0x5c, 0x53, 0xc1, 0x6a, 0xdb, 0x4c, + 0x10, 0xb6, 0xe2, 0xd8, 0xb1, 0x57, 0xbf, 0x13, 0xb3, 0xe4, 0xa7, 0x26, 0x94, 0xb5, 0x71, 0x13, + 0x30, 0xa1, 0x75, 0x42, 0x5a, 0x4a, 0xe9, 0xa1, 0x10, 0x87, 0x40, 0x7b, 0x08, 0x84, 0xa5, 0x85, + 0xde, 0x54, 0x59, 0x9a, 0xb8, 0x22, 0x92, 0x76, 0xd9, 0x5d, 0x07, 0xdc, 0x53, 0x1f, 0x21, 0x8f, + 0xd1, 0x27, 0xe8, 0x33, 0xf4, 0x98, 0x63, 0x4e, 0xa6, 0x51, 0x2e, 0x45, 0xa7, 0x3c, 0x42, 0xd9, + 0x5d, 0x2b, 0x56, 0x7d, 0x11, 0xf3, 0x7d, 0xf3, 0xcd, 0x6a, 0xe6, 0x9b, 0x5d, 0xe4, 0x06, 0x10, + 0xc7, 0x72, 0xc8, 0x05, 0x53, 0x0c, 0xd7, 0x13, 0x16, 0x42, 0x2c, 0x77, 0x5e, 0x4c, 0x22, 0xf5, + 0x75, 0x3a, 0x1e, 0x06, 0x2c, 0x39, 0x98, 0xb0, 0x09, 0x3b, 0x30, 0xe9, 0xf1, 0xf4, 0xc2, 0x20, + 0x03, 0x4c, 0x64, 0xcb, 0x76, 0x5c, 0x10, 0x82, 0x09, 0x0b, 0xfa, 0xd7, 0x0e, 0xfa, 0xef, 0x04, + 0xe2, 0xf8, 0xc4, 0xe7, 0x7e, 0x10, 0xa9, 0x19, 0xde, 0x47, 0xcd, 0x04, 0x12, 0x26, 0x66, 0x5e, + 0x32, 0xee, 0x38, 0x3d, 0x67, 0x50, 0x1b, 0xb5, 0xf2, 0x79, 0x77, 0x49, 0xd2, 0x86, 0x0d, 0xcf, + 0xc6, 0x78, 0x17, 0x6d, 0x84, 0x91, 0xbc, 0xd4, 0xca, 0x35, 0xa3, 0x74, 0xf3, 0x79, 0xb7, 0xa0, + 0x68, 0x5d, 0x07, 0x67, 0x63, 0x3c, 0x44, 0x28, 0x60, 0xa9, 0xf2, 0xa3, 0x14, 0x84, 0xec, 0x54, + 0x8d, 0x70, 0x33, 0x9f, 0x77, 0x4b, 0x2c, 0x2d, 0xc5, 0xfd, 0x9f, 0xeb, 0xb6, 0xa5, 0x73, 0x01, + 0x12, 0xd2, 0x00, 0xf4, 0x6f, 0xf4, 0xd8, 0x5e, 0x14, 0x9a, 0x86, 0x9a, 0xf6, 0x37, 0x0b, 0x8a, + 0xd6, 0x75, 0xf0, 0x21, 0xc4, 0x87, 0xc8, 0x15, 0xc0, 0x3d, 0x3f, 0x0c, 0x05, 0x48, 0x69, 0x1a, + 0x6a, 0x8e, 0xb6, 0xf2, 0x79, 0xb7, 0x4c, 0x53, 0x24, 0x80, 0x1f, 0xdb, 0x18, 0x3f, 0x45, 0xeb, + 0xdf, 0x58, 0x0a, 0xa6, 0xa5, 0xe6, 0xa8, 0x91, 0xcf, 0xbb, 0x06, 0x53, 0xf3, 0xc5, 0x87, 0xa8, + 0x11, 0x2c, 0x4c, 0xe9, 0xac, 0xf7, 0x9c, 0x81, 0x7b, 0xb4, 0x3d, 0xb4, 0x86, 0x0f, 0xcb, 0x86, + 0xd1, 0x47, 0x15, 0xf6, 0x50, 0x5b, 0x30, 0xa6, 0x2e, 0xa4, 0xc7, 0x05, 0xbb, 0x8a, 0x42, 0x3d, + 0x6e, 0xad, 0x57, 0x1d, 0xb8, 0x47, 0xed, 0xa2, 0xf2, 0x7c, 0x91, 0x18, 0xf5, 0xf3, 0x79, 0x97, + 0xac, 0xa8, 0xbd, 0x38, 0x92, 0xea, 0x39, 0x4b, 0x22, 0x05, 0x09, 0x57, 0x33, 0xba, 0x65, 0xf3, + 0x45, 0x8d, 0xc4, 0x7b, 0x68, 0x93, 0xc7, 0x7e, 0x00, 0x09, 0xa4, 0xca, 0x53, 0xfe, 0x44, 0x76, + 0xea, 0xbd, 0xea, 0xa0, 0x49, 0x5b, 0x8f, 0xec, 0x47, 0x7f, 0x22, 0xf1, 0x6b, 0xf4, 0x84, 0x71, + 0x15, 0xb1, 0xd4, 0x8f, 0xbd, 0x15, 0xfd, 0x86, 0xd1, 0xff, 0x5f, 0xa4, 0xcf, 0xff, 0xa9, 0xdb, + 0x45, 0x1b, 0xda, 0xaa, 0xa9, 0x88, 0x3b, 0x8d, 0xa5, 0xcf, 0x0b, 0x8a, 0xd6, 0x05, 0xf0, 0x4f, + 0x22, 0xc6, 0x9f, 0x91, 0xeb, 0xa7, 0x29, 0x53, 0xbe, 0x3e, 0x42, 0x76, 0x9a, 0x66, 0xc0, 0xbd, + 0xb2, 0x35, 0xc5, 0xe2, 0x86, 0xc7, 0x4b, 0xdd, 0x69, 0xaa, 0xc4, 0xcc, 0xae, 0xa3, 0x54, 0x4d, + 0xcb, 0x60, 0xe7, 0x1d, 0x6a, 0xaf, 0x56, 0xe0, 0x36, 0xaa, 0x5e, 0xc2, 0xcc, 0xee, 0x9d, 0xea, + 0x10, 0x6f, 0xa3, 0xda, 0x95, 0x1f, 0x4f, 0xc1, 0x6e, 0x98, 0x5a, 0xf0, 0x76, 0xed, 0x8d, 0xd3, + 0x7f, 0x8f, 0x1a, 0x85, 0x57, 0x7a, 0xb7, 0xa9, 0x9f, 0xc0, 0xe2, 0xc2, 0x98, 0xdd, 0x6a, 0x4c, + 0xcd, 0x17, 0x13, 0x84, 0xb8, 0x60, 0x1c, 0x84, 0x8a, 0x40, 0x5f, 0x15, 0x6d, 0x4a, 0x89, 0xe9, + 0x7f, 0x41, 0x2d, 0x3d, 0x88, 0xa4, 0x20, 0x39, 0x4b, 0x25, 0xe0, 0x67, 0xa8, 0x66, 0x5e, 0x8d, + 0x39, 0xcf, 0x3d, 0x6a, 0x15, 0xe3, 0x9e, 0x6a, 0x92, 0xda, 0x1c, 0xde, 0x47, 0x35, 0xf3, 0x3c, + 0xcd, 0x81, 0x2b, 0xd7, 0xa5, 0xf0, 0x84, 0x5a, 0xc9, 0xe8, 0xd5, 0xcd, 0x1d, 0xa9, 0xdc, 0xde, + 0x91, 0xca, 0xc3, 0x1d, 0x71, 0xbe, 0x67, 0xc4, 0xf9, 0x91, 0x11, 0xe7, 0x57, 0x46, 0x9c, 0x9b, + 0x8c, 0x38, 0xbf, 0x33, 0xe2, 0xfc, 0xc9, 0x48, 0xe5, 0x21, 0x23, 0xce, 0xf5, 0x3d, 0xa9, 0xdc, + 0xdc, 0x93, 0xca, 0xed, 0x3d, 0xa9, 0x8c, 0xeb, 0xe6, 0xd1, 0xbe, 0xfc, 0x1b, 0x00, 0x00, 0xff, + 0xff, 0x33, 0xf0, 0xd9, 0x22, 0x07, 0x04, 0x00, 0x00, } func (this *CellCapacity) Equal(that interface{}) bool { @@ -421,6 +435,14 @@ func (this *CellPresence) Equal(that interface{}) bool { if this.RepUrl != that1.RepUrl { return false } + if len(this.Annotations) != len(that1.Annotations) { + return false + } + for i := range this.Annotations { + if this.Annotations[i] != that1.Annotations[i] { + return false + } + } return true } func (this *Provider) Equal(that interface{}) bool { @@ -503,7 +525,7 @@ func (this *CellPresence) GoString() string { if this == nil { return "nil" } - s := make([]string, 0, 12) + s := make([]string, 0, 13) s = append(s, "&models.CellPresence{") s = append(s, "CellId: "+fmt.Sprintf("%#v", this.CellId)+",\n") s = append(s, "RepAddress: "+fmt.Sprintf("%#v", this.RepAddress)+",\n") @@ -517,6 +539,19 @@ func (this *CellPresence) GoString() string { s = append(s, "PlacementTags: "+fmt.Sprintf("%#v", this.PlacementTags)+",\n") s = append(s, "OptionalPlacementTags: "+fmt.Sprintf("%#v", this.OptionalPlacementTags)+",\n") s = append(s, "RepUrl: "+fmt.Sprintf("%#v", this.RepUrl)+",\n") + keysForAnnotations := make([]string, 0, len(this.Annotations)) + for k, _ := range this.Annotations { + keysForAnnotations = append(keysForAnnotations, k) + } + github_com_gogo_protobuf_sortkeys.Strings(keysForAnnotations) + mapStringForAnnotations := "map[string]string{" + for _, k := range keysForAnnotations { + mapStringForAnnotations += fmt.Sprintf("%#v: %#v,", k, this.Annotations[k]) + } + mapStringForAnnotations += "}" + if this.Annotations != nil { + s = append(s, "Annotations: "+mapStringForAnnotations+",\n") + } s = append(s, "}") return strings.Join(s, "") } @@ -612,6 +647,25 @@ func (m *CellPresence) MarshalToSizedBuffer(dAtA []byte) (int, error) { _ = i var l int _ = l + if len(m.Annotations) > 0 { + for k := range m.Annotations { + v := m.Annotations[k] + baseI := i + i -= len(v) + copy(dAtA[i:], v) + i = encodeVarintCells(dAtA, i, uint64(len(v))) + i-- + dAtA[i] = 0x12 + i -= len(k) + copy(dAtA[i:], k) + i = encodeVarintCells(dAtA, i, uint64(len(k))) + i-- + dAtA[i] = 0xa + i = encodeVarintCells(dAtA, i, uint64(baseI-i)) + i-- + dAtA[i] = 0x4a + } + } if len(m.RepUrl) > 0 { i -= len(m.RepUrl) copy(dAtA[i:], m.RepUrl) @@ -848,6 +902,14 @@ func (m *CellPresence) Size() (n int) { if l > 0 { n += 1 + l + sovCells(uint64(l)) } + if len(m.Annotations) > 0 { + for k, v := range m.Annotations { + _ = k + _ = v + mapEntrySize := 1 + len(k) + sovCells(uint64(len(k))) + 1 + len(v) + sovCells(uint64(len(v))) + n += mapEntrySize + 1 + sovCells(uint64(mapEntrySize)) + } + } return n } @@ -916,6 +978,16 @@ func (this *CellPresence) String() string { repeatedStringForRootfsProviders += strings.Replace(f.String(), "Provider", "Provider", 1) + "," } repeatedStringForRootfsProviders += "}" + keysForAnnotations := make([]string, 0, len(this.Annotations)) + for k, _ := range this.Annotations { + keysForAnnotations = append(keysForAnnotations, k) + } + github_com_gogo_protobuf_sortkeys.Strings(keysForAnnotations) + mapStringForAnnotations := "map[string]string{" + for _, k := range keysForAnnotations { + mapStringForAnnotations += fmt.Sprintf("%v: %v,", k, this.Annotations[k]) + } + mapStringForAnnotations += "}" s := strings.Join([]string{`&CellPresence{`, `CellId:` + fmt.Sprintf("%v", this.CellId) + `,`, `RepAddress:` + fmt.Sprintf("%v", this.RepAddress) + `,`, @@ -925,6 +997,7 @@ func (this *CellPresence) String() string { `PlacementTags:` + fmt.Sprintf("%v", this.PlacementTags) + `,`, `OptionalPlacementTags:` + fmt.Sprintf("%v", this.OptionalPlacementTags) + `,`, `RepUrl:` + fmt.Sprintf("%v", this.RepUrl) + `,`, + `Annotations:` + mapStringForAnnotations + `,`, `}`, }, "") return s @@ -1362,6 +1435,133 @@ func (m *CellPresence) Unmarshal(dAtA []byte) error { } m.RepUrl = string(dAtA[iNdEx:postIndex]) iNdEx = postIndex + case 9: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Annotations", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowCells + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + msglen |= int(b&0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthCells + } + postIndex := iNdEx + msglen + if postIndex < 0 { + return ErrInvalidLengthCells + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + if m.Annotations == nil { + m.Annotations = make(map[string]string) + } + var mapkey string + var mapvalue string + for iNdEx < postIndex { + entryPreIndex := iNdEx + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowCells + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + wire |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + fieldNum := int32(wire >> 3) + if fieldNum == 1 { + var stringLenmapkey uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowCells + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + stringLenmapkey |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + intStringLenmapkey := int(stringLenmapkey) + if intStringLenmapkey < 0 { + return ErrInvalidLengthCells + } + postStringIndexmapkey := iNdEx + intStringLenmapkey + if postStringIndexmapkey < 0 { + return ErrInvalidLengthCells + } + if postStringIndexmapkey > l { + return io.ErrUnexpectedEOF + } + mapkey = string(dAtA[iNdEx:postStringIndexmapkey]) + iNdEx = postStringIndexmapkey + } else if fieldNum == 2 { + var stringLenmapvalue uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowCells + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + stringLenmapvalue |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + intStringLenmapvalue := int(stringLenmapvalue) + if intStringLenmapvalue < 0 { + return ErrInvalidLengthCells + } + postStringIndexmapvalue := iNdEx + intStringLenmapvalue + if postStringIndexmapvalue < 0 { + return ErrInvalidLengthCells + } + if postStringIndexmapvalue > l { + return io.ErrUnexpectedEOF + } + mapvalue = string(dAtA[iNdEx:postStringIndexmapvalue]) + iNdEx = postStringIndexmapvalue + } else { + iNdEx = entryPreIndex + skippy, err := skipCells(dAtA[iNdEx:]) + if err != nil { + return err + } + if (skippy < 0) || (iNdEx+skippy) < 0 { + return ErrInvalidLengthCells + } + if (iNdEx + skippy) > postIndex { + return io.ErrUnexpectedEOF + } + iNdEx += skippy + } + } + m.Annotations[mapkey] = mapvalue + iNdEx = postIndex default: iNdEx = preIndex skippy, err := skipCells(dAtA[iNdEx:]) diff --git a/vendor/code.cloudfoundry.org/bbs/models/cells.proto b/vendor/code.cloudfoundry.org/bbs/models/cells.proto index e73a028a..1fd7e742 100644 --- a/vendor/code.cloudfoundry.org/bbs/models/cells.proto +++ b/vendor/code.cloudfoundry.org/bbs/models/cells.proto @@ -20,6 +20,7 @@ message CellPresence { repeated string placement_tags = 6; repeated string optional_placement_tags = 7; string rep_url = 8 [(gogoproto.jsontag) = "rep_url"]; + map annotations = 9 [(gogoproto.jsontag) = "annotations"]; } message Provider { diff --git a/vendor/code.cloudfoundry.org/bbs/models/desired_lrp.go b/vendor/code.cloudfoundry.org/bbs/models/desired_lrp.go index 7a920ce9..7783d362 100644 --- a/vendor/code.cloudfoundry.org/bbs/models/desired_lrp.go +++ b/vendor/code.cloudfoundry.org/bbs/models/desired_lrp.go @@ -13,6 +13,7 @@ import ( const PreloadedRootFSScheme = "preloaded" const PreloadedOCIRootFSScheme = "preloaded+layer" +const ExtraRootFSScheme = "extra" const volumeMountedFilesMaxAllowedSize = 1 * 1024 * 1024 // 1MB in bytes @@ -26,6 +27,7 @@ type DesiredLRPChange struct { type DesiredLRPFilter struct { Domain string ProcessGuids []string + AppGuids []string } func PreloadedRootFS(stack string) string { @@ -35,7 +37,7 @@ func PreloadedRootFS(stack string) string { }).String() } -func NewDesiredLRP(schedInfo DesiredLRPSchedulingInfo, runInfo DesiredLRPRunInfo, metricTags map[string]*MetricTagValue) DesiredLRP { +func NewDesiredLRP(schedInfo DesiredLRPSchedulingInfo, runInfo DesiredLRPRunInfo, metricTags map[string]*MetricTagValue, updateStrategy DesiredLRP_UpdateStrategy) DesiredLRP { environmentVariables := make([]*EnvironmentVariable, len(runInfo.EnvironmentVariables)) for i := range runInfo.EnvironmentVariables { environmentVariables[i] = &runInfo.EnvironmentVariables[i] @@ -87,6 +89,7 @@ func NewDesiredLRP(schedInfo DesiredLRPSchedulingInfo, runInfo DesiredLRPRunInfo Sidecars: runInfo.Sidecars, LogRateLimit: runInfo.LogRateLimit, VolumeMountedFiles: volumeMountedFiles, + UpdateStrategy: updateStrategy, } } @@ -426,6 +429,16 @@ func (desired *DesiredLRPUpdate) Validate() error { validationError = validationError.Append(err) } + // Validate that image_username and image_password are provided together + usernameExists := desired.ImageUsernameExists() + passwordExists := desired.ImagePasswordExists() + if usernameExists && !passwordExists { + validationError = validationError.Append(ErrInvalidField{"image_password"}) + } + if !usernameExists && passwordExists { + validationError = validationError.Append(ErrInvalidField{"image_username"}) + } + return validationError.ToError() } @@ -492,11 +505,53 @@ func (desired DesiredLRPUpdate) IsMetricTagsUpdated(existingTags map[string]*Met return false } +func (desired *DesiredLRPUpdate) SetImageUsername(imageUsername string) { + desired.OptionalImageUsername = &DesiredLRPUpdate_ImageUsername{ + ImageUsername: imageUsername, + } +} + +func (desired DesiredLRPUpdate) ImageUsernameExists() bool { + _, ok := desired.GetOptionalImageUsername().(*DesiredLRPUpdate_ImageUsername) + return ok +} + +func (desired *DesiredLRPUpdate) SetImagePassword(imagePassword string) { + desired.OptionalImagePassword = &DesiredLRPUpdate_ImagePassword{ + ImagePassword: imagePassword, + } +} + +func (desired DesiredLRPUpdate) ImagePasswordExists() bool { + _, ok := desired.GetOptionalImagePassword().(*DesiredLRPUpdate_ImagePassword) + return ok +} + +func (desired DesiredLRPUpdate) IsImageCredentialsUpdated(existingLRP *DesiredLRP) bool { + updateUsername := desired.ImageUsernameExists() + updatePassword := desired.ImagePasswordExists() + + if !updateUsername && !updatePassword { + return false + } + + existingUsername := existingLRP.GetImageUsername() + existingPassword := existingLRP.GetImagePassword() + + if updateUsername && updatePassword { + return desired.GetImageUsername() != existingUsername || desired.GetImagePassword() != existingPassword + } + + return false +} + type internalDesiredLRPUpdate struct { - Instances *int32 `json:"instances,omitempty"` - Routes *Routes `json:"routes,omitempty"` - Annotation *string `json:"annotation,omitempty"` - MetricTags map[string]*MetricTagValue `json:"metric_tags,omitempty"` + Instances *int32 `json:"instances,omitempty"` + Routes *Routes `json:"routes,omitempty"` + Annotation *string `json:"annotation,omitempty"` + MetricTags map[string]*MetricTagValue `json:"metric_tags,omitempty"` + ImageUsername *string `json:"image_username,omitempty"` + ImagePassword *string `json:"image_password,omitempty"` } func (desired *DesiredLRPUpdate) UnmarshalJSON(data []byte) error { @@ -513,6 +568,12 @@ func (desired *DesiredLRPUpdate) UnmarshalJSON(data []byte) error { desired.SetAnnotation(*update.Annotation) } desired.MetricTags = update.MetricTags + if update.ImageUsername != nil { + desired.SetImageUsername(*update.ImageUsername) + } + if update.ImagePassword != nil { + desired.SetImagePassword(*update.ImagePassword) + } return nil } @@ -529,6 +590,14 @@ func (desired DesiredLRPUpdate) MarshalJSON() ([]byte, error) { update.Annotation = &a } update.MetricTags = desired.MetricTags + if desired.ImageUsernameExists() { + username := desired.GetImageUsername() + update.ImageUsername = &username + } + if desired.ImagePasswordExists() { + password := desired.GetImagePassword() + update.ImagePassword = &password + } return json.Marshal(update) } diff --git a/vendor/code.cloudfoundry.org/bbs/models/desired_lrp.pb.go b/vendor/code.cloudfoundry.org/bbs/models/desired_lrp.pb.go index 123c9d8e..4b98d9bd 100644 --- a/vendor/code.cloudfoundry.org/bbs/models/desired_lrp.pb.go +++ b/vendor/code.cloudfoundry.org/bbs/models/desired_lrp.pb.go @@ -13,6 +13,7 @@ import ( math "math" math_bits "math/bits" reflect "reflect" + strconv "strconv" strings "strings" ) @@ -27,6 +28,27 @@ var _ = math.Inf // proto package needs to be updated. const _ = proto.GoGoProtoPackageIsVersion3 // please upgrade the proto package +type DesiredLRP_UpdateStrategy int32 + +const ( + DesiredLRP_UpdateStrategyRolling DesiredLRP_UpdateStrategy = 0 + DesiredLRP_UpdateStrategyRecreate DesiredLRP_UpdateStrategy = 1 +) + +var DesiredLRP_UpdateStrategy_name = map[int32]string{ + 0: "ROLLING", + 1: "RECREATE", +} + +var DesiredLRP_UpdateStrategy_value = map[string]int32{ + "ROLLING": 0, + "RECREATE": 1, +} + +func (DesiredLRP_UpdateStrategy) EnumDescriptor() ([]byte, []int) { + return fileDescriptor_f592e9299b63d68c, []int{6, 0} +} + type DesiredLRPSchedulingInfo struct { DesiredLRPKey `protobuf:"bytes,1,opt,name=desired_lrp_key,json=desiredLrpKey,proto3,embedded=desired_lrp_key" json:""` Annotation string `protobuf:"bytes,2,opt,name=annotation,proto3" json:"annotation"` @@ -409,6 +431,14 @@ type DesiredLRPUpdate struct { // *DesiredLRPUpdate_Annotation OptionalAnnotation isDesiredLRPUpdate_OptionalAnnotation `protobuf_oneof:"optional_annotation"` MetricTags map[string]*MetricTagValue `protobuf:"bytes,4,rep,name=metric_tags,json=metricTags,proto3" json:"metric_tags,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"` + // Types that are valid to be assigned to OptionalImageUsername: + // + // *DesiredLRPUpdate_ImageUsername + OptionalImageUsername isDesiredLRPUpdate_OptionalImageUsername `protobuf_oneof:"optional_image_username"` + // Types that are valid to be assigned to OptionalImagePassword: + // + // *DesiredLRPUpdate_ImagePassword + OptionalImagePassword isDesiredLRPUpdate_OptionalImagePassword `protobuf_oneof:"optional_image_password"` } func (m *DesiredLRPUpdate) Reset() { *m = DesiredLRPUpdate{} } @@ -455,6 +485,18 @@ type isDesiredLRPUpdate_OptionalAnnotation interface { MarshalTo([]byte) (int, error) Size() int } +type isDesiredLRPUpdate_OptionalImageUsername interface { + isDesiredLRPUpdate_OptionalImageUsername() + Equal(interface{}) bool + MarshalTo([]byte) (int, error) + Size() int +} +type isDesiredLRPUpdate_OptionalImagePassword interface { + isDesiredLRPUpdate_OptionalImagePassword() + Equal(interface{}) bool + MarshalTo([]byte) (int, error) + Size() int +} type DesiredLRPUpdate_Instances struct { Instances int32 `protobuf:"varint,1,opt,name=instances,proto3,oneof" json:"instances,omitempty"` @@ -462,9 +504,17 @@ type DesiredLRPUpdate_Instances struct { type DesiredLRPUpdate_Annotation struct { Annotation string `protobuf:"bytes,3,opt,name=annotation,proto3,oneof" json:"annotation,omitempty"` } +type DesiredLRPUpdate_ImageUsername struct { + ImageUsername string `protobuf:"bytes,5,opt,name=image_username,json=imageUsername,proto3,oneof" json:"image_username,omitempty"` +} +type DesiredLRPUpdate_ImagePassword struct { + ImagePassword string `protobuf:"bytes,6,opt,name=image_password,json=imagePassword,proto3,oneof" json:"image_password,omitempty"` +} -func (*DesiredLRPUpdate_Instances) isDesiredLRPUpdate_OptionalInstances() {} -func (*DesiredLRPUpdate_Annotation) isDesiredLRPUpdate_OptionalAnnotation() {} +func (*DesiredLRPUpdate_Instances) isDesiredLRPUpdate_OptionalInstances() {} +func (*DesiredLRPUpdate_Annotation) isDesiredLRPUpdate_OptionalAnnotation() {} +func (*DesiredLRPUpdate_ImageUsername) isDesiredLRPUpdate_OptionalImageUsername() {} +func (*DesiredLRPUpdate_ImagePassword) isDesiredLRPUpdate_OptionalImagePassword() {} func (m *DesiredLRPUpdate) GetOptionalInstances() isDesiredLRPUpdate_OptionalInstances { if m != nil { @@ -478,6 +528,18 @@ func (m *DesiredLRPUpdate) GetOptionalAnnotation() isDesiredLRPUpdate_OptionalAn } return nil } +func (m *DesiredLRPUpdate) GetOptionalImageUsername() isDesiredLRPUpdate_OptionalImageUsername { + if m != nil { + return m.OptionalImageUsername + } + return nil +} +func (m *DesiredLRPUpdate) GetOptionalImagePassword() isDesiredLRPUpdate_OptionalImagePassword { + if m != nil { + return m.OptionalImagePassword + } + return nil +} func (m *DesiredLRPUpdate) GetInstances() int32 { if x, ok := m.GetOptionalInstances().(*DesiredLRPUpdate_Instances); ok { @@ -500,11 +562,27 @@ func (m *DesiredLRPUpdate) GetMetricTags() map[string]*MetricTagValue { return nil } +func (m *DesiredLRPUpdate) GetImageUsername() string { + if x, ok := m.GetOptionalImageUsername().(*DesiredLRPUpdate_ImageUsername); ok { + return x.ImageUsername + } + return "" +} + +func (m *DesiredLRPUpdate) GetImagePassword() string { + if x, ok := m.GetOptionalImagePassword().(*DesiredLRPUpdate_ImagePassword); ok { + return x.ImagePassword + } + return "" +} + // XXX_OneofWrappers is for the internal use of the proto package. func (*DesiredLRPUpdate) XXX_OneofWrappers() []interface{} { return []interface{}{ (*DesiredLRPUpdate_Instances)(nil), (*DesiredLRPUpdate_Annotation)(nil), + (*DesiredLRPUpdate_ImageUsername)(nil), + (*DesiredLRPUpdate_ImagePassword)(nil), } } @@ -673,6 +751,7 @@ type DesiredLRP struct { Sidecars []*Sidecar `protobuf:"bytes,36,rep,name=sidecars,proto3" json:"sidecars,omitempty"` LogRateLimit *LogRateLimit `protobuf:"bytes,37,opt,name=log_rate_limit,json=logRateLimit,proto3" json:"log_rate_limit,omitempty"` VolumeMountedFiles []*File `protobuf:"bytes,38,rep,name=volume_mounted_files,json=volumeMountedFiles,proto3" json:"volume_mounted_files"` + UpdateStrategy DesiredLRP_UpdateStrategy `protobuf:"varint,39,opt,name=update_strategy,json=updateStrategy,proto3,enum=models.DesiredLRP_UpdateStrategy" json:"update_strategy"` } func (m *DesiredLRP) Reset() { *m = DesiredLRP{} } @@ -969,7 +1048,15 @@ func (m *DesiredLRP) GetVolumeMountedFiles() []*File { return nil } +func (m *DesiredLRP) GetUpdateStrategy() DesiredLRP_UpdateStrategy { + if m != nil { + return m.UpdateStrategy + } + return DesiredLRP_UpdateStrategyRolling +} + func init() { + proto.RegisterEnum("models.DesiredLRP_UpdateStrategy", DesiredLRP_UpdateStrategy_name, DesiredLRP_UpdateStrategy_value) proto.RegisterType((*DesiredLRPSchedulingInfo)(nil), "models.DesiredLRPSchedulingInfo") proto.RegisterType((*DesiredLRPRunInfo)(nil), "models.DesiredLRPRunInfo") proto.RegisterMapType((map[string]*MetricTagValue)(nil), "models.DesiredLRPRunInfo.MetricTagsEntry") @@ -986,125 +1073,140 @@ func init() { func init() { proto.RegisterFile("desired_lrp.proto", fileDescriptor_f592e9299b63d68c) } var fileDescriptor_f592e9299b63d68c = []byte{ - // 1845 bytes of a gzipped FileDescriptorProto - 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xcc, 0x98, 0x4f, 0x6f, 0x1b, 0xc7, - 0x15, 0xc0, 0xb9, 0xfa, 0x43, 0x8a, 0x43, 0x52, 0xa2, 0x46, 0x94, 0x34, 0xa6, 0x6d, 0x2e, 0xcb, - 0xd8, 0x29, 0xd3, 0x24, 0x0a, 0xe0, 0xa4, 0x68, 0x9a, 0x16, 0x05, 0xb2, 0x76, 0xe2, 0x18, 0x96, - 0x02, 0x61, 0x64, 0xbb, 0x6d, 0x80, 0x62, 0xb1, 0xda, 0x1d, 0xad, 0x16, 0xde, 0xdd, 0x59, 0xec, - 0xcc, 0xca, 0xe1, 0xad, 0xfd, 0x06, 0xed, 0xa9, 0x5f, 0xa1, 0x1f, 0xa0, 0x40, 0xbf, 0x42, 0x8e, - 0x3e, 0x06, 0x3d, 0x10, 0xb1, 0x7c, 0x29, 0x78, 0xca, 0x47, 0x28, 0x66, 0xf6, 0x3f, 0x49, 0x53, - 0x52, 0x6c, 0x03, 0x39, 0x71, 0xe6, 0xbd, 0x37, 0x6f, 0xdf, 0xcc, 0xbc, 0x7d, 0xef, 0xb7, 0x04, - 0x9b, 0x16, 0x61, 0x4e, 0x48, 0x2c, 0xdd, 0x0d, 0x83, 0xbd, 0x20, 0xa4, 0x9c, 0xc2, 0xaa, 0x47, - 0x2d, 0xe2, 0xb2, 0xee, 0x87, 0xb6, 0xc3, 0x4f, 0xa3, 0xe3, 0x3d, 0x93, 0x7a, 0x1f, 0xd9, 0xd4, - 0xa6, 0x1f, 0x49, 0xf5, 0x71, 0x74, 0x22, 0x67, 0x72, 0x22, 0x47, 0xf1, 0xb2, 0x6e, 0xcb, 0x30, - 0xb9, 0x43, 0x7d, 0x96, 0x4c, 0x77, 0x4d, 0xc3, 0x3c, 0x25, 0x96, 0x6e, 0x91, 0x80, 0xf8, 0x16, - 0xf1, 0xcd, 0x51, 0xa2, 0xb8, 0x61, 0x92, 0x90, 0x3b, 0x27, 0x8e, 0x69, 0x70, 0xa2, 0x07, 0x21, - 0x0d, 0xc4, 0x94, 0xa4, 0xcb, 0xae, 0x13, 0xff, 0xcc, 0x09, 0xa9, 0xef, 0x11, 0x9f, 0xeb, 0x67, - 0x46, 0xe8, 0x18, 0xc7, 0x6e, 0xa6, 0xdc, 0xf1, 0xa8, 0x15, 0xaf, 0x74, 0xa8, 0xaf, 0x73, 0xc3, - 0x4e, 0x1f, 0xed, 0x13, 0xfe, 0x8c, 0x86, 0x4f, 0x93, 0x69, 0x87, 0x11, 0x33, 0x0a, 0x1d, 0x3e, - 0xd2, 0xed, 0x90, 0x46, 0xc9, 0xb6, 0xba, 0xf0, 0x8c, 0xba, 0x91, 0x47, 0x74, 0x8f, 0x46, 0x3e, - 0x4f, 0x1d, 0x9a, 0xa7, 0xc4, 0x7c, 0xaa, 0x5b, 0xe4, 0xc4, 0xf1, 0x1d, 0xe1, 0x34, 0x91, 0x6f, - 0x3a, 0x9e, 0x61, 0x13, 0xdd, 0x35, 0x46, 0x24, 0x4c, 0x45, 0x1e, 0xe1, 0xa1, 0x63, 0x8a, 0xa7, - 0xa6, 0xe1, 0xb4, 0x98, 0x63, 0x11, 0xd3, 0x48, 0x2d, 0x3a, 0x2e, 0xb5, 0xf5, 0x50, 0xec, 0xca, - 0x75, 0x3c, 0x27, 0x7d, 0x04, 0x38, 0x71, 0x5c, 0x12, 0x8f, 0x07, 0xff, 0x59, 0x01, 0xe8, 0x5e, - 0x7c, 0xde, 0xfb, 0xf8, 0xf0, 0x48, 0x9c, 0x4f, 0xe4, 0x3a, 0xbe, 0xfd, 0xc0, 0x3f, 0xa1, 0xf0, - 0x21, 0xd8, 0x28, 0xdc, 0x85, 0xfe, 0x94, 0x8c, 0x90, 0xd2, 0x57, 0x86, 0x8d, 0x3b, 0xdb, 0x7b, - 0xf1, 0x85, 0xec, 0xe5, 0x4b, 0x1f, 0x92, 0x91, 0xd6, 0xfc, 0x6e, 0xac, 0x56, 0x9e, 0x8f, 0x55, - 0x65, 0x32, 0x56, 0x2b, 0xb8, 0x95, 0xac, 0xdd, 0x0f, 0x83, 0x87, 0x64, 0x04, 0xf7, 0x00, 0x30, - 0x7c, 0x9f, 0x72, 0x79, 0x52, 0x68, 0xa9, 0xaf, 0x0c, 0xeb, 0xda, 0xfa, 0x64, 0xac, 0x16, 0xa4, - 0xb8, 0x30, 0x86, 0xef, 0x83, 0xba, 0xe3, 0x33, 0x6e, 0xf8, 0x26, 0x61, 0x68, 0xb9, 0xaf, 0x0c, - 0x57, 0xb5, 0xd6, 0x64, 0xac, 0xe6, 0x42, 0x9c, 0x0f, 0xe1, 0x37, 0xa0, 0x53, 0x8c, 0x34, 0x24, - 0x8c, 0x46, 0xa1, 0x49, 0xd0, 0x8a, 0x0c, 0xb7, 0x3b, 0x1b, 0x2e, 0x4e, 0x2c, 0xa6, 0x62, 0x86, - 0x79, 0xcc, 0xa9, 0x05, 0xfc, 0x1d, 0xa8, 0x86, 0x34, 0xe2, 0x84, 0xa1, 0x55, 0xe9, 0x6d, 0x2b, - 0xf5, 0x76, 0x28, 0x4e, 0x10, 0x4b, 0x95, 0xb6, 0x2e, 0xdc, 0xfc, 0x77, 0xac, 0x56, 0xe3, 0x39, - 0x4e, 0x96, 0xc0, 0x43, 0xd0, 0x9e, 0xce, 0x10, 0x54, 0x95, 0x6e, 0x76, 0x53, 0x37, 0x07, 0x05, - 0xfd, 0x23, 0xc3, 0x9e, 0x8a, 0x68, 0xc3, 0x2b, 0xab, 0xa1, 0x06, 0xda, 0x49, 0xda, 0x04, 0xae, - 0x61, 0x12, 0x91, 0x95, 0xa8, 0x56, 0xf6, 0xf8, 0x44, 0xea, 0x0f, 0x53, 0x35, 0xde, 0x38, 0x2b, - 0x0b, 0xa0, 0x06, 0x5a, 0xd9, 0xe4, 0x91, 0x61, 0x33, 0xb4, 0xd6, 0x5f, 0x1e, 0xd6, 0xb5, 0x1b, - 0x93, 0xb1, 0x8a, 0x32, 0xaf, 0x32, 0xaf, 0x3e, 0xa0, 0x9e, 0xc3, 0x89, 0x17, 0xf0, 0x11, 0x2e, - 0x2f, 0x19, 0xbc, 0x6c, 0x81, 0xcd, 0xc2, 0x79, 0x46, 0xfe, 0x9b, 0x4f, 0x99, 0xbf, 0x80, 0xed, - 0xb9, 0xef, 0x1e, 0x5a, 0xea, 0x2f, 0x0f, 0x1b, 0x77, 0xae, 0xa7, 0x2e, 0xbf, 0xc8, 0x8d, 0x9e, - 0x24, 0x36, 0x5a, 0x43, 0x38, 0x9e, 0x8c, 0xd5, 0x65, 0xe2, 0x9f, 0xe1, 0x0e, 0x99, 0xb5, 0x60, - 0xf0, 0x16, 0x58, 0x65, 0x84, 0x47, 0x81, 0xcc, 0xae, 0xc6, 0x9d, 0xf5, 0xd4, 0xdd, 0xe7, 0xb2, - 0x6a, 0xe0, 0x58, 0x09, 0xdf, 0x05, 0xd5, 0xb8, 0x8c, 0x24, 0xc9, 0x34, 0x6d, 0x96, 0x68, 0xe1, - 0x10, 0xd4, 0x3c, 0xea, 0x3b, 0x9c, 0x86, 0x49, 0x9e, 0x4c, 0x1b, 0xa6, 0x6a, 0xf8, 0x0d, 0xe8, - 0x5a, 0x24, 0x08, 0x89, 0x28, 0x37, 0x96, 0xce, 0xb8, 0x11, 0x72, 0x9d, 0x3b, 0x1e, 0xa1, 0x11, - 0xd7, 0x99, 0xcc, 0x8e, 0x96, 0x76, 0x73, 0x32, 0x56, 0x77, 0x4b, 0xaa, 0xfc, 0x26, 0x90, 0x82, - 0x77, 0x73, 0x07, 0x47, 0xc2, 0xe8, 0x51, 0x6c, 0x73, 0x24, 0xde, 0xb2, 0x20, 0x74, 0xce, 0x1c, - 0x97, 0xd8, 0xc4, 0x92, 0x79, 0xb1, 0x16, 0xbf, 0x65, 0xb9, 0x14, 0x17, 0xc6, 0xf0, 0x43, 0x00, - 0xcc, 0x20, 0xd2, 0x9f, 0x11, 0xc7, 0x3e, 0xe5, 0x68, 0x4d, 0x3e, 0x5b, 0xda, 0xe7, 0x52, 0x5c, - 0x37, 0x83, 0xe8, 0x8f, 0x72, 0x08, 0x11, 0x58, 0x0d, 0x68, 0xc8, 0x19, 0xaa, 0xf7, 0x97, 0x87, - 0x2d, 0x6d, 0xa9, 0x5d, 0xc1, 0xb1, 0x00, 0x6a, 0xa0, 0x49, 0xec, 0x90, 0x30, 0xa6, 0x87, 0x91, - 0xb8, 0x22, 0x20, 0xaf, 0xe8, 0x5a, 0x7a, 0x06, 0x47, 0x49, 0xfd, 0xbb, 0x2f, 0xca, 0x1f, 0x8e, - 0x5c, 0xa2, 0xad, 0x88, 0x0b, 0xc2, 0x8d, 0x78, 0x91, 0x90, 0x30, 0x11, 0x8c, 0x28, 0x58, 0xc9, - 0xbb, 0xdb, 0xc8, 0x4b, 0x44, 0x2e, 0xc5, 0x75, 0x97, 0xda, 0x47, 0xf1, 0x8b, 0xf9, 0x6b, 0xd0, - 0x8c, 0x2b, 0x20, 0xd3, 0xed, 0xc8, 0xb1, 0x50, 0x53, 0x2e, 0x80, 0x93, 0xb1, 0x5a, 0x96, 0x2b, - 0xb8, 0x91, 0xcc, 0xef, 0x47, 0x4e, 0xbc, 0xe5, 0x90, 0xc8, 0xb3, 0x37, 0x38, 0x6a, 0xf5, 0x95, - 0xe1, 0x72, 0xb2, 0xe5, 0x4c, 0x8a, 0xeb, 0xc9, 0xf8, 0x73, 0x0e, 0x1f, 0x80, 0xad, 0xe9, 0xbe, - 0xe1, 0x10, 0x86, 0xd6, 0xe5, 0xfe, 0x50, 0xba, 0xbf, 0xbb, 0xd2, 0xe4, 0x5e, 0xd6, 0x59, 0x30, - 0x34, 0xcb, 0x12, 0x87, 0x30, 0xf8, 0x09, 0xe8, 0xb8, 0xc4, 0x36, 0xcc, 0x91, 0x6e, 0xd1, 0x67, - 0xbe, 0x4b, 0x0d, 0x4b, 0x8f, 0x18, 0x09, 0xd1, 0x86, 0x0c, 0x7c, 0x09, 0x29, 0x18, 0xc6, 0xfa, - 0x7b, 0x89, 0xfa, 0x31, 0x23, 0x21, 0xbc, 0x0f, 0xfa, 0x3c, 0x8c, 0x98, 0xcc, 0x95, 0x11, 0xe3, - 0xc4, 0xd3, 0x0b, 0xed, 0x8a, 0xe9, 0x81, 0xc1, 0x4f, 0x51, 0x5b, 0x78, 0xc0, 0x37, 0x13, 0xbb, - 0x23, 0x69, 0x76, 0xb7, 0x60, 0x75, 0x68, 0xf0, 0x53, 0xf8, 0x29, 0x68, 0x15, 0x1b, 0x0e, 0x43, - 0x9b, 0x72, 0x0f, 0x5b, 0xe5, 0xb2, 0x71, 0x20, 0x74, 0xb8, 0x79, 0x96, 0x4f, 0x18, 0x7c, 0x0f, - 0xd4, 0x92, 0x7e, 0x86, 0xa0, 0xcc, 0xed, 0x8d, 0x74, 0xcd, 0xd7, 0xb1, 0x18, 0xa7, 0x7a, 0xf8, - 0x07, 0xd0, 0x2e, 0x67, 0xb4, 0xc7, 0xd0, 0x96, 0x3c, 0xe3, 0xce, 0x64, 0xac, 0xce, 0xe8, 0xf0, - 0x3a, 0x2b, 0xe4, 0xef, 0x81, 0xa8, 0xe4, 0x3b, 0xf3, 0xbb, 0x31, 0xea, 0xc8, 0x27, 0xdf, 0xcc, - 0x4e, 0x3c, 0xb7, 0x3a, 0xcc, 0x8c, 0x64, 0x56, 0x29, 0x78, 0xdb, 0x9c, 0xa7, 0x84, 0xb7, 0xc1, - 0x7a, 0xdc, 0x45, 0xc5, 0xa9, 0xfb, 0x86, 0x47, 0xd0, 0xb6, 0x3c, 0xb7, 0x96, 0x94, 0x3e, 0x4e, - 0x84, 0xb9, 0x59, 0x60, 0x30, 0xf6, 0x8c, 0x86, 0x16, 0xda, 0x29, 0x98, 0x1d, 0x26, 0x42, 0x51, - 0x88, 0xa7, 0x7b, 0x35, 0xda, 0x2d, 0x17, 0xe2, 0xbb, 0x42, 0x7f, 0x2f, 0x53, 0xe3, 0x0d, 0xb3, - 0x2c, 0x10, 0x29, 0x5c, 0xe8, 0xeb, 0x0c, 0x21, 0x79, 0x23, 0x30, 0x5d, 0xff, 0x40, 0xe8, 0xf6, - 0x85, 0x0a, 0x37, 0x9c, 0x6c, 0xcc, 0xe0, 0xd7, 0xa0, 0x51, 0xe8, 0xfd, 0xe8, 0x9a, 0x5c, 0xf5, - 0xde, 0x9c, 0x2e, 0x17, 0x57, 0xe5, 0xbd, 0x03, 0x69, 0x2c, 0xca, 0xf6, 0x17, 0x3e, 0x0f, 0x47, - 0x32, 0xd5, 0x80, 0x97, 0x09, 0xe1, 0xfb, 0x60, 0x2d, 0x01, 0x07, 0x86, 0xba, 0xd2, 0x59, 0x76, - 0xc1, 0x47, 0xb1, 0x1c, 0x67, 0x06, 0xf0, 0x33, 0xb0, 0x5e, 0xc6, 0x0a, 0x74, 0x5d, 0xee, 0xba, - 0x93, 0x2e, 0xd9, 0xa7, 0x36, 0x36, 0x38, 0xd9, 0x17, 0x3a, 0xdc, 0x74, 0x0b, 0x33, 0xf8, 0x27, - 0xd0, 0x29, 0xa6, 0x20, 0xb1, 0x74, 0xc1, 0x22, 0x0c, 0xdd, 0x90, 0x0f, 0x6d, 0xa6, 0x1e, 0xbe, - 0x74, 0x5c, 0xa2, 0xa1, 0xc9, 0x58, 0x9d, 0x6b, 0x8d, 0x61, 0x21, 0x39, 0x89, 0x25, 0x8c, 0x59, - 0xf7, 0x31, 0xd8, 0x98, 0xda, 0x25, 0x6c, 0x83, 0xe5, 0xb4, 0xff, 0xd4, 0xb1, 0x18, 0xc2, 0x0f, - 0xc0, 0xea, 0x99, 0xe1, 0x46, 0x44, 0xe2, 0x47, 0xe3, 0xce, 0x4e, 0xd6, 0x82, 0xd3, 0x95, 0x4f, - 0x84, 0x16, 0xc7, 0x46, 0x9f, 0x2d, 0x7d, 0xaa, 0x0c, 0xfe, 0xa6, 0x80, 0x46, 0xa1, 0xcf, 0xc3, - 0xdf, 0x64, 0x30, 0xa0, 0xc8, 0x90, 0xd5, 0x39, 0x30, 0xb0, 0x17, 0xff, 0xc8, 0x20, 0x52, 0x10, - 0xe8, 0xfe, 0x16, 0x34, 0x0a, 0xe2, 0x39, 0xb1, 0x75, 0x8a, 0xb1, 0x35, 0x8b, 0x31, 0xfc, 0xb0, - 0x04, 0xda, 0xf9, 0x9d, 0x3e, 0x0e, 0x2c, 0x83, 0x13, 0xd8, 0x2b, 0xe2, 0x91, 0x70, 0xb3, 0xfa, - 0x55, 0xa5, 0x48, 0x44, 0x39, 0xb5, 0x2c, 0x2d, 0xa6, 0x16, 0x65, 0x0e, 0xb5, 0xf4, 0x4b, 0xac, - 0x26, 0xda, 0x63, 0xfd, 0x2b, 0xa5, 0x44, 0x67, 0x0f, 0xca, 0x19, 0xb8, 0x22, 0x0f, 0x63, 0x38, - 0x9b, 0x81, 0x71, 0xb4, 0xd3, 0x09, 0x58, 0x4c, 0xbe, 0xb7, 0x74, 0x73, 0x5a, 0x07, 0x40, 0x1a, - 0x88, 0x58, 0x0d, 0x57, 0xcf, 0x8e, 0x45, 0xdb, 0x06, 0x5b, 0x99, 0x34, 0xdf, 0xce, 0xe0, 0x1f, - 0x0a, 0x68, 0x95, 0xc0, 0x04, 0x7e, 0x0c, 0x9a, 0x41, 0x48, 0x4d, 0xd1, 0xd0, 0xe2, 0x26, 0x22, - 0x6b, 0x74, 0x5b, 0x34, 0x97, 0xa2, 0x1c, 0x37, 0x92, 0x99, 0x6c, 0x2d, 0x03, 0x50, 0xb5, 0xa8, - 0x67, 0x38, 0x29, 0xdf, 0x82, 0xc9, 0x58, 0x4d, 0x24, 0x38, 0xf9, 0x85, 0xbf, 0x04, 0x6b, 0xe2, - 0xf5, 0x91, 0x4e, 0xe5, 0xc9, 0x6a, 0xcd, 0xc9, 0x58, 0xcd, 0x64, 0xb8, 0xe6, 0x52, 0x5b, 0x38, - 0x1b, 0xfc, 0x5b, 0x01, 0x70, 0x16, 0x58, 0xe1, 0xaf, 0x40, 0xdd, 0x23, 0x1e, 0x0d, 0x47, 0xba, - 0x77, 0x1c, 0x5f, 0x7c, 0xcc, 0xc5, 0x99, 0x10, 0xaf, 0xc5, 0xc3, 0x83, 0x63, 0x78, 0x0b, 0xd4, - 0x2c, 0x87, 0x3d, 0x15, 0x96, 0x4b, 0xd2, 0xb2, 0x31, 0x19, 0xab, 0xa9, 0x08, 0x57, 0xc5, 0xe0, - 0xe0, 0x18, 0xbe, 0x03, 0x6a, 0x21, 0xa5, 0x5c, 0x3f, 0x61, 0x49, 0x40, 0x32, 0x6c, 0x21, 0x3a, - 0x91, 0x29, 0x41, 0xf9, 0x97, 0x4c, 0x84, 0xed, 0x19, 0xdf, 0xea, 0x81, 0x63, 0x31, 0x09, 0x42, - 0xab, 0x71, 0xd8, 0xa9, 0x0c, 0xd7, 0x3c, 0xe3, 0xdb, 0x43, 0xc7, 0x62, 0x83, 0x7f, 0x6e, 0x02, - 0x90, 0x87, 0xfd, 0xf6, 0xce, 0xf1, 0x52, 0x51, 0x97, 0x3e, 0x22, 0x56, 0x2e, 0xf8, 0x88, 0xf8, - 0xf3, 0xab, 0x70, 0x73, 0xf5, 0x62, 0xdc, 0xac, 0x5d, 0x12, 0x35, 0xab, 0x97, 0x43, 0xcd, 0xda, - 0x42, 0xd4, 0x9c, 0xd7, 0x63, 0xaf, 0x5f, 0xa1, 0xc7, 0x1e, 0x2f, 0x04, 0xd0, 0x18, 0x02, 0x6f, - 0x4f, 0xc6, 0xaa, 0x5a, 0xb0, 0x4a, 0xf5, 0x3e, 0xbb, 0x1c, 0x88, 0x16, 0x70, 0xb8, 0xbe, 0x18, - 0x87, 0x0b, 0x49, 0x0a, 0x5e, 0x9d, 0xa4, 0xa5, 0xb4, 0x6f, 0x2c, 0x4e, 0xfb, 0x32, 0xd4, 0x36, - 0x2f, 0x82, 0xda, 0x32, 0x33, 0xb7, 0x2e, 0x64, 0xe6, 0x0c, 0x82, 0xd7, 0xa7, 0x21, 0x38, 0x2f, - 0xba, 0x1b, 0x57, 0x2f, 0xba, 0x65, 0xfa, 0x6d, 0x5f, 0x44, 0xbf, 0xc5, 0x3a, 0xb2, 0xb9, 0xa0, - 0x8e, 0xcc, 0x60, 0x32, 0xbc, 0x1c, 0x26, 0x97, 0xbf, 0xd7, 0xb7, 0x2e, 0xfc, 0x5e, 0xff, 0xfd, - 0xd4, 0x07, 0x40, 0xe7, 0x82, 0x0f, 0x80, 0x32, 0xfa, 0x6b, 0x73, 0xbe, 0x93, 0xb7, 0x17, 0x7e, - 0x27, 0xcf, 0x7e, 0x19, 0xbf, 0x82, 0xd4, 0x77, 0xde, 0x20, 0xa9, 0xef, 0xbe, 0x36, 0xa9, 0xa3, - 0x9f, 0x44, 0xea, 0xd7, 0x7e, 0x02, 0xa9, 0x77, 0x2f, 0x20, 0xf5, 0x99, 0x3f, 0x01, 0x6e, 0x5c, - 0xf9, 0x4f, 0x80, 0x52, 0x57, 0xb8, 0xb9, 0xa0, 0x2b, 0x2c, 0xc0, 0xfa, 0xde, 0x5b, 0xc0, 0x7a, - 0xf5, 0x72, 0x58, 0xdf, 0xbf, 0x2c, 0xd6, 0xff, 0xe2, 0x35, 0xb1, 0x7e, 0x70, 0x39, 0xac, 0xbf, - 0x5b, 0x86, 0xaa, 0x77, 0xe4, 0xaa, 0xc1, 0x2c, 0x54, 0x2d, 0xc2, 0xa9, 0x12, 0xcb, 0xdf, 0xba, - 0x3a, 0xcb, 0xdf, 0x7e, 0x6d, 0x96, 0x7f, 0xf7, 0x67, 0xca, 0xf2, 0xda, 0x27, 0xcf, 0x5f, 0xf4, - 0x2a, 0xdf, 0xbf, 0xe8, 0x55, 0x7e, 0x7c, 0xd1, 0x53, 0xfe, 0x7a, 0xde, 0x53, 0xfe, 0x75, 0xde, - 0x53, 0xbe, 0x3b, 0xef, 0x29, 0xcf, 0xcf, 0x7b, 0xca, 0x0f, 0xe7, 0x3d, 0xe5, 0x7f, 0xe7, 0xbd, - 0xca, 0x8f, 0xe7, 0x3d, 0xe5, 0xef, 0x2f, 0x7b, 0x95, 0xe7, 0x2f, 0x7b, 0x95, 0xef, 0x5f, 0xf6, - 0x2a, 0xc7, 0x55, 0xf9, 0x47, 0xe9, 0xc7, 0xff, 0x0f, 0x00, 0x00, 0xff, 0xff, 0xd0, 0x43, 0x41, - 0x1c, 0x97, 0x16, 0x00, 0x00, + // 1975 bytes of a gzipped FileDescriptorProto + 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xb4, 0x58, 0xdd, 0x6e, 0x1b, 0xc7, + 0x15, 0xe6, 0xea, 0x87, 0x14, 0x87, 0x3f, 0xa2, 0x46, 0x94, 0x34, 0xa2, 0x6d, 0x2e, 0xa3, 0xf8, + 0x87, 0x69, 0x12, 0x05, 0x50, 0x52, 0x34, 0x4d, 0x8b, 0x02, 0x5e, 0x59, 0x71, 0x04, 0x4b, 0xae, + 0x30, 0xb2, 0xdd, 0x36, 0x40, 0xb1, 0x58, 0xed, 0x8e, 0x56, 0x0b, 0xef, 0xee, 0x2c, 0x76, 0x76, + 0xe5, 0xf0, 0xae, 0xbd, 0xcd, 0x55, 0xfb, 0x00, 0xb9, 0xef, 0x03, 0x14, 0xe8, 0x2b, 0xe4, 0xd2, + 0x97, 0x41, 0x51, 0x10, 0xb5, 0x7c, 0x13, 0xf0, 0x2a, 0x8f, 0x10, 0xcc, 0xec, 0x3f, 0x49, 0x53, + 0x72, 0x6c, 0x5f, 0x71, 0xe6, 0x9c, 0x6f, 0xce, 0x9e, 0x99, 0x39, 0x73, 0xce, 0x77, 0x08, 0x56, + 0x0c, 0xc2, 0x2c, 0x9f, 0x18, 0xaa, 0xed, 0x7b, 0xdb, 0x9e, 0x4f, 0x03, 0x0a, 0xcb, 0x0e, 0x35, + 0x88, 0xcd, 0x3a, 0x1f, 0x9b, 0x56, 0x70, 0x16, 0x9e, 0x6c, 0xeb, 0xd4, 0xf9, 0xc4, 0xa4, 0x26, + 0xfd, 0x44, 0xa8, 0x4f, 0xc2, 0x53, 0x31, 0x13, 0x13, 0x31, 0x8a, 0x96, 0x75, 0x1a, 0x9a, 0x1e, + 0x58, 0xd4, 0x65, 0xf1, 0x74, 0x43, 0xd7, 0xf4, 0x33, 0x62, 0xa8, 0x06, 0xf1, 0x88, 0x6b, 0x10, + 0x57, 0x1f, 0xc4, 0x8a, 0xeb, 0x3a, 0xf1, 0x03, 0xeb, 0xd4, 0xd2, 0xb5, 0x80, 0xa8, 0x9e, 0x4f, + 0x3d, 0x3e, 0x25, 0xc9, 0xb2, 0x6b, 0xc4, 0x3d, 0xb7, 0x7c, 0xea, 0x3a, 0xc4, 0x0d, 0xd4, 0x73, + 0xcd, 0xb7, 0xb4, 0x13, 0x3b, 0x55, 0xae, 0x3b, 0xd4, 0x88, 0x56, 0x5a, 0xd4, 0x55, 0x03, 0xcd, + 0x4c, 0x3e, 0xed, 0x92, 0xe0, 0x19, 0xf5, 0x9f, 0xc6, 0xd3, 0x36, 0x23, 0x7a, 0xe8, 0x5b, 0xc1, + 0x40, 0x35, 0x7d, 0x1a, 0xc6, 0xdb, 0xea, 0xc0, 0x73, 0x6a, 0x87, 0x0e, 0x51, 0x1d, 0x1a, 0xba, + 0x41, 0x62, 0x50, 0x3f, 0x23, 0xfa, 0x53, 0xd5, 0x20, 0xa7, 0x96, 0x6b, 0x71, 0xa3, 0xb1, 0x7c, + 0xc5, 0x72, 0x34, 0x93, 0xa8, 0xb6, 0x36, 0x20, 0x7e, 0x22, 0x72, 0x48, 0xe0, 0x5b, 0x3a, 0xff, + 0x6a, 0xe2, 0x4e, 0x83, 0x59, 0x06, 0xd1, 0xb5, 0x04, 0xd1, 0xb6, 0xa9, 0xa9, 0xfa, 0x7c, 0x57, + 0xb6, 0xe5, 0x58, 0xc9, 0x27, 0xc0, 0xa9, 0x65, 0x93, 0x68, 0xbc, 0xf5, 0x9f, 0x05, 0x80, 0xee, + 0x45, 0xe7, 0x7d, 0x80, 0x8f, 0x8e, 0xf9, 0xf9, 0x84, 0xb6, 0xe5, 0x9a, 0xfb, 0xee, 0x29, 0x85, + 0x0f, 0xc0, 0x72, 0xee, 0x2e, 0xd4, 0xa7, 0x64, 0x80, 0xa4, 0x9e, 0xd4, 0xaf, 0xed, 0xac, 0x6d, + 0x47, 0x17, 0xb2, 0x9d, 0x2d, 0x7d, 0x40, 0x06, 0x4a, 0xfd, 0xfb, 0xa1, 0x5c, 0x7a, 0x3e, 0x94, + 0xa5, 0xd1, 0x50, 0x2e, 0xe1, 0x46, 0xbc, 0xf6, 0xc0, 0xf7, 0x1e, 0x90, 0x01, 0xdc, 0x06, 0x40, + 0x73, 0x5d, 0x1a, 0x88, 0x93, 0x42, 0x73, 0x3d, 0xa9, 0x5f, 0x55, 0x9a, 0xa3, 0xa1, 0x9c, 0x93, + 0xe2, 0xdc, 0x18, 0x7e, 0x08, 0xaa, 0x96, 0xcb, 0x02, 0xcd, 0xd5, 0x09, 0x43, 0xf3, 0x3d, 0xa9, + 0xbf, 0xa8, 0x34, 0x46, 0x43, 0x39, 0x13, 0xe2, 0x6c, 0x08, 0xbf, 0x06, 0xed, 0xbc, 0xa7, 0x3e, + 0x61, 0x34, 0xf4, 0x75, 0x82, 0x16, 0x84, 0xbb, 0x9d, 0x49, 0x77, 0x71, 0x8c, 0x18, 0xf3, 0x19, + 0x66, 0x3e, 0x27, 0x08, 0xf8, 0x3b, 0x50, 0xf6, 0x69, 0x18, 0x10, 0x86, 0x16, 0x85, 0xb5, 0xd5, + 0xc4, 0xda, 0x11, 0x3f, 0x41, 0x2c, 0x54, 0x4a, 0x93, 0x9b, 0xf9, 0xef, 0x50, 0x2e, 0x47, 0x73, + 0x1c, 0x2f, 0x81, 0x47, 0xa0, 0x35, 0x1e, 0x21, 0xa8, 0x2c, 0xcc, 0x6c, 0x24, 0x66, 0x0e, 0x73, + 0xfa, 0x47, 0x9a, 0x39, 0xe6, 0xd1, 0xb2, 0x53, 0x54, 0x43, 0x05, 0xb4, 0xe2, 0xb0, 0xf1, 0x6c, + 0x4d, 0x27, 0x3c, 0x2a, 0x51, 0xa5, 0x68, 0xf1, 0x89, 0xd0, 0x1f, 0x25, 0x6a, 0xbc, 0x7c, 0x5e, + 0x14, 0x40, 0x05, 0x34, 0xd2, 0xc9, 0x23, 0xcd, 0x64, 0x68, 0xa9, 0x37, 0xdf, 0xaf, 0x2a, 0xd7, + 0x47, 0x43, 0x19, 0xa5, 0x56, 0x45, 0x5c, 0x7d, 0x44, 0x1d, 0x2b, 0x20, 0x8e, 0x17, 0x0c, 0x70, + 0x71, 0xc9, 0xd6, 0xcb, 0x06, 0x58, 0xc9, 0x9d, 0x67, 0xe8, 0xbe, 0xfd, 0x90, 0xf9, 0x2b, 0x58, + 0x9b, 0xfa, 0xf6, 0xd0, 0x5c, 0x6f, 0xbe, 0x5f, 0xdb, 0xb9, 0x96, 0x98, 0xdc, 0xcb, 0x40, 0x4f, + 0x62, 0x8c, 0x52, 0xe3, 0x86, 0x47, 0x43, 0x79, 0x9e, 0xb8, 0xe7, 0xb8, 0x4d, 0x26, 0x11, 0x0c, + 0xde, 0x04, 0x8b, 0x8c, 0x04, 0xa1, 0x27, 0xa2, 0xab, 0xb6, 0xd3, 0x4c, 0xcc, 0xdd, 0x15, 0x59, + 0x03, 0x47, 0x4a, 0x78, 0x1b, 0x94, 0xa3, 0x34, 0x12, 0x07, 0xd3, 0x38, 0x2c, 0xd6, 0xc2, 0x3e, + 0xa8, 0x38, 0xd4, 0xb5, 0x02, 0xea, 0xc7, 0x71, 0x32, 0x0e, 0x4c, 0xd4, 0xf0, 0x6b, 0xd0, 0x31, + 0x88, 0xe7, 0x13, 0x9e, 0x6e, 0x0c, 0x95, 0x05, 0x9a, 0x1f, 0xa8, 0x81, 0xe5, 0x10, 0x1a, 0x06, + 0x2a, 0x13, 0xd1, 0xd1, 0x50, 0x6e, 0x8c, 0x86, 0xf2, 0x46, 0x41, 0x95, 0xdd, 0x04, 0x92, 0xf0, + 0x46, 0x66, 0xe0, 0x98, 0x83, 0x1e, 0x45, 0x98, 0x63, 0xfe, 0xca, 0x3c, 0xdf, 0x3a, 0xb7, 0x6c, + 0x62, 0x12, 0x43, 0xc4, 0xc5, 0x52, 0xf4, 0xca, 0x32, 0x29, 0xce, 0x8d, 0xe1, 0xc7, 0x00, 0xe8, + 0x5e, 0xa8, 0x3e, 0x23, 0x96, 0x79, 0x16, 0xa0, 0x25, 0xf1, 0x6d, 0x81, 0xcf, 0xa4, 0xb8, 0xaa, + 0x7b, 0xe1, 0x9f, 0xc4, 0x10, 0x22, 0xb0, 0xe8, 0x51, 0x3f, 0x60, 0xa8, 0xda, 0x9b, 0xef, 0x37, + 0x94, 0xb9, 0x56, 0x09, 0x47, 0x02, 0xa8, 0x80, 0x3a, 0x31, 0x7d, 0xc2, 0x98, 0xea, 0x87, 0xfc, + 0x8a, 0x80, 0xb8, 0xa2, 0xcd, 0xe4, 0x0c, 0x8e, 0xe3, 0xfc, 0x77, 0x9f, 0xa7, 0x3f, 0x1c, 0xda, + 0x44, 0x59, 0xe0, 0x17, 0x84, 0x6b, 0xd1, 0x22, 0x2e, 0x61, 0xdc, 0x19, 0x9e, 0xb0, 0xe2, 0xb7, + 0x5b, 0xcb, 0x52, 0x44, 0x26, 0xc5, 0x55, 0x9b, 0x9a, 0xc7, 0xd1, 0xc3, 0xfc, 0x35, 0xa8, 0x47, + 0x19, 0x90, 0xa9, 0x66, 0x68, 0x19, 0xa8, 0x2e, 0x16, 0xc0, 0xd1, 0x50, 0x2e, 0xca, 0x25, 0x5c, + 0x8b, 0xe7, 0xf7, 0x43, 0x2b, 0xda, 0xb2, 0x4f, 0xc4, 0xd9, 0x6b, 0x01, 0x6a, 0xf4, 0xa4, 0xfe, + 0x7c, 0xbc, 0xe5, 0x54, 0x8a, 0xab, 0xf1, 0xf8, 0x6e, 0x00, 0xf7, 0xc1, 0xea, 0x78, 0xdd, 0xb0, + 0x08, 0x43, 0x4d, 0xb1, 0x3f, 0x94, 0xec, 0x6f, 0x57, 0x40, 0xee, 0xa5, 0x95, 0x05, 0x43, 0xbd, + 0x28, 0xb1, 0x08, 0x83, 0x9f, 0x81, 0xb6, 0x4d, 0x4c, 0x4d, 0x1f, 0xa8, 0x06, 0x7d, 0xe6, 0xda, + 0x54, 0x33, 0xd4, 0x90, 0x11, 0x1f, 0x2d, 0x0b, 0xc7, 0xe7, 0x90, 0x84, 0x61, 0xa4, 0xbf, 0x17, + 0xab, 0x1f, 0x33, 0xe2, 0xc3, 0xfb, 0xa0, 0x17, 0xf8, 0x21, 0x13, 0xb1, 0x32, 0x60, 0x01, 0x71, + 0xd4, 0x5c, 0xb9, 0x62, 0xaa, 0xa7, 0x05, 0x67, 0xa8, 0xc5, 0x2d, 0xe0, 0x1b, 0x31, 0xee, 0x58, + 0xc0, 0x76, 0x73, 0xa8, 0x23, 0x2d, 0x38, 0x83, 0x9f, 0x83, 0x46, 0xbe, 0xe0, 0x30, 0xb4, 0x22, + 0xf6, 0xb0, 0x5a, 0x4c, 0x1b, 0x87, 0x5c, 0x87, 0xeb, 0xe7, 0xd9, 0x84, 0xc1, 0x0f, 0x40, 0x25, + 0xae, 0x67, 0x08, 0x8a, 0xd8, 0x5e, 0x4e, 0xd6, 0x3c, 0x8c, 0xc4, 0x38, 0xd1, 0xc3, 0x3f, 0x80, + 0x56, 0x31, 0xa2, 0x1d, 0x86, 0x56, 0xc5, 0x19, 0xb7, 0x47, 0x43, 0x79, 0x42, 0x87, 0x9b, 0x2c, + 0x17, 0xbf, 0x87, 0x3c, 0x93, 0xaf, 0x4f, 0xaf, 0xc6, 0xa8, 0x2d, 0xbe, 0x7c, 0x23, 0x3d, 0xf1, + 0x0c, 0x75, 0x94, 0x82, 0x44, 0x54, 0x49, 0x78, 0x4d, 0x9f, 0xa6, 0x84, 0xb7, 0x40, 0x33, 0xaa, + 0xa2, 0xfc, 0xd4, 0x5d, 0xcd, 0x21, 0x68, 0x4d, 0x9c, 0x5b, 0x43, 0x48, 0x1f, 0xc7, 0xc2, 0x0c, + 0xe6, 0x69, 0x8c, 0x3d, 0xa3, 0xbe, 0x81, 0xd6, 0x73, 0xb0, 0xa3, 0x58, 0xc8, 0x13, 0xf1, 0x78, + 0xad, 0x46, 0x1b, 0xc5, 0x44, 0xbc, 0xcb, 0xf5, 0xf7, 0x52, 0x35, 0x5e, 0xd6, 0x8b, 0x02, 0x1e, + 0xc2, 0xb9, 0xba, 0xce, 0x10, 0x12, 0x37, 0x02, 0x93, 0xf5, 0xfb, 0x5c, 0x77, 0xc0, 0x55, 0xb8, + 0x66, 0xa5, 0x63, 0x06, 0x1f, 0x82, 0x5a, 0xae, 0xf6, 0xa3, 0x4d, 0xb1, 0xea, 0x83, 0x29, 0x55, + 0x2e, 0xca, 0xca, 0xdb, 0x87, 0x02, 0xcc, 0xd3, 0xf6, 0x9e, 0x1b, 0xf8, 0x03, 0x11, 0x6a, 0xc0, + 0x49, 0x85, 0xf0, 0x43, 0xb0, 0x14, 0x13, 0x07, 0x86, 0x3a, 0xc2, 0x58, 0x7a, 0xc1, 0xc7, 0x91, + 0x1c, 0xa7, 0x00, 0xf8, 0x05, 0x68, 0x16, 0x69, 0x05, 0xba, 0x26, 0x76, 0xdd, 0x4e, 0x96, 0x1c, + 0x50, 0x13, 0x6b, 0x01, 0x39, 0xe0, 0x3a, 0x5c, 0xb7, 0x73, 0x33, 0xf8, 0x67, 0xd0, 0xce, 0x87, + 0x20, 0x31, 0x54, 0xce, 0x45, 0x18, 0xba, 0x2e, 0x3e, 0x5a, 0x4f, 0x2c, 0x7c, 0x69, 0xd9, 0x44, + 0x41, 0xa3, 0xa1, 0x3c, 0x15, 0x8d, 0x61, 0x2e, 0x38, 0x89, 0xc1, 0xc1, 0xac, 0xf3, 0x18, 0x2c, + 0x8f, 0xed, 0x12, 0xb6, 0xc0, 0x7c, 0x52, 0x7f, 0xaa, 0x98, 0x0f, 0xe1, 0x47, 0x60, 0xf1, 0x5c, + 0xb3, 0x43, 0x22, 0xe8, 0x47, 0x6d, 0x67, 0x3d, 0x2d, 0xc1, 0xc9, 0xca, 0x27, 0x5c, 0x8b, 0x23, + 0xd0, 0x17, 0x73, 0x9f, 0x4b, 0x5b, 0x7f, 0x97, 0x40, 0x2d, 0x57, 0xe7, 0xe1, 0x6f, 0x52, 0x32, + 0x20, 0x09, 0x97, 0xe5, 0x29, 0x64, 0x60, 0x3b, 0xfa, 0x11, 0x4e, 0x24, 0x44, 0xa0, 0xf3, 0x5b, + 0x50, 0xcb, 0x89, 0xa7, 0xf8, 0xd6, 0xce, 0xfb, 0x56, 0xcf, 0xfb, 0xf0, 0xe3, 0x3c, 0x68, 0x65, + 0x77, 0xfa, 0xd8, 0x33, 0xb4, 0x80, 0xc0, 0x6e, 0x9e, 0x1e, 0x71, 0x33, 0x8b, 0x5f, 0x95, 0xf2, + 0x8c, 0x28, 0x63, 0x2d, 0x73, 0xb3, 0x59, 0x8b, 0x34, 0x85, 0xb5, 0xf4, 0x0a, 0x5c, 0x8d, 0x97, + 0xc7, 0xea, 0x57, 0x52, 0x81, 0x9d, 0xed, 0x17, 0x23, 0x70, 0x41, 0x1c, 0x46, 0x7f, 0x32, 0x02, + 0x23, 0x6f, 0xc7, 0x03, 0xb0, 0x10, 0x7c, 0x77, 0x26, 0x5e, 0xe5, 0xa2, 0xf8, 0xe0, 0xdc, 0xf8, + 0xbb, 0xbc, 0x33, 0xf1, 0x2e, 0xcb, 0x02, 0x38, 0x3f, 0xf6, 0x32, 0xdf, 0x51, 0x2c, 0x28, 0x6d, + 0x00, 0xa9, 0xc7, 0x77, 0xaf, 0xd9, 0x6a, 0x7a, 0xd0, 0xca, 0x1a, 0x58, 0x4d, 0xa5, 0xd9, 0x01, + 0x29, 0x9b, 0x60, 0x23, 0x03, 0x17, 0xb6, 0x37, 0x45, 0x95, 0x6c, 0x68, 0xeb, 0x9f, 0x12, 0x68, + 0x14, 0x08, 0x12, 0xfc, 0x14, 0xd4, 0x3d, 0x9f, 0xea, 0xbc, 0xb0, 0x46, 0xc5, 0x4c, 0xd4, 0x8a, + 0x16, 0x2f, 0x72, 0x79, 0x39, 0xae, 0xc5, 0x33, 0x51, 0xe2, 0xb6, 0x40, 0xd9, 0xa0, 0x8e, 0x66, + 0x25, 0x3c, 0x1b, 0x8c, 0x86, 0x72, 0x2c, 0xc1, 0xf1, 0x2f, 0xbc, 0x03, 0x96, 0xf8, 0x33, 0x16, + 0x46, 0xc5, 0x0d, 0x2b, 0xf5, 0xd1, 0x50, 0x4e, 0x65, 0xb8, 0x62, 0x53, 0x93, 0x1b, 0xdb, 0xfa, + 0xb7, 0x04, 0xe0, 0x24, 0x71, 0x86, 0xbf, 0x02, 0x55, 0x87, 0x38, 0xd4, 0x1f, 0xa8, 0xce, 0x49, + 0x14, 0x80, 0x11, 0x3f, 0x4f, 0x85, 0x78, 0x29, 0x1a, 0x1e, 0x9e, 0xc0, 0x9b, 0xa0, 0x62, 0x58, + 0xec, 0x29, 0x47, 0xce, 0x09, 0x64, 0x6d, 0x34, 0x94, 0x13, 0x11, 0x2e, 0xf3, 0xc1, 0xe1, 0x09, + 0x7c, 0x1f, 0x54, 0x7c, 0x4a, 0x03, 0xf5, 0x94, 0xc5, 0x0e, 0x09, 0xb7, 0xb9, 0xe8, 0x54, 0x84, + 0x26, 0x0d, 0xbe, 0xe4, 0xd1, 0xb2, 0xe4, 0x68, 0xdf, 0xa8, 0x9e, 0x65, 0x30, 0x41, 0xc8, 0x16, + 0x23, 0xb7, 0x13, 0x19, 0xae, 0x38, 0xda, 0x37, 0x47, 0x96, 0xc1, 0xb6, 0xfe, 0x07, 0x01, 0xc8, + 0xdc, 0x7e, 0x77, 0xe7, 0x78, 0x25, 0xaf, 0x0b, 0xcd, 0xcc, 0xc2, 0x25, 0xcd, 0xcc, 0x5f, 0x5e, + 0x45, 0x7b, 0x17, 0x2f, 0xa7, 0xbd, 0x95, 0x2b, 0x52, 0xde, 0xf2, 0xd5, 0x28, 0x6f, 0x65, 0x26, + 0xe5, 0x9d, 0x56, 0xeb, 0xaf, 0xbd, 0x46, 0xad, 0x3f, 0x99, 0x49, 0x84, 0x23, 0x32, 0x7a, 0x6b, + 0x34, 0x94, 0xe5, 0x1c, 0x2a, 0xd1, 0xbb, 0xec, 0x6a, 0x84, 0x38, 0x47, 0xcb, 0xab, 0xb3, 0x69, + 0x79, 0x2e, 0x48, 0xc1, 0xab, 0x83, 0xb4, 0x10, 0xf6, 0xb5, 0xd9, 0x61, 0x5f, 0x24, 0xd7, 0xf5, + 0xcb, 0xc8, 0x75, 0x91, 0xbb, 0x37, 0x2e, 0xe5, 0xee, 0x29, 0x19, 0x6f, 0x8e, 0x93, 0xf1, 0x2c, + 0xf9, 0x2f, 0xbf, 0x7e, 0xf2, 0x2f, 0xb2, 0xf0, 0xd6, 0x65, 0x2c, 0x3c, 0x9f, 0x47, 0x56, 0x66, + 0xe4, 0x91, 0x09, 0xba, 0x0e, 0xaf, 0x46, 0xd7, 0x8b, 0xff, 0x1b, 0xac, 0x5e, 0xfa, 0xbf, 0xc1, + 0xef, 0xc7, 0x1a, 0x91, 0xf6, 0x25, 0x8d, 0x48, 0xb1, 0x05, 0x51, 0xa6, 0xf4, 0xeb, 0x6b, 0x33, + 0xfb, 0xf5, 0xc9, 0x0e, 0xfd, 0x15, 0x1d, 0xc3, 0xfa, 0x5b, 0xec, 0x18, 0x36, 0xde, 0xb8, 0x63, + 0x40, 0xbf, 0xa8, 0x63, 0xd8, 0xfc, 0x05, 0x1d, 0x43, 0xe7, 0x92, 0x8e, 0x61, 0xe2, 0xcf, 0x88, + 0xeb, 0xaf, 0xfd, 0x67, 0x44, 0xa1, 0x2a, 0xdc, 0x98, 0x51, 0x15, 0x66, 0xb4, 0x17, 0xdd, 0x77, + 0xd0, 0x5e, 0xc8, 0x57, 0x6b, 0x2f, 0x7a, 0x57, 0x6d, 0x2f, 0xde, 0x7b, 0xc3, 0xf6, 0x62, 0xeb, + 0x6a, 0xed, 0xc5, 0x6e, 0x91, 0xdc, 0xbd, 0x2f, 0x56, 0x6d, 0x4d, 0x92, 0xbb, 0x99, 0xb4, 0x2e, + 0xdf, 0x53, 0xdc, 0x7c, 0xfd, 0x9e, 0xe2, 0xd6, 0x1b, 0xf7, 0x14, 0xb7, 0xdf, 0xb4, 0xa7, 0x80, + 0x2a, 0x58, 0x0e, 0x05, 0x7f, 0x55, 0x59, 0xc0, 0x5d, 0x33, 0x07, 0xe8, 0x4e, 0x4f, 0xea, 0x37, + 0x77, 0xde, 0x9b, 0x72, 0x16, 0x11, 0xd3, 0x3d, 0x8e, 0x81, 0xca, 0xea, 0x68, 0x28, 0x8f, 0xaf, + 0xc6, 0xcd, 0xb0, 0x00, 0x7a, 0x57, 0x4d, 0xcb, 0x09, 0x68, 0x16, 0xbd, 0x81, 0xb7, 0x41, 0x05, + 0xff, 0xf1, 0xe0, 0x60, 0xff, 0xe1, 0xfd, 0x56, 0xa9, 0xb3, 0xf9, 0xed, 0x77, 0xbd, 0xb5, 0x22, + 0x00, 0x53, 0xdb, 0xb6, 0x5c, 0x13, 0xf6, 0xc1, 0x12, 0xde, 0xdb, 0xc5, 0x7b, 0x77, 0x1f, 0xed, + 0xb5, 0xa4, 0x4e, 0xe7, 0xdb, 0xef, 0x7a, 0xeb, 0x63, 0x40, 0x12, 0xfd, 0x33, 0xa2, 0x7c, 0xf6, + 0xfc, 0x45, 0x57, 0xfa, 0xe1, 0x45, 0xb7, 0xf4, 0xd3, 0x8b, 0xae, 0xf4, 0xb7, 0x8b, 0xae, 0xf4, + 0xaf, 0x8b, 0xae, 0xf4, 0xfd, 0x45, 0x57, 0x7a, 0x7e, 0xd1, 0x95, 0xfe, 0x7f, 0xd1, 0x95, 0x7e, + 0xbc, 0xe8, 0x96, 0x7e, 0xba, 0xe8, 0x4a, 0xff, 0x78, 0xd9, 0x2d, 0x3d, 0x7f, 0xd9, 0x2d, 0xfd, + 0xf0, 0xb2, 0x5b, 0x3a, 0x29, 0x8b, 0x7f, 0x9d, 0x3f, 0xfd, 0x39, 0x00, 0x00, 0xff, 0xff, 0xa7, + 0xe2, 0x0e, 0x29, 0xe4, 0x17, 0x00, 0x00, +} + +func (x DesiredLRP_UpdateStrategy) String() string { + s, ok := DesiredLRP_UpdateStrategy_name[int32(x)] + if ok { + return s + } + return strconv.Itoa(int(x)) } - func (this *DesiredLRPSchedulingInfo) Equal(that interface{}) bool { if that == nil { return this == nil @@ -1386,6 +1488,24 @@ func (this *DesiredLRPUpdate) Equal(that interface{}) bool { return false } } + if that1.OptionalImageUsername == nil { + if this.OptionalImageUsername != nil { + return false + } + } else if this.OptionalImageUsername == nil { + return false + } else if !this.OptionalImageUsername.Equal(that1.OptionalImageUsername) { + return false + } + if that1.OptionalImagePassword == nil { + if this.OptionalImagePassword != nil { + return false + } + } else if this.OptionalImagePassword == nil { + return false + } else if !this.OptionalImagePassword.Equal(that1.OptionalImagePassword) { + return false + } return true } func (this *DesiredLRPUpdate_Instances) Equal(that interface{}) bool { @@ -1436,6 +1556,54 @@ func (this *DesiredLRPUpdate_Annotation) Equal(that interface{}) bool { } return true } +func (this *DesiredLRPUpdate_ImageUsername) Equal(that interface{}) bool { + if that == nil { + return this == nil + } + + that1, ok := that.(*DesiredLRPUpdate_ImageUsername) + if !ok { + that2, ok := that.(DesiredLRPUpdate_ImageUsername) + if ok { + that1 = &that2 + } else { + return false + } + } + if that1 == nil { + return this == nil + } else if this == nil { + return false + } + if this.ImageUsername != that1.ImageUsername { + return false + } + return true +} +func (this *DesiredLRPUpdate_ImagePassword) Equal(that interface{}) bool { + if that == nil { + return this == nil + } + + that1, ok := that.(*DesiredLRPUpdate_ImagePassword) + if !ok { + that2, ok := that.(DesiredLRPUpdate_ImagePassword) + if ok { + that1 = &that2 + } else { + return false + } + } + if that1 == nil { + return this == nil + } else if this == nil { + return false + } + if this.ImagePassword != that1.ImagePassword { + return false + } + return true +} func (this *DesiredLRPKey) Equal(that interface{}) bool { if that == nil { return this == nil @@ -1686,6 +1854,9 @@ func (this *DesiredLRP) Equal(that interface{}) bool { return false } } + if this.UpdateStrategy != that1.UpdateStrategy { + return false + } return true } func (this *DesiredLRPSchedulingInfo) GoString() string { @@ -1818,7 +1989,7 @@ func (this *DesiredLRPUpdate) GoString() string { if this == nil { return "nil" } - s := make([]string, 0, 8) + s := make([]string, 0, 10) s = append(s, "&models.DesiredLRPUpdate{") if this.OptionalInstances != nil { s = append(s, "OptionalInstances: "+fmt.Sprintf("%#v", this.OptionalInstances)+",\n") @@ -1840,6 +2011,12 @@ func (this *DesiredLRPUpdate) GoString() string { if this.MetricTags != nil { s = append(s, "MetricTags: "+mapStringForMetricTags+",\n") } + if this.OptionalImageUsername != nil { + s = append(s, "OptionalImageUsername: "+fmt.Sprintf("%#v", this.OptionalImageUsername)+",\n") + } + if this.OptionalImagePassword != nil { + s = append(s, "OptionalImagePassword: "+fmt.Sprintf("%#v", this.OptionalImagePassword)+",\n") + } s = append(s, "}") return strings.Join(s, "") } @@ -1859,6 +2036,22 @@ func (this *DesiredLRPUpdate_Annotation) GoString() string { `Annotation:` + fmt.Sprintf("%#v", this.Annotation) + `}`}, ", ") return s } +func (this *DesiredLRPUpdate_ImageUsername) GoString() string { + if this == nil { + return "nil" + } + s := strings.Join([]string{`&models.DesiredLRPUpdate_ImageUsername{` + + `ImageUsername:` + fmt.Sprintf("%#v", this.ImageUsername) + `}`}, ", ") + return s +} +func (this *DesiredLRPUpdate_ImagePassword) GoString() string { + if this == nil { + return "nil" + } + s := strings.Join([]string{`&models.DesiredLRPUpdate_ImagePassword{` + + `ImagePassword:` + fmt.Sprintf("%#v", this.ImagePassword) + `}`}, ", ") + return s +} func (this *DesiredLRPKey) GoString() string { if this == nil { return "nil" @@ -1888,7 +2081,7 @@ func (this *DesiredLRP) GoString() string { if this == nil { return "nil" } - s := make([]string, 0, 42) + s := make([]string, 0, 43) s = append(s, "&models.DesiredLRP{") s = append(s, "ProcessGuid: "+fmt.Sprintf("%#v", this.ProcessGuid)+",\n") s = append(s, "Domain: "+fmt.Sprintf("%#v", this.Domain)+",\n") @@ -1970,6 +2163,7 @@ func (this *DesiredLRP) GoString() string { if this.VolumeMountedFiles != nil { s = append(s, "VolumeMountedFiles: "+fmt.Sprintf("%#v", this.VolumeMountedFiles)+",\n") } + s = append(s, "UpdateStrategy: "+fmt.Sprintf("%#v", this.UpdateStrategy)+",\n") s = append(s, "}") return strings.Join(s, "") } @@ -2487,6 +2681,24 @@ func (m *DesiredLRPUpdate) MarshalToSizedBuffer(dAtA []byte) (int, error) { _ = i var l int _ = l + if m.OptionalImagePassword != nil { + { + size := m.OptionalImagePassword.Size() + i -= size + if _, err := m.OptionalImagePassword.MarshalTo(dAtA[i:]); err != nil { + return 0, err + } + } + } + if m.OptionalImageUsername != nil { + { + size := m.OptionalImageUsername.Size() + i -= size + if _, err := m.OptionalImageUsername.MarshalTo(dAtA[i:]); err != nil { + return 0, err + } + } + } if len(m.MetricTags) > 0 { for k := range m.MetricTags { v := m.MetricTags[k] @@ -2572,6 +2784,34 @@ func (m *DesiredLRPUpdate_Annotation) MarshalToSizedBuffer(dAtA []byte) (int, er dAtA[i] = 0x1a return len(dAtA) - i, nil } +func (m *DesiredLRPUpdate_ImageUsername) MarshalTo(dAtA []byte) (int, error) { + size := m.Size() + return m.MarshalToSizedBuffer(dAtA[:size]) +} + +func (m *DesiredLRPUpdate_ImageUsername) MarshalToSizedBuffer(dAtA []byte) (int, error) { + i := len(dAtA) + i -= len(m.ImageUsername) + copy(dAtA[i:], m.ImageUsername) + i = encodeVarintDesiredLrp(dAtA, i, uint64(len(m.ImageUsername))) + i-- + dAtA[i] = 0x2a + return len(dAtA) - i, nil +} +func (m *DesiredLRPUpdate_ImagePassword) MarshalTo(dAtA []byte) (int, error) { + size := m.Size() + return m.MarshalToSizedBuffer(dAtA[:size]) +} + +func (m *DesiredLRPUpdate_ImagePassword) MarshalToSizedBuffer(dAtA []byte) (int, error) { + i := len(dAtA) + i -= len(m.ImagePassword) + copy(dAtA[i:], m.ImagePassword) + i = encodeVarintDesiredLrp(dAtA, i, uint64(len(m.ImagePassword))) + i-- + dAtA[i] = 0x32 + return len(dAtA) - i, nil +} func (m *DesiredLRPKey) Marshal() (dAtA []byte, err error) { size := m.Size() dAtA = make([]byte, size) @@ -2681,6 +2921,13 @@ func (m *DesiredLRP) MarshalToSizedBuffer(dAtA []byte) (int, error) { _ = i var l int _ = l + if m.UpdateStrategy != 0 { + i = encodeVarintDesiredLrp(dAtA, i, uint64(m.UpdateStrategy)) + i-- + dAtA[i] = 0x2 + i-- + dAtA[i] = 0xb8 + } if len(m.VolumeMountedFiles) > 0 { for iNdEx := len(m.VolumeMountedFiles) - 1; iNdEx >= 0; iNdEx-- { { @@ -3333,6 +3580,12 @@ func (m *DesiredLRPUpdate) Size() (n int) { n += mapEntrySize + 1 + sovDesiredLrp(uint64(mapEntrySize)) } } + if m.OptionalImageUsername != nil { + n += m.OptionalImageUsername.Size() + } + if m.OptionalImagePassword != nil { + n += m.OptionalImagePassword.Size() + } return n } @@ -3355,6 +3608,26 @@ func (m *DesiredLRPUpdate_Annotation) Size() (n int) { n += 1 + l + sovDesiredLrp(uint64(l)) return n } +func (m *DesiredLRPUpdate_ImageUsername) Size() (n int) { + if m == nil { + return 0 + } + var l int + _ = l + l = len(m.ImageUsername) + n += 1 + l + sovDesiredLrp(uint64(l)) + return n +} +func (m *DesiredLRPUpdate_ImagePassword) Size() (n int) { + if m == nil { + return 0 + } + var l int + _ = l + l = len(m.ImagePassword) + n += 1 + l + sovDesiredLrp(uint64(l)) + return n +} func (m *DesiredLRPKey) Size() (n int) { if m == nil { return 0 @@ -3574,6 +3847,9 @@ func (m *DesiredLRP) Size() (n int) { n += 2 + l + sovDesiredLrp(uint64(l)) } } + if m.UpdateStrategy != 0 { + n += 2 + sovDesiredLrp(uint64(m.UpdateStrategy)) + } return n } @@ -3721,6 +3997,8 @@ func (this *DesiredLRPUpdate) String() string { `Routes:` + fmt.Sprintf("%v", this.Routes) + `,`, `OptionalAnnotation:` + fmt.Sprintf("%v", this.OptionalAnnotation) + `,`, `MetricTags:` + mapStringForMetricTags + `,`, + `OptionalImageUsername:` + fmt.Sprintf("%v", this.OptionalImageUsername) + `,`, + `OptionalImagePassword:` + fmt.Sprintf("%v", this.OptionalImagePassword) + `,`, `}`, }, "") return s @@ -3745,6 +4023,26 @@ func (this *DesiredLRPUpdate_Annotation) String() string { }, "") return s } +func (this *DesiredLRPUpdate_ImageUsername) String() string { + if this == nil { + return "nil" + } + s := strings.Join([]string{`&DesiredLRPUpdate_ImageUsername{`, + `ImageUsername:` + fmt.Sprintf("%v", this.ImageUsername) + `,`, + `}`, + }, "") + return s +} +func (this *DesiredLRPUpdate_ImagePassword) String() string { + if this == nil { + return "nil" + } + s := strings.Join([]string{`&DesiredLRPUpdate_ImagePassword{`, + `ImagePassword:` + fmt.Sprintf("%v", this.ImagePassword) + `,`, + `}`, + }, "") + return s +} func (this *DesiredLRPKey) String() string { if this == nil { return "nil" @@ -3858,6 +4156,7 @@ func (this *DesiredLRP) String() string { `Sidecars:` + repeatedStringForSidecars + `,`, `LogRateLimit:` + strings.Replace(fmt.Sprintf("%v", this.LogRateLimit), "LogRateLimit", "LogRateLimit", 1) + `,`, `VolumeMountedFiles:` + repeatedStringForVolumeMountedFiles + `,`, + `UpdateStrategy:` + fmt.Sprintf("%v", this.UpdateStrategy) + `,`, `}`, }, "") return s @@ -5661,6 +5960,70 @@ func (m *DesiredLRPUpdate) Unmarshal(dAtA []byte) error { } m.MetricTags[mapkey] = mapvalue iNdEx = postIndex + case 5: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field ImageUsername", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowDesiredLrp + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + stringLen |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + intStringLen := int(stringLen) + if intStringLen < 0 { + return ErrInvalidLengthDesiredLrp + } + postIndex := iNdEx + intStringLen + if postIndex < 0 { + return ErrInvalidLengthDesiredLrp + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.OptionalImageUsername = &DesiredLRPUpdate_ImageUsername{string(dAtA[iNdEx:postIndex])} + iNdEx = postIndex + case 6: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field ImagePassword", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowDesiredLrp + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + stringLen |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + intStringLen := int(stringLen) + if intStringLen < 0 { + return ErrInvalidLengthDesiredLrp + } + postIndex := iNdEx + intStringLen + if postIndex < 0 { + return ErrInvalidLengthDesiredLrp + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.OptionalImagePassword = &DesiredLRPUpdate_ImagePassword{string(dAtA[iNdEx:postIndex])} + iNdEx = postIndex default: iNdEx = preIndex skippy, err := skipDesiredLrp(dAtA[iNdEx:]) @@ -7300,6 +7663,25 @@ func (m *DesiredLRP) Unmarshal(dAtA []byte) error { return err } iNdEx = postIndex + case 39: + if wireType != 0 { + return fmt.Errorf("proto: wrong wireType = %d for field UpdateStrategy", wireType) + } + m.UpdateStrategy = 0 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowDesiredLrp + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + m.UpdateStrategy |= DesiredLRP_UpdateStrategy(b&0x7F) << shift + if b < 0x80 { + break + } + } default: iNdEx = preIndex skippy, err := skipDesiredLrp(dAtA[iNdEx:]) diff --git a/vendor/code.cloudfoundry.org/bbs/models/desired_lrp.proto b/vendor/code.cloudfoundry.org/bbs/models/desired_lrp.proto index d079c034..f9d354db 100644 --- a/vendor/code.cloudfoundry.org/bbs/models/desired_lrp.proto +++ b/vendor/code.cloudfoundry.org/bbs/models/desired_lrp.proto @@ -18,6 +18,8 @@ import "sidecar.proto"; import "log_rate_limit.proto"; import "file.proto"; +option (gogoproto.goproto_enum_prefix_all) = true; + message DesiredLRPSchedulingInfo { DesiredLRPKey desired_lrp_key = 1 [(gogoproto.nullable) = false, (gogoproto.jsontag) = "", (gogoproto.embed) = true]; @@ -88,6 +90,14 @@ message DesiredLRPUpdate { string annotation = 3; } map metric_tags = 4; + + oneof optional_image_username { + string image_username = 5; + } + + oneof optional_image_password { + string image_password = 6; + } } message DesiredLRPKey { @@ -150,4 +160,9 @@ message DesiredLRP { repeated Sidecar sidecars = 36; LogRateLimit log_rate_limit = 37; repeated File volume_mounted_files = 38 [(gogoproto.jsontag) = "volume_mounted_files"]; + enum UpdateStrategy { + ROLLING = 0 [(gogoproto.enumvalue_customname) = "UpdateStrategyRolling"]; + RECREATE = 1 [(gogoproto.enumvalue_customname) = "UpdateStrategyRecreate"]; + } + UpdateStrategy update_strategy = 39 [(gogoproto.jsontag) = "update_strategy"]; } diff --git a/vendor/code.cloudfoundry.org/bbs/models/desired_lrp_requests.pb.go b/vendor/code.cloudfoundry.org/bbs/models/desired_lrp_requests.pb.go index 703679ff..16248592 100644 --- a/vendor/code.cloudfoundry.org/bbs/models/desired_lrp_requests.pb.go +++ b/vendor/code.cloudfoundry.org/bbs/models/desired_lrp_requests.pb.go @@ -122,6 +122,7 @@ func (m *DesiredLRPsResponse) GetDesiredLrps() []*DesiredLRP { type DesiredLRPsRequest struct { Domain string `protobuf:"bytes,1,opt,name=domain,proto3" json:"domain"` ProcessGuids []string `protobuf:"bytes,2,rep,name=process_guids,json=processGuids,proto3" json:"process_guids,omitempty"` + AppGuids []string `protobuf:"bytes,3,rep,name=app_guids,json=appGuids,proto3" json:"app_guids,omitempty"` } func (m *DesiredLRPsRequest) Reset() { *m = DesiredLRPsRequest{} } @@ -170,6 +171,13 @@ func (m *DesiredLRPsRequest) GetProcessGuids() []string { return nil } +func (m *DesiredLRPsRequest) GetAppGuids() []string { + if m != nil { + return m.AppGuids + } + return nil +} + type DesiredLRPResponse struct { Error *Error `protobuf:"bytes,1,opt,name=error,proto3" json:"error,omitempty"` DesiredLrp *DesiredLRP `protobuf:"bytes,2,opt,name=desired_lrp,json=desiredLrp,proto3" json:"desired_lrp,omitempty"` @@ -521,38 +529,39 @@ func init() { func init() { proto.RegisterFile("desired_lrp_requests.proto", fileDescriptor_7235cc1a84e38c85) } var fileDescriptor_7235cc1a84e38c85 = []byte{ - // 493 bytes of a gzipped FileDescriptorProto - 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xac, 0x94, 0x4f, 0x6b, 0x13, 0x41, - 0x18, 0xc6, 0x77, 0x2a, 0x06, 0xfa, 0x6e, 0x0a, 0x75, 0x3c, 0x74, 0x4d, 0x65, 0x1a, 0xa7, 0x97, - 0x5e, 0x9a, 0x4a, 0xa3, 0x5f, 0x20, 0x28, 0x45, 0x08, 0x52, 0x46, 0x7a, 0x94, 0x25, 0xd9, 0x9d, - 0x6c, 0x17, 0x92, 0x9d, 0xed, 0x4c, 0x56, 0xe8, 0xad, 0x1f, 0xc1, 0x8f, 0x21, 0x78, 0xf6, 0x3b, - 0x78, 0xcc, 0xb1, 0xa7, 0x62, 0x36, 0x17, 0xe9, 0xa9, 0x1f, 0x41, 0x32, 0x33, 0x75, 0x27, 0xad, - 0x51, 0x23, 0x9e, 0x92, 0x79, 0xff, 0x3c, 0xef, 0xef, 0x7d, 0x79, 0x58, 0x68, 0xc4, 0x5c, 0xa5, - 0x92, 0xc7, 0xe1, 0x50, 0xe6, 0xa1, 0xe4, 0x67, 0x05, 0x57, 0x63, 0xd5, 0xca, 0xa5, 0x18, 0x0b, - 0x5c, 0x1b, 0x89, 0x98, 0x0f, 0x55, 0x63, 0x3f, 0x49, 0xc7, 0xa7, 0x45, 0xbf, 0x15, 0x89, 0xd1, - 0x41, 0x22, 0x12, 0x71, 0xa0, 0xd3, 0xfd, 0x62, 0xa0, 0x5f, 0xfa, 0xa1, 0xff, 0x99, 0xb6, 0xc6, - 0x23, 0x47, 0xd2, 0x86, 0x7c, 0x2e, 0xa5, 0x90, 0xe6, 0x41, 0x3b, 0xb0, 0xfd, 0xca, 0x54, 0x74, - 0xd9, 0x71, 0x37, 0x1d, 0xf0, 0xe8, 0x3c, 0x1a, 0x72, 0xc6, 0x55, 0x2e, 0x32, 0xc5, 0xf1, 0x2e, - 0x3c, 0xd4, 0xd5, 0x01, 0x6a, 0xa2, 0x3d, 0xff, 0x70, 0xa3, 0x65, 0x28, 0x5a, 0xaf, 0xe7, 0x41, - 0x66, 0x72, 0xf4, 0x0c, 0x1e, 0x57, 0x1a, 0x6a, 0xa5, 0x5e, 0xfc, 0x12, 0xea, 0x0e, 0xa1, 0x0a, - 0xd6, 0x9a, 0x0f, 0xf6, 0xfc, 0x43, 0x7c, 0x5b, 0x5b, 0xe9, 0x32, 0xdf, 0xd6, 0x75, 0x65, 0xae, - 0xe8, 0x7b, 0xc0, 0x0b, 0x23, 0xf5, 0xa9, 0x30, 0x85, 0x5a, 0x2c, 0x46, 0xbd, 0x34, 0xd3, 0x23, - 0xd7, 0x3b, 0x70, 0x7d, 0xb5, 0x63, 0x23, 0xcc, 0xfe, 0xe2, 0x5d, 0xd8, 0xc8, 0xa5, 0x88, 0xb8, - 0x52, 0x61, 0x52, 0xa4, 0xb1, 0x99, 0xb8, 0xce, 0xea, 0x36, 0x78, 0x34, 0x8f, 0xd1, 0xcc, 0x95, - 0x5f, 0x6d, 0xa1, 0x36, 0xf8, 0xce, 0x42, 0xc1, 0x9a, 0x2e, 0xfd, 0xd5, 0x3e, 0x50, 0xed, 0x43, - 0x3f, 0x23, 0x78, 0x56, 0xa5, 0xde, 0x45, 0xa7, 0x3c, 0x2e, 0x86, 0x69, 0x96, 0xbc, 0xc9, 0x06, - 0x62, 0xc5, 0x83, 0xf6, 0xe0, 0xa9, 0xeb, 0x22, 0xf5, 0x53, 0x2b, 0x4c, 0xe7, 0x62, 0xf6, 0xc0, - 0xcd, 0xfb, 0x40, 0x8b, 0x53, 0xd9, 0x93, 0x0a, 0xef, 0x0e, 0x0f, 0xfd, 0x82, 0x60, 0x7f, 0x59, - 0x5f, 0xe7, 0xfc, 0xb8, 0x3a, 0xe4, 0x6a, 0xe4, 0x21, 0x6c, 0xff, 0x86, 0xdc, 0x5e, 0xf2, 0xcf, - 0xe0, 0xc1, 0x32, 0x70, 0x7a, 0x02, 0xa4, 0xea, 0xba, 0x03, 0x6a, 0x0c, 0xd4, 0x86, 0xba, 0x6b, - 0x0e, 0x6b, 0xa3, 0xcd, 0xeb, 0xab, 0x9d, 0x85, 0x38, 0xf3, 0x1d, 0xb7, 0xd0, 0x23, 0xd8, 0x34, - 0xb2, 0xda, 0x2b, 0xb7, 0x42, 0x0b, 0x2e, 0x40, 0x7f, 0xe5, 0x82, 0x0b, 0x04, 0x5b, 0x27, 0x79, - 0xdc, 0x1b, 0x73, 0xd7, 0x7c, 0xff, 0x4e, 0x86, 0x9f, 0x43, 0xad, 0xd0, 0x7a, 0xf6, 0x78, 0xc1, - 0x7d, 0x00, 0x33, 0x8f, 0xd9, 0x3a, 0xfa, 0x16, 0xb6, 0x18, 0x1f, 0x89, 0x0f, 0xff, 0x89, 0xa0, - 0xf3, 0x62, 0x32, 0x25, 0xde, 0xe5, 0x94, 0x78, 0x37, 0x53, 0x82, 0x2e, 0x4a, 0x82, 0x3e, 0x95, - 0x04, 0x7d, 0x2d, 0x09, 0x9a, 0x94, 0x04, 0x7d, 0x2b, 0x09, 0xfa, 0x5e, 0x12, 0xef, 0xa6, 0x24, - 0xe8, 0xe3, 0x8c, 0x78, 0x93, 0x19, 0xf1, 0x2e, 0x67, 0xc4, 0xeb, 0xd7, 0xf4, 0xb7, 0xa9, 0xfd, - 0x23, 0x00, 0x00, 0xff, 0xff, 0xca, 0x08, 0x89, 0xe8, 0x10, 0x05, 0x00, 0x00, + // 507 bytes of a gzipped FileDescriptorProto + 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xac, 0x54, 0xc1, 0x6e, 0xd3, 0x40, + 0x10, 0xf5, 0xb6, 0x22, 0x22, 0xe3, 0x54, 0x2a, 0xe6, 0x50, 0x93, 0xa0, 0x6d, 0xd8, 0x5e, 0x7a, + 0x69, 0x8a, 0x1a, 0xf8, 0x81, 0x08, 0x54, 0x21, 0x45, 0xa8, 0x5a, 0xd4, 0xb3, 0xe5, 0xd8, 0x1b, + 0xd7, 0x52, 0xe2, 0xdd, 0xee, 0xc6, 0x48, 0xe5, 0xd4, 0x4f, 0xe0, 0x33, 0x90, 0x38, 0xf3, 0x0f, + 0x1c, 0x73, 0xec, 0xa9, 0x22, 0xce, 0x05, 0xf5, 0xd4, 0x4f, 0x40, 0xd9, 0xdd, 0x62, 0xa7, 0xa5, + 0x40, 0x10, 0xa7, 0x64, 0x67, 0xde, 0xbc, 0x79, 0xf3, 0xf4, 0x64, 0x68, 0xc6, 0x4c, 0xa5, 0x92, + 0xc5, 0xc1, 0x48, 0x8a, 0x40, 0xb2, 0xd3, 0x9c, 0xa9, 0x89, 0xea, 0x08, 0xc9, 0x27, 0xdc, 0xab, + 0x8d, 0x79, 0xcc, 0x46, 0xaa, 0xb9, 0x97, 0xa4, 0x93, 0x93, 0x7c, 0xd0, 0x89, 0xf8, 0x78, 0x3f, + 0xe1, 0x09, 0xdf, 0xd7, 0xed, 0x41, 0x3e, 0xd4, 0x2f, 0xfd, 0xd0, 0xff, 0xcc, 0x58, 0xf3, 0x51, + 0x85, 0xd2, 0x96, 0x5c, 0x26, 0x25, 0x97, 0xe6, 0x41, 0x7a, 0xd0, 0x7a, 0x65, 0x10, 0x7d, 0x7a, + 0xd4, 0x4f, 0x87, 0x2c, 0x3a, 0x8b, 0x46, 0x8c, 0x32, 0x25, 0x78, 0xa6, 0x98, 0xb7, 0x03, 0x0f, + 0x34, 0xda, 0x47, 0x6d, 0xb4, 0xeb, 0x1e, 0x6c, 0x74, 0x8c, 0x8a, 0xce, 0xeb, 0x45, 0x91, 0x9a, + 0x1e, 0x39, 0x85, 0xc7, 0x25, 0x87, 0x5a, 0x69, 0xd6, 0x7b, 0x09, 0x8d, 0x8a, 0x42, 0xe5, 0xaf, + 0xb5, 0xd7, 0x77, 0xdd, 0x03, 0xef, 0x06, 0x5b, 0xf2, 0x52, 0xd7, 0xe2, 0xfa, 0x52, 0x28, 0xf2, + 0x01, 0xbc, 0xa5, 0x95, 0xda, 0x2a, 0x8f, 0x40, 0x2d, 0xe6, 0xe3, 0x30, 0xcd, 0xf4, 0xca, 0x7a, + 0x0f, 0xae, 0x2e, 0xb7, 0x6d, 0x85, 0xda, 0x5f, 0x6f, 0x07, 0x36, 0x84, 0xe4, 0x11, 0x53, 0x2a, + 0x48, 0xf2, 0x34, 0x36, 0x1b, 0xeb, 0xb4, 0x61, 0x8b, 0x87, 0x8b, 0x9a, 0xd7, 0x82, 0x7a, 0x28, + 0x84, 0x05, 0xac, 0x6b, 0xc0, 0xc3, 0x50, 0x08, 0xdd, 0x24, 0x59, 0x75, 0xf7, 0x6a, 0xd7, 0x76, + 0xc1, 0xad, 0x5c, 0xeb, 0xaf, 0x69, 0xe8, 0xaf, 0x8e, 0x85, 0xf2, 0x58, 0xf2, 0x19, 0xc1, 0xb3, + 0xb2, 0xf5, 0x2e, 0x3a, 0x61, 0x71, 0x3e, 0x4a, 0xb3, 0xe4, 0x4d, 0x36, 0xe4, 0x2b, 0xba, 0x1d, + 0xc2, 0xd3, 0x6a, 0xc4, 0xd4, 0x4f, 0xae, 0x20, 0x5d, 0x90, 0x59, 0xf7, 0xdb, 0x77, 0x05, 0x2d, + 0x6f, 0xa5, 0x4f, 0x4a, 0x79, 0xb7, 0xf4, 0x90, 0x2f, 0x08, 0xf6, 0xee, 0x9b, 0xeb, 0x9d, 0x1d, + 0x95, 0x2e, 0xaf, 0xa6, 0x3c, 0x80, 0xd6, 0x6f, 0x94, 0x5b, 0x27, 0xff, 0x2c, 0xdc, 0xbf, 0x4f, + 0x38, 0x39, 0x06, 0x5c, 0x4e, 0xdd, 0x12, 0x6a, 0xd2, 0xd5, 0x85, 0x46, 0x35, 0x39, 0x36, 0x63, + 0x9b, 0x57, 0x97, 0xdb, 0x4b, 0x75, 0xea, 0x56, 0xa2, 0x44, 0x0e, 0x61, 0xd3, 0xd0, 0xea, 0xac, + 0xdc, 0x10, 0x2d, 0xa5, 0x00, 0xfd, 0x55, 0x0a, 0xce, 0x11, 0x6c, 0x1d, 0x8b, 0x38, 0x9c, 0xb0, + 0x6a, 0xf8, 0xfe, 0x5d, 0x99, 0xf7, 0x1c, 0x6a, 0xb9, 0xe6, 0xb3, 0xe6, 0xf9, 0x77, 0x05, 0x98, + 0x7d, 0xd4, 0xe2, 0xc8, 0x5b, 0xd8, 0xa2, 0x6c, 0xcc, 0xdf, 0xff, 0x27, 0x05, 0xbd, 0x17, 0xd3, + 0x19, 0x76, 0x2e, 0x66, 0xd8, 0xb9, 0x9e, 0x61, 0x74, 0x5e, 0x60, 0xf4, 0xa9, 0xc0, 0xe8, 0x6b, + 0x81, 0xd1, 0xb4, 0xc0, 0xe8, 0x5b, 0x81, 0xd1, 0xf7, 0x02, 0x3b, 0xd7, 0x05, 0x46, 0x1f, 0xe7, + 0xd8, 0x99, 0xce, 0xb1, 0x73, 0x31, 0xc7, 0xce, 0xa0, 0xa6, 0x3f, 0x5c, 0xdd, 0x1f, 0x01, 0x00, + 0x00, 0xff, 0xff, 0x46, 0x98, 0xcb, 0x90, 0x2d, 0x05, 0x00, 0x00, } func (this *DesiredLRPLifecycleResponse) Equal(that interface{}) bool { @@ -641,6 +650,14 @@ func (this *DesiredLRPsRequest) Equal(that interface{}) bool { return false } } + if len(this.AppGuids) != len(that1.AppGuids) { + return false + } + for i := range this.AppGuids { + if this.AppGuids[i] != that1.AppGuids[i] { + return false + } + } return true } func (this *DesiredLRPResponse) Equal(that interface{}) bool { @@ -859,10 +876,11 @@ func (this *DesiredLRPsRequest) GoString() string { if this == nil { return "nil" } - s := make([]string, 0, 6) + s := make([]string, 0, 7) s = append(s, "&models.DesiredLRPsRequest{") s = append(s, "Domain: "+fmt.Sprintf("%#v", this.Domain)+",\n") s = append(s, "ProcessGuids: "+fmt.Sprintf("%#v", this.ProcessGuids)+",\n") + s = append(s, "AppGuids: "+fmt.Sprintf("%#v", this.AppGuids)+",\n") s = append(s, "}") return strings.Join(s, "") } @@ -1068,6 +1086,15 @@ func (m *DesiredLRPsRequest) MarshalToSizedBuffer(dAtA []byte) (int, error) { _ = i var l int _ = l + if len(m.AppGuids) > 0 { + for iNdEx := len(m.AppGuids) - 1; iNdEx >= 0; iNdEx-- { + i -= len(m.AppGuids[iNdEx]) + copy(dAtA[i:], m.AppGuids[iNdEx]) + i = encodeVarintDesiredLrpRequests(dAtA, i, uint64(len(m.AppGuids[iNdEx]))) + i-- + dAtA[i] = 0x1a + } + } if len(m.ProcessGuids) > 0 { for iNdEx := len(m.ProcessGuids) - 1; iNdEx >= 0; iNdEx-- { i -= len(m.ProcessGuids[iNdEx]) @@ -1426,6 +1453,12 @@ func (m *DesiredLRPsRequest) Size() (n int) { n += 1 + l + sovDesiredLrpRequests(uint64(l)) } } + if len(m.AppGuids) > 0 { + for _, s := range m.AppGuids { + l = len(s) + n += 1 + l + sovDesiredLrpRequests(uint64(l)) + } + } return n } @@ -1577,6 +1610,7 @@ func (this *DesiredLRPsRequest) String() string { s := strings.Join([]string{`&DesiredLRPsRequest{`, `Domain:` + fmt.Sprintf("%v", this.Domain) + `,`, `ProcessGuids:` + fmt.Sprintf("%v", this.ProcessGuids) + `,`, + `AppGuids:` + fmt.Sprintf("%v", this.AppGuids) + `,`, `}`, }, "") return s @@ -1967,6 +2001,38 @@ func (m *DesiredLRPsRequest) Unmarshal(dAtA []byte) error { } m.ProcessGuids = append(m.ProcessGuids, string(dAtA[iNdEx:postIndex])) iNdEx = postIndex + case 3: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field AppGuids", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowDesiredLrpRequests + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + stringLen |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + intStringLen := int(stringLen) + if intStringLen < 0 { + return ErrInvalidLengthDesiredLrpRequests + } + postIndex := iNdEx + intStringLen + if postIndex < 0 { + return ErrInvalidLengthDesiredLrpRequests + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.AppGuids = append(m.AppGuids, string(dAtA[iNdEx:postIndex])) + iNdEx = postIndex default: iNdEx = preIndex skippy, err := skipDesiredLrpRequests(dAtA[iNdEx:]) diff --git a/vendor/code.cloudfoundry.org/bbs/models/desired_lrp_requests.proto b/vendor/code.cloudfoundry.org/bbs/models/desired_lrp_requests.proto index be746255..237bfdb0 100644 --- a/vendor/code.cloudfoundry.org/bbs/models/desired_lrp_requests.proto +++ b/vendor/code.cloudfoundry.org/bbs/models/desired_lrp_requests.proto @@ -18,6 +18,7 @@ message DesiredLRPsResponse { message DesiredLRPsRequest { string domain = 1 [(gogoproto.jsontag) = "domain"]; repeated string process_guids = 2; + repeated string app_guids = 3; } message DesiredLRPResponse { diff --git a/vendor/code.cloudfoundry.org/bbs/models/log_config.go b/vendor/code.cloudfoundry.org/bbs/models/log_config.go new file mode 100644 index 00000000..c53e223f --- /dev/null +++ b/vendor/code.cloudfoundry.org/bbs/models/log_config.go @@ -0,0 +1,34 @@ +package models + +import "strconv" + +// LogConfig contains container log routing configuration. +// Moved here from code.cloudfoundry.org/executor to break silk-release's +// dependency on the executor module. +type LogConfig struct { + Guid string `json:"guid"` + Index int `json:"index"` + SourceName string `json:"source_name"` + Tags map[string]string `json:"tags"` +} + +func (l LogConfig) GetSourceNameAndTagsForLogging() (string, map[string]string) { + sourceName := l.SourceName + if sourceName == "" { + sourceName = "LOG" + } + + tags := map[string]string{} + for k, v := range l.Tags { + tags[k] = v + } + + if _, ok := tags["source_id"]; !ok { + tags["source_id"] = l.Guid + } + sourceIndex := strconv.Itoa(l.Index) + if _, ok := tags["instance_id"]; !ok { + tags["instance_id"] = sourceIndex + } + return sourceName, tags +} diff --git a/vendor/code.cloudfoundry.org/bbs/models/rep_interfaces.go b/vendor/code.cloudfoundry.org/bbs/models/rep_interfaces.go new file mode 100644 index 00000000..066807c8 --- /dev/null +++ b/vendor/code.cloudfoundry.org/bbs/models/rep_interfaces.go @@ -0,0 +1,38 @@ +package models + +// Rep client interfaces moved here from code.cloudfoundry.org/rep +// to break the bbs <-> rep module cycle. + +import ( + "net/http" + "time" + + "code.cloudfoundry.org/lager/v3" +) + +// RepClient is the interface bbs uses to communicate with rep agents. +// rep implements this interface. Defined here to break the bbs <-> rep cycle. +// +//go:generate counterfeiter -o fakes/fake_rep_client.go . RepClient +type RepClient interface { + State(logger lager.Logger) (CellState, error) + Perform(logger lager.Logger, work Work) (Work, error) + UpdateLRPInstance(logger lager.Logger, update LRPUpdate) error + StopLRPInstance(logger lager.Logger, key ActualLRPKey, instanceKey ActualLRPInstanceKey) error + CancelTask(logger lager.Logger, taskGuid string) error + SetStateClient(stateClient *http.Client) + StateClientTimeout() time.Duration +} + +// RepClientFactory creates RepClient instances. +// +//go:generate counterfeiter -o fakes/fake_rep_client_factory.go . RepClientFactory +type RepClientFactory interface { + CreateClient(address, url, traceID string) (RepClient, error) +} + +// RepSimClient extends RepClient with simulation capabilities. +type RepSimClient interface { + RepClient + Reset() error +} diff --git a/vendor/code.cloudfoundry.org/bbs/models/rootfs_providers.go b/vendor/code.cloudfoundry.org/bbs/models/rootfs_providers.go new file mode 100644 index 00000000..dd160525 --- /dev/null +++ b/vendor/code.cloudfoundry.org/bbs/models/rootfs_providers.go @@ -0,0 +1,158 @@ +package models + +// RootFS provider types moved here from code.cloudfoundry.org/rep +// to break the bbs <-> rep module cycle. + +import ( + "encoding/json" + "net/url" +) + +type RootFSProvider interface { + Type() RootFSProviderType + Match(url.URL) bool +} + +type RootFSProviderType string + +const ( + RootFSProviderTypeArbitrary RootFSProviderType = "arbitrary" + RootFSProviderTypeFixedSet RootFSProviderType = "fixed_set" +) + +type RootFSProviders map[string]RootFSProvider + +func (p RootFSProviders) Copy() RootFSProviders { + pCopy := RootFSProviders{} + for key := range p { + pCopy[key] = p[key] + } + return pCopy +} + +func (p RootFSProviders) Match(rootFS url.URL) bool { + provider, ok := p[rootFS.Scheme] + if !ok { + return false + } + return provider.Match(rootFS) +} + +func (providers *RootFSProviders) UnmarshalJSON(payload []byte) error { + var providerEnvelope map[string]json.RawMessage + err := json.Unmarshal(payload, &providerEnvelope) + if err != nil { + return err + } + + *providers = RootFSProviders{} + + for key, value := range providerEnvelope { + provider, err := unmarshalRootFSProvider(value) + if err != nil { + return err + } + (*providers)[key] = provider + } + + return nil +} + +type rootFSProviderEnvelope struct { + Type RootFSProviderType `json:"type"` +} + +func unmarshalRootFSProvider(payload []byte) (RootFSProvider, error) { + var envelope rootFSProviderEnvelope + err := json.Unmarshal(payload, &envelope) + if err != nil { + return nil, err + } + + switch envelope.Type { + case RootFSProviderTypeArbitrary: + return ArbitraryRootFSProvider{}, nil + case RootFSProviderTypeFixedSet: + var provider FixedSetRootFSProvider + err := provider.UnmarshalJSON(payload) + return provider, err + } + + return nil, nil +} + +type ArbitraryRootFSProvider struct{} + +func (ArbitraryRootFSProvider) Type() RootFSProviderType { return RootFSProviderTypeArbitrary } + +func (ArbitraryRootFSProvider) Match(url.URL) bool { return true } + +func (provider ArbitraryRootFSProvider) MarshalJSON() ([]byte, error) { + return json.Marshal(map[string]string{"type": string(provider.Type())}) +} + +type FixedSetRootFSProvider struct { + FixedSet StringSet +} + +func NewFixedSetRootFSProvider(rootfses ...string) FixedSetRootFSProvider { + return FixedSetRootFSProvider{ + FixedSet: NewStringSet(rootfses...), + } +} + +func (FixedSetRootFSProvider) Type() RootFSProviderType { return RootFSProviderTypeFixedSet } + +func (provider FixedSetRootFSProvider) Match(rootfs url.URL) bool { + return provider.FixedSet.Contains(rootfs.Opaque) +} + +func (provider FixedSetRootFSProvider) MarshalJSON() ([]byte, error) { + setPayload, err := json.Marshal(provider.FixedSet) + if err != nil { + return nil, err + } + + typePayload, err := json.Marshal(provider.Type()) + if err != nil { + return nil, err + } + + setValue := json.RawMessage(setPayload) + typeValue := json.RawMessage(typePayload) + + return json.Marshal(map[string]*json.RawMessage{ + "type": &typeValue, + "set": &setValue, + }) +} + +func (provider *FixedSetRootFSProvider) UnmarshalJSON(payload []byte) error { + type fixed struct { + Set StringSet `json:"set"` + } + + var f fixed + err := json.Unmarshal(payload, &f) + if err != nil { + return err + } + + provider.FixedSet = f.Set + return nil +} + +type StringSet map[string]struct{} + +func NewStringSet(entries ...string) StringSet { + set := StringSet{} + for _, entry := range entries { + set[entry] = struct{}{} + } + return set +} + +func (set StringSet) Contains(candidate string) bool { + _, ok := set[candidate] + return ok +} diff --git a/vendor/code.cloudfoundry.org/bbs/models/scheduling_types.go b/vendor/code.cloudfoundry.org/bbs/models/scheduling_types.go new file mode 100644 index 00000000..0c1362f8 --- /dev/null +++ b/vendor/code.cloudfoundry.org/bbs/models/scheduling_types.go @@ -0,0 +1,367 @@ +package models + +// Scheduling and placement types moved here from code.cloudfoundry.org/rep +// to break the bbs <-> rep module cycle. + +import ( + "encoding/json" + "errors" + "fmt" + "net/url" + "sort" + "strings" +) + +const InternalRouter = "internal-router" + +var ErrorIncompatibleRootfs = errors.New("rootfs not found") + +const StackVersionFile = "/etc/stack-version" + +type Resources struct { + MemoryMB int32 + DiskMB int32 + Containers int +} + +func NewResources(memoryMb, diskMb int32, containerCount int) Resources { + return Resources{memoryMb, diskMb, containerCount} +} + +func (r *Resources) Copy() Resources { + return *r +} + +func (r *Resources) Subtract(res *Resource) { + r.MemoryMB -= res.MemoryMB + r.DiskMB -= res.DiskMB + r.Containers -= 1 +} + +func (r *Resources) ComputeScore(total *Resources) float64 { + fractionUsedMemory := 1.0 - float64(r.MemoryMB)/float64(total.MemoryMB) + fractionUsedDisk := 1.0 - float64(r.DiskMB)/float64(total.DiskMB) + fractionUsedContainers := 1.0 - float64(r.Containers)/float64(total.Containers) + return (fractionUsedMemory + fractionUsedDisk + fractionUsedContainers) / 3.0 +} + +type Resource struct { + MemoryMB int32 + DiskMB int32 + MaxPids int32 +} + +func NewResource(memoryMb, diskMb int32, maxPids int32) Resource { + return Resource{MemoryMB: memoryMb, DiskMB: diskMb, MaxPids: maxPids} +} + +func (r *Resource) Valid() bool { + return r.DiskMB >= 0 && r.MemoryMB >= 0 +} + +func (r *Resource) Copy() Resource { + return NewResource(r.MemoryMB, r.DiskMB, r.MaxPids) +} + +type PlacementConstraint struct { + PlacementTags []string + VolumeDrivers []string + RootFs string +} + +func NewPlacementConstraint(rootFs string, placementTags, volumeDrivers []string) PlacementConstraint { + return PlacementConstraint{PlacementTags: placementTags, VolumeDrivers: volumeDrivers, RootFs: rootFs} +} + +func (p *PlacementConstraint) Valid() bool { + return p.RootFs != "" +} + +// SchedulingLRP is the rep-facing LRP type used in scheduling. +// Named SchedulingLRP to avoid conflict with protobuf-generated ActualLRP/DesiredLRP. +type SchedulingLRP struct { + InstanceGUID string `json:"instance_guid"` + ActualLRPKey + PlacementConstraint + Resource + State string `json:"state"` +} + +func NewSchedulingLRP(instanceGUID string, key ActualLRPKey, res Resource, pc PlacementConstraint) SchedulingLRP { + return SchedulingLRP{instanceGUID, key, pc, res, ""} +} + +func (lrp *SchedulingLRP) Identifier() string { + return fmt.Sprintf("%s.%d", lrp.ProcessGuid, lrp.Index) +} + +func (lrp *SchedulingLRP) Copy() SchedulingLRP { + return NewSchedulingLRP(lrp.InstanceGUID, lrp.ActualLRPKey, lrp.Resource, lrp.PlacementConstraint) +} + +// InternalRoute is a hostname for internal routing. +// Inlined from code.cloudfoundry.org/routing-info/internalroutes to avoid an import cycle. +type InternalRoute struct { + Hostname string `json:"hostname"` +} + +// InternalRoutes is a slice of InternalRoute entries. +type InternalRoutes []InternalRoute + +// RoutingInfo serialises the routes for use in a Routes map. +func (r InternalRoutes) RoutingInfo() Routes { + data, _ := json.Marshal(r) + routingInfo := json.RawMessage(data) + return Routes{ + InternalRouter: &routingInfo, + } +} + +// Equal returns true if the two InternalRoutes slices contain the same hostnames. +func (r InternalRoutes) Equal(other InternalRoutes) bool { + if len(r) != len(other) { + return false + } + set := make(map[string]bool, len(r)) + for _, route := range r { + set[route.Hostname] = true + } + for _, route := range other { + if !set[route.Hostname] { + return false + } + } + return true +} + +// InternalRoutesFromRoutingInfo deserialises InternalRoutes from a Routes map. +func InternalRoutesFromRoutingInfo(routingInfo Routes) (InternalRoutes, error) { + if routingInfo == nil { + return nil, nil + } + data, found := routingInfo[InternalRouter] + if !found || data == nil { + return nil, nil + } + var routes InternalRoutes + err := json.Unmarshal(*data, &routes) + return routes, err +} + +// LRPUpdate carries internal-route and metric-tag updates for a running LRP. +type LRPUpdate struct { + InstanceGUID string `json:"instance_guid"` + ActualLRPKey + InternalRoutes InternalRoutes `json:"internal_routes"` + MetricTags map[string]string `json:"metric_tags"` +} + +func NewLRPUpdate(instanceGUID string, key ActualLRPKey, internalRoutes InternalRoutes, metricTags map[string]string) LRPUpdate { + return LRPUpdate{ + InstanceGUID: instanceGUID, + ActualLRPKey: key, + InternalRoutes: internalRoutes, + MetricTags: metricTags, + } +} + +// SchedulingTask is the rep-facing task type used in scheduling. +// Named SchedulingTask to avoid conflict with the protobuf-generated Task type. +type SchedulingTask struct { + TaskGuid string + Domain string + PlacementConstraint + Resource + State Task_State `json:"state"` + Failed bool `json:"failed"` +} + +func NewSchedulingTask(guid string, domain string, res Resource, pc PlacementConstraint) SchedulingTask { + return SchedulingTask{guid, domain, pc, res, Task_Invalid, false} +} + +func (task *SchedulingTask) Identifier() string { + return task.TaskGuid +} + +func (task SchedulingTask) Copy() SchedulingTask { + return task +} + +// Work represents a bundle of LRPs and tasks for a rep cell. +type Work struct { + LRPs []SchedulingLRP + Tasks []SchedulingTask + CellID string `json:"cell_id,omitempty"` +} + +type InsufficientResourcesError struct { + Problems map[string]struct{} +} + +func (i InsufficientResourcesError) Error() string { + if len(i.Problems) == 0 { + return "insufficient resources" + } + + keys := []string{} + for key := range i.Problems { + keys = append(keys, key) + } + sort.Strings(keys) + return fmt.Sprintf("insufficient resources: %s", strings.Join(keys, ", ")) +} + +type CellState struct { + RepURL string `json:"rep_url"` + CellID string `json:"cell_id"` + CellIndex int `json:"cell_index"` + RootFSProviders RootFSProviders + AvailableResources Resources + TotalResources Resources + LRPs []SchedulingLRP + Tasks []SchedulingTask + StartingContainerCount int + Zone string + Evacuating bool + VolumeDrivers []string + PlacementTags []string + OptionalPlacementTags []string + ProxyMemoryAllocationMB int +} + +func NewCellState( + cellID string, + cellIndex int, + repURL string, + root RootFSProviders, + avail Resources, + total Resources, + lrps []SchedulingLRP, + tasks []SchedulingTask, + zone string, + startingContainerCount int, + isEvac bool, + volumeDrivers []string, + placementTags []string, + optionalPlacementTags []string, + proxyMemoryAllocation int, +) CellState { + return CellState{ + CellID: cellID, + CellIndex: cellIndex, + RepURL: repURL, + RootFSProviders: root, + AvailableResources: avail, + TotalResources: total, + LRPs: lrps, + Tasks: tasks, + Zone: zone, + StartingContainerCount: startingContainerCount, + Evacuating: isEvac, + VolumeDrivers: volumeDrivers, + PlacementTags: placementTags, + OptionalPlacementTags: optionalPlacementTags, + ProxyMemoryAllocationMB: proxyMemoryAllocation, + } +} + +func (c *CellState) AddLRP(lrp *SchedulingLRP) { + c.AvailableResources.Subtract(&lrp.Resource) + c.StartingContainerCount += 1 + c.LRPs = append(c.LRPs, *lrp) +} + +func (c *CellState) AddTask(task *SchedulingTask) { + c.AvailableResources.Subtract(&task.Resource) + c.StartingContainerCount += 1 + c.Tasks = append(c.Tasks, *task) +} + +func (c *CellState) ResourceMatch(res *Resource) error { + problems := map[string]struct{}{} + + if c.AvailableResources.DiskMB < res.DiskMB { + problems["disk"] = struct{}{} + } + if c.AvailableResources.MemoryMB < res.MemoryMB { + problems["memory"] = struct{}{} + } + if c.AvailableResources.Containers < 1 { + problems["containers"] = struct{}{} + } + if len(problems) == 0 { + return nil + } + + return InsufficientResourcesError{Problems: problems} +} + +func (c CellState) ComputeScore(res *Resource, startingContainerWeight float64) float64 { + remainingResources := c.AvailableResources.Copy() + remainingResources.Subtract(res) + startingContainerScore := float64(c.StartingContainerCount) * startingContainerWeight + return remainingResources.ComputeScore(&c.TotalResources) + startingContainerScore +} + +func (c *CellState) MatchRootFS(rootfs string) bool { + rootFSURL, err := url.Parse(rootfs) + if err != nil { + return false + } + return c.RootFSProviders.Match(*rootFSURL) +} + +func (c *CellState) MatchVolumeDrivers(volumeDrivers []string) bool { + for _, requestedDriver := range volumeDrivers { + found := false + for _, actualDriver := range c.VolumeDrivers { + if requestedDriver == actualDriver { + found = true + break + } + } + if !found { + return false + } + } + return true +} + +func (c *CellState) MatchPlacementTags(desiredPlacementTags []string) bool { + desiredTags := toPlacementSet(desiredPlacementTags) + optionalTags := toPlacementSet(c.OptionalPlacementTags) + requiredTags := toPlacementSet(c.PlacementTags) + allTags := requiredTags.union(optionalTags) + return requiredTags.isSubset(desiredTags) && desiredTags.isSubset(allTags) +} + +type placementTagSet map[string]struct{} + +func (set placementTagSet) union(other placementTagSet) placementTagSet { + tags := placementTagSet{} + for k := range set { + tags[k] = struct{}{} + } + for k := range other { + tags[k] = struct{}{} + } + return tags +} + +func (set placementTagSet) isSubset(other placementTagSet) bool { + for k := range set { + if _, ok := other[k]; !ok { + return false + } + } + return true +} + +func toPlacementSet(slice []string) placementTagSet { + tags := placementTagSet{} + for _, k := range slice { + tags[k] = struct{}{} + } + return tags +} diff --git a/vendor/code.cloudfoundry.org/bbs/models/security_groups.go b/vendor/code.cloudfoundry.org/bbs/models/security_groups.go index 948a15e2..bc4b04a2 100644 --- a/vendor/code.cloudfoundry.org/bbs/models/security_groups.go +++ b/vendor/code.cloudfoundry.org/bbs/models/security_groups.go @@ -14,7 +14,7 @@ const ( AllProtocol = "all" ) -var errInvalidIP = errors.New("Invalid IP") +var errInvalidIP = errors.New("invalid IP") func (rule SecurityGroupRule) Validate() error { var validationError ValidationError @@ -79,11 +79,11 @@ func (rule SecurityGroupRule) validatePorts() ValidationError { var validationError ValidationError if rule.PortRange == nil && rule.Ports == nil { - return validationError.Append(errors.New("Missing required field: ports or port_range")) + return validationError.Append(errors.New("missing required field: ports or port_range")) } if rule.PortRange != nil && rule.Ports != nil { - return validationError.Append(errors.New("Invalid: ports and port_range provided")) + return validationError.Append(errors.New("invalid: ports and port_range provided")) } if rule.PortRange != nil { @@ -115,7 +115,7 @@ func (rule SecurityGroupRule) validatePorts() ValidationError { func (rule SecurityGroupRule) validateDestinations() error { if len(rule.Destinations) == 0 { - return errors.New("Must have at least 1 destination") + return errors.New("must have at least 1 destination") } var validationError ValidationError diff --git a/vendor/code.cloudfoundry.org/bbs/models/test/model_helpers/constructors.go b/vendor/code.cloudfoundry.org/bbs/models/test/model_helpers/constructors.go index 473afed6..151b883d 100644 --- a/vendor/code.cloudfoundry.org/bbs/models/test/model_helpers/constructors.go +++ b/vendor/code.cloudfoundry.org/bbs/models/test/model_helpers/constructors.go @@ -5,7 +5,7 @@ import ( "time" "code.cloudfoundry.org/bbs/models" - . "github.com/onsi/gomega" + "github.com/onsi/gomega" ) func NewValidActualLRP(guid string, index int32) *models.ActualLRP { @@ -27,7 +27,7 @@ func NewValidActualLRP(guid string, index int32) *models.ActualLRP { } actualLRP.SetRoutable(false) err := actualLRP.Validate() - Expect(err).NotTo(HaveOccurred()) + gomega.Expect(err).NotTo(gomega.HaveOccurred()) return actualLRP } @@ -133,6 +133,7 @@ func NewValidDesiredLRP(guid string) *models.DesiredLRP { MetricTags: map[string]*models.MetricTagValue{ "source_id": {Static: "some-metrics-guid"}, }, + UpdateStrategy: models.DesiredLRP_UpdateStrategyRolling, } desiredLRP.VolumeMountedFiles = append(desiredLRP.VolumeMountedFiles, &models.File{ @@ -141,7 +142,7 @@ func NewValidDesiredLRP(guid string) *models.DesiredLRP { }) err := desiredLRP.Validate() - Expect(err).NotTo(HaveOccurred()) + gomega.Expect(err).NotTo(gomega.HaveOccurred()) return desiredLRP } @@ -151,7 +152,7 @@ func NewValidDesiredLRPWithNoVolumeMountedFiles(guid string) *models.DesiredLRP desiredLRP.VolumeMountedFiles = []*models.File{} err := desiredLRP.Validate() - Expect(err).NotTo(HaveOccurred()) + gomega.Expect(err).NotTo(gomega.HaveOccurred()) return desiredLRP } diff --git a/vendor/code.cloudfoundry.org/bbs/models/volume_mount.go b/vendor/code.cloudfoundry.org/bbs/models/volume_mount.go index fff1b251..fe4ebcb5 100644 --- a/vendor/code.cloudfoundry.org/bbs/models/volume_mount.go +++ b/vendor/code.cloudfoundry.org/bbs/models/volume_mount.go @@ -25,6 +25,9 @@ func (v *VolumeMount) Validate() error { if v.Shared != nil && v.Shared.VolumeId == "" { ve = ve.Append(errors.New("invalid volume_mount volume id")) } + if v.Dedicated != nil && v.Dedicated.MounterId == "" { + ve = ve.Append(errors.New("invalid volume_mount mounter id")) + } if !ve.Empty() { return ve diff --git a/vendor/code.cloudfoundry.org/bbs/models/volume_mount.pb.go b/vendor/code.cloudfoundry.org/bbs/models/volume_mount.pb.go index 2193674d..96de3f08 100644 --- a/vendor/code.cloudfoundry.org/bbs/models/volume_mount.pb.go +++ b/vendor/code.cloudfoundry.org/bbs/models/volume_mount.pb.go @@ -76,18 +76,78 @@ func (m *SharedDevice) GetMountConfig() string { return "" } +type DedicatedDevice struct { + MounterId string `protobuf:"bytes,1,opt,name=mounter_id,json=mounterId,proto3" json:"mounter_id"` + MountConfig string `protobuf:"bytes,2,opt,name=mount_config,json=mountConfig,proto3" json:"mount_config"` + DeviceConfig string `protobuf:"bytes,3,opt,name=device_config,json=deviceConfig,proto3" json:"device_config"` +} + +func (m *DedicatedDevice) Reset() { *m = DedicatedDevice{} } +func (*DedicatedDevice) ProtoMessage() {} +func (*DedicatedDevice) Descriptor() ([]byte, []int) { + return fileDescriptor_bbde336a4634d84f, []int{1} +} +func (m *DedicatedDevice) XXX_Unmarshal(b []byte) error { + return m.Unmarshal(b) +} +func (m *DedicatedDevice) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + if deterministic { + return xxx_messageInfo_DedicatedDevice.Marshal(b, m, deterministic) + } else { + b = b[:cap(b)] + n, err := m.MarshalToSizedBuffer(b) + if err != nil { + return nil, err + } + return b[:n], nil + } +} +func (m *DedicatedDevice) XXX_Merge(src proto.Message) { + xxx_messageInfo_DedicatedDevice.Merge(m, src) +} +func (m *DedicatedDevice) XXX_Size() int { + return m.Size() +} +func (m *DedicatedDevice) XXX_DiscardUnknown() { + xxx_messageInfo_DedicatedDevice.DiscardUnknown(m) +} + +var xxx_messageInfo_DedicatedDevice proto.InternalMessageInfo + +func (m *DedicatedDevice) GetMounterId() string { + if m != nil { + return m.MounterId + } + return "" +} + +func (m *DedicatedDevice) GetMountConfig() string { + if m != nil { + return m.MountConfig + } + return "" +} + +func (m *DedicatedDevice) GetDeviceConfig() string { + if m != nil { + return m.DeviceConfig + } + return "" +} + type VolumeMount struct { Driver string `protobuf:"bytes,1,opt,name=driver,proto3" json:"driver"` ContainerDir string `protobuf:"bytes,3,opt,name=container_dir,json=containerDir,proto3" json:"container_dir"` Mode string `protobuf:"bytes,6,opt,name=mode,proto3" json:"mode"` // oneof device { - Shared *SharedDevice `protobuf:"bytes,7,opt,name=shared,proto3" json:"shared"` + Shared *SharedDevice `protobuf:"bytes,7,opt,name=shared,proto3" json:"shared"` + Dedicated *DedicatedDevice `protobuf:"bytes,8,opt,name=dedicated,proto3" json:"dedicated"` } func (m *VolumeMount) Reset() { *m = VolumeMount{} } func (*VolumeMount) ProtoMessage() {} func (*VolumeMount) Descriptor() ([]byte, []int) { - return fileDescriptor_bbde336a4634d84f, []int{1} + return fileDescriptor_bbde336a4634d84f, []int{2} } func (m *VolumeMount) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -144,6 +204,13 @@ func (m *VolumeMount) GetShared() *SharedDevice { return nil } +func (m *VolumeMount) GetDedicated() *DedicatedDevice { + if m != nil { + return m.Dedicated + } + return nil +} + type VolumePlacement struct { DriverNames []string `protobuf:"bytes,1,rep,name=driver_names,json=driverNames,proto3" json:"driver_names"` } @@ -151,7 +218,7 @@ type VolumePlacement struct { func (m *VolumePlacement) Reset() { *m = VolumePlacement{} } func (*VolumePlacement) ProtoMessage() {} func (*VolumePlacement) Descriptor() ([]byte, []int) { - return fileDescriptor_bbde336a4634d84f, []int{2} + return fileDescriptor_bbde336a4634d84f, []int{3} } func (m *VolumePlacement) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -189,6 +256,7 @@ func (m *VolumePlacement) GetDriverNames() []string { func init() { proto.RegisterType((*SharedDevice)(nil), "models.SharedDevice") + proto.RegisterType((*DedicatedDevice)(nil), "models.DedicatedDevice") proto.RegisterType((*VolumeMount)(nil), "models.VolumeMount") proto.RegisterType((*VolumePlacement)(nil), "models.VolumePlacement") } @@ -196,31 +264,36 @@ func init() { func init() { proto.RegisterFile("volume_mount.proto", fileDescriptor_bbde336a4634d84f) } var fileDescriptor_bbde336a4634d84f = []byte{ - // 381 bytes of a gzipped FileDescriptorProto - 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0x54, 0x91, 0xc1, 0x6a, 0xa3, 0x40, - 0x18, 0xc7, 0x9d, 0xc4, 0xb8, 0x66, 0x4c, 0x58, 0x77, 0xd8, 0x83, 0x2c, 0xcb, 0x18, 0x3c, 0x85, - 0x85, 0x35, 0xd0, 0x94, 0xd2, 0x73, 0x1a, 0x0a, 0x0d, 0xb4, 0x14, 0x0b, 0xbd, 0x8a, 0xd1, 0x89, - 0x19, 0x88, 0x4e, 0x31, 0x9a, 0x73, 0x1f, 0xa1, 0x8f, 0xd1, 0x47, 0xe9, 0x31, 0xd0, 0x4b, 0x4e, - 0xd2, 0x98, 0x4b, 0xf1, 0x94, 0x47, 0x28, 0xce, 0xd8, 0x36, 0xb9, 0x38, 0xf3, 0xfb, 0x7f, 0x7f, - 0x3f, 0xbf, 0xef, 0x2f, 0x44, 0x2b, 0xb6, 0xc8, 0x22, 0xe2, 0x46, 0x2c, 0x8b, 0x53, 0xfb, 0x21, - 0x61, 0x29, 0x43, 0x4a, 0xc4, 0x02, 0xb2, 0x58, 0xfe, 0xf9, 0x1f, 0xd2, 0x74, 0x9e, 0x4d, 0x6d, - 0x9f, 0x45, 0x83, 0x90, 0x85, 0x6c, 0xc0, 0xcb, 0xd3, 0x6c, 0xc6, 0x89, 0x03, 0xbf, 0x89, 0xd7, - 0x2c, 0x06, 0x3b, 0x77, 0x73, 0x2f, 0x21, 0xc1, 0x98, 0xac, 0xa8, 0x4f, 0xd0, 0x3f, 0xd8, 0xae, - 0x9b, 0xd3, 0xc0, 0x00, 0x3d, 0xd0, 0x6f, 0x8f, 0xba, 0x65, 0x6e, 0x7e, 0x8b, 0x8e, 0x2a, 0xae, - 0x57, 0x01, 0x1a, 0xc2, 0x0e, 0x9f, 0xc0, 0xf5, 0x59, 0x3c, 0xa3, 0xa1, 0xd1, 0xe0, 0x76, 0xbd, - 0xcc, 0xcd, 0x23, 0xdd, 0xd1, 0x38, 0x5d, 0x70, 0xb0, 0x5e, 0x01, 0xd4, 0xee, 0x79, 0x87, 0xeb, - 0x4a, 0x45, 0x16, 0x54, 0x82, 0x84, 0xae, 0x48, 0x52, 0x7f, 0x0d, 0x96, 0xb9, 0x59, 0x2b, 0x4e, - 0x7d, 0xa2, 0x33, 0xd8, 0xf5, 0x59, 0x9c, 0x7a, 0x34, 0x26, 0x89, 0x1b, 0xd0, 0xc4, 0x68, 0x72, - 0xeb, 0xaf, 0x32, 0x37, 0x8f, 0x0b, 0x4e, 0xe7, 0x0b, 0xc7, 0x34, 0x41, 0x7f, 0xa1, 0x5c, 0xa5, - 0x62, 0x28, 0xdc, 0xae, 0x96, 0xb9, 0xc9, 0xd9, 0xe1, 0x4f, 0x74, 0x0e, 0x95, 0x25, 0x5f, 0xdd, - 0xf8, 0xd1, 0x03, 0x7d, 0xed, 0xe4, 0xb7, 0x2d, 0x22, 0xb4, 0x0f, 0x03, 0x11, 0xf3, 0x08, 0x9f, - 0x53, 0x9f, 0x13, 0x59, 0x6d, 0xe8, 0xcd, 0x89, 0xac, 0xca, 0x7a, 0x6b, 0x22, 0xab, 0x2d, 0x5d, - 0xb1, 0x2e, 0xe1, 0x4f, 0xb1, 0xd4, 0xed, 0xc2, 0xf3, 0x49, 0x44, 0xe2, 0xb4, 0x4a, 0x47, 0x8c, - 0xef, 0xc6, 0x5e, 0x44, 0x96, 0x06, 0xe8, 0x35, 0x3f, 0xd3, 0x39, 0xd4, 0x1d, 0x4d, 0xd0, 0x4d, - 0x05, 0xa3, 0xd3, 0xf5, 0x16, 0x83, 0xcd, 0x16, 0x4b, 0xfb, 0x2d, 0x06, 0x8f, 0x05, 0x06, 0xcf, - 0x05, 0x06, 0x2f, 0x05, 0x06, 0xeb, 0x02, 0x83, 0xb7, 0x02, 0x83, 0xf7, 0x02, 0x4b, 0xfb, 0x02, - 0x83, 0xa7, 0x1d, 0x96, 0xd6, 0x3b, 0x2c, 0x6d, 0x76, 0x58, 0x9a, 0x2a, 0xfc, 0x5f, 0x0e, 0x3f, - 0x02, 0x00, 0x00, 0xff, 0xff, 0x1a, 0x23, 0x60, 0xde, 0x18, 0x02, 0x00, 0x00, + // 451 bytes of a gzipped FileDescriptorProto + 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0x9c, 0x52, 0x41, 0x8b, 0xd3, 0x40, + 0x14, 0xce, 0xb4, 0xd9, 0x98, 0x4e, 0xbb, 0x6e, 0x1d, 0x04, 0x83, 0xc8, 0xa4, 0xf4, 0xb4, 0x08, + 0xdb, 0x05, 0x57, 0xc4, 0xf3, 0x5a, 0x04, 0x0b, 0x8a, 0x8c, 0xe0, 0xb5, 0xa4, 0x99, 0xd9, 0xec, + 0x40, 0x93, 0x91, 0x69, 0xd2, 0xb3, 0x3f, 0xc1, 0xab, 0xff, 0xc0, 0x8b, 0xff, 0xc3, 0x63, 0x8f, + 0x7b, 0x0a, 0x36, 0xbd, 0x48, 0x4e, 0xfb, 0x13, 0x24, 0x6f, 0x92, 0x36, 0xf5, 0xe8, 0x25, 0xf3, + 0xbe, 0xf7, 0xde, 0x37, 0xdf, 0xcb, 0xfb, 0x06, 0x93, 0xb5, 0x5a, 0x66, 0xb1, 0x98, 0xc7, 0x2a, + 0x4b, 0xd2, 0xc9, 0x17, 0xad, 0x52, 0x45, 0x9c, 0x58, 0x71, 0xb1, 0x5c, 0x3d, 0xbd, 0x88, 0x64, + 0x7a, 0x9b, 0x2d, 0x26, 0xa1, 0x8a, 0x2f, 0x23, 0x15, 0xa9, 0x4b, 0x28, 0x2f, 0xb2, 0x1b, 0x40, + 0x00, 0x20, 0x32, 0xb4, 0xb1, 0xc2, 0x83, 0x4f, 0xb7, 0x81, 0x16, 0x7c, 0x2a, 0xd6, 0x32, 0x14, + 0xe4, 0x39, 0xee, 0xd5, 0x97, 0x4b, 0xee, 0xa1, 0x11, 0x3a, 0xef, 0x5d, 0x9f, 0x96, 0xb9, 0x7f, + 0x48, 0x32, 0xd7, 0x84, 0xef, 0x38, 0xb9, 0xc2, 0x03, 0x98, 0x60, 0x1e, 0xaa, 0xe4, 0x46, 0x46, + 0x5e, 0x07, 0xda, 0x87, 0x65, 0xee, 0x1f, 0xe5, 0x59, 0x1f, 0xd0, 0x1b, 0x00, 0xe3, 0x9f, 0x08, + 0x9f, 0x4d, 0x05, 0x97, 0x61, 0x90, 0xee, 0x45, 0x2f, 0x30, 0x86, 0x16, 0xa1, 0x0f, 0xaa, 0x0f, + 0xcb, 0xdc, 0x6f, 0x65, 0x59, 0xaf, 0x8e, 0xff, 0x53, 0x97, 0xbc, 0xc2, 0xa7, 0x1c, 0xd4, 0x1a, + 0x56, 0x17, 0x58, 0x8f, 0xca, 0xdc, 0x3f, 0x2e, 0xb0, 0x81, 0x81, 0xf5, 0xbc, 0xdf, 0x3b, 0xb8, + 0xff, 0x19, 0xfe, 0xf8, 0x7d, 0x75, 0x1b, 0x19, 0x63, 0x87, 0x6b, 0xb9, 0x16, 0xba, 0x9e, 0x13, + 0x97, 0xb9, 0x5f, 0x67, 0x58, 0x7d, 0x56, 0x5a, 0xa1, 0x4a, 0xd2, 0x40, 0x26, 0x42, 0xcf, 0xb9, + 0xd4, 0x6d, 0xad, 0xa3, 0x02, 0x1b, 0xec, 0xe1, 0x54, 0x6a, 0xf2, 0x0c, 0xdb, 0x95, 0x8b, 0x9e, + 0x03, 0xed, 0x6e, 0x99, 0xfb, 0x80, 0x19, 0x7c, 0xc9, 0x6b, 0xec, 0xac, 0xc0, 0x2a, 0xef, 0xc1, + 0x08, 0x9d, 0xf7, 0x5f, 0x3c, 0x9e, 0x18, 0xcb, 0x27, 0x6d, 0x03, 0xcd, 0x3c, 0xa6, 0x8f, 0xd5, + 0x27, 0x99, 0xe2, 0x1e, 0x6f, 0x56, 0xee, 0xb9, 0x40, 0x7e, 0xd2, 0x90, 0xff, 0xf1, 0xc2, 0xb8, + 0xbd, 0xef, 0x66, 0x87, 0x70, 0x66, 0xbb, 0x9d, 0x61, 0x77, 0x66, 0xbb, 0xf6, 0xf0, 0x64, 0x66, + 0xbb, 0x27, 0x43, 0x67, 0xfc, 0x16, 0x9f, 0x99, 0xd5, 0x7c, 0x5c, 0x06, 0xa1, 0x88, 0x45, 0x92, + 0x56, 0xde, 0x98, 0x25, 0xcc, 0x93, 0x20, 0x16, 0x2b, 0x0f, 0x8d, 0xba, 0x8d, 0x37, 0xed, 0x3c, + 0xeb, 0x1b, 0xf4, 0xa1, 0x02, 0xd7, 0x2f, 0x37, 0x5b, 0x8a, 0xee, 0xb6, 0xd4, 0xba, 0xdf, 0x52, + 0xf4, 0xb5, 0xa0, 0xe8, 0x47, 0x41, 0xd1, 0xaf, 0x82, 0xa2, 0x4d, 0x41, 0xd1, 0xef, 0x82, 0xa2, + 0x3f, 0x05, 0xb5, 0xee, 0x0b, 0x8a, 0xbe, 0xed, 0xa8, 0xb5, 0xd9, 0x51, 0xeb, 0x6e, 0x47, 0xad, + 0x85, 0x03, 0x2f, 0xf8, 0xea, 0x6f, 0x00, 0x00, 0x00, 0xff, 0xff, 0xdc, 0x09, 0x4f, 0x81, 0x0e, + 0x03, 0x00, 0x00, } func (this *SharedDevice) Equal(that interface{}) bool { @@ -250,6 +323,36 @@ func (this *SharedDevice) Equal(that interface{}) bool { } return true } +func (this *DedicatedDevice) Equal(that interface{}) bool { + if that == nil { + return this == nil + } + + that1, ok := that.(*DedicatedDevice) + if !ok { + that2, ok := that.(DedicatedDevice) + if ok { + that1 = &that2 + } else { + return false + } + } + if that1 == nil { + return this == nil + } else if this == nil { + return false + } + if this.MounterId != that1.MounterId { + return false + } + if this.MountConfig != that1.MountConfig { + return false + } + if this.DeviceConfig != that1.DeviceConfig { + return false + } + return true +} func (this *VolumeMount) Equal(that interface{}) bool { if that == nil { return this == nil @@ -281,6 +384,9 @@ func (this *VolumeMount) Equal(that interface{}) bool { if !this.Shared.Equal(that1.Shared) { return false } + if !this.Dedicated.Equal(that1.Dedicated) { + return false + } return true } func (this *VolumePlacement) Equal(that interface{}) bool { @@ -323,11 +429,23 @@ func (this *SharedDevice) GoString() string { s = append(s, "}") return strings.Join(s, "") } +func (this *DedicatedDevice) GoString() string { + if this == nil { + return "nil" + } + s := make([]string, 0, 7) + s = append(s, "&models.DedicatedDevice{") + s = append(s, "MounterId: "+fmt.Sprintf("%#v", this.MounterId)+",\n") + s = append(s, "MountConfig: "+fmt.Sprintf("%#v", this.MountConfig)+",\n") + s = append(s, "DeviceConfig: "+fmt.Sprintf("%#v", this.DeviceConfig)+",\n") + s = append(s, "}") + return strings.Join(s, "") +} func (this *VolumeMount) GoString() string { if this == nil { return "nil" } - s := make([]string, 0, 8) + s := make([]string, 0, 9) s = append(s, "&models.VolumeMount{") s = append(s, "Driver: "+fmt.Sprintf("%#v", this.Driver)+",\n") s = append(s, "ContainerDir: "+fmt.Sprintf("%#v", this.ContainerDir)+",\n") @@ -335,6 +453,9 @@ func (this *VolumeMount) GoString() string { if this.Shared != nil { s = append(s, "Shared: "+fmt.Sprintf("%#v", this.Shared)+",\n") } + if this.Dedicated != nil { + s = append(s, "Dedicated: "+fmt.Sprintf("%#v", this.Dedicated)+",\n") + } s = append(s, "}") return strings.Join(s, "") } @@ -393,6 +514,50 @@ func (m *SharedDevice) MarshalToSizedBuffer(dAtA []byte) (int, error) { return len(dAtA) - i, nil } +func (m *DedicatedDevice) Marshal() (dAtA []byte, err error) { + size := m.Size() + dAtA = make([]byte, size) + n, err := m.MarshalToSizedBuffer(dAtA[:size]) + if err != nil { + return nil, err + } + return dAtA[:n], nil +} + +func (m *DedicatedDevice) MarshalTo(dAtA []byte) (int, error) { + size := m.Size() + return m.MarshalToSizedBuffer(dAtA[:size]) +} + +func (m *DedicatedDevice) MarshalToSizedBuffer(dAtA []byte) (int, error) { + i := len(dAtA) + _ = i + var l int + _ = l + if len(m.DeviceConfig) > 0 { + i -= len(m.DeviceConfig) + copy(dAtA[i:], m.DeviceConfig) + i = encodeVarintVolumeMount(dAtA, i, uint64(len(m.DeviceConfig))) + i-- + dAtA[i] = 0x1a + } + if len(m.MountConfig) > 0 { + i -= len(m.MountConfig) + copy(dAtA[i:], m.MountConfig) + i = encodeVarintVolumeMount(dAtA, i, uint64(len(m.MountConfig))) + i-- + dAtA[i] = 0x12 + } + if len(m.MounterId) > 0 { + i -= len(m.MounterId) + copy(dAtA[i:], m.MounterId) + i = encodeVarintVolumeMount(dAtA, i, uint64(len(m.MounterId))) + i-- + dAtA[i] = 0xa + } + return len(dAtA) - i, nil +} + func (m *VolumeMount) Marshal() (dAtA []byte, err error) { size := m.Size() dAtA = make([]byte, size) @@ -413,6 +578,18 @@ func (m *VolumeMount) MarshalToSizedBuffer(dAtA []byte) (int, error) { _ = i var l int _ = l + if m.Dedicated != nil { + { + size, err := m.Dedicated.MarshalToSizedBuffer(dAtA[:i]) + if err != nil { + return 0, err + } + i -= size + i = encodeVarintVolumeMount(dAtA, i, uint64(size)) + } + i-- + dAtA[i] = 0x42 + } if m.Shared != nil { { size, err := m.Shared.MarshalToSizedBuffer(dAtA[:i]) @@ -509,6 +686,27 @@ func (m *SharedDevice) Size() (n int) { return n } +func (m *DedicatedDevice) Size() (n int) { + if m == nil { + return 0 + } + var l int + _ = l + l = len(m.MounterId) + if l > 0 { + n += 1 + l + sovVolumeMount(uint64(l)) + } + l = len(m.MountConfig) + if l > 0 { + n += 1 + l + sovVolumeMount(uint64(l)) + } + l = len(m.DeviceConfig) + if l > 0 { + n += 1 + l + sovVolumeMount(uint64(l)) + } + return n +} + func (m *VolumeMount) Size() (n int) { if m == nil { return 0 @@ -531,6 +729,10 @@ func (m *VolumeMount) Size() (n int) { l = m.Shared.Size() n += 1 + l + sovVolumeMount(uint64(l)) } + if m.Dedicated != nil { + l = m.Dedicated.Size() + n += 1 + l + sovVolumeMount(uint64(l)) + } return n } @@ -566,6 +768,18 @@ func (this *SharedDevice) String() string { }, "") return s } +func (this *DedicatedDevice) String() string { + if this == nil { + return "nil" + } + s := strings.Join([]string{`&DedicatedDevice{`, + `MounterId:` + fmt.Sprintf("%v", this.MounterId) + `,`, + `MountConfig:` + fmt.Sprintf("%v", this.MountConfig) + `,`, + `DeviceConfig:` + fmt.Sprintf("%v", this.DeviceConfig) + `,`, + `}`, + }, "") + return s +} func (this *VolumeMount) String() string { if this == nil { return "nil" @@ -575,6 +789,7 @@ func (this *VolumeMount) String() string { `ContainerDir:` + fmt.Sprintf("%v", this.ContainerDir) + `,`, `Mode:` + fmt.Sprintf("%v", this.Mode) + `,`, `Shared:` + strings.Replace(this.Shared.String(), "SharedDevice", "SharedDevice", 1) + `,`, + `Dedicated:` + strings.Replace(this.Dedicated.String(), "DedicatedDevice", "DedicatedDevice", 1) + `,`, `}`, }, "") return s @@ -711,6 +926,152 @@ func (m *SharedDevice) Unmarshal(dAtA []byte) error { } return nil } +func (m *DedicatedDevice) Unmarshal(dAtA []byte) error { + l := len(dAtA) + iNdEx := 0 + for iNdEx < l { + preIndex := iNdEx + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowVolumeMount + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + wire |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + fieldNum := int32(wire >> 3) + wireType := int(wire & 0x7) + if wireType == 4 { + return fmt.Errorf("proto: DedicatedDevice: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: DedicatedDevice: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + case 1: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field MounterId", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowVolumeMount + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + stringLen |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + intStringLen := int(stringLen) + if intStringLen < 0 { + return ErrInvalidLengthVolumeMount + } + postIndex := iNdEx + intStringLen + if postIndex < 0 { + return ErrInvalidLengthVolumeMount + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.MounterId = string(dAtA[iNdEx:postIndex]) + iNdEx = postIndex + case 2: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field MountConfig", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowVolumeMount + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + stringLen |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + intStringLen := int(stringLen) + if intStringLen < 0 { + return ErrInvalidLengthVolumeMount + } + postIndex := iNdEx + intStringLen + if postIndex < 0 { + return ErrInvalidLengthVolumeMount + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.MountConfig = string(dAtA[iNdEx:postIndex]) + iNdEx = postIndex + case 3: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field DeviceConfig", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowVolumeMount + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + stringLen |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + intStringLen := int(stringLen) + if intStringLen < 0 { + return ErrInvalidLengthVolumeMount + } + postIndex := iNdEx + intStringLen + if postIndex < 0 { + return ErrInvalidLengthVolumeMount + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.DeviceConfig = string(dAtA[iNdEx:postIndex]) + iNdEx = postIndex + default: + iNdEx = preIndex + skippy, err := skipVolumeMount(dAtA[iNdEx:]) + if err != nil { + return err + } + if (skippy < 0) || (iNdEx+skippy) < 0 { + return ErrInvalidLengthVolumeMount + } + if (iNdEx + skippy) > l { + return io.ErrUnexpectedEOF + } + iNdEx += skippy + } + } + + if iNdEx > l { + return io.ErrUnexpectedEOF + } + return nil +} func (m *VolumeMount) Unmarshal(dAtA []byte) error { l := len(dAtA) iNdEx := 0 @@ -872,6 +1233,42 @@ func (m *VolumeMount) Unmarshal(dAtA []byte) error { return err } iNdEx = postIndex + case 8: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Dedicated", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowVolumeMount + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + msglen |= int(b&0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthVolumeMount + } + postIndex := iNdEx + msglen + if postIndex < 0 { + return ErrInvalidLengthVolumeMount + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + if m.Dedicated == nil { + m.Dedicated = &DedicatedDevice{} + } + if err := m.Dedicated.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex default: iNdEx = preIndex skippy, err := skipVolumeMount(dAtA[iNdEx:]) diff --git a/vendor/code.cloudfoundry.org/bbs/models/volume_mount.proto b/vendor/code.cloudfoundry.org/bbs/models/volume_mount.proto index 3139b87e..6735127c 100644 --- a/vendor/code.cloudfoundry.org/bbs/models/volume_mount.proto +++ b/vendor/code.cloudfoundry.org/bbs/models/volume_mount.proto @@ -11,6 +11,12 @@ message SharedDevice { string mount_config = 2 [(gogoproto.jsontag) = "mount_config"]; } +message DedicatedDevice { + string mounter_id = 1 [(gogoproto.jsontag) = "mounter_id"]; + string mount_config = 2 [(gogoproto.jsontag) = "mount_config"]; + string device_config = 3 [(gogoproto.jsontag) = "device_config"]; +} + message VolumeMount { reserved 2, 4, 5; @@ -20,6 +26,7 @@ message VolumeMount { // oneof device { SharedDevice shared = 7 [(gogoproto.jsontag) = "shared"]; + DedicatedDevice dedicated = 8 [(gogoproto.jsontag) = "dedicated"]; // } } diff --git a/vendor/code.cloudfoundry.org/cfhttp/v2/.gitignore b/vendor/code.cloudfoundry.org/cfhttp/v2/.gitignore new file mode 100644 index 00000000..9ed3b07c --- /dev/null +++ b/vendor/code.cloudfoundry.org/cfhttp/v2/.gitignore @@ -0,0 +1 @@ +*.test diff --git a/vendor/code.cloudfoundry.org/cfhttp/v2/CODEOWNERS b/vendor/code.cloudfoundry.org/cfhttp/v2/CODEOWNERS new file mode 100644 index 00000000..6a633c7e --- /dev/null +++ b/vendor/code.cloudfoundry.org/cfhttp/v2/CODEOWNERS @@ -0,0 +1 @@ +* @cloudfoundry/wg-app-runtime-platform-diego-approvers diff --git a/vendor/code.cloudfoundry.org/cfhttp/v2/NOTICE b/vendor/code.cloudfoundry.org/cfhttp/v2/NOTICE new file mode 100644 index 00000000..3c8dd5b6 --- /dev/null +++ b/vendor/code.cloudfoundry.org/cfhttp/v2/NOTICE @@ -0,0 +1,20 @@ +Copyright (c) 2015-Present CloudFoundry.org Foundation, Inc. All Rights Reserved. + +This project contains software that is Copyright (c) 2014-2015 Pivotal Software, Inc. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. + +This project may include a number of subcomponents with separate +copyright notices and license terms. Your use of these subcomponents +is subject to the terms and conditions of each subcomponent's license, +as noted in the LICENSE file. diff --git a/vendor/code.cloudfoundry.org/cfhttp/v2/README.md b/vendor/code.cloudfoundry.org/cfhttp/v2/README.md new file mode 100644 index 00000000..9f820001 --- /dev/null +++ b/vendor/code.cloudfoundry.org/cfhttp/v2/README.md @@ -0,0 +1,30 @@ +# cfhttp + +[![Go Report +Card](https://goreportcard.com/badge/code.cloudfoundry.org/cfhttp)](https://goreportcard.com/report/code.cloudfoundry.org/cfhttp) +[![Go +Reference](https://pkg.go.dev/badge/code.cloudfoundry.org/cfhttp.svg)](https://pkg.go.dev/code.cloudfoundry.org/cfhttp) + +Wrapper for official go http package + +> \[!NOTE\] +> +> This repository should be imported as +> `code.cloudfoundry.org/cfhttp/v2`. + +# Contributing + +See the [Contributing.md](./.github/CONTRIBUTING.md) for more +information on how to contribute. + +# Working Group Charter + +This repository is maintained by [App Runtime +Platform](https://github.com/cloudfoundry/community/blob/main/toc/working-groups/app-runtime-platform.md) +under `Diego` area. + +> \[!IMPORTANT\] +> +> Content in this file is managed by the [CI task +> `sync-readme`](https://github.com/cloudfoundry/wg-app-platform-runtime-ci/blob/main/shared/tasks/sync-readme/metadata.yml) +> and is generated by CI following a convention. diff --git a/vendor/code.cloudfoundry.org/cfhttp/v2/staticcheck.conf b/vendor/code.cloudfoundry.org/cfhttp/v2/staticcheck.conf new file mode 100644 index 00000000..eba7af74 --- /dev/null +++ b/vendor/code.cloudfoundry.org/cfhttp/v2/staticcheck.conf @@ -0,0 +1 @@ +checks = ["all", "-ST1008","-ST1005","-ST1001","-ST1012","-ST1000","-ST1003","-ST1016","-ST1020","-ST1021","-ST1022"] diff --git a/vendor/github.com/vito/go-sse/sse/event.go b/vendor/github.com/vito/go-sse/sse/event.go index 396a2079..09cc3d25 100644 --- a/vendor/github.com/vito/go-sse/sse/event.go +++ b/vendor/github.com/vito/go-sse/sse/event.go @@ -2,11 +2,22 @@ package sse import ( "bytes" - "fmt" "io" + "strconv" "time" ) +// Define byte slice constants used in encoding/writing +var ( + idPrefix = []byte("id: ") + eventPrefix = []byte("event: ") + retryPrefix = []byte("retry: ") + dataPrefix = []byte("data: ") + emptyData = []byte("data") + newline = []byte("\n") +) + +// Event represents a Server-Sent Event type Event struct { ID string Name string @@ -15,57 +26,104 @@ type Event struct { } func (event Event) Encode() string { - enc := fmt.Sprintf("id: %s\nevent: %s\n", event.ID, event.Name) + // Make an educated capacity estimate + capacity := 8 + len(event.ID) + 8 + len(event.Name) + 20 + dataLines := bytes.Count(event.Data, newline) + 1 + capacity += len(event.Data) + (dataLines * 7) + + var buf bytes.Buffer + buf.Grow(capacity) + + // Use the pre-defined constants + buf.Write(idPrefix) + buf.WriteString(event.ID) + buf.Write(newline) + + buf.Write(eventPrefix) + buf.WriteString(event.Name) + buf.Write(newline) if event.Retry != 0 { - enc += fmt.Sprintf("retry: %d\n", event.Retry/1000/1000) + buf.Write(retryPrefix) + buf.WriteString(strconv.FormatInt(int64(event.Retry/1000/1000), 10)) + buf.Write(newline) } for _, line := range bytes.Split(event.Data, []byte("\n")) { if len(line) == 0 { - enc += "data\n" + buf.Write(emptyData) } else { - enc += fmt.Sprintf("data: %s\n", line) + buf.Write(dataPrefix) + buf.Write(line) } + buf.Write(newline) } - enc += "\n" + buf.Write(newline) - return enc + return buf.String() } func (event Event) Write(destination io.Writer) error { - _, err := fmt.Fprintf(destination, "id: %s\n", event.ID) - if err != nil { + // Write id + if _, err := destination.Write(idPrefix); err != nil { + return err + } + if _, err := destination.Write([]byte(event.ID)); err != nil { + return err + } + if _, err := destination.Write(newline); err != nil { return err } - _, err = fmt.Fprintf(destination, "event: %s\n", event.Name) - if err != nil { + // Write event + if _, err := destination.Write(eventPrefix); err != nil { + return err + } + if _, err := destination.Write([]byte(event.Name)); err != nil { + return err + } + if _, err := destination.Write(newline); err != nil { return err } + // Write retry if present if event.Retry != 0 { - _, err = fmt.Fprintf(destination, "retry: %d\n", event.Retry/1000/1000) - if err != nil { + if _, err := destination.Write(retryPrefix); err != nil { + return err + } + + retryValue := strconv.FormatInt(int64(event.Retry/1000/1000), 10) + if _, err := destination.Write([]byte(retryValue)); err != nil { + return err + } + + if _, err := destination.Write(newline); err != nil { return err } } + // Write data lines for _, line := range bytes.Split(event.Data, []byte("\n")) { - var err error - if len(line) == 0 { - _, err = fmt.Fprintf(destination, "data\n") + if _, err := destination.Write(emptyData); err != nil { + return err + } } else { - _, err = fmt.Fprintf(destination, "data: %s\n", line) + if _, err := destination.Write(dataPrefix); err != nil { + return err + } + if _, err := destination.Write(line); err != nil { + return err + } } - if err != nil { + if _, err := destination.Write(newline); err != nil { return err } } - _, err = fmt.Fprintf(destination, "\n") + // Final newline + _, err := destination.Write(newline) return err } diff --git a/vendor/github.com/vito/go-sse/sse/event_source.go b/vendor/github.com/vito/go-sse/sse/event_source.go index 04e0abf3..faba5441 100644 --- a/vendor/github.com/vito/go-sse/sse/event_source.go +++ b/vendor/github.com/vito/go-sse/sse/event_source.go @@ -8,14 +8,6 @@ import ( "time" ) -type BadResponseError struct { - Response *http.Response -} - -func (err BadResponseError) Error() string { - return fmt.Sprintf("bad response from event source: %s", err.Response.Status) -} - // EventSource behaves like the EventSource interface from the Server-Sent // Events spec implemented in many browsers. See // http://www.w3.org/TR/eventsource/#the-eventsource-interface for details. @@ -36,7 +28,7 @@ func (err BadResponseError) Error() string { // If an EOF is received, Next() returns io.EOF, and subsequent calls to Next() // will return early. To read new events, Connect() must be called. type EventSource struct { - client *http.Client + client Doer createRequest func() *http.Request currentReadCloser *ReadCloser @@ -50,13 +42,25 @@ type EventSource struct { maxRetries uint16 } +type Doer interface { + Do(*http.Request) (*http.Response, error) +} + +type BadResponseError struct { + Response *http.Response +} + +func (err BadResponseError) Error() string { + return fmt.Sprintf("bad response from event source: %s", err.Response.Status) +} + type RetryParams struct { RetryInterval time.Duration MaxRetries uint16 } type Config struct { - Client *http.Client + Client Doer RetryParams RetryParams RequestCreator func() *http.Request } @@ -78,14 +82,14 @@ func (c *Config) Connect() (*EventSource, error) { return source, nil } -func NewEventSource(client *http.Client, defaultRetryInterval time.Duration, requestCreator func() *http.Request) *EventSource { +func NewEventSource(client Doer, defaultRetryInterval time.Duration, requestCreator func() *http.Request) *EventSource { retryParams := RetryParams{ RetryInterval: defaultRetryInterval, } return createEventSource(client, retryParams, requestCreator) } -func createEventSource(client *http.Client, retryParams RetryParams, requestCreator func() *http.Request) *EventSource { +func createEventSource(client Doer, retryParams RetryParams, requestCreator func() *http.Request) *EventSource { return &EventSource{ client: client, createRequest: requestCreator, @@ -97,7 +101,7 @@ func createEventSource(client *http.Client, retryParams RetryParams, requestCrea } } -func Connect(client *http.Client, defaultRetryInterval time.Duration, requestCreator func() *http.Request) (*EventSource, error) { +func Connect(client Doer, defaultRetryInterval time.Duration, requestCreator func() *http.Request) (*EventSource, error) { source := NewEventSource(client, defaultRetryInterval, requestCreator) readCloser, err := source.establishConnection() @@ -204,7 +208,13 @@ func (source *EventSource) establishConnection() (*ReadCloser, error) { for { req := source.createRequest() - req.Header.Set("Last-Event-ID", source.lastEventID) + if req.Header == nil { + req.Header = http.Header{} + } + + if source.lastEventID != "" { + req.Header.Set("Last-Event-ID", source.lastEventID) + } res, err := source.client.Do(req) if err != nil { diff --git a/vendor/modules.txt b/vendor/modules.txt index 37366b46..28241292 100644 --- a/vendor/modules.txt +++ b/vendor/modules.txt @@ -1,16 +1,22 @@ -# code.cloudfoundry.org/bbs v0.0.0-20251029140956-4e01df8b0ac1 -## explicit +# code.cloudfoundry.org/bbs v1.11.0 +## explicit; go 1.26.2 code.cloudfoundry.org/bbs -code.cloudfoundry.org/bbs/encryption code.cloudfoundry.org/bbs/events code.cloudfoundry.org/bbs/events/eventfakes code.cloudfoundry.org/bbs/fake_bbs +code.cloudfoundry.org/bbs/trace +# code.cloudfoundry.org/bbs/encryption v1.9.0 +## explicit; go 1.26.2 +code.cloudfoundry.org/bbs/encryption +# code.cloudfoundry.org/bbs/format v1.9.0 +## explicit; go 1.26.2 code.cloudfoundry.org/bbs/format +# code.cloudfoundry.org/bbs/models v1.7.0 +## explicit; go 1.26.2 code.cloudfoundry.org/bbs/models code.cloudfoundry.org/bbs/models/test/model_helpers -code.cloudfoundry.org/bbs/trace -# code.cloudfoundry.org/cfhttp/v2 v2.0.1-0.20210513172332-4c5ee488a657 -## explicit +# code.cloudfoundry.org/cfhttp/v2 v2.83.0 +## explicit; go 1.25.0 code.cloudfoundry.org/cfhttp/v2 # code.cloudfoundry.org/clock v1.76.0 ## explicit; go 1.25.0 @@ -194,8 +200,8 @@ github.com/tedsuo/ifrit/sigmon # github.com/tedsuo/rata v1.0.0 ## explicit github.com/tedsuo/rata -# github.com/vito/go-sse v1.0.0 -## explicit; go 1.12 +# github.com/vito/go-sse v1.1.3 +## explicit; go 1.24 github.com/vito/go-sse/sse # go.step.sm/crypto v0.84.1 ## explicit; go 1.25.8