mirror of
				https://github.com/linuxkit/linuxkit.git
				synced 2025-10-31 21:45:11 +00:00 
			
		
		
		
	Removed unused vendoring
Not required since #2025 Signed-off-by: Justin Cormack <justin.cormack@docker.com>
This commit is contained in:
		
							
								
								
									
										201
									
								
								vendor/github.com/docker/infrakit/LICENSE
									
									
									
										generated
									
									
										vendored
									
									
								
							
							
						
						
									
										201
									
								
								vendor/github.com/docker/infrakit/LICENSE
									
									
									
										generated
									
									
										vendored
									
									
								
							| @@ -1,201 +0,0 @@ | ||||
|                                  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 2016 Docker, 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. | ||||
							
								
								
									
										235
									
								
								vendor/github.com/docker/infrakit/README.md
									
									
									
										generated
									
									
										vendored
									
									
								
							
							
						
						
									
										235
									
								
								vendor/github.com/docker/infrakit/README.md
									
									
									
										generated
									
									
										vendored
									
									
								
							| @@ -1,235 +0,0 @@ | ||||
| InfraKit | ||||
| ======== | ||||
|  | ||||
| [](https://circleci.com/gh/docker/infrakit) | ||||
| [](https://goreportcard.com/report/github.com/docker/infrakit) | ||||
| [](https://codecov.io/github/docker/infrakit?branch=master) | ||||
|  | ||||
| _InfraKit_ is a toolkit for creating and managing declarative, self-healing infrastructure. | ||||
| It breaks infrastructure automation down into simple, pluggable components. These components work together to actively | ||||
| ensure the infrastructure state matches the user's specifications. | ||||
| Although _InfraKit_ emphasizes primitives for building self-healing infrastructure, it also can be used passively like | ||||
| conventional tools. | ||||
|  | ||||
| To get started, try the [tutorial](docs/tutorial.md). | ||||
|  | ||||
| ### Who InfraKit is for | ||||
|  | ||||
| _InfraKit_ is designed to support setup and management of base infrastructure.  For example, it can help you manage a | ||||
| system like a cluster or container orchestrator, ideally relieving you of building custom release and maintenance tools. | ||||
| As a result, it is a low-level tool intended to be used by infrastructure operators directly or indirectly | ||||
| (as a toolkit) through a higher-level tool.  Since _InfraKit_ is pluggable, it allows you to manage resources in diverse | ||||
| environments while using shared components and consistent interfaces. | ||||
|  | ||||
| ## Plugins | ||||
| _InfraKit_ makes extensive use of _Plugins_ to manage arbitrary systems in diverse environments, which can be composed | ||||
| to meet different needs. | ||||
|  | ||||
| See the [plugins](docs/plugins) documentation for more details. | ||||
|  | ||||
|  | ||||
| ## Building | ||||
| ### Your Environment | ||||
|  | ||||
| Make sure you check out the project following a convention for building Go projects. For example, | ||||
|  | ||||
| ```shell | ||||
|  | ||||
| # Install Go - https://golang.org/dl/ | ||||
| # Assuming your go compiler is in /usr/local/go | ||||
| export PATH=/usr/local/go/bin:$PATH | ||||
|  | ||||
| # Your dev environment | ||||
| mkdir -p ~/go | ||||
| export GOPATH=!$ | ||||
| export PATH=$GOPATH/bin:$PATH | ||||
|  | ||||
| mkdir -p ~/go/src/github.com/docker | ||||
| cd !$ | ||||
| git clone git@github.com:docker/infrakit.git | ||||
| cd infrakit | ||||
| ``` | ||||
|  | ||||
| We recommended go version 1.7.1 or greater for all platforms. | ||||
|  | ||||
| Also install a few build tools: | ||||
| ```shell | ||||
| make get-tools | ||||
| ``` | ||||
|  | ||||
| ### Running tests | ||||
| ```shell | ||||
| $ make ci | ||||
| ``` | ||||
|  | ||||
| ### Binaries | ||||
| ```shell | ||||
| $ make binaries | ||||
| ``` | ||||
| Executables will be placed in the `./build` directory. | ||||
| This will produce binaries for tools and several reference Plugin implementations: | ||||
|   + [`infrakit`](cmd/cli/README.md): a command line interface to interact with plugins | ||||
|   + [`infrakit-group-default`](cmd/group/README.md): the default [Group plugin](./pkg/spi/group) | ||||
|   + [`infrakit-instance-file`](examples/instance/file): an Instance plugin using dummy files to represent instances | ||||
|   + [`infrakit-instance-terraform`](examples/instance/terraform): | ||||
|     an Instance plugin integrating [Terraform](https://www.terraform.io) | ||||
|   + [`infrakit-instance-vagrant`](examples/instance/vagrant): | ||||
|     an Instance plugin using [Vagrant](https://www.vagrantup.com/) | ||||
|   + [`infrakit-instance-maas`](examples/instance/maas): | ||||
|     an Instance plugin using [MaaS](https://maas.io) | ||||
|   + [`infrakit-flavor-vanilla`](examples/flavor/vanilla): | ||||
|     a Flavor plugin for plain vanilla set up with user data and labels | ||||
|   + [`infrakit-flavor-zookeeper`](examples/flavor/zookeeper): | ||||
|     a Flavor plugin for [Apache ZooKeeper](https://zookeeper.apache.org/) ensemble members | ||||
|   + [`infrakit-flavor-swarm`](examples/flavor/swarm): | ||||
|     a Flavor plugin for Docker in [Swarm mode](https://docs.docker.com/engine/swarm/). | ||||
|  | ||||
| All provided binaries have a `help` sub-command to get usage and a `version` sub-command to identify the build revision. | ||||
|  | ||||
|  | ||||
| # Design | ||||
|  | ||||
| ## Configuration | ||||
| _InfraKit_ uses JSON for configuration because it is composable and a widely accepted format for many | ||||
| infrastructure SDKs and tools.  Since the system is highly component-driven, our JSON format follows | ||||
| simple patterns to support the composition of components. | ||||
|  | ||||
| A common pattern for a JSON object looks like this: | ||||
|  | ||||
| ```json | ||||
| { | ||||
|    "SomeKey": "ValueForTheKey", | ||||
|    "Properties": { | ||||
|    } | ||||
| } | ||||
| ``` | ||||
|  | ||||
| There is only one `Properties` field in this JSON and its value is a JSON object. The opaque | ||||
| JSON value for `Properties` is decoded via the Go `Spec` struct defined within the package of the plugin -- | ||||
| for example -- [`vanilla.Spec`](pkg/plugin/flavor/vanilla/flavor.go). | ||||
|  | ||||
| The JSON above is a _value_, but the type of the value belongs outside the structure.  For example, the | ||||
| default Group [Spec](pkg/plugin/group/types/types.go) is composed of an Instance plugin, a Flavor plugin, and an | ||||
| Allocation: | ||||
|  | ||||
| ```json | ||||
| { | ||||
|   "ID": "name-of-the-group", | ||||
|   "Properties": { | ||||
|     "Allocation": { | ||||
|     }, | ||||
|     "Instance": { | ||||
|       "Plugin": "name-of-the-instance-plugin", | ||||
|       "Properties": { | ||||
|       } | ||||
|     }, | ||||
|     "Flavor": { | ||||
|       "Plugin": "name-of-the-flavor-plugin", | ||||
|       "Properties": { | ||||
|       } | ||||
|     } | ||||
|   } | ||||
| } | ||||
| ``` | ||||
| The group's Spec has `Instance` and `Flavor` fields which are used to indicate the type, and the value of the | ||||
| fields follow the pattern of `<some_key>` and `Properties` as shown above. | ||||
|  | ||||
| The `Allocation` determines how the Group is managed.  Allocation has two properties: | ||||
|   - `Size`: an integer for the number of instances to maintain in the Group | ||||
|   - `LogicalIDs`: a list of string identifiers, one will be associated with each Instance | ||||
|  | ||||
| Exactly one of these fields must be set, which defines whether the Group is treated as 'cattle' (`Size`) or 'pets' | ||||
| (`LogicalIDs`).  It is up to the Instance and Flavor plugins to determine how to use `LogicalID` values. | ||||
|  | ||||
| As an example, if you wanted to manage a Group of NGINX servers, you could | ||||
| write a custom Group plugin for ultimate customization.  The most concise configuration looks something like this: | ||||
|  | ||||
| ```json | ||||
| { | ||||
|   "ID": "nginx", | ||||
|   "Plugin": "my-nginx-group-plugin", | ||||
|   "Properties": { | ||||
|     "port": 8080 | ||||
|   } | ||||
| } | ||||
| ```` | ||||
|  | ||||
| However, you would likely prefer to use the default Group plugin and implement a Flavor plugin to focus on | ||||
| application-specific behavior.  This gives you immediate support for any infrastructure that has an Instance plugin. | ||||
| Your resulting configuration might look something like this: | ||||
|  | ||||
| ```json | ||||
| { | ||||
|   "ID": "nginx", | ||||
|   "Plugin": "group", | ||||
|   "Properties": { | ||||
|     "Allocation": { | ||||
|       "Size": 10 | ||||
|     }, | ||||
|     "Instance": { | ||||
|       "Plugin": "aws", | ||||
|       "Properties": { | ||||
|         "region": "us-west-2", | ||||
|         "ami": "ami-123456" | ||||
|       } | ||||
|     }, | ||||
|     "Flavor": { | ||||
|       "Plugin": "nginx", | ||||
|       "Properties": { | ||||
|         "port": 8080 | ||||
|       } | ||||
|     } | ||||
|   } | ||||
| } | ||||
| ``` | ||||
|  | ||||
| Once the configuration is ready, you will tell a Group plugin to | ||||
|   + watch it | ||||
|   + update it | ||||
|   + destroy it | ||||
|  | ||||
| Watching the group as specified in the configuration means that the Group plugin will create | ||||
| the instances if they don't already exist.  New instances will be created if for any reason | ||||
| existing instances have disappeared such that the state doesn't match your specifications. | ||||
|  | ||||
| Updating the group tells the Group plugin that your configuration may have changed.  It will | ||||
| then determine the changes necessary to ensure the state of the infrastructure matches the new | ||||
| specification. | ||||
|  | ||||
| ## Docs | ||||
|  | ||||
| Additional documentation can be found [here](docs). | ||||
|  | ||||
| ## Reporting security issues | ||||
|  | ||||
| The maintainers take security seriously. If you discover a security issue, | ||||
| please bring it to their attention right away! | ||||
|  | ||||
| Please **DO NOT** file a public issue, instead send your report privately to | ||||
| [security@docker.com](mailto:security@docker.com). | ||||
|  | ||||
| Security reports are greatly appreciated and we will publicly thank you for it. | ||||
| We also like to send gifts—if you're into Docker schwag, make sure to let | ||||
| us know. We currently do not offer a paid security bounty program, but are not | ||||
| ruling it out in the future. | ||||
|  | ||||
|  | ||||
| ## Design goals | ||||
|  | ||||
| _InfraKit_ is currently focused on supporting setup and management of base infrastructure, such as a cluster | ||||
| orchestrator.  The image below illustrates an architecture we are working towards supporting - a Docker cluster in Swarm | ||||
| mode. | ||||
|  | ||||
|  | ||||
|  | ||||
| This configuration co-locates _InfraKit_ with Swarm manager nodes and offers high availability of _InfraKit_ itself and | ||||
| Swarm managers (using attached storage).  _InfraKit_ is shown managing two groups - managers and workers that will be | ||||
| continuously monitored, and may be modified with rolling updates. | ||||
|  | ||||
| Countless configurations are possible with _InfraKit_, but we believe achieving support for this configuration will | ||||
| enable a large number of real-world use cases. | ||||
|  | ||||
| ## Copyright and license | ||||
|  | ||||
| Copyright © 2016 Docker, Inc. All rights reserved. Released under the Apache 2.0 | ||||
| license. See [LICENSE](LICENSE) for the full license text. | ||||
							
								
								
									
										81
									
								
								vendor/github.com/docker/infrakit/vendor.conf
									
									
									
										generated
									
									
										vendored
									
									
								
							
							
						
						
									
										81
									
								
								vendor/github.com/docker/infrakit/vendor.conf
									
									
									
										generated
									
									
										vendored
									
									
								
							| @@ -1,81 +0,0 @@ | ||||
| # Vendor configuration for trash (https://github.com/rancher/trash) | ||||
|  | ||||
| # Install trash with `go get github.com/rancher/trash` | ||||
| # Synchronize the vendor/ directory with `vendor.conf` by running `trash`. | ||||
| # Update dependencies by running `trash -u`. | ||||
|  | ||||
| # package | ||||
| github.com/docker/infrakit | ||||
|  | ||||
| github.com/Masterminds/sprig                            2.8.0 | ||||
| github.com/Microsoft/go-winio                           0.3.6 | ||||
| github.com/Sirupsen/logrus                              v0.11.0-5-gabc6f20 | ||||
| github.com/aokoli/goutils                               1.0.0 | ||||
| github.com/armon/go-radix                               4239b77 | ||||
| github.com/beorn7/perks                                 4c0e845 | ||||
| github.com/beorn7/perks/quantile                        4c0e845 | ||||
| github.com/coreos/etcd/auth/authpb                      v3.1.3 | ||||
| github.com/coreos/etcd/clientv3                         v3.1.3 | ||||
| github.com/coreos/etcd/etcdserver/api/v3rpc/rpctypes    v3.1.3 | ||||
| github.com/coreos/etcd/etcdserver/etcdserverpb          v3.1.3 | ||||
| github.com/coreos/etcd/mvcc/mvccpb                      v3.1.3 | ||||
| github.com/coreos/etcd/pkg/tlsutil                      v3.1.3 | ||||
| github.com/davecgh/go-spew                              v1.0.0-9-g346938d | ||||
| github.com/docker/distribution                          v2.6.0-rc.1-4-g7694c31 | ||||
| github.com/docker/docker                                3a68292 | ||||
| github.com/docker/go-connections                        v0.2.1-10-gf512407 | ||||
| github.com/docker/go-units                              v0.3.1-8-g8a7beac | ||||
| github.com/ghodss/yaml                                  73d445a93680fa1a78ae23a5839bad48f32ba1ee | ||||
| github.com/golang/glog                                  23def4e | ||||
| github.com/golang/mock                                  bd3c8e8 | ||||
| github.com/golang/protobuf/jsonpb                       4bd1920723d7b7c925de087aa32e2187708897f7 | ||||
| github.com/golang/protobuf/proto                        4bd1920723d7b7c925de087aa32e2187708897f7 | ||||
| github.com/gorilla/handlers                             v1.1-12-ge1b2144 | ||||
| github.com/gorilla/mux                                  757bef9 | ||||
| github.com/gorilla/rpc                                  22c016f | ||||
| github.com/grpc-ecosystem/go-grpc-prometheus            v1.1 | ||||
| github.com/grpc-ecosystem/grpc-gateway/runtime          84398b94e188ee336f307779b57b3aa91af7063c | ||||
| github.com/grpc-ecosystem/grpc-gateway/utilities        84398b94e188ee336f307779b57b3aa91af7063c | ||||
| github.com/inconshreveable/mousetrap                    76626ae | ||||
| github.com/jmespath/go-jmespath                         0.2.2-14-gbd40a43 | ||||
| github.com/juju/ansiterm                                35c59b9 | ||||
| github.com/juju/errors                                  6f54ff6 | ||||
| github.com/juju/gomaasapi                               31d8415 | ||||
| github.com/juju/loggo                                   3b7ece4 | ||||
| github.com/juju/schema                                  e4e0580 | ||||
| github.com/juju/utils                                   8f0eda3 | ||||
| github.com/juju/version                                 1f41e27 | ||||
| github.com/lunixbochs/vtclean                           4fbf763 | ||||
| github.com/mattn/go-colorable                           d228849 | ||||
| github.com/mattn/go-isatty                              30a891c | ||||
| github.com/matttproud/golang_protobuf_extensions        v1.0.0 | ||||
| github.com/nightlyone/lockfile                          1d49c98 | ||||
| github.com/opencontainers/runc                          v1.0.0-rc2-137-g43c4300 | ||||
| github.com/pkg/errors                                   v0.8.0-2-g248dadf | ||||
| github.com/pmezard/go-difflib                           v1.0.0 | ||||
| github.com/prometheus/client_golang/prometheus          v0.8.0 | ||||
| github.com/prometheus/client_model                      6f38060 | ||||
| github.com/prometheus/common                            49fee29 | ||||
| github.com/prometheus/procfs                            a1dba9c | ||||
| github.com/satori/go.uuid                               v1.1.0 | ||||
| github.com/spf13/afero                                  06b7e5f | ||||
| github.com/spf13/cobra                                  6e91dde | ||||
| github.com/spf13/pflag                                  5ccb023 | ||||
| github.com/stretchr/testify                             v1.1.4-4-g976c720 | ||||
| github.com/twmb/algoimpl                                716f8e7 | ||||
| github.com/vaughan0/go-ini                              a98ad7e | ||||
| golang.org/x/crypto/pbkdf2                              b07d8c9 | ||||
| golang.org/x/net                                        0dd7c8d | ||||
| golang.org/x/sys                                        b699b70 | ||||
| golang.org/x/text                                       a263ba8 | ||||
| google.golang.org/grpc                                  v1.0.4 | ||||
| google.golang.org/grpc/codes                            v1.0.4 | ||||
| google.golang.org/grpc/credentials                      v1.0.4 | ||||
| google.golang.org/grpc/grpclog                          v1.0.4 | ||||
| google.golang.org/grpc/metadata                         v1.0.4 | ||||
| gopkg.in/inconshreveable/log15.v2                       v2.11 | ||||
| gopkg.in/juju/names.v2                                  0847c26 | ||||
| gopkg.in/mgo.v2/bson                                    3f83fa5 | ||||
| gopkg.in/mgo.v2/internal                                3f83fa5 | ||||
| gopkg.in/tylerb/graceful.v1                             v1.2.13 | ||||
| gopkg.in/yaml.v2                                        a5b47d3 | ||||
							
								
								
									
										202
									
								
								vendor/github.com/surma/gocpio/LICENSE
									
									
									
										generated
									
									
										vendored
									
									
								
							
							
						
						
									
										202
									
								
								vendor/github.com/surma/gocpio/LICENSE
									
									
									
										generated
									
									
										vendored
									
									
								
							| @@ -1,202 +0,0 @@ | ||||
|  | ||||
|                                  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 2016 Surma | ||||
|  | ||||
|    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. | ||||
							
								
								
									
										11
									
								
								vendor/github.com/surma/gocpio/README.md
									
									
									
										generated
									
									
										vendored
									
									
								
							
							
						
						
									
										11
									
								
								vendor/github.com/surma/gocpio/README.md
									
									
									
										generated
									
									
										vendored
									
									
								
							| @@ -1,11 +0,0 @@ | ||||
| `gocpio` is a  simple library similar to Go’s `tar` or `zip` package for  | ||||
| accessing cpio archives. It’s not pretty and only implements the new ASCII | ||||
| format. Maybe I’ll refactor and implement other formats some day. | ||||
|  | ||||
| Links | ||||
| ----- | ||||
|  | ||||
| * [Reference](http://people.freebsd.org/~kientzle/libarchive/man/cpio.5.txt) | ||||
|  | ||||
| ------- | ||||
| Version 1.1.0 | ||||
							
								
								
									
										46
									
								
								vendor/github.com/surma/gocpio/common.go
									
									
									
										generated
									
									
										vendored
									
									
								
							
							
						
						
									
										46
									
								
								vendor/github.com/surma/gocpio/common.go
									
									
									
										generated
									
									
										vendored
									
									
								
							| @@ -1,46 +0,0 @@ | ||||
| // Package cpio implements access to cpio archives. | ||||
| // Implementation of the new ASCII formate (SVR4) defined here: | ||||
| // http://people.freebsd.org/~kientzle/libarchive/man/cpio.5.txt | ||||
| package cpio | ||||
|  | ||||
| const ( | ||||
| 	VERSION = "1.1.0" | ||||
| ) | ||||
|  | ||||
| // Header represents file meta data in an archive. | ||||
| // Some fields may not be populated. | ||||
| type Header struct { | ||||
| 	Mode     int64 // permission and mode bits. | ||||
| 	Uid      int   // user id of owner. | ||||
| 	Gid      int   // group id of owner. | ||||
| 	Mtime    int64 // modified time; seconds since epoch. | ||||
| 	Size     int64 // length in bytes. | ||||
| 	Devmajor int64 // major number of character or block device. | ||||
| 	Devminor int64 // minor number of character or block device. | ||||
| 	Type     int64 | ||||
| 	Name     string // name of header file entry. | ||||
| } | ||||
|  | ||||
| func (h *Header) IsTrailer() bool { | ||||
| 	return h.Name == trailer.Name && | ||||
| 		h.Uid == trailer.Uid && | ||||
| 		h.Gid == trailer.Gid && | ||||
| 		h.Mtime == trailer.Mtime | ||||
| } | ||||
|  | ||||
| // File types | ||||
| const ( | ||||
| 	TYPE_SOCK    = 014 | ||||
| 	TYPE_SYMLINK = 012 | ||||
| 	TYPE_REG     = 010 | ||||
| 	TYPE_BLK     = 006 | ||||
| 	TYPE_DIR     = 004 | ||||
| 	TYPE_CHAR    = 002 | ||||
| 	TYPE_FIFO    = 001 | ||||
| ) | ||||
|  | ||||
| var ( | ||||
| 	trailer = Header{ | ||||
| 		Name: "TRAILER!!!", | ||||
| 	} | ||||
| ) | ||||
							
								
								
									
										181
									
								
								vendor/github.com/surma/gocpio/reader.go
									
									
									
										generated
									
									
										vendored
									
									
								
							
							
						
						
									
										181
									
								
								vendor/github.com/surma/gocpio/reader.go
									
									
									
										generated
									
									
										vendored
									
									
								
							| @@ -1,181 +0,0 @@ | ||||
| package cpio | ||||
|  | ||||
| import ( | ||||
| 	"errors" | ||||
| 	"io" | ||||
| 	"strconv" | ||||
| ) | ||||
|  | ||||
| type Reader struct { | ||||
| 	r               io.Reader | ||||
| 	pos             int64 | ||||
| 	remaining_bytes int | ||||
| } | ||||
|  | ||||
| func NewReader(r io.Reader) *Reader { | ||||
| 	return &Reader{ | ||||
| 		r: r, | ||||
| 	} | ||||
| } | ||||
|  | ||||
| func disassemble(mode int64) (fmode int64, ftype int64) { | ||||
| 	fmode = mode & 0xFFF | ||||
| 	ftype = (mode >> 12) & 0xF | ||||
| 	return | ||||
| } | ||||
|  | ||||
| func getPrefix(buf *[]byte, len int) (pre []byte) { | ||||
| 	pre, *buf = (*buf)[0:len], (*buf)[len:] | ||||
| 	return | ||||
| } | ||||
|  | ||||
| func Btoi(s string, base int) (int, error) { | ||||
| 	i, e := strconv.ParseInt(s, base, 64) | ||||
| 	return int(i), e | ||||
| } | ||||
|  | ||||
| var ( | ||||
| 	ErrInvalidHeader = errors.New("Did not find valid magic number") | ||||
| ) | ||||
|  | ||||
| func parseHeader(buf []byte) (*Header, int64, error) { | ||||
| 	magic := string(getPrefix(&buf, 6)) | ||||
| 	raw_inode := getPrefix(&buf, 8) | ||||
| 	raw_mode := getPrefix(&buf, 8) | ||||
| 	raw_uid := getPrefix(&buf, 8) | ||||
| 	raw_gid := getPrefix(&buf, 8) | ||||
| 	raw_nlinks := getPrefix(&buf, 8) | ||||
| 	raw_mtime := getPrefix(&buf, 8) | ||||
| 	raw_size := getPrefix(&buf, 8) | ||||
| 	raw_major := getPrefix(&buf, 8) | ||||
| 	raw_minor := getPrefix(&buf, 8) | ||||
| 	raw_devmajor := getPrefix(&buf, 8) | ||||
| 	raw_devminor := getPrefix(&buf, 8) | ||||
| 	raw_namelen := getPrefix(&buf, 8) | ||||
| 	raw_check := getPrefix(&buf, 8) | ||||
|  | ||||
| 	_, _, _, _, _ = raw_inode, raw_nlinks, raw_major, raw_minor, raw_check | ||||
|  | ||||
| 	if magic != "070701" { | ||||
| 		return nil, 0, ErrInvalidHeader | ||||
| 	} | ||||
|  | ||||
| 	hdr := &Header{} | ||||
|  | ||||
| 	mode, e := strconv.ParseInt(string(raw_mode), 16, 64) | ||||
| 	if e != nil { | ||||
| 		return nil, 0, e | ||||
| 	} | ||||
|  | ||||
| 	hdr.Mode, hdr.Type = disassemble(mode) | ||||
|  | ||||
| 	hdr.Uid, e = Btoi(string(raw_uid), 16) | ||||
| 	if e != nil { | ||||
| 		return nil, 0, e | ||||
| 	} | ||||
|  | ||||
| 	hdr.Gid, e = Btoi(string(raw_gid), 16) | ||||
| 	if e != nil { | ||||
| 		return nil, 0, e | ||||
| 	} | ||||
|  | ||||
| 	hdr.Mtime, e = strconv.ParseInt(string(raw_mtime), 16, 64) | ||||
| 	if e != nil { | ||||
| 		return nil, 0, e | ||||
| 	} | ||||
|  | ||||
| 	hdr.Size, e = strconv.ParseInt(string(raw_size), 16, 64) | ||||
| 	if e != nil { | ||||
| 		return nil, 0, e | ||||
| 	} | ||||
|  | ||||
| 	hdr.Devmajor, e = strconv.ParseInt(string(raw_devmajor), 16, 64) | ||||
| 	if e != nil { | ||||
| 		return nil, 0, e | ||||
| 	} | ||||
|  | ||||
| 	hdr.Devminor, e = strconv.ParseInt(string(raw_devminor), 16, 64) | ||||
| 	if e != nil { | ||||
| 		return nil, 0, e | ||||
| 	} | ||||
|  | ||||
| 	namelen, e := strconv.ParseInt(string(raw_namelen), 16, 64) | ||||
| 	if e != nil { | ||||
| 		return nil, 0, e | ||||
| 	} | ||||
|  | ||||
| 	return hdr, namelen, nil | ||||
| } | ||||
|  | ||||
| func (r *Reader) Next() (*Header, error) { | ||||
| 	e := r.skipRest() | ||||
| 	if e != nil { | ||||
| 		return nil, e | ||||
| 	} | ||||
| 	e = r.skipPadding(4) | ||||
| 	if e != nil { | ||||
| 		return nil, e | ||||
| 	} | ||||
|  | ||||
| 	raw_hdr := make([]byte, 110) | ||||
| 	_, e = r.countedRead(raw_hdr) | ||||
| 	if e != nil { | ||||
| 		return nil, e | ||||
| 	} | ||||
|  | ||||
| 	hdr, namelen, e := parseHeader(raw_hdr) | ||||
| 	if e != nil { | ||||
| 		return nil, e | ||||
| 	} | ||||
|  | ||||
| 	bname := make([]byte, namelen) | ||||
| 	_, e = r.countedRead(bname) | ||||
| 	if e != nil { | ||||
| 		return nil, e | ||||
| 	} | ||||
|  | ||||
| 	hdr.Name = string(bname[0 : namelen-1]) //Exclude terminating zero | ||||
| 	r.remaining_bytes = int(hdr.Size) | ||||
| 	return hdr, r.skipPadding(4) | ||||
| } | ||||
|  | ||||
| func (r *Reader) skipRest() error { | ||||
| 	buf := make([]byte, 1) | ||||
| 	for ; r.remaining_bytes > 0; r.remaining_bytes-- { | ||||
| 		_, e := r.countedRead(buf) | ||||
| 		if e != nil { | ||||
| 			return e | ||||
| 		} | ||||
| 	} | ||||
| 	return nil | ||||
| } | ||||
|  | ||||
| // Skips to the next position which is a multiple of mod. | ||||
| func (r *Reader) skipPadding(mod int64) error { | ||||
| 	numBytesToRead := ((mod - (r.pos % mod)) % mod) | ||||
| 	buf := make([]byte, numBytesToRead) | ||||
| 	_, e := r.countedRead(buf) | ||||
| 	return e | ||||
| } | ||||
|  | ||||
| func (r *Reader) Read(b []byte) (n int, e error) { | ||||
| 	if r.remaining_bytes == 0 { | ||||
| 		return 0, io.EOF | ||||
| 	} | ||||
|  | ||||
| 	if len(b) > r.remaining_bytes { | ||||
| 		b = b[0:r.remaining_bytes] | ||||
| 	} | ||||
| 	n, e = r.countedRead(b) | ||||
| 	r.remaining_bytes -= n | ||||
| 	return | ||||
| } | ||||
|  | ||||
| func (r *Reader) countedRead(b []byte) (n int, e error) { | ||||
| 	if len(b) == 0 { | ||||
| 		return | ||||
| 	} | ||||
| 	n, e = r.r.Read(b) | ||||
| 	r.pos += int64(n) | ||||
| 	return | ||||
| } | ||||
							
								
								
									
										118
									
								
								vendor/github.com/surma/gocpio/writer.go
									
									
									
										generated
									
									
										vendored
									
									
								
							
							
						
						
									
										118
									
								
								vendor/github.com/surma/gocpio/writer.go
									
									
									
										generated
									
									
										vendored
									
									
								
							| @@ -1,118 +0,0 @@ | ||||
| package cpio | ||||
|  | ||||
| import ( | ||||
| 	"io" | ||||
| 	"fmt" | ||||
| ) | ||||
|  | ||||
| // A writer enables sequential writing of cpio archives. | ||||
| // A call to WriteHeader begins a new file. Every call to | ||||
| // write afterwards appends to that file, writing at most | ||||
| // hdr.Size bytes in total. | ||||
| type Writer struct { | ||||
| 	w               io.Writer | ||||
| 	inode           int64 | ||||
| 	length          int64 | ||||
| 	remaining_bytes int | ||||
| } | ||||
|  | ||||
| func NewWriter(w io.Writer) *Writer { | ||||
| 	return &Writer{ | ||||
| 		w:     w, | ||||
| 		inode: 721, | ||||
| 	} | ||||
| } | ||||
|  | ||||
| func assemble(mode, typev int64) int64 { | ||||
| 	return mode&0xFFF | ((typev & 0xF) << 12) | ||||
| } | ||||
|  | ||||
| func (w *Writer) WriteHeader(hdr *Header) error { | ||||
| 	// Bring last file to the defined length | ||||
| 	e := w.zeros(int64(w.remaining_bytes)) | ||||
| 	if e != nil { | ||||
| 		return e | ||||
| 	} | ||||
| 	e = w.pad(4) | ||||
| 	if e != nil { | ||||
| 		return e | ||||
| 	} | ||||
| 	bname := []byte(hdr.Name) | ||||
| 	nlinks := 1 | ||||
| 	if hdr.Type == TYPE_DIR { | ||||
| 		nlinks = 2 | ||||
| 	} | ||||
| 	shdr := fmt.Sprintf("%s%08x%08x%08x%08x%08x%08x%08x%08x%08x%08x%08x%08x%08x", | ||||
| 		"070701", | ||||
| 		w.inode, | ||||
| 		assemble(hdr.Mode, hdr.Type), | ||||
| 		hdr.Uid, | ||||
| 		hdr.Gid, | ||||
| 		nlinks, | ||||
| 		hdr.Mtime, | ||||
| 		hdr.Size, | ||||
| 		3, // major | ||||
| 		1, // minor | ||||
| 		hdr.Devmajor, | ||||
| 		hdr.Devminor, | ||||
| 		len(bname)+1, // +1 for terminating zero | ||||
| 		0)            // check | ||||
| 	_, e = w.countedWrite([]byte(shdr)) | ||||
| 	if e != nil { | ||||
| 		return e | ||||
| 	} | ||||
|  | ||||
| 	_, e = w.countedWrite(bname) | ||||
| 	if e != nil { | ||||
| 		return e | ||||
| 	} | ||||
|  | ||||
| 	_, e = w.countedWrite([]byte{0}) | ||||
| 	if e != nil { | ||||
| 		return e | ||||
| 	} | ||||
| 	w.inode++ | ||||
| 	w.remaining_bytes = int(hdr.Size) | ||||
| 	return w.pad(4) | ||||
| } | ||||
|  | ||||
| func (w *Writer) zeros(num int64) error { | ||||
| 	for ; num > 0; num-- { | ||||
| 		_, e := w.countedWrite([]byte{0}) | ||||
| 		if e != nil { | ||||
| 			return e | ||||
| 		} | ||||
| 	} | ||||
| 	return nil | ||||
| } | ||||
|  | ||||
| // Brings the length of the file to a multiple of mod | ||||
| func (w *Writer) pad(mod int64) error { | ||||
|  | ||||
| 	return w.zeros((mod - (w.length % mod)) % mod) | ||||
| } | ||||
|  | ||||
| func (w *Writer) Write(b []byte) (n int, e error) { | ||||
| 	if len(b) > w.remaining_bytes { | ||||
| 		b = b[0:w.remaining_bytes] | ||||
| 	} | ||||
| 	n, e = w.countedWrite(b) | ||||
| 	w.remaining_bytes -= n | ||||
| 	return | ||||
| } | ||||
|  | ||||
| func (w *Writer) countedWrite(b []byte) (n int, e error) { | ||||
| 	n, e = w.w.Write(b) | ||||
| 	w.length += int64(n) | ||||
| 	return n, e | ||||
| } | ||||
|  | ||||
| // Writes trailer | ||||
| // Does not close underlying writer | ||||
| func (w *Writer) Close() error { | ||||
| 	e := w.WriteHeader(&trailer) | ||||
| 	if e != nil { | ||||
| 		return e | ||||
| 	} | ||||
| 	return w.pad(512) | ||||
| } | ||||
		Reference in New Issue
	
	Block a user