Product license verification in Console (#518)

Operator UI - Provide and store License key
- New License section in Operator UI will allow user to provide the
  license key via input form
- New License section in Operator UI will allow the user to fetch the
  license key using subnet credentials
-  Console backend has to verify provided license is valid -
   https://godoc.org/github.com/minio/minio/pkg/licverifier#example-package
-  Console backend has to store the license key in k8s secrets

Operator UI - Set license to tenant during provisioning
- Check if license key exists in k8s secret during tenant creation
- If License is present attach the license-key jwt to the new console
tenant via an environment variable

Operator UI - Set license for an existing tenant
- Tenant view will display information about the current status of the
  Tenant License
- If Tenant doesn't have a License then Operator-UI will allow to attach
new license by clicking the Add License button
- Console backend will extract the license from the k8s secret and save
the license-key jwt in the tenant console environment variable and
redeploy
This commit is contained in:
Lenin Alevski
2021-01-12 15:55:07 -06:00
committed by GitHub
parent fd779c2ffa
commit f3bcfc327d
69 changed files with 4293 additions and 221 deletions

View File

@@ -1450,6 +1450,68 @@ paths:
tags:
- AdminAPI
/subscription/info:
get:
summary: Subscription info
operationId: SubscriptionInfo
responses:
200:
description: A successful response.
schema:
$ref: "#/definitions/license"
default:
description: Generic error response.
schema:
$ref: "#/definitions/error"
tags:
- AdminAPI
/subscription/validate:
post:
summary: Validate a provided subscription license
operationId: SubscriptionValidate
parameters:
- name: body
in: body
required: true
schema:
$ref: "#/definitions/subscriptionValidateRequest"
responses:
200:
description: A successful response.
schema:
$ref: "#/definitions/license"
default:
description: Generic error response.
schema:
$ref: "#/definitions/error"
tags:
- AdminAPI
/subscription/namespaces/{namespace}/tenants/{tenant}/activate:
post:
summary: Activate a particular tenant using the existing subscription license
operationId: SubscriptionActivate
parameters:
- name: namespace
in: path
required: true
type: string
- name: tenant
in: path
required: true
type: string
responses:
204:
description: A successful response.
default:
description: Generic error response.
schema:
$ref: "#/definitions/error"
tags:
- AdminAPI
/admin/info:
get:
summary: Returns information about the deployment
@@ -2553,6 +2615,8 @@ definitions:
status:
type: string
enum: [ok]
operator:
type: boolean
adminInfoResponse:
type: object
properties:
@@ -2779,7 +2843,8 @@ definitions:
format: int64
enable_prometheus:
type: boolean
subnet_license:
$ref: "#/definitions/license"
tenantUsage:
type: object
properties:
@@ -3717,3 +3782,29 @@ definitions:
restart:
description: Returns wheter server needs to restart to apply changes or not
type: boolean
subscriptionValidateRequest:
type: object
properties:
license:
type: string
email:
type: string
password:
type: string
license:
type: object
properties:
email:
type: string
organization:
type: string
account_id:
type: integer
storage_capacity:
type: integer
plan:
type: string
expires_at:
type: string