From adefe0907de784c9d05a6ec3131dea86df2b0f05 Mon Sep 17 00:00:00 2001 From: Steffen Siering Date: Mon, 6 Jul 2020 22:26:20 +0200 Subject: [PATCH] Cherry-pick #19117 to 7.x: Init package libbeat/statestore (#19655) Initialize support for the statestore package. The addition of the statestore package is split up into multiple changeset to ease review. The final version of the package can be found [here](https://github.com/urso/beats/tree/fb-input-v2-combined/libbeat/statestore). Once finalized, the libbeat/statestore package contains: - The statestore frontend and interface for use within Beats - Interfaces for the store backend - A common set of tests store backends need to support - a storetest package for testing new features that require a store. The testing helpers use map[string]interface{} that can be initialized or queried after the test run for validation purposes. - The default memlog backend + tests This change includes the frontend and backend interfaces only. Once merged we will add the tests and finally the memlog store. (cherry picked from commit 1fc18c2de39b4bfd29749be15cb79c8fb0757375) --- NOTICE.txt | 726 +++++++++++- go.mod | 3 +- go.sum | 9 + libbeat/statestore/backend/backend.go | 71 ++ libbeat/statestore/error.go | 91 ++ libbeat/statestore/registry.go | 87 ++ libbeat/statestore/store.go | 176 +++ vendor/modules.txt | 1457 ------------------------- 8 files changed, 1131 insertions(+), 1489 deletions(-) create mode 100644 libbeat/statestore/backend/backend.go create mode 100644 libbeat/statestore/error.go create mode 100644 libbeat/statestore/registry.go create mode 100644 libbeat/statestore/store.go delete mode 100644 vendor/modules.txt diff --git a/NOTICE.txt b/NOTICE.txt index 64de0c0e735..9af3167231a 100644 --- a/NOTICE.txt +++ b/NOTICE.txt @@ -5934,6 +5934,217 @@ SOFTWARE to the Commercial Software. +-------------------------------------------------------------------------------- +Dependency : github.com/elastic/go-concert +Version: v0.0.2 +Licence type (autodetected): Apache-2.0 +-------------------------------------------------------------------------------- + +Contents of probable licence file $GOMODCACHE/github.com/elastic/go-concert@v0.0.2/LICENSE: + + 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. + + -------------------------------------------------------------------------------- Dependency : github.com/elastic/go-libaudit/v2 Version: v2.0.0-20200515221334-92371bef3fb8 @@ -14387,11 +14598,11 @@ OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. -------------------------------------------------------------------------------- Dependency : golang.org/x/lint -Version: v0.0.0-20191125180803-fdd1cda4f05f +Version: v0.0.0-20200130185559-910be7a94367 Licence type (autodetected): BSD-3-Clause -------------------------------------------------------------------------------- -Contents of probable licence file $GOMODCACHE/golang.org/x/lint@v0.0.0-20191125180803-fdd1cda4f05f/LICENSE: +Contents of probable licence file $GOMODCACHE/golang.org/x/lint@v0.0.0-20200130185559-910be7a94367/LICENSE: Copyright (c) 2013 The Go Authors. All rights reserved. @@ -34555,12 +34766,12 @@ SOFTWARE. -------------------------------------------------------------------------------- -Dependency : github.com/urso/go-bin -Version: v0.0.0-20180220135811-781c575c9f0e +Dependency : github.com/urso/diag +Version: v0.0.0-20200210123136-21b3cc8eb797 Licence type (autodetected): Apache-2.0 -------------------------------------------------------------------------------- -Contents of probable licence file $GOMODCACHE/github.com/urso/go-bin@v0.0.0-20180220135811-781c575c9f0e/LICENSE: +Contents of probable licence file $GOMODCACHE/github.com/urso/diag@v0.0.0-20200210123136-21b3cc8eb797/LICENSE: Apache License Version 2.0, January 2004 @@ -34766,20 +34977,12 @@ Contents of probable licence file $GOMODCACHE/github.com/urso/go-bin@v0.0.0-2018 -------------------------------------------------------------------------------- -Dependency : github.com/urso/magetools -Version: v0.0.0-20190919040553-290c89e0c230 -Licence type (autodetected): Apache-2.0 --------------------------------------------------------------------------------- - -No licence file provided. - --------------------------------------------------------------------------------- -Dependency : github.com/urso/qcgen -Version: v0.0.0-20180131103024-0b059e7db4f4 +Dependency : github.com/urso/go-bin +Version: v0.0.0-20180220135811-781c575c9f0e Licence type (autodetected): Apache-2.0 -------------------------------------------------------------------------------- -Contents of probable licence file $GOMODCACHE/github.com/urso/qcgen@v0.0.0-20180131103024-0b059e7db4f4/LICENSE: +Contents of probable licence file $GOMODCACHE/github.com/urso/go-bin@v0.0.0-20180220135811-781c575c9f0e/LICENSE: Apache License Version 2.0, January 2004 @@ -34985,29 +35188,459 @@ Contents of probable licence file $GOMODCACHE/github.com/urso/qcgen@v0.0.0-20180 -------------------------------------------------------------------------------- -Dependency : github.com/vbatts/tar-split -Version: v0.11.1 -Licence type (autodetected): BSD-3-Clause +Dependency : github.com/urso/magetools +Version: v0.0.0-20190919040553-290c89e0c230 +Licence type (autodetected): Apache-2.0 -------------------------------------------------------------------------------- -Contents of probable licence file $GOMODCACHE/github.com/vbatts/tar-split@v0.11.1/LICENSE: +No licence file provided. -Copyright (c) 2015 Vincent Batts, Raleigh, NC, USA +-------------------------------------------------------------------------------- +Dependency : github.com/urso/qcgen +Version: v0.0.0-20180131103024-0b059e7db4f4 +Licence type (autodetected): Apache-2.0 +-------------------------------------------------------------------------------- -All rights reserved. +Contents of probable licence file $GOMODCACHE/github.com/urso/qcgen@v0.0.0-20180131103024-0b059e7db4f4/LICENSE: -Redistribution and use in source and binary forms, with or without -modification, are permitted provided that the following conditions are met: + Apache License + Version 2.0, January 2004 + http://www.apache.org/licenses/ -1. Redistributions of source code must retain the above copyright notice, this -list of conditions and the following disclaimer. + TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION -2. Redistributions in binary form must reproduce the above copyright notice, -this list of conditions and the following disclaimer in the documentation -and/or other materials provided with the distribution. + 1. Definitions. -3. Neither the name of the copyright holder nor the names of its contributors -may be used to endorse or promote products derived from this software without + "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. + + +-------------------------------------------------------------------------------- +Dependency : github.com/urso/sderr +Version: v0.0.0-20200210124243-c2a16f3d43ec +Licence type (autodetected): Apache-2.0 +-------------------------------------------------------------------------------- + +Contents of probable licence file $GOMODCACHE/github.com/urso/sderr@v0.0.0-20200210124243-c2a16f3d43ec/LICENSE: + + 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. + + +-------------------------------------------------------------------------------- +Dependency : github.com/vbatts/tar-split +Version: v0.11.1 +Licence type (autodetected): BSD-3-Clause +-------------------------------------------------------------------------------- + +Contents of probable licence file $GOMODCACHE/github.com/vbatts/tar-split@v0.11.1/LICENSE: + +Copyright (c) 2015 Vincent Batts, Raleigh, NC, USA + +All rights reserved. + +Redistribution and use in source and binary forms, with or without +modification, are permitted provided that the following conditions are met: + +1. Redistributions of source code must retain the above copyright notice, this +list of conditions and the following disclaimer. + +2. Redistributions in binary form must reproduce the above copyright notice, +this list of conditions and the following disclaimer in the documentation +and/or other materials provided with the distribution. + +3. Neither the name of the copyright holder nor the names of its contributors +may be used to endorse or promote products derived from this software without specific prior written permission. THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND @@ -36515,6 +37148,37 @@ Contents of probable licence file $GOMODCACHE/go.opencensus.io@v0.22.2/LICENSE: See the License for the specific language governing permissions and limitations under the License. +-------------------------------------------------------------------------------- +Dependency : go.uber.org/goleak +Version: v1.0.0 +Licence type (autodetected): MIT +-------------------------------------------------------------------------------- + +Contents of probable licence file $GOMODCACHE/go.uber.org/goleak@v1.0.0/LICENSE: + +The MIT License (MIT) + +Copyright (c) 2018 Uber Technologies, Inc. + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in +all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN +THE SOFTWARE. + + -------------------------------------------------------------------------------- Dependency : go.uber.org/tools Version: v0.0.0-20190618225709-2cfd321de3ee diff --git a/go.mod b/go.mod index b5272deb9e6..01734256745 100644 --- a/go.mod +++ b/go.mod @@ -59,6 +59,7 @@ require ( github.com/eclipse/paho.mqtt.golang v1.2.1-0.20200121105743-0d940dd29fd2 github.com/elastic/ecs v1.5.0 github.com/elastic/elastic-agent-client/v7 v7.0.0-20200601155656-d6a9eb4f6d07 + github.com/elastic/go-concert v0.0.2 github.com/elastic/go-libaudit/v2 v2.0.0-20200515221334-92371bef3fb8 github.com/elastic/go-licenser v0.3.1 github.com/elastic/go-lookslike v0.3.0 @@ -153,7 +154,7 @@ require ( go.uber.org/multierr v1.3.0 go.uber.org/zap v1.14.0 golang.org/x/crypto v0.0.0-20200510223506-06a226fb4e37 - golang.org/x/lint v0.0.0-20191125180803-fdd1cda4f05f + golang.org/x/lint v0.0.0-20200130185559-910be7a94367 golang.org/x/net v0.0.0-20200202094626-16171245cfb2 golang.org/x/oauth2 v0.0.0-20200107190931-bf48bf16ab8d golang.org/x/sync v0.0.0-20200317015054-43a5402ce75a diff --git a/go.sum b/go.sum index 1f48bf5126e..ef9976c3e29 100644 --- a/go.sum +++ b/go.sum @@ -228,6 +228,8 @@ github.com/elastic/elastic-agent-client/v7 v7.0.0-20200601155656-d6a9eb4f6d07 h1 github.com/elastic/elastic-agent-client/v7 v7.0.0-20200601155656-d6a9eb4f6d07/go.mod h1:uh/Gj9a0XEbYoM4NYz4LvaBVARz3QXLmlNjsrKY9fTc= github.com/elastic/fsevents v0.0.0-20181029231046-e1d381a4d270 h1:cWPqxlPtir4RoQVCpGSRXmLqjEHpJKbR60rxh1nQZY4= github.com/elastic/fsevents v0.0.0-20181029231046-e1d381a4d270/go.mod h1:Msl1pdboCbArMF/nSCDUXgQuWTeoMmE/z8607X+k7ng= +github.com/elastic/go-concert v0.0.2 h1:hJb9h99LS/lyjf7pE1wQ+eiNw+0CXVLCJR42yx+AvOQ= +github.com/elastic/go-concert v0.0.2/go.mod h1:9MtFarjXroUgmm0m6HY3NSe1XiKhdktiNRRj9hWvIaM= github.com/elastic/go-libaudit/v2 v2.0.0-20200515221334-92371bef3fb8 h1:Jcnojiuok7Ea5hitJK9VWmBigganE2MMETOH0VZasEA= github.com/elastic/go-libaudit/v2 v2.0.0-20200515221334-92371bef3fb8/go.mod h1:j2CZcVcluWDGhQTnq1SOPy1NKEIa74FtQ39Nnz87Jxk= github.com/elastic/go-licenser v0.3.1 h1:RmRukU/JUmts+rpexAw0Fvt2ly7VVu6mw8z4HrEzObU= @@ -652,12 +654,16 @@ github.com/tsg/go-daemon v0.0.0-20200207173439-e704b93fd89b/go.mod h1:jAqhj/JBVC github.com/tsg/gopacket v0.0.0-20200626092518-2ab8e397a786 h1:B/IVHYiI0d04dudYw+CvCAGqSMq8d0yWy56eD6p85BQ= github.com/tsg/gopacket v0.0.0-20200626092518-2ab8e397a786/go.mod h1:RIkfovP3Y7my19aXEjjbNd9E5TlHozzAyt7B8AaEcwg= github.com/urfave/cli v0.0.0-20171014202726-7bc6a0acffa5/go.mod h1:70zkFmudgCuE/ngEzBv17Jvp/497gISqfk5gWijbERA= +github.com/urso/diag v0.0.0-20200210123136-21b3cc8eb797 h1:OHNw/6pXODJAB32NujjdQO/KIYQ3KAbHQfCzH81XdCs= +github.com/urso/diag v0.0.0-20200210123136-21b3cc8eb797/go.mod h1:pNWFTeQ+V1OYT/TzWpnWb6eQBdoXpdx+H+lrH97/Oyo= github.com/urso/go-bin v0.0.0-20180220135811-781c575c9f0e h1:NiofbjIUI5gR+ybDsGSVH1fWyjSeDYiYVJHT1+kcsak= github.com/urso/go-bin v0.0.0-20180220135811-781c575c9f0e/go.mod h1:6GfHrdWBQYjFRIznu7XuQH4lYB2w8nO4bnImVKkzPOM= github.com/urso/magetools v0.0.0-20190919040553-290c89e0c230 h1:Ft1EJ6JL0F/RV6o2qJ1Be+wYxjYUSfRA3srfHgSgojc= github.com/urso/magetools v0.0.0-20190919040553-290c89e0c230/go.mod h1:DFxTNgS/ExCGmmjVjSOgS2WjtfjKXgCyDzAFgbtovSA= github.com/urso/qcgen v0.0.0-20180131103024-0b059e7db4f4 h1:hhA8EBThzz9PztawVTycKvfETVuBqxAQ5keFlAVtbAw= github.com/urso/qcgen v0.0.0-20180131103024-0b059e7db4f4/go.mod h1:RspW+E2Yb7Fs7HclB2tiDaiu6Rp41BiIG4Wo1YaoXGc= +github.com/urso/sderr v0.0.0-20200210124243-c2a16f3d43ec h1:HkZIDJrMKZHPsYhmH2XjTTSk1pbMCFfpxSnyzZUFm+k= +github.com/urso/sderr v0.0.0-20200210124243-c2a16f3d43ec/go.mod h1:Wp40HwmjM59FkDIVFfcCb9LzBbnc0XAMp8++hJuWvSU= github.com/vbatts/tar-split v0.11.1/go.mod h1:LEuURwDEiWjRjwu46yU3KVGuUdVv/dcnpcEPSzR8z6g= github.com/vmware/govmomi v0.0.0-20170802214208-2cad15190b41 h1:NeNpIvfvaFOh0BH7nMEljE5Rk/VJlxhm58M41SeOD20= github.com/vmware/govmomi v0.0.0-20170802214208-2cad15190b41/go.mod h1:URlwyTFZX72RmxtxuaFL2Uj3fD1JTvZdx59bHWk6aFU= @@ -697,6 +703,7 @@ go.opencensus.io v0.22.2 h1:75k/FF0Q2YM8QYo07VPddOLBslDt1MZOdEslOHvmzAs= go.opencensus.io v0.22.2/go.mod h1:yxeiOL68Rb0Xd1ddK5vPZ/oVn4vY4Ynel7k9FzqtOIw= go.uber.org/atomic v1.5.0 h1:OI5t8sDa1Or+q8AeE+yKeB/SDYioSHAgcVljj9JIETY= go.uber.org/atomic v1.5.0/go.mod h1:sABNBOSYdrvTF6hTgEIbc7YasKWGhgEQZyfxyTvoXHQ= +go.uber.org/goleak v1.0.0/go.mod h1:8a7PlsEVH3e/a/GLqe5IIrQx6GzcnRmZEufDUTk4A7A= go.uber.org/multierr v1.3.0 h1:sFPn2GLc3poCkfrpIXGhBD2X0CMIo4Q/zSULXrj/+uc= go.uber.org/multierr v1.3.0/go.mod h1:VgVr7evmIr6uPjLBxg28wmKNXyqE9akIJ5XnfpiKl+4= go.uber.org/tools v0.0.0-20190618225709-2cfd321de3ee h1:0mgffUl7nfd+FpvXMVz4IDEaUSmT1ysygQC7qYo7sG4= @@ -733,6 +740,8 @@ golang.org/x/lint v0.0.0-20190909230951-414d861bb4ac/go.mod h1:6SW0HCj/g11FgYtHl golang.org/x/lint v0.0.0-20190930215403-16217165b5de/go.mod h1:6SW0HCj/g11FgYtHlgUYUwCkIfeOF89ocIRzGO/8vkc= golang.org/x/lint v0.0.0-20191125180803-fdd1cda4f05f h1:J5lckAjkw6qYlOZNj90mLYNTEKDvWeuc1yieZ8qUzUE= golang.org/x/lint v0.0.0-20191125180803-fdd1cda4f05f/go.mod h1:5qLYkcX4OjUUV8bRuDixDT3tpyyb+LUpUlRWLxfhWrs= +golang.org/x/lint v0.0.0-20200130185559-910be7a94367 h1:0IiAsCRByjO2QjX7ZPkw5oU9x+n1YqRL802rjC0c3Aw= +golang.org/x/lint v0.0.0-20200130185559-910be7a94367/go.mod h1:3xt1FjdF8hUf6vQPIChWIBhFzV8gjjsPE/fR3IyQdNY= golang.org/x/mobile v0.0.0-20190312151609-d3739f865fa6/go.mod h1:z+o9i4GpDbdi3rU15maQ/Ox0txvL9dWGYEHz965HBQE= golang.org/x/mobile v0.0.0-20190719004257-d2bd2a29d028/go.mod h1:E/iHnbuqvinMTCcRqshq8CkpyQDoeVncDDYHnLhea+o= golang.org/x/mod v0.0.0-20190513183733-4bf6d317e70e/go.mod h1:mXi4GBBbnImb6dmsKGUJ2LatrhH/nqhxcFungHvyanc= diff --git a/libbeat/statestore/backend/backend.go b/libbeat/statestore/backend/backend.go new file mode 100644 index 00000000000..c40d8515977 --- /dev/null +++ b/libbeat/statestore/backend/backend.go @@ -0,0 +1,71 @@ +// Licensed to Elasticsearch B.V. under one or more contributor +// license agreements. See the NOTICE file distributed with +// this work for additional information regarding copyright +// ownership. Elasticsearch B.V. licenses this file to you 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. + +package backend + +// Registry provides access to stores managed by the backend storage. +type Registry interface { + // Access opens a store. The store will be closed by the frontend, once all + // accessed stores have been closed. + // + // The Store instance returned must be threadsafe. + Access(name string) (Store, error) + + // Close is called on shutdown after all stores have been closed. + // An implementation of Registry is not required to check for the stores to be closed. + Close() error +} + +// ValueDecoder is used to decode values into go structs or maps within a transaction. +// A ValueDecoder is supposed to be invalidated by beats after the loop operations has returned. +type ValueDecoder interface { + Decode(to interface{}) error +} + +// Store provides access to key value pairs. +type Store interface { + // Close should close the store and release all used resources. + Close() error + + // Has checks if the key exists. No error must be returned if the key does + // not exists, but the bool return must be false. + // An error return value must indicate internal errors only. The store is + // assumed to be in a 'bad' but recoverable state if 'Has' fails. + Has(key string) (bool, error) + + // Get decodes the value for the given key into value. + // Besides internal implementation specific errors an error is assumed + // to be returned if the key does not exist or the type of the value + // passed is incompatible to the actual value in the store (decoding error). + Get(key string, value interface{}) error + + // Set inserts or overwrites a key pair in the store. + // The `value` parameters can be assumed to be a struct or a map. Besides + // internal implementation specific errors, an error should be returned if + // the value given can not be encoded. + Set(key string, value interface{}) error + + // Remove removes and entry from the store. + Remove(string) error + + // Each loops over all key value pairs in the store calling fn for each pair. + // The ValueDecoder is used by fn to optionally decode the value into a + // custom struct or map. The decoder must be executable multiple times, but + // is assumed to be invalidated once fn returns + // The loop shall return if fn returns an error or false. + Each(fn func(string, ValueDecoder) (bool, error)) error +} diff --git a/libbeat/statestore/error.go b/libbeat/statestore/error.go new file mode 100644 index 00000000000..eac8bc83f38 --- /dev/null +++ b/libbeat/statestore/error.go @@ -0,0 +1,91 @@ +// Licensed to Elasticsearch B.V. under one or more contributor +// license agreements. See the NOTICE file distributed with +// this work for additional information regarding copyright +// ownership. Elasticsearch B.V. licenses this file to you 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. + +package statestore + +import ( + "errors" + "fmt" +) + +// ErrorAccess indicates that an error occured when trying to open a Store. +type ErrorAccess struct { + name string + cause error +} + +// Store reports the name of the store that could not been accessed. +func (e *ErrorAccess) Store() string { return e.name } + +// Unwrap returns the cause for the error or nil if the cause is unknown or has +// not been reported by the backend +func (e *ErrorAccess) Unwrap() error { return e.cause } + +// Error creates a descriptive error string. +func (e *ErrorAccess) Error() string { + if e.cause == nil { + return fmt.Sprintf("failed to open store '%v'", e.name) + } + return fmt.Sprintf("failed to open store '%v': %v", e.name, e.cause) +} + +// ErrorClosed indicates that the operation failed because the store has already been closed. +type ErrorClosed struct { + name string + operation string +} + +// Store reports the name of the store that has been closed. +func (e *ErrorClosed) Store() string { return e.name } + +// Operation returns a 'readable' name for the operation that failed to access the closed store. +func (e *ErrorClosed) Operation() string { return e.operation } + +// Error creates a descriptive error string. +func (e *ErrorClosed) Error() string { + return fmt.Sprintf("can not executed %v operation on closed store '%v'", e.operation, e.name) +} + +// ErrorOperation is returned when a generic store operation failed. +type ErrorOperation struct { + name string + operation string + cause error +} + +// Store reports the name of the store. +func (e *ErrorOperation) Store() string { return e.name } + +// Operation returns a 'readable' name for the operation that failed. +func (e *ErrorOperation) Operation() string { return e.operation } + +// Unwrap returns the cause of the failure. +func (e *ErrorOperation) Unwrap() error { return e.cause } + +// Error creates a descriptive error string. +func (e *ErrorOperation) Error() string { + return fmt.Sprintf("failed in %v operation on store '%v': %v", e.operation, e.name, e.cause) +} + +// IsClosed returns true if the cause for an Error is ErrorClosed. +func IsClosed(err error) bool { + var tmp *ErrorClosed + if errors.As(err, &tmp) { + return true + } + return false +} diff --git a/libbeat/statestore/registry.go b/libbeat/statestore/registry.go new file mode 100644 index 00000000000..aca20c7d91e --- /dev/null +++ b/libbeat/statestore/registry.go @@ -0,0 +1,87 @@ +// Licensed to Elasticsearch B.V. under one or more contributor +// license agreements. See the NOTICE file distributed with +// this work for additional information regarding copyright +// ownership. Elasticsearch B.V. licenses this file to you 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. + +package statestore + +import ( + "sync" + + "github.com/elastic/beats/v7/libbeat/statestore/backend" +) + +// Registry manages multiple key-value stores. +// When working with a registry, one must access a store. Depending on backend +// a store can be an index, a table, or a directory. All access to a store is +// handled by transaction. +type Registry struct { + backend backend.Registry + + mu sync.Mutex + active map[string]*sharedStore // active/open stores + wg sync.WaitGroup +} + +// ValueDecoder is used to decode retrieved from an actual store. A +// ValueDecoder instance is valid for the lifetime of the transaction only. +type ValueDecoder = backend.ValueDecoder + +// NewRegistry creates a new Registry with a configured backend. +func NewRegistry(backend backend.Registry) *Registry { + return &Registry{ + backend: backend, + active: map[string]*sharedStore{}, + } +} + +// Close closes the backend storage. Close blocks until all stores in use are closed. +func (r *Registry) Close() error { + r.wg.Wait() // wait for all stores being closed + return r.backend.Close() +} + +// Get opens a shared store. A store is closed and released only after all it's +// users have closed the store. +func (r *Registry) Get(name string) (*Store, error) { + r.mu.Lock() + defer r.mu.Unlock() + + shared := r.active[name] + if shared == nil { + backend, err := r.backend.Access(name) + if err != nil { + return nil, &ErrorAccess{name: name, cause: err} + } + + shared = newSharedStore(r, name, backend) + defer shared.Release() + + r.active[name] = shared + r.wg.Add(1) + } + + return newStore(shared), nil +} + +func (r *Registry) unregisterStore(s *sharedStore) { + _, exists := r.active[s.name] + if !exists { + panic("removing an unknown store") + } + + delete(r.active, s.name) + r.wg.Done() +} diff --git a/libbeat/statestore/store.go b/libbeat/statestore/store.go new file mode 100644 index 00000000000..a776efa8f7b --- /dev/null +++ b/libbeat/statestore/store.go @@ -0,0 +1,176 @@ +// Licensed to Elasticsearch B.V. under one or more contributor +// license agreements. See the NOTICE file distributed with +// this work for additional information regarding copyright +// ownership. Elasticsearch B.V. licenses this file to you 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. + +package statestore + +import ( + "github.com/elastic/beats/v7/libbeat/statestore/backend" + "github.com/elastic/go-concert/atomic" + "github.com/elastic/go-concert/unison" +) + +type sharedStore struct { + reg *Registry + refCount atomic.Int + + name string + backend backend.Store +} + +// Store instance. The backend is shared between multiple instances of this store. +// The backend will be closed only after the last instance have been closed. +// No transaction can be created once the store instance has been closed. +// A Store is not thread-safe. Each go-routine accessing a store should create +// an instance using `Registry.Get`. +type Store struct { + shared *sharedStore + // wait group to ensure active operations can finish, but not started anymore after the store has been closed. + active unison.SafeWaitGroup +} + +func newSharedStore(reg *Registry, name string, backend backend.Store) *sharedStore { + return &sharedStore{ + reg: reg, + refCount: atomic.MakeInt(1), + name: name, + backend: backend, + } +} + +func newStore(shared *sharedStore) *Store { + shared.Retain() + return &Store{ + shared: shared, + } +} + +// Close deactivates the current store. No new transacation can be generated. +// Already active transaction will continue to function until Closed. +// The backing store will be closed once all stores and active transactions have been closed. +func (s *Store) Close() error { + if err := s.active.Add(1); err != nil { + return &ErrorClosed{operation: "store/close", name: s.shared.name} + } + s.active.Close() + s.active.Done() + + s.active.Wait() + return s.shared.Release() +} + +// Has checks if the given key exists. +// Has returns an error if the store has already been closed or the storage backend returns an error. +func (s *Store) Has(key string) (bool, error) { + const operation = "store/has" + if err := s.active.Add(1); err != nil { + return false, &ErrorClosed{operation: operation, name: s.shared.name} + } + defer s.active.Done() + + has, err := s.shared.backend.Has((key)) + if err != nil { + return false, &ErrorOperation{name: s.shared.name, operation: operation, cause: err} + } + return has, nil +} + +// Get unpacks the value for a given key into "into". +// Get returns an error if the store has already been closed, the key does not +// exist, or the storage backend returns an error. +func (s *Store) Get(key string, into interface{}) error { + const operation = "store/get" + if err := s.active.Add(1); err != nil { + return &ErrorClosed{operation: operation, name: s.shared.name} + } + defer s.active.Done() + + err := s.shared.backend.Get(key, into) + if err != nil { + return &ErrorOperation{name: s.shared.name, operation: operation, cause: err} + } + return nil +} + +// Set inserts or overwrite a key value pair. +// Set returns an error if the store has been closed, the value can not be +// encoded by the store, or the storage backend did failed. +func (s *Store) Set(key string, from interface{}) error { + const operation = "store/get" + if err := s.active.Add(1); err != nil { + return &ErrorClosed{operation: operation, name: s.shared.name} + } + defer s.active.Done() + + if err := s.shared.backend.Set((key), from); err != nil { + return &ErrorOperation{name: s.shared.name, operation: operation, cause: err} + } + return nil +} + +// Remove removes a key value pair from the store. Remove does not error if the +// key is unknown to the store. +// An error is returned if the store has already been closed or the operation +// itself fails in the storage backend. +func (s *Store) Remove(key string) error { + const operation = "store/remove" + if err := s.active.Add(1); err != nil { + return &ErrorClosed{operation: operation, name: s.shared.name} + } + defer s.active.Done() + + if err := s.shared.backend.Remove((key)); err != nil { + return &ErrorOperation{name: s.shared.name, operation: operation, cause: err} + } + return nil +} + +// Each iterates over all key-value pairs in the store. +// The iteration stops if fn returns false or an error value != nil. +// If the store has been closed already an error is returned. +func (s *Store) Each(fn func(string, ValueDecoder) (bool, error)) error { + if err := s.active.Add(1); err != nil { + return &ErrorClosed{operation: "store/each", name: s.shared.name} + } + defer s.active.Done() + + return s.shared.backend.Each(fn) +} + +func (s *sharedStore) Retain() { + s.refCount.Inc() +} + +func (s *sharedStore) Release() error { + if s.refCount.Dec() == 0 && s.tryUnregister() { + return s.backend.Close() + } + return nil +} + +// tryUnregister removed the store from the registry. tryUnregister returns false +// if the store has been retained in the meantime. True is returned if the store +// can be closed for sure. +func (s *sharedStore) tryUnregister() bool { + s.reg.mu.Lock() + defer s.reg.mu.Unlock() + if s.refCount.Load() > 0 { + return false + } + + s.reg.unregisterStore(s) + return true +} diff --git a/vendor/modules.txt b/vendor/modules.txt deleted file mode 100644 index 7ee98f1384e..00000000000 --- a/vendor/modules.txt +++ /dev/null @@ -1,1457 +0,0 @@ -# 4d63.com/embedfiles v0.0.0-20190311033909-995e0740726f -4d63.com/embedfiles -# 4d63.com/tz v1.1.1-0.20191124060701-6d37baae851b -4d63.com/tz -# cloud.google.com/go v0.51.0 -cloud.google.com/go -cloud.google.com/go/compute/metadata -cloud.google.com/go/functions/metadata -cloud.google.com/go/iam -cloud.google.com/go/internal -cloud.google.com/go/internal/fields -cloud.google.com/go/internal/optional -cloud.google.com/go/internal/trace -cloud.google.com/go/internal/version -cloud.google.com/go/monitoring/apiv3 -# cloud.google.com/go/datastore v1.0.0 -cloud.google.com/go/datastore -cloud.google.com/go/datastore/internal/gaepb -# cloud.google.com/go/pubsub v1.0.1 -cloud.google.com/go/pubsub -cloud.google.com/go/pubsub/apiv1 -cloud.google.com/go/pubsub/internal/distribution -# cloud.google.com/go/storage v1.0.0 -cloud.google.com/go/storage -# code.cloudfoundry.org/go-diodes v0.0.0-20190809170250-f77fb823c7ee -code.cloudfoundry.org/go-diodes -# code.cloudfoundry.org/go-loggregator v7.4.0+incompatible -code.cloudfoundry.org/go-loggregator -code.cloudfoundry.org/go-loggregator/conversion -code.cloudfoundry.org/go-loggregator/rpc/loggregator_v2 -# code.cloudfoundry.org/gofileutils v0.0.0-20170111115228-4d0c80011a0f -code.cloudfoundry.org/gofileutils/fileutils -# code.cloudfoundry.org/rfc5424 v0.0.0-20180905210152-236a6d29298a -code.cloudfoundry.org/rfc5424 -# github.com/Azure/azure-amqp-common-go/v3 v3.0.0 -github.com/Azure/azure-amqp-common-go/v3 -github.com/Azure/azure-amqp-common-go/v3/aad -github.com/Azure/azure-amqp-common-go/v3/auth -github.com/Azure/azure-amqp-common-go/v3/cbs -github.com/Azure/azure-amqp-common-go/v3/conn -github.com/Azure/azure-amqp-common-go/v3/internal -github.com/Azure/azure-amqp-common-go/v3/internal/tracing -github.com/Azure/azure-amqp-common-go/v3/rpc -github.com/Azure/azure-amqp-common-go/v3/sas -github.com/Azure/azure-amqp-common-go/v3/uuid -# github.com/Azure/azure-event-hubs-go/v3 v3.1.2 -github.com/Azure/azure-event-hubs-go/v3 -github.com/Azure/azure-event-hubs-go/v3/atom -github.com/Azure/azure-event-hubs-go/v3/eph -github.com/Azure/azure-event-hubs-go/v3/persist -github.com/Azure/azure-event-hubs-go/v3/storage -# github.com/Azure/azure-pipeline-go v0.2.1 -github.com/Azure/azure-pipeline-go/pipeline -# github.com/Azure/azure-sdk-for-go v37.1.0+incompatible -github.com/Azure/azure-sdk-for-go/services/eventhub/mgmt/2017-04-01/eventhub -github.com/Azure/azure-sdk-for-go/services/preview/monitor/mgmt/2019-06-01/insights -github.com/Azure/azure-sdk-for-go/services/resources/mgmt/2019-03-01/resources -github.com/Azure/azure-sdk-for-go/services/storage/mgmt/2017-10-01/storage -github.com/Azure/azure-sdk-for-go/version -# github.com/Azure/azure-storage-blob-go v0.8.0 -github.com/Azure/azure-storage-blob-go/azblob -# github.com/Azure/go-amqp v0.12.6 -github.com/Azure/go-amqp -github.com/Azure/go-amqp/internal/testconn -# github.com/Azure/go-ansiterm v0.0.0-20170929234023-d6e3b3328b78 -github.com/Azure/go-ansiterm -github.com/Azure/go-ansiterm/winterm -# github.com/Azure/go-autorest/autorest v0.9.4 -github.com/Azure/go-autorest/autorest -github.com/Azure/go-autorest/autorest/azure -# github.com/Azure/go-autorest/autorest/adal v0.8.1 -github.com/Azure/go-autorest/autorest/adal -# github.com/Azure/go-autorest/autorest/azure/auth v0.4.2 -github.com/Azure/go-autorest/autorest/azure/auth -# github.com/Azure/go-autorest/autorest/azure/cli v0.3.1 -github.com/Azure/go-autorest/autorest/azure/cli -# github.com/Azure/go-autorest/autorest/date v0.2.0 -github.com/Azure/go-autorest/autorest/date -# github.com/Azure/go-autorest/autorest/to v0.3.0 -github.com/Azure/go-autorest/autorest/to -# github.com/Azure/go-autorest/autorest/validation v0.2.0 -github.com/Azure/go-autorest/autorest/validation -# github.com/Azure/go-autorest/logger v0.1.0 -github.com/Azure/go-autorest/logger -# github.com/Azure/go-autorest/tracing v0.5.0 -github.com/Azure/go-autorest/tracing -# github.com/BurntSushi/toml v0.3.1 -github.com/BurntSushi/toml -# github.com/Masterminds/semver v1.4.2 -github.com/Masterminds/semver -# github.com/Microsoft/go-winio v0.4.15-0.20190919025122-fc70bd9a86b5 -github.com/Microsoft/go-winio -github.com/Microsoft/go-winio/pkg/guid -# github.com/Microsoft/hcsshim v0.8.7 -github.com/Microsoft/hcsshim/osversion -# github.com/Shopify/sarama v0.0.0-00010101000000-000000000000 => github.com/elastic/sarama v1.24.1-elastic.0.20200519143807-cbc80333a91e -github.com/Shopify/sarama -# github.com/StackExchange/wmi v0.0.0-20170221213301-9f32b5905fd6 -github.com/StackExchange/wmi -# github.com/aerospike/aerospike-client-go v1.27.1-0.20170612174108-0f3b54da6bdc -github.com/aerospike/aerospike-client-go -github.com/aerospike/aerospike-client-go/internal/lua -github.com/aerospike/aerospike-client-go/internal/lua/resources -github.com/aerospike/aerospike-client-go/logger -github.com/aerospike/aerospike-client-go/pkg/bcrypt -github.com/aerospike/aerospike-client-go/pkg/ripemd160 -github.com/aerospike/aerospike-client-go/types -github.com/aerospike/aerospike-client-go/types/atomic -github.com/aerospike/aerospike-client-go/types/particle_type -github.com/aerospike/aerospike-client-go/types/rand -github.com/aerospike/aerospike-client-go/utils/buffer -# github.com/akavel/rsrc v0.8.0 -github.com/akavel/rsrc/binutil -github.com/akavel/rsrc/coff -github.com/akavel/rsrc/ico -# github.com/andrewkroh/sys v0.0.0-20151128191922-287798fe3e43 -github.com/andrewkroh/sys/windows/svc/eventlog -# github.com/antlr/antlr4 v0.0.0-20200225173536-225249fdaef5 -github.com/antlr/antlr4/runtime/Go/antlr -# github.com/armon/go-radix v1.0.0 -github.com/armon/go-radix -# github.com/armon/go-socks5 v0.0.0-20160902184237-e75332964ef5 -github.com/armon/go-socks5 -# github.com/aws/aws-lambda-go v1.6.0 -github.com/aws/aws-lambda-go/events -github.com/aws/aws-lambda-go/lambda -github.com/aws/aws-lambda-go/lambda/messages -github.com/aws/aws-lambda-go/lambdacontext -# github.com/aws/aws-sdk-go-v2 v0.9.0 -github.com/aws/aws-sdk-go-v2/aws -github.com/aws/aws-sdk-go-v2/aws/arn -github.com/aws/aws-sdk-go-v2/aws/awserr -github.com/aws/aws-sdk-go-v2/aws/defaults -github.com/aws/aws-sdk-go-v2/aws/ec2metadata -github.com/aws/aws-sdk-go-v2/aws/ec2rolecreds -github.com/aws/aws-sdk-go-v2/aws/endpointcreds -github.com/aws/aws-sdk-go-v2/aws/endpoints -github.com/aws/aws-sdk-go-v2/aws/external -github.com/aws/aws-sdk-go-v2/aws/signer/v4 -github.com/aws/aws-sdk-go-v2/aws/stscreds -github.com/aws/aws-sdk-go-v2/internal/awsutil -github.com/aws/aws-sdk-go-v2/internal/ini -github.com/aws/aws-sdk-go-v2/internal/sdk -github.com/aws/aws-sdk-go-v2/private/protocol -github.com/aws/aws-sdk-go-v2/private/protocol/ec2query -github.com/aws/aws-sdk-go-v2/private/protocol/json/jsonutil -github.com/aws/aws-sdk-go-v2/private/protocol/jsonrpc -github.com/aws/aws-sdk-go-v2/private/protocol/query -github.com/aws/aws-sdk-go-v2/private/protocol/query/queryutil -github.com/aws/aws-sdk-go-v2/private/protocol/rest -github.com/aws/aws-sdk-go-v2/private/protocol/restxml -github.com/aws/aws-sdk-go-v2/private/protocol/xml -github.com/aws/aws-sdk-go-v2/private/protocol/xml/xmlutil -github.com/aws/aws-sdk-go-v2/service/cloudformation -github.com/aws/aws-sdk-go-v2/service/cloudformation/cloudformationiface -github.com/aws/aws-sdk-go-v2/service/cloudwatch -github.com/aws/aws-sdk-go-v2/service/cloudwatch/cloudwatchiface -github.com/aws/aws-sdk-go-v2/service/ec2 -github.com/aws/aws-sdk-go-v2/service/ec2/ec2iface -github.com/aws/aws-sdk-go-v2/service/elasticloadbalancingv2 -github.com/aws/aws-sdk-go-v2/service/elasticloadbalancingv2/elasticloadbalancingv2iface -github.com/aws/aws-sdk-go-v2/service/iam -github.com/aws/aws-sdk-go-v2/service/rds -github.com/aws/aws-sdk-go-v2/service/rds/rdsiface -github.com/aws/aws-sdk-go-v2/service/resourcegroupstaggingapi -github.com/aws/aws-sdk-go-v2/service/resourcegroupstaggingapi/resourcegroupstaggingapiiface -github.com/aws/aws-sdk-go-v2/service/s3 -github.com/aws/aws-sdk-go-v2/service/s3/s3iface -github.com/aws/aws-sdk-go-v2/service/sqs -github.com/aws/aws-sdk-go-v2/service/sqs/sqsiface -github.com/aws/aws-sdk-go-v2/service/sts -# github.com/awslabs/goformation/v4 v4.1.0 -github.com/awslabs/goformation/v4/cloudformation -github.com/awslabs/goformation/v4/cloudformation/accessanalyzer -github.com/awslabs/goformation/v4/cloudformation/amazonmq -github.com/awslabs/goformation/v4/cloudformation/amplify -github.com/awslabs/goformation/v4/cloudformation/apigateway -github.com/awslabs/goformation/v4/cloudformation/apigatewayv2 -github.com/awslabs/goformation/v4/cloudformation/applicationautoscaling -github.com/awslabs/goformation/v4/cloudformation/appmesh -github.com/awslabs/goformation/v4/cloudformation/appstream -github.com/awslabs/goformation/v4/cloudformation/appsync -github.com/awslabs/goformation/v4/cloudformation/ask -github.com/awslabs/goformation/v4/cloudformation/athena -github.com/awslabs/goformation/v4/cloudformation/autoscaling -github.com/awslabs/goformation/v4/cloudformation/autoscalingplans -github.com/awslabs/goformation/v4/cloudformation/backup -github.com/awslabs/goformation/v4/cloudformation/batch -github.com/awslabs/goformation/v4/cloudformation/budgets -github.com/awslabs/goformation/v4/cloudformation/certificatemanager -github.com/awslabs/goformation/v4/cloudformation/cloud9 -github.com/awslabs/goformation/v4/cloudformation/cloudformation -github.com/awslabs/goformation/v4/cloudformation/cloudfront -github.com/awslabs/goformation/v4/cloudformation/cloudtrail -github.com/awslabs/goformation/v4/cloudformation/cloudwatch -github.com/awslabs/goformation/v4/cloudformation/codebuild -github.com/awslabs/goformation/v4/cloudformation/codecommit -github.com/awslabs/goformation/v4/cloudformation/codedeploy -github.com/awslabs/goformation/v4/cloudformation/codepipeline -github.com/awslabs/goformation/v4/cloudformation/codestar -github.com/awslabs/goformation/v4/cloudformation/codestarnotifications -github.com/awslabs/goformation/v4/cloudformation/cognito -github.com/awslabs/goformation/v4/cloudformation/config -github.com/awslabs/goformation/v4/cloudformation/datapipeline -github.com/awslabs/goformation/v4/cloudformation/dax -github.com/awslabs/goformation/v4/cloudformation/directoryservice -github.com/awslabs/goformation/v4/cloudformation/dlm -github.com/awslabs/goformation/v4/cloudformation/dms -github.com/awslabs/goformation/v4/cloudformation/docdb -github.com/awslabs/goformation/v4/cloudformation/dynamodb -github.com/awslabs/goformation/v4/cloudformation/ec2 -github.com/awslabs/goformation/v4/cloudformation/ecr -github.com/awslabs/goformation/v4/cloudformation/ecs -github.com/awslabs/goformation/v4/cloudformation/efs -github.com/awslabs/goformation/v4/cloudformation/eks -github.com/awslabs/goformation/v4/cloudformation/elasticache -github.com/awslabs/goformation/v4/cloudformation/elasticbeanstalk -github.com/awslabs/goformation/v4/cloudformation/elasticloadbalancing -github.com/awslabs/goformation/v4/cloudformation/elasticloadbalancingv2 -github.com/awslabs/goformation/v4/cloudformation/elasticsearch -github.com/awslabs/goformation/v4/cloudformation/emr -github.com/awslabs/goformation/v4/cloudformation/events -github.com/awslabs/goformation/v4/cloudformation/eventschemas -github.com/awslabs/goformation/v4/cloudformation/fsx -github.com/awslabs/goformation/v4/cloudformation/gamelift -github.com/awslabs/goformation/v4/cloudformation/glue -github.com/awslabs/goformation/v4/cloudformation/greengrass -github.com/awslabs/goformation/v4/cloudformation/guardduty -github.com/awslabs/goformation/v4/cloudformation/iam -github.com/awslabs/goformation/v4/cloudformation/inspector -github.com/awslabs/goformation/v4/cloudformation/iot -github.com/awslabs/goformation/v4/cloudformation/iot1click -github.com/awslabs/goformation/v4/cloudformation/iotanalytics -github.com/awslabs/goformation/v4/cloudformation/iotevents -github.com/awslabs/goformation/v4/cloudformation/iotthingsgraph -github.com/awslabs/goformation/v4/cloudformation/kinesis -github.com/awslabs/goformation/v4/cloudformation/kinesisanalytics -github.com/awslabs/goformation/v4/cloudformation/kinesisanalyticsv2 -github.com/awslabs/goformation/v4/cloudformation/kinesisfirehose -github.com/awslabs/goformation/v4/cloudformation/kms -github.com/awslabs/goformation/v4/cloudformation/lakeformation -github.com/awslabs/goformation/v4/cloudformation/lambda -github.com/awslabs/goformation/v4/cloudformation/logs -github.com/awslabs/goformation/v4/cloudformation/managedblockchain -github.com/awslabs/goformation/v4/cloudformation/mediaconvert -github.com/awslabs/goformation/v4/cloudformation/medialive -github.com/awslabs/goformation/v4/cloudformation/mediastore -github.com/awslabs/goformation/v4/cloudformation/msk -github.com/awslabs/goformation/v4/cloudformation/neptune -github.com/awslabs/goformation/v4/cloudformation/opsworks -github.com/awslabs/goformation/v4/cloudformation/opsworkscm -github.com/awslabs/goformation/v4/cloudformation/pinpoint -github.com/awslabs/goformation/v4/cloudformation/pinpointemail -github.com/awslabs/goformation/v4/cloudformation/policies -github.com/awslabs/goformation/v4/cloudformation/qldb -github.com/awslabs/goformation/v4/cloudformation/ram -github.com/awslabs/goformation/v4/cloudformation/rds -github.com/awslabs/goformation/v4/cloudformation/redshift -github.com/awslabs/goformation/v4/cloudformation/robomaker -github.com/awslabs/goformation/v4/cloudformation/route53 -github.com/awslabs/goformation/v4/cloudformation/route53resolver -github.com/awslabs/goformation/v4/cloudformation/s3 -github.com/awslabs/goformation/v4/cloudformation/sagemaker -github.com/awslabs/goformation/v4/cloudformation/sdb -github.com/awslabs/goformation/v4/cloudformation/secretsmanager -github.com/awslabs/goformation/v4/cloudformation/securityhub -github.com/awslabs/goformation/v4/cloudformation/serverless -github.com/awslabs/goformation/v4/cloudformation/servicecatalog -github.com/awslabs/goformation/v4/cloudformation/servicediscovery -github.com/awslabs/goformation/v4/cloudformation/ses -github.com/awslabs/goformation/v4/cloudformation/sns -github.com/awslabs/goformation/v4/cloudformation/sqs -github.com/awslabs/goformation/v4/cloudformation/ssm -github.com/awslabs/goformation/v4/cloudformation/stepfunctions -github.com/awslabs/goformation/v4/cloudformation/tags -github.com/awslabs/goformation/v4/cloudformation/transfer -github.com/awslabs/goformation/v4/cloudformation/utils -github.com/awslabs/goformation/v4/cloudformation/waf -github.com/awslabs/goformation/v4/cloudformation/wafregional -github.com/awslabs/goformation/v4/cloudformation/wafv2 -github.com/awslabs/goformation/v4/cloudformation/workspaces -github.com/awslabs/goformation/v4/intrinsics -# github.com/beorn7/perks v1.0.1 -github.com/beorn7/perks/quantile -# github.com/blakesmith/ar v0.0.0-20150311145944-8bd4349a67f2 -github.com/blakesmith/ar -# github.com/bradleyfalzon/ghinstallation v1.1.0 -github.com/bradleyfalzon/ghinstallation -# github.com/bsm/sarama-cluster v2.1.14-0.20180625083203-7e67d87a6b3f+incompatible -github.com/bsm/sarama-cluster -# github.com/cavaliercoder/go-rpm v0.0.0-20190131055624-7a9c54e3d83e -github.com/cavaliercoder/go-rpm -github.com/cavaliercoder/go-rpm/version -# github.com/cespare/xxhash/v2 v2.1.1 -github.com/cespare/xxhash/v2 -# github.com/cloudfoundry-community/go-cfclient v0.0.0-20190808214049-35bcce23fc5f -github.com/cloudfoundry-community/go-cfclient -# github.com/cloudfoundry/noaa v2.1.0+incompatible -github.com/cloudfoundry/noaa -github.com/cloudfoundry/noaa/consumer -github.com/cloudfoundry/noaa/consumer/internal -github.com/cloudfoundry/noaa/errors -# github.com/cloudfoundry/sonde-go v0.0.0-20171206171820-b33733203bb4 -github.com/cloudfoundry/sonde-go/events -# github.com/containerd/containerd v1.3.3 -github.com/containerd/containerd/errdefs -# github.com/containerd/continuity v0.0.0-20200107194136-26c1120b8d41 -github.com/containerd/continuity/fs -github.com/containerd/continuity/pathdriver -github.com/containerd/continuity/syscallx -github.com/containerd/continuity/sysx -# github.com/containerd/fifo v0.0.0-20190816180239-bda0ff6ed73c -github.com/containerd/fifo -# github.com/coreos/bbolt v1.3.1-coreos.6.0.20180318001526-af9db2027c98 -github.com/coreos/bbolt -# github.com/coreos/go-systemd/v22 v22.0.0 -github.com/coreos/go-systemd/v22/activation -github.com/coreos/go-systemd/v22/dbus -github.com/coreos/go-systemd/v22/internal/dlopen -github.com/coreos/go-systemd/v22/sdjournal -# github.com/coreos/pkg v0.0.0-20180108230652-97fdf19511ea -github.com/coreos/pkg/dlopen -# github.com/davecgh/go-spew v1.1.1 -github.com/davecgh/go-spew/spew -# github.com/davecgh/go-xdr v0.0.0-20161123171359-e6a2ba005892 -github.com/davecgh/go-xdr/xdr2 -# github.com/denisenkom/go-mssqldb v0.0.0-20200206145737-bbfc9a55622e -github.com/denisenkom/go-mssqldb -github.com/denisenkom/go-mssqldb/internal/cp -github.com/denisenkom/go-mssqldb/internal/decimal -github.com/denisenkom/go-mssqldb/internal/querytext -# github.com/devigned/tab v0.1.2-0.20190607222403-0c15cf42f9a2 -github.com/devigned/tab -# github.com/dgrijalva/jwt-go v3.2.1-0.20190620180102-5e25c22bd5d6+incompatible -github.com/dgrijalva/jwt-go -# github.com/digitalocean/go-libvirt v0.0.0-20180301200012-6075ea3c39a1 -github.com/digitalocean/go-libvirt -github.com/digitalocean/go-libvirt/internal/constants -github.com/digitalocean/go-libvirt/libvirttest -# github.com/dimchansky/utfbom v1.1.0 -github.com/dimchansky/utfbom -# github.com/dlclark/regexp2 v1.1.7-0.20171009020623-7632a260cbaf -github.com/dlclark/regexp2 -github.com/dlclark/regexp2/syntax -# github.com/docker/distribution v2.7.1+incompatible -github.com/docker/distribution/digestset -github.com/docker/distribution/reference -github.com/docker/distribution/registry/api/errcode -# github.com/docker/docker v1.4.2-0.20170802015333-8af4db6f002a => github.com/docker/engine v0.0.0-20191113042239-ea84732a7725 -github.com/docker/docker/api -github.com/docker/docker/api/types -github.com/docker/docker/api/types/backend -github.com/docker/docker/api/types/blkiodev -github.com/docker/docker/api/types/container -github.com/docker/docker/api/types/events -github.com/docker/docker/api/types/filters -github.com/docker/docker/api/types/image -github.com/docker/docker/api/types/mount -github.com/docker/docker/api/types/network -github.com/docker/docker/api/types/plugins/logdriver -github.com/docker/docker/api/types/registry -github.com/docker/docker/api/types/strslice -github.com/docker/docker/api/types/swarm -github.com/docker/docker/api/types/swarm/runtime -github.com/docker/docker/api/types/time -github.com/docker/docker/api/types/versions -github.com/docker/docker/api/types/volume -github.com/docker/docker/client -github.com/docker/docker/daemon/logger -github.com/docker/docker/errdefs -github.com/docker/docker/pkg/archive -github.com/docker/docker/pkg/fileutils -github.com/docker/docker/pkg/idtools -github.com/docker/docker/pkg/ioutils -github.com/docker/docker/pkg/jsonmessage -github.com/docker/docker/pkg/longpath -github.com/docker/docker/pkg/mount -github.com/docker/docker/pkg/plugingetter -github.com/docker/docker/pkg/plugins -github.com/docker/docker/pkg/plugins/transport -github.com/docker/docker/pkg/pools -github.com/docker/docker/pkg/progress -github.com/docker/docker/pkg/streamformatter -github.com/docker/docker/pkg/stringid -github.com/docker/docker/pkg/system -github.com/docker/docker/pkg/term -github.com/docker/docker/pkg/term/windows -# github.com/docker/go-connections v0.4.0 -github.com/docker/go-connections/nat -github.com/docker/go-connections/sockets -github.com/docker/go-connections/tlsconfig -# github.com/docker/go-metrics v0.0.1 -github.com/docker/go-metrics -# github.com/docker/go-plugins-helpers v0.0.0-20181025120712-1e6269c305b8 => github.com/elastic/go-plugins-helpers v0.0.0-20200207104224-bdf17607b79f -github.com/docker/go-plugins-helpers/sdk -# github.com/docker/go-units v0.4.0 -github.com/docker/go-units -# github.com/docker/spdystream v0.0.0-20160310174837-449fdfce4d96 -github.com/docker/spdystream -github.com/docker/spdystream/spdy -# github.com/dop251/goja v0.0.0-00010101000000-000000000000 => github.com/andrewkroh/goja v0.0.0-20190128172624-dd2ac4456e20 -github.com/dop251/goja -github.com/dop251/goja/ast -github.com/dop251/goja/file -github.com/dop251/goja/parser -github.com/dop251/goja/token -# github.com/dop251/goja_nodejs v0.0.0-20171011081505-adff31b136e6 -github.com/dop251/goja_nodejs/require -github.com/dop251/goja_nodejs/util -# github.com/dustin/go-humanize v0.0.0-20171111073723-bb3d318650d4 -github.com/dustin/go-humanize -# github.com/eapache/go-resiliency v1.2.0 -github.com/eapache/go-resiliency/breaker -# github.com/eapache/go-xerial-snappy v0.0.0-20180814174437-776d5712da21 -github.com/eapache/go-xerial-snappy -# github.com/eapache/queue v1.1.0 -github.com/eapache/queue -# github.com/eclipse/paho.mqtt.golang v1.2.1-0.20200121105743-0d940dd29fd2 -github.com/eclipse/paho.mqtt.golang -github.com/eclipse/paho.mqtt.golang/packets -# github.com/elastic/ecs v1.5.0 -github.com/elastic/ecs/code/go/ecs -# github.com/elastic/elastic-agent-client/v7 v7.0.0-20200601155656-d6a9eb4f6d07 -github.com/elastic/elastic-agent-client/v7/pkg/client -github.com/elastic/elastic-agent-client/v7/pkg/proto -github.com/elastic/elastic-agent-client/v7/pkg/utils -# github.com/elastic/go-concert v0.0.2 -github.com/elastic/go-concert -github.com/elastic/go-concert/atomic -github.com/elastic/go-concert/chorus -github.com/elastic/go-concert/unison -# github.com/elastic/go-libaudit/v2 v2.0.0-20200515221334-92371bef3fb8 -github.com/elastic/go-libaudit/v2 -github.com/elastic/go-libaudit/v2/aucoalesce -github.com/elastic/go-libaudit/v2/auparse -github.com/elastic/go-libaudit/v2/rule -github.com/elastic/go-libaudit/v2/rule/flags -github.com/elastic/go-libaudit/v2/sys -# github.com/elastic/go-licenser v0.2.1 -github.com/elastic/go-licenser -github.com/elastic/go-licenser/licensing -# github.com/elastic/go-lookslike v0.3.0 -github.com/elastic/go-lookslike -github.com/elastic/go-lookslike/internal/llreflect -github.com/elastic/go-lookslike/isdef -github.com/elastic/go-lookslike/llpath -github.com/elastic/go-lookslike/llresult -github.com/elastic/go-lookslike/testslike -github.com/elastic/go-lookslike/validator -# github.com/elastic/go-lumber v0.1.0 -github.com/elastic/go-lumber/client/v2 -github.com/elastic/go-lumber/lj -github.com/elastic/go-lumber/log -github.com/elastic/go-lumber/protocol/v2 -github.com/elastic/go-lumber/server/internal -github.com/elastic/go-lumber/server/v2 -# github.com/elastic/go-perf v0.0.0-20191212140718-9c656876f595 -github.com/elastic/go-perf -# github.com/elastic/go-seccomp-bpf v1.1.0 -github.com/elastic/go-seccomp-bpf -github.com/elastic/go-seccomp-bpf/arch -# github.com/elastic/go-structform v0.0.7 -github.com/elastic/go-structform -github.com/elastic/go-structform/cborl -github.com/elastic/go-structform/gotype -github.com/elastic/go-structform/internal/unsafe -github.com/elastic/go-structform/json -github.com/elastic/go-structform/ubjson -github.com/elastic/go-structform/visitors -# github.com/elastic/go-sysinfo v1.3.0 -github.com/elastic/go-sysinfo -github.com/elastic/go-sysinfo/internal/registry -github.com/elastic/go-sysinfo/providers/darwin -github.com/elastic/go-sysinfo/providers/linux -github.com/elastic/go-sysinfo/providers/shared -github.com/elastic/go-sysinfo/providers/windows -github.com/elastic/go-sysinfo/types -# github.com/elastic/go-txfile v0.0.7 -github.com/elastic/go-txfile -github.com/elastic/go-txfile/dev-tools/lib/mage/xbuild -github.com/elastic/go-txfile/internal/cleanup -github.com/elastic/go-txfile/internal/invariant -github.com/elastic/go-txfile/internal/iter -github.com/elastic/go-txfile/internal/strbld -github.com/elastic/go-txfile/internal/tracelog -github.com/elastic/go-txfile/internal/vfs -github.com/elastic/go-txfile/internal/vfs/osfs -github.com/elastic/go-txfile/internal/vfs/osfs/osfstest -github.com/elastic/go-txfile/pq -github.com/elastic/go-txfile/txerr -github.com/elastic/go-txfile/txfiletest -# github.com/elastic/go-ucfg v0.8.3 -github.com/elastic/go-ucfg -github.com/elastic/go-ucfg/cfgutil -github.com/elastic/go-ucfg/flag -github.com/elastic/go-ucfg/json -github.com/elastic/go-ucfg/parse -github.com/elastic/go-ucfg/yaml -# github.com/elastic/go-windows v1.0.1 -github.com/elastic/go-windows -# github.com/elastic/gosigar v0.10.5 -github.com/elastic/gosigar -github.com/elastic/gosigar/cgroup -github.com/elastic/gosigar/sys -github.com/elastic/gosigar/sys/linux -github.com/elastic/gosigar/sys/windows -# github.com/evanphx/json-patch v4.2.0+incompatible -github.com/evanphx/json-patch -# github.com/fatih/color v1.5.0 -github.com/fatih/color -# github.com/fsnotify/fsevents v0.0.0-00010101000000-000000000000 => github.com/elastic/fsevents v0.0.0-20181029231046-e1d381a4d270 -github.com/fsnotify/fsevents -# github.com/fsnotify/fsnotify v1.4.7 => github.com/adriansr/fsnotify v0.0.0-20180417234312-c9bbe1f46f1d -github.com/fsnotify/fsnotify -# github.com/garyburd/redigo v1.0.1-0.20160525165706-b8dc90050f24 -github.com/garyburd/redigo/internal -github.com/garyburd/redigo/redis -# github.com/go-ole/go-ole v1.2.5-0.20190920104607-14974a1cf647 -github.com/go-ole/go-ole -github.com/go-ole/go-ole/oleutil -# github.com/go-sourcemap/sourcemap v2.1.2+incompatible -github.com/go-sourcemap/sourcemap -github.com/go-sourcemap/sourcemap/internal/base64vlq -# github.com/go-sql-driver/mysql v1.4.1 -github.com/go-sql-driver/mysql -# github.com/gocarina/gocsv v0.0.0-20170324095351-ffef3ffc77be -github.com/gocarina/gocsv -# github.com/godbus/dbus v0.0.0-20190422162347-ade71ed3457e -github.com/godbus/dbus -# github.com/godbus/dbus/v5 v5.0.3 -github.com/godbus/dbus/v5 -# github.com/godror/godror v0.10.4 -github.com/godror/godror -# github.com/gofrs/flock v0.7.2-0.20190320160742-5135e617513b -github.com/gofrs/flock -# github.com/gofrs/uuid v3.3.0+incompatible -github.com/gofrs/uuid -# github.com/gogo/protobuf v1.3.1 -github.com/gogo/protobuf/gogoproto -github.com/gogo/protobuf/proto -github.com/gogo/protobuf/protoc-gen-gogo/descriptor -github.com/gogo/protobuf/sortkeys -github.com/gogo/protobuf/types -# github.com/golang-sql/civil v0.0.0-20190719163853-cb61b32ac6fe -github.com/golang-sql/civil -# github.com/golang/groupcache v0.0.0-20191227052852-215e87163ea7 -github.com/golang/groupcache/lru -# github.com/golang/protobuf v1.4.2 -github.com/golang/protobuf/descriptor -github.com/golang/protobuf/internal/gengogrpc -github.com/golang/protobuf/jsonpb -github.com/golang/protobuf/proto -github.com/golang/protobuf/protoc-gen-go -github.com/golang/protobuf/protoc-gen-go/descriptor -github.com/golang/protobuf/ptypes -github.com/golang/protobuf/ptypes/any -github.com/golang/protobuf/ptypes/duration -github.com/golang/protobuf/ptypes/empty -github.com/golang/protobuf/ptypes/struct -github.com/golang/protobuf/ptypes/timestamp -github.com/golang/protobuf/ptypes/wrappers -# github.com/golang/snappy v0.0.1 -github.com/golang/snappy -# github.com/google/flatbuffers v1.7.2-0.20170925184458-7a6b2bf521e9 -github.com/google/flatbuffers/go -# github.com/google/go-cmp v0.4.0 -github.com/google/go-cmp/cmp -github.com/google/go-cmp/cmp/internal/diff -github.com/google/go-cmp/cmp/internal/flags -github.com/google/go-cmp/cmp/internal/function -github.com/google/go-cmp/cmp/internal/value -# github.com/google/go-github/v28 v28.1.1 -github.com/google/go-github/v28/github -# github.com/google/go-github/v29 v29.0.2 -github.com/google/go-github/v29/github -# github.com/google/go-querystring v1.0.0 -github.com/google/go-querystring/query -# github.com/google/gofuzz v1.1.0 -github.com/google/gofuzz -# github.com/google/gopacket v1.1.18-0.20191009163724-0ad7f2610e34 => github.com/adriansr/gopacket v1.1.18-0.20200327165309-dd62abfa8a41 -github.com/google/gopacket -github.com/google/gopacket/afpacket -github.com/google/gopacket/layers -# github.com/google/uuid v1.1.2-0.20190416172445-c2e93f3ae59f -github.com/google/uuid -# github.com/googleapis/gax-go/v2 v2.0.5 -github.com/googleapis/gax-go/v2 -# github.com/googleapis/gnostic v0.3.1-0.20190624222214-25d8b0b66985 -github.com/googleapis/gnostic/OpenAPIv2 -github.com/googleapis/gnostic/compiler -github.com/googleapis/gnostic/extensions -# github.com/gorhill/cronexpr v0.0.0-20161205141322-d520615e531a -github.com/gorhill/cronexpr -# github.com/gorilla/websocket v1.4.1 -github.com/gorilla/websocket -# github.com/grpc-ecosystem/grpc-gateway v1.13.0 -github.com/grpc-ecosystem/grpc-gateway/internal -github.com/grpc-ecosystem/grpc-gateway/runtime -github.com/grpc-ecosystem/grpc-gateway/utilities -# github.com/h2non/filetype v1.0.12 -github.com/h2non/filetype -github.com/h2non/filetype/matchers -github.com/h2non/filetype/matchers/isobmff -github.com/h2non/filetype/types -# github.com/hashicorp/errwrap v1.0.0 -github.com/hashicorp/errwrap -# github.com/hashicorp/go-cleanhttp v0.5.1 -github.com/hashicorp/go-cleanhttp -# github.com/hashicorp/go-multierror v1.1.0 -github.com/hashicorp/go-multierror -# github.com/hashicorp/go-retryablehttp v0.6.6 -github.com/hashicorp/go-retryablehttp -# github.com/hashicorp/go-uuid v1.0.2 -github.com/hashicorp/go-uuid -# github.com/hashicorp/go-version v1.0.0 -github.com/hashicorp/go-version -# github.com/hashicorp/golang-lru v0.5.2-0.20190520140433-59383c442f7d -github.com/hashicorp/golang-lru -github.com/hashicorp/golang-lru/simplelru -# github.com/haya14busa/go-actions-toolkit v0.0.0-20200105081403-ca0307860f01 -github.com/haya14busa/go-actions-toolkit/core -# github.com/imdario/mergo v0.3.6 -github.com/imdario/mergo -# github.com/inconshreveable/mousetrap v1.0.0 -github.com/inconshreveable/mousetrap -# github.com/insomniacslk/dhcp v0.0.0-20180716145214-633285ba52b2 => github.com/elastic/dhcp v0.0.0-20200227161230-57ec251c7eb3 -github.com/insomniacslk/dhcp/dhcpv4 -github.com/insomniacslk/dhcp/iana -# github.com/jcmturner/gofork v1.0.0 -github.com/jcmturner/gofork/encoding/asn1 -github.com/jcmturner/gofork/x/crypto/pbkdf2 -# github.com/jmespath/go-jmespath v0.0.0-20180206201540-c2b33e8439af -github.com/jmespath/go-jmespath -# github.com/jmoiron/sqlx v1.2.1-0.20190826204134-d7d95172beb5 -github.com/jmoiron/sqlx -github.com/jmoiron/sqlx/reflectx -# github.com/joeshaw/multierror v0.0.0-20140124173710-69b34d4ec901 -github.com/joeshaw/multierror -# github.com/josephspurrier/goversioninfo v0.0.0-20190209210621-63e6d1acd3dd -github.com/josephspurrier/goversioninfo -# github.com/jpillora/backoff v1.0.0 -github.com/jpillora/backoff -# github.com/json-iterator/go v1.1.8 -github.com/json-iterator/go -# github.com/jstemmer/go-junit-report v0.9.1 -github.com/jstemmer/go-junit-report -github.com/jstemmer/go-junit-report/formatter -github.com/jstemmer/go-junit-report/parser -# github.com/klauspost/compress v1.9.8 -github.com/klauspost/compress/flate -github.com/klauspost/compress/fse -github.com/klauspost/compress/huff0 -github.com/klauspost/compress/snappy -github.com/klauspost/compress/zlib -github.com/klauspost/compress/zstd -github.com/klauspost/compress/zstd/internal/xxhash -# github.com/konsorten/go-windows-terminal-sequences v1.0.2 -github.com/konsorten/go-windows-terminal-sequences -# github.com/lib/pq v1.1.2-0.20190507191818-2ff3cb3adc01 -github.com/lib/pq -github.com/lib/pq/oid -github.com/lib/pq/scram -# github.com/magefile/mage v1.9.0 -github.com/magefile/mage -github.com/magefile/mage/internal -github.com/magefile/mage/mage -github.com/magefile/mage/mg -github.com/magefile/mage/parse -github.com/magefile/mage/sh -github.com/magefile/mage/target -# github.com/mailru/easyjson v0.7.1 -github.com/mailru/easyjson -github.com/mailru/easyjson/buffer -github.com/mailru/easyjson/jlexer -github.com/mailru/easyjson/jwriter -# github.com/mattn/go-colorable v0.0.8 -github.com/mattn/go-colorable -# github.com/mattn/go-ieproxy v0.0.0-20191113090002-7c0f6868bffe -github.com/mattn/go-ieproxy -# github.com/mattn/go-isatty v0.0.2 -github.com/mattn/go-isatty -# github.com/mattn/go-shellwords v1.0.7 -github.com/mattn/go-shellwords -# github.com/matttproud/golang_protobuf_extensions v1.0.2-0.20181231171920-c182affec369 -github.com/matttproud/golang_protobuf_extensions/pbutil -# github.com/miekg/dns v1.1.15 -github.com/miekg/dns -# github.com/mitchellh/go-homedir v1.1.0 -github.com/mitchellh/go-homedir -# github.com/mitchellh/gox v1.0.1 -github.com/mitchellh/gox -# github.com/mitchellh/hashstructure v0.0.0-20170116052023-ab25296c0f51 -github.com/mitchellh/hashstructure -# github.com/mitchellh/iochan v1.0.0 -github.com/mitchellh/iochan -# github.com/mitchellh/mapstructure v1.1.2 -github.com/mitchellh/mapstructure -# github.com/modern-go/concurrent v0.0.0-20180306012644-bacd9c7ef1dd -github.com/modern-go/concurrent -# github.com/modern-go/reflect2 v1.0.1 -github.com/modern-go/reflect2 -# github.com/morikuni/aec v1.0.0 -github.com/morikuni/aec -# github.com/oklog/ulid v1.3.1 -github.com/oklog/ulid -# github.com/opencontainers/go-digest v1.0.0-rc1.0.20190228220655-ac19fd6e7483 -github.com/opencontainers/go-digest -# github.com/opencontainers/image-spec v1.0.2-0.20190823105129-775207bd45b6 -github.com/opencontainers/image-spec/specs-go -github.com/opencontainers/image-spec/specs-go/v1 -# github.com/opencontainers/runc v1.0.0-rc9 -github.com/opencontainers/runc/libcontainer/system -github.com/opencontainers/runc/libcontainer/user -# github.com/pierrec/lz4 v2.4.1+incompatible -github.com/pierrec/lz4 -github.com/pierrec/lz4/internal/xxh32 -# github.com/pierrre/gotestcover v0.0.0-20160113212533-7b94f124d338 -github.com/pierrre/gotestcover -# github.com/pkg/errors v0.9.1 -github.com/pkg/errors -# github.com/pmezard/go-difflib v1.0.0 -github.com/pmezard/go-difflib/difflib -# github.com/prometheus/client_golang v1.1.1-0.20190913103102-20428fa0bffc -github.com/prometheus/client_golang/prometheus -github.com/prometheus/client_golang/prometheus/internal -github.com/prometheus/client_golang/prometheus/promhttp -# github.com/prometheus/client_model v0.0.0-20190812154241-14fe0d1b01d4 -github.com/prometheus/client_model/go -# github.com/prometheus/common v0.7.0 -github.com/prometheus/common/expfmt -github.com/prometheus/common/internal/bitbucket.org/ww/goautoneg -github.com/prometheus/common/model -# github.com/prometheus/procfs v0.0.11 -github.com/prometheus/procfs -github.com/prometheus/procfs/internal/fs -github.com/prometheus/procfs/internal/util -# github.com/prometheus/prometheus v2.5.0+incompatible -github.com/prometheus/prometheus/prompb -# github.com/rcrowley/go-metrics v0.0.0-20190826022208-cac0b30c2563 -github.com/rcrowley/go-metrics -# github.com/reviewdog/errorformat v0.0.0-20200109134752-8983be9bc7dd -github.com/reviewdog/errorformat -github.com/reviewdog/errorformat/fmts -# github.com/reviewdog/reviewdog v0.9.17 -github.com/reviewdog/reviewdog -github.com/reviewdog/reviewdog/cienv -github.com/reviewdog/reviewdog/cmd/reviewdog -github.com/reviewdog/reviewdog/commands -github.com/reviewdog/reviewdog/diff -github.com/reviewdog/reviewdog/doghouse -github.com/reviewdog/reviewdog/doghouse/client -github.com/reviewdog/reviewdog/doghouse/server -github.com/reviewdog/reviewdog/doghouse/server/storage -github.com/reviewdog/reviewdog/project -github.com/reviewdog/reviewdog/service/github -github.com/reviewdog/reviewdog/service/github/githubutils -github.com/reviewdog/reviewdog/service/gitlab -github.com/reviewdog/reviewdog/service/serviceutil -# github.com/samuel/go-parser v0.0.0-20130731160455-ca8abbf65d0e -github.com/samuel/go-parser/parser -# github.com/samuel/go-thrift v0.0.0-20140522043831-2187045faa54 -github.com/samuel/go-thrift/parser -# github.com/sanathkr/go-yaml v0.0.0-20170819195128-ed9d249f429b -github.com/sanathkr/go-yaml -# github.com/sanathkr/yaml v1.0.1-0.20170819201035-0056894fa522 -github.com/sanathkr/yaml -# github.com/santhosh-tekuri/jsonschema v1.2.4 -github.com/santhosh-tekuri/jsonschema -github.com/santhosh-tekuri/jsonschema/decoders -github.com/santhosh-tekuri/jsonschema/formats -github.com/santhosh-tekuri/jsonschema/loader -github.com/santhosh-tekuri/jsonschema/mediatypes -# github.com/shirou/gopsutil v2.19.11+incompatible -github.com/shirou/gopsutil/disk -github.com/shirou/gopsutil/internal/common -github.com/shirou/gopsutil/net -# github.com/sirupsen/logrus v1.4.2 -github.com/sirupsen/logrus -# github.com/spf13/cobra v0.0.3 -github.com/spf13/cobra -# github.com/spf13/pflag v1.0.5 -github.com/spf13/pflag -# github.com/stretchr/objx v0.2.0 -github.com/stretchr/objx -# github.com/stretchr/testify v1.5.1 -github.com/stretchr/testify/assert -github.com/stretchr/testify/mock -github.com/stretchr/testify/require -github.com/stretchr/testify/suite -# github.com/tsg/go-daemon v0.0.0-20200207173439-e704b93fd89b -github.com/tsg/go-daemon -# github.com/tsg/gopacket v0.0.0-20190320122513-dd3d0e41124a -github.com/tsg/gopacket -github.com/tsg/gopacket/afpacket -github.com/tsg/gopacket/layers -github.com/tsg/gopacket/pcap -# github.com/urso/diag v0.0.0-20200210123136-21b3cc8eb797 -github.com/urso/diag -github.com/urso/diag/ctxfmt -# github.com/urso/go-bin v0.0.0-20180220135811-781c575c9f0e -github.com/urso/go-bin -# github.com/urso/magetools v0.0.0-20200125210132-c2e338f92f3a -github.com/urso/magetools/clitool -github.com/urso/magetools/ctrl -github.com/urso/magetools/fs -github.com/urso/magetools/gotool -github.com/urso/magetools/mgenv -# github.com/urso/sderr v0.0.0-20200210124243-c2a16f3d43ec -github.com/urso/sderr -# github.com/vmware/govmomi v0.0.0-20170802214208-2cad15190b41 -github.com/vmware/govmomi -github.com/vmware/govmomi/find -github.com/vmware/govmomi/list -github.com/vmware/govmomi/nfc -github.com/vmware/govmomi/object -github.com/vmware/govmomi/property -github.com/vmware/govmomi/session -github.com/vmware/govmomi/simulator -github.com/vmware/govmomi/simulator/esx -github.com/vmware/govmomi/simulator/vpx -github.com/vmware/govmomi/task -github.com/vmware/govmomi/view -github.com/vmware/govmomi/vim25 -github.com/vmware/govmomi/vim25/debug -github.com/vmware/govmomi/vim25/methods -github.com/vmware/govmomi/vim25/mo -github.com/vmware/govmomi/vim25/progress -github.com/vmware/govmomi/vim25/soap -github.com/vmware/govmomi/vim25/types -github.com/vmware/govmomi/vim25/xml -# github.com/xanzy/go-gitlab v0.22.3 -github.com/xanzy/go-gitlab -# github.com/xdg/scram v0.0.0-20180814205039-7eeb5667e42c -github.com/xdg/scram -# github.com/xdg/stringprep v1.0.0 -github.com/xdg/stringprep -# github.com/yuin/gopher-lua v0.0.0-20170403160031-b402f3114ec7 -github.com/yuin/gopher-lua -github.com/yuin/gopher-lua/ast -github.com/yuin/gopher-lua/parse -github.com/yuin/gopher-lua/pm -# go.elastic.co/apm v1.7.2 -go.elastic.co/apm -go.elastic.co/apm/apmconfig -go.elastic.co/apm/apmtest -go.elastic.co/apm/internal/apmcontext -go.elastic.co/apm/internal/apmhostutil -go.elastic.co/apm/internal/apmhttputil -go.elastic.co/apm/internal/apmlog -go.elastic.co/apm/internal/apmschema -go.elastic.co/apm/internal/apmstrings -go.elastic.co/apm/internal/apmversion -go.elastic.co/apm/internal/configutil -go.elastic.co/apm/internal/iochan -go.elastic.co/apm/internal/pkgerrorsutil -go.elastic.co/apm/internal/ringbuffer -go.elastic.co/apm/internal/wildcard -go.elastic.co/apm/model -go.elastic.co/apm/stacktrace -go.elastic.co/apm/transport -go.elastic.co/apm/transport/transporttest -# go.elastic.co/apm/module/apmelasticsearch v1.7.2 -go.elastic.co/apm/module/apmelasticsearch -# go.elastic.co/apm/module/apmhttp v1.7.2 -go.elastic.co/apm/module/apmhttp -# go.elastic.co/ecszap v0.2.0 -go.elastic.co/ecszap -go.elastic.co/ecszap/internal -# go.elastic.co/fastjson v1.0.0 -go.elastic.co/fastjson -# go.opencensus.io v0.22.2 -go.opencensus.io -go.opencensus.io/internal -go.opencensus.io/internal/tagencoding -go.opencensus.io/metric/metricdata -go.opencensus.io/metric/metricproducer -go.opencensus.io/plugin/ocgrpc -go.opencensus.io/plugin/ochttp -go.opencensus.io/plugin/ochttp/propagation/b3 -go.opencensus.io/resource -go.opencensus.io/stats -go.opencensus.io/stats/internal -go.opencensus.io/stats/view -go.opencensus.io/tag -go.opencensus.io/trace -go.opencensus.io/trace/internal -go.opencensus.io/trace/propagation -go.opencensus.io/trace/tracestate -# go.uber.org/atomic v1.5.0 -go.uber.org/atomic -# go.uber.org/multierr v1.3.0 -go.uber.org/multierr -# go.uber.org/tools v0.0.0-20190618225709-2cfd321de3ee -go.uber.org/tools/update-license -# go.uber.org/zap v1.14.0 -go.uber.org/zap -go.uber.org/zap/buffer -go.uber.org/zap/internal/bufferpool -go.uber.org/zap/internal/color -go.uber.org/zap/internal/exit -go.uber.org/zap/zapcore -go.uber.org/zap/zaptest/observer -# golang.org/x/crypto v0.0.0-20200510223506-06a226fb4e37 -golang.org/x/crypto/blake2b -golang.org/x/crypto/blowfish -golang.org/x/crypto/cast5 -golang.org/x/crypto/chacha20 -golang.org/x/crypto/curve25519 -golang.org/x/crypto/ed25519 -golang.org/x/crypto/ed25519/internal/edwards25519 -golang.org/x/crypto/internal/subtle -golang.org/x/crypto/md4 -golang.org/x/crypto/openpgp -golang.org/x/crypto/openpgp/armor -golang.org/x/crypto/openpgp/elgamal -golang.org/x/crypto/openpgp/errors -golang.org/x/crypto/openpgp/packet -golang.org/x/crypto/openpgp/s2k -golang.org/x/crypto/pbkdf2 -golang.org/x/crypto/pkcs12 -golang.org/x/crypto/pkcs12/internal/rc2 -golang.org/x/crypto/poly1305 -golang.org/x/crypto/sha3 -golang.org/x/crypto/ssh -golang.org/x/crypto/ssh/internal/bcrypt_pbkdf -golang.org/x/crypto/ssh/terminal -# golang.org/x/exp v0.0.0-20191227195350-da58074b4299 -golang.org/x/exp/apidiff -golang.org/x/exp/cmd/apidiff -# golang.org/x/lint v0.0.0-20200130185559-910be7a94367 -golang.org/x/lint -golang.org/x/lint/golint -# golang.org/x/mod v0.1.1-0.20191105210325-c90efee705ee -golang.org/x/mod/module -golang.org/x/mod/semver -# golang.org/x/net v0.0.0-20200202094626-16171245cfb2 -golang.org/x/net/bpf -golang.org/x/net/context -golang.org/x/net/context/ctxhttp -golang.org/x/net/http/httpguts -golang.org/x/net/http/httpproxy -golang.org/x/net/http2 -golang.org/x/net/http2/hpack -golang.org/x/net/icmp -golang.org/x/net/idna -golang.org/x/net/internal/iana -golang.org/x/net/internal/socket -golang.org/x/net/internal/socks -golang.org/x/net/internal/timeseries -golang.org/x/net/ipv4 -golang.org/x/net/ipv6 -golang.org/x/net/netutil -golang.org/x/net/proxy -golang.org/x/net/publicsuffix -golang.org/x/net/trace -golang.org/x/net/websocket -# golang.org/x/oauth2 v0.0.0-20200107190931-bf48bf16ab8d -golang.org/x/oauth2 -golang.org/x/oauth2/clientcredentials -golang.org/x/oauth2/endpoints -golang.org/x/oauth2/google -golang.org/x/oauth2/internal -golang.org/x/oauth2/jws -golang.org/x/oauth2/jwt -# golang.org/x/sync v0.0.0-20190911185100-cd5d95a43a6e -golang.org/x/sync/errgroup -golang.org/x/sync/semaphore -# golang.org/x/sys v0.0.0-20200106162015-b016eb3dc98e -golang.org/x/sys/cpu -golang.org/x/sys/unix -golang.org/x/sys/windows -golang.org/x/sys/windows/registry -golang.org/x/sys/windows/svc -golang.org/x/sys/windows/svc/debug -golang.org/x/sys/windows/svc/eventlog -# golang.org/x/text v0.3.2 -golang.org/x/text/cases -golang.org/x/text/collate -golang.org/x/text/encoding -golang.org/x/text/encoding/charmap -golang.org/x/text/encoding/htmlindex -golang.org/x/text/encoding/internal -golang.org/x/text/encoding/internal/identifier -golang.org/x/text/encoding/japanese -golang.org/x/text/encoding/korean -golang.org/x/text/encoding/simplifiedchinese -golang.org/x/text/encoding/traditionalchinese -golang.org/x/text/encoding/unicode -golang.org/x/text/internal -golang.org/x/text/internal/colltab -golang.org/x/text/internal/language -golang.org/x/text/internal/language/compact -golang.org/x/text/internal/tag -golang.org/x/text/internal/utf8internal -golang.org/x/text/language -golang.org/x/text/runes -golang.org/x/text/secure/bidirule -golang.org/x/text/transform -golang.org/x/text/unicode/bidi -golang.org/x/text/unicode/norm -# golang.org/x/time v0.0.0-20191024005414-555d28b269f0 -golang.org/x/time/rate -# golang.org/x/tools v0.0.0-20200216192241-b320d3a0f5a2 -golang.org/x/tools/cmd/goimports -golang.org/x/tools/cmd/stringer -golang.org/x/tools/go/analysis -golang.org/x/tools/go/analysis/passes/inspect -golang.org/x/tools/go/ast/astutil -golang.org/x/tools/go/ast/inspector -golang.org/x/tools/go/buildutil -golang.org/x/tools/go/gcexportdata -golang.org/x/tools/go/internal/gcimporter -golang.org/x/tools/go/internal/packagesdriver -golang.org/x/tools/go/packages -golang.org/x/tools/go/types/objectpath -golang.org/x/tools/go/types/typeutil -golang.org/x/tools/go/vcs -golang.org/x/tools/internal/fastwalk -golang.org/x/tools/internal/gopathwalk -golang.org/x/tools/internal/imports -golang.org/x/tools/internal/packagesinternal -# golang.org/x/xerrors v0.0.0-20191204190536-9bdfabe68543 -golang.org/x/xerrors -golang.org/x/xerrors/internal -# google.golang.org/api v0.15.0 -google.golang.org/api/cloudfunctions/v1 -google.golang.org/api/compute/v1 -google.golang.org/api/googleapi -google.golang.org/api/googleapi/transport -google.golang.org/api/internal -google.golang.org/api/internal/gensupport -google.golang.org/api/internal/third_party/uritemplates -google.golang.org/api/iterator -google.golang.org/api/option -google.golang.org/api/storage/v1 -google.golang.org/api/support/bundler -google.golang.org/api/transport -google.golang.org/api/transport/grpc -google.golang.org/api/transport/http -google.golang.org/api/transport/http/internal/propagation -# google.golang.org/appengine v1.6.5 -google.golang.org/appengine -google.golang.org/appengine/cloudsql -google.golang.org/appengine/internal -google.golang.org/appengine/internal/app_identity -google.golang.org/appengine/internal/base -google.golang.org/appengine/internal/datastore -google.golang.org/appengine/internal/log -google.golang.org/appengine/internal/modules -google.golang.org/appengine/internal/remote_api -google.golang.org/appengine/internal/socket -google.golang.org/appengine/internal/urlfetch -google.golang.org/appengine/socket -google.golang.org/appengine/urlfetch -# google.golang.org/genproto v0.0.0-20191230161307-f3c370f40bfb -google.golang.org/genproto/googleapis/api -google.golang.org/genproto/googleapis/api/annotations -google.golang.org/genproto/googleapis/api/distribution -google.golang.org/genproto/googleapis/api/httpbody -google.golang.org/genproto/googleapis/api/label -google.golang.org/genproto/googleapis/api/metric -google.golang.org/genproto/googleapis/api/monitoredres -google.golang.org/genproto/googleapis/datastore/v1 -google.golang.org/genproto/googleapis/iam/v1 -google.golang.org/genproto/googleapis/monitoring/v3 -google.golang.org/genproto/googleapis/pubsub/v1 -google.golang.org/genproto/googleapis/rpc/code -google.golang.org/genproto/googleapis/rpc/status -google.golang.org/genproto/googleapis/type/calendarperiod -google.golang.org/genproto/googleapis/type/expr -google.golang.org/genproto/googleapis/type/latlng -google.golang.org/genproto/protobuf/field_mask -# google.golang.org/grpc v1.29.1 -google.golang.org/grpc -google.golang.org/grpc/attributes -google.golang.org/grpc/backoff -google.golang.org/grpc/balancer -google.golang.org/grpc/balancer/base -google.golang.org/grpc/balancer/grpclb -google.golang.org/grpc/balancer/grpclb/grpc_lb_v1 -google.golang.org/grpc/balancer/roundrobin -google.golang.org/grpc/binarylog/grpc_binarylog_v1 -google.golang.org/grpc/codes -google.golang.org/grpc/connectivity -google.golang.org/grpc/credentials -google.golang.org/grpc/credentials/alts -google.golang.org/grpc/credentials/alts/internal -google.golang.org/grpc/credentials/alts/internal/authinfo -google.golang.org/grpc/credentials/alts/internal/conn -google.golang.org/grpc/credentials/alts/internal/handshaker -google.golang.org/grpc/credentials/alts/internal/handshaker/service -google.golang.org/grpc/credentials/alts/internal/proto/grpc_gcp -google.golang.org/grpc/credentials/google -google.golang.org/grpc/credentials/internal -google.golang.org/grpc/credentials/oauth -google.golang.org/grpc/encoding -google.golang.org/grpc/encoding/proto -google.golang.org/grpc/grpclog -google.golang.org/grpc/internal -google.golang.org/grpc/internal/backoff -google.golang.org/grpc/internal/balancerload -google.golang.org/grpc/internal/binarylog -google.golang.org/grpc/internal/buffer -google.golang.org/grpc/internal/channelz -google.golang.org/grpc/internal/envconfig -google.golang.org/grpc/internal/grpclog -google.golang.org/grpc/internal/grpcrand -google.golang.org/grpc/internal/grpcsync -google.golang.org/grpc/internal/grpcutil -google.golang.org/grpc/internal/resolver/dns -google.golang.org/grpc/internal/resolver/passthrough -google.golang.org/grpc/internal/status -google.golang.org/grpc/internal/syscall -google.golang.org/grpc/internal/transport -google.golang.org/grpc/keepalive -google.golang.org/grpc/metadata -google.golang.org/grpc/naming -google.golang.org/grpc/peer -google.golang.org/grpc/resolver -google.golang.org/grpc/serviceconfig -google.golang.org/grpc/stats -google.golang.org/grpc/status -google.golang.org/grpc/tap -# google.golang.org/protobuf v1.23.0 -google.golang.org/protobuf/cmd/protoc-gen-go/internal_gengo -google.golang.org/protobuf/compiler/protogen -google.golang.org/protobuf/encoding/protojson -google.golang.org/protobuf/encoding/prototext -google.golang.org/protobuf/encoding/protowire -google.golang.org/protobuf/internal/descfmt -google.golang.org/protobuf/internal/descopts -google.golang.org/protobuf/internal/detectknown -google.golang.org/protobuf/internal/detrand -google.golang.org/protobuf/internal/encoding/defval -google.golang.org/protobuf/internal/encoding/json -google.golang.org/protobuf/internal/encoding/messageset -google.golang.org/protobuf/internal/encoding/tag -google.golang.org/protobuf/internal/encoding/text -google.golang.org/protobuf/internal/errors -google.golang.org/protobuf/internal/fieldnum -google.golang.org/protobuf/internal/fieldsort -google.golang.org/protobuf/internal/filedesc -google.golang.org/protobuf/internal/filetype -google.golang.org/protobuf/internal/flags -google.golang.org/protobuf/internal/genname -google.golang.org/protobuf/internal/impl -google.golang.org/protobuf/internal/mapsort -google.golang.org/protobuf/internal/pragma -google.golang.org/protobuf/internal/set -google.golang.org/protobuf/internal/strs -google.golang.org/protobuf/internal/version -google.golang.org/protobuf/proto -google.golang.org/protobuf/reflect/protodesc -google.golang.org/protobuf/reflect/protoreflect -google.golang.org/protobuf/reflect/protoregistry -google.golang.org/protobuf/runtime/protoiface -google.golang.org/protobuf/runtime/protoimpl -google.golang.org/protobuf/types/descriptorpb -google.golang.org/protobuf/types/known/anypb -google.golang.org/protobuf/types/known/durationpb -google.golang.org/protobuf/types/known/emptypb -google.golang.org/protobuf/types/known/structpb -google.golang.org/protobuf/types/known/timestamppb -google.golang.org/protobuf/types/known/wrapperspb -google.golang.org/protobuf/types/pluginpb -# gopkg.in/inf.v0 v0.9.1 -gopkg.in/inf.v0 -# gopkg.in/jcmturner/aescts.v1 v1.0.1 -gopkg.in/jcmturner/aescts.v1 -# gopkg.in/jcmturner/dnsutils.v1 v1.0.1 -gopkg.in/jcmturner/dnsutils.v1 -# gopkg.in/jcmturner/goidentity.v3 v3.0.0 -gopkg.in/jcmturner/goidentity.v3 -# gopkg.in/jcmturner/gokrb5.v7 v7.5.0 -gopkg.in/jcmturner/gokrb5.v7/asn1tools -gopkg.in/jcmturner/gokrb5.v7/client -gopkg.in/jcmturner/gokrb5.v7/config -gopkg.in/jcmturner/gokrb5.v7/credentials -gopkg.in/jcmturner/gokrb5.v7/crypto -gopkg.in/jcmturner/gokrb5.v7/crypto/common -gopkg.in/jcmturner/gokrb5.v7/crypto/etype -gopkg.in/jcmturner/gokrb5.v7/crypto/rfc3961 -gopkg.in/jcmturner/gokrb5.v7/crypto/rfc3962 -gopkg.in/jcmturner/gokrb5.v7/crypto/rfc4757 -gopkg.in/jcmturner/gokrb5.v7/crypto/rfc8009 -gopkg.in/jcmturner/gokrb5.v7/gssapi -gopkg.in/jcmturner/gokrb5.v7/iana -gopkg.in/jcmturner/gokrb5.v7/iana/addrtype -gopkg.in/jcmturner/gokrb5.v7/iana/adtype -gopkg.in/jcmturner/gokrb5.v7/iana/asnAppTag -gopkg.in/jcmturner/gokrb5.v7/iana/chksumtype -gopkg.in/jcmturner/gokrb5.v7/iana/errorcode -gopkg.in/jcmturner/gokrb5.v7/iana/etypeID -gopkg.in/jcmturner/gokrb5.v7/iana/flags -gopkg.in/jcmturner/gokrb5.v7/iana/keyusage -gopkg.in/jcmturner/gokrb5.v7/iana/msgtype -gopkg.in/jcmturner/gokrb5.v7/iana/nametype -gopkg.in/jcmturner/gokrb5.v7/iana/patype -gopkg.in/jcmturner/gokrb5.v7/kadmin -gopkg.in/jcmturner/gokrb5.v7/keytab -gopkg.in/jcmturner/gokrb5.v7/krberror -gopkg.in/jcmturner/gokrb5.v7/messages -gopkg.in/jcmturner/gokrb5.v7/pac -gopkg.in/jcmturner/gokrb5.v7/service -gopkg.in/jcmturner/gokrb5.v7/spnego -gopkg.in/jcmturner/gokrb5.v7/types -# gopkg.in/jcmturner/rpc.v1 v1.1.0 -gopkg.in/jcmturner/rpc.v1/mstypes -gopkg.in/jcmturner/rpc.v1/ndr -# gopkg.in/mgo.v2 v2.0.0-20160818020120-3f83fa500528 -gopkg.in/mgo.v2 -gopkg.in/mgo.v2/bson -gopkg.in/mgo.v2/internal/json -gopkg.in/mgo.v2/internal/sasl -gopkg.in/mgo.v2/internal/scram -# gopkg.in/yaml.v2 v2.3.0 -gopkg.in/yaml.v2 -# honnef.co/go/tools v0.0.1-2019.2.3 -honnef.co/go/tools/arg -honnef.co/go/tools/cmd/staticcheck -honnef.co/go/tools/config -honnef.co/go/tools/deprecated -honnef.co/go/tools/facts -honnef.co/go/tools/functions -honnef.co/go/tools/go/types/typeutil -honnef.co/go/tools/internal/cache -honnef.co/go/tools/internal/passes/buildssa -honnef.co/go/tools/internal/renameio -honnef.co/go/tools/internal/sharedcheck -honnef.co/go/tools/lint -honnef.co/go/tools/lint/lintdsl -honnef.co/go/tools/lint/lintutil -honnef.co/go/tools/lint/lintutil/format -honnef.co/go/tools/loader -honnef.co/go/tools/printf -honnef.co/go/tools/simple -honnef.co/go/tools/ssa -honnef.co/go/tools/ssautil -honnef.co/go/tools/staticcheck -honnef.co/go/tools/staticcheck/vrp -honnef.co/go/tools/stylecheck -honnef.co/go/tools/unused -honnef.co/go/tools/version -# howett.net/plist v0.0.0-20181124034731-591f970eefbb -howett.net/plist -# k8s.io/api v0.18.3 -k8s.io/api/admissionregistration/v1 -k8s.io/api/admissionregistration/v1beta1 -k8s.io/api/apps/v1 -k8s.io/api/apps/v1beta1 -k8s.io/api/apps/v1beta2 -k8s.io/api/auditregistration/v1alpha1 -k8s.io/api/authentication/v1 -k8s.io/api/authentication/v1beta1 -k8s.io/api/authorization/v1 -k8s.io/api/authorization/v1beta1 -k8s.io/api/autoscaling/v1 -k8s.io/api/autoscaling/v2beta1 -k8s.io/api/autoscaling/v2beta2 -k8s.io/api/batch/v1 -k8s.io/api/batch/v1beta1 -k8s.io/api/batch/v2alpha1 -k8s.io/api/certificates/v1beta1 -k8s.io/api/coordination/v1 -k8s.io/api/coordination/v1beta1 -k8s.io/api/core/v1 -k8s.io/api/discovery/v1alpha1 -k8s.io/api/discovery/v1beta1 -k8s.io/api/events/v1beta1 -k8s.io/api/extensions/v1beta1 -k8s.io/api/flowcontrol/v1alpha1 -k8s.io/api/networking/v1 -k8s.io/api/networking/v1beta1 -k8s.io/api/node/v1alpha1 -k8s.io/api/node/v1beta1 -k8s.io/api/policy/v1beta1 -k8s.io/api/rbac/v1 -k8s.io/api/rbac/v1alpha1 -k8s.io/api/rbac/v1beta1 -k8s.io/api/scheduling/v1 -k8s.io/api/scheduling/v1alpha1 -k8s.io/api/scheduling/v1beta1 -k8s.io/api/settings/v1alpha1 -k8s.io/api/storage/v1 -k8s.io/api/storage/v1alpha1 -k8s.io/api/storage/v1beta1 -# k8s.io/apimachinery v0.18.3 -k8s.io/apimachinery/pkg/api/errors -k8s.io/apimachinery/pkg/api/meta -k8s.io/apimachinery/pkg/api/resource -k8s.io/apimachinery/pkg/apis/meta/internalversion -k8s.io/apimachinery/pkg/apis/meta/v1 -k8s.io/apimachinery/pkg/apis/meta/v1/unstructured -k8s.io/apimachinery/pkg/apis/meta/v1beta1 -k8s.io/apimachinery/pkg/conversion -k8s.io/apimachinery/pkg/conversion/queryparams -k8s.io/apimachinery/pkg/fields -k8s.io/apimachinery/pkg/labels -k8s.io/apimachinery/pkg/runtime -k8s.io/apimachinery/pkg/runtime/schema -k8s.io/apimachinery/pkg/runtime/serializer -k8s.io/apimachinery/pkg/runtime/serializer/json -k8s.io/apimachinery/pkg/runtime/serializer/protobuf -k8s.io/apimachinery/pkg/runtime/serializer/recognizer -k8s.io/apimachinery/pkg/runtime/serializer/streaming -k8s.io/apimachinery/pkg/runtime/serializer/versioning -k8s.io/apimachinery/pkg/selection -k8s.io/apimachinery/pkg/types -k8s.io/apimachinery/pkg/util/cache -k8s.io/apimachinery/pkg/util/clock -k8s.io/apimachinery/pkg/util/diff -k8s.io/apimachinery/pkg/util/errors -k8s.io/apimachinery/pkg/util/framer -k8s.io/apimachinery/pkg/util/httpstream -k8s.io/apimachinery/pkg/util/httpstream/spdy -k8s.io/apimachinery/pkg/util/intstr -k8s.io/apimachinery/pkg/util/json -k8s.io/apimachinery/pkg/util/mergepatch -k8s.io/apimachinery/pkg/util/naming -k8s.io/apimachinery/pkg/util/net -k8s.io/apimachinery/pkg/util/runtime -k8s.io/apimachinery/pkg/util/sets -k8s.io/apimachinery/pkg/util/strategicpatch -k8s.io/apimachinery/pkg/util/validation -k8s.io/apimachinery/pkg/util/validation/field -k8s.io/apimachinery/pkg/util/wait -k8s.io/apimachinery/pkg/util/yaml -k8s.io/apimachinery/pkg/version -k8s.io/apimachinery/pkg/watch -k8s.io/apimachinery/third_party/forked/golang/json -k8s.io/apimachinery/third_party/forked/golang/netutil -k8s.io/apimachinery/third_party/forked/golang/reflect -# k8s.io/client-go v0.18.3 -k8s.io/client-go/discovery -k8s.io/client-go/discovery/fake -k8s.io/client-go/kubernetes -k8s.io/client-go/kubernetes/fake -k8s.io/client-go/kubernetes/scheme -k8s.io/client-go/kubernetes/typed/admissionregistration/v1 -k8s.io/client-go/kubernetes/typed/admissionregistration/v1/fake -k8s.io/client-go/kubernetes/typed/admissionregistration/v1beta1 -k8s.io/client-go/kubernetes/typed/admissionregistration/v1beta1/fake -k8s.io/client-go/kubernetes/typed/apps/v1 -k8s.io/client-go/kubernetes/typed/apps/v1/fake -k8s.io/client-go/kubernetes/typed/apps/v1beta1 -k8s.io/client-go/kubernetes/typed/apps/v1beta1/fake -k8s.io/client-go/kubernetes/typed/apps/v1beta2 -k8s.io/client-go/kubernetes/typed/apps/v1beta2/fake -k8s.io/client-go/kubernetes/typed/auditregistration/v1alpha1 -k8s.io/client-go/kubernetes/typed/auditregistration/v1alpha1/fake -k8s.io/client-go/kubernetes/typed/authentication/v1 -k8s.io/client-go/kubernetes/typed/authentication/v1/fake -k8s.io/client-go/kubernetes/typed/authentication/v1beta1 -k8s.io/client-go/kubernetes/typed/authentication/v1beta1/fake -k8s.io/client-go/kubernetes/typed/authorization/v1 -k8s.io/client-go/kubernetes/typed/authorization/v1/fake -k8s.io/client-go/kubernetes/typed/authorization/v1beta1 -k8s.io/client-go/kubernetes/typed/authorization/v1beta1/fake -k8s.io/client-go/kubernetes/typed/autoscaling/v1 -k8s.io/client-go/kubernetes/typed/autoscaling/v1/fake -k8s.io/client-go/kubernetes/typed/autoscaling/v2beta1 -k8s.io/client-go/kubernetes/typed/autoscaling/v2beta1/fake -k8s.io/client-go/kubernetes/typed/autoscaling/v2beta2 -k8s.io/client-go/kubernetes/typed/autoscaling/v2beta2/fake -k8s.io/client-go/kubernetes/typed/batch/v1 -k8s.io/client-go/kubernetes/typed/batch/v1/fake -k8s.io/client-go/kubernetes/typed/batch/v1beta1 -k8s.io/client-go/kubernetes/typed/batch/v1beta1/fake -k8s.io/client-go/kubernetes/typed/batch/v2alpha1 -k8s.io/client-go/kubernetes/typed/batch/v2alpha1/fake -k8s.io/client-go/kubernetes/typed/certificates/v1beta1 -k8s.io/client-go/kubernetes/typed/certificates/v1beta1/fake -k8s.io/client-go/kubernetes/typed/coordination/v1 -k8s.io/client-go/kubernetes/typed/coordination/v1/fake -k8s.io/client-go/kubernetes/typed/coordination/v1beta1 -k8s.io/client-go/kubernetes/typed/coordination/v1beta1/fake -k8s.io/client-go/kubernetes/typed/core/v1 -k8s.io/client-go/kubernetes/typed/core/v1/fake -k8s.io/client-go/kubernetes/typed/discovery/v1alpha1 -k8s.io/client-go/kubernetes/typed/discovery/v1alpha1/fake -k8s.io/client-go/kubernetes/typed/discovery/v1beta1 -k8s.io/client-go/kubernetes/typed/discovery/v1beta1/fake -k8s.io/client-go/kubernetes/typed/events/v1beta1 -k8s.io/client-go/kubernetes/typed/events/v1beta1/fake -k8s.io/client-go/kubernetes/typed/extensions/v1beta1 -k8s.io/client-go/kubernetes/typed/extensions/v1beta1/fake -k8s.io/client-go/kubernetes/typed/flowcontrol/v1alpha1 -k8s.io/client-go/kubernetes/typed/flowcontrol/v1alpha1/fake -k8s.io/client-go/kubernetes/typed/networking/v1 -k8s.io/client-go/kubernetes/typed/networking/v1/fake -k8s.io/client-go/kubernetes/typed/networking/v1beta1 -k8s.io/client-go/kubernetes/typed/networking/v1beta1/fake -k8s.io/client-go/kubernetes/typed/node/v1alpha1 -k8s.io/client-go/kubernetes/typed/node/v1alpha1/fake -k8s.io/client-go/kubernetes/typed/node/v1beta1 -k8s.io/client-go/kubernetes/typed/node/v1beta1/fake -k8s.io/client-go/kubernetes/typed/policy/v1beta1 -k8s.io/client-go/kubernetes/typed/policy/v1beta1/fake -k8s.io/client-go/kubernetes/typed/rbac/v1 -k8s.io/client-go/kubernetes/typed/rbac/v1/fake -k8s.io/client-go/kubernetes/typed/rbac/v1alpha1 -k8s.io/client-go/kubernetes/typed/rbac/v1alpha1/fake -k8s.io/client-go/kubernetes/typed/rbac/v1beta1 -k8s.io/client-go/kubernetes/typed/rbac/v1beta1/fake -k8s.io/client-go/kubernetes/typed/scheduling/v1 -k8s.io/client-go/kubernetes/typed/scheduling/v1/fake -k8s.io/client-go/kubernetes/typed/scheduling/v1alpha1 -k8s.io/client-go/kubernetes/typed/scheduling/v1alpha1/fake -k8s.io/client-go/kubernetes/typed/scheduling/v1beta1 -k8s.io/client-go/kubernetes/typed/scheduling/v1beta1/fake -k8s.io/client-go/kubernetes/typed/settings/v1alpha1 -k8s.io/client-go/kubernetes/typed/settings/v1alpha1/fake -k8s.io/client-go/kubernetes/typed/storage/v1 -k8s.io/client-go/kubernetes/typed/storage/v1/fake -k8s.io/client-go/kubernetes/typed/storage/v1alpha1 -k8s.io/client-go/kubernetes/typed/storage/v1alpha1/fake -k8s.io/client-go/kubernetes/typed/storage/v1beta1 -k8s.io/client-go/kubernetes/typed/storage/v1beta1/fake -k8s.io/client-go/pkg/apis/clientauthentication -k8s.io/client-go/pkg/apis/clientauthentication/v1alpha1 -k8s.io/client-go/pkg/apis/clientauthentication/v1beta1 -k8s.io/client-go/pkg/version -k8s.io/client-go/plugin/pkg/client/auth/exec -k8s.io/client-go/rest -k8s.io/client-go/rest/watch -k8s.io/client-go/testing -k8s.io/client-go/tools/auth -k8s.io/client-go/tools/cache -k8s.io/client-go/tools/clientcmd -k8s.io/client-go/tools/clientcmd/api -k8s.io/client-go/tools/clientcmd/api/latest -k8s.io/client-go/tools/clientcmd/api/v1 -k8s.io/client-go/tools/metrics -k8s.io/client-go/tools/pager -k8s.io/client-go/tools/portforward -k8s.io/client-go/tools/reference -k8s.io/client-go/tools/watch -k8s.io/client-go/transport -k8s.io/client-go/transport/spdy -k8s.io/client-go/util/cert -k8s.io/client-go/util/connrotation -k8s.io/client-go/util/flowcontrol -k8s.io/client-go/util/homedir -k8s.io/client-go/util/keyutil -k8s.io/client-go/util/workqueue -# k8s.io/klog v1.0.0 -k8s.io/klog -# k8s.io/kube-openapi v0.0.0-20200410145947-61e04a5be9a6 -k8s.io/kube-openapi/pkg/util/proto -# k8s.io/utils v0.0.0-20200324210504-a9aa75ae1b89 -k8s.io/utils/buffer -k8s.io/utils/integer -k8s.io/utils/trace -# sigs.k8s.io/structured-merge-diff/v3 v3.0.0 -sigs.k8s.io/structured-merge-diff/v3/value -# sigs.k8s.io/yaml v1.2.0 -sigs.k8s.io/yaml