Skip to content

Commit e1b2d1f

Browse files
committed
New license management using credentials to activate deployments or generate license keys
1 parent 4153510 commit e1b2d1f

File tree

13 files changed

+554
-34
lines changed

13 files changed

+554
-34
lines changed

site/content/arangodb/3.12/develop/http-api/administration.md

Lines changed: 102 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1257,6 +1257,108 @@ x-content-type-options: nosniff
12571257
```
12581258
{{< /details >}}
12591259

1260+
### Get the deployment ID
1261+
1262+
<small>Introduced in: v3.12.6</small>
1263+
1264+
```openapi
1265+
paths:
1266+
/_db/{database-name}/_admin/deployment/id:
1267+
get:
1268+
operationId: getDeploymentId
1269+
description: |
1270+
Get the unique identifier of this ArangoDB deployment.
1271+
parameters:
1272+
- name: database-name
1273+
in: path
1274+
required: true
1275+
example: _system
1276+
description: |
1277+
The name of a database. Which database you use doesn't matter as long
1278+
as the user account you authenticate with has at least read access
1279+
to this database.
1280+
schema:
1281+
type: string
1282+
responses:
1283+
'200':
1284+
description: |
1285+
The deployment ID has been retrieved successfully.
1286+
content:
1287+
application/json:
1288+
schema:
1289+
type: object
1290+
required:
1291+
- id
1292+
properties:
1293+
id:
1294+
description: |
1295+
The UUID that uniquely identifies the deployment.
1296+
type: string
1297+
format: uuid
1298+
'401':
1299+
description: |
1300+
The user account has insufficient permissions for the selected database.
1301+
content:
1302+
application/json:
1303+
schema:
1304+
type: object
1305+
required:
1306+
- error
1307+
- code
1308+
- errorNum
1309+
- errorMessage
1310+
properties:
1311+
error:
1312+
description: |
1313+
A flag indicating that an error occurred.
1314+
type: boolean
1315+
example: true
1316+
code:
1317+
description: |
1318+
The HTTP response status code.
1319+
type: integer
1320+
example: 401
1321+
errorNum:
1322+
description: |
1323+
The ArangoDB error number for the error that occurred.
1324+
type: integer
1325+
errorMessage:
1326+
description: |
1327+
A descriptive error message.
1328+
type: string
1329+
tags:
1330+
- Administration
1331+
```
1332+
1333+
**Examples**
1334+
1335+
{{< comment >}}
1336+
Example not generated because it the deployment ID would change on every run.
1337+
{{< /comment >}}
1338+
1339+
```bash
1340+
curl --header 'accept: application/json' --dump - http://localhost:8529/_admin/deployment/id
1341+
```
1342+
1343+
{{< details summary="Show output" >}}
1344+
```bash
1345+
HTTP/1.1 200 OK
1346+
X-Arango-Queue-Time-Seconds: 0.000000
1347+
Strict-Transport-Security: max-age=31536000 ; includeSubDomains
1348+
Expires: 0
1349+
Pragma: no-cache
1350+
Cache-Control: no-cache, no-store, must-revalidate, pre-check=0, post-check=0, max-age=0, s-maxage=0
1351+
Content-Security-Policy: frame-ancestors 'self'; form-action 'self';
1352+
X-Content-Type-Options: nosniff
1353+
Server: ArangoDB
1354+
Connection: Keep-Alive
1355+
Content-Type: application/json; charset=utf-8
1356+
Content-Length: 45
1357+
1358+
{"id":"6172616e-676f-4000-0000-9396df268f7f"}
1359+
```
1360+
{{< /details >}}
1361+
12601362
## Shutdown
12611363

12621364
### Start the shutdown sequence

site/content/arangodb/3.12/develop/javascript-api/@arangodb/db-object.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1282,4 +1282,4 @@ Sets a license.
12821282
- `force` (boolean, _optional_): Whether to change the license even if it expires
12831283
sooner than the current one. Default: `false`.
12841284

1285-
Also see [Apply a license](../../../operations/administration/license-management.md#apply-a-license).
1285+
Also see [Apply a license key](../../../operations/administration/license-management.md#apply-a-license-key).

site/content/arangodb/3.12/operations/administration/license-management.md

Lines changed: 120 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -3,25 +3,134 @@ title: Enterprise Edition License Management
33
menuTitle: License Management
44
weight: 20
55
description: >-
6-
How to apply a license and check the licensing status of an ArangoDB deployment
6+
How to activate a deployment, obtain and apply a license key, and check the
7+
licensing status of an ArangoDB deployment
78
---
89
The Enterprise Edition of ArangoDB requires a license so that you can use
910
ArangoDB for commercial purposes and have a dataset size over 100 GiB. See
1011
[ArangoDB Editions](../../features/_index.md#arangodb-editions)
1112
for details.
1213

13-
How to set a license key and to retrieve information about the current license
14-
via different interfaces is described below.
14+
There are different license management flows:
1515

16-
{{< info >}}
17-
If you use the ArangoDB Kubernetes Operator (including the Data Platform),
18-
check the [kube-arangodb documentation](https://arangodb.github.io/kube-arangodb/docs/how-to/set_license.html)
19-
for more details on how to set a license key in a Kubernetes-managed deployment.
20-
{{< /info >}}
16+
- **Activate a deployment** (from v3.12.6 onward):\
17+
Customers receive license credentials composed of a client ID and a client secret.
18+
You can use a command-line tool to activate deployments with these credentials,
19+
either one-off or continuously.
20+
21+
An activation is generally valid for two weeks and it is recommended to
22+
renew the activation weekly.
23+
24+
{{< info >}}
25+
If you use the ArangoDB Kubernetes Operator (including the Data Platform),
26+
check the [kube-arangodb documentation](https://arangodb.github.io/kube-arangodb/docs/how-to/set_license.html)
27+
for more details on how to set a license key in a Kubernetes-managed deployment.
28+
{{< /info >}}
29+
30+
- **Apply a license key**:\
31+
Up to v3.12.5, customers received a license key directly and it was typically
32+
valid for one year. From v3.12.6 onward, customers receive license credentials
33+
instead. You can use a command-line tool to generate a license key using these
34+
credentials, and the license key generally expires every two weeks.
35+
36+
You can also activate a deployment instead of generating a license key, but
37+
this requires an internet connection. For air-gapped environments for example,
38+
the license key flow is required and the license key has a longer validity.
39+
40+
How to activate a deployment or apply a license key to it, as well as how to
41+
retrieve information about the current license via different interfaces is
42+
described below.
43+
44+
## Activate a deployment
45+
46+
1. Download the Arango Data Platform CLI tool `arangodb_operator_platform` from
47+
<https://github.com/arangodb/kube-arangodb/releases>.
48+
It is available for Linux, macOS, and Windows for the x86-64 as well as 64-bit ARM
49+
architecture (e.g. `arangodb_operator_platform_linux_amd64`).
50+
51+
It is recommended to rename the downloaded executable to
52+
`arangodb_operator_platform` (with an `.exe` extension on Windows) and add it to
53+
the `PATH` environment variable to make it available as a command in the system.
54+
55+
2. Activate a deployment once using the Platform CLI tool. Point it to a running
56+
ArangoDB deployment (running on `http://localhost:8529` in this example) and
57+
supply the license credentials:
58+
59+
```sh
60+
arangodb_operator_platform license activate --arango.endpoint http://localhost:8529 --license.client.id "your-corp" --license.client.secret "..."
61+
```
62+
63+
Unless authentication is disabled for the deployment, you need to additionally
64+
supply either ArangoDB user credentials or a JWT session token and specify the
65+
authentication method (case-sensitive):
66+
67+
```sh
68+
# User credentials
69+
arangodb_operator_platform license activate --arango.authentication Basic --arango.basic.username "root" --arango.basic.password "" ...
70+
71+
# JWT session token
72+
arangodb_operator_platform license activate --arango.authentication Token --arango.token "eyJh..." ...
73+
```
74+
75+
3. You can specify an activation interval to keep the Platform CLI tool running
76+
and have it re-activate the deployment automatically, e.g. once a week:
77+
78+
```sh
79+
arangodb_operator_platform license activate --license.interval 168h ...
80+
```
81+
82+
## Generate a license key
83+
84+
1. Download the Arango Data Platform CLI tool `arangodb_operator_platform` from
85+
<https://github.com/arangodb/kube-arangodb/releases>.
86+
It is available for Linux, macOS, and Windows for the x86-64 as well as 64-bit ARM
87+
architecture (e.g. `arangodb_operator_platform_linux_amd64`).
88+
89+
It is recommended to rename the downloaded executable to
90+
`arangodb_operator_platform` (with an `.exe` extension on Windows) and add it to
91+
the `PATH` environment variable to make it available as a command in the system.
92+
93+
2. Create an inventory file using the Platform CLI tool. Point it to a running
94+
ArangoDB deployment (running on `http://localhost:8529` in this example):
95+
96+
```sh
97+
arangodb_operator_platform license inventory --arango.endpoint="http://localhost:8529" inventory.json
98+
```
99+
100+
Unless authentication is disabled for the deployment, you need to additionally
101+
supply either ArangoDB user credentials or a JWT session token and specify the
102+
authentication method (case-sensitive):
103+
104+
```sh
105+
# User credentials
106+
arangodb_operator_platform license inventory --arango.authentication Basic --arango.basic.username "root" --arango.basic.password "" ...
107+
108+
# JWT session token
109+
arangodb_operator_platform license inventory --arango.authentication Token --arango.token "eyJh..." ...
110+
```
111+
112+
3. Determine the ID of the ArangoDB deployment. You can find it in the inventory file
113+
or call the [`GET /_admin/deployment/id` endpoint](../../develop/http-api/administration.md#get-the-deployment-id):
114+
115+
```sh
116+
# User credentials
117+
curl -uroot: http://localhost:8529/_admin/deployment/id
118+
119+
# JWT session token
120+
curl -H "Authorization: Bearer eyJh..." http://localhost:8529/_admin/deployment/id
121+
122+
# Example result:
123+
# {"id":"6172616e-676f-4000-0000-05c958168340"}
124+
```
125+
126+
4. Generate the license key using the deployment ID, the inventory file, and the
127+
license credentials, and write it to a file:
21128

22-
## Apply a license
129+
```sh
130+
arangodb_operator_platform license generate --deployment.id "6172616e-676f-4000-0000-05c958168340" --inventory inventory.json --license.client.id "your-corp" --license.client.secret "..." 2> license_key.txt
131+
```
23132

24-
To use the Enterprise Edition, set the license key like so:
133+
## Apply a license key
25134

26135
{{< tabs "interfaces" >}}
27136

@@ -32,6 +141,7 @@ To use the Enterprise Edition, set the license key like so:
32141
4. Expand the **PUT /_admin/license** sub-panel.
33142
5. Click the **Try it out** button.
34143
6. Paste the license key into the text area below the **Request body** label.
144+
Make sure the key is wrapped in double quotes.
35145
7. Make sure the license key is surrounded by double quote marks.
36146
8. Click the **Execute** button.
37147
9. Scroll down to **Server response** to check the result.

site/content/arangodb/3.12/release-notes/version-3.12/api-changes-in-3-12.md

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -336,6 +336,15 @@ documentation.
336336
Also see [Authentication with access tokens](#authentication-with-access-tokens)
337337
for related API changes.
338338

339+
#### Deployment ID
340+
341+
<small>Introduced in: v3.12.6</small>
342+
343+
Licenses are now bound to specific deployments. Each deployment has a unique
344+
identifier that you can retrieve via a new
345+
[`GET /_admin/deployment/id` endpoint](../../develop/http-api/administration.md#get-the-deployment-id)
346+
in the HTTP API.
347+
339348
### Endpoints augmented
340349

341350
#### View API

site/content/arangodb/3.12/release-notes/version-3.12/incompatible-changes-in-3-12.md

Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -994,6 +994,23 @@ more data, less file descriptors are used.
994994
- `segmentsBytesMax` increased from `5368709120` (5 GiB) to `8589934592` (8 GiB)
995995
- `segmentsBytesFloor` increased from `2097152` (2 MiB) to `25165824` (24 MiB)
996996

997+
## License management changes
998+
999+
<small>Introduced in: v3.12.6</small>
1000+
1001+
Enterprise Edition license keys are now longer issued directly. Customers receive
1002+
license credentials instead. You can use a command-line tool to either activate
1003+
deployments or generate license keys using these credentials. An internet
1004+
connection is required for both. A generated key can subsequently be applied to
1005+
an air-gapped deployment without internet access.
1006+
1007+
The activation and license keys are now typically short-lived and need to be
1008+
renewed every two weeks. Old license keys remain valid until their regular
1009+
expiration.
1010+
1011+
See [Enterprise Edition License Management](../../operations/administration/license-management.md)
1012+
for details.
1013+
9971014
## HTTP RESTful API
9981015

9991016
### JavaScript-based traversal using `/_api/traversal` removed

site/content/arangodb/3.12/release-notes/version-3.12/whats-new-in-3-12.md

Lines changed: 21 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2452,6 +2452,27 @@ environment variable `NAME`. If there is an environment variable called `PID` or
24522452
`TEMP_BASE_DIR`, then `@PID@` or `@TEMP_BASE_DIR@` is substituted with the
24532453
value of the respective environment variable.
24542454

2455+
### License management changes
2456+
2457+
<small>Introduced: v3.12.6</small>
2458+
2459+
The Enterprise Edition requires a license and customers used to receive a
2460+
license key directly. Going forward, customers receive license credentials
2461+
instead. You can use a command-line tool to either activate deployments or
2462+
generate license keys using these credentials.
2463+
2464+
The activation and license keys are now typically short-lived and need to be
2465+
renewed every two weeks. Old license keys remain valid until their regular
2466+
expiration.
2467+
2468+
Licenses are now bound to specific deployments. Each deployment has a unique
2469+
identifier that you can retrieve via a new
2470+
[`GET /_admin/deployment/id` endpoint](../../develop/http-api/administration.md#get-the-deployment-id)
2471+
in the HTTP API.
2472+
2473+
See [Enterprise Edition License Management](../../operations/administration/license-management.md)
2474+
for details.
2475+
24552476
## Client tools
24562477

24572478
### Protocol aliases for endpoints

0 commit comments

Comments
 (0)