Commit Graph

10776 Commits

Author SHA1 Message Date
Andrew Gaul 3bbb0b446a JCLOUDS-1590: Promote glacier to core 2021-12-18 00:11:40 +09:00
Andrew Gaul afa92c7478 Merge remote-tracking branch 'jclouds-labs-aws-local/promote-glacier-moved' into promoted-glacier 2021-12-17 13:55:10 +09:00
Andrew Gaul 66ef18c6ae JCLOUDS-1589: Upgrade to log4j 2.16.0
This addresses a critical CVE:

https://logging.apache.org/log4j/2.x/security.html
2021-12-17 13:33:38 +09:00
Andrew Gaul dbd8eb1dab JCLOUDS-1589: Upgrade to log4j 2.16.0
This addresses a critical CVE:

https://logging.apache.org/log4j/2.x/security.html
2021-12-16 23:56:09 +09:00
Juan Cabrerizo 14e92fc8c8
JCLOUDS-1588: Bump google gson to 2.8.9 due to detected vulnerability (#124) 2021-11-10 19:51:52 +09:00
Andrew Gaul 7fffa59158 JCLOUDS-1586: Upgrade to Guice 5.0.1
Guice 4.2.3 makes illegal reflective accesses that Java 17 does not
allow.  References google/guice#1133.  Release notes:

https://github.com/google/guice/wiki/Guice501
2021-11-10 09:08:48 +09:00
Andrew Gaul 6db1ee9d6a Removed unused jetty-server dependency 2021-10-31 18:57:22 +09:00
Andrew Gaul b0592c5afa Next development version 2.5.0-SNAPSHOT 2021-09-19 08:59:59 +09:00
Andrew Gaul e8e78689e6 Next development version 2.4.0-SNAPSHOT 2021-09-19 08:58:25 +09:00
Rajani-cloud 8167513c35 JCLOUDS-1584 : Deployment API fails when ARM Template deploys for creating Azure VM 2021-09-04 16:30:18 +09:00
Timur Alperovich 0b68e8adee JCLOUDS-1558: Implement Azure Blob Azure AD auth
Implements the Azure AD authentication for Azure Blob, using the OAuth
module. Added more parameters to the AzureBlob provider:
- azureblob.auth
- azureblob.account
- azureblob.tenantId

The "auth" parameter is used to specify whether Key/SAS auth or Active
Directory is used. When using Active Directory auth, the identity no
longer maps to the storage account, which has to be specified
explicitly. The tenant ID also needs to be supplied to construct the
auth URL to obtain the token correctly.
2021-08-22 15:52:48 +09:00
Timur Alperovich 519bee9f60 AzureBlob: Update API to 2017-11-09 2021-08-16 00:03:07 -07:00
Timur Alperovich a1df0bb1f5 Store the MPU ETag for the transient blobstore
JCLOUDS-1582: fixes a bug in the transient blobstore where after
uploading a multipart upload, GET/HEAD returns the hash of the content,
rather than the MPU ETag.
2021-08-05 18:46:35 +09:00
Andrew Gaul 720e92c54a Prefer case-insenstive header comparisons
Follows up to #116.
2021-07-29 20:01:27 +09:00
Simone Locci 0787bb891b Fix location header case sensitive 2021-07-28 08:44:36 +09:00
Andrew Gaul d861768d49 Add missing javax dependencies for modern Java
Java 9 modularization removed these.
2021-07-20 23:04:53 +09:00
Andrew Gaul e49ce2e835 Remove tests which rely on an isolated ClassLoader
Java 9 returns jdk.internal.loader.ClassLoaders$AppClassLoader instead
of URLClassLoader so we cannot create an isolated ClassLoader.
2021-07-20 20:41:24 +09:00
Andrew Gaul 1321043c02 Remove Google appengine driver
This has an incompatibility with JAXB motivating this removal.
jclouds GAE has not seen any development or issues in recent years and
uses a very old appengine-api-1.0-sdk dependency.  Further it appears
to have modern Guava incompatibilities as seen in JCLOUDS-836.
2021-07-20 20:41:18 +09:00
Andrew Gaul a4a301fd7c Upgrade to duplicate-finder-maven-plugin 1.5.0
Notably this fixes an issue with duplicate module-version files in
JAXB.  Release notes:

https://github.com/basepom/duplicate-finder-maven-plugin/releases
2021-07-15 20:59:51 +09:00
Andrew Gaul 6de7854fd7 Upgrade animal sniffer to 1.20
This addresses a bad class file issues seen when using an explicit
JAXB dependency.  Release notes:

https://github.com/mojohaus/animal-sniffer/releases
2021-07-14 21:52:21 +09:00
Andrew Gaul f2eef863a1 Ignore copyOf method when testing with modern Java 2021-07-14 21:52:13 +09:00
Andrew Gaul ec395cc9af Upgrade to EasyMock 4.3
This upgrades asm which improves compatibility with modern Java.
Release notes:

https://github.com/easymock/easymock/releases
2021-07-14 21:52:04 +09:00
didixith 779bc2db19
JCLOUDS-1516: specify host name when creating bucket 2021-07-10 11:35:16 +09:00
Andrew Gaul fda1824620 JCLOUDS-1581: Make CORS maxAgeSeconds optional
This field is not required:

https://cloud.google.com/storage/docs/cross-origin#cors-elements
2021-06-30 10:13:44 +09:00
Miroslav Novak 261f9d1fd5 JCLOUDS-1577 - Allow to provide Azure Plan Information when starting custom image based on Azure Marketplace image. 2021-06-30 08:37:34 +09:00
Andrew Gaul d1bd51f7f1 Re-optimize LocalBlobStore.getBlob with ranges
This fixes a memory regression from
8de7b696e1 where the transient BlobStore
changed from a ByteSource to a byte[].
2021-06-30 08:09:30 +09:00
i831992 2791f47046 JCLOUDS-1580 - Add support for lowercase metadata headers
The issue happens if a cloud provider returns lowercase metadata headers, for example: "x-object-meta-apiversion" instead of "X-Object-Meta-ApiVersion"

In that case, BlobStore.blobMetadata(CONTAINER, PATH).getUserMetadata()
incorrectly returns an empty map.

This happens because the code is looking for the exact String "-Meta-" (case-sensitive).

This checkin allows to handle metadata headers of any case, and also adds a unit test for that situation.
2021-06-23 09:59:26 +09:00
Andrew Gaul ecec0265ad Remove error-prone
This does strange things with the java compiler which makes it
incompatible with more modern Java versions.
2021-04-15 08:02:06 +09:00
Andrew Gaul 09dfab4277 Next development version 2.4.0-SNAPSHOT 2021-04-14 23:14:10 +09:00
Andrew Gaul 7ad7890ad0 Next development version 2.4.0-SNAPSHOT 2021-04-14 23:07:54 +09:00
Timur Alperovich 04feb8f848 Parse out of order ListBuckets response elements
Currently, jclouds assumes that the ListBuckets response follows a
specific order: the <Owner> tag, followed by the <Buckets> tag. Within
the <Owner> tag, jclouds further assumes that the <ID> must occur before
the <DisplayName> tag. If the XML body does not adhere to this order,
the parser throws a NullPointerException.

DigitalOcean spaces does not adhere to this order and returns the
<DisplayName> tag before the <ID> tag. The patch changes the parser to
not depend on the order of the tags.
2021-04-04 20:06:26 +09:00
Andrew Gaul c995a04fe9 JCLOUDS-1572: Update GCS bucket regions 2021-03-31 11:55:47 +09:00
Jean-Noël Rouvignac 0b89ee0825
S3 APIs: Remove the dependency to com.jamesmurty.utils:java-xmlbuilder (#98)
XMLBuilder is a very nice fluent API for building XML documents.
However, it is only used by a tiny portion of jclouds: the s3 api. The
use of the XMLBuilder class requires a dependency to
com.jamesmurty.utils:java-xmlbuilder jar and a transitive
dependency to the net.iharder:base64 jar (superseded by
java.util.Base64 in java 8). They are 18kb each approximately and they
not OSGi compatible. They are not huge, but they represent more API
surface and more things to change when trying to use jclouds in an OSGi
context (they need to be replaced by OSGi compatible bundles like
org.apache.servicemix.bundles.java-xmlbuilder).

This commit replaces the use of XMLBuilder by a direct use of the
javax.xml and org.w3c.dom APIs.

I hope retesting will be minimal, and most of this code is covered by
unit tests.
2021-03-01 15:01:10 +01:00
Jean-Noël Rouvignac f6f3f99024
Avoid using the guice injector int ests which triggers an NPE 2021-03-01 11:49:24 +01:00
gurkerl83 b2bd270528 Remove maven emma plugin
Previously, the plugin "emma" was integrated/used for maven site deployment. The following commits removed site deployment entirely.
For reference
- e02503e1cb
- 9158ab0b0e
2021-02-19 23:31:03 +09:00
gurkerl83 6b00731950 Restructure build profiles
The project requires at least JDK version 8. The specification to disable the liniting process in the JavaDoc process as of JDK version 8 is thus doubly specified and fulfilled by default; an explicit specification is no longer required. Version 3 of the JavaDoc plugin removes the "additional param" configuration attribute. The "doclint=false" configuration attribute disables the lint operation of the plugin.

Summary:
- Remove the profile "disable-doclint"
- Bump version of JavaDoc plugin to the latest > 3
- Remove the JavaDoc plugin's declaration from the build plugins used for default builds (building without a profile)
- Bump version of source plugin to latest > 3

- Remove unnecessary profile "doc" from the jclouds pom artifact
2021-02-19 23:31:03 +09:00
gurkerl83 dec017c116 Remove distribution profiles
Remove distribution profiles from the JClouds parent, main, and core modules. Each profile defines assembly descriptors, but none of those files are provided by the project anymore.
The maven assembly plugin relies on those descriptors to dictate its execution.
The estimation is that individual maven artifacts, one per module, get deployed instead of a compressed deployment unit.
In that case, it is enough to use mavens deploy command in combination with distribution management configuration pushing individual jars to the artifact repositories.
2021-02-19 23:31:03 +09:00
gurkerl83 b0dacbac66 Remove jenkins profile
According to the Jenkins configuration, only the maven profiles src and doc are necessary to execute in the build process. This commit removes the dedicated jenkins profile.
2021-02-19 23:31:03 +09:00
gurkerl83 b7a8bd01f6 Remove site profile and wired enforcer executions
The site profile defines various enforcer execution rules, banned-dependencies, java (java and maven version). Those declarations in combination with the standard maven properties for the JDK version seem misleading and duplicated. Also, there is no indicator that the site profile is ever defined for a maven build.
2021-02-19 23:31:03 +09:00
gurkerl83 157c87017b Remove maven property site url
In the last three commits, the site reporting feature got gradually decommissioned. This commit removes any remaining fragments in this regard. Remove the section distribution management from the profile clouds-project. The comment about incorrect links generated might have resulted from multiple invocations of the check style plugin. Previously the check style plugin got utilized at multiple sections (reporting section and profiles) and probably overlapping maven lifecycles.
2021-02-19 23:31:03 +09:00
gurkerl83 b537a79b20 Remove section reporting
In the last two commits, the site reporting feature got gradually decommissioned. The maven plugin project-info-reports got removed in the previous commit, which gets controlled by the reporting section. Because this workflow is out of use, this commit removes the reporting section.
2021-02-19 23:31:03 +09:00
gurkerl83 2b6cbf9c95 Remove maven site deployment related plugins
The previous site plugin utilizes several plugins. In about half of the cases, the respective version of a plugin as described in the outside plugin section. The following list enumerates those plugins and my reasoning to remove them safely from the section plugins.

- maven-project-info-reports-plugin (remove - because no reports get generated)
- maven-javadoc-plugin (stays - even when a profile doc exists, which provides a dedicated setup.) We have to discuss the removal to avoid any side effects.
- emma-maven-plugin (stays - my impression is that it is a duplicated declaration)
- maven-jxr-plugin (remove - only version declaration, with no further config, not utilized anywhere)
- maven-surefire-report-plugin (remove - only version declaration, with no further config, not utilized anywhere)
- apache-rat-plugin (stays - decision is straightforward. We have to discuss a restructure because the plugin gets mentioned three times; I guess one can get removed.
- maven-pmd-plugin (remove - only version declaration, with no further config, not utilized anywhere)
- spotbugs-maven-plugin (stays - beacuse of its extended configuration section - discuss a removal)
2021-02-19 23:31:03 +09:00
gurkerl83 c6a985f692 Remove maven site deployment
The maven site-plugin uses the declaration "site" in the section "distribution management," which points to a git repository named "jclouds-maven-site." This git repository got never relocated during the apache migration; also, it is ancient. My impression is that the site deployment is outdated and got used in the early days of JClouds.
2021-02-19 23:31:03 +09:00
gurkerl83 50462ca940 Upgrade OKHttp dependency
The JClouds project module upgrades the okhttp server library and related dependencies such as mockwebserver from 2.2.0 to 3.14.9. The vendor switched the groupId declaration from com.squareup.okhttp to com.squareup.okhttp3.

Adjust imports and api calls for newer okhttp vers
2021-02-12 18:57:56 +09:00
gurkerl83 57f6bbc43a Remove explicit OSGi import range of okio dep
All OkHttp components get shipped with any OSGi metadata. Tracking the progress of that issue from version 5 onwards, OkHttp finally provides OSGi support. Because JClouds OkHttp dependencies got renewed from 2.2.0 to the latest 3 (3.14.9), the respective bundles from Apache Servicemix got used in a deployment scenario. On the other hand, the problem with Servicemix is that there is no full match of published OkHttp dependencies to the respective bundle equivalent.

https://mvnrepository.com/artifact/org.apache.servicemix.bundles/org.apache.servicemix.bundles.okhttp

My test shows that none of the version 3 bundles work because of a missing package dependency "javax.annotation.meta". Sure higher version of 9 strips the javax.annotation module entirely, but the meta package is not there in JDK 8 either. As you can see from the link above, only two versions of 3.14 got published in the service mix; it is not clear to which version the bundle equivalents relate. From my understanding, it is much more important to use identical versions of OkHttp dependencies used in JClouds.

To utilize the original OKHttp libraries, consumer projects have to ensure those libraries get loaded using OSGi helper tools such as the wrap protocol provided by Apache Karaf or similar.

To reduce OSGi noise, I removed the OSGi import range of okio dependency entirely. A declaration like that does not make sense; otherwise, a set of Okhttp ranges must also be defined.

Note: The wildcard (*) declaration provides a way out, which allows any version of a package used in JClouds but itself does not give any OSGi metadata. Hopefully, I do not confuse you too much.
2021-02-12 18:57:46 +09:00
gurkerl83 3d753a48d2 Clear rule for bouncycastle exclusion
- Mock-Webserver v2.2.0 - Vendor, defined dependency bcprov-jdk15on > Previously, the dependency got excluded; otherwise, it conflicted with the existing bouncy castle version used in JClouds.
- Mock-Webserver v3.14.9 - The vendor does not define a bouncy castle dependency anymore; instead, it moved to the okhttp-tls module.

- Introduce the okhttp-tls module for tests in the core module. The following APIs (Docker, Elastic-Stack) and providers Softlayer extend their respective MockTest from BaseMockWebServerTest. The mock base test is located in the test jar of JClouds core module.
- Due to conflicting bouncy castle classes in the classpath, those which get loaded from the okhttp-tls module, and those defined in JClouds bouncy castle module, the bouncy castle dependency of okhttp-tls has to get skipped for the two APIs and providers mentioned.

Side note:
The JClouds GAE driver module also requires the new okhttp-tls dependency because of the following chain of inheritance.
Different from the situation above, the bouncy castle classes of the okhttp-tls got not excluded.
GaeHttpCommandExecutorServiceIntegrationTest -> BaseHttpCommandExecutorServiceIntegrationTest -> BaseMockWebServerTest

The reason for this is unknown to me.
2021-02-12 18:57:46 +09:00
korlov42 4a33793a70 lost changes 2021-02-12 18:57:46 +09:00
korlov42 d7897b3d25 fix failed testSSLConnectionFailsIfOnlyHttpConfigured 2021-02-12 18:57:46 +09:00
korlov42 d74dcca6dd fix UnsupportedOperationException during setting socketFactory 2021-02-12 18:57:46 +09:00
korlov42 44ff69d144 JCLOUDS-1551: Update version of OkHttp 3.14.9 2021-02-12 18:57:46 +09:00