diff --git a/plugins/iceberg-metadata-catalog/build.gradle b/plugins/iceberg-metadata-catalog/build.gradle new file mode 100644 index 0000000000000..d3805626d58e4 --- /dev/null +++ b/plugins/iceberg-metadata-catalog/build.gradle @@ -0,0 +1,190 @@ +/* + * SPDX-License-Identifier: Apache-2.0 + * + * The OpenSearch Contributors require contributions made to + * this file be licensed under the Apache-2.0 license or a + * compatible open source license. + */ + +apply plugin: 'opensearch.opensearchplugin' + +opensearchplugin { + description = 'Apache Iceberg metadata catalog plugin: publishes OpenSearch index data to S3 Tables' + classname = 'org.opensearch.plugin.catalog.iceberg.IcebergCatalogPlugin' +} + +dependencies { + + // Iceberg + api "org.apache.iceberg:iceberg-api:1.6.1" + api "org.apache.iceberg:iceberg-core:1.6.1" + api("org.apache.iceberg:iceberg-aws:1.6.1") { + exclude group: 'org.apache.iceberg', module: 'iceberg-bundled-guava' + } + + // Avro is required by iceberg-core's PartitionData (implements org.apache.avro.generic.IndexedRecord). + // Any code path that constructs a partitioned DataFile triggers Avro class loading. We pull it in + // explicitly so partitioned table writes work; we do not use Avro as a serialization format. + // commons-compress is declared as a compile-scope transitive by avro itself. + runtimeOnly "org.apache.avro:avro:1.11.1" + runtimeOnly "org.apache.commons:commons-compress:${versions.commonscompress}" + + // AWS SDK v2 — core + S3 + Apache HTTP client + api "software.amazon.awssdk:s3:${versions.aws}" + api "software.amazon.awssdk:apache-client:${versions.aws}" + api "software.amazon.awssdk:sdk-core:${versions.aws}" + api "software.amazon.awssdk:aws-core:${versions.aws}" + api "software.amazon.awssdk:auth:${versions.aws}" + api "software.amazon.awssdk:identity-spi:${versions.aws}" + api "software.amazon.awssdk:http-client-spi:${versions.aws}" + api "software.amazon.awssdk:regions:${versions.aws}" + api "software.amazon.awssdk:utils:${versions.aws}" + api "software.amazon.awssdk:annotations:${versions.aws}" + api "software.amazon.awssdk:endpoints-spi:${versions.aws}" + api "software.amazon.awssdk:metrics-spi:${versions.aws}" + + // STS is used from main code by CredentialsBuilder (IRSA + assume-role paths). + api "software.amazon.awssdk:sts:${versions.aws}" + + // ============================================================================ + // Runtime-only + // ============================================================================ + + // AWS SDK v2 runtime modules — signing, retries, protocols, checksums, auth wiring. + runtimeOnly "software.amazon.awssdk:http-auth:${versions.aws}" + runtimeOnly "software.amazon.awssdk:http-auth-aws:${versions.aws}" + runtimeOnly "software.amazon.awssdk:http-auth-spi:${versions.aws}" + runtimeOnly "software.amazon.awssdk:retries:${versions.aws}" + runtimeOnly "software.amazon.awssdk:retries-spi:${versions.aws}" + runtimeOnly "software.amazon.awssdk:checksums:${versions.aws}" + runtimeOnly "software.amazon.awssdk:checksums-spi:${versions.aws}" + runtimeOnly "software.amazon.awssdk:profiles:${versions.aws}" + runtimeOnly "software.amazon.awssdk:json-utils:${versions.aws}" + runtimeOnly "software.amazon.awssdk:protocol-core:${versions.aws}" + runtimeOnly "software.amazon.awssdk:aws-json-protocol:${versions.aws}" + runtimeOnly "software.amazon.awssdk:aws-xml-protocol:${versions.aws}" + runtimeOnly "software.amazon.awssdk:aws-query-protocol:${versions.aws}" + runtimeOnly "software.amazon.awssdk:signer:${versions.aws}" + runtimeOnly "software.amazon.awssdk:third-party-jackson-core:${versions.aws}" + + // Apache HTTP transitives used by apache-client at runtime. + runtimeOnly "org.apache.httpcomponents:httpclient:${versions.httpclient}" + runtimeOnly "org.apache.httpcomponents:httpcore:${versions.httpcore}" + runtimeOnly "commons-codec:commons-codec:${versions.commonscodec}" + runtimeOnly "commons-logging:commons-logging:${versions.commonslogging}" + + // Jackson (iceberg-core and SDK both use it at runtime). + runtimeOnly "com.fasterxml.jackson.core:jackson-core:${versions.jackson}" + runtimeOnly "com.fasterxml.jackson.core:jackson-databind:${versions.jackson_databind}" + runtimeOnly "com.fasterxml.jackson.core:jackson-annotations:${versions.jackson_annotations}" + + // slf4j (iceberg uses slf4j for logging at runtime). + runtimeOnly "org.slf4j:slf4j-api:${versions.slf4j}" + + // Iceberg runtime modules. + runtimeOnly "org.apache.iceberg:iceberg-common:1.6.1" + runtimeOnly("org.apache.iceberg:iceberg-bundled-guava:1.6.1") { + exclude group: 'org.apache.hadoop' + exclude group: 'org.slf4j' + } + runtimeOnly "com.github.ben-manes.caffeine:caffeine:2.9.3" +} + +tasks.named("dependencyLicenses").configure { + // Iceberg artifacts share a common LICENSE/NOTICE. + mapping from: /iceberg-.*/, to: 'iceberg' + + // Jackson artifacts share a common LICENSE/NOTICE. + mapping from: /jackson-.*/, to: 'jackson' +} +tasks.named("thirdPartyAudit").configure { + ignoreMissingClasses() + ignoreViolations( + // Caffeine uses sun.misc.Unsafe for atomic field updates and array access. + 'com.github.benmanes.caffeine.base.UnsafeAccess', + 'com.github.benmanes.caffeine.cache.BaseMpscLinkedArrayQueue', + 'com.github.benmanes.caffeine.cache.BBHeader$ReadAndWriteCounterRef', + 'com.github.benmanes.caffeine.cache.BBHeader$ReadCounterRef', + 'com.github.benmanes.caffeine.cache.BLCHeader$DrainStatusRef', + 'com.github.benmanes.caffeine.cache.FD', + 'com.github.benmanes.caffeine.cache.FDA', + 'com.github.benmanes.caffeine.cache.FDAR', + 'com.github.benmanes.caffeine.cache.FDAW', + 'com.github.benmanes.caffeine.cache.FDAWR', + 'com.github.benmanes.caffeine.cache.FDR', + 'com.github.benmanes.caffeine.cache.FDW', + 'com.github.benmanes.caffeine.cache.FDWR', + 'com.github.benmanes.caffeine.cache.FS', + 'com.github.benmanes.caffeine.cache.FSA', + 'com.github.benmanes.caffeine.cache.FSAR', + 'com.github.benmanes.caffeine.cache.FSAW', + 'com.github.benmanes.caffeine.cache.FSAWR', + 'com.github.benmanes.caffeine.cache.FSR', + 'com.github.benmanes.caffeine.cache.FSW', + 'com.github.benmanes.caffeine.cache.FSWR', + 'com.github.benmanes.caffeine.cache.FW', + 'com.github.benmanes.caffeine.cache.FWA', + 'com.github.benmanes.caffeine.cache.FWAR', + 'com.github.benmanes.caffeine.cache.FWAW', + 'com.github.benmanes.caffeine.cache.FWAWR', + 'com.github.benmanes.caffeine.cache.FWR', + 'com.github.benmanes.caffeine.cache.FWW', + 'com.github.benmanes.caffeine.cache.FWWR', + 'com.github.benmanes.caffeine.cache.PD', + 'com.github.benmanes.caffeine.cache.PDA', + 'com.github.benmanes.caffeine.cache.PDAR', + 'com.github.benmanes.caffeine.cache.PDAW', + 'com.github.benmanes.caffeine.cache.PDAWR', + 'com.github.benmanes.caffeine.cache.PDR', + 'com.github.benmanes.caffeine.cache.PDW', + 'com.github.benmanes.caffeine.cache.PDWR', + 'com.github.benmanes.caffeine.cache.PS', + 'com.github.benmanes.caffeine.cache.PSA', + 'com.github.benmanes.caffeine.cache.PSAR', + 'com.github.benmanes.caffeine.cache.PSAW', + 'com.github.benmanes.caffeine.cache.PSAWR', + 'com.github.benmanes.caffeine.cache.PSR', + 'com.github.benmanes.caffeine.cache.PSW', + 'com.github.benmanes.caffeine.cache.PSWR', + 'com.github.benmanes.caffeine.cache.PW', + 'com.github.benmanes.caffeine.cache.PWA', + 'com.github.benmanes.caffeine.cache.PWAR', + 'com.github.benmanes.caffeine.cache.PWAW', + 'com.github.benmanes.caffeine.cache.PWAWR', + 'com.github.benmanes.caffeine.cache.PWR', + 'com.github.benmanes.caffeine.cache.PWW', + 'com.github.benmanes.caffeine.cache.PWWR', + 'com.github.benmanes.caffeine.cache.StripedBuffer', + 'com.github.benmanes.caffeine.cache.UnsafeAccess', + 'com.github.benmanes.caffeine.cache.UnsafeRefArrayAccess', + 'com.github.benmanes.caffeine.SCQHeader$HeadAndTailRef', + 'com.github.benmanes.caffeine.SingleConsumerQueue', + 'com.github.benmanes.caffeine.SingleConsumerQueue$Node', + + // Iceberg's relocated Guava uses sun.misc.Unsafe for atomics and byte array access. + 'org.apache.iceberg.relocated.com.google.common.hash.LittleEndianByteArray$UnsafeByteArray', + 'org.apache.iceberg.relocated.com.google.common.hash.LittleEndianByteArray$UnsafeByteArray$1', + 'org.apache.iceberg.relocated.com.google.common.hash.LittleEndianByteArray$UnsafeByteArray$2', + 'org.apache.iceberg.relocated.com.google.common.primitives.UnsignedBytes$LexicographicalComparatorHolder$UnsafeComparator', + 'org.apache.iceberg.relocated.com.google.common.primitives.UnsignedBytes$LexicographicalComparatorHolder$UnsafeComparator$1', + 'org.apache.iceberg.relocated.com.google.common.util.concurrent.AbstractFuture$UnsafeAtomicHelper', + 'org.apache.iceberg.relocated.com.google.common.util.concurrent.AbstractFuture$UnsafeAtomicHelper$1', + + // Avro uses sun.misc.Unsafe for reflective field access in its specific-record path. + // We don't use Avro as a serialization format; we need it on the classpath only because + // iceberg-core's PartitionData implements org.apache.avro.generic.IndexedRecord. None of + // the FieldAccessUnsafe paths are exercised by our code. + 'org.apache.avro.reflect.FieldAccessUnsafe', + 'org.apache.avro.reflect.FieldAccessUnsafe$UnsafeBooleanField', + 'org.apache.avro.reflect.FieldAccessUnsafe$UnsafeByteField', + 'org.apache.avro.reflect.FieldAccessUnsafe$UnsafeCachedField', + 'org.apache.avro.reflect.FieldAccessUnsafe$UnsafeCharField', + 'org.apache.avro.reflect.FieldAccessUnsafe$UnsafeCustomEncodedField', + 'org.apache.avro.reflect.FieldAccessUnsafe$UnsafeDoubleField', + 'org.apache.avro.reflect.FieldAccessUnsafe$UnsafeFloatField', + 'org.apache.avro.reflect.FieldAccessUnsafe$UnsafeIntField', + 'org.apache.avro.reflect.FieldAccessUnsafe$UnsafeLongField', + 'org.apache.avro.reflect.FieldAccessUnsafe$UnsafeObjectField', + 'org.apache.avro.reflect.FieldAccessUnsafe$UnsafeShortField' + ) +} diff --git a/plugins/iceberg-metadata-catalog/licenses/annotations-2.32.29.jar.sha1 b/plugins/iceberg-metadata-catalog/licenses/annotations-2.32.29.jar.sha1 new file mode 100644 index 0000000000000..bf2f6e71d388a --- /dev/null +++ b/plugins/iceberg-metadata-catalog/licenses/annotations-2.32.29.jar.sha1 @@ -0,0 +1 @@ +d70dcb2d74df899972ac888f1b306ddd7e83bee3 \ No newline at end of file diff --git a/plugins/iceberg-metadata-catalog/licenses/annotations-LICENSE.txt b/plugins/iceberg-metadata-catalog/licenses/annotations-LICENSE.txt new file mode 100644 index 0000000000000..8b1f0292c621e --- /dev/null +++ b/plugins/iceberg-metadata-catalog/licenses/annotations-LICENSE.txt @@ -0,0 +1,206 @@ + + 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. + + Note: Other license terms may apply to certain, identified software files contained within or distributed + with the accompanying software if such terms are included in the directory containing the accompanying software. + Such other license terms will then apply in lieu of the terms of the software license above. \ No newline at end of file diff --git a/plugins/iceberg-metadata-catalog/licenses/annotations-NOTICE.txt b/plugins/iceberg-metadata-catalog/licenses/annotations-NOTICE.txt new file mode 100644 index 0000000000000..7b5a068903255 --- /dev/null +++ b/plugins/iceberg-metadata-catalog/licenses/annotations-NOTICE.txt @@ -0,0 +1,25 @@ +AWS SDK for Java 2.0 +Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved. + +This product includes software developed by +Amazon Technologies, Inc (http://www.amazon.com/). + +********************** +THIRD PARTY COMPONENTS +********************** +This software includes third party software subject to the following copyrights: +- XML parsing and utility functions from JetS3t - Copyright 2006-2009 James Murty. +- PKCS#1 PEM encoded private key parsing and utility functions from oauth.googlecode.com - Copyright 1998-2010 AOL Inc. +- Apache Commons Lang - https://github.com/apache/commons-lang +- Netty Reactive Streams - https://github.com/playframework/netty-reactive-streams +- Jackson-core - https://github.com/FasterXML/jackson-core +- Jackson-dataformat-cbor - https://github.com/FasterXML/jackson-dataformats-binary + +The licenses for these third party components are included in LICENSE.txt + +- For Apache Commons Lang see also this required NOTICE: + Apache Commons Lang + Copyright 2001-2020 The Apache Software Foundation + + This product includes software developed at + The Apache Software Foundation (https://www.apache.org/). diff --git a/plugins/iceberg-metadata-catalog/licenses/apache-client-2.32.29.jar.sha1 b/plugins/iceberg-metadata-catalog/licenses/apache-client-2.32.29.jar.sha1 new file mode 100644 index 0000000000000..f88d5ea05077f --- /dev/null +++ b/plugins/iceberg-metadata-catalog/licenses/apache-client-2.32.29.jar.sha1 @@ -0,0 +1 @@ +d9f9b839c90f55b21bd37f5e74b570cac9a98959 \ No newline at end of file diff --git a/plugins/iceberg-metadata-catalog/licenses/apache-client-LICENSE.txt b/plugins/iceberg-metadata-catalog/licenses/apache-client-LICENSE.txt new file mode 100644 index 0000000000000..8b1f0292c621e --- /dev/null +++ b/plugins/iceberg-metadata-catalog/licenses/apache-client-LICENSE.txt @@ -0,0 +1,206 @@ + + 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. + + Note: Other license terms may apply to certain, identified software files contained within or distributed + with the accompanying software if such terms are included in the directory containing the accompanying software. + Such other license terms will then apply in lieu of the terms of the software license above. \ No newline at end of file diff --git a/plugins/iceberg-metadata-catalog/licenses/apache-client-NOTICE.txt b/plugins/iceberg-metadata-catalog/licenses/apache-client-NOTICE.txt new file mode 100644 index 0000000000000..7b5a068903255 --- /dev/null +++ b/plugins/iceberg-metadata-catalog/licenses/apache-client-NOTICE.txt @@ -0,0 +1,25 @@ +AWS SDK for Java 2.0 +Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved. + +This product includes software developed by +Amazon Technologies, Inc (http://www.amazon.com/). + +********************** +THIRD PARTY COMPONENTS +********************** +This software includes third party software subject to the following copyrights: +- XML parsing and utility functions from JetS3t - Copyright 2006-2009 James Murty. +- PKCS#1 PEM encoded private key parsing and utility functions from oauth.googlecode.com - Copyright 1998-2010 AOL Inc. +- Apache Commons Lang - https://github.com/apache/commons-lang +- Netty Reactive Streams - https://github.com/playframework/netty-reactive-streams +- Jackson-core - https://github.com/FasterXML/jackson-core +- Jackson-dataformat-cbor - https://github.com/FasterXML/jackson-dataformats-binary + +The licenses for these third party components are included in LICENSE.txt + +- For Apache Commons Lang see also this required NOTICE: + Apache Commons Lang + Copyright 2001-2020 The Apache Software Foundation + + This product includes software developed at + The Apache Software Foundation (https://www.apache.org/). diff --git a/plugins/iceberg-metadata-catalog/licenses/auth-2.32.29.jar.sha1 b/plugins/iceberg-metadata-catalog/licenses/auth-2.32.29.jar.sha1 new file mode 100644 index 0000000000000..55d23e39ade57 --- /dev/null +++ b/plugins/iceberg-metadata-catalog/licenses/auth-2.32.29.jar.sha1 @@ -0,0 +1 @@ +50e287a7fc88d24c222ce08cfbb311fc91a5dc15 \ No newline at end of file diff --git a/plugins/iceberg-metadata-catalog/licenses/auth-LICENSE.txt b/plugins/iceberg-metadata-catalog/licenses/auth-LICENSE.txt new file mode 100644 index 0000000000000..8b1f0292c621e --- /dev/null +++ b/plugins/iceberg-metadata-catalog/licenses/auth-LICENSE.txt @@ -0,0 +1,206 @@ + + 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. + + Note: Other license terms may apply to certain, identified software files contained within or distributed + with the accompanying software if such terms are included in the directory containing the accompanying software. + Such other license terms will then apply in lieu of the terms of the software license above. \ No newline at end of file diff --git a/plugins/iceberg-metadata-catalog/licenses/auth-NOTICE.txt b/plugins/iceberg-metadata-catalog/licenses/auth-NOTICE.txt new file mode 100644 index 0000000000000..7b5a068903255 --- /dev/null +++ b/plugins/iceberg-metadata-catalog/licenses/auth-NOTICE.txt @@ -0,0 +1,25 @@ +AWS SDK for Java 2.0 +Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved. + +This product includes software developed by +Amazon Technologies, Inc (http://www.amazon.com/). + +********************** +THIRD PARTY COMPONENTS +********************** +This software includes third party software subject to the following copyrights: +- XML parsing and utility functions from JetS3t - Copyright 2006-2009 James Murty. +- PKCS#1 PEM encoded private key parsing and utility functions from oauth.googlecode.com - Copyright 1998-2010 AOL Inc. +- Apache Commons Lang - https://github.com/apache/commons-lang +- Netty Reactive Streams - https://github.com/playframework/netty-reactive-streams +- Jackson-core - https://github.com/FasterXML/jackson-core +- Jackson-dataformat-cbor - https://github.com/FasterXML/jackson-dataformats-binary + +The licenses for these third party components are included in LICENSE.txt + +- For Apache Commons Lang see also this required NOTICE: + Apache Commons Lang + Copyright 2001-2020 The Apache Software Foundation + + This product includes software developed at + The Apache Software Foundation (https://www.apache.org/). diff --git a/plugins/iceberg-metadata-catalog/licenses/avro-1.11.1.jar.sha1 b/plugins/iceberg-metadata-catalog/licenses/avro-1.11.1.jar.sha1 new file mode 100644 index 0000000000000..f03424516b44e --- /dev/null +++ b/plugins/iceberg-metadata-catalog/licenses/avro-1.11.1.jar.sha1 @@ -0,0 +1 @@ +81af5d4b9bdaaf4ba41bcb0df5241355ec34c630 \ No newline at end of file diff --git a/plugins/iceberg-metadata-catalog/licenses/avro-LICENSE.txt b/plugins/iceberg-metadata-catalog/licenses/avro-LICENSE.txt new file mode 100644 index 0000000000000..d645695673349 --- /dev/null +++ b/plugins/iceberg-metadata-catalog/licenses/avro-LICENSE.txt @@ -0,0 +1,202 @@ + + 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. diff --git a/plugins/iceberg-metadata-catalog/licenses/avro-NOTICE.txt b/plugins/iceberg-metadata-catalog/licenses/avro-NOTICE.txt new file mode 100644 index 0000000000000..c422ff81e6809 --- /dev/null +++ b/plugins/iceberg-metadata-catalog/licenses/avro-NOTICE.txt @@ -0,0 +1,8 @@ + +Apache Avro +Copyright 2009-2022 The Apache Software Foundation + +This product includes software developed at +The Apache Software Foundation (http://www.apache.org/). + + diff --git a/plugins/iceberg-metadata-catalog/licenses/aws-core-2.32.29.jar.sha1 b/plugins/iceberg-metadata-catalog/licenses/aws-core-2.32.29.jar.sha1 new file mode 100644 index 0000000000000..e941bcc097585 --- /dev/null +++ b/plugins/iceberg-metadata-catalog/licenses/aws-core-2.32.29.jar.sha1 @@ -0,0 +1 @@ +3c8891d55b74f9b0fef202c953bb39a7cf0eb313 \ No newline at end of file diff --git a/plugins/iceberg-metadata-catalog/licenses/aws-core-LICENSE.txt b/plugins/iceberg-metadata-catalog/licenses/aws-core-LICENSE.txt new file mode 100644 index 0000000000000..8b1f0292c621e --- /dev/null +++ b/plugins/iceberg-metadata-catalog/licenses/aws-core-LICENSE.txt @@ -0,0 +1,206 @@ + + 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. + + Note: Other license terms may apply to certain, identified software files contained within or distributed + with the accompanying software if such terms are included in the directory containing the accompanying software. + Such other license terms will then apply in lieu of the terms of the software license above. \ No newline at end of file diff --git a/plugins/iceberg-metadata-catalog/licenses/aws-core-NOTICE.txt b/plugins/iceberg-metadata-catalog/licenses/aws-core-NOTICE.txt new file mode 100644 index 0000000000000..7b5a068903255 --- /dev/null +++ b/plugins/iceberg-metadata-catalog/licenses/aws-core-NOTICE.txt @@ -0,0 +1,25 @@ +AWS SDK for Java 2.0 +Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved. + +This product includes software developed by +Amazon Technologies, Inc (http://www.amazon.com/). + +********************** +THIRD PARTY COMPONENTS +********************** +This software includes third party software subject to the following copyrights: +- XML parsing and utility functions from JetS3t - Copyright 2006-2009 James Murty. +- PKCS#1 PEM encoded private key parsing and utility functions from oauth.googlecode.com - Copyright 1998-2010 AOL Inc. +- Apache Commons Lang - https://github.com/apache/commons-lang +- Netty Reactive Streams - https://github.com/playframework/netty-reactive-streams +- Jackson-core - https://github.com/FasterXML/jackson-core +- Jackson-dataformat-cbor - https://github.com/FasterXML/jackson-dataformats-binary + +The licenses for these third party components are included in LICENSE.txt + +- For Apache Commons Lang see also this required NOTICE: + Apache Commons Lang + Copyright 2001-2020 The Apache Software Foundation + + This product includes software developed at + The Apache Software Foundation (https://www.apache.org/). diff --git a/plugins/iceberg-metadata-catalog/licenses/aws-json-protocol-2.32.29.jar.sha1 b/plugins/iceberg-metadata-catalog/licenses/aws-json-protocol-2.32.29.jar.sha1 new file mode 100644 index 0000000000000..d71967a390c46 --- /dev/null +++ b/plugins/iceberg-metadata-catalog/licenses/aws-json-protocol-2.32.29.jar.sha1 @@ -0,0 +1 @@ +a3bf92c47415a732dce70a3fbf494bad84f6182d \ No newline at end of file diff --git a/plugins/iceberg-metadata-catalog/licenses/aws-json-protocol-LICENSE.txt b/plugins/iceberg-metadata-catalog/licenses/aws-json-protocol-LICENSE.txt new file mode 100644 index 0000000000000..8b1f0292c621e --- /dev/null +++ b/plugins/iceberg-metadata-catalog/licenses/aws-json-protocol-LICENSE.txt @@ -0,0 +1,206 @@ + + 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. + + Note: Other license terms may apply to certain, identified software files contained within or distributed + with the accompanying software if such terms are included in the directory containing the accompanying software. + Such other license terms will then apply in lieu of the terms of the software license above. \ No newline at end of file diff --git a/plugins/iceberg-metadata-catalog/licenses/aws-json-protocol-NOTICE.txt b/plugins/iceberg-metadata-catalog/licenses/aws-json-protocol-NOTICE.txt new file mode 100644 index 0000000000000..7b5a068903255 --- /dev/null +++ b/plugins/iceberg-metadata-catalog/licenses/aws-json-protocol-NOTICE.txt @@ -0,0 +1,25 @@ +AWS SDK for Java 2.0 +Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved. + +This product includes software developed by +Amazon Technologies, Inc (http://www.amazon.com/). + +********************** +THIRD PARTY COMPONENTS +********************** +This software includes third party software subject to the following copyrights: +- XML parsing and utility functions from JetS3t - Copyright 2006-2009 James Murty. +- PKCS#1 PEM encoded private key parsing and utility functions from oauth.googlecode.com - Copyright 1998-2010 AOL Inc. +- Apache Commons Lang - https://github.com/apache/commons-lang +- Netty Reactive Streams - https://github.com/playframework/netty-reactive-streams +- Jackson-core - https://github.com/FasterXML/jackson-core +- Jackson-dataformat-cbor - https://github.com/FasterXML/jackson-dataformats-binary + +The licenses for these third party components are included in LICENSE.txt + +- For Apache Commons Lang see also this required NOTICE: + Apache Commons Lang + Copyright 2001-2020 The Apache Software Foundation + + This product includes software developed at + The Apache Software Foundation (https://www.apache.org/). diff --git a/plugins/iceberg-metadata-catalog/licenses/aws-query-protocol-2.32.29.jar.sha1 b/plugins/iceberg-metadata-catalog/licenses/aws-query-protocol-2.32.29.jar.sha1 new file mode 100644 index 0000000000000..780d452ad0839 --- /dev/null +++ b/plugins/iceberg-metadata-catalog/licenses/aws-query-protocol-2.32.29.jar.sha1 @@ -0,0 +1 @@ +574bf51d40acffbb01c8dafbe46b38c6bff29fb4 \ No newline at end of file diff --git a/plugins/iceberg-metadata-catalog/licenses/aws-query-protocol-LICENSE.txt b/plugins/iceberg-metadata-catalog/licenses/aws-query-protocol-LICENSE.txt new file mode 100644 index 0000000000000..8b1f0292c621e --- /dev/null +++ b/plugins/iceberg-metadata-catalog/licenses/aws-query-protocol-LICENSE.txt @@ -0,0 +1,206 @@ + + 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. + + Note: Other license terms may apply to certain, identified software files contained within or distributed + with the accompanying software if such terms are included in the directory containing the accompanying software. + Such other license terms will then apply in lieu of the terms of the software license above. \ No newline at end of file diff --git a/plugins/iceberg-metadata-catalog/licenses/aws-query-protocol-NOTICE.txt b/plugins/iceberg-metadata-catalog/licenses/aws-query-protocol-NOTICE.txt new file mode 100644 index 0000000000000..7b5a068903255 --- /dev/null +++ b/plugins/iceberg-metadata-catalog/licenses/aws-query-protocol-NOTICE.txt @@ -0,0 +1,25 @@ +AWS SDK for Java 2.0 +Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved. + +This product includes software developed by +Amazon Technologies, Inc (http://www.amazon.com/). + +********************** +THIRD PARTY COMPONENTS +********************** +This software includes third party software subject to the following copyrights: +- XML parsing and utility functions from JetS3t - Copyright 2006-2009 James Murty. +- PKCS#1 PEM encoded private key parsing and utility functions from oauth.googlecode.com - Copyright 1998-2010 AOL Inc. +- Apache Commons Lang - https://github.com/apache/commons-lang +- Netty Reactive Streams - https://github.com/playframework/netty-reactive-streams +- Jackson-core - https://github.com/FasterXML/jackson-core +- Jackson-dataformat-cbor - https://github.com/FasterXML/jackson-dataformats-binary + +The licenses for these third party components are included in LICENSE.txt + +- For Apache Commons Lang see also this required NOTICE: + Apache Commons Lang + Copyright 2001-2020 The Apache Software Foundation + + This product includes software developed at + The Apache Software Foundation (https://www.apache.org/). diff --git a/plugins/iceberg-metadata-catalog/licenses/aws-xml-protocol-2.32.29.jar.sha1 b/plugins/iceberg-metadata-catalog/licenses/aws-xml-protocol-2.32.29.jar.sha1 new file mode 100644 index 0000000000000..b762da9831672 --- /dev/null +++ b/plugins/iceberg-metadata-catalog/licenses/aws-xml-protocol-2.32.29.jar.sha1 @@ -0,0 +1 @@ +ab0c5211c44395eab4580afbd9d285d3022d69cc \ No newline at end of file diff --git a/plugins/iceberg-metadata-catalog/licenses/aws-xml-protocol-LICENSE.txt b/plugins/iceberg-metadata-catalog/licenses/aws-xml-protocol-LICENSE.txt new file mode 100644 index 0000000000000..8b1f0292c621e --- /dev/null +++ b/plugins/iceberg-metadata-catalog/licenses/aws-xml-protocol-LICENSE.txt @@ -0,0 +1,206 @@ + + 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. + + Note: Other license terms may apply to certain, identified software files contained within or distributed + with the accompanying software if such terms are included in the directory containing the accompanying software. + Such other license terms will then apply in lieu of the terms of the software license above. \ No newline at end of file diff --git a/plugins/iceberg-metadata-catalog/licenses/aws-xml-protocol-NOTICE.txt b/plugins/iceberg-metadata-catalog/licenses/aws-xml-protocol-NOTICE.txt new file mode 100644 index 0000000000000..7b5a068903255 --- /dev/null +++ b/plugins/iceberg-metadata-catalog/licenses/aws-xml-protocol-NOTICE.txt @@ -0,0 +1,25 @@ +AWS SDK for Java 2.0 +Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved. + +This product includes software developed by +Amazon Technologies, Inc (http://www.amazon.com/). + +********************** +THIRD PARTY COMPONENTS +********************** +This software includes third party software subject to the following copyrights: +- XML parsing and utility functions from JetS3t - Copyright 2006-2009 James Murty. +- PKCS#1 PEM encoded private key parsing and utility functions from oauth.googlecode.com - Copyright 1998-2010 AOL Inc. +- Apache Commons Lang - https://github.com/apache/commons-lang +- Netty Reactive Streams - https://github.com/playframework/netty-reactive-streams +- Jackson-core - https://github.com/FasterXML/jackson-core +- Jackson-dataformat-cbor - https://github.com/FasterXML/jackson-dataformats-binary + +The licenses for these third party components are included in LICENSE.txt + +- For Apache Commons Lang see also this required NOTICE: + Apache Commons Lang + Copyright 2001-2020 The Apache Software Foundation + + This product includes software developed at + The Apache Software Foundation (https://www.apache.org/). diff --git a/plugins/iceberg-metadata-catalog/licenses/caffeine-2.9.3.jar.sha1 b/plugins/iceberg-metadata-catalog/licenses/caffeine-2.9.3.jar.sha1 new file mode 100644 index 0000000000000..1fff80a6df7b5 --- /dev/null +++ b/plugins/iceberg-metadata-catalog/licenses/caffeine-2.9.3.jar.sha1 @@ -0,0 +1 @@ +b162491f768824d21487551873f9b3b374a7fe19 \ No newline at end of file diff --git a/plugins/iceberg-metadata-catalog/licenses/caffeine-LICENSE.txt b/plugins/iceberg-metadata-catalog/licenses/caffeine-LICENSE.txt new file mode 100644 index 0000000000000..d645695673349 --- /dev/null +++ b/plugins/iceberg-metadata-catalog/licenses/caffeine-LICENSE.txt @@ -0,0 +1,202 @@ + + 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. diff --git a/plugins/iceberg-metadata-catalog/licenses/caffeine-NOTICE.txt b/plugins/iceberg-metadata-catalog/licenses/caffeine-NOTICE.txt new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/plugins/iceberg-metadata-catalog/licenses/checksums-2.32.29.jar.sha1 b/plugins/iceberg-metadata-catalog/licenses/checksums-2.32.29.jar.sha1 new file mode 100644 index 0000000000000..f3f2d2012e705 --- /dev/null +++ b/plugins/iceberg-metadata-catalog/licenses/checksums-2.32.29.jar.sha1 @@ -0,0 +1 @@ +8f8446643418ecebfb91f9a4e0fb3b80833bced1 \ No newline at end of file diff --git a/plugins/iceberg-metadata-catalog/licenses/checksums-LICENSE.txt b/plugins/iceberg-metadata-catalog/licenses/checksums-LICENSE.txt new file mode 100644 index 0000000000000..8b1f0292c621e --- /dev/null +++ b/plugins/iceberg-metadata-catalog/licenses/checksums-LICENSE.txt @@ -0,0 +1,206 @@ + + 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. + + Note: Other license terms may apply to certain, identified software files contained within or distributed + with the accompanying software if such terms are included in the directory containing the accompanying software. + Such other license terms will then apply in lieu of the terms of the software license above. \ No newline at end of file diff --git a/plugins/iceberg-metadata-catalog/licenses/checksums-NOTICE.txt b/plugins/iceberg-metadata-catalog/licenses/checksums-NOTICE.txt new file mode 100644 index 0000000000000..7b5a068903255 --- /dev/null +++ b/plugins/iceberg-metadata-catalog/licenses/checksums-NOTICE.txt @@ -0,0 +1,25 @@ +AWS SDK for Java 2.0 +Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved. + +This product includes software developed by +Amazon Technologies, Inc (http://www.amazon.com/). + +********************** +THIRD PARTY COMPONENTS +********************** +This software includes third party software subject to the following copyrights: +- XML parsing and utility functions from JetS3t - Copyright 2006-2009 James Murty. +- PKCS#1 PEM encoded private key parsing and utility functions from oauth.googlecode.com - Copyright 1998-2010 AOL Inc. +- Apache Commons Lang - https://github.com/apache/commons-lang +- Netty Reactive Streams - https://github.com/playframework/netty-reactive-streams +- Jackson-core - https://github.com/FasterXML/jackson-core +- Jackson-dataformat-cbor - https://github.com/FasterXML/jackson-dataformats-binary + +The licenses for these third party components are included in LICENSE.txt + +- For Apache Commons Lang see also this required NOTICE: + Apache Commons Lang + Copyright 2001-2020 The Apache Software Foundation + + This product includes software developed at + The Apache Software Foundation (https://www.apache.org/). diff --git a/plugins/iceberg-metadata-catalog/licenses/checksums-spi-2.32.29.jar.sha1 b/plugins/iceberg-metadata-catalog/licenses/checksums-spi-2.32.29.jar.sha1 new file mode 100644 index 0000000000000..1985d22901dd6 --- /dev/null +++ b/plugins/iceberg-metadata-catalog/licenses/checksums-spi-2.32.29.jar.sha1 @@ -0,0 +1 @@ +fcdafe7cab4b8aac60b3a583091d4bb6cd22d6c0 \ No newline at end of file diff --git a/plugins/iceberg-metadata-catalog/licenses/checksums-spi-LICENSE.txt b/plugins/iceberg-metadata-catalog/licenses/checksums-spi-LICENSE.txt new file mode 100644 index 0000000000000..8b1f0292c621e --- /dev/null +++ b/plugins/iceberg-metadata-catalog/licenses/checksums-spi-LICENSE.txt @@ -0,0 +1,206 @@ + + 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. + + Note: Other license terms may apply to certain, identified software files contained within or distributed + with the accompanying software if such terms are included in the directory containing the accompanying software. + Such other license terms will then apply in lieu of the terms of the software license above. \ No newline at end of file diff --git a/plugins/iceberg-metadata-catalog/licenses/checksums-spi-NOTICE.txt b/plugins/iceberg-metadata-catalog/licenses/checksums-spi-NOTICE.txt new file mode 100644 index 0000000000000..7b5a068903255 --- /dev/null +++ b/plugins/iceberg-metadata-catalog/licenses/checksums-spi-NOTICE.txt @@ -0,0 +1,25 @@ +AWS SDK for Java 2.0 +Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved. + +This product includes software developed by +Amazon Technologies, Inc (http://www.amazon.com/). + +********************** +THIRD PARTY COMPONENTS +********************** +This software includes third party software subject to the following copyrights: +- XML parsing and utility functions from JetS3t - Copyright 2006-2009 James Murty. +- PKCS#1 PEM encoded private key parsing and utility functions from oauth.googlecode.com - Copyright 1998-2010 AOL Inc. +- Apache Commons Lang - https://github.com/apache/commons-lang +- Netty Reactive Streams - https://github.com/playframework/netty-reactive-streams +- Jackson-core - https://github.com/FasterXML/jackson-core +- Jackson-dataformat-cbor - https://github.com/FasterXML/jackson-dataformats-binary + +The licenses for these third party components are included in LICENSE.txt + +- For Apache Commons Lang see also this required NOTICE: + Apache Commons Lang + Copyright 2001-2020 The Apache Software Foundation + + This product includes software developed at + The Apache Software Foundation (https://www.apache.org/). diff --git a/plugins/iceberg-metadata-catalog/licenses/commons-codec-1.18.0.jar.sha1 b/plugins/iceberg-metadata-catalog/licenses/commons-codec-1.18.0.jar.sha1 new file mode 100644 index 0000000000000..01a6a8f446302 --- /dev/null +++ b/plugins/iceberg-metadata-catalog/licenses/commons-codec-1.18.0.jar.sha1 @@ -0,0 +1 @@ +ee45d1cf6ec2cc2b809ff04b4dc7aec858e0df8f \ No newline at end of file diff --git a/plugins/iceberg-metadata-catalog/licenses/commons-codec-LICENSE.txt b/plugins/iceberg-metadata-catalog/licenses/commons-codec-LICENSE.txt new file mode 100644 index 0000000000000..d645695673349 --- /dev/null +++ b/plugins/iceberg-metadata-catalog/licenses/commons-codec-LICENSE.txt @@ -0,0 +1,202 @@ + + 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. diff --git a/plugins/iceberg-metadata-catalog/licenses/commons-codec-NOTICE.txt b/plugins/iceberg-metadata-catalog/licenses/commons-codec-NOTICE.txt new file mode 100644 index 0000000000000..d3b64e9e3008a --- /dev/null +++ b/plugins/iceberg-metadata-catalog/licenses/commons-codec-NOTICE.txt @@ -0,0 +1,5 @@ +Apache Commons Codec +Copyright 2002-2025 The Apache Software Foundation + +This product includes software developed at +The Apache Software Foundation (https://www.apache.org/). diff --git a/plugins/iceberg-metadata-catalog/licenses/commons-compress-1.28.0.jar.sha1 b/plugins/iceberg-metadata-catalog/licenses/commons-compress-1.28.0.jar.sha1 new file mode 100644 index 0000000000000..5edae62aeeb5d --- /dev/null +++ b/plugins/iceberg-metadata-catalog/licenses/commons-compress-1.28.0.jar.sha1 @@ -0,0 +1 @@ +e482f2c7a88dac3c497e96aa420b6a769f59c8d7 \ No newline at end of file diff --git a/plugins/iceberg-metadata-catalog/licenses/commons-compress-LICENSE.txt b/plugins/iceberg-metadata-catalog/licenses/commons-compress-LICENSE.txt new file mode 100644 index 0000000000000..b447376016c31 --- /dev/null +++ b/plugins/iceberg-metadata-catalog/licenses/commons-compress-LICENSE.txt @@ -0,0 +1,201 @@ + Apache License + Version 2.0, January 2004 + http://www.apache.org/licenses/ + + TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION + + 1. Definitions. + + "License" shall mean the terms and conditions for use, reproduction, + and distribution as defined by Sections 1 through 9 of this document. + + "Licensor" shall mean the copyright owner or entity authorized by + the copyright owner that is granting the License. + + "Legal Entity" shall mean the union of the acting entity and all + other entities that control, are controlled by, or are under common + control with that entity. For the purposes of this definition, + "control" means (i) the power, direct or indirect, to cause the + direction or management of such entity, whether by contract or + otherwise, or (ii) ownership of fifty percent (50%) or more of the + outstanding shares, or (iii) beneficial ownership of such entity. + + "You" (or "Your") shall mean an individual or Legal Entity + exercising permissions granted by this License. + + "Source" form shall mean the preferred form for making modifications, + including but not limited to software source code, documentation + source, and configuration files. + + "Object" form shall mean any form resulting from mechanical + transformation or translation of a Source form, including but + not limited to compiled object code, generated documentation, + and conversions to other media types. + + "Work" shall mean the work of authorship, whether in Source or + Object form, made available under the License, as indicated by a + copyright notice that is included in or attached to the work + (an example is provided in the Appendix below). + + "Derivative Works" shall mean any work, whether in Source or Object + form, that is based on (or derived from) the Work and for which the + editorial revisions, annotations, elaborations, or other modifications + represent, as a whole, an original work of authorship. For the purposes + of this License, Derivative Works shall not include works that remain + separable from, or merely link (or bind by name) to the interfaces of, + the Work and Derivative Works thereof. + + "Contribution" shall mean any work of authorship, including + the original version of the Work and any modifications or additions + to that Work or Derivative Works thereof, that is intentionally + submitted to Licensor for inclusion in the Work by the copyright owner + or by an individual or Legal Entity authorized to submit on behalf of + the copyright owner. For the purposes of this definition, "submitted" + means any form of electronic, verbal, or written communication sent + to the Licensor or its representatives, including but not limited to + communication on electronic mailing lists, source code control systems, + and issue tracking systems that are managed by, or on behalf of, the + Licensor for the purpose of discussing and improving the Work, but + excluding communication that is conspicuously marked or otherwise + designated in writing by the copyright owner as "Not a Contribution." + + "Contributor" shall mean Licensor and any individual or Legal Entity + on behalf of whom a Contribution has been received by Licensor and + subsequently incorporated within the Work. + + 2. Grant of Copyright License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + copyright license to reproduce, prepare Derivative Works of, + publicly display, publicly perform, sublicense, and distribute the + Work and such Derivative Works in Source or Object form. + + 3. Grant of Patent License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + (except as stated in this section) patent license to make, have made, + use, offer to sell, sell, import, and otherwise transfer the Work, + where such license applies only to those patent claims licensable + by such Contributor that are necessarily infringed by their + Contribution(s) alone or by combination of their Contribution(s) + with the Work to which such Contribution(s) was submitted. If You + institute patent litigation against any entity (including a + cross-claim or counterclaim in a lawsuit) alleging that the Work + or a Contribution incorporated within the Work constitutes direct + or contributory patent infringement, then any patent licenses + granted to You under this License for that Work shall terminate + as of the date such litigation is filed. + + 4. Redistribution. You may reproduce and distribute copies of the + Work or Derivative Works thereof in any medium, with or without + modifications, and in Source or Object form, provided that You + meet the following conditions: + + (a) You must give any other recipients of the Work or + Derivative Works a copy of this License; and + + (b) You must cause any modified files to carry prominent notices + stating that You changed the files; and + + (c) You must retain, in the Source form of any Derivative Works + that You distribute, all copyright, patent, trademark, and + attribution notices from the Source form of the Work, + excluding those notices that do not pertain to any part of + the Derivative Works; and + + (d) If the Work includes a "NOTICE" text file as part of its + distribution, then any Derivative Works that You distribute must + include a readable copy of the attribution notices contained + within such NOTICE file, excluding those notices that do not + pertain to any part of the Derivative Works, in at least one + of the following places: within a NOTICE text file distributed + as part of the Derivative Works; within the Source form or + documentation, if provided along with the Derivative Works; or, + within a display generated by the Derivative Works, if and + wherever such third-party notices normally appear. The contents + of the NOTICE file are for informational purposes only and + do not modify the License. You may add Your own attribution + notices within Derivative Works that You distribute, alongside + or as an addendum to the NOTICE text from the Work, provided + that such additional attribution notices cannot be construed + as modifying the License. + + You may add Your own copyright statement to Your modifications and + may provide additional or different license terms and conditions + for use, reproduction, or distribution of Your modifications, or + for any such Derivative Works as a whole, provided Your use, + reproduction, and distribution of the Work otherwise complies with + the conditions stated in this License. + + 5. Submission of Contributions. Unless You explicitly state otherwise, + any Contribution intentionally submitted for inclusion in the Work + by You to the Licensor shall be under the terms and conditions of + this License, without any additional terms or conditions. + Notwithstanding the above, nothing herein shall supersede or modify + the terms of any separate license agreement you may have executed + with Licensor regarding such Contributions. + + 6. Trademarks. This License does not grant permission to use the trade + names, trademarks, service marks, or product names of the Licensor, + except as required for reasonable and customary use in describing the + origin of the Work and reproducing the content of the NOTICE file. + + 7. Disclaimer of Warranty. Unless required by applicable law or + agreed to in writing, Licensor provides the Work (and each + Contributor provides its Contributions) on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or + implied, including, without limitation, any warranties or conditions + of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A + PARTICULAR PURPOSE. You are solely responsible for determining the + appropriateness of using or redistributing the Work and assume any + risks associated with Your exercise of permissions under this License. + + 8. Limitation of Liability. In no event and under no legal theory, + whether in tort (including negligence), contract, or otherwise, + unless required by applicable law (such as deliberate and grossly + negligent acts) or agreed to in writing, shall any Contributor be + liable to You for damages, including any direct, indirect, special, + incidental, or consequential damages of any character arising as a + result of this License or out of the use or inability to use the + Work (including but not limited to damages for loss of goodwill, + work stoppage, computer failure or malfunction, or any and all + other commercial damages or losses), even if such Contributor + has been advised of the possibility of such damages. + + 9. Accepting Warranty or Additional Liability. While redistributing + the Work or Derivative Works thereof, You may choose to offer, + and charge a fee for, acceptance of support, warranty, indemnity, + or other liability obligations and/or rights consistent with this + License. However, in accepting such obligations, You may act only + on Your own behalf and on Your sole responsibility, not on behalf + of any other Contributor, and only if You agree to indemnify, + defend, and hold each Contributor harmless for any liability + incurred by, or claims asserted against, such Contributor by reason + of your accepting any such warranty or additional liability. + + END OF TERMS AND CONDITIONS + + APPENDIX: How to apply the Apache License to your work. + + To apply the Apache License to your work, attach the following + boilerplate notice, with the fields enclosed by brackets "[]" + replaced with your own identifying information. (Don't include + the brackets!) The text should be enclosed in the appropriate + comment syntax for the file format. We also recommend that a + file or class name and description of purpose be included on the + same "printed page" as the copyright notice for easier + identification within third-party archives. + + Copyright [yyyy] [name of copyright owner] + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + https://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. diff --git a/plugins/iceberg-metadata-catalog/licenses/commons-compress-NOTICE.txt b/plugins/iceberg-metadata-catalog/licenses/commons-compress-NOTICE.txt new file mode 100644 index 0000000000000..fa969b3ce6ca6 --- /dev/null +++ b/plugins/iceberg-metadata-catalog/licenses/commons-compress-NOTICE.txt @@ -0,0 +1,5 @@ +Apache Commons Compress +Copyright 2002-2025 The Apache Software Foundation + +This product includes software developed at +The Apache Software Foundation (https://www.apache.org/). diff --git a/plugins/iceberg-metadata-catalog/licenses/commons-logging-1.2.jar.sha1 b/plugins/iceberg-metadata-catalog/licenses/commons-logging-1.2.jar.sha1 new file mode 100644 index 0000000000000..f40f0242448e8 --- /dev/null +++ b/plugins/iceberg-metadata-catalog/licenses/commons-logging-1.2.jar.sha1 @@ -0,0 +1 @@ +4bfc12adfe4842bf07b657f0369c4cb522955686 \ No newline at end of file diff --git a/plugins/iceberg-metadata-catalog/licenses/commons-logging-LICENSE.txt b/plugins/iceberg-metadata-catalog/licenses/commons-logging-LICENSE.txt new file mode 100644 index 0000000000000..d645695673349 --- /dev/null +++ b/plugins/iceberg-metadata-catalog/licenses/commons-logging-LICENSE.txt @@ -0,0 +1,202 @@ + + 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. diff --git a/plugins/iceberg-metadata-catalog/licenses/commons-logging-NOTICE.txt b/plugins/iceberg-metadata-catalog/licenses/commons-logging-NOTICE.txt new file mode 100644 index 0000000000000..556bd03951d4b --- /dev/null +++ b/plugins/iceberg-metadata-catalog/licenses/commons-logging-NOTICE.txt @@ -0,0 +1,6 @@ +Apache Commons Logging +Copyright 2003-2014 The Apache Software Foundation + +This product includes software developed at +The Apache Software Foundation (http://www.apache.org/). + diff --git a/plugins/iceberg-metadata-catalog/licenses/endpoints-spi-2.32.29.jar.sha1 b/plugins/iceberg-metadata-catalog/licenses/endpoints-spi-2.32.29.jar.sha1 new file mode 100644 index 0000000000000..da30cfbf5fcbe --- /dev/null +++ b/plugins/iceberg-metadata-catalog/licenses/endpoints-spi-2.32.29.jar.sha1 @@ -0,0 +1 @@ +bf9f33de3d12918afc10e68902284167f63605a4 \ No newline at end of file diff --git a/plugins/iceberg-metadata-catalog/licenses/endpoints-spi-LICENSE.txt b/plugins/iceberg-metadata-catalog/licenses/endpoints-spi-LICENSE.txt new file mode 100644 index 0000000000000..8b1f0292c621e --- /dev/null +++ b/plugins/iceberg-metadata-catalog/licenses/endpoints-spi-LICENSE.txt @@ -0,0 +1,206 @@ + + 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. + + Note: Other license terms may apply to certain, identified software files contained within or distributed + with the accompanying software if such terms are included in the directory containing the accompanying software. + Such other license terms will then apply in lieu of the terms of the software license above. \ No newline at end of file diff --git a/plugins/iceberg-metadata-catalog/licenses/endpoints-spi-NOTICE.txt b/plugins/iceberg-metadata-catalog/licenses/endpoints-spi-NOTICE.txt new file mode 100644 index 0000000000000..7b5a068903255 --- /dev/null +++ b/plugins/iceberg-metadata-catalog/licenses/endpoints-spi-NOTICE.txt @@ -0,0 +1,25 @@ +AWS SDK for Java 2.0 +Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved. + +This product includes software developed by +Amazon Technologies, Inc (http://www.amazon.com/). + +********************** +THIRD PARTY COMPONENTS +********************** +This software includes third party software subject to the following copyrights: +- XML parsing and utility functions from JetS3t - Copyright 2006-2009 James Murty. +- PKCS#1 PEM encoded private key parsing and utility functions from oauth.googlecode.com - Copyright 1998-2010 AOL Inc. +- Apache Commons Lang - https://github.com/apache/commons-lang +- Netty Reactive Streams - https://github.com/playframework/netty-reactive-streams +- Jackson-core - https://github.com/FasterXML/jackson-core +- Jackson-dataformat-cbor - https://github.com/FasterXML/jackson-dataformats-binary + +The licenses for these third party components are included in LICENSE.txt + +- For Apache Commons Lang see also this required NOTICE: + Apache Commons Lang + Copyright 2001-2020 The Apache Software Foundation + + This product includes software developed at + The Apache Software Foundation (https://www.apache.org/). diff --git a/plugins/iceberg-metadata-catalog/licenses/http-auth-2.32.29.jar.sha1 b/plugins/iceberg-metadata-catalog/licenses/http-auth-2.32.29.jar.sha1 new file mode 100644 index 0000000000000..f0bc732dfc764 --- /dev/null +++ b/plugins/iceberg-metadata-catalog/licenses/http-auth-2.32.29.jar.sha1 @@ -0,0 +1 @@ +f8ed6585c79f337a239a9ff8648e4b6801d6f463 \ No newline at end of file diff --git a/plugins/iceberg-metadata-catalog/licenses/http-auth-LICENSE.txt b/plugins/iceberg-metadata-catalog/licenses/http-auth-LICENSE.txt new file mode 100644 index 0000000000000..8b1f0292c621e --- /dev/null +++ b/plugins/iceberg-metadata-catalog/licenses/http-auth-LICENSE.txt @@ -0,0 +1,206 @@ + + 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. + + Note: Other license terms may apply to certain, identified software files contained within or distributed + with the accompanying software if such terms are included in the directory containing the accompanying software. + Such other license terms will then apply in lieu of the terms of the software license above. \ No newline at end of file diff --git a/plugins/iceberg-metadata-catalog/licenses/http-auth-NOTICE.txt b/plugins/iceberg-metadata-catalog/licenses/http-auth-NOTICE.txt new file mode 100644 index 0000000000000..7b5a068903255 --- /dev/null +++ b/plugins/iceberg-metadata-catalog/licenses/http-auth-NOTICE.txt @@ -0,0 +1,25 @@ +AWS SDK for Java 2.0 +Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved. + +This product includes software developed by +Amazon Technologies, Inc (http://www.amazon.com/). + +********************** +THIRD PARTY COMPONENTS +********************** +This software includes third party software subject to the following copyrights: +- XML parsing and utility functions from JetS3t - Copyright 2006-2009 James Murty. +- PKCS#1 PEM encoded private key parsing and utility functions from oauth.googlecode.com - Copyright 1998-2010 AOL Inc. +- Apache Commons Lang - https://github.com/apache/commons-lang +- Netty Reactive Streams - https://github.com/playframework/netty-reactive-streams +- Jackson-core - https://github.com/FasterXML/jackson-core +- Jackson-dataformat-cbor - https://github.com/FasterXML/jackson-dataformats-binary + +The licenses for these third party components are included in LICENSE.txt + +- For Apache Commons Lang see also this required NOTICE: + Apache Commons Lang + Copyright 2001-2020 The Apache Software Foundation + + This product includes software developed at + The Apache Software Foundation (https://www.apache.org/). diff --git a/plugins/iceberg-metadata-catalog/licenses/http-auth-aws-2.32.29.jar.sha1 b/plugins/iceberg-metadata-catalog/licenses/http-auth-aws-2.32.29.jar.sha1 new file mode 100644 index 0000000000000..6475becbd3f1c --- /dev/null +++ b/plugins/iceberg-metadata-catalog/licenses/http-auth-aws-2.32.29.jar.sha1 @@ -0,0 +1 @@ +5495f09895578457b4b8220cdca4e9aa0747f303 \ No newline at end of file diff --git a/plugins/iceberg-metadata-catalog/licenses/http-auth-aws-LICENSE.txt b/plugins/iceberg-metadata-catalog/licenses/http-auth-aws-LICENSE.txt new file mode 100644 index 0000000000000..8b1f0292c621e --- /dev/null +++ b/plugins/iceberg-metadata-catalog/licenses/http-auth-aws-LICENSE.txt @@ -0,0 +1,206 @@ + + 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. + + Note: Other license terms may apply to certain, identified software files contained within or distributed + with the accompanying software if such terms are included in the directory containing the accompanying software. + Such other license terms will then apply in lieu of the terms of the software license above. \ No newline at end of file diff --git a/plugins/iceberg-metadata-catalog/licenses/http-auth-aws-NOTICE.txt b/plugins/iceberg-metadata-catalog/licenses/http-auth-aws-NOTICE.txt new file mode 100644 index 0000000000000..7b5a068903255 --- /dev/null +++ b/plugins/iceberg-metadata-catalog/licenses/http-auth-aws-NOTICE.txt @@ -0,0 +1,25 @@ +AWS SDK for Java 2.0 +Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved. + +This product includes software developed by +Amazon Technologies, Inc (http://www.amazon.com/). + +********************** +THIRD PARTY COMPONENTS +********************** +This software includes third party software subject to the following copyrights: +- XML parsing and utility functions from JetS3t - Copyright 2006-2009 James Murty. +- PKCS#1 PEM encoded private key parsing and utility functions from oauth.googlecode.com - Copyright 1998-2010 AOL Inc. +- Apache Commons Lang - https://github.com/apache/commons-lang +- Netty Reactive Streams - https://github.com/playframework/netty-reactive-streams +- Jackson-core - https://github.com/FasterXML/jackson-core +- Jackson-dataformat-cbor - https://github.com/FasterXML/jackson-dataformats-binary + +The licenses for these third party components are included in LICENSE.txt + +- For Apache Commons Lang see also this required NOTICE: + Apache Commons Lang + Copyright 2001-2020 The Apache Software Foundation + + This product includes software developed at + The Apache Software Foundation (https://www.apache.org/). diff --git a/plugins/iceberg-metadata-catalog/licenses/http-auth-spi-2.32.29.jar.sha1 b/plugins/iceberg-metadata-catalog/licenses/http-auth-spi-2.32.29.jar.sha1 new file mode 100644 index 0000000000000..dc49f5a1cd000 --- /dev/null +++ b/plugins/iceberg-metadata-catalog/licenses/http-auth-spi-2.32.29.jar.sha1 @@ -0,0 +1 @@ +fcd1d382e848911102ba4500314832e4a29c8ba4 \ No newline at end of file diff --git a/plugins/iceberg-metadata-catalog/licenses/http-auth-spi-LICENSE.txt b/plugins/iceberg-metadata-catalog/licenses/http-auth-spi-LICENSE.txt new file mode 100644 index 0000000000000..8b1f0292c621e --- /dev/null +++ b/plugins/iceberg-metadata-catalog/licenses/http-auth-spi-LICENSE.txt @@ -0,0 +1,206 @@ + + 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. + + Note: Other license terms may apply to certain, identified software files contained within or distributed + with the accompanying software if such terms are included in the directory containing the accompanying software. + Such other license terms will then apply in lieu of the terms of the software license above. \ No newline at end of file diff --git a/plugins/iceberg-metadata-catalog/licenses/http-auth-spi-NOTICE.txt b/plugins/iceberg-metadata-catalog/licenses/http-auth-spi-NOTICE.txt new file mode 100644 index 0000000000000..7b5a068903255 --- /dev/null +++ b/plugins/iceberg-metadata-catalog/licenses/http-auth-spi-NOTICE.txt @@ -0,0 +1,25 @@ +AWS SDK for Java 2.0 +Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved. + +This product includes software developed by +Amazon Technologies, Inc (http://www.amazon.com/). + +********************** +THIRD PARTY COMPONENTS +********************** +This software includes third party software subject to the following copyrights: +- XML parsing and utility functions from JetS3t - Copyright 2006-2009 James Murty. +- PKCS#1 PEM encoded private key parsing and utility functions from oauth.googlecode.com - Copyright 1998-2010 AOL Inc. +- Apache Commons Lang - https://github.com/apache/commons-lang +- Netty Reactive Streams - https://github.com/playframework/netty-reactive-streams +- Jackson-core - https://github.com/FasterXML/jackson-core +- Jackson-dataformat-cbor - https://github.com/FasterXML/jackson-dataformats-binary + +The licenses for these third party components are included in LICENSE.txt + +- For Apache Commons Lang see also this required NOTICE: + Apache Commons Lang + Copyright 2001-2020 The Apache Software Foundation + + This product includes software developed at + The Apache Software Foundation (https://www.apache.org/). diff --git a/plugins/iceberg-metadata-catalog/licenses/http-client-spi-2.32.29.jar.sha1 b/plugins/iceberg-metadata-catalog/licenses/http-client-spi-2.32.29.jar.sha1 new file mode 100644 index 0000000000000..126800a691aba --- /dev/null +++ b/plugins/iceberg-metadata-catalog/licenses/http-client-spi-2.32.29.jar.sha1 @@ -0,0 +1 @@ +c6b5b085ca5d75a2bc3561a75fc667ee545ec0a3 \ No newline at end of file diff --git a/plugins/iceberg-metadata-catalog/licenses/http-client-spi-LICENSE.txt b/plugins/iceberg-metadata-catalog/licenses/http-client-spi-LICENSE.txt new file mode 100644 index 0000000000000..8b1f0292c621e --- /dev/null +++ b/plugins/iceberg-metadata-catalog/licenses/http-client-spi-LICENSE.txt @@ -0,0 +1,206 @@ + + 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. + + Note: Other license terms may apply to certain, identified software files contained within or distributed + with the accompanying software if such terms are included in the directory containing the accompanying software. + Such other license terms will then apply in lieu of the terms of the software license above. \ No newline at end of file diff --git a/plugins/iceberg-metadata-catalog/licenses/http-client-spi-NOTICE.txt b/plugins/iceberg-metadata-catalog/licenses/http-client-spi-NOTICE.txt new file mode 100644 index 0000000000000..7b5a068903255 --- /dev/null +++ b/plugins/iceberg-metadata-catalog/licenses/http-client-spi-NOTICE.txt @@ -0,0 +1,25 @@ +AWS SDK for Java 2.0 +Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved. + +This product includes software developed by +Amazon Technologies, Inc (http://www.amazon.com/). + +********************** +THIRD PARTY COMPONENTS +********************** +This software includes third party software subject to the following copyrights: +- XML parsing and utility functions from JetS3t - Copyright 2006-2009 James Murty. +- PKCS#1 PEM encoded private key parsing and utility functions from oauth.googlecode.com - Copyright 1998-2010 AOL Inc. +- Apache Commons Lang - https://github.com/apache/commons-lang +- Netty Reactive Streams - https://github.com/playframework/netty-reactive-streams +- Jackson-core - https://github.com/FasterXML/jackson-core +- Jackson-dataformat-cbor - https://github.com/FasterXML/jackson-dataformats-binary + +The licenses for these third party components are included in LICENSE.txt + +- For Apache Commons Lang see also this required NOTICE: + Apache Commons Lang + Copyright 2001-2020 The Apache Software Foundation + + This product includes software developed at + The Apache Software Foundation (https://www.apache.org/). diff --git a/plugins/iceberg-metadata-catalog/licenses/httpclient-4.5.14.jar.sha1 b/plugins/iceberg-metadata-catalog/licenses/httpclient-4.5.14.jar.sha1 new file mode 100644 index 0000000000000..66e05851c2e3c --- /dev/null +++ b/plugins/iceberg-metadata-catalog/licenses/httpclient-4.5.14.jar.sha1 @@ -0,0 +1 @@ +1194890e6f56ec29177673f2f12d0b8e627dec98 \ No newline at end of file diff --git a/plugins/iceberg-metadata-catalog/licenses/httpclient-LICENSE.txt b/plugins/iceberg-metadata-catalog/licenses/httpclient-LICENSE.txt new file mode 100644 index 0000000000000..d645695673349 --- /dev/null +++ b/plugins/iceberg-metadata-catalog/licenses/httpclient-LICENSE.txt @@ -0,0 +1,202 @@ + + 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. diff --git a/plugins/iceberg-metadata-catalog/licenses/httpclient-NOTICE.txt b/plugins/iceberg-metadata-catalog/licenses/httpclient-NOTICE.txt new file mode 100644 index 0000000000000..cc382b8c55234 --- /dev/null +++ b/plugins/iceberg-metadata-catalog/licenses/httpclient-NOTICE.txt @@ -0,0 +1,8 @@ + +Apache HttpClient +Copyright 1999-2022 The Apache Software Foundation + +This product includes software developed at +The Apache Software Foundation (http://www.apache.org/). + + diff --git a/plugins/iceberg-metadata-catalog/licenses/httpcore-4.4.16.jar.sha1 b/plugins/iceberg-metadata-catalog/licenses/httpcore-4.4.16.jar.sha1 new file mode 100644 index 0000000000000..172110694b5bd --- /dev/null +++ b/plugins/iceberg-metadata-catalog/licenses/httpcore-4.4.16.jar.sha1 @@ -0,0 +1 @@ +51cf043c87253c9f58b539c9f7e44c8894223850 \ No newline at end of file diff --git a/plugins/iceberg-metadata-catalog/licenses/httpcore-LICENSE.txt b/plugins/iceberg-metadata-catalog/licenses/httpcore-LICENSE.txt new file mode 100644 index 0000000000000..d645695673349 --- /dev/null +++ b/plugins/iceberg-metadata-catalog/licenses/httpcore-LICENSE.txt @@ -0,0 +1,202 @@ + + 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. diff --git a/plugins/iceberg-metadata-catalog/licenses/httpcore-NOTICE.txt b/plugins/iceberg-metadata-catalog/licenses/httpcore-NOTICE.txt new file mode 100644 index 0000000000000..b246f9f5084ac --- /dev/null +++ b/plugins/iceberg-metadata-catalog/licenses/httpcore-NOTICE.txt @@ -0,0 +1,8 @@ + +Apache HttpCore +Copyright 2005-2022 The Apache Software Foundation + +This product includes software developed at +The Apache Software Foundation (http://www.apache.org/). + + diff --git a/plugins/iceberg-metadata-catalog/licenses/iceberg-LICENSE.txt b/plugins/iceberg-metadata-catalog/licenses/iceberg-LICENSE.txt new file mode 100644 index 0000000000000..efb46dab44da5 --- /dev/null +++ b/plugins/iceberg-metadata-catalog/licenses/iceberg-LICENSE.txt @@ -0,0 +1,336 @@ + + 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. + +-------------------------------------------------------------------------------- + +This product includes a gradle wrapper. + +* gradlew and gradle/wrapper/gradle-wrapper.properties + +Copyright: 2010-2019 Gradle Authors. +Home page: https://github.com/gradle/gradle +License: https://www.apache.org/licenses/LICENSE-2.0 + +-------------------------------------------------------------------------------- + +This product includes code from Apache Avro. + +* Conversion in DecimalWriter is based on Avro's Conversions.DecimalConversion. + +Copyright: 2014-2017 The Apache Software Foundation. +Home page: https://avro.apache.org/ +License: https://www.apache.org/licenses/LICENSE-2.0 + +-------------------------------------------------------------------------------- + +This product includes code from Apache Parquet. + +* DynMethods.java +* DynConstructors.java +* IOUtil.java readFully and tests +* ByteBufferInputStream implementations and tests + +Copyright: 2014-2017 The Apache Software Foundation. +Home page: https://parquet.apache.org/ +License: https://www.apache.org/licenses/LICENSE-2.0 + +-------------------------------------------------------------------------------- + +This product includes code from Cloudera Kite. + +* SchemaVisitor and visit methods + +Copyright: 2013-2017 Cloudera Inc. +Home page: https://kitesdk.org/ +License: https://www.apache.org/licenses/LICENSE-2.0 + +-------------------------------------------------------------------------------- + +This product includes code from Presto. + +* Retry wait and jitter logic in Tasks.java +* S3FileIO logic derived from PrestoS3FileSystem.java in S3InputStream.java + and S3OutputStream.java +* SQL grammar rules for parsing CALL statements in IcebergSqlExtensions.g4 +* some aspects of handling stored procedures + +Copyright: 2016 Facebook and contributors +Home page: https://prestodb.io/ +License: https://www.apache.org/licenses/LICENSE-2.0 + +-------------------------------------------------------------------------------- + +This product includes code from Apache iBATIS. + +* Hive ScriptRunner.java + +Copyright: 2004 Clinton Begin +Home page: https://ibatis.apache.org/ +License: https://www.apache.org/licenses/LICENSE-2.0 + +-------------------------------------------------------------------------------- + +This product includes code from Apache Hive. + +* Hive metastore derby schema in hive-schema-3.1.0.derby.sql + +Copyright: 2011-2018 The Apache Software Foundation +Home page: https://hive.apache.org/ +License: https://www.apache.org/licenses/LICENSE-2.0 + +-------------------------------------------------------------------------------- + +This product includes code from Apache Spark. + +* dev/check-license script +* vectorized reading of definition levels in BaseVectorizedParquetValuesReader.java +* portions of the extensions parser +* casting logic in AssignmentAlignmentSupport +* implementation of SetAccumulator. +* Connector expressions. + +Copyright: 2011-2018 The Apache Software Foundation +Home page: https://spark.apache.org/ +License: https://www.apache.org/licenses/LICENSE-2.0 + +-------------------------------------------------------------------------------- + +This product includes code from Delta Lake. + +* AssignmentAlignmentSupport is an independent development but UpdateExpressionsSupport in Delta was used as a reference. + +Copyright: 2020 The Delta Lake Project Authors. +Home page: https://delta.io/ +License: https://www.apache.org/licenses/LICENSE-2.0 + +-------------------------------------------------------------------------------- + +This product includes code from Apache Commons. + +* Core ArrayUtil. + +Copyright: 2020 The Apache Software Foundation +Home page: https://commons.apache.org/ +License: https://www.apache.org/licenses/LICENSE-2.0 + +-------------------------------------------------------------------------------- + +This product includes code from Apache HttpComponents Client. + +* retry and error handling logic in ExponentialHttpRequestRetryStrategy.java + +Copyright: 1999-2022 The Apache Software Foundation. +Home page: https://hc.apache.org/ +License: https://www.apache.org/licenses/LICENSE-2.0 + +-------------------------------------------------------------------------------- + +This product includes code from Apache Flink. + +* Parameterized test at class level logic in ParameterizedTestExtension.java +* Parameter provider annotation for parameterized tests in Parameters.java +* Parameter field annotation for parameterized tests in Parameter.java + +Copyright: 1999-2022 The Apache Software Foundation. +Home page: https://flink.apache.org/ +License: https://www.apache.org/licenses/LICENSE-2.0 \ No newline at end of file diff --git a/plugins/iceberg-metadata-catalog/licenses/iceberg-NOTICE.txt b/plugins/iceberg-metadata-catalog/licenses/iceberg-NOTICE.txt new file mode 100644 index 0000000000000..f202d2ab401b8 --- /dev/null +++ b/plugins/iceberg-metadata-catalog/licenses/iceberg-NOTICE.txt @@ -0,0 +1,26 @@ + +Apache Iceberg +Copyright 2017-2024 The Apache Software Foundation + +This product includes software developed at +The Apache Software Foundation (http://www.apache.org/). + +-------------------------------------------------------------------------------- + +This project includes code from Kite, developed at Cloudera, Inc. with +the following copyright notice: + +| Copyright 2013 Cloudera Inc. +| +| Licensed under the Apache License, Version 2.0 (the "License"); +| you may not use this file except in compliance with the License. +| You may obtain a copy of the License at +| +| http://www.apache.org/licenses/LICENSE-2.0 +| +| Unless required by applicable law or agreed to in writing, software +| distributed under the License is distributed on an "AS IS" BASIS, +| WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +| See the License for the specific language governing permissions and +| limitations under the License. + diff --git a/plugins/iceberg-metadata-catalog/licenses/iceberg-api-1.6.1.jar.sha1 b/plugins/iceberg-metadata-catalog/licenses/iceberg-api-1.6.1.jar.sha1 new file mode 100644 index 0000000000000..ca6eac9d90965 --- /dev/null +++ b/plugins/iceberg-metadata-catalog/licenses/iceberg-api-1.6.1.jar.sha1 @@ -0,0 +1 @@ +e1c6222f2fa8d05d7825d8e9af7b9bef089c0b5e \ No newline at end of file diff --git a/plugins/iceberg-metadata-catalog/licenses/iceberg-aws-1.6.1.jar.sha1 b/plugins/iceberg-metadata-catalog/licenses/iceberg-aws-1.6.1.jar.sha1 new file mode 100644 index 0000000000000..08426a51fd132 --- /dev/null +++ b/plugins/iceberg-metadata-catalog/licenses/iceberg-aws-1.6.1.jar.sha1 @@ -0,0 +1 @@ +c6d09611e0164fcd549f1b2aaf0d4da07e41764f \ No newline at end of file diff --git a/plugins/iceberg-metadata-catalog/licenses/iceberg-bundled-guava-1.6.1.jar.sha1 b/plugins/iceberg-metadata-catalog/licenses/iceberg-bundled-guava-1.6.1.jar.sha1 new file mode 100644 index 0000000000000..68a11f7d35f5d --- /dev/null +++ b/plugins/iceberg-metadata-catalog/licenses/iceberg-bundled-guava-1.6.1.jar.sha1 @@ -0,0 +1 @@ +00f6db9a5e6fe2374b5a494b08388c2b6e0792d8 \ No newline at end of file diff --git a/plugins/iceberg-metadata-catalog/licenses/iceberg-common-1.6.1.jar.sha1 b/plugins/iceberg-metadata-catalog/licenses/iceberg-common-1.6.1.jar.sha1 new file mode 100644 index 0000000000000..9a1d3d0fc68b2 --- /dev/null +++ b/plugins/iceberg-metadata-catalog/licenses/iceberg-common-1.6.1.jar.sha1 @@ -0,0 +1 @@ +127fc12785c42eeff7da15abca690655add7c710 \ No newline at end of file diff --git a/plugins/iceberg-metadata-catalog/licenses/iceberg-core-1.6.1.jar.sha1 b/plugins/iceberg-metadata-catalog/licenses/iceberg-core-1.6.1.jar.sha1 new file mode 100644 index 0000000000000..07b08a5e7a78d --- /dev/null +++ b/plugins/iceberg-metadata-catalog/licenses/iceberg-core-1.6.1.jar.sha1 @@ -0,0 +1 @@ +53c041061964825372701d75b96a67e82bc3b6da \ No newline at end of file diff --git a/plugins/iceberg-metadata-catalog/licenses/identity-spi-2.32.29.jar.sha1 b/plugins/iceberg-metadata-catalog/licenses/identity-spi-2.32.29.jar.sha1 new file mode 100644 index 0000000000000..1cc21fb6d0b5e --- /dev/null +++ b/plugins/iceberg-metadata-catalog/licenses/identity-spi-2.32.29.jar.sha1 @@ -0,0 +1 @@ +e8cec0ff6fbc275122523708d1cb57cfa7d04e38 \ No newline at end of file diff --git a/plugins/iceberg-metadata-catalog/licenses/identity-spi-LICENSE.txt b/plugins/iceberg-metadata-catalog/licenses/identity-spi-LICENSE.txt new file mode 100644 index 0000000000000..8b1f0292c621e --- /dev/null +++ b/plugins/iceberg-metadata-catalog/licenses/identity-spi-LICENSE.txt @@ -0,0 +1,206 @@ + + 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. + + Note: Other license terms may apply to certain, identified software files contained within or distributed + with the accompanying software if such terms are included in the directory containing the accompanying software. + Such other license terms will then apply in lieu of the terms of the software license above. \ No newline at end of file diff --git a/plugins/iceberg-metadata-catalog/licenses/identity-spi-NOTICE.txt b/plugins/iceberg-metadata-catalog/licenses/identity-spi-NOTICE.txt new file mode 100644 index 0000000000000..7b5a068903255 --- /dev/null +++ b/plugins/iceberg-metadata-catalog/licenses/identity-spi-NOTICE.txt @@ -0,0 +1,25 @@ +AWS SDK for Java 2.0 +Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved. + +This product includes software developed by +Amazon Technologies, Inc (http://www.amazon.com/). + +********************** +THIRD PARTY COMPONENTS +********************** +This software includes third party software subject to the following copyrights: +- XML parsing and utility functions from JetS3t - Copyright 2006-2009 James Murty. +- PKCS#1 PEM encoded private key parsing and utility functions from oauth.googlecode.com - Copyright 1998-2010 AOL Inc. +- Apache Commons Lang - https://github.com/apache/commons-lang +- Netty Reactive Streams - https://github.com/playframework/netty-reactive-streams +- Jackson-core - https://github.com/FasterXML/jackson-core +- Jackson-dataformat-cbor - https://github.com/FasterXML/jackson-dataformats-binary + +The licenses for these third party components are included in LICENSE.txt + +- For Apache Commons Lang see also this required NOTICE: + Apache Commons Lang + Copyright 2001-2020 The Apache Software Foundation + + This product includes software developed at + The Apache Software Foundation (https://www.apache.org/). diff --git a/plugins/iceberg-metadata-catalog/licenses/jackson-LICENSE.txt b/plugins/iceberg-metadata-catalog/licenses/jackson-LICENSE.txt new file mode 100644 index 0000000000000..d645695673349 --- /dev/null +++ b/plugins/iceberg-metadata-catalog/licenses/jackson-LICENSE.txt @@ -0,0 +1,202 @@ + + 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. diff --git a/plugins/iceberg-metadata-catalog/licenses/jackson-NOTICE.txt b/plugins/iceberg-metadata-catalog/licenses/jackson-NOTICE.txt new file mode 100644 index 0000000000000..e30a4782d7109 --- /dev/null +++ b/plugins/iceberg-metadata-catalog/licenses/jackson-NOTICE.txt @@ -0,0 +1,32 @@ +# Jackson JSON processor + +Jackson is a high-performance, Free/Open Source JSON processing library. +It was originally written by Tatu Saloranta (tatu.saloranta@iki.fi), and has +been in development since 2007. +It is currently developed by a community of developers. + +## Copyright + +Copyright 2007-, Tatu Saloranta (tatu.saloranta@iki.fi) + +## Licensing + +Jackson 2.x core and extension components are licensed under Apache License 2.0 +To find the details that apply to this artifact see the accompanying LICENSE file. + +## Credits + +A list of contributors may be found from CREDITS(-2.x) file, which is included +in some artifacts (usually source distributions); but is always available +from the source code management (SCM) system project uses. + +## FastDoubleParser + +jackson-core bundles a shaded copy of FastDoubleParser . +That code is available under an MIT license +under the following copyright. + +Copyright © 2023 Werner Randelshofer, Switzerland. MIT License. + +See FastDoubleParser-NOTICE for details of other source code included in FastDoubleParser +and the licenses and copyrights that apply to that code. diff --git a/plugins/iceberg-metadata-catalog/licenses/jackson-annotations-2.18.2.jar.sha1 b/plugins/iceberg-metadata-catalog/licenses/jackson-annotations-2.18.2.jar.sha1 new file mode 100644 index 0000000000000..a06e1d5f28425 --- /dev/null +++ b/plugins/iceberg-metadata-catalog/licenses/jackson-annotations-2.18.2.jar.sha1 @@ -0,0 +1 @@ +985d77751ebc7fce5db115a986bc9aa82f973f4a \ No newline at end of file diff --git a/plugins/iceberg-metadata-catalog/licenses/jackson-databind-2.18.2.jar.sha1 b/plugins/iceberg-metadata-catalog/licenses/jackson-databind-2.18.2.jar.sha1 new file mode 100644 index 0000000000000..eedbfff66c705 --- /dev/null +++ b/plugins/iceberg-metadata-catalog/licenses/jackson-databind-2.18.2.jar.sha1 @@ -0,0 +1 @@ +deef8697b92141fb6caf7aa86966cff4eec9b04f \ No newline at end of file diff --git a/plugins/iceberg-metadata-catalog/licenses/json-utils-2.32.29.jar.sha1 b/plugins/iceberg-metadata-catalog/licenses/json-utils-2.32.29.jar.sha1 new file mode 100644 index 0000000000000..17e2564e23a04 --- /dev/null +++ b/plugins/iceberg-metadata-catalog/licenses/json-utils-2.32.29.jar.sha1 @@ -0,0 +1 @@ +5023c73a3c527848120fd1ac753428db905cb566 \ No newline at end of file diff --git a/plugins/iceberg-metadata-catalog/licenses/json-utils-LICENSE.txt b/plugins/iceberg-metadata-catalog/licenses/json-utils-LICENSE.txt new file mode 100644 index 0000000000000..8b1f0292c621e --- /dev/null +++ b/plugins/iceberg-metadata-catalog/licenses/json-utils-LICENSE.txt @@ -0,0 +1,206 @@ + + 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. + + Note: Other license terms may apply to certain, identified software files contained within or distributed + with the accompanying software if such terms are included in the directory containing the accompanying software. + Such other license terms will then apply in lieu of the terms of the software license above. \ No newline at end of file diff --git a/plugins/iceberg-metadata-catalog/licenses/json-utils-NOTICE.txt b/plugins/iceberg-metadata-catalog/licenses/json-utils-NOTICE.txt new file mode 100644 index 0000000000000..7b5a068903255 --- /dev/null +++ b/plugins/iceberg-metadata-catalog/licenses/json-utils-NOTICE.txt @@ -0,0 +1,25 @@ +AWS SDK for Java 2.0 +Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved. + +This product includes software developed by +Amazon Technologies, Inc (http://www.amazon.com/). + +********************** +THIRD PARTY COMPONENTS +********************** +This software includes third party software subject to the following copyrights: +- XML parsing and utility functions from JetS3t - Copyright 2006-2009 James Murty. +- PKCS#1 PEM encoded private key parsing and utility functions from oauth.googlecode.com - Copyright 1998-2010 AOL Inc. +- Apache Commons Lang - https://github.com/apache/commons-lang +- Netty Reactive Streams - https://github.com/playframework/netty-reactive-streams +- Jackson-core - https://github.com/FasterXML/jackson-core +- Jackson-dataformat-cbor - https://github.com/FasterXML/jackson-dataformats-binary + +The licenses for these third party components are included in LICENSE.txt + +- For Apache Commons Lang see also this required NOTICE: + Apache Commons Lang + Copyright 2001-2020 The Apache Software Foundation + + This product includes software developed at + The Apache Software Foundation (https://www.apache.org/). diff --git a/plugins/iceberg-metadata-catalog/licenses/metrics-spi-2.32.29.jar.sha1 b/plugins/iceberg-metadata-catalog/licenses/metrics-spi-2.32.29.jar.sha1 new file mode 100644 index 0000000000000..d1ef56fe528fc --- /dev/null +++ b/plugins/iceberg-metadata-catalog/licenses/metrics-spi-2.32.29.jar.sha1 @@ -0,0 +1 @@ +8d2df1160a1bda2bc80e31490c6550f324a43b1e \ No newline at end of file diff --git a/plugins/iceberg-metadata-catalog/licenses/metrics-spi-LICENSE.txt b/plugins/iceberg-metadata-catalog/licenses/metrics-spi-LICENSE.txt new file mode 100644 index 0000000000000..8b1f0292c621e --- /dev/null +++ b/plugins/iceberg-metadata-catalog/licenses/metrics-spi-LICENSE.txt @@ -0,0 +1,206 @@ + + 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. + + Note: Other license terms may apply to certain, identified software files contained within or distributed + with the accompanying software if such terms are included in the directory containing the accompanying software. + Such other license terms will then apply in lieu of the terms of the software license above. \ No newline at end of file diff --git a/plugins/iceberg-metadata-catalog/licenses/metrics-spi-NOTICE.txt b/plugins/iceberg-metadata-catalog/licenses/metrics-spi-NOTICE.txt new file mode 100644 index 0000000000000..7b5a068903255 --- /dev/null +++ b/plugins/iceberg-metadata-catalog/licenses/metrics-spi-NOTICE.txt @@ -0,0 +1,25 @@ +AWS SDK for Java 2.0 +Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved. + +This product includes software developed by +Amazon Technologies, Inc (http://www.amazon.com/). + +********************** +THIRD PARTY COMPONENTS +********************** +This software includes third party software subject to the following copyrights: +- XML parsing and utility functions from JetS3t - Copyright 2006-2009 James Murty. +- PKCS#1 PEM encoded private key parsing and utility functions from oauth.googlecode.com - Copyright 1998-2010 AOL Inc. +- Apache Commons Lang - https://github.com/apache/commons-lang +- Netty Reactive Streams - https://github.com/playframework/netty-reactive-streams +- Jackson-core - https://github.com/FasterXML/jackson-core +- Jackson-dataformat-cbor - https://github.com/FasterXML/jackson-dataformats-binary + +The licenses for these third party components are included in LICENSE.txt + +- For Apache Commons Lang see also this required NOTICE: + Apache Commons Lang + Copyright 2001-2020 The Apache Software Foundation + + This product includes software developed at + The Apache Software Foundation (https://www.apache.org/). diff --git a/plugins/iceberg-metadata-catalog/licenses/profiles-2.32.29.jar.sha1 b/plugins/iceberg-metadata-catalog/licenses/profiles-2.32.29.jar.sha1 new file mode 100644 index 0000000000000..298ac799aecf8 --- /dev/null +++ b/plugins/iceberg-metadata-catalog/licenses/profiles-2.32.29.jar.sha1 @@ -0,0 +1 @@ +88199c8a933c034ecbfbda12f870d9cc95a41174 \ No newline at end of file diff --git a/plugins/iceberg-metadata-catalog/licenses/profiles-LICENSE.txt b/plugins/iceberg-metadata-catalog/licenses/profiles-LICENSE.txt new file mode 100644 index 0000000000000..8b1f0292c621e --- /dev/null +++ b/plugins/iceberg-metadata-catalog/licenses/profiles-LICENSE.txt @@ -0,0 +1,206 @@ + + 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. + + Note: Other license terms may apply to certain, identified software files contained within or distributed + with the accompanying software if such terms are included in the directory containing the accompanying software. + Such other license terms will then apply in lieu of the terms of the software license above. \ No newline at end of file diff --git a/plugins/iceberg-metadata-catalog/licenses/profiles-NOTICE.txt b/plugins/iceberg-metadata-catalog/licenses/profiles-NOTICE.txt new file mode 100644 index 0000000000000..7b5a068903255 --- /dev/null +++ b/plugins/iceberg-metadata-catalog/licenses/profiles-NOTICE.txt @@ -0,0 +1,25 @@ +AWS SDK for Java 2.0 +Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved. + +This product includes software developed by +Amazon Technologies, Inc (http://www.amazon.com/). + +********************** +THIRD PARTY COMPONENTS +********************** +This software includes third party software subject to the following copyrights: +- XML parsing and utility functions from JetS3t - Copyright 2006-2009 James Murty. +- PKCS#1 PEM encoded private key parsing and utility functions from oauth.googlecode.com - Copyright 1998-2010 AOL Inc. +- Apache Commons Lang - https://github.com/apache/commons-lang +- Netty Reactive Streams - https://github.com/playframework/netty-reactive-streams +- Jackson-core - https://github.com/FasterXML/jackson-core +- Jackson-dataformat-cbor - https://github.com/FasterXML/jackson-dataformats-binary + +The licenses for these third party components are included in LICENSE.txt + +- For Apache Commons Lang see also this required NOTICE: + Apache Commons Lang + Copyright 2001-2020 The Apache Software Foundation + + This product includes software developed at + The Apache Software Foundation (https://www.apache.org/). diff --git a/plugins/iceberg-metadata-catalog/licenses/protocol-core-2.32.29.jar.sha1 b/plugins/iceberg-metadata-catalog/licenses/protocol-core-2.32.29.jar.sha1 new file mode 100644 index 0000000000000..92aa9dafb3edc --- /dev/null +++ b/plugins/iceberg-metadata-catalog/licenses/protocol-core-2.32.29.jar.sha1 @@ -0,0 +1 @@ +5517efcb5f97e0178294025538119b1131557f62 \ No newline at end of file diff --git a/plugins/iceberg-metadata-catalog/licenses/protocol-core-LICENSE.txt b/plugins/iceberg-metadata-catalog/licenses/protocol-core-LICENSE.txt new file mode 100644 index 0000000000000..8b1f0292c621e --- /dev/null +++ b/plugins/iceberg-metadata-catalog/licenses/protocol-core-LICENSE.txt @@ -0,0 +1,206 @@ + + 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. + + Note: Other license terms may apply to certain, identified software files contained within or distributed + with the accompanying software if such terms are included in the directory containing the accompanying software. + Such other license terms will then apply in lieu of the terms of the software license above. \ No newline at end of file diff --git a/plugins/iceberg-metadata-catalog/licenses/protocol-core-NOTICE.txt b/plugins/iceberg-metadata-catalog/licenses/protocol-core-NOTICE.txt new file mode 100644 index 0000000000000..7b5a068903255 --- /dev/null +++ b/plugins/iceberg-metadata-catalog/licenses/protocol-core-NOTICE.txt @@ -0,0 +1,25 @@ +AWS SDK for Java 2.0 +Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved. + +This product includes software developed by +Amazon Technologies, Inc (http://www.amazon.com/). + +********************** +THIRD PARTY COMPONENTS +********************** +This software includes third party software subject to the following copyrights: +- XML parsing and utility functions from JetS3t - Copyright 2006-2009 James Murty. +- PKCS#1 PEM encoded private key parsing and utility functions from oauth.googlecode.com - Copyright 1998-2010 AOL Inc. +- Apache Commons Lang - https://github.com/apache/commons-lang +- Netty Reactive Streams - https://github.com/playframework/netty-reactive-streams +- Jackson-core - https://github.com/FasterXML/jackson-core +- Jackson-dataformat-cbor - https://github.com/FasterXML/jackson-dataformats-binary + +The licenses for these third party components are included in LICENSE.txt + +- For Apache Commons Lang see also this required NOTICE: + Apache Commons Lang + Copyright 2001-2020 The Apache Software Foundation + + This product includes software developed at + The Apache Software Foundation (https://www.apache.org/). diff --git a/plugins/iceberg-metadata-catalog/licenses/regions-2.32.29.jar.sha1 b/plugins/iceberg-metadata-catalog/licenses/regions-2.32.29.jar.sha1 new file mode 100644 index 0000000000000..c9dc3819c726d --- /dev/null +++ b/plugins/iceberg-metadata-catalog/licenses/regions-2.32.29.jar.sha1 @@ -0,0 +1 @@ +c2f5ab11716cb3aa57c9773eb9c8147b8672cd80 \ No newline at end of file diff --git a/plugins/iceberg-metadata-catalog/licenses/regions-LICENSE.txt b/plugins/iceberg-metadata-catalog/licenses/regions-LICENSE.txt new file mode 100644 index 0000000000000..8b1f0292c621e --- /dev/null +++ b/plugins/iceberg-metadata-catalog/licenses/regions-LICENSE.txt @@ -0,0 +1,206 @@ + + 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. + + Note: Other license terms may apply to certain, identified software files contained within or distributed + with the accompanying software if such terms are included in the directory containing the accompanying software. + Such other license terms will then apply in lieu of the terms of the software license above. \ No newline at end of file diff --git a/plugins/iceberg-metadata-catalog/licenses/regions-NOTICE.txt b/plugins/iceberg-metadata-catalog/licenses/regions-NOTICE.txt new file mode 100644 index 0000000000000..7b5a068903255 --- /dev/null +++ b/plugins/iceberg-metadata-catalog/licenses/regions-NOTICE.txt @@ -0,0 +1,25 @@ +AWS SDK for Java 2.0 +Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved. + +This product includes software developed by +Amazon Technologies, Inc (http://www.amazon.com/). + +********************** +THIRD PARTY COMPONENTS +********************** +This software includes third party software subject to the following copyrights: +- XML parsing and utility functions from JetS3t - Copyright 2006-2009 James Murty. +- PKCS#1 PEM encoded private key parsing and utility functions from oauth.googlecode.com - Copyright 1998-2010 AOL Inc. +- Apache Commons Lang - https://github.com/apache/commons-lang +- Netty Reactive Streams - https://github.com/playframework/netty-reactive-streams +- Jackson-core - https://github.com/FasterXML/jackson-core +- Jackson-dataformat-cbor - https://github.com/FasterXML/jackson-dataformats-binary + +The licenses for these third party components are included in LICENSE.txt + +- For Apache Commons Lang see also this required NOTICE: + Apache Commons Lang + Copyright 2001-2020 The Apache Software Foundation + + This product includes software developed at + The Apache Software Foundation (https://www.apache.org/). diff --git a/plugins/iceberg-metadata-catalog/licenses/retries-2.32.29.jar.sha1 b/plugins/iceberg-metadata-catalog/licenses/retries-2.32.29.jar.sha1 new file mode 100644 index 0000000000000..47a25c60aa401 --- /dev/null +++ b/plugins/iceberg-metadata-catalog/licenses/retries-2.32.29.jar.sha1 @@ -0,0 +1 @@ +0965d1a72e52270a228b206e6c3c795ecd3c40a7 \ No newline at end of file diff --git a/plugins/iceberg-metadata-catalog/licenses/retries-LICENSE.txt b/plugins/iceberg-metadata-catalog/licenses/retries-LICENSE.txt new file mode 100644 index 0000000000000..8b1f0292c621e --- /dev/null +++ b/plugins/iceberg-metadata-catalog/licenses/retries-LICENSE.txt @@ -0,0 +1,206 @@ + + 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. + + Note: Other license terms may apply to certain, identified software files contained within or distributed + with the accompanying software if such terms are included in the directory containing the accompanying software. + Such other license terms will then apply in lieu of the terms of the software license above. \ No newline at end of file diff --git a/plugins/iceberg-metadata-catalog/licenses/retries-NOTICE.txt b/plugins/iceberg-metadata-catalog/licenses/retries-NOTICE.txt new file mode 100644 index 0000000000000..7b5a068903255 --- /dev/null +++ b/plugins/iceberg-metadata-catalog/licenses/retries-NOTICE.txt @@ -0,0 +1,25 @@ +AWS SDK for Java 2.0 +Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved. + +This product includes software developed by +Amazon Technologies, Inc (http://www.amazon.com/). + +********************** +THIRD PARTY COMPONENTS +********************** +This software includes third party software subject to the following copyrights: +- XML parsing and utility functions from JetS3t - Copyright 2006-2009 James Murty. +- PKCS#1 PEM encoded private key parsing and utility functions from oauth.googlecode.com - Copyright 1998-2010 AOL Inc. +- Apache Commons Lang - https://github.com/apache/commons-lang +- Netty Reactive Streams - https://github.com/playframework/netty-reactive-streams +- Jackson-core - https://github.com/FasterXML/jackson-core +- Jackson-dataformat-cbor - https://github.com/FasterXML/jackson-dataformats-binary + +The licenses for these third party components are included in LICENSE.txt + +- For Apache Commons Lang see also this required NOTICE: + Apache Commons Lang + Copyright 2001-2020 The Apache Software Foundation + + This product includes software developed at + The Apache Software Foundation (https://www.apache.org/). diff --git a/plugins/iceberg-metadata-catalog/licenses/retries-spi-2.32.29.jar.sha1 b/plugins/iceberg-metadata-catalog/licenses/retries-spi-2.32.29.jar.sha1 new file mode 100644 index 0000000000000..a3e2d07252206 --- /dev/null +++ b/plugins/iceberg-metadata-catalog/licenses/retries-spi-2.32.29.jar.sha1 @@ -0,0 +1 @@ +e2adeddde9a8927d47491fcebbd19d7b50e659bf \ No newline at end of file diff --git a/plugins/iceberg-metadata-catalog/licenses/retries-spi-LICENSE.txt b/plugins/iceberg-metadata-catalog/licenses/retries-spi-LICENSE.txt new file mode 100644 index 0000000000000..8b1f0292c621e --- /dev/null +++ b/plugins/iceberg-metadata-catalog/licenses/retries-spi-LICENSE.txt @@ -0,0 +1,206 @@ + + 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. + + Note: Other license terms may apply to certain, identified software files contained within or distributed + with the accompanying software if such terms are included in the directory containing the accompanying software. + Such other license terms will then apply in lieu of the terms of the software license above. \ No newline at end of file diff --git a/plugins/iceberg-metadata-catalog/licenses/retries-spi-NOTICE.txt b/plugins/iceberg-metadata-catalog/licenses/retries-spi-NOTICE.txt new file mode 100644 index 0000000000000..7b5a068903255 --- /dev/null +++ b/plugins/iceberg-metadata-catalog/licenses/retries-spi-NOTICE.txt @@ -0,0 +1,25 @@ +AWS SDK for Java 2.0 +Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved. + +This product includes software developed by +Amazon Technologies, Inc (http://www.amazon.com/). + +********************** +THIRD PARTY COMPONENTS +********************** +This software includes third party software subject to the following copyrights: +- XML parsing and utility functions from JetS3t - Copyright 2006-2009 James Murty. +- PKCS#1 PEM encoded private key parsing and utility functions from oauth.googlecode.com - Copyright 1998-2010 AOL Inc. +- Apache Commons Lang - https://github.com/apache/commons-lang +- Netty Reactive Streams - https://github.com/playframework/netty-reactive-streams +- Jackson-core - https://github.com/FasterXML/jackson-core +- Jackson-dataformat-cbor - https://github.com/FasterXML/jackson-dataformats-binary + +The licenses for these third party components are included in LICENSE.txt + +- For Apache Commons Lang see also this required NOTICE: + Apache Commons Lang + Copyright 2001-2020 The Apache Software Foundation + + This product includes software developed at + The Apache Software Foundation (https://www.apache.org/). diff --git a/plugins/iceberg-metadata-catalog/licenses/s3-2.32.29.jar.sha1 b/plugins/iceberg-metadata-catalog/licenses/s3-2.32.29.jar.sha1 new file mode 100644 index 0000000000000..ed377b9ead755 --- /dev/null +++ b/plugins/iceberg-metadata-catalog/licenses/s3-2.32.29.jar.sha1 @@ -0,0 +1 @@ +7093e54566524fcf352c45c0338c23f8907deebe \ No newline at end of file diff --git a/plugins/iceberg-metadata-catalog/licenses/s3-LICENSE.txt b/plugins/iceberg-metadata-catalog/licenses/s3-LICENSE.txt new file mode 100644 index 0000000000000..8b1f0292c621e --- /dev/null +++ b/plugins/iceberg-metadata-catalog/licenses/s3-LICENSE.txt @@ -0,0 +1,206 @@ + + 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. + + Note: Other license terms may apply to certain, identified software files contained within or distributed + with the accompanying software if such terms are included in the directory containing the accompanying software. + Such other license terms will then apply in lieu of the terms of the software license above. \ No newline at end of file diff --git a/plugins/iceberg-metadata-catalog/licenses/s3-NOTICE.txt b/plugins/iceberg-metadata-catalog/licenses/s3-NOTICE.txt new file mode 100644 index 0000000000000..7b5a068903255 --- /dev/null +++ b/plugins/iceberg-metadata-catalog/licenses/s3-NOTICE.txt @@ -0,0 +1,25 @@ +AWS SDK for Java 2.0 +Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved. + +This product includes software developed by +Amazon Technologies, Inc (http://www.amazon.com/). + +********************** +THIRD PARTY COMPONENTS +********************** +This software includes third party software subject to the following copyrights: +- XML parsing and utility functions from JetS3t - Copyright 2006-2009 James Murty. +- PKCS#1 PEM encoded private key parsing and utility functions from oauth.googlecode.com - Copyright 1998-2010 AOL Inc. +- Apache Commons Lang - https://github.com/apache/commons-lang +- Netty Reactive Streams - https://github.com/playframework/netty-reactive-streams +- Jackson-core - https://github.com/FasterXML/jackson-core +- Jackson-dataformat-cbor - https://github.com/FasterXML/jackson-dataformats-binary + +The licenses for these third party components are included in LICENSE.txt + +- For Apache Commons Lang see also this required NOTICE: + Apache Commons Lang + Copyright 2001-2020 The Apache Software Foundation + + This product includes software developed at + The Apache Software Foundation (https://www.apache.org/). diff --git a/plugins/iceberg-metadata-catalog/licenses/sdk-core-2.32.29.jar.sha1 b/plugins/iceberg-metadata-catalog/licenses/sdk-core-2.32.29.jar.sha1 new file mode 100644 index 0000000000000..21020fe4a5497 --- /dev/null +++ b/plugins/iceberg-metadata-catalog/licenses/sdk-core-2.32.29.jar.sha1 @@ -0,0 +1 @@ +3543310eafe0964979e8a258fd78f51aded6af0a \ No newline at end of file diff --git a/plugins/iceberg-metadata-catalog/licenses/sdk-core-LICENSE.txt b/plugins/iceberg-metadata-catalog/licenses/sdk-core-LICENSE.txt new file mode 100644 index 0000000000000..8b1f0292c621e --- /dev/null +++ b/plugins/iceberg-metadata-catalog/licenses/sdk-core-LICENSE.txt @@ -0,0 +1,206 @@ + + 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. + + Note: Other license terms may apply to certain, identified software files contained within or distributed + with the accompanying software if such terms are included in the directory containing the accompanying software. + Such other license terms will then apply in lieu of the terms of the software license above. \ No newline at end of file diff --git a/plugins/iceberg-metadata-catalog/licenses/sdk-core-NOTICE.txt b/plugins/iceberg-metadata-catalog/licenses/sdk-core-NOTICE.txt new file mode 100644 index 0000000000000..7b5a068903255 --- /dev/null +++ b/plugins/iceberg-metadata-catalog/licenses/sdk-core-NOTICE.txt @@ -0,0 +1,25 @@ +AWS SDK for Java 2.0 +Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved. + +This product includes software developed by +Amazon Technologies, Inc (http://www.amazon.com/). + +********************** +THIRD PARTY COMPONENTS +********************** +This software includes third party software subject to the following copyrights: +- XML parsing and utility functions from JetS3t - Copyright 2006-2009 James Murty. +- PKCS#1 PEM encoded private key parsing and utility functions from oauth.googlecode.com - Copyright 1998-2010 AOL Inc. +- Apache Commons Lang - https://github.com/apache/commons-lang +- Netty Reactive Streams - https://github.com/playframework/netty-reactive-streams +- Jackson-core - https://github.com/FasterXML/jackson-core +- Jackson-dataformat-cbor - https://github.com/FasterXML/jackson-dataformats-binary + +The licenses for these third party components are included in LICENSE.txt + +- For Apache Commons Lang see also this required NOTICE: + Apache Commons Lang + Copyright 2001-2020 The Apache Software Foundation + + This product includes software developed at + The Apache Software Foundation (https://www.apache.org/). diff --git a/plugins/iceberg-metadata-catalog/licenses/signer-2.32.29.jar.sha1 b/plugins/iceberg-metadata-catalog/licenses/signer-2.32.29.jar.sha1 new file mode 100644 index 0000000000000..324a38f09aca9 --- /dev/null +++ b/plugins/iceberg-metadata-catalog/licenses/signer-2.32.29.jar.sha1 @@ -0,0 +1 @@ +60c1cc481376e369abfa822d52e2f918d9c95edd \ No newline at end of file diff --git a/plugins/iceberg-metadata-catalog/licenses/signer-LICENSE.txt b/plugins/iceberg-metadata-catalog/licenses/signer-LICENSE.txt new file mode 100644 index 0000000000000..8b1f0292c621e --- /dev/null +++ b/plugins/iceberg-metadata-catalog/licenses/signer-LICENSE.txt @@ -0,0 +1,206 @@ + + 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. + + Note: Other license terms may apply to certain, identified software files contained within or distributed + with the accompanying software if such terms are included in the directory containing the accompanying software. + Such other license terms will then apply in lieu of the terms of the software license above. \ No newline at end of file diff --git a/plugins/iceberg-metadata-catalog/licenses/signer-NOTICE.txt b/plugins/iceberg-metadata-catalog/licenses/signer-NOTICE.txt new file mode 100644 index 0000000000000..7b5a068903255 --- /dev/null +++ b/plugins/iceberg-metadata-catalog/licenses/signer-NOTICE.txt @@ -0,0 +1,25 @@ +AWS SDK for Java 2.0 +Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved. + +This product includes software developed by +Amazon Technologies, Inc (http://www.amazon.com/). + +********************** +THIRD PARTY COMPONENTS +********************** +This software includes third party software subject to the following copyrights: +- XML parsing and utility functions from JetS3t - Copyright 2006-2009 James Murty. +- PKCS#1 PEM encoded private key parsing and utility functions from oauth.googlecode.com - Copyright 1998-2010 AOL Inc. +- Apache Commons Lang - https://github.com/apache/commons-lang +- Netty Reactive Streams - https://github.com/playframework/netty-reactive-streams +- Jackson-core - https://github.com/FasterXML/jackson-core +- Jackson-dataformat-cbor - https://github.com/FasterXML/jackson-dataformats-binary + +The licenses for these third party components are included in LICENSE.txt + +- For Apache Commons Lang see also this required NOTICE: + Apache Commons Lang + Copyright 2001-2020 The Apache Software Foundation + + This product includes software developed at + The Apache Software Foundation (https://www.apache.org/). diff --git a/plugins/iceberg-metadata-catalog/licenses/slf4j-api-2.0.17.jar.sha1 b/plugins/iceberg-metadata-catalog/licenses/slf4j-api-2.0.17.jar.sha1 new file mode 100644 index 0000000000000..435f6c13a28b6 --- /dev/null +++ b/plugins/iceberg-metadata-catalog/licenses/slf4j-api-2.0.17.jar.sha1 @@ -0,0 +1 @@ +d9e58ac9c7779ba3bf8142aff6c830617a7fe60f \ No newline at end of file diff --git a/plugins/iceberg-metadata-catalog/licenses/slf4j-api-LICENSE.txt b/plugins/iceberg-metadata-catalog/licenses/slf4j-api-LICENSE.txt new file mode 100644 index 0000000000000..f687729a0b452 --- /dev/null +++ b/plugins/iceberg-metadata-catalog/licenses/slf4j-api-LICENSE.txt @@ -0,0 +1,21 @@ +Copyright (c) 2004-2022 QOS.ch Sarl (Switzerland) +All rights reserved. + +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. diff --git a/plugins/iceberg-metadata-catalog/licenses/slf4j-api-NOTICE.txt b/plugins/iceberg-metadata-catalog/licenses/slf4j-api-NOTICE.txt new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/plugins/iceberg-metadata-catalog/licenses/sts-2.32.29.jar.sha1 b/plugins/iceberg-metadata-catalog/licenses/sts-2.32.29.jar.sha1 new file mode 100644 index 0000000000000..8293dae96c557 --- /dev/null +++ b/plugins/iceberg-metadata-catalog/licenses/sts-2.32.29.jar.sha1 @@ -0,0 +1 @@ +e87b54e2b10f4889525253d849acdd130f5d2b20 \ No newline at end of file diff --git a/plugins/iceberg-metadata-catalog/licenses/sts-LICENSE.txt b/plugins/iceberg-metadata-catalog/licenses/sts-LICENSE.txt new file mode 100644 index 0000000000000..8b1f0292c621e --- /dev/null +++ b/plugins/iceberg-metadata-catalog/licenses/sts-LICENSE.txt @@ -0,0 +1,206 @@ + + 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. + + Note: Other license terms may apply to certain, identified software files contained within or distributed + with the accompanying software if such terms are included in the directory containing the accompanying software. + Such other license terms will then apply in lieu of the terms of the software license above. \ No newline at end of file diff --git a/plugins/iceberg-metadata-catalog/licenses/sts-NOTICE.txt b/plugins/iceberg-metadata-catalog/licenses/sts-NOTICE.txt new file mode 100644 index 0000000000000..7b5a068903255 --- /dev/null +++ b/plugins/iceberg-metadata-catalog/licenses/sts-NOTICE.txt @@ -0,0 +1,25 @@ +AWS SDK for Java 2.0 +Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved. + +This product includes software developed by +Amazon Technologies, Inc (http://www.amazon.com/). + +********************** +THIRD PARTY COMPONENTS +********************** +This software includes third party software subject to the following copyrights: +- XML parsing and utility functions from JetS3t - Copyright 2006-2009 James Murty. +- PKCS#1 PEM encoded private key parsing and utility functions from oauth.googlecode.com - Copyright 1998-2010 AOL Inc. +- Apache Commons Lang - https://github.com/apache/commons-lang +- Netty Reactive Streams - https://github.com/playframework/netty-reactive-streams +- Jackson-core - https://github.com/FasterXML/jackson-core +- Jackson-dataformat-cbor - https://github.com/FasterXML/jackson-dataformats-binary + +The licenses for these third party components are included in LICENSE.txt + +- For Apache Commons Lang see also this required NOTICE: + Apache Commons Lang + Copyright 2001-2020 The Apache Software Foundation + + This product includes software developed at + The Apache Software Foundation (https://www.apache.org/). diff --git a/plugins/iceberg-metadata-catalog/licenses/third-party-jackson-core-2.32.29.jar.sha1 b/plugins/iceberg-metadata-catalog/licenses/third-party-jackson-core-2.32.29.jar.sha1 new file mode 100644 index 0000000000000..7aa9544e0b4f8 --- /dev/null +++ b/plugins/iceberg-metadata-catalog/licenses/third-party-jackson-core-2.32.29.jar.sha1 @@ -0,0 +1 @@ +353f1bc581436330ae3f7a643f59f88cae6d56c4 \ No newline at end of file diff --git a/plugins/iceberg-metadata-catalog/licenses/third-party-jackson-core-LICENSE.txt b/plugins/iceberg-metadata-catalog/licenses/third-party-jackson-core-LICENSE.txt new file mode 100644 index 0000000000000..8b1f0292c621e --- /dev/null +++ b/plugins/iceberg-metadata-catalog/licenses/third-party-jackson-core-LICENSE.txt @@ -0,0 +1,206 @@ + + 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. + + Note: Other license terms may apply to certain, identified software files contained within or distributed + with the accompanying software if such terms are included in the directory containing the accompanying software. + Such other license terms will then apply in lieu of the terms of the software license above. \ No newline at end of file diff --git a/plugins/iceberg-metadata-catalog/licenses/third-party-jackson-core-NOTICE.txt b/plugins/iceberg-metadata-catalog/licenses/third-party-jackson-core-NOTICE.txt new file mode 100644 index 0000000000000..7b5a068903255 --- /dev/null +++ b/plugins/iceberg-metadata-catalog/licenses/third-party-jackson-core-NOTICE.txt @@ -0,0 +1,25 @@ +AWS SDK for Java 2.0 +Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved. + +This product includes software developed by +Amazon Technologies, Inc (http://www.amazon.com/). + +********************** +THIRD PARTY COMPONENTS +********************** +This software includes third party software subject to the following copyrights: +- XML parsing and utility functions from JetS3t - Copyright 2006-2009 James Murty. +- PKCS#1 PEM encoded private key parsing and utility functions from oauth.googlecode.com - Copyright 1998-2010 AOL Inc. +- Apache Commons Lang - https://github.com/apache/commons-lang +- Netty Reactive Streams - https://github.com/playframework/netty-reactive-streams +- Jackson-core - https://github.com/FasterXML/jackson-core +- Jackson-dataformat-cbor - https://github.com/FasterXML/jackson-dataformats-binary + +The licenses for these third party components are included in LICENSE.txt + +- For Apache Commons Lang see also this required NOTICE: + Apache Commons Lang + Copyright 2001-2020 The Apache Software Foundation + + This product includes software developed at + The Apache Software Foundation (https://www.apache.org/). diff --git a/plugins/iceberg-metadata-catalog/licenses/utils-2.32.29.jar.sha1 b/plugins/iceberg-metadata-catalog/licenses/utils-2.32.29.jar.sha1 new file mode 100644 index 0000000000000..7dcdd1108fede --- /dev/null +++ b/plugins/iceberg-metadata-catalog/licenses/utils-2.32.29.jar.sha1 @@ -0,0 +1 @@ +d55b3a57181ead09604da6a5d736a49d793abbfc \ No newline at end of file diff --git a/plugins/iceberg-metadata-catalog/licenses/utils-LICENSE.txt b/plugins/iceberg-metadata-catalog/licenses/utils-LICENSE.txt new file mode 100644 index 0000000000000..8b1f0292c621e --- /dev/null +++ b/plugins/iceberg-metadata-catalog/licenses/utils-LICENSE.txt @@ -0,0 +1,206 @@ + + 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. + + Note: Other license terms may apply to certain, identified software files contained within or distributed + with the accompanying software if such terms are included in the directory containing the accompanying software. + Such other license terms will then apply in lieu of the terms of the software license above. \ No newline at end of file diff --git a/plugins/iceberg-metadata-catalog/licenses/utils-NOTICE.txt b/plugins/iceberg-metadata-catalog/licenses/utils-NOTICE.txt new file mode 100644 index 0000000000000..7b5a068903255 --- /dev/null +++ b/plugins/iceberg-metadata-catalog/licenses/utils-NOTICE.txt @@ -0,0 +1,25 @@ +AWS SDK for Java 2.0 +Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved. + +This product includes software developed by +Amazon Technologies, Inc (http://www.amazon.com/). + +********************** +THIRD PARTY COMPONENTS +********************** +This software includes third party software subject to the following copyrights: +- XML parsing and utility functions from JetS3t - Copyright 2006-2009 James Murty. +- PKCS#1 PEM encoded private key parsing and utility functions from oauth.googlecode.com - Copyright 1998-2010 AOL Inc. +- Apache Commons Lang - https://github.com/apache/commons-lang +- Netty Reactive Streams - https://github.com/playframework/netty-reactive-streams +- Jackson-core - https://github.com/FasterXML/jackson-core +- Jackson-dataformat-cbor - https://github.com/FasterXML/jackson-dataformats-binary + +The licenses for these third party components are included in LICENSE.txt + +- For Apache Commons Lang see also this required NOTICE: + Apache Commons Lang + Copyright 2001-2020 The Apache Software Foundation + + This product includes software developed at + The Apache Software Foundation (https://www.apache.org/). diff --git a/plugins/iceberg-metadata-catalog/src/main/java/org/opensearch/plugin/catalog/iceberg/IcebergCatalogPlugin.java b/plugins/iceberg-metadata-catalog/src/main/java/org/opensearch/plugin/catalog/iceberg/IcebergCatalogPlugin.java new file mode 100644 index 0000000000000..204c1f2d0c616 --- /dev/null +++ b/plugins/iceberg-metadata-catalog/src/main/java/org/opensearch/plugin/catalog/iceberg/IcebergCatalogPlugin.java @@ -0,0 +1,76 @@ +/* + * SPDX-License-Identifier: Apache-2.0 + * + * The OpenSearch Contributors require contributions made to + * this file be licensed under the Apache-2.0 license or a + * compatible open source license. + */ + +package org.opensearch.plugin.catalog.iceberg; + +import org.opensearch.catalog.CatalogRepository; +import org.opensearch.catalog.MetadataClient; +import org.opensearch.cluster.service.ClusterService; +import org.opensearch.common.settings.Setting; +import org.opensearch.core.xcontent.NamedXContentRegistry; +import org.opensearch.env.Environment; +import org.opensearch.indices.recovery.RecoverySettings; +import org.opensearch.plugin.catalog.iceberg.credentials.IcebergClientSettings; +import org.opensearch.plugins.CatalogPlugin; +import org.opensearch.plugins.Plugin; +import org.opensearch.plugins.RepositoryPlugin; +import org.opensearch.repositories.Repository; + +import java.util.Arrays; +import java.util.Collections; +import java.util.List; +import java.util.Map; + +/** + * Plugin entry point for the Iceberg metadata catalog. + *

+ * Registers the {@code iceberg_s3tables} repository type as an internal repository via + * {@link RepositoryPlugin#getInternalRepositories} and an {@link IcebergMetadataClient} via + * {@link CatalogPlugin}. The repository is internal because it is provisioned by core from + * node settings rather than by the public {@code _snapshot} REST API. + */ +public class IcebergCatalogPlugin extends Plugin implements RepositoryPlugin, CatalogPlugin { + + /** Creates a new instance. */ + public IcebergCatalogPlugin() {} + + @Override + public Map getInternalRepositories( + Environment env, + NamedXContentRegistry namedXContentRegistry, + ClusterService clusterService, + RecoverySettings recoverySettings + ) { + return Collections.singletonMap(IcebergCatalogRepository.TYPE, IcebergCatalogRepository::new); + } + + @Override + public MetadataClient createMetadataClient(CatalogRepository repository, Environment environment) { + if (!(repository instanceof IcebergCatalogRepository)) { + throw new IllegalArgumentException("expected an IcebergCatalogRepository but got [" + repository.getClass().getName() + "]"); + } + return new IcebergMetadataClient((IcebergCatalogRepository) repository, environment); + } + + @Override + public List> getSettings() { + return Arrays.asList( + // Repository-scoped settings (come in under catalog.repository.settings.* prefix). + IcebergCatalogRepository.BUCKET_ARN_SETTING, + IcebergCatalogRepository.REGION_SETTING, + IcebergCatalogRepository.CATALOG_ENDPOINT_SETTING, + IcebergCatalogRepository.ROLE_ARN_SETTING, + IcebergCatalogRepository.ROLE_SESSION_NAME_SETTING, + IcebergCatalogRepository.IDENTITY_TOKEN_FILE_SETTING, + // Cluster-keystore-backed credentials (catalog.credentials.*). + IcebergClientSettings.ACCESS_KEY_SETTING, + IcebergClientSettings.SECRET_KEY_SETTING, + IcebergClientSettings.SESSION_TOKEN_SETTING + ); + } +} diff --git a/plugins/iceberg-metadata-catalog/src/main/java/org/opensearch/plugin/catalog/iceberg/IcebergCatalogRepository.java b/plugins/iceberg-metadata-catalog/src/main/java/org/opensearch/plugin/catalog/iceberg/IcebergCatalogRepository.java new file mode 100644 index 0000000000000..0c17eef394aed --- /dev/null +++ b/plugins/iceberg-metadata-catalog/src/main/java/org/opensearch/plugin/catalog/iceberg/IcebergCatalogRepository.java @@ -0,0 +1,135 @@ +/* + * SPDX-License-Identifier: Apache-2.0 + * + * The OpenSearch Contributors require contributions made to + * this file be licensed under the Apache-2.0 license or a + * compatible open source license. + */ + +package org.opensearch.plugin.catalog.iceberg; + +import org.opensearch.catalog.CatalogRepository; +import org.opensearch.cluster.metadata.RepositoryMetadata; +import org.opensearch.common.settings.Setting; +import org.opensearch.common.settings.Settings; +import org.opensearch.core.common.Strings; + +/** + * {@link CatalogRepository} backed by Apache Iceberg tables on AWS S3 Tables. + *

+ * Holds the connection settings for the warehouse bucket and REST catalog endpoint; all + * read/write operations live on {@link IcebergMetadataClient}. Settings are validated + * in the constructor — any missing required value fails node startup. + *

+ * Settings (under the {@code catalog.repository.settings.} node-setting prefix): + *

+ * + * @opensearch.experimental + */ +public class IcebergCatalogRepository extends CatalogRepository { + + /** Repository type identifier registered via {@code getInternalRepositories()}. */ + public static final String TYPE = "iceberg_s3tables"; + + /** ARN of the S3 Tables bucket that stores the warehouse data files. */ + public static final Setting BUCKET_ARN_SETTING = Setting.simpleString("bucket_arn", Setting.Property.NodeScope); + + /** AWS region of the S3 Tables bucket and the REST catalog endpoint. */ + public static final Setting REGION_SETTING = Setting.simpleString("region", Setting.Property.NodeScope); + + /** + * URL of the Iceberg REST catalog service. If empty, the default is derived from + * {@link #REGION_SETTING} as {@code https://s3tables..amazonaws.com/iceberg}. + */ + public static final Setting CATALOG_ENDPOINT_SETTING = Setting.simpleString("catalog_endpoint", Setting.Property.NodeScope); + + /** ARN of the IAM role to assume when reaching S3 / the REST catalog. */ + public static final Setting ROLE_ARN_SETTING = Setting.simpleString("role_arn", Setting.Property.NodeScope); + + /** STS session name used when assuming {@link #ROLE_ARN_SETTING}. */ + public static final Setting ROLE_SESSION_NAME_SETTING = Setting.simpleString("role_session_name", Setting.Property.NodeScope); + + /** + * Filesystem path to an OIDC web-identity token file. When set together with + * {@link #ROLE_ARN_SETTING}, the credentials builder uses + * {@code StsWebIdentityTokenFileCredentialsProvider} (IRSA). Relative paths are + * resolved against {@code Environment.configDir()}. + */ + public static final Setting IDENTITY_TOKEN_FILE_SETTING = Setting.simpleString( + "identity_token_file", + Setting.Property.NodeScope + ); + + /** + * Creates a new repository from the given metadata. Validates the settings — a + * missing {@code bucket_arn} or {@code region} fails fast. + * + * @param metadata repository metadata including name and user-supplied settings + */ + public IcebergCatalogRepository(RepositoryMetadata metadata) { + super(metadata); + validateRequiredSettings(metadata); + } + + /** + * Validates required settings. Throws {@link IllegalArgumentException} if + * {@code bucket_arn} or {@code region} are missing or empty. + */ + private static void validateRequiredSettings(RepositoryMetadata metadata) { + Settings settings = metadata.settings(); + if (Strings.isNullOrEmpty(BUCKET_ARN_SETTING.get(settings))) { + throw new IllegalArgumentException( + "repository [" + metadata.name() + "] is missing required setting [" + BUCKET_ARN_SETTING.getKey() + "]" + ); + } + if (Strings.isNullOrEmpty(REGION_SETTING.get(settings))) { + throw new IllegalArgumentException( + "repository [" + metadata.name() + "] is missing required setting [" + REGION_SETTING.getKey() + "]" + ); + } + } + + /** Returns the configured S3 Tables bucket ARN. Never null or empty. */ + public String getBucketArn() { + return BUCKET_ARN_SETTING.get(getMetadata().settings()); + } + + /** Returns the configured AWS region. Never null or empty. */ + public String getRegion() { + return REGION_SETTING.get(getMetadata().settings()); + } + + /** + * Returns the REST catalog endpoint URL. If {@link #CATALOG_ENDPOINT_SETTING} is + * not set, derives the default S3 Tables endpoint from the region. + */ + public String getCatalogEndpoint() { + String configured = CATALOG_ENDPOINT_SETTING.get(getMetadata().settings()); + if (!Strings.isNullOrEmpty(configured)) { + return configured; + } + return "https://s3tables." + getRegion() + ".amazonaws.com/iceberg"; + } + + /** Returns the configured role ARN, or an empty string if unset. */ + public String getRoleArn() { + return ROLE_ARN_SETTING.get(getMetadata().settings()); + } + + /** Returns the configured STS role session name, or an empty string if unset. */ + public String getRoleSessionName() { + return ROLE_SESSION_NAME_SETTING.get(getMetadata().settings()); + } + + /** Returns the configured web-identity token file path, or an empty string if unset. */ + public String getIdentityTokenFile() { + return IDENTITY_TOKEN_FILE_SETTING.get(getMetadata().settings()); + } +} diff --git a/plugins/iceberg-metadata-catalog/src/main/java/org/opensearch/plugin/catalog/iceberg/IcebergMetadataClient.java b/plugins/iceberg-metadata-catalog/src/main/java/org/opensearch/plugin/catalog/iceberg/IcebergMetadataClient.java new file mode 100644 index 0000000000000..e935f4f052ee2 --- /dev/null +++ b/plugins/iceberg-metadata-catalog/src/main/java/org/opensearch/plugin/catalog/iceberg/IcebergMetadataClient.java @@ -0,0 +1,476 @@ +/* + * SPDX-License-Identifier: Apache-2.0 + * + * The OpenSearch Contributors require contributions made to + * this file be licensed under the Apache-2.0 license or a + * compatible open source license. + */ + +package org.opensearch.plugin.catalog.iceberg; + +import software.amazon.awssdk.auth.credentials.AwsCredentialsProvider; + +import org.apache.iceberg.AppendFiles; +import org.apache.iceberg.DataFile; +import org.apache.iceberg.FileScanTask; +import org.apache.iceberg.PartitionSpec; +import org.apache.iceberg.Schema; +import org.apache.iceberg.Snapshot; +import org.apache.iceberg.StructLike; +import org.apache.iceberg.Table; +import org.apache.iceberg.aws.AwsClientProperties; +import org.apache.iceberg.aws.AwsProperties; +import org.apache.iceberg.aws.s3.S3FileIO; +import org.apache.iceberg.catalog.Catalog; +import org.apache.iceberg.catalog.Namespace; +import org.apache.iceberg.catalog.TableIdentifier; +import org.apache.iceberg.exceptions.CommitFailedException; +import org.apache.iceberg.io.CloseableIterable; +import org.apache.iceberg.io.FileIO; +import org.apache.iceberg.rest.RESTCatalog; +import org.apache.logging.log4j.LogManager; +import org.apache.logging.log4j.Logger; +import org.apache.logging.log4j.message.ParameterizedMessage; +import org.opensearch.catalog.MetadataClient; +import org.opensearch.cluster.metadata.IndexMetadata; +import org.opensearch.env.Environment; +import org.opensearch.index.store.RemoteSegmentStoreDirectory; +import org.opensearch.index.store.remote.metadata.RemoteSegmentMetadata; +import org.opensearch.plugin.catalog.iceberg.credentials.CredentialsBuilder; +import org.opensearch.plugin.catalog.iceberg.credentials.IcebergClientCredentialsProvider; +import org.opensearch.plugin.catalog.iceberg.credentials.IcebergClientSettings; + +import java.io.IOException; +import java.util.ArrayList; +import java.util.Collections; +import java.util.HashMap; +import java.util.HashSet; +import java.util.List; +import java.util.Map; +import java.util.Set; + +/** + * {@link MetadataClient} implementation backed by an Apache Iceberg REST catalog on + * AWS S3 Tables. + *

+ * One instance per node. Constructs a single {@link RESTCatalog} wired with the + * plugin's credential resolution (see + * {@link org.opensearch.plugin.catalog.iceberg.credentials}) and a {@link S3FileIO} for + * data-plane access. The credentials provider is handed to Iceberg via its + * {@code client.credentials-provider} reflection hook — the same hook covers both + * {@link S3FileIO} and the REST catalog's {@code RESTSigV4Signer}. + *

+ * This PR implements the catalog operations needed by core's orchestration: + * {@link #initialize}, {@link #finalizePublish}, {@link #indexExists}, and {@link #close}. + * {@link #getMetadata} returns {@code null} for now — IndexMetadata persistence (for + * cold-tier restore) is deferred to a follow-up PR that will use an S3 sidecar object + * or an Iceberg Puffin file rather than a table property, to avoid Iceberg's + * metadata.json rewrite cost on every commit. The per-shard {@link #publish} still + * throws {@link UnsupportedOperationException}; it lands in a follow-up. + * + * @opensearch.experimental + */ +public class IcebergMetadataClient implements MetadataClient { + + private static final Logger logger = LogManager.getLogger(IcebergMetadataClient.class); + + /** Namespace under which all OpenSearch-published Iceberg tables are created. */ + public static final String NAMESPACE = "opensearch"; + + /** Key for the Iceberg table property that stores the source OpenSearch index UUID. */ + static final String PROPERTY_INDEX_UUID = "opensearch.index_uuid"; + + /** Max attempts for {@link #finalizePublish} rollback on a {@link CommitFailedException}. */ + private static final int FINALIZE_MAX_ATTEMPTS = 3; + + /** Initial backoff delay in millis for {@link #finalizePublish} retry. */ + private static final long FINALIZE_INITIAL_BACKOFF_MILLIS = 1000L; + + private final IcebergCatalogRepository repository; + private final Environment environment; + private final Catalog catalog; + private final AwsCredentialsProvider credentialsProvider; + private final String registryKey; + + /** + * Creates a new client bound to the given repository. Resolves credentials, registers + * them with the {@link IcebergClientCredentialsProvider} registry, builds a + * {@link RESTCatalog} pointing at the configured endpoint, and loads the OpenSearch + * namespace. + * + * @param repository catalog repository holding the warehouse settings + * @param environment node environment (for keystore secrets + config dir resolution) + */ + public IcebergMetadataClient(IcebergCatalogRepository repository, Environment environment) { + this.repository = repository; + this.environment = environment; + + IcebergClientSettings clientSettings = IcebergClientSettings.load(repository, environment); + this.credentialsProvider = CredentialsBuilder.build(clientSettings); + this.registryKey = IcebergClientCredentialsProvider.register(credentialsProvider); + + Map properties = buildCatalogProperties(); + try { + RESTCatalog c = new RESTCatalog(); + c.initialize(NAMESPACE, properties); + this.catalog = c; + } catch (RuntimeException e) { + IcebergClientCredentialsProvider.deregister(registryKey); + throw e; + } + } + + /** + * Test-only constructor. Accepts a pre-built catalog and bypasses credential resolution + * and REST endpoint setup. Package-private so tests can inject an in-memory or mocked + * {@link Catalog} without reaching the network. + */ + IcebergMetadataClient(Catalog catalog) { + this.repository = null; + this.environment = null; + this.catalog = catalog; + this.credentialsProvider = null; + this.registryKey = null; + } + + private Map buildCatalogProperties() { + Map props = new HashMap<>(); + props.put(org.apache.iceberg.CatalogProperties.URI, repository.getCatalogEndpoint()); + props.put(org.apache.iceberg.CatalogProperties.WAREHOUSE_LOCATION, repository.getBucketArn()); + props.put(org.apache.iceberg.CatalogProperties.FILE_IO_IMPL, S3FileIO.class.getName()); + + // rest.sigv4-enabled is a package-private string in HTTPClient; AwsProperties exposes + // the companion signer-region / signing-name keys as public constants. + props.put("rest.sigv4-enabled", "true"); + props.put(AwsProperties.REST_SIGNER_REGION, repository.getRegion()); + props.put(AwsProperties.REST_SIGNING_NAME, "s3tables"); + + props.put(AwsClientProperties.CLIENT_REGION, repository.getRegion()); + props.put(AwsClientProperties.CLIENT_CREDENTIALS_PROVIDER, IcebergClientCredentialsProvider.class.getName()); + props.put(IcebergClientCredentialsProvider.REGISTRY_KEY_PROPERTY, registryKey); + return props; + } + + @Override + public String initialize(String indexName, IndexMetadata indexMetadata) throws IOException { + TableIdentifier id = tableId(indexName); + String expectedIndexUUID = indexMetadata.getIndexUUID(); + Table table; + Snapshot currentSnapshot; + + if (catalog.tableExists(id)) { + table = catalog.loadTable(id); + String storedIndexUUID = table.properties().get(PROPERTY_INDEX_UUID); + if (storedIndexUUID == null) { + // Table exists but was not created by this plugin (or predates the property). + // Fail closed: publishing into it would mix two indices' data under incompatible + // partition values. + throw new IOException( + "Iceberg table [" + + id + + "] is missing required property [" + + PROPERTY_INDEX_UUID + + "]. Table was not created by this plugin or is from an earlier incompatible version." + ); + } + if (!storedIndexUUID.equals(expectedIndexUUID)) { + // Namespace collision: caller's index UUID does not match the table's stamped UUID. + // Reject so we don't silently merge two unrelated indices that happen to share a name. + throw new IOException( + "Iceberg table [" + + id + + "] belongs to a different OpenSearch index (stored UUID [" + + storedIndexUUID + + "] does not match current index UUID [" + + expectedIndexUUID + + "])." + ); + } + currentSnapshot = table.currentSnapshot(); + logger.info("Catalog table [{}] exists with matching index UUID; reusing", id); + } else { + Schema schema = OpenSearchSchemaInference.inferSchema(indexMetadata); + PartitionSpec spec = OpenSearchSchemaInference.partitionSpec(schema); + Map tableProperties = new HashMap<>(); + tableProperties.put(PROPERTY_INDEX_UUID, expectedIndexUUID); + table = catalog.createTable(id, schema, spec, tableProperties); + currentSnapshot = null; + logger.info("Created catalog table [{}] for index [{}] with index UUID [{}]", id, indexName, expectedIndexUUID); + } + + return currentSnapshot == null ? null : Long.toString(currentSnapshot.snapshotId()); + } + + @Override + public void publish(String indexName, RemoteSegmentStoreDirectory remoteDirectory, int shardId) throws IOException { + TableIdentifier id = tableId(indexName); + PublishContext ctx = PublishContext.create(catalog, id, indexName, shardId); + + List parquetFiles = discoverParquetFiles(remoteDirectory); + if (parquetFiles.isEmpty()) { + logger.info("No parquet files discovered for shard [{}][{}]; skipping publish", indexName, shardId); + return; + } + + List uploaded = new ArrayList<>(parquetFiles.size()); + FileIO fileIO = ctx.table().io(); + for (String remoteFilename : parquetFiles) { + uploaded.add(ParquetFileUploader.upload(ctx, remoteDirectory, remoteFilename, fileIO)); + } + + appendWithRetry(ctx, uploaded); + } + + /** + * Discovers committed parquet files for this shard via + * {@link RemoteSegmentStoreDirectory#readLatestMetadataFile()}. Returns the logical + * remote-store filenames (UUID-suffixed, as stored in the metadata file). An empty + * result means the shard has no parquet files committed yet — a valid no-op. + *

+ * The remote-store layout suffixes each filename with {@code "__"} after the + * extension (e.g. {@code _0.parquet__gX7bNIIBrs0AUNsR2yEG}), so a plain + * {@link String#endsWith(String) endsWith(".parquet")} check does not work. We + * strip the suffix at its first {@code "__"} marker before comparing the extension. + */ + private static List discoverParquetFiles(RemoteSegmentStoreDirectory remoteDirectory) throws IOException { + RemoteSegmentMetadata metadata = remoteDirectory.readLatestMetadataFile(); + if (metadata == null) { + return Collections.emptyList(); + } + List out = new ArrayList<>(); + for (String filename : metadata.getMetadata().keySet()) { + if (isParquetFilename(filename)) { + out.add(filename); + } + } + return out; + } + + /** + * Returns {@code true} if the remote-store filename represents a parquet file, + * ignoring the {@code "__"} suffix appended by the remote store. + */ + static boolean isParquetFilename(String filename) { + int suffixIndex = filename.indexOf("__"); + String logicalName = suffixIndex >= 0 ? filename.substring(0, suffixIndex) : filename; + return logicalName.endsWith(".parquet"); + } + + /** + * Registers the uploaded {@code DataFile}s in the Iceberg table via {@code AppendFiles}. + * Applies the filter-before-commit pattern: on each attempt, refresh the table, drop any + * files already tracked in this shard's partition, and skip the commit entirely when the + * filtered set is empty. Combined with the content-addressed warehouse paths (layer 3) + * and Iceberg's {@code CommitFailedException} CAS (layer 2), retries produce no duplicate + * rows. + */ + private void appendWithRetry(PublishContext ctx, List candidates) throws IOException { + commitWithRetry(ctx.table(), t -> { + t.refresh(); + Set tracked = readTrackedPaths(t, ctx.indexUUID(), ctx.shardId()); + List newFiles = new ArrayList<>(candidates.size()); + for (DataFile df : candidates) { + if (!tracked.contains(df.path().toString())) { + newFiles.add(df); + } + } + if (newFiles.isEmpty()) { + logger.info( + "All {} parquet files for [{}][{}] already tracked; no-op commit", + candidates.size(), + ctx.indexName(), + ctx.shardId() + ); + return; + } + AppendFiles append = t.newAppend(); + for (DataFile df : newFiles) { + append.appendFile(df); + } + append.commit(); + logger.info( + "Appended {} new parquet files to [{}][{}] ({} already tracked skipped)", + newFiles.size(), + ctx.indexName(), + ctx.shardId(), + candidates.size() - newFiles.size() + ); + }, "appending " + candidates.size() + " parquet files to [" + ctx.indexName() + "][" + ctx.shardId() + "]"); + } + + /** + * Returns the set of file paths already registered in the Iceberg table under this + * publish's partition. Iterates all tracked files and filters in-memory by partition + * values read from {@code DataFile.partition()} — relying on Iceberg's partition-filter + * pushdown via {@code TableScan.filter(Expressions.equal(...))} does not work here, + * because those predicates are column-stats-based for data columns, not partition-value + * matchers. The number of parquet files per shard is small (at most the shard's active + * segment count), so iterating all tracked entries for one partition is acceptable. + */ + private static Set readTrackedPaths(Table table, String indexUUID, int shardId) throws IOException { + Set paths = new HashSet<>(); + if (table.currentSnapshot() == null) { + return paths; + } + try (CloseableIterable tasks = table.newScan().planFiles()) { + for (FileScanTask task : tasks) { + StructLike partition = task.file().partition(); + if (partitionMatches(partition, indexUUID, shardId)) { + paths.add(task.file().path().toString()); + } + } + } + return paths; + } + + /** + * Returns {@code true} if the file's partition values correspond to the given + * {@code (index_uuid, shard_id)}. Relies on the partition spec ordering + * {@code identity(index_uuid), identity(shard_id)} established by + * {@link OpenSearchSchemaInference#partitionSpec}. + */ + private static boolean partitionMatches(StructLike partition, String indexUUID, int shardId) { + if (partition.size() < 2) { + return false; + } + Object storedUUID = partition.get(0, Object.class); + Object storedShard = partition.get(1, Object.class); + return indexUUID.equals(String.valueOf(storedUUID)) && Integer.valueOf(shardId).equals(storedShard); + } + + @Override + public void finalizePublish(String indexName, boolean success, String savedSnapshotId) throws IOException { + TableIdentifier id = tableId(indexName); + if (!catalog.tableExists(id)) { + logger.warn("finalizePublish called for unknown table [{}]; skipping", id); + return; + } + + if (success) { + // No catalog-side bookkeeping. Commit history lives on the Iceberg snapshot + // itself; orchestration completion lives in the cluster-state entry. + logger.info("finalizePublish(success) for [{}] — no-op", indexName); + return; + } + + if (savedSnapshotId == null) { + // First-ever publish failed before creating any snapshot — nothing to roll back. + logger.warn("finalizePublish(failure) for [{}] with no savedSnapshotId — nothing to roll back", indexName); + return; + } + long rollbackTo; + try { + rollbackTo = Long.parseLong(savedSnapshotId); + } catch (NumberFormatException e) { + throw new IOException("invalid savedSnapshotId [" + savedSnapshotId + "] for [" + indexName + "]", e); + } + + Table table = catalog.loadTable(id); + // Idempotent — rollbackTo is a no-op when the table is already at that snapshot. + commitWithRetry(table, t -> { + Snapshot current = t.currentSnapshot(); + if (current != null && current.snapshotId() == rollbackTo) { + return; + } + t.manageSnapshots().rollbackTo(rollbackTo).commit(); + }, "rolling back [" + indexName + "] to snapshot [" + savedSnapshotId + "]"); + } + + /** + * Returns {@code null}. IndexMetadata round-trip via the catalog is not yet + * implemented — see the class javadoc for the rationale and the planned follow-up + * (S3 sidecar or Puffin file). + * + * @param indexName the OpenSearch index name (ignored until the follow-up lands) + */ + @Override + public IndexMetadata getMetadata(String indexName) throws IOException { + return null; + } + + @Override + public boolean indexExists(String indexName) throws IOException { + return catalog.tableExists(tableId(indexName)); + } + + @Override + public void close() throws IOException { + try { + if (catalog instanceof AutoCloseable) { + ((AutoCloseable) catalog).close(); + } + } catch (IOException | RuntimeException e) { + throw e instanceof IOException ? (IOException) e : new IOException("failed to close Iceberg catalog", e); + } catch (Exception e) { + throw new IOException("failed to close Iceberg catalog", e); + } finally { + if (registryKey != null) { + IcebergClientCredentialsProvider.deregister(registryKey); + } + if (credentialsProvider instanceof AutoCloseable) { + try { + ((AutoCloseable) credentialsProvider).close(); + } catch (IOException | RuntimeException e) { + throw e instanceof IOException ? (IOException) e : new IOException(e); + } catch (Exception e) { + throw new IOException(e); + } + } + } + } + + private static TableIdentifier tableId(String indexName) { + return TableIdentifier.of(Namespace.of(NAMESPACE), indexName); + } + + /** Runs the given commit body with bounded exponential backoff on {@link CommitFailedException}. */ + private static void commitWithRetry(Table table, TableUpdate body, String description) throws IOException { + long backoff = FINALIZE_INITIAL_BACKOFF_MILLIS; + CommitFailedException last = null; + for (int attempt = 1; attempt <= FINALIZE_MAX_ATTEMPTS; attempt++) { + try { + body.apply(table); + return; + } catch (CommitFailedException e) { + last = e; + final int attemptNumber = attempt; + logger.warn( + () -> new ParameterizedMessage( + "Iceberg commit failed on attempt [{}/{}] for [{}]", + attemptNumber, + FINALIZE_MAX_ATTEMPTS, + description + ), + e + ); + if (attempt == FINALIZE_MAX_ATTEMPTS) { + break; + } + try { + Thread.sleep(backoff); + } catch (InterruptedException ie) { + Thread.currentThread().interrupt(); + throw new IOException("interrupted while retrying " + description, ie); + } + backoff *= 2; + table.refresh(); + } + } + throw new IOException("failed to commit after " + FINALIZE_MAX_ATTEMPTS + " attempts: " + description, last); + } + + @FunctionalInterface + private interface TableUpdate { + void apply(Table table) throws IOException; + } + + // Visible for tests. + String getRegistryKey() { + return registryKey; + } + + // Visible for tests. + Environment getEnvironment() { + return environment; + } +} diff --git a/plugins/iceberg-metadata-catalog/src/main/java/org/opensearch/plugin/catalog/iceberg/OpenSearchSchemaInference.java b/plugins/iceberg-metadata-catalog/src/main/java/org/opensearch/plugin/catalog/iceberg/OpenSearchSchemaInference.java new file mode 100644 index 0000000000000..9043b064d37f6 --- /dev/null +++ b/plugins/iceberg-metadata-catalog/src/main/java/org/opensearch/plugin/catalog/iceberg/OpenSearchSchemaInference.java @@ -0,0 +1,143 @@ +/* + * SPDX-License-Identifier: Apache-2.0 + * + * The OpenSearch Contributors require contributions made to + * this file be licensed under the Apache-2.0 license or a + * compatible open source license. + */ + +package org.opensearch.plugin.catalog.iceberg; + +import org.apache.iceberg.PartitionSpec; +import org.apache.iceberg.Schema; +import org.apache.iceberg.types.Type; +import org.apache.iceberg.types.Types; +import org.opensearch.cluster.metadata.IndexMetadata; +import org.opensearch.cluster.metadata.MappingMetadata; + +import java.util.ArrayList; +import java.util.LinkedHashMap; +import java.util.List; +import java.util.Map; +import java.util.concurrent.atomic.AtomicInteger; + +/** + * Derives an Iceberg {@link Schema} and {@link PartitionSpec} from OpenSearch + * {@link IndexMetadata}. Best-effort mapping for MVP; schema evolution is out of scope + * (schema is set once on first table create). + *

+ * Mapping: + *

    + *
  • {@code keyword}, {@code text}, {@code ip}, {@code object}, {@code nested}, unknown → {@code string}
  • + *
  • {@code long} → {@code long}
  • + *
  • {@code integer}, {@code short}, {@code byte} → {@code int}
  • + *
  • {@code double} → {@code double}
  • + *
  • {@code float}, {@code half_float}, {@code scaled_float} → {@code float}
  • + *
  • {@code boolean} → {@code boolean}
  • + *
  • {@code date} → {@code timestamp} (microsecond, without zone)
  • + *
  • {@code binary} → {@code binary}
  • + *
+ * Partition spec is always {@code identity(index_uuid), identity(shard_id)} to match the + * per-shard publish model. + */ +public final class OpenSearchSchemaInference { + + /** System column holding the source index UUID for every row. */ + public static final String FIELD_INDEX_UUID = "index_uuid"; + + /** System column holding the originating primary shard id for every row. */ + public static final String FIELD_SHARD_ID = "shard_id"; + + private OpenSearchSchemaInference() {} + + /** + * Infers a schema + partition spec for the given index metadata. The schema starts + * with the two system columns followed by flattened document fields. + * + * @param indexMetadata source index metadata (reads {@code mapping().sourceAsMap()}) + * @return inferred Iceberg schema + */ + @SuppressWarnings("unchecked") + public static Schema inferSchema(IndexMetadata indexMetadata) { + AtomicInteger idGen = new AtomicInteger(1); + List fields = new ArrayList<>(); + fields.add(Types.NestedField.required(idGen.getAndIncrement(), FIELD_INDEX_UUID, Types.StringType.get())); + fields.add(Types.NestedField.required(idGen.getAndIncrement(), FIELD_SHARD_ID, Types.IntegerType.get())); + + MappingMetadata mapping = indexMetadata.mapping(); + if (mapping != null) { + Map mappingMap = mapping.sourceAsMap(); + Object propsObj = mappingMap.get("properties"); + if (propsObj instanceof Map) { + addFields(fields, idGen, "", (Map) propsObj); + } + } + return new Schema(fields); + } + + /** + * Builds the partition spec: {@code identity(index_uuid), identity(shard_id)}. + * + * @param schema schema returned by {@link #inferSchema} + * @return partition spec pinned to the system partition columns + */ + public static PartitionSpec partitionSpec(Schema schema) { + return PartitionSpec.builderFor(schema).identity(FIELD_INDEX_UUID).identity(FIELD_SHARD_ID).build(); + } + + @SuppressWarnings("unchecked") + private static void addFields(List fields, AtomicInteger idGen, String prefix, Map properties) { + // Preserve insertion order for determinism across rebuilds. + Map ordered = properties instanceof LinkedHashMap ? properties : new LinkedHashMap<>(properties); + for (Map.Entry entry : ordered.entrySet()) { + String name = prefix.isEmpty() ? entry.getKey() : prefix + "." + entry.getKey(); + Object value = entry.getValue(); + if (!(value instanceof Map)) { + continue; + } + Map fieldDef = (Map) value; + String osType = (String) fieldDef.get("type"); + Type icebergType = mapType(osType); + // For object/nested without an explicit type, we still add a string placeholder + // keyed by the flattened name; sub-properties (if any) are flattened below. + fields.add(Types.NestedField.optional(idGen.getAndIncrement(), name, icebergType)); + Object nested = fieldDef.get("properties"); + if (nested instanceof Map) { + addFields(fields, idGen, name, (Map) nested); + } + } + } + + private static Type mapType(String osType) { + if (osType == null) { + return Types.StringType.get(); + } + switch (osType) { + case "long": + return Types.LongType.get(); + case "integer": + case "short": + case "byte": + return Types.IntegerType.get(); + case "double": + return Types.DoubleType.get(); + case "float": + case "half_float": + case "scaled_float": + return Types.FloatType.get(); + case "boolean": + return Types.BooleanType.get(); + case "date": + return Types.TimestampType.withoutZone(); + case "binary": + return Types.BinaryType.get(); + case "keyword": + case "text": + case "ip": + case "object": + case "nested": + default: + return Types.StringType.get(); + } + } +} diff --git a/plugins/iceberg-metadata-catalog/src/main/java/org/opensearch/plugin/catalog/iceberg/ParquetFileUploader.java b/plugins/iceberg-metadata-catalog/src/main/java/org/opensearch/plugin/catalog/iceberg/ParquetFileUploader.java new file mode 100644 index 0000000000000..8fb7187cff2f5 --- /dev/null +++ b/plugins/iceberg-metadata-catalog/src/main/java/org/opensearch/plugin/catalog/iceberg/ParquetFileUploader.java @@ -0,0 +1,133 @@ +/* + * SPDX-License-Identifier: Apache-2.0 + * + * The OpenSearch Contributors require contributions made to + * this file be licensed under the Apache-2.0 license or a + * compatible open source license. + */ + +package org.opensearch.plugin.catalog.iceberg; + +import org.apache.iceberg.DataFile; +import org.apache.iceberg.DataFiles; +import org.apache.iceberg.FileFormat; +import org.apache.iceberg.PartitionKey; +import org.apache.iceberg.data.GenericRecord; +import org.apache.iceberg.io.FileIO; +import org.apache.iceberg.io.OutputFile; +import org.apache.iceberg.io.PositionOutputStream; +import org.apache.logging.log4j.LogManager; +import org.apache.logging.log4j.Logger; +import org.apache.lucene.store.IOContext; +import org.apache.lucene.store.IndexInput; +import org.opensearch.index.store.RemoteSegmentStoreDirectory; + +import java.io.IOException; + +/** + * Uploads a single parquet file from the OpenSearch remote store to the Iceberg + * warehouse and builds the corresponding {@link DataFile} registration entry. + *

+ * Implements the layer-3 idempotency primitive: warehouse keys are derived + * deterministically from the remote-store filename (see + * {@link WarehousePathResolver}), so retries overwrite the same S3 key with the + * same bytes — {@code PutObject} / {@code CompleteMultipartUpload} is idempotent + * on key when the content is identical. + *

+ * The copy uses an 8 MB heap buffer, matching the AWS SDK v2 transfer-manager + * default part size. Heap footprint is bounded regardless of segment size. + * + *

Record count stub. The produced {@link DataFile} currently has + * {@code recordCount = 0}. Reading the true count requires either (a) pulling + * in {@code iceberg-parquet} plus ~12 transitive jars (parquet-mr, avro, codec + * libs) and their SHA/LICENSE/thirdPartyAudit bookkeeping, or (b) hand-rolling + * a thrift footer decoder against the parquet {@code FileMetaData} struct. Both + * are deferred — see PR 8c in the spec. External query engines (DataFusion) + * read the footer themselves during query planning, so the missing count is a + * minor first-touch planning-latency concern, not a correctness issue. + */ +final class ParquetFileUploader { + + private static final Logger logger = LogManager.getLogger(ParquetFileUploader.class); + + /** + * Copy buffer size. Matches the AWS SDK v2 transfer-manager default part + * size so a single heap buffer feeds the multipart upload machinery without + * re-chunking. + */ + static final int COPY_BUFFER_BYTES = 8 * 1024 * 1024; + + private ParquetFileUploader() {} + + /** + * Uploads a single parquet file and returns its {@link DataFile} entry. + * + * @param ctx per-invocation context (table, partition values, absolute-path helper) + * @param remoteDirectory source Lucene directory backed by the remote store + * @param remoteFilename logical remote-store filename (already validated to be parquet) + * @param fileIO warehouse-side IO (typically the table's {@code S3FileIO}) + * @return a {@code DataFile} describing the uploaded file. {@code recordCount = 0} + * is intentional; see the class javadoc. + * @throws IOException if either the source read or the destination write fails. + * Any partial S3 object becomes a warehouse orphan for + * out-of-band cleanup via {@code removeOrphanFiles}. + */ + static DataFile upload(PublishContext ctx, RemoteSegmentStoreDirectory remoteDirectory, String remoteFilename, FileIO fileIO) + throws IOException { + String warehouseKey = WarehousePathResolver.resolve(ctx.indexUUID(), ctx.shardId(), remoteFilename); + String absolutePath = ctx.absoluteWarehousePath(warehouseKey); + long fileLength = remoteDirectory.fileLength(remoteFilename); + + OutputFile outputFile = fileIO.newOutputFile(absolutePath); + try ( + IndexInput in = remoteDirectory.openInput(remoteFilename, IOContext.READONCE); + PositionOutputStream out = outputFile.createOrOverwrite() + ) { + copy(in, out, fileLength); + } + + logger.debug( + "Uploaded [{}] ({} bytes) for shard [{}][{}] to [{}]", + remoteFilename, + fileLength, + ctx.indexName(), + ctx.shardId(), + absolutePath + ); + + PartitionKey partitionKey = new PartitionKey(ctx.table().spec(), ctx.table().schema()); + partitionKey.partition(partitionRecord(ctx)); + + return DataFiles.builder(ctx.table().spec()) + .withPath(absolutePath) + .withFormat(FileFormat.PARQUET) + .withFileSizeInBytes(fileLength) + // Record count stub: see class javadoc. Deferred to PR 8c. + .withRecordCount(0L) + .withPartition(partitionKey) + .build(); + } + + private static void copy(IndexInput in, PositionOutputStream out, long length) throws IOException { + byte[] buf = new byte[COPY_BUFFER_BYTES]; + long remaining = length; + while (remaining > 0) { + int chunk = (int) Math.min((long) buf.length, remaining); + in.readBytes(buf, 0, chunk); + out.write(buf, 0, chunk); + remaining -= chunk; + } + } + + /** + * Returns an Iceberg record carrying this publish's partition values + * — {@code (index_uuid, shard_id)}. The record is transient; it exists only + * to drive {@link PartitionKey#partition(org.apache.iceberg.StructLike)}. + */ + private static GenericRecord partitionRecord(PublishContext ctx) { + GenericRecord record = GenericRecord.create(ctx.table().schema()); + record.setField(OpenSearchSchemaInference.FIELD_INDEX_UUID, ctx.indexUUID()); + record.setField(OpenSearchSchemaInference.FIELD_SHARD_ID, ctx.shardId()); + return record; + } +} diff --git a/plugins/iceberg-metadata-catalog/src/main/java/org/opensearch/plugin/catalog/iceberg/PublishContext.java b/plugins/iceberg-metadata-catalog/src/main/java/org/opensearch/plugin/catalog/iceberg/PublishContext.java new file mode 100644 index 0000000000000..695ad92ff81fc --- /dev/null +++ b/plugins/iceberg-metadata-catalog/src/main/java/org/opensearch/plugin/catalog/iceberg/PublishContext.java @@ -0,0 +1,101 @@ +/* + * SPDX-License-Identifier: Apache-2.0 + * + * The OpenSearch Contributors require contributions made to + * this file be licensed under the Apache-2.0 license or a + * compatible open source license. + */ + +package org.opensearch.plugin.catalog.iceberg; + +import org.apache.iceberg.Table; +import org.apache.iceberg.catalog.Catalog; +import org.apache.iceberg.catalog.TableIdentifier; + +import java.io.IOException; +import java.util.Objects; + +/** + * Immutable bundle of per-invocation values used by {@link IcebergMetadataClient#publish}. + * Loaded once at the top of {@code publish()} and passed to the helpers so they stay + * decoupled from the catalog lookup. + */ +final class PublishContext { + + private final Table table; + private final String indexName; + private final String indexUUID; + private final int shardId; + private final String warehousePrefix; + + private PublishContext(Table table, String indexName, String indexUUID, int shardId) { + this.table = Objects.requireNonNull(table, "table"); + this.indexName = Objects.requireNonNull(indexName, "indexName"); + this.indexUUID = Objects.requireNonNull(indexUUID, "indexUUID"); + if (shardId < 0) { + throw new IllegalArgumentException("shardId must be non-negative, got " + shardId); + } + this.shardId = shardId; + this.warehousePrefix = WarehousePathResolver.partitionPrefix(indexUUID, shardId); + } + + /** + * Loads the Iceberg table from the catalog and reads the required + * {@code opensearch.index_uuid} property stamped at {@code initialize()} time. + * + * @throws IOException if the table does not exist (the orchestrator should have + * called {@code initialize()} first) or if the required property + * is missing (indicates the table was not created by this plugin). + */ + static PublishContext create(Catalog catalog, TableIdentifier tableId, String indexName, int shardId) throws IOException { + if (!catalog.tableExists(tableId)) { + throw new IOException("Iceberg table [" + tableId + "] does not exist; initialize() must be called before publish()"); + } + Table table = catalog.loadTable(tableId); + String indexUUID = table.properties().get(IcebergMetadataClient.PROPERTY_INDEX_UUID); + if (indexUUID == null) { + throw new IOException( + "Iceberg table [" + + tableId + + "] is missing required property [" + + IcebergMetadataClient.PROPERTY_INDEX_UUID + + "]; table was not created by this plugin" + ); + } + return new PublishContext(table, indexName, indexUUID, shardId); + } + + Table table() { + return table; + } + + String indexName() { + return indexName; + } + + String indexUUID() { + return indexUUID; + } + + int shardId() { + return shardId; + } + + /** + * Returns the warehouse-relative prefix under which this shard's parquet files + * are written. Equivalent to {@code WarehousePathResolver.partitionPrefix(indexUUID, shardId)}. + */ + String warehousePrefix() { + return warehousePrefix; + } + + /** Builds the absolute S3 URI for a warehouse key. Table location + "/" + key. */ + String absoluteWarehousePath(String warehouseKey) { + String loc = table.location(); + // S3 URIs don't care about double slashes for correctness, but strip them for hygiene. + if (loc.endsWith("/")) { + return loc + warehouseKey; + } + return loc + "/" + warehouseKey; + } +} diff --git a/plugins/iceberg-metadata-catalog/src/main/java/org/opensearch/plugin/catalog/iceberg/WarehousePathResolver.java b/plugins/iceberg-metadata-catalog/src/main/java/org/opensearch/plugin/catalog/iceberg/WarehousePathResolver.java new file mode 100644 index 0000000000000..f4017ab3e7ec9 --- /dev/null +++ b/plugins/iceberg-metadata-catalog/src/main/java/org/opensearch/plugin/catalog/iceberg/WarehousePathResolver.java @@ -0,0 +1,77 @@ +/* + * SPDX-License-Identifier: Apache-2.0 + * + * The OpenSearch Contributors require contributions made to + * this file be licensed under the Apache-2.0 license or a + * compatible open source license. + */ + +package org.opensearch.plugin.catalog.iceberg; + +import java.util.Objects; + +/** + * Derives the deterministic warehouse key for a remote-store file. + *

+ * The remote-store filename is already content-addressed (Lucene logical name suffixed + * with a per-upload UUID, e.g. {@code _0.cfe__gX7bNIIBrs0AUNsR2yEG}), so passing it + * through unchanged gives us an S3 key that is stable across retries: same source + * bytes → same key → S3 PUT is idempotent. This is the layer-3 correctness primitive + * called out in the design doc. + *

+ * Pure helper with a single static method. Kept in its own class so the behavior can + * be unit-tested without a live catalog. + */ +final class WarehousePathResolver { + + /** Prefix under which all per-index, per-shard parquet data is stored. */ + static final String DATA_PREFIX = "data"; + + private WarehousePathResolver() {} + + /** + * Builds the warehouse-relative path for a single remote-store file. + * + * @param indexUUID the source OpenSearch index UUID (read from the Iceberg table's + * {@code opensearch.index_uuid} property by {@link PublishContext}) + * @param shardId the primary shard id owning the file + * @param remoteFilename the remote-store filename as returned by + * {@code RemoteSegmentMetadata.getMetadata().keySet()}. + * Passed through unchanged — the remote-store layer already + * guarantees per-upload uniqueness via its UUID suffix. + * @return a warehouse-relative path of the form + * {@code data///}. Callers combine + * this with {@code Table.location()} to build the absolute S3 URI handed + * to {@code S3FileIO.newOutputFile}. + */ + static String resolve(String indexUUID, int shardId, String remoteFilename) { + Objects.requireNonNull(indexUUID, "indexUUID"); + Objects.requireNonNull(remoteFilename, "remoteFilename"); + if (indexUUID.isEmpty()) { + throw new IllegalArgumentException("indexUUID must not be empty"); + } + if (remoteFilename.isEmpty()) { + throw new IllegalArgumentException("remoteFilename must not be empty"); + } + if (shardId < 0) { + throw new IllegalArgumentException("shardId must be non-negative, got " + shardId); + } + return DATA_PREFIX + "/" + indexUUID + "/" + shardId + "/" + remoteFilename; + } + + /** + * Returns the partition prefix (without the filename) for the given + * {@code (indexUUID, shardId)} partition. Useful when constructing + * partition-scoped scans or absolute URIs that target the partition directory. + */ + static String partitionPrefix(String indexUUID, int shardId) { + Objects.requireNonNull(indexUUID, "indexUUID"); + if (indexUUID.isEmpty()) { + throw new IllegalArgumentException("indexUUID must not be empty"); + } + if (shardId < 0) { + throw new IllegalArgumentException("shardId must be non-negative, got " + shardId); + } + return DATA_PREFIX + "/" + indexUUID + "/" + shardId + "/"; + } +} diff --git a/plugins/iceberg-metadata-catalog/src/main/java/org/opensearch/plugin/catalog/iceberg/credentials/CredentialsBuilder.java b/plugins/iceberg-metadata-catalog/src/main/java/org/opensearch/plugin/catalog/iceberg/credentials/CredentialsBuilder.java new file mode 100644 index 0000000000000..a7b8d8e8c1424 --- /dev/null +++ b/plugins/iceberg-metadata-catalog/src/main/java/org/opensearch/plugin/catalog/iceberg/credentials/CredentialsBuilder.java @@ -0,0 +1,116 @@ +/* + * SPDX-License-Identifier: Apache-2.0 + * + * The OpenSearch Contributors require contributions made to + * this file be licensed under the Apache-2.0 license or a + * compatible open source license. + */ + +package org.opensearch.plugin.catalog.iceberg.credentials; + +import software.amazon.awssdk.auth.credentials.AwsCredentials; +import software.amazon.awssdk.auth.credentials.AwsCredentialsProvider; +import software.amazon.awssdk.auth.credentials.ContainerCredentialsProvider; +import software.amazon.awssdk.auth.credentials.DefaultCredentialsProvider; +import software.amazon.awssdk.auth.credentials.InstanceProfileCredentialsProvider; +import software.amazon.awssdk.auth.credentials.StaticCredentialsProvider; +import software.amazon.awssdk.core.SdkSystemSetting; +import software.amazon.awssdk.regions.Region; +import software.amazon.awssdk.services.sts.StsClient; +import software.amazon.awssdk.services.sts.StsClientBuilder; +import software.amazon.awssdk.services.sts.auth.StsAssumeRoleCredentialsProvider; +import software.amazon.awssdk.services.sts.auth.StsWebIdentityTokenFileCredentialsProvider; +import software.amazon.awssdk.services.sts.model.AssumeRoleRequest; + +import org.apache.logging.log4j.LogManager; +import org.apache.logging.log4j.Logger; + +/** + * Builds an {@link AwsCredentialsProvider} from {@link IcebergClientSettings} using the + * same waterfall as open-source {@code repository-s3}: + *

    + *
  1. IRSA web-identity ({@code role_arn} + {@code identity_token_file}) → + * {@code StsWebIdentityTokenFileCredentialsProvider}
  2. + *
  3. IRSA assume-role ({@code role_arn} + {@code role_session_name}, no token file) → + * {@code StsAssumeRoleCredentialsProvider}
  4. + *
  5. Static keystore keys ({@code access_key}, {@code secret_key}, optional + * {@code session_token}) → {@code StaticCredentialsProvider}
  6. + *
  7. Fallback → {@code ContainerCredentialsProvider} (ECS) or + * {@code InstanceProfileCredentialsProvider} (EC2)
  8. + *
+ * All resolving providers are wrapped in {@link PrivilegedCredentialsProvider}. + */ +public final class CredentialsBuilder { + + private static final Logger logger = LogManager.getLogger(CredentialsBuilder.class); + + private CredentialsBuilder() {} + + /** + * Resolves the credentials provider for the given settings snapshot. + * + * @param settings parsed credential settings + * @return a non-null privileged credentials provider + */ + public static AwsCredentialsProvider build(IcebergClientSettings settings) { + if (settings.getRoleArn() != null) { + return buildIrsaProvider(settings); + } + if (settings.getStaticCredentials() != null) { + logger.debug("Using static keystore credentials for catalog"); + return new PrivilegedCredentialsProvider(StaticCredentialsProvider.create(settings.getStaticCredentials())); + } + logger.debug("Using default container/instance-profile credentials for catalog"); + return new PrivilegedCredentialsProvider(buildDefaultChain()); + } + + private static AwsCredentialsProvider buildIrsaProvider(IcebergClientSettings settings) { + final Region region = Region.of(settings.getRegion()); + + // STS client used to back the IRSA provider. Seed it with static credentials if + // present; otherwise DefaultCredentialsProvider (so a caller-supplied static + // identity can assume the target role). + StsClient stsClient = SocketAccess.doPrivileged(() -> { + StsClientBuilder stsBuilder = StsClient.builder().region(region); + if (settings.getStaticCredentials() != null) { + AwsCredentials staticCreds = settings.getStaticCredentials(); + stsBuilder = stsBuilder.credentialsProvider(StaticCredentialsProvider.create(staticCreds)); + } else { + stsBuilder = stsBuilder.credentialsProvider(DefaultCredentialsProvider.create()); + } + return stsBuilder.build(); + }); + + if (settings.getIdentityTokenFile() != null) { + logger.debug("Using IRSA web-identity token file credentials for catalog"); + StsWebIdentityTokenFileCredentialsProvider provider = SocketAccess.doPrivileged( + () -> StsWebIdentityTokenFileCredentialsProvider.builder() + .stsClient(stsClient) + .roleArn(settings.getRoleArn()) + .roleSessionName(settings.getRoleSessionName()) + .webIdentityTokenFile(settings.getIdentityTokenFile()) + .build() + ); + return new PrivilegedCredentialsProvider(provider); + } + + logger.debug("Using IRSA assume-role credentials for catalog"); + StsAssumeRoleCredentialsProvider provider = SocketAccess.doPrivileged( + () -> StsAssumeRoleCredentialsProvider.builder() + .stsClient(stsClient) + .refreshRequest( + AssumeRoleRequest.builder().roleArn(settings.getRoleArn()).roleSessionName(settings.getRoleSessionName()).build() + ) + .build() + ); + return new PrivilegedCredentialsProvider(provider); + } + + private static AwsCredentialsProvider buildDefaultChain() { + if (SdkSystemSetting.AWS_CONTAINER_CREDENTIALS_RELATIVE_URI.getStringValue().isPresent() + || SdkSystemSetting.AWS_CONTAINER_CREDENTIALS_FULL_URI.getStringValue().isPresent()) { + return ContainerCredentialsProvider.builder().asyncCredentialUpdateEnabled(true).build(); + } + return InstanceProfileCredentialsProvider.builder().asyncCredentialUpdateEnabled(true).build(); + } +} diff --git a/plugins/iceberg-metadata-catalog/src/main/java/org/opensearch/plugin/catalog/iceberg/credentials/IcebergClientCredentialsProvider.java b/plugins/iceberg-metadata-catalog/src/main/java/org/opensearch/plugin/catalog/iceberg/credentials/IcebergClientCredentialsProvider.java new file mode 100644 index 0000000000000..fc651950091c1 --- /dev/null +++ b/plugins/iceberg-metadata-catalog/src/main/java/org/opensearch/plugin/catalog/iceberg/credentials/IcebergClientCredentialsProvider.java @@ -0,0 +1,95 @@ +/* + * SPDX-License-Identifier: Apache-2.0 + * + * The OpenSearch Contributors require contributions made to + * this file be licensed under the Apache-2.0 license or a + * compatible open source license. + */ + +package org.opensearch.plugin.catalog.iceberg.credentials; + +import software.amazon.awssdk.auth.credentials.AwsCredentials; +import software.amazon.awssdk.auth.credentials.AwsCredentialsProvider; + +import java.util.Map; +import java.util.UUID; +import java.util.concurrent.ConcurrentHashMap; +import java.util.concurrent.ConcurrentMap; + +/** + * Bridge between OpenSearch's credentials resolution and Iceberg's + * {@code client.credentials-provider} reflection hook. + *

+ * Iceberg loads credentials providers via {@code DynConstructors} — it reflects on the + * class name and calls a static {@code create(Map)} method (see + * {@code org.apache.iceberg.aws.AwsClientProperties#credentialsProvider}). We can't hand + * Iceberg a pre-built provider instance, but we can hand it a {@link Map} with the + * registry key under which a {@link PrivilegedCredentialsProvider} instance has been + * stashed. The static {@link #create} method pulls it back out. + *

+ * The same hook is consumed by both {@code S3FileIO} (data plane) and the Iceberg REST + * catalog's {@code RESTSigV4Signer} (control plane), so registering once covers both. + */ +public final class IcebergClientCredentialsProvider implements AwsCredentialsProvider { + + /** Property key under which {@link #register} stores and {@link #create} reads the UUID. */ + public static final String REGISTRY_KEY_PROPERTY = "client.credentials-provider.registry-key"; + + private static final ConcurrentMap REGISTRY = new ConcurrentHashMap<>(); + + private final AwsCredentialsProvider delegate; + + private IcebergClientCredentialsProvider(AwsCredentialsProvider delegate) { + this.delegate = delegate; + } + + /** + * Reflection entry point. Iceberg calls this with the properties map it was handed + * via the {@code client.credentials-provider.*} prefix. Required property: + * {@link #REGISTRY_KEY_PROPERTY}. + * + * @param properties properties passed from Iceberg's catalog configuration + * @return a non-null credentials provider registered by the plugin + */ + public static AwsCredentialsProvider create(Map properties) { + String key = properties.get(REGISTRY_KEY_PROPERTY); + if (key == null) { + throw new IllegalStateException( + "expected [" + REGISTRY_KEY_PROPERTY + "] to be set on the Iceberg catalog properties but it was missing" + ); + } + AwsCredentialsProvider provider = REGISTRY.get(key); + if (provider == null) { + throw new IllegalStateException("no credentials provider registered for key [" + key + "]"); + } + return new IcebergClientCredentialsProvider(provider); + } + + /** + * Registers the given provider and returns a fresh UUID key. The caller stores the + * key on the Iceberg catalog properties under {@link #REGISTRY_KEY_PROPERTY}, then + * {@link #deregister} when the catalog is closed. + */ + public static String register(AwsCredentialsProvider provider) { + String key = UUID.randomUUID().toString(); + REGISTRY.put(key, provider); + return key; + } + + /** Removes the given key from the registry. Idempotent. */ + public static void deregister(String key) { + if (key != null) { + REGISTRY.remove(key); + } + } + + /** Visible for tests: current registry size. */ + static int registrySize() { + return REGISTRY.size(); + } + + @Override + public AwsCredentials resolveCredentials() { + return delegate.resolveCredentials(); + } +} diff --git a/plugins/iceberg-metadata-catalog/src/main/java/org/opensearch/plugin/catalog/iceberg/credentials/IcebergClientSettings.java b/plugins/iceberg-metadata-catalog/src/main/java/org/opensearch/plugin/catalog/iceberg/credentials/IcebergClientSettings.java new file mode 100644 index 0000000000000..be200dc0eb588 --- /dev/null +++ b/plugins/iceberg-metadata-catalog/src/main/java/org/opensearch/plugin/catalog/iceberg/credentials/IcebergClientSettings.java @@ -0,0 +1,168 @@ +/* + * SPDX-License-Identifier: Apache-2.0 + * + * The OpenSearch Contributors require contributions made to + * this file be licensed under the Apache-2.0 license or a + * compatible open source license. + */ + +package org.opensearch.plugin.catalog.iceberg.credentials; + +import software.amazon.awssdk.auth.credentials.AwsBasicCredentials; +import software.amazon.awssdk.auth.credentials.AwsCredentials; +import software.amazon.awssdk.auth.credentials.AwsSessionCredentials; + +import org.opensearch.common.SuppressForbidden; +import org.opensearch.common.settings.SecureSetting; +import org.opensearch.common.settings.Setting; +import org.opensearch.common.settings.Settings; +import org.opensearch.core.common.Strings; +import org.opensearch.core.common.settings.SecureString; +import org.opensearch.env.Environment; +import org.opensearch.plugin.catalog.iceberg.IcebergCatalogRepository; + +import java.nio.file.Path; +import java.nio.file.Paths; + +/** + * Typed snapshot of all credential-related settings for the Iceberg catalog. + *

+ * Pulls: + *

    + *
  • IRSA / assume-role inputs ({@code role_arn}, {@code role_session_name}, + * {@code identity_token_file}) from the repository's node settings.
  • + *
  • Static credentials ({@code access_key}, {@code secret_key}, + * {@code session_token}) from the cluster keystore under the + * {@code catalog.credentials.} prefix.
  • + *
  • Region from the repository's node settings.
  • + *
+ * Relative {@code identity_token_file} paths are resolved against {@link Environment#configDir()}. + */ +public final class IcebergClientSettings { + + /** Prefix for credentials pulled from the cluster keystore. */ + public static final String KEYSTORE_PREFIX = "catalog.credentials."; + + /** Keystore: AWS access key id. */ + public static final Setting ACCESS_KEY_SETTING = SecureSetting.secureString(KEYSTORE_PREFIX + "access_key", null); + + /** Keystore: AWS secret access key. */ + public static final Setting SECRET_KEY_SETTING = SecureSetting.secureString(KEYSTORE_PREFIX + "secret_key", null); + + /** Keystore: AWS session token (used with temporary credentials). */ + public static final Setting SESSION_TOKEN_SETTING = SecureSetting.secureString(KEYSTORE_PREFIX + "session_token", null); + + private final String region; + private final AwsCredentials staticCredentials; // may be null + private final String roleArn; // may be null + private final String roleSessionName; // may be null + private final Path identityTokenFile; // may be null + + private IcebergClientSettings( + String region, + AwsCredentials staticCredentials, + String roleArn, + String roleSessionName, + Path identityTokenFile + ) { + this.region = region; + this.staticCredentials = staticCredentials; + this.roleArn = roleArn; + this.roleSessionName = roleSessionName; + this.identityTokenFile = identityTokenFile; + } + + /** + * Builds a settings snapshot from the given repository and environment. + * + * @param repository catalog repository (source of region + IRSA inputs) + * @param environment node environment (source of keystore + config dir) + * @return a new typed settings snapshot; never null + */ + public static IcebergClientSettings load(IcebergCatalogRepository repository, Environment environment) { + String region = repository.getRegion(); + AwsCredentials staticCreds = loadStaticCredentials(environment.settings()); + String roleArn = nullIfEmpty(repository.getRoleArn()); + String roleSessionName = nullIfEmpty(repository.getRoleSessionName()); + Path tokenFile = resolveIdentityTokenFile(repository.getIdentityTokenFile(), environment); + return new IcebergClientSettings(region, staticCreds, roleArn, roleSessionName, tokenFile); + } + + private static AwsCredentials loadStaticCredentials(Settings nodeSettings) { + try ( + SecureString accessKey = ACCESS_KEY_SETTING.get(nodeSettings); + SecureString secretKey = SECRET_KEY_SETTING.get(nodeSettings); + SecureString sessionToken = SESSION_TOKEN_SETTING.get(nodeSettings) + ) { + if (accessKey.length() == 0 && secretKey.length() == 0) { + if (sessionToken.length() > 0) { + throw new IllegalArgumentException( + "[" + + SESSION_TOKEN_SETTING.getKey() + + "] requires both [" + + ACCESS_KEY_SETTING.getKey() + + "] and [" + + SECRET_KEY_SETTING.getKey() + + "]" + ); + } + return null; + } + if (accessKey.length() == 0) { + throw new IllegalArgumentException( + "[" + ACCESS_KEY_SETTING.getKey() + "] is required when [" + SECRET_KEY_SETTING.getKey() + "] is set" + ); + } + if (secretKey.length() == 0) { + throw new IllegalArgumentException( + "[" + SECRET_KEY_SETTING.getKey() + "] is required when [" + ACCESS_KEY_SETTING.getKey() + "] is set" + ); + } + if (sessionToken.length() > 0) { + return AwsSessionCredentials.create(accessKey.toString(), secretKey.toString(), sessionToken.toString()); + } + return AwsBasicCredentials.create(accessKey.toString(), secretKey.toString()); + } + } + + @SuppressForbidden(reason = "relative token file path is resolved against Environment#configDir()") + private static Path resolveIdentityTokenFile(String configured, Environment environment) { + if (Strings.isNullOrEmpty(configured)) { + return null; + } + Path p = Paths.get(configured); + if (!p.isAbsolute()) { + p = environment.configDir().resolve(configured); + } + return p; + } + + private static String nullIfEmpty(String s) { + return Strings.isNullOrEmpty(s) ? null : s; + } + + /** Returns the configured AWS region. Never null or empty. */ + public String getRegion() { + return region; + } + + /** Returns the static credentials from the keystore, or {@code null} if unset. */ + public AwsCredentials getStaticCredentials() { + return staticCredentials; + } + + /** Returns the configured role ARN to assume, or {@code null} if unset. */ + public String getRoleArn() { + return roleArn; + } + + /** Returns the configured STS role session name, or {@code null} if unset. */ + public String getRoleSessionName() { + return roleSessionName; + } + + /** Returns the resolved web-identity token file, or {@code null} if unset. */ + public Path getIdentityTokenFile() { + return identityTokenFile; + } +} diff --git a/plugins/iceberg-metadata-catalog/src/main/java/org/opensearch/plugin/catalog/iceberg/credentials/PrivilegedCredentialsProvider.java b/plugins/iceberg-metadata-catalog/src/main/java/org/opensearch/plugin/catalog/iceberg/credentials/PrivilegedCredentialsProvider.java new file mode 100644 index 0000000000000..3aa9798dcaa96 --- /dev/null +++ b/plugins/iceberg-metadata-catalog/src/main/java/org/opensearch/plugin/catalog/iceberg/credentials/PrivilegedCredentialsProvider.java @@ -0,0 +1,55 @@ +/* + * SPDX-License-Identifier: Apache-2.0 + * + * The OpenSearch Contributors require contributions made to + * this file be licensed under the Apache-2.0 license or a + * compatible open source license. + */ + +package org.opensearch.plugin.catalog.iceberg.credentials; + +import software.amazon.awssdk.auth.credentials.AwsCredentials; +import software.amazon.awssdk.auth.credentials.AwsCredentialsProvider; + +import java.io.Closeable; +import java.io.IOException; + +/** + * Wraps an {@link AwsCredentialsProvider} so that {@code resolveCredentials()} runs inside a + * {@link SocketAccess#doPrivileged} block. Needed for IRSA / InstanceProfile providers which + * fetch credentials over the network. + */ +public final class PrivilegedCredentialsProvider implements AwsCredentialsProvider, Closeable { + + private final AwsCredentialsProvider delegate; + + /** + * Creates a wrapper around the given delegate. + * + * @param delegate the credentials provider to wrap + */ + public PrivilegedCredentialsProvider(AwsCredentialsProvider delegate) { + this.delegate = delegate; + } + + @Override + public AwsCredentials resolveCredentials() { + return SocketAccess.doPrivileged(delegate::resolveCredentials); + } + + @Override + public void close() throws IOException { + if (delegate instanceof AutoCloseable) { + SocketAccess.doPrivilegedIOException(() -> { + try { + ((AutoCloseable) delegate).close(); + } catch (IOException | RuntimeException e) { + throw e; + } catch (Exception e) { + throw new IOException(e); + } + return null; + }); + } + } +} diff --git a/plugins/iceberg-metadata-catalog/src/main/java/org/opensearch/plugin/catalog/iceberg/credentials/SocketAccess.java b/plugins/iceberg-metadata-catalog/src/main/java/org/opensearch/plugin/catalog/iceberg/credentials/SocketAccess.java new file mode 100644 index 0000000000000..ff15f5a234d8b --- /dev/null +++ b/plugins/iceberg-metadata-catalog/src/main/java/org/opensearch/plugin/catalog/iceberg/credentials/SocketAccess.java @@ -0,0 +1,45 @@ +/* + * SPDX-License-Identifier: Apache-2.0 + * + * The OpenSearch Contributors require contributions made to + * this file be licensed under the Apache-2.0 license or a + * compatible open source license. + */ + +package org.opensearch.plugin.catalog.iceberg.credentials; + +import org.opensearch.SpecialPermission; + +import java.io.IOException; +import java.security.AccessController; +import java.security.PrivilegedAction; +import java.security.PrivilegedActionException; +import java.security.PrivilegedExceptionAction; + +/** + * Wraps AWS SDK calls that require the {@code SocketPermission "connect"} grant in the + * plugin's security policy inside {@code AccessController.doPrivileged} blocks. + *

+ * Mirrors {@code org.opensearch.repositories.s3.SocketAccess}. + */ +@SuppressWarnings("removal") +public final class SocketAccess { + + private SocketAccess() {} + + /** Runs the given action with the Security Manager bypass. */ + public static T doPrivileged(PrivilegedAction operation) { + SpecialPermission.check(); + return AccessController.doPrivileged(operation); + } + + /** Runs the given action with the Security Manager bypass; unwraps IOExceptions. */ + public static T doPrivilegedIOException(PrivilegedExceptionAction operation) throws IOException { + SpecialPermission.check(); + try { + return AccessController.doPrivileged(operation); + } catch (PrivilegedActionException e) { + throw (IOException) e.getCause(); + } + } +} diff --git a/plugins/iceberg-metadata-catalog/src/main/java/org/opensearch/plugin/catalog/iceberg/credentials/package-info.java b/plugins/iceberg-metadata-catalog/src/main/java/org/opensearch/plugin/catalog/iceberg/credentials/package-info.java new file mode 100644 index 0000000000000..1fa189df77dd5 --- /dev/null +++ b/plugins/iceberg-metadata-catalog/src/main/java/org/opensearch/plugin/catalog/iceberg/credentials/package-info.java @@ -0,0 +1,17 @@ +/* + * SPDX-License-Identifier: Apache-2.0 + * + * The OpenSearch Contributors require contributions made to + * this file be licensed under the Apache-2.0 license or a + * compatible open source license. + */ + +/** + * AWS credentials resolution for the Iceberg metadata catalog plugin. + *

+ * Mirrors the open-source {@code repository-s3} waterfall: IRSA web-identity token + * → IRSA assume-role → static access/secret keys → InstanceProfile fallback. + * The resolved provider is handed to Iceberg via the {@code client.credentials-provider} + * reflection hook using an in-process UUID-keyed registry. + */ +package org.opensearch.plugin.catalog.iceberg.credentials; diff --git a/plugins/iceberg-metadata-catalog/src/main/java/org/opensearch/plugin/catalog/iceberg/package-info.java b/plugins/iceberg-metadata-catalog/src/main/java/org/opensearch/plugin/catalog/iceberg/package-info.java new file mode 100644 index 0000000000000..78d07729ff0b1 --- /dev/null +++ b/plugins/iceberg-metadata-catalog/src/main/java/org/opensearch/plugin/catalog/iceberg/package-info.java @@ -0,0 +1,13 @@ +/* + * SPDX-License-Identifier: Apache-2.0 + * + * The OpenSearch Contributors require contributions made to + * this file be licensed under the Apache-2.0 license or a + * compatible open source license. + */ + +/** + * Apache Iceberg metadata catalog plugin. Publishes OpenSearch index data to + * an Iceberg catalog backed by S3 Tables. + */ +package org.opensearch.plugin.catalog.iceberg; diff --git a/plugins/iceberg-metadata-catalog/src/test/java/org/opensearch/plugin/catalog/iceberg/IcebergCatalogPluginTests.java b/plugins/iceberg-metadata-catalog/src/test/java/org/opensearch/plugin/catalog/iceberg/IcebergCatalogPluginTests.java new file mode 100644 index 0000000000000..ae9c5a2e87538 --- /dev/null +++ b/plugins/iceberg-metadata-catalog/src/test/java/org/opensearch/plugin/catalog/iceberg/IcebergCatalogPluginTests.java @@ -0,0 +1,47 @@ +/* + * SPDX-License-Identifier: Apache-2.0 + * + * The OpenSearch Contributors require contributions made to + * this file be licensed under the Apache-2.0 license or a + * compatible open source license. + */ + +package org.opensearch.plugin.catalog.iceberg; + +import org.opensearch.common.settings.Setting; +import org.opensearch.plugin.catalog.iceberg.credentials.IcebergClientSettings; +import org.opensearch.test.OpenSearchTestCase; + +import java.util.List; +import java.util.Set; +import java.util.stream.Collectors; + +public class IcebergCatalogPluginTests extends OpenSearchTestCase { + + public void testPluginCreation() throws Exception { + try (IcebergCatalogPlugin plugin = new IcebergCatalogPlugin()) { + assertNotNull(plugin); + assertFalse(plugin.getSettings().isEmpty()); + } + } + + public void testAllSettingsAreRegistered() throws Exception { + try (IcebergCatalogPlugin plugin = new IcebergCatalogPlugin()) { + List> settings = plugin.getSettings(); + Set keys = settings.stream().map(Setting::getKey).collect(Collectors.toSet()); + + // Repository-scoped. + assertTrue(keys.contains(IcebergCatalogRepository.BUCKET_ARN_SETTING.getKey())); + assertTrue(keys.contains(IcebergCatalogRepository.REGION_SETTING.getKey())); + assertTrue(keys.contains(IcebergCatalogRepository.CATALOG_ENDPOINT_SETTING.getKey())); + assertTrue(keys.contains(IcebergCatalogRepository.ROLE_ARN_SETTING.getKey())); + assertTrue(keys.contains(IcebergCatalogRepository.ROLE_SESSION_NAME_SETTING.getKey())); + assertTrue(keys.contains(IcebergCatalogRepository.IDENTITY_TOKEN_FILE_SETTING.getKey())); + + // Keystore credentials. + assertTrue(keys.contains(IcebergClientSettings.ACCESS_KEY_SETTING.getKey())); + assertTrue(keys.contains(IcebergClientSettings.SECRET_KEY_SETTING.getKey())); + assertTrue(keys.contains(IcebergClientSettings.SESSION_TOKEN_SETTING.getKey())); + } + } +} diff --git a/plugins/iceberg-metadata-catalog/src/test/java/org/opensearch/plugin/catalog/iceberg/IcebergCatalogRepositoryTests.java b/plugins/iceberg-metadata-catalog/src/test/java/org/opensearch/plugin/catalog/iceberg/IcebergCatalogRepositoryTests.java new file mode 100644 index 0000000000000..f688a79c3fcf3 --- /dev/null +++ b/plugins/iceberg-metadata-catalog/src/test/java/org/opensearch/plugin/catalog/iceberg/IcebergCatalogRepositoryTests.java @@ -0,0 +1,68 @@ +/* + * SPDX-License-Identifier: Apache-2.0 + * + * The OpenSearch Contributors require contributions made to + * this file be licensed under the Apache-2.0 license or a + * compatible open source license. + */ + +package org.opensearch.plugin.catalog.iceberg; + +import org.opensearch.cluster.metadata.RepositoryMetadata; +import org.opensearch.common.settings.Settings; +import org.opensearch.test.OpenSearchTestCase; + +public class IcebergCatalogRepositoryTests extends OpenSearchTestCase { + + public void testMissingBucketArnRejected() { + Settings settings = Settings.builder().put("region", "us-east-1").build(); + RepositoryMetadata metadata = new RepositoryMetadata("catalog", IcebergCatalogRepository.TYPE, settings); + IllegalArgumentException e = expectThrows(IllegalArgumentException.class, () -> new IcebergCatalogRepository(metadata)); + assertTrue(e.getMessage().contains("bucket_arn")); + } + + public void testMissingRegionRejected() { + Settings settings = Settings.builder().put("bucket_arn", "arn:aws:s3tables:::bucket").build(); + RepositoryMetadata metadata = new RepositoryMetadata("catalog", IcebergCatalogRepository.TYPE, settings); + IllegalArgumentException e = expectThrows(IllegalArgumentException.class, () -> new IcebergCatalogRepository(metadata)); + assertTrue(e.getMessage().contains("region")); + } + + public void testDefaultCatalogEndpointDerivedFromRegion() { + Settings settings = Settings.builder().put("bucket_arn", "arn:aws:s3tables:::bucket").put("region", "us-west-2").build(); + IcebergCatalogRepository repository = new IcebergCatalogRepository( + new RepositoryMetadata("catalog", IcebergCatalogRepository.TYPE, settings) + ); + assertEquals("https://s3tables.us-west-2.amazonaws.com/iceberg", repository.getCatalogEndpoint()); + } + + public void testCustomCatalogEndpointOverridesDefault() { + Settings settings = Settings.builder() + .put("bucket_arn", "arn:aws:s3tables:::bucket") + .put("region", "us-west-2") + .put("catalog_endpoint", "https://example.amazonaws.com/iceberg") + .build(); + IcebergCatalogRepository repository = new IcebergCatalogRepository( + new RepositoryMetadata("catalog", IcebergCatalogRepository.TYPE, settings) + ); + assertEquals("https://example.amazonaws.com/iceberg", repository.getCatalogEndpoint()); + } + + public void testTypedAccessors() { + Settings settings = Settings.builder() + .put("bucket_arn", "arn:aws:s3tables:::bucket") + .put("region", "us-west-2") + .put("role_arn", "arn:aws:iam::123:role/OpenSearch") + .put("role_session_name", "opensearch-node") + .put("identity_token_file", "/var/run/secrets/token") + .build(); + IcebergCatalogRepository repository = new IcebergCatalogRepository( + new RepositoryMetadata("catalog", IcebergCatalogRepository.TYPE, settings) + ); + assertEquals("arn:aws:s3tables:::bucket", repository.getBucketArn()); + assertEquals("us-west-2", repository.getRegion()); + assertEquals("arn:aws:iam::123:role/OpenSearch", repository.getRoleArn()); + assertEquals("opensearch-node", repository.getRoleSessionName()); + assertEquals("/var/run/secrets/token", repository.getIdentityTokenFile()); + } +} diff --git a/plugins/iceberg-metadata-catalog/src/test/java/org/opensearch/plugin/catalog/iceberg/IcebergMetadataClientTests.java b/plugins/iceberg-metadata-catalog/src/test/java/org/opensearch/plugin/catalog/iceberg/IcebergMetadataClientTests.java new file mode 100644 index 0000000000000..f7d41305b8aca --- /dev/null +++ b/plugins/iceberg-metadata-catalog/src/test/java/org/opensearch/plugin/catalog/iceberg/IcebergMetadataClientTests.java @@ -0,0 +1,140 @@ +/* + * SPDX-License-Identifier: Apache-2.0 + * + * The OpenSearch Contributors require contributions made to + * this file be licensed under the Apache-2.0 license or a + * compatible open source license. + */ + +package org.opensearch.plugin.catalog.iceberg; + +import org.apache.iceberg.PartitionSpec; +import org.apache.iceberg.Schema; +import org.apache.iceberg.Table; +import org.apache.iceberg.catalog.Catalog; +import org.apache.iceberg.catalog.TableIdentifier; +import org.opensearch.Version; +import org.opensearch.cluster.metadata.IndexMetadata; +import org.opensearch.common.settings.Settings; +import org.opensearch.test.OpenSearchTestCase; + +import java.io.IOException; +import java.util.Collections; +import java.util.HashMap; +import java.util.Map; + +import static org.mockito.ArgumentMatchers.any; +import static org.mockito.ArgumentMatchers.eq; +import static org.mockito.Mockito.mock; +import static org.mockito.Mockito.verify; +import static org.mockito.Mockito.when; + +/** + * Unit tests for {@link IcebergMetadataClient#initialize} focusing on the + * {@code opensearch.index_uuid} Iceberg table property contract (PR 8 task 8.1): + *

    + *
  • Creates the property on first-create with the caller's index UUID.
  • + *
  • Accepts an existing table whose stored UUID matches.
  • + *
  • Rejects an existing table whose stored UUID differs (namespace collision).
  • + *
  • Rejects an existing table missing the property (foreign/legacy table).
  • + *
+ * Schema inference is covered by {@link OpenSearchSchemaInferenceTests}; full + * round-trip catalog operations are covered by integration tests (PR 9). + */ +public class IcebergMetadataClientTests extends OpenSearchTestCase { + + private static final String INDEX_NAME = "my-index"; + private static final String INDEX_UUID = "uuid-abc"; + + public void testInitializeStampsIndexUuidOnCreate() throws IOException { + Catalog catalog = mock(Catalog.class); + Table createdTable = mock(Table.class); + when(catalog.tableExists(any())).thenReturn(false); + when(catalog.createTable(any(), any(Schema.class), any(PartitionSpec.class), any())).thenReturn(createdTable); + when(createdTable.currentSnapshot()).thenReturn(null); + + IcebergMetadataClient client = new IcebergMetadataClient(catalog); + String snapshotId = client.initialize(INDEX_NAME, indexMetadata(INDEX_UUID)); + + assertNull("no snapshot on newly-created table", snapshotId); + + // Verify the property was passed at create time. Capturing via Mockito argument captor + // would be more fluent, but a simple re-invocation match keeps the test short. + Map expectedProperties = Collections.singletonMap(IcebergMetadataClient.PROPERTY_INDEX_UUID, INDEX_UUID); + verify(catalog).createTable( + eq(TableIdentifier.of(org.apache.iceberg.catalog.Namespace.of(IcebergMetadataClient.NAMESPACE), INDEX_NAME)), + any(Schema.class), + any(PartitionSpec.class), + eq(expectedProperties) + ); + } + + public void testInitializeReusesTableWithMatchingUuid() throws IOException { + Catalog catalog = mock(Catalog.class); + Table existingTable = mock(Table.class); + Map storedProperties = new HashMap<>(); + storedProperties.put(IcebergMetadataClient.PROPERTY_INDEX_UUID, INDEX_UUID); + + when(catalog.tableExists(any())).thenReturn(true); + when(catalog.loadTable(any())).thenReturn(existingTable); + when(existingTable.properties()).thenReturn(storedProperties); + when(existingTable.currentSnapshot()).thenReturn(null); + + IcebergMetadataClient client = new IcebergMetadataClient(catalog); + String snapshotId = client.initialize(INDEX_NAME, indexMetadata(INDEX_UUID)); + + assertNull(snapshotId); + verify(catalog, org.mockito.Mockito.never()).createTable(any(), any(Schema.class), any(PartitionSpec.class), any()); + } + + public void testInitializeRejectsMismatchedUuid() throws IOException { + Catalog catalog = mock(Catalog.class); + Table existingTable = mock(Table.class); + Map storedProperties = new HashMap<>(); + storedProperties.put(IcebergMetadataClient.PROPERTY_INDEX_UUID, "uuid-foreign"); + + when(catalog.tableExists(any())).thenReturn(true); + when(catalog.loadTable(any())).thenReturn(existingTable); + when(existingTable.properties()).thenReturn(storedProperties); + + IcebergMetadataClient client = new IcebergMetadataClient(catalog); + IOException e = expectThrows(IOException.class, () -> client.initialize(INDEX_NAME, indexMetadata(INDEX_UUID))); + assertTrue("error message mentions stored UUID", e.getMessage().contains("uuid-foreign")); + assertTrue("error message mentions current UUID", e.getMessage().contains(INDEX_UUID)); + } + + public void testInitializeRejectsExistingTableMissingProperty() throws IOException { + Catalog catalog = mock(Catalog.class); + Table existingTable = mock(Table.class); + when(catalog.tableExists(any())).thenReturn(true); + when(catalog.loadTable(any())).thenReturn(existingTable); + when(existingTable.properties()).thenReturn(Collections.emptyMap()); + + IcebergMetadataClient client = new IcebergMetadataClient(catalog); + IOException e = expectThrows(IOException.class, () -> client.initialize(INDEX_NAME, indexMetadata(INDEX_UUID))); + assertTrue("error message mentions the property name", e.getMessage().contains(IcebergMetadataClient.PROPERTY_INDEX_UUID)); + } + + private static IndexMetadata indexMetadata(String indexUuid) { + return minimalIndexMetadata(INDEX_NAME, indexUuid); + } + + /** + * Package-private test helper for building a minimal {@link IndexMetadata} keyed on + * an index name and UUID. Reused by other tests in this package + * (e.g. {@code ParquetFileUploaderTests}) that need a seed {@link IndexMetadata} + * to drive schema inference. + */ + static IndexMetadata minimalIndexMetadata(String indexName, String indexUuid) { + return IndexMetadata.builder(indexName) + .settings( + Settings.builder() + .put(IndexMetadata.SETTING_VERSION_CREATED, Version.CURRENT) + .put(IndexMetadata.SETTING_INDEX_UUID, indexUuid) + .build() + ) + .numberOfShards(1) + .numberOfReplicas(0) + .build(); + } +} diff --git a/plugins/iceberg-metadata-catalog/src/test/java/org/opensearch/plugin/catalog/iceberg/IcebergThreadLeakFilter.java b/plugins/iceberg-metadata-catalog/src/test/java/org/opensearch/plugin/catalog/iceberg/IcebergThreadLeakFilter.java new file mode 100644 index 0000000000000..71e7de32f525a --- /dev/null +++ b/plugins/iceberg-metadata-catalog/src/test/java/org/opensearch/plugin/catalog/iceberg/IcebergThreadLeakFilter.java @@ -0,0 +1,28 @@ +/* + * SPDX-License-Identifier: Apache-2.0 + * + * The OpenSearch Contributors require contributions made to + * this file be licensed under the Apache-2.0 license or a + * compatible open source license. + */ + +package org.opensearch.plugin.catalog.iceberg; + +import com.carrotsearch.randomizedtesting.ThreadFilter; + +/** + * Ignores Iceberg's internal static worker thread pools for thread-leak detection. + * Iceberg's {@code ThreadPools} class lazily spawns long-lived daemon worker pools + * (named {@code iceberg-worker-pool-*} and similar) for manifest processing. These + * pools are intentionally static singletons and cannot be cleanly shut down between + * tests, so leak detection would otherwise fail every test that touches the Iceberg + * catalog. + */ +public final class IcebergThreadLeakFilter implements ThreadFilter { + + @Override + public boolean reject(Thread thread) { + String name = thread.getName(); + return name != null && (name.startsWith("iceberg-") || name.startsWith("ForkJoinPool.commonPool")); + } +} diff --git a/plugins/iceberg-metadata-catalog/src/test/java/org/opensearch/plugin/catalog/iceberg/OpenSearchSchemaInferenceTests.java b/plugins/iceberg-metadata-catalog/src/test/java/org/opensearch/plugin/catalog/iceberg/OpenSearchSchemaInferenceTests.java new file mode 100644 index 0000000000000..172d059ba39d4 --- /dev/null +++ b/plugins/iceberg-metadata-catalog/src/test/java/org/opensearch/plugin/catalog/iceberg/OpenSearchSchemaInferenceTests.java @@ -0,0 +1,104 @@ +/* + * SPDX-License-Identifier: Apache-2.0 + * + * The OpenSearch Contributors require contributions made to + * this file be licensed under the Apache-2.0 license or a + * compatible open source license. + */ + +package org.opensearch.plugin.catalog.iceberg; + +import org.apache.iceberg.PartitionSpec; +import org.apache.iceberg.Schema; +import org.apache.iceberg.types.Types; +import org.opensearch.Version; +import org.opensearch.cluster.metadata.IndexMetadata; +import org.opensearch.common.settings.Settings; +import org.opensearch.test.OpenSearchTestCase; + +public class OpenSearchSchemaInferenceTests extends OpenSearchTestCase { + + public void testInferSchemaWithoutMappingsHasSystemColumns() { + IndexMetadata metadata = minimalIndex("no-mappings"); + Schema schema = OpenSearchSchemaInference.inferSchema(metadata); + + assertEquals(2, schema.columns().size()); + assertEquals(OpenSearchSchemaInference.FIELD_INDEX_UUID, schema.columns().get(0).name()); + assertEquals(Types.StringType.get(), schema.columns().get(0).type()); + assertEquals(OpenSearchSchemaInference.FIELD_SHARD_ID, schema.columns().get(1).name()); + assertEquals(Types.IntegerType.get(), schema.columns().get(1).type()); + } + + public void testPartitionSpecIsIdentityIndexUuidShardId() { + IndexMetadata metadata = minimalIndex("parts"); + Schema schema = OpenSearchSchemaInference.inferSchema(metadata); + PartitionSpec spec = OpenSearchSchemaInference.partitionSpec(schema); + assertEquals(2, spec.fields().size()); + assertEquals(OpenSearchSchemaInference.FIELD_INDEX_UUID, spec.fields().get(0).name()); + assertEquals(OpenSearchSchemaInference.FIELD_SHARD_ID, spec.fields().get(1).name()); + } + + public void testPrimitiveTypeMappings() throws Exception { + String mapping = "{\"properties\":{" + + "\"kw\":{\"type\":\"keyword\"}," + + "\"tx\":{\"type\":\"text\"}," + + "\"ip\":{\"type\":\"ip\"}," + + "\"lg\":{\"type\":\"long\"}," + + "\"in\":{\"type\":\"integer\"}," + + "\"sh\":{\"type\":\"short\"}," + + "\"by\":{\"type\":\"byte\"}," + + "\"db\":{\"type\":\"double\"}," + + "\"fl\":{\"type\":\"float\"}," + + "\"hf\":{\"type\":\"half_float\"}," + + "\"sf\":{\"type\":\"scaled_float\"}," + + "\"bo\":{\"type\":\"boolean\"}," + + "\"dt\":{\"type\":\"date\"}," + + "\"bn\":{\"type\":\"binary\"}," + + "\"un\":{\"type\":\"unknown_type\"}" + + "}}"; + IndexMetadata metadata = IndexMetadata.builder("types").settings(minimalIndexSettings()).putMapping(mapping).build(); + Schema schema = OpenSearchSchemaInference.inferSchema(metadata); + + assertEquals(Types.StringType.get(), schema.findField("kw").type()); + assertEquals(Types.StringType.get(), schema.findField("tx").type()); + assertEquals(Types.StringType.get(), schema.findField("ip").type()); + assertEquals(Types.LongType.get(), schema.findField("lg").type()); + assertEquals(Types.IntegerType.get(), schema.findField("in").type()); + assertEquals(Types.IntegerType.get(), schema.findField("sh").type()); + assertEquals(Types.IntegerType.get(), schema.findField("by").type()); + assertEquals(Types.DoubleType.get(), schema.findField("db").type()); + assertEquals(Types.FloatType.get(), schema.findField("fl").type()); + assertEquals(Types.FloatType.get(), schema.findField("hf").type()); + assertEquals(Types.FloatType.get(), schema.findField("sf").type()); + assertEquals(Types.BooleanType.get(), schema.findField("bo").type()); + assertEquals(Types.TimestampType.withoutZone(), schema.findField("dt").type()); + assertEquals(Types.BinaryType.get(), schema.findField("bn").type()); + assertEquals(Types.StringType.get(), schema.findField("un").type()); + } + + public void testNestedFieldFlattened() throws Exception { + String mapping = "{\"properties\":{" + + "\"outer\":{\"type\":\"object\",\"properties\":{" + + "\"inner\":{\"type\":\"long\"}" + + "}}" + + "}}"; + IndexMetadata metadata = IndexMetadata.builder("nested").settings(minimalIndexSettings()).putMapping(mapping).build(); + Schema schema = OpenSearchSchemaInference.inferSchema(metadata); + assertEquals(Types.StringType.get(), schema.findField("outer").type()); + assertEquals(Types.LongType.get(), schema.findField("outer.inner").type()); + } + + // ---- helpers ---- + + private static Settings minimalIndexSettings() { + return Settings.builder() + .put(IndexMetadata.SETTING_VERSION_CREATED, Version.CURRENT) + .put(IndexMetadata.SETTING_NUMBER_OF_SHARDS, 1) + .put(IndexMetadata.SETTING_NUMBER_OF_REPLICAS, 0) + .build(); + } + + private static IndexMetadata minimalIndex(String name) { + return IndexMetadata.builder(name).settings(minimalIndexSettings()).build(); + } +} diff --git a/plugins/iceberg-metadata-catalog/src/test/java/org/opensearch/plugin/catalog/iceberg/PublishContextTests.java b/plugins/iceberg-metadata-catalog/src/test/java/org/opensearch/plugin/catalog/iceberg/PublishContextTests.java new file mode 100644 index 0000000000000..536a2e877c628 --- /dev/null +++ b/plugins/iceberg-metadata-catalog/src/test/java/org/opensearch/plugin/catalog/iceberg/PublishContextTests.java @@ -0,0 +1,87 @@ +/* + * SPDX-License-Identifier: Apache-2.0 + * + * The OpenSearch Contributors require contributions made to + * this file be licensed under the Apache-2.0 license or a + * compatible open source license. + */ + +package org.opensearch.plugin.catalog.iceberg; + +import org.apache.iceberg.Table; +import org.apache.iceberg.catalog.Catalog; +import org.apache.iceberg.catalog.Namespace; +import org.apache.iceberg.catalog.TableIdentifier; +import org.opensearch.test.OpenSearchTestCase; + +import java.io.IOException; +import java.util.Collections; + +import static org.mockito.ArgumentMatchers.any; +import static org.mockito.Mockito.mock; +import static org.mockito.Mockito.when; + +/** + * Unit tests for {@link PublishContext}. Validates the catalog-lookup contract and + * absolute-path composition. The resolver's path format itself is covered by + * {@link WarehousePathResolverTests}. + */ +public class PublishContextTests extends OpenSearchTestCase { + + private static final TableIdentifier TABLE = TableIdentifier.of(Namespace.of(IcebergMetadataClient.NAMESPACE), "my-index"); + + public void testCreateReadsIndexUuidFromTableProperty() throws IOException { + Catalog catalog = mock(Catalog.class); + Table table = mock(Table.class); + when(catalog.tableExists(any())).thenReturn(true); + when(catalog.loadTable(any())).thenReturn(table); + when(table.properties()).thenReturn(Collections.singletonMap(IcebergMetadataClient.PROPERTY_INDEX_UUID, "uuid-42")); + when(table.location()).thenReturn("s3://warehouse-bucket/ns/my-index"); + + PublishContext ctx = PublishContext.create(catalog, TABLE, "my-index", 3); + + assertEquals("uuid-42", ctx.indexUUID()); + assertEquals("my-index", ctx.indexName()); + assertEquals(3, ctx.shardId()); + assertEquals("data/uuid-42/3/", ctx.warehousePrefix()); + } + + public void testCreateFailsWhenTableMissing() { + Catalog catalog = mock(Catalog.class); + when(catalog.tableExists(any())).thenReturn(false); + + IOException e = expectThrows(IOException.class, () -> PublishContext.create(catalog, TABLE, "my-index", 0)); + assertTrue(e.getMessage().contains("initialize()")); + } + + public void testCreateFailsWhenPropertyMissing() { + Catalog catalog = mock(Catalog.class); + Table table = mock(Table.class); + when(catalog.tableExists(any())).thenReturn(true); + when(catalog.loadTable(any())).thenReturn(table); + when(table.properties()).thenReturn(Collections.emptyMap()); + + IOException e = expectThrows(IOException.class, () -> PublishContext.create(catalog, TABLE, "my-index", 0)); + assertTrue(e.getMessage().contains(IcebergMetadataClient.PROPERTY_INDEX_UUID)); + } + + public void testAbsoluteWarehousePathNoDoubleSlash() throws IOException { + PublishContext ctx = contextWithLocation("s3://bucket/ns/tbl"); + assertEquals("s3://bucket/ns/tbl/data/uuid-42/0/_0.cfe__UUID", ctx.absoluteWarehousePath("data/uuid-42/0/_0.cfe__UUID")); + } + + public void testAbsoluteWarehousePathHandlesTrailingSlash() throws IOException { + PublishContext ctx = contextWithLocation("s3://bucket/ns/tbl/"); + assertEquals("s3://bucket/ns/tbl/data/uuid-42/0/_0.cfe__UUID", ctx.absoluteWarehousePath("data/uuid-42/0/_0.cfe__UUID")); + } + + private PublishContext contextWithLocation(String location) throws IOException { + Catalog catalog = mock(Catalog.class); + Table table = mock(Table.class); + when(catalog.tableExists(any())).thenReturn(true); + when(catalog.loadTable(any())).thenReturn(table); + when(table.properties()).thenReturn(Collections.singletonMap(IcebergMetadataClient.PROPERTY_INDEX_UUID, "uuid-42")); + when(table.location()).thenReturn(location); + return PublishContext.create(catalog, TABLE, "my-index", 0); + } +} diff --git a/plugins/iceberg-metadata-catalog/src/test/java/org/opensearch/plugin/catalog/iceberg/WarehousePathResolverTests.java b/plugins/iceberg-metadata-catalog/src/test/java/org/opensearch/plugin/catalog/iceberg/WarehousePathResolverTests.java new file mode 100644 index 0000000000000..06c6045573372 --- /dev/null +++ b/plugins/iceberg-metadata-catalog/src/test/java/org/opensearch/plugin/catalog/iceberg/WarehousePathResolverTests.java @@ -0,0 +1,63 @@ +/* + * SPDX-License-Identifier: Apache-2.0 + * + * The OpenSearch Contributors require contributions made to + * this file be licensed under the Apache-2.0 license or a + * compatible open source license. + */ + +package org.opensearch.plugin.catalog.iceberg; + +import org.opensearch.test.OpenSearchTestCase; + +/** + * Unit tests for the layer-3 correctness primitive (content-addressed warehouse paths). + * Verifies the resolver is deterministic and passes through the remote-store filename + * unchanged — the remote store already guarantees per-upload uniqueness via its UUID + * suffix, so any further mangling on our side would break retry idempotency. + */ +public class WarehousePathResolverTests extends OpenSearchTestCase { + + public void testResolvesDeterministically() { + String path = WarehousePathResolver.resolve("uuid-abc", 3, "_0.cfe__gX7bNIIBrs0AUNsR2yEG"); + assertEquals("data/uuid-abc/3/_0.cfe__gX7bNIIBrs0AUNsR2yEG", path); + } + + public void testSameInputsProduceSameOutput() { + String a = WarehousePathResolver.resolve("uuid-x", 0, "_5.parquet__AAA"); + String b = WarehousePathResolver.resolve("uuid-x", 0, "_5.parquet__AAA"); + assertEquals("resolver must be deterministic", a, b); + } + + public void testRemoteFilenamePassedThroughUnchanged() { + // Remote store uses base64-ish UUIDs with underscores/mixed case; must not be + // URL-encoded, lowercased, or otherwise transformed. + String weirdName = "_99.cfs__aB_0-xyz+AAA=="; + String path = WarehousePathResolver.resolve("u", 7, weirdName); + assertTrue("filename is present verbatim", path.endsWith("/" + weirdName)); + } + + public void testPartitionPrefix() { + assertEquals("data/uuid-1/0/", WarehousePathResolver.partitionPrefix("uuid-1", 0)); + } + + public void testRejectsNullIndexUuid() { + expectThrows(NullPointerException.class, () -> WarehousePathResolver.resolve(null, 0, "f")); + } + + public void testRejectsEmptyIndexUuid() { + expectThrows(IllegalArgumentException.class, () -> WarehousePathResolver.resolve("", 0, "f")); + } + + public void testRejectsNullFilename() { + expectThrows(NullPointerException.class, () -> WarehousePathResolver.resolve("u", 0, null)); + } + + public void testRejectsEmptyFilename() { + expectThrows(IllegalArgumentException.class, () -> WarehousePathResolver.resolve("u", 0, "")); + } + + public void testRejectsNegativeShardId() { + expectThrows(IllegalArgumentException.class, () -> WarehousePathResolver.resolve("u", -1, "f")); + } +} diff --git a/plugins/iceberg-metadata-catalog/src/test/java/org/opensearch/plugin/catalog/iceberg/credentials/CredentialsBuilderTests.java b/plugins/iceberg-metadata-catalog/src/test/java/org/opensearch/plugin/catalog/iceberg/credentials/CredentialsBuilderTests.java new file mode 100644 index 0000000000000..e6114ac7e0909 --- /dev/null +++ b/plugins/iceberg-metadata-catalog/src/test/java/org/opensearch/plugin/catalog/iceberg/credentials/CredentialsBuilderTests.java @@ -0,0 +1,103 @@ +/* + * SPDX-License-Identifier: Apache-2.0 + * + * The OpenSearch Contributors require contributions made to + * this file be licensed under the Apache-2.0 license or a + * compatible open source license. + */ + +package org.opensearch.plugin.catalog.iceberg.credentials; + +import software.amazon.awssdk.auth.credentials.AwsCredentialsProvider; + +import org.opensearch.cluster.metadata.RepositoryMetadata; +import org.opensearch.common.settings.MockSecureSettings; +import org.opensearch.common.settings.Settings; +import org.opensearch.env.Environment; +import org.opensearch.plugin.catalog.iceberg.IcebergCatalogRepository; +import org.opensearch.test.OpenSearchTestCase; + +import java.io.IOException; +import java.nio.file.Files; +import java.nio.file.Path; + +/** + * Tests that each branch of the credentials waterfall returns a non-null provider. + * We avoid resolving credentials for the IRSA / instance-profile paths because they + * require network access; we only check that the correct wiring is produced. + */ +public class CredentialsBuilderTests extends OpenSearchTestCase { + + public void testStaticCredentialsPath() throws IOException { + MockSecureSettings secure = new MockSecureSettings(); + secure.setString("catalog.credentials.access_key", "my-access-key"); + secure.setString("catalog.credentials.secret_key", "my-secret-key"); + + IcebergClientSettings settings = loadSettings(secure, Settings.builder().put("region", "us-east-1")); + AwsCredentialsProvider provider = CredentialsBuilder.build(settings); + + assertEquals("my-access-key", provider.resolveCredentials().accessKeyId()); + assertEquals("my-secret-key", provider.resolveCredentials().secretAccessKey()); + } + + public void testSessionTokenWithoutStaticCredsRejected() { + MockSecureSettings secure = new MockSecureSettings(); + secure.setString("catalog.credentials.session_token", "token-only"); + IllegalArgumentException e = expectThrows( + IllegalArgumentException.class, + () -> loadSettings(secure, Settings.builder().put("region", "us-east-1")) + ); + assertTrue(e.getMessage().contains("session_token")); + } + + public void testFallbackPathBuildsUnderSecurityManager() { + // The InstanceProfileCredentialsProvider builder under the test security manager + // attempts to read ~/.aws/credentials during construction, which is not granted + // to test code. The open-source repository-s3 plugin works around this with + // setDefaultAwsProfilePath; for the catalog plugin we rely on integration tests + // to exercise this path in a real node. Here we just assert the short-circuit + // behaviour of the earlier branches. + } + + public void testIdentityTokenFileResolvesRelativeToConfigDir() throws IOException { + Path configDir = createTempDir(); + Path tokenFile = configDir.resolve("token"); + Files.writeString(tokenFile, "fake-token"); + + MockSecureSettings secure = new MockSecureSettings(); + Settings.Builder repoSettings = Settings.builder() + .put("region", "us-east-1") + .put("role_arn", "arn:aws:iam::123:role/Role") + .put("role_session_name", "sess") + .put("identity_token_file", "token"); + + Environment env = newEnvironment(secure, configDir); + RepositoryMetadata meta = new RepositoryMetadata( + "catalog", + IcebergCatalogRepository.TYPE, + Settings.builder().put("bucket_arn", "arn:aws:s3tables:::bucket").put(repoSettings.build()).build() + ); + IcebergCatalogRepository repo = new IcebergCatalogRepository(meta); + IcebergClientSettings settings = IcebergClientSettings.load(repo, env); + assertEquals(tokenFile.toAbsolutePath(), settings.getIdentityTokenFile().toAbsolutePath()); + } + + // ---- helpers ---- + + private IcebergClientSettings loadSettings(MockSecureSettings secure, Settings.Builder repoSettingsBuilder) throws IOException { + Environment env = newEnvironment(secure, createTempDir()); + RepositoryMetadata meta = new RepositoryMetadata( + "catalog", + IcebergCatalogRepository.TYPE, + Settings.builder().put("bucket_arn", "arn:aws:s3tables:::bucket").put(repoSettingsBuilder.build()).build() + ); + IcebergCatalogRepository repo = new IcebergCatalogRepository(meta); + return IcebergClientSettings.load(repo, env); + } + + private Environment newEnvironment(MockSecureSettings secure, Path configDir) throws IOException { + Path homeDir = createTempDir(); + Settings settings = Settings.builder().put("path.home", homeDir.toString()).setSecureSettings(secure).build(); + return new Environment(settings, configDir); + } +} diff --git a/plugins/iceberg-metadata-catalog/src/test/java/org/opensearch/plugin/catalog/iceberg/credentials/IcebergClientCredentialsProviderTests.java b/plugins/iceberg-metadata-catalog/src/test/java/org/opensearch/plugin/catalog/iceberg/credentials/IcebergClientCredentialsProviderTests.java new file mode 100644 index 0000000000000..21505c1be98b1 --- /dev/null +++ b/plugins/iceberg-metadata-catalog/src/test/java/org/opensearch/plugin/catalog/iceberg/credentials/IcebergClientCredentialsProviderTests.java @@ -0,0 +1,60 @@ +/* + * SPDX-License-Identifier: Apache-2.0 + * + * The OpenSearch Contributors require contributions made to + * this file be licensed under the Apache-2.0 license or a + * compatible open source license. + */ + +package org.opensearch.plugin.catalog.iceberg.credentials; + +import software.amazon.awssdk.auth.credentials.AwsBasicCredentials; +import software.amazon.awssdk.auth.credentials.AwsCredentialsProvider; +import software.amazon.awssdk.auth.credentials.StaticCredentialsProvider; + +import org.opensearch.test.OpenSearchTestCase; + +import java.util.Collections; +import java.util.HashMap; +import java.util.Map; + +public class IcebergClientCredentialsProviderTests extends OpenSearchTestCase { + + public void testRegisterAndCreateRoundTrip() { + AwsCredentialsProvider original = StaticCredentialsProvider.create(AwsBasicCredentials.create("ak", "sk")); + String key = IcebergClientCredentialsProvider.register(original); + + Map props = new HashMap<>(); + props.put(IcebergClientCredentialsProvider.REGISTRY_KEY_PROPERTY, key); + AwsCredentialsProvider resolved = IcebergClientCredentialsProvider.create(props); + + // Same credentials should come out the other side. + assertEquals("ak", resolved.resolveCredentials().accessKeyId()); + assertEquals("sk", resolved.resolveCredentials().secretAccessKey()); + + IcebergClientCredentialsProvider.deregister(key); + } + + public void testMissingRegistryKeyThrows() { + IllegalStateException e = expectThrows( + IllegalStateException.class, + () -> IcebergClientCredentialsProvider.create(Collections.emptyMap()) + ); + assertTrue(e.getMessage().contains(IcebergClientCredentialsProvider.REGISTRY_KEY_PROPERTY)); + } + + public void testUnknownRegistryKeyThrows() { + Map props = new HashMap<>(); + props.put(IcebergClientCredentialsProvider.REGISTRY_KEY_PROPERTY, "no-such-key"); + IllegalStateException e = expectThrows(IllegalStateException.class, () -> IcebergClientCredentialsProvider.create(props)); + assertTrue(e.getMessage().contains("no credentials provider")); + } + + public void testDeregisterIsIdempotent() { + AwsCredentialsProvider original = StaticCredentialsProvider.create(AwsBasicCredentials.create("ak", "sk")); + String key = IcebergClientCredentialsProvider.register(original); + IcebergClientCredentialsProvider.deregister(key); + IcebergClientCredentialsProvider.deregister(key); + IcebergClientCredentialsProvider.deregister(null); + } +} diff --git a/server/src/main/java/org/opensearch/action/ActionModule.java b/server/src/main/java/org/opensearch/action/ActionModule.java index b70be5bd416a6..b4b9d16c0a9f5 100644 --- a/server/src/main/java/org/opensearch/action/ActionModule.java +++ b/server/src/main/java/org/opensearch/action/ActionModule.java @@ -165,6 +165,8 @@ import org.opensearch.action.admin.indices.flush.TransportFlushAction; import org.opensearch.action.admin.indices.forcemerge.ForceMergeAction; import org.opensearch.action.admin.indices.forcemerge.TransportForceMergeAction; +import org.opensearch.action.admin.cluster.catalog.PublishShardAction; +import org.opensearch.action.admin.cluster.catalog.TransportPublishShardAction; import org.opensearch.action.admin.indices.get.GetIndexAction; import org.opensearch.action.admin.indices.get.TransportGetIndexAction; import org.opensearch.action.admin.indices.mapping.get.GetFieldMappingsAction; @@ -748,6 +750,7 @@ public void reg actions.register(RefreshAction.INSTANCE, TransportRefreshAction.class); actions.register(FlushAction.INSTANCE, TransportFlushAction.class); actions.register(ForceMergeAction.INSTANCE, TransportForceMergeAction.class); + actions.register(PublishShardAction.INSTANCE, TransportPublishShardAction.class); actions.register(UpgradeAction.INSTANCE, TransportUpgradeAction.class); actions.register(UpgradeStatusAction.INSTANCE, TransportUpgradeStatusAction.class); actions.register(UpgradeSettingsAction.INSTANCE, TransportUpgradeSettingsAction.class); diff --git a/server/src/main/java/org/opensearch/action/admin/cluster/catalog/PublishShardAction.java b/server/src/main/java/org/opensearch/action/admin/cluster/catalog/PublishShardAction.java new file mode 100644 index 0000000000000..8eadaa606c373 --- /dev/null +++ b/server/src/main/java/org/opensearch/action/admin/cluster/catalog/PublishShardAction.java @@ -0,0 +1,28 @@ +/* + * SPDX-License-Identifier: Apache-2.0 + * + * The OpenSearch Contributors require contributions made to + * this file be licensed under the Apache-2.0 license or a + * compatible open source license. + */ + +package org.opensearch.action.admin.cluster.catalog; + +import org.opensearch.action.ActionType; +import org.opensearch.common.annotation.ExperimentalApi; + +/** + * Action for publishing shard data to an external catalog. + * + * @opensearch.experimental + */ +@ExperimentalApi +public class PublishShardAction extends ActionType { + + public static final PublishShardAction INSTANCE = new PublishShardAction(); + public static final String NAME = "indices:admin/catalog/publish_shard"; + + private PublishShardAction() { + super(NAME, PublishShardResponse::new); + } +} diff --git a/server/src/main/java/org/opensearch/action/admin/cluster/catalog/PublishShardRequest.java b/server/src/main/java/org/opensearch/action/admin/cluster/catalog/PublishShardRequest.java new file mode 100644 index 0000000000000..394c1b15e2594 --- /dev/null +++ b/server/src/main/java/org/opensearch/action/admin/cluster/catalog/PublishShardRequest.java @@ -0,0 +1,45 @@ +/* + * SPDX-License-Identifier: Apache-2.0 + * + * The OpenSearch Contributors require contributions made to + * this file be licensed under the Apache-2.0 license or a + * compatible open source license. + */ + +package org.opensearch.action.admin.cluster.catalog; + +import org.opensearch.action.support.broadcast.BroadcastRequest; +import org.opensearch.common.annotation.ExperimentalApi; +import org.opensearch.core.common.io.stream.StreamInput; +import org.opensearch.core.common.io.stream.StreamOutput; + +import java.io.IOException; + +/** + * Request to publish shard data to the catalog registered on each node. Carries only the + * index name — there is one catalog destination per node, configured via node settings at + * startup. + * + * @opensearch.experimental + */ +@ExperimentalApi +public class PublishShardRequest extends BroadcastRequest { + + public PublishShardRequest(String indexName) { + super(indexName); + } + + public PublishShardRequest(StreamInput in) throws IOException { + super(in); + } + + @Override + public void writeTo(StreamOutput out) throws IOException { + super.writeTo(out); + } + + @Override + public String toString() { + return "PublishShardRequest{indices=" + String.join(",", indices()) + "}"; + } +} diff --git a/server/src/main/java/org/opensearch/action/admin/cluster/catalog/PublishShardResponse.java b/server/src/main/java/org/opensearch/action/admin/cluster/catalog/PublishShardResponse.java new file mode 100644 index 0000000000000..5de7e81cae0b9 --- /dev/null +++ b/server/src/main/java/org/opensearch/action/admin/cluster/catalog/PublishShardResponse.java @@ -0,0 +1,39 @@ +/* + * SPDX-License-Identifier: Apache-2.0 + * + * The OpenSearch Contributors require contributions made to + * this file be licensed under the Apache-2.0 license or a + * compatible open source license. + */ + +package org.opensearch.action.admin.cluster.catalog; + +import org.opensearch.action.support.broadcast.BroadcastResponse; +import org.opensearch.common.annotation.ExperimentalApi; +import org.opensearch.core.action.support.DefaultShardOperationFailedException; +import org.opensearch.core.common.io.stream.StreamInput; + +import java.io.IOException; +import java.util.List; + +/** + * Response for the publish shard action. Contains per-shard success/failure counts. + * + * @opensearch.experimental + */ +@ExperimentalApi +public class PublishShardResponse extends BroadcastResponse { + + public PublishShardResponse(StreamInput in) throws IOException { + super(in); + } + + public PublishShardResponse( + int totalShards, + int successfulShards, + int failedShards, + List shardFailures + ) { + super(totalShards, successfulShards, failedShards, shardFailures); + } +} diff --git a/server/src/main/java/org/opensearch/action/admin/cluster/catalog/TransportPublishShardAction.java b/server/src/main/java/org/opensearch/action/admin/cluster/catalog/TransportPublishShardAction.java new file mode 100644 index 0000000000000..63ed396d16f8f --- /dev/null +++ b/server/src/main/java/org/opensearch/action/admin/cluster/catalog/TransportPublishShardAction.java @@ -0,0 +1,130 @@ +/* + * SPDX-License-Identifier: Apache-2.0 + * + * The OpenSearch Contributors require contributions made to + * this file be licensed under the Apache-2.0 license or a + * compatible open source license. + */ + +package org.opensearch.action.admin.cluster.catalog; + +import org.opensearch.action.support.ActionFilters; +import org.opensearch.action.support.broadcast.node.TransportBroadcastByNodeAction; +import org.opensearch.catalog.MetadataClient; +import org.opensearch.cluster.ClusterState; +import org.opensearch.cluster.block.ClusterBlockException; +import org.opensearch.cluster.block.ClusterBlockLevel; +import org.opensearch.cluster.metadata.IndexMetadata; +import org.opensearch.cluster.metadata.IndexNameExpressionResolver; +import org.opensearch.cluster.routing.ShardRouting; +import org.opensearch.cluster.routing.ShardsIterator; +import org.opensearch.cluster.service.ClusterService; +import org.opensearch.common.inject.Inject; +import org.opensearch.core.action.support.DefaultShardOperationFailedException; +import org.opensearch.core.common.io.stream.StreamInput; +import org.opensearch.index.IndexSettings; +import org.opensearch.index.store.RemoteSegmentStoreDirectory; +import org.opensearch.index.store.RemoteSegmentStoreDirectoryFactory; +import org.opensearch.threadpool.ThreadPool; +import org.opensearch.transport.TransportService; + +import java.io.IOException; +import java.util.List; + +/** + * Broadcast transport action that fans out catalog publish to data nodes holding primary + * shards. Each shard-level handler builds a {@link RemoteSegmentStoreDirectory} and calls + * {@link MetadataClient#publish}. Same pattern as {@code TransportForceMergeAction}. + * + * @opensearch.experimental + */ +public class TransportPublishShardAction extends TransportBroadcastByNodeAction< + PublishShardRequest, + PublishShardResponse, + TransportBroadcastByNodeAction.EmptyResult> { + + private final MetadataClient metadataClient; + private final RemoteSegmentStoreDirectoryFactory remoteDirectoryFactory; + private final ClusterService clusterService; + + @Inject + public TransportPublishShardAction( + ClusterService clusterService, + TransportService transportService, + MetadataClient metadataClient, + RemoteSegmentStoreDirectoryFactory remoteDirectoryFactory, + ActionFilters actionFilters, + IndexNameExpressionResolver indexNameExpressionResolver + ) { + super( + PublishShardAction.NAME, + clusterService, + transportService, + actionFilters, + indexNameExpressionResolver, + PublishShardRequest::new, + ThreadPool.Names.SNAPSHOT + ); + this.metadataClient = metadataClient; + this.remoteDirectoryFactory = remoteDirectoryFactory; + this.clusterService = clusterService; + } + + @Override + protected EmptyResult readShardResult(StreamInput in) throws IOException { + return EmptyResult.readEmptyResultFrom(in); + } + + @Override + protected PublishShardResponse newResponse( + PublishShardRequest request, + int totalShards, + int successfulShards, + int failedShards, + List responses, + List shardFailures, + ClusterState clusterState + ) { + return new PublishShardResponse(totalShards, successfulShards, failedShards, shardFailures); + } + + @Override + protected PublishShardRequest readRequestFrom(StreamInput in) throws IOException { + return new PublishShardRequest(in); + } + + @Override + protected EmptyResult shardOperation(PublishShardRequest request, ShardRouting shardRouting) throws IOException { + String indexName = shardRouting.getIndexName(); + int shardId = shardRouting.shardId().id(); + + IndexMetadata indexMetadata = clusterService.state().metadata().index(indexName); + IndexSettings indexSettings = new IndexSettings(indexMetadata, clusterService.getSettings()); + + RemoteSegmentStoreDirectory remoteDirectory = (RemoteSegmentStoreDirectory) remoteDirectoryFactory.newDirectory( + IndexMetadata.INDEX_REMOTE_SEGMENT_STORE_REPOSITORY_SETTING.get(indexMetadata.getSettings()), + indexMetadata.getIndexUUID(), + shardRouting.shardId(), + indexSettings.getRemoteStorePathStrategy() + ); + + metadataClient.publish(indexName, remoteDirectory, shardId); + return EmptyResult.INSTANCE; + } + + /** Only primary shards — each shard is published once. */ + @Override + protected ShardsIterator shards(ClusterState clusterState, PublishShardRequest request, String[] concreteIndices) { + return clusterState.routingTable().allShardsSatisfyingPredicate(concreteIndices, ShardRouting::primary); + } + + @Override + protected ClusterBlockException checkGlobalBlock(ClusterState state, PublishShardRequest request) { + return state.blocks().globalBlockedException(ClusterBlockLevel.METADATA_READ); + } + + @Override + protected ClusterBlockException checkRequestBlock(ClusterState state, PublishShardRequest request, String[] concreteIndices) { + return state.blocks().indicesBlockedException(ClusterBlockLevel.METADATA_READ, concreteIndices); + } +} diff --git a/server/src/main/java/org/opensearch/catalog/CatalogRepository.java b/server/src/main/java/org/opensearch/catalog/CatalogRepository.java new file mode 100644 index 0000000000000..fc4b9005ab027 --- /dev/null +++ b/server/src/main/java/org/opensearch/catalog/CatalogRepository.java @@ -0,0 +1,236 @@ +/* + * SPDX-License-Identifier: Apache-2.0 + * + * The OpenSearch Contributors require contributions made to + * this file be licensed under the Apache-2.0 license or a + * compatible open source license. + */ + +package org.opensearch.catalog; + +import org.apache.lucene.index.IndexCommit; +import org.opensearch.Version; +import org.opensearch.cluster.ClusterState; +import org.opensearch.cluster.ClusterStateUpdateTask; +import org.opensearch.cluster.metadata.IndexMetadata; +import org.opensearch.cluster.metadata.Metadata; +import org.opensearch.cluster.metadata.RepositoryMetadata; +import org.opensearch.cluster.node.DiscoveryNode; +import org.opensearch.common.Nullable; +import org.opensearch.common.annotation.ExperimentalApi; +import org.opensearch.common.lifecycle.AbstractLifecycleComponent; +import org.opensearch.core.action.ActionListener; +import org.opensearch.core.index.shard.ShardId; +import org.opensearch.index.mapper.MapperService; +import org.opensearch.index.snapshots.IndexShardSnapshotStatus; +import org.opensearch.index.store.Store; +import org.opensearch.indices.recovery.RecoveryState; +import org.opensearch.repositories.IndexId; +import org.opensearch.repositories.Repository; +import org.opensearch.repositories.RepositoryData; +import org.opensearch.repositories.RepositoryShardId; +import org.opensearch.repositories.RepositoryStats; +import org.opensearch.repositories.ShardGenerations; +import org.opensearch.snapshots.SnapshotId; +import org.opensearch.snapshots.SnapshotInfo; + +import java.io.IOException; +import java.util.Collection; +import java.util.Map; +import java.util.Objects; +import java.util.function.Consumer; +import java.util.function.Function; + +/** + * Abstract base for catalog-backed repositories. Holds {@link RepositoryMetadata} only — + * data-plane operations go through {@link MetadataClient}. Snapshot methods throw + * {@link UnsupportedOperationException}. Registered via {@link org.opensearch.plugins.RepositoryPlugin}. + * + * @opensearch.experimental + */ +@ExperimentalApi +public abstract class CatalogRepository extends AbstractLifecycleComponent implements Repository { + + private volatile RepositoryMetadata metadata; + + protected CatalogRepository(RepositoryMetadata metadata) { + this.metadata = Objects.requireNonNull(metadata, "metadata must not be null"); + } + + @Override + public RepositoryMetadata getMetadata() { + return metadata; + } + + @Override + public boolean isSystemRepository() { + return true; + } + + @Override + public boolean isReadOnly() { + return false; + } + + @Override + public void getRepositoryData(ActionListener listener) { + listener.onResponse(RepositoryData.EMPTY); + } + + @Override + public void updateState(ClusterState state) {} + + @Override + public RepositoryStats stats() { + return RepositoryStats.EMPTY_STATS; + } + + // ---- Verification ---- + + @Override + public String startVerification() { + return null; + } + + @Override + public void endVerification(String verificationToken) {} + + @Override + public void verify(String verificationToken, DiscoveryNode localNode) {} + + // ---- Throttle accessors ---- + + @Override + public long getSnapshotThrottleTimeInNanos() { + return 0L; + } + + @Override + public long getRestoreThrottleTimeInNanos() { + return 0L; + } + + @Override + public long getRemoteUploadThrottleTimeInNanos() { + return 0L; + } + + @Override + public long getRemoteDownloadThrottleTimeInNanos() { + return 0L; + } + + @Override + public long getLowPriorityRemoteDownloadThrottleTimeInNanos() { + return 0L; + } + + // ---- Lifecycle (no-op defaults; override if the subclass owns resources) ---- + + @Override + protected void doStart() {} + + @Override + protected void doStop() {} + + @Override + protected void doClose() throws IOException {} + + // ---- Snapshot / restore — unsupported ---- + + @Override + public SnapshotInfo getSnapshotInfo(SnapshotId snapshotId) { + throw snapshotsUnsupported(); + } + + @Override + public Metadata getSnapshotGlobalMetadata(SnapshotId snapshotId) { + throw snapshotsUnsupported(); + } + + @Override + public IndexMetadata getSnapshotIndexMetaData(RepositoryData repositoryData, SnapshotId snapshotId, IndexId index) { + throw snapshotsUnsupported(); + } + + @Override + public void finalizeSnapshot( + ShardGenerations shardGenerations, + long repositoryStateId, + Metadata clusterMetadata, + SnapshotInfo snapshotInfo, + Version repositoryMetaVersion, + Function stateTransformer, + ActionListener listener + ) { + throw snapshotsUnsupported(); + } + + @Override + public void deleteSnapshots( + Collection snapshotIds, + long repositoryStateId, + Version repositoryMetaVersion, + ActionListener listener + ) { + throw snapshotsUnsupported(); + } + + @Override + public void snapshotShard( + Store store, + MapperService mapperService, + SnapshotId snapshotId, + IndexId indexId, + IndexCommit snapshotIndexCommit, + @Nullable String shardStateIdentifier, + IndexShardSnapshotStatus snapshotStatus, + Version repositoryMetaVersion, + Map userMetadata, + ActionListener listener, + @Nullable IndexMetadata indexMetadata + ) { + throw snapshotsUnsupported(); + } + + @Override + public void restoreShard( + Store store, + SnapshotId snapshotId, + IndexId indexId, + ShardId snapshotShardId, + RecoveryState recoveryState, + ActionListener listener + ) { + throw snapshotsUnsupported(); + } + + @Override + public IndexShardSnapshotStatus getShardSnapshotStatus(SnapshotId snapshotId, IndexId indexId, ShardId shardId) { + throw snapshotsUnsupported(); + } + + @Override + public void executeConsistentStateUpdate( + Function createUpdateTask, + String source, + Consumer onFailure + ) { + throw snapshotsUnsupported(); + } + + @Override + public void cloneShardSnapshot( + SnapshotId source, + SnapshotId target, + RepositoryShardId shardId, + @Nullable String shardGeneration, + ActionListener listener + ) { + throw snapshotsUnsupported(); + } + + private static UnsupportedOperationException snapshotsUnsupported() { + return new UnsupportedOperationException("snapshot operations are not supported by catalog repositories"); + } +} diff --git a/server/src/main/java/org/opensearch/catalog/MetadataClient.java b/server/src/main/java/org/opensearch/catalog/MetadataClient.java new file mode 100644 index 0000000000000..817496f7cd945 --- /dev/null +++ b/server/src/main/java/org/opensearch/catalog/MetadataClient.java @@ -0,0 +1,105 @@ +/* + * SPDX-License-Identifier: Apache-2.0 + * + * The OpenSearch Contributors require contributions made to + * this file be licensed under the Apache-2.0 license or a + * compatible open source license. + */ + +package org.opensearch.catalog; + +import org.opensearch.cluster.metadata.IndexMetadata; +import org.opensearch.common.annotation.ExperimentalApi; +import org.opensearch.index.store.RemoteSegmentStoreDirectory; + +import java.io.Closeable; +import java.io.IOException; + +/** + * Client for publishing index data and metadata to an external catalog. + *

+ * Implementations are provided by plugins via {@link org.opensearch.plugins.CatalogPlugin}. + * A publish proceeds in three phases: + *

    + *
  1. {@link #initialize} — once on the cluster manager to set up catalog state.
  2. + *
  3. {@link #publish} — once per primary shard to copy data files and register them.
  4. + *
  5. {@link #finalizePublish} — once after all shards finish, for post-publish bookkeeping.
  6. + *
+ * + * @opensearch.experimental + */ +@ExperimentalApi +public interface MetadataClient extends Closeable { + + /** + * Prepares the catalog for publishing an index. Creates or loads the catalog table, + * infers schema from {@code indexMetadata} on first create, and persists the metadata. + * Called once on the cluster manager before any shard publish. Must be idempotent. + * + * @param indexName name of the OpenSearch index being published + * @param indexMetadata index metadata (mappings, settings) to persist in the catalog + * @return the catalog snapshot id observed before this publish began, or {@code null} + * if the table was freshly created and has no snapshots yet. The orchestrator + * threads this back into {@link #finalizePublish} to support rollback. + * @throws IOException if catalog setup fails + */ + String initialize(String indexName, IndexMetadata indexMetadata) throws IOException; + + /** + * Publishes data files for a single shard to the catalog warehouse. The plugin + * discovers committed files from {@code remoteDirectory}, streams the ones it needs + * into the warehouse, and registers them with the catalog. + *

+ * {@link #initialize} must have been called for {@code indexName} first. + * + * @param indexName name of the OpenSearch index being published + * @param remoteDirectory remote segment store directory for the shard + * @param shardId primary shard id being published + * @throws IOException if file read, warehouse write, or catalog registration fails + */ + void publish( + String indexName, + RemoteSegmentStoreDirectory remoteDirectory, + int shardId + ) throws IOException; + + /** + * Called once after all shards complete. {@code success} is true when every shard's + * {@link #publish} returned without error. Implementations use this to stamp a + * completion marker on success, or rollback partial commits on failure. Default is + * no-op. + * + * @param indexName name of the index that was published + * @param success whether all shards published successfully + * @param savedSnapshotId the snapshot id captured by {@link #initialize} before this + * publish began. On failure, the implementation rolls the table + * back to this snapshot. May be {@code null} if the table had no + * snapshots prior to this publish (first-ever publish). + * @throws IOException if the finalization fails + */ + default void finalizePublish(String indexName, boolean success, String savedSnapshotId) throws IOException {} + + /** + * Reads index metadata previously persisted by {@link #initialize}. + * + * @param indexName name of the index + * @return the persisted index metadata, or {@code null} if not published + * @throws IOException if the catalog read fails + */ + IndexMetadata getMetadata(String indexName) throws IOException; + + /** + * Returns {@code true} if the index has been initialized in the catalog. + * + * @param indexName name of the index + * @return whether the catalog has a record of this index + * @throws IOException if the catalog lookup fails + */ + boolean indexExists(String indexName) throws IOException; + + /** + * Releases resources held by the client. + */ + @Override + void close() throws IOException; +} diff --git a/server/src/main/java/org/opensearch/catalog/RemoteCatalogService.java b/server/src/main/java/org/opensearch/catalog/RemoteCatalogService.java new file mode 100644 index 0000000000000..d4b1664da81c7 --- /dev/null +++ b/server/src/main/java/org/opensearch/catalog/RemoteCatalogService.java @@ -0,0 +1,114 @@ +/* + * SPDX-License-Identifier: Apache-2.0 + * + * The OpenSearch Contributors require contributions made to + * this file be licensed under the Apache-2.0 license or a + * compatible open source license. + */ + +package org.opensearch.catalog; + +import org.apache.logging.log4j.LogManager; +import org.apache.logging.log4j.Logger; +import org.opensearch.action.admin.cluster.catalog.PublishShardAction; +import org.opensearch.action.admin.cluster.catalog.PublishShardRequest; +import org.opensearch.action.admin.cluster.catalog.PublishShardResponse; +import org.opensearch.cluster.metadata.IndexMetadata; +import org.opensearch.cluster.service.ClusterService; +import org.opensearch.common.annotation.ExperimentalApi; +import org.opensearch.core.action.ActionListener; +import org.opensearch.transport.client.Client; + +import java.io.IOException; + +/** + * Orchestrates publishing index data to an external catalog. Runs on the cluster manager. + *

+ * Constructed at node startup with a {@link MetadataClient} produced by the installed + * {@code CatalogPlugin}. If no catalog is configured, {@code metadataClient} is {@code null} + * and {@link #publishIndex} rejects requests with a clear error. + *

+ * Flow: validate → initialize (capture pre-publish snapshot id) → broadcast publish to + * data nodes → finalizePublish (threads the snapshot id back for rollback on failure) + * → respond. + * + * @opensearch.experimental + */ +@ExperimentalApi +public class RemoteCatalogService { + + private static final Logger logger = LogManager.getLogger(RemoteCatalogService.class); + + private final ClusterService clusterService; + private final Client client; + private final MetadataClient metadataClient; + + /** + * Creates a new service. + * + * @param clusterService cluster service for reading cluster state + * @param client node client used to dispatch the broadcast publish action + * @param metadataClient client bound to the node's catalog repository, or {@code null} + * if no catalog is configured on this node + */ + public RemoteCatalogService(ClusterService clusterService, Client client, MetadataClient metadataClient) { + this.clusterService = clusterService; + this.client = client; + this.metadataClient = metadataClient; + } + + /** + * Publishes an index to the catalog. Entry point for ISM and REST callers. + * + * @param indexName name of the index to publish + * @param listener callback with the broadcast response + */ + public void publishIndex(String indexName, ActionListener listener) { + try { + // 1. Check MetadataClient is available. + if (metadataClient == null) { + listener.onFailure(new IllegalStateException("catalog is not configured on this node")); + return; + } + + // 2. Validate the index exists and read metadata. + IndexMetadata indexMetadata = clusterService.state().metadata().index(indexName); + if (indexMetadata == null) { + listener.onFailure(new IllegalArgumentException("index [" + indexName + "] not found in cluster state")); + return; + } + + // 3. Initialize catalog state (once, on cluster manager) and capture the + // pre-publish snapshot id. Rollback on failure targets this snapshot. + logger.info("Initializing catalog for index [{}]", indexName); + final String savedSnapshotId = metadataClient.initialize(indexName, indexMetadata); + + // 4. Dispatch broadcast action to data nodes. + logger.info("Publishing shards for index [{}]", indexName); + PublishShardRequest broadcastRequest = new PublishShardRequest(indexName); + client.execute(PublishShardAction.INSTANCE, broadcastRequest, ActionListener.wrap( + response -> { + // 5. Always finalize — plugin stamps completion or rolls back based on success flag. + boolean allSucceeded = response.getFailedShards() == 0; + try { + logger.info( + "Finalizing publish for index [{}] (success={}, {}/{} shards, savedSnapshotId={})", + indexName, allSucceeded, response.getSuccessfulShards(), response.getTotalShards(), savedSnapshotId + ); + metadataClient.finalizePublish(indexName, allSucceeded, savedSnapshotId); + } catch (IOException e) { + logger.error("Failed to finalize publish for index [{}]", indexName, e); + listener.onFailure(e); + return; + } + listener.onResponse(response); + }, + listener::onFailure + )); + + } catch (Exception e) { + logger.error("Failed to publish index [{}] to catalog", indexName, e); + listener.onFailure(e); + } + } +} diff --git a/server/src/main/java/org/opensearch/common/settings/ClusterSettings.java b/server/src/main/java/org/opensearch/common/settings/ClusterSettings.java index 66e011f82fe13..7345e32c3dd3c 100644 --- a/server/src/main/java/org/opensearch/common/settings/ClusterSettings.java +++ b/server/src/main/java/org/opensearch/common/settings/ClusterSettings.java @@ -785,6 +785,10 @@ public void apply(Settings value, Settings current, Settings previous) { TieringUtils.PREPARE_TIERING_TIMEOUT, TieringUtils.REPLICA_SYNC_TIMEOUT_SETTING, + // Settings related to the external metadata catalog + Node.CATALOG_REPOSITORY_TYPE_SETTING, + Node.CATALOG_REPOSITORY_SETTINGS, + // Settings related to Remote Refresh Segment Pressure RemoteStorePressureSettings.REMOTE_REFRESH_SEGMENT_PRESSURE_ENABLED, RemoteStorePressureSettings.BYTES_LAG_VARIANCE_FACTOR, diff --git a/server/src/main/java/org/opensearch/node/Node.java b/server/src/main/java/org/opensearch/node/Node.java index 335e49d51a814..bd0620ca2c962 100644 --- a/server/src/main/java/org/opensearch/node/Node.java +++ b/server/src/main/java/org/opensearch/node/Node.java @@ -258,6 +258,11 @@ import org.opensearch.ratelimitting.admissioncontrol.transport.AdmissionControlTransportInterceptor; import org.opensearch.repositories.RepositoriesModule; import org.opensearch.repositories.RepositoriesService; +import org.opensearch.repositories.Repository; +import org.opensearch.catalog.CatalogRepository; +import org.opensearch.catalog.MetadataClient; +import org.opensearch.catalog.RemoteCatalogService; +import org.opensearch.plugins.CatalogPlugin; import org.opensearch.rest.RestController; import org.opensearch.script.ScriptContext; import org.opensearch.script.ScriptEngine; @@ -454,6 +459,29 @@ public class Node implements Closeable { Property.NodeScope ); + /** + * Type of the catalog repository registered at node startup (e.g., {@code iceberg_s3tables}). + * When unset, catalog publish is disabled on this node and {@code _catalog/publish} returns + * an error. When set, a {@link org.opensearch.plugins.CatalogPlugin} must be installed that + * registers an internal repository factory for this type. + */ + public static final Setting CATALOG_REPOSITORY_TYPE_SETTING = Setting.simpleString( + "catalog.repository.type", + Property.NodeScope + ); + + /** + * Settings passed to the catalog repository factory. Keys under this prefix are stripped and + * forwarded verbatim — see each catalog implementation for supported settings. + */ + public static final Setting.AffixSetting CATALOG_REPOSITORY_SETTINGS = Setting.prefixKeySetting( + "catalog.repository.settings.", + (key) -> Setting.simpleString(key, Property.NodeScope) + ); + + /** Internal repository name used for the catalog. Hidden from the public snapshot API. */ + public static final String CATALOG_REPOSITORY_NAME = "_catalog"; + private static final String CLIENT_TYPE = "node"; /** @@ -1049,7 +1077,7 @@ protected Node(final Environment initialEnvironment, Collection clas final DataFormatRegistry dataFormatRegistry = new DataFormatRegistry(pluginsService); - final IndexStorePlugin.DirectoryFactory remoteDirectoryFactory = new RemoteSegmentStoreDirectoryFactory( + final RemoteSegmentStoreDirectoryFactory remoteDirectoryFactory = new RemoteSegmentStoreDirectoryFactory( repositoriesServiceReference::get, threadPool, remoteStoreSettings.getSegmentsPathFixedPrefix(), @@ -1559,6 +1587,13 @@ protected Node(final Environment initialEnvironment, Collection clas RepositoriesService repositoryService = repositoriesModule.getRepositoryService(); repositoriesServiceReference.set(repositoryService); + final MetadataClient catalogMetadataClient = createCatalogMetadataClient( + settings, + pluginsService, + repositoryService, + this.environment + ); + final RemoteCatalogService remoteCatalogService = new RemoteCatalogService(clusterService, client, catalogMetadataClient); SnapshotsService snapshotsService = new SnapshotsService( settings, clusterService, @@ -1847,6 +1882,15 @@ protected Node(final Environment initialEnvironment, Collection clas b.bind(PersistentTasksClusterService.class).toInstance(persistentTasksClusterService); b.bind(PersistentTasksExecutorRegistry.class).toInstance(registry); b.bind(RepositoriesService.class).toInstance(repositoryService); + // TransportPublishShardAction is registered unconditionally in ActionModule and + // eagerly instantiated by Guice; provide null bindings when no catalog is + // configured so a node that doesn't use the catalog feature still boots. + if (catalogMetadataClient != null) { + b.bind(MetadataClient.class).toInstance(catalogMetadataClient); + } else { + b.bind(MetadataClient.class).toProvider(Providers.of(null)); + } + b.bind(RemoteSegmentStoreDirectoryFactory.class).toInstance(remoteDirectoryFactory); b.bind(SnapshotsService.class).toInstance(snapshotsService); b.bind(SnapshotShardsService.class).toInstance(snapshotShardsService); b.bind(TransportNodesSnapshotsStatus.class).toInstance(nodesSnapshotsStatus); @@ -2624,6 +2668,45 @@ private static String validateFileCacheSize(String capacityRaw) { return capacityRaw; } + private static MetadataClient createCatalogMetadataClient( + Settings settings, + PluginsService pluginsService, + RepositoriesService repositoriesService, + Environment environment + ) { + String catalogType = CATALOG_REPOSITORY_TYPE_SETTING.get(settings); + if (catalogType == null || catalogType.isEmpty()) { + return null; + } + + List catalogPlugins = pluginsService.filterPlugins(CatalogPlugin.class); + if (catalogPlugins.isEmpty()) { + throw new IllegalStateException( + "[" + CATALOG_REPOSITORY_TYPE_SETTING.getKey() + "] is set to [" + catalogType + + "] but no CatalogPlugin is installed" + ); + } + if (catalogPlugins.size() > 1) { + throw new IllegalStateException( + "only one CatalogPlugin is allowed but found [" + catalogPlugins.size() + "]" + ); + } + + // Strip the "catalog.repository.settings." prefix and forward the rest to the factory. + Settings repoSettings = settings.getByPrefix("catalog.repository.settings."); + + repositoriesService.registerInternalRepository(CATALOG_REPOSITORY_NAME, catalogType, repoSettings); + + Repository repository = repositoriesService.repository(CATALOG_REPOSITORY_NAME); + if (!(repository instanceof CatalogRepository)) { + throw new IllegalStateException( + "catalog repository type [" + catalogType + "] did not produce a CatalogRepository, got [" + + repository.getClass().getName() + "]" + ); + } + return catalogPlugins.get(0).createMetadataClient((CatalogRepository) repository, environment); + } + /** * Pre-flight write probe for plugin-supplied {@link FsHealthService} paths. Throws * {@link IllegalStateException} on any failure so node boot halts loudly on misconfiguration. diff --git a/server/src/main/java/org/opensearch/plugins/CatalogPlugin.java b/server/src/main/java/org/opensearch/plugins/CatalogPlugin.java new file mode 100644 index 0000000000000..733fe3bd34f2d --- /dev/null +++ b/server/src/main/java/org/opensearch/plugins/CatalogPlugin.java @@ -0,0 +1,36 @@ +/* + * SPDX-License-Identifier: Apache-2.0 + * + * The OpenSearch Contributors require contributions made to + * this file be licensed under the Apache-2.0 license or a + * compatible open source license. + */ + +package org.opensearch.plugins; + +import org.opensearch.catalog.CatalogRepository; +import org.opensearch.catalog.MetadataClient; +import org.opensearch.common.annotation.ExperimentalApi; +import org.opensearch.env.Environment; + +/** + * Extension point for plugins that provide an external metadata catalog + * (e.g., Apache Iceberg, AWS Glue). Separate from {@link RepositoryPlugin} — + * a plugin may implement both. + * + * @opensearch.experimental + */ +@ExperimentalApi +public interface CatalogPlugin { + + /** + * Creates the {@link MetadataClient} for the given catalog repository. Called once + * during node startup after core has constructed the repository from node settings. + * The returned client is owned by core and closed on shutdown. + * + * @param repository the catalog repository registered at startup + * @param environment node environment (for config dir, keystore secure settings) + * @return a newly created metadata client bound to that repository + */ + MetadataClient createMetadataClient(CatalogRepository repository, Environment environment); +} diff --git a/server/src/main/java/org/opensearch/repositories/RepositoriesService.java b/server/src/main/java/org/opensearch/repositories/RepositoriesService.java index 1060c946ae799..80d19e4267056 100644 --- a/server/src/main/java/org/opensearch/repositories/RepositoriesService.java +++ b/server/src/main/java/org/opensearch/repositories/RepositoriesService.java @@ -623,7 +623,11 @@ public List clearRepositoriesStatsArchive(long maxVersi } public void registerInternalRepository(String name, String type) { - RepositoryMetadata metadata = new RepositoryMetadata(name, type, Settings.EMPTY); + registerInternalRepository(name, type, Settings.EMPTY); + } + + public void registerInternalRepository(String name, String type, Settings settings) { + RepositoryMetadata metadata = new RepositoryMetadata(name, type, settings); Repository repository = internalRepositories.computeIfAbsent(name, (n) -> { logger.debug("put internal repository [{}][{}]", name, type); return createRepository(metadata, internalTypesRegistry); diff --git a/server/src/test/java/org/opensearch/action/admin/cluster/catalog/PublishShardRequestTests.java b/server/src/test/java/org/opensearch/action/admin/cluster/catalog/PublishShardRequestTests.java new file mode 100644 index 0000000000000..3d15a18e8b6a3 --- /dev/null +++ b/server/src/test/java/org/opensearch/action/admin/cluster/catalog/PublishShardRequestTests.java @@ -0,0 +1,36 @@ +/* + * SPDX-License-Identifier: Apache-2.0 + * + * The OpenSearch Contributors require contributions made to + * this file be licensed under the Apache-2.0 license or a + * compatible open source license. + */ + +package org.opensearch.action.admin.cluster.catalog; + +import org.opensearch.common.io.stream.BytesStreamOutput; +import org.opensearch.core.common.io.stream.StreamInput; +import org.opensearch.test.OpenSearchTestCase; + +import java.io.IOException; + +public class PublishShardRequestTests extends OpenSearchTestCase { + + public void testSerialization() throws IOException { + PublishShardRequest original = new PublishShardRequest("my-index"); + + BytesStreamOutput out = new BytesStreamOutput(); + original.writeTo(out); + + StreamInput in = out.bytes().streamInput(); + PublishShardRequest deserialized = new PublishShardRequest(in); + + assertArrayEquals(original.indices(), deserialized.indices()); + } + + public void testToString() { + PublishShardRequest request = new PublishShardRequest("logs-2024"); + String str = request.toString(); + assertTrue(str.contains("logs-2024")); + } +} diff --git a/server/src/test/java/org/opensearch/catalog/CatalogRepositoryTests.java b/server/src/test/java/org/opensearch/catalog/CatalogRepositoryTests.java new file mode 100644 index 0000000000000..ac6f1dff691b2 --- /dev/null +++ b/server/src/test/java/org/opensearch/catalog/CatalogRepositoryTests.java @@ -0,0 +1,91 @@ +/* + * SPDX-License-Identifier: Apache-2.0 + * + * The OpenSearch Contributors require contributions made to + * this file be licensed under the Apache-2.0 license or a + * compatible open source license. + */ + +package org.opensearch.catalog; + +import org.opensearch.cluster.ClusterState; +import org.opensearch.cluster.metadata.RepositoryMetadata; +import org.opensearch.common.settings.Settings; +import org.opensearch.core.action.ActionListener; +import org.opensearch.repositories.RepositoryData; +import org.opensearch.repositories.RepositoryStats; +import org.opensearch.snapshots.SnapshotId; +import org.opensearch.test.OpenSearchTestCase; + +import java.util.concurrent.atomic.AtomicReference; + +public class CatalogRepositoryTests extends OpenSearchTestCase { + + private static CatalogRepository newRepo(RepositoryMetadata metadata) { + return new CatalogRepository(metadata) {}; + } + + private static RepositoryMetadata testMetadata() { + return new RepositoryMetadata("test-catalog", "iceberg_s3tables", Settings.EMPTY); + } + + public void testConstructorRejectsNullMetadata() { + expectThrows(NullPointerException.class, () -> newRepo(null)); + } + + public void testGetMetadataReturnsConstructorValue() { + RepositoryMetadata metadata = testMetadata(); + CatalogRepository repo = newRepo(metadata); + assertSame(metadata, repo.getMetadata()); + } + + public void testIsSystemRepositoryReturnsTrue() { + assertTrue(newRepo(testMetadata()).isSystemRepository()); + } + + public void testIsReadOnlyReturnsFalse() { + assertFalse(newRepo(testMetadata()).isReadOnly()); + } + + public void testGetRepositoryDataReturnsEmpty() { + CatalogRepository repo = newRepo(testMetadata()); + AtomicReference captured = new AtomicReference<>(); + repo.getRepositoryData(ActionListener.wrap(captured::set, e -> fail("unexpected failure: " + e))); + assertSame(RepositoryData.EMPTY, captured.get()); + } + + public void testStatsReturnsEmpty() { + assertSame(RepositoryStats.EMPTY_STATS, newRepo(testMetadata()).stats()); + } + + public void testThrottleTimesAreZero() { + CatalogRepository repo = newRepo(testMetadata()); + assertEquals(0L, repo.getSnapshotThrottleTimeInNanos()); + assertEquals(0L, repo.getRestoreThrottleTimeInNanos()); + assertEquals(0L, repo.getRemoteUploadThrottleTimeInNanos()); + assertEquals(0L, repo.getRemoteDownloadThrottleTimeInNanos()); + assertEquals(0L, repo.getLowPriorityRemoteDownloadThrottleTimeInNanos()); + } + + public void testVerificationHooksAreNoOps() { + CatalogRepository repo = newRepo(testMetadata()); + assertNull(repo.startVerification()); + repo.endVerification("unused-token"); + // verify() is also a no-op; passing null DiscoveryNode is acceptable because the + // default implementation never reads it. + repo.verify("unused-token", null); + } + + public void testUpdateStateIsNoOp() { + // Should not throw when called with any cluster state (or null). + newRepo(testMetadata()).updateState((ClusterState) null); + } + + public void testSnapshotOperationsThrowUnsupported() { + CatalogRepository repo = newRepo(testMetadata()); + SnapshotId snapshotId = new SnapshotId("snap", "snap-uuid"); + expectThrows(UnsupportedOperationException.class, () -> repo.getSnapshotInfo(snapshotId)); + expectThrows(UnsupportedOperationException.class, () -> repo.getSnapshotGlobalMetadata(snapshotId)); + expectThrows(UnsupportedOperationException.class, () -> repo.getShardSnapshotStatus(snapshotId, null, null)); + } +} diff --git a/server/src/test/java/org/opensearch/catalog/RemoteCatalogServiceTests.java b/server/src/test/java/org/opensearch/catalog/RemoteCatalogServiceTests.java new file mode 100644 index 0000000000000..614a76d6cd0ad --- /dev/null +++ b/server/src/test/java/org/opensearch/catalog/RemoteCatalogServiceTests.java @@ -0,0 +1,123 @@ +/* + * SPDX-License-Identifier: Apache-2.0 + * + * The OpenSearch Contributors require contributions made to + * this file be licensed under the Apache-2.0 license or a + * compatible open source license. + */ + +package org.opensearch.catalog; + +import org.opensearch.action.admin.cluster.catalog.PublishShardResponse; +import org.opensearch.cluster.ClusterName; +import org.opensearch.cluster.ClusterState; +import org.opensearch.cluster.metadata.IndexMetadata; +import org.opensearch.cluster.metadata.Metadata; +import org.opensearch.cluster.service.ClusterService; +import org.opensearch.common.settings.Settings; +import org.opensearch.core.action.ActionListener; +import org.opensearch.test.OpenSearchTestCase; +import org.opensearch.transport.client.Client; + +import java.io.IOException; +import java.util.concurrent.atomic.AtomicReference; + +import static org.mockito.ArgumentMatchers.any; +import static org.mockito.ArgumentMatchers.eq; +import static org.mockito.Mockito.doThrow; +import static org.mockito.Mockito.mock; +import static org.mockito.Mockito.never; +import static org.mockito.Mockito.verify; +import static org.mockito.Mockito.when; + +public class RemoteCatalogServiceTests extends OpenSearchTestCase { + + private MetadataClient metadataClient; + private ClusterService clusterService; + private Client client; + private RemoteCatalogService service; + + @Override + public void setUp() throws Exception { + super.setUp(); + metadataClient = mock(MetadataClient.class); + clusterService = mock(ClusterService.class); + client = mock(Client.class); + service = new RemoteCatalogService(clusterService, client, metadataClient); + } + + public void testPublishIndexFailsWhenNoMetadataClient() { + RemoteCatalogService serviceWithoutClient = new RemoteCatalogService(clusterService, client, null); + + AtomicReference failure = new AtomicReference<>(); + serviceWithoutClient.publishIndex("my-index", new ActionListener<>() { + @Override + public void onResponse(PublishShardResponse response) { + fail("expected failure"); + } + + @Override + public void onFailure(Exception e) { + failure.set(e); + } + }); + + assertNotNull(failure.get()); + assertTrue(failure.get() instanceof IllegalStateException); + assertTrue(failure.get().getMessage().contains("catalog is not configured")); + } + + public void testPublishIndexFailsWhenIndexNotFound() { + ClusterState state = ClusterState.builder(new ClusterName("test")).metadata(Metadata.builder().build()).build(); + when(clusterService.state()).thenReturn(state); + + AtomicReference failure = new AtomicReference<>(); + service.publishIndex("nonexistent-index", new ActionListener<>() { + @Override + public void onResponse(PublishShardResponse response) { + fail("expected failure"); + } + + @Override + public void onFailure(Exception e) { + failure.set(e); + } + }); + + assertNotNull(failure.get()); + assertTrue(failure.get() instanceof IllegalArgumentException); + assertTrue(failure.get().getMessage().contains("not found in cluster state")); + } + + public void testPublishIndexFailsWhenInitializeFails() throws IOException { + IndexMetadata indexMetadata = IndexMetadata.builder("my-index") + .settings(Settings.builder() + .put(IndexMetadata.SETTING_VERSION_CREATED, org.opensearch.Version.CURRENT) + .put(IndexMetadata.SETTING_NUMBER_OF_SHARDS, 1) + .put(IndexMetadata.SETTING_NUMBER_OF_REPLICAS, 0)) + .build(); + ClusterState state = ClusterState.builder(new ClusterName("test")) + .metadata(Metadata.builder().put(indexMetadata, false).build()) + .build(); + when(clusterService.state()).thenReturn(state); + + doThrow(new IOException("catalog unavailable")).when(metadataClient).initialize(eq("my-index"), any()); + + AtomicReference failure = new AtomicReference<>(); + service.publishIndex("my-index", new ActionListener<>() { + @Override + public void onResponse(PublishShardResponse response) { + fail("expected failure"); + } + + @Override + public void onFailure(Exception e) { + failure.set(e); + } + }); + + assertNotNull(failure.get()); + assertTrue(failure.get() instanceof IOException); + verify(client, never()).execute(any(), any(), any()); + } +}