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:
@@ -21,6 +21,7 @@ import (
|
||||
"context"
|
||||
"encoding/json"
|
||||
"errors"
|
||||
"io"
|
||||
"io/ioutil"
|
||||
"net/http"
|
||||
"reflect"
|
||||
@@ -47,6 +48,8 @@ var opClientTenantGetMock func(ctx context.Context, namespace string, tenantName
|
||||
var opClientTenantPatchMock func(ctx context.Context, namespace string, tenantName string, pt types.PatchType, data []byte, options metav1.PatchOptions) (*v1.Tenant, error)
|
||||
var opClientTenantListMock func(ctx context.Context, namespace string, opts metav1.ListOptions) (*v1.TenantList, error)
|
||||
var httpClientGetMock func(url string) (resp *http.Response, err error)
|
||||
var httpClientPostMock func(url, contentType string, body io.Reader) (resp *http.Response, err error)
|
||||
var httpClientDoMock func(req *http.Request) (*http.Response, error)
|
||||
var k8sclientGetSecretMock func(ctx context.Context, namespace, secretName string, opts metav1.GetOptions) (*corev1.Secret, error)
|
||||
var k8sclientGetServiceMock func(ctx context.Context, namespace, serviceName string, opts metav1.GetOptions) (*corev1.Service, error)
|
||||
|
||||
@@ -75,6 +78,16 @@ func (h httpClientMock) Get(url string) (resp *http.Response, err error) {
|
||||
return httpClientGetMock(url)
|
||||
}
|
||||
|
||||
// mock function of post()
|
||||
func (h httpClientMock) Post(url, contentType string, body io.Reader) (resp *http.Response, err error) {
|
||||
return httpClientPostMock(url, contentType, body)
|
||||
}
|
||||
|
||||
// mock function of Do()
|
||||
func (h httpClientMock) Do(req *http.Request) (*http.Response, error) {
|
||||
return httpClientDoMock(req)
|
||||
}
|
||||
|
||||
func (c k8sClientMock) getSecret(ctx context.Context, namespace, secretName string, opts metav1.GetOptions) (*corev1.Secret, error) {
|
||||
return k8sclientGetSecretMock(ctx, namespace, secretName, opts)
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user