Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Improve description of deployment process #128

Merged
merged 6 commits into from
Sep 1, 2023
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion .github/workflows/ci-build.yml
Original file line number Diff line number Diff line change
Expand Up @@ -13,7 +13,7 @@ jobs:
group: ${{ github.workflow }}-${{ github.ref }}-build
cancel-in-progress: true
env:
EXASOL_VERSION: 7.1.21
EXASOL_VERSION: 7.1.22
steps:
- name: Check out code
uses: actions/checkout@v3
Expand Down
2 changes: 1 addition & 1 deletion .github/workflows/project-keeper.sh

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

2 changes: 1 addition & 1 deletion .project-keeper.yml
Original file line number Diff line number Diff line change
Expand Up @@ -24,7 +24,7 @@ sources:
path: registry/package.json
- type: npm
path: pkg/parameterValidator/package.json
version: 0.5.0
version: 0.5.1
linkReplacements:
- "Unknown|https://github.com/DATA-DOG/go-sqlmock/blob/master/LICENSE"
- "https://github.com/swagger-api/swagger-core/modules/swagger-annotations|https://github.com/swagger-api/swagger-core/tree/master/modules/swagger-annotations"
Expand Down
1 change: 1 addition & 0 deletions doc/changes/changelog.md

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

39 changes: 39 additions & 0 deletions doc/changes/changes_0.5.1.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,39 @@
# Extension Manager 0.5.1, released 2023-??-??

Code name:

## Summary

## Documentation

* #129: Improved description of deployment process

## Dependency Updates

### Extension Manager Java Client

#### Test Dependency Updates

* Updated `nl.jqno.equalsverifier:equalsverifier:3.15` to `3.15.1`

#### Plugin Dependency Updates

* Updated `com.exasol:project-keeper-maven-plugin:2.9.10` to `2.9.11`
* Updated `org.apache.maven.plugins:maven-enforcer-plugin:3.3.0` to `3.4.0`

### Extension Integration Tests Library

#### Compile Dependency Updates

* Updated `com.exasol:exasol-test-setup-abstraction-java:2.0.2` to `2.0.3`
* Updated `com.exasol:extension-manager-client-java:0.5.0` to `0.5.1`
* Updated `com.exasol:test-db-builder-java:3.4.2` to `3.5.0`

#### Test Dependency Updates

* Updated `org.mockito:mockito-junit-jupiter:5.4.0` to `5.5.0`

#### Plugin Dependency Updates

* Updated `com.exasol:project-keeper-maven-plugin:2.9.10` to `2.9.11`
* Updated `org.apache.maven.plugins:maven-enforcer-plugin:3.3.0` to `3.4.0`
55 changes: 41 additions & 14 deletions doc/design.md
Original file line number Diff line number Diff line change
Expand Up @@ -426,50 +426,77 @@ Release assets:
```
postgresql-vs-2.0.2.jar
postgresql-vs-2.0.2.jar.sha256
postgres-extension-def-2.0.2.js
postgres-extension-def-2.0.2.js.sha256
postgresql-vs-extension.js
postgresql-vs-extension.js.sha256
```

A crawler collects the JARs and extension definitions and copies them to BucketFS at scheduled interval.

**This crawler is at the moment not part of this project.**
The following diagrams shows the deployment of the adapter JAR and the extension definition:

```plantuml
@startuml
storage "prostgres-virtual-schema release 2.0.2" {
file installerInRepo as "postgres-extension-def-2.0.2.js"
file installerInRepo as "postgresql-vs-extension.js"
file jarV2InRepo as "postgresql-vs-2.0.2.jar"
}

storage "prostgres-virtual-schema release 1.0.0" {
file "postgres-extension-def-1.0.0.js"
file "postgresql-vs-extension.js"
file jarV1InRepo as "postgresql-vs-1.0.0.jar"
}

node "Exasol SaaS backend" {
storage Installers {
file installerInBucketFS as "postgres-extension-def-2.0.2.js"
node "Extension Registry" {
storage "Extension Definitions" {
file installerInBucketFS as "postgresql-vs-extension.js"
}
}

node "Exasol cluster (per customer)" {
node "Exasol SaaS" {
storage BucketFS {
file jarV2InBucketFs as "postgresql-vs-2.0.2.jar"
file jarV1InBucketFS as "postgresql-vs-1.0.0.jar"
}
}

installerInRepo --> installerInBucketFS
jarV2InRepo --> jarV2InBucketFs
jarV1InRepo --> jarV1InBucketFS
installerInBucketFS --> installerInRepo : Update reference during deployment (1)
jarV2InRepo --> jarV2InBucketFs : Copy during deployment (2)
jarV1InRepo --> jarV1InBucketFS : Copy during deployment (2)
@enduml
```

The [extension registry](#extension-registry) contains references to all available extension definitions.

When a new version of an extension is released, the following steps are required for deployment:

* (1) Update extension registry to point to the new version's extension definition `.js` file.
* (2) Copy the adapter `.jar` file to the Exasol SaaS BucketFS.

Notes:
* Both processes (1) and (2) are not yet automated.
* See details about [BucketsFS Buckets in Exasol SaaS](#bucketsfs-buckets-in-exasol-saas) in the next section.

Covers:
* [`req~install-extension-database-objects~1`](system_requirements.md#update-extension)
* [`req~define-configuration-parameters~1`](system_requirements.md#parameter-types)
* [`req~uninstall-extension~1`](system_requirements.md#uninstalling-extensions)

#### BucketsFS Buckets in Exasol SaaS

An Exasol SaaS instance has access to the following BucketFS buckets:

* `/buckets/bfssaas/default/`
* `/buckets/bfssaas/advanced/`
* `/buckets/uploads/default/`

The `bfssaas` BucketFS is managed globally for all Exasol SaaS instances by the SaaS team. All SaaS instances have read-only access to buckets `/buckets/bfssaas/default/` and `/buckets/bfssaas/advanced/` depending on the subscription. These buckets contain pre-loaded files for selected extensions.

Bucket `/buckets/uploads/default/` is manged by end-users individually per SaaS instances. Users can upload files on their own.

Currently Extension Manager does not have write access to BucketFS. That's why all required files (e.g. adapter JAR files, JDBC drivers etc.) must be managed with a separate manual or automated process.

This means that new releases of adapter JARs must be uploaded manually to one of the `bfssaas` buckets before end-users can install the extension in EM.

In the future we might have an additional bucket for each SaaS instance where EM can upload adapter JARs on demand during the installation.

### Configure an Extension

#### Validate Parameters
Expand Down
5 changes: 4 additions & 1 deletion extension-manager-client-java/pk_generated_parent.pom

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

4 changes: 2 additions & 2 deletions extension-manager-client-java/pom.xml
Original file line number Diff line number Diff line change
Expand Up @@ -91,7 +91,7 @@
<dependency>
<groupId>nl.jqno.equalsverifier</groupId>
<artifactId>equalsverifier</artifactId>
<version>3.15</version>
<version>3.15.1</version>
<scope>test</scope>
</dependency>
</dependencies>
Expand All @@ -100,7 +100,7 @@
<plugin>
<groupId>com.exasol</groupId>
<artifactId>project-keeper-maven-plugin</artifactId>
<version>2.9.10</version>
<version>2.9.11</version>
<executions>
<execution>
<goals>
Expand Down

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

8 changes: 4 additions & 4 deletions extension-manager-integration-test-java/pom.xml
Original file line number Diff line number Diff line change
Expand Up @@ -20,7 +20,7 @@
<dependency>
<groupId>com.exasol</groupId>
<artifactId>exasol-test-setup-abstraction-java</artifactId>
<version>2.0.2</version>
<version>2.0.3</version>
<exclusions>
<exclusion>
<!-- org.hamcrest:hamcrest-core:1.3 contains same classes as org.hamcrest:hamcrest:2.2 -->
Expand All @@ -32,7 +32,7 @@
<dependency>
<groupId>com.exasol</groupId>
<artifactId>test-db-builder-java</artifactId>
<version>3.4.2</version>
<version>3.5.0</version>
</dependency>
<dependency>
<groupId>com.exasol</groupId>
Expand All @@ -54,7 +54,7 @@
<dependency>
<groupId>org.mockito</groupId>
<artifactId>mockito-junit-jupiter</artifactId>
<version>5.4.0</version>
<version>5.5.0</version>
<scope>test</scope>
</dependency>
<dependency>
Expand Down Expand Up @@ -82,7 +82,7 @@
<plugin>
<groupId>com.exasol</groupId>
<artifactId>project-keeper-maven-plugin</artifactId>
<version>2.9.10</version>
<version>2.9.11</version>
<executions>
<execution>
<goals>
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -16,7 +16,7 @@ private IntegrationTestCommon() {

static ExasolTestSetup createExasolTestSetup() {
if (System.getProperty("com.exasol.dockerdb.image") == null) {
System.setProperty("com.exasol.dockerdb.image", "7.1.21");
System.setProperty("com.exasol.dockerdb.image", "7.1.22");
}
return new ExasolTestSetupFactory(Path.of("dummy-config")).getTestSetup();
}
Expand Down
2 changes: 1 addition & 1 deletion pkg/integrationTesting/dbTestSetup.go
Original file line number Diff line number Diff line change
Expand Up @@ -9,7 +9,7 @@ import (
"github.com/stretchr/testify/suite"
)

const defaultExasolDbVersion = "7.1.21"
const defaultExasolDbVersion = "7.1.22"

type DbTestSetup struct {
suite *suite.Suite
Expand Down
6 changes: 5 additions & 1 deletion pom.xml
Original file line number Diff line number Diff line change
Expand Up @@ -9,7 +9,7 @@
<packaging>pom</packaging>
<url>https://github.com/exasol/extension-manager/</url>
<properties>
<revision>0.5.0</revision>
<revision>0.5.1</revision>
<junit.version>5.10.0</junit.version>
</properties>
<modules>
Expand Down Expand Up @@ -43,6 +43,10 @@
CVE-2020-36641 is reported to be fixed in aXMLRPC 1.12.1. We use version 1.13.0, so this is a false
positive. -->
<exclude>CVE-2020-36641</exclude>
<!-- Transitive dependency io.netty:netty-handler used by software.amazon.awssdk/exasol-test-setup-abstraction-java.
Vulnerability still present in latest version 4.1.97.Final.
We assume that the AWS SDK's usage of netty is not affected. -->
<exclude>CVE-2023-4586</exclude>
</excludeVulnerabilityIds>
</configuration>
</plugin>
Expand Down
Loading