diff --git a/models/mp_integration.go b/models/mp_integration.go
new file mode 100644
index 0000000000..c3cad25a04
--- /dev/null
+++ b/models/mp_integration.go
@@ -0,0 +1,67 @@
+// Code generated by go-swagger; DO NOT EDIT.
+
+// This file is part of MinIO Console Server
+// Copyright (c) 2022 MinIO, Inc.
+//
+// This program is free software: you can redistribute it and/or modify
+// it under the terms of the GNU Affero General Public License as published by
+// the Free Software Foundation, either version 3 of the License, or
+// (at your option) any later version.
+//
+// This program is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+// GNU Affero General Public License for more details.
+//
+// You should have received a copy of the GNU Affero General Public License
+// along with this program. If not, see .
+//
+
+package models
+
+// This file was generated by the swagger tool.
+// Editing this file might prove futile when you re-run the swagger generate command
+
+import (
+ "context"
+
+ "github.com/go-openapi/strfmt"
+ "github.com/go-openapi/swag"
+)
+
+// MpIntegration mp integration
+//
+// swagger:model mpIntegration
+type MpIntegration struct {
+
+ // email
+ Email string `json:"email,omitempty"`
+}
+
+// Validate validates this mp integration
+func (m *MpIntegration) Validate(formats strfmt.Registry) error {
+ return nil
+}
+
+// ContextValidate validates this mp integration based on context it is used
+func (m *MpIntegration) ContextValidate(ctx context.Context, formats strfmt.Registry) error {
+ return nil
+}
+
+// MarshalBinary interface implementation
+func (m *MpIntegration) MarshalBinary() ([]byte, error) {
+ if m == nil {
+ return nil, nil
+ }
+ return swag.WriteJSON(m)
+}
+
+// UnmarshalBinary interface implementation
+func (m *MpIntegration) UnmarshalBinary(b []byte) error {
+ var res MpIntegration
+ if err := swag.ReadJSON(b, &res); err != nil {
+ return err
+ }
+ *m = res
+ return nil
+}
diff --git a/operatorapi/configure_operator.go b/operatorapi/configure_operator.go
index 5fa82b30a2..1cbe364050 100644
--- a/operatorapi/configure_operator.go
+++ b/operatorapi/configure_operator.go
@@ -89,6 +89,7 @@ func configureAPI(api *operations.OperatorAPI) http.Handler {
registerVolumesHandlers(api)
// Namespaces handlers
registerNamespaceHandlers(api)
+ registerMarketplaceHandlers(api)
api.PreServerShutdown = func() {}
diff --git a/operatorapi/embedded_spec.go b/operatorapi/embedded_spec.go
index df07fa4f78..0be7e5f5cb 100644
--- a/operatorapi/embedded_spec.go
+++ b/operatorapi/embedded_spec.go
@@ -310,6 +310,103 @@ func init() {
}
}
},
+ "/mp-integration": {
+ "get": {
+ "tags": [
+ "OperatorAPI"
+ ],
+ "summary": "Returns email registered for marketplace integration",
+ "operationId": "GetMPIntegration",
+ "responses": {
+ "200": {
+ "description": "A successful response.",
+ "schema": {
+ "$ref": "#/definitions/mpIntegration"
+ }
+ },
+ "default": {
+ "description": "Generic error response.",
+ "schema": {
+ "$ref": "#/definitions/error"
+ }
+ }
+ }
+ },
+ "post": {
+ "tags": [
+ "OperatorAPI"
+ ],
+ "summary": "Set email to register for marketplace integration",
+ "operationId": "PostMPIntegration",
+ "parameters": [
+ {
+ "name": "body",
+ "in": "body",
+ "required": true,
+ "schema": {
+ "$ref": "#/definitions/mpIntegration"
+ }
+ }
+ ],
+ "responses": {
+ "201": {
+ "description": "A successful response."
+ },
+ "default": {
+ "description": "Generic error response.",
+ "schema": {
+ "$ref": "#/definitions/error"
+ }
+ }
+ }
+ },
+ "delete": {
+ "tags": [
+ "OperatorAPI"
+ ],
+ "summary": "Delete email registered for marketplace integration",
+ "operationId": "DeleteMPIntegration",
+ "responses": {
+ "204": {
+ "description": "A successful response."
+ },
+ "default": {
+ "description": "Generic error response.",
+ "schema": {
+ "$ref": "#/definitions/error"
+ }
+ }
+ }
+ },
+ "patch": {
+ "tags": [
+ "OperatorAPI"
+ ],
+ "summary": "Update email registered for marketplace integration",
+ "operationId": "PatchMPIntegration",
+ "parameters": [
+ {
+ "name": "body",
+ "in": "body",
+ "required": true,
+ "schema": {
+ "$ref": "#/definitions/mpIntegration"
+ }
+ }
+ ],
+ "responses": {
+ "200": {
+ "description": "A successful response."
+ },
+ "default": {
+ "description": "Generic error response.",
+ "schema": {
+ "$ref": "#/definitions/error"
+ }
+ }
+ }
+ }
+ },
"/namespace": {
"post": {
"tags": [
@@ -3302,6 +3399,14 @@ func init() {
}
}
},
+ "mpIntegration": {
+ "type": "object",
+ "properties": {
+ "email": {
+ "type": "string"
+ }
+ }
+ },
"namespace": {
"type": "object",
"required": [
@@ -4914,6 +5019,103 @@ func init() {
}
}
},
+ "/mp-integration": {
+ "get": {
+ "tags": [
+ "OperatorAPI"
+ ],
+ "summary": "Returns email registered for marketplace integration",
+ "operationId": "GetMPIntegration",
+ "responses": {
+ "200": {
+ "description": "A successful response.",
+ "schema": {
+ "$ref": "#/definitions/mpIntegration"
+ }
+ },
+ "default": {
+ "description": "Generic error response.",
+ "schema": {
+ "$ref": "#/definitions/error"
+ }
+ }
+ }
+ },
+ "post": {
+ "tags": [
+ "OperatorAPI"
+ ],
+ "summary": "Set email to register for marketplace integration",
+ "operationId": "PostMPIntegration",
+ "parameters": [
+ {
+ "name": "body",
+ "in": "body",
+ "required": true,
+ "schema": {
+ "$ref": "#/definitions/mpIntegration"
+ }
+ }
+ ],
+ "responses": {
+ "201": {
+ "description": "A successful response."
+ },
+ "default": {
+ "description": "Generic error response.",
+ "schema": {
+ "$ref": "#/definitions/error"
+ }
+ }
+ }
+ },
+ "delete": {
+ "tags": [
+ "OperatorAPI"
+ ],
+ "summary": "Delete email registered for marketplace integration",
+ "operationId": "DeleteMPIntegration",
+ "responses": {
+ "204": {
+ "description": "A successful response."
+ },
+ "default": {
+ "description": "Generic error response.",
+ "schema": {
+ "$ref": "#/definitions/error"
+ }
+ }
+ }
+ },
+ "patch": {
+ "tags": [
+ "OperatorAPI"
+ ],
+ "summary": "Update email registered for marketplace integration",
+ "operationId": "PatchMPIntegration",
+ "parameters": [
+ {
+ "name": "body",
+ "in": "body",
+ "required": true,
+ "schema": {
+ "$ref": "#/definitions/mpIntegration"
+ }
+ }
+ ],
+ "responses": {
+ "200": {
+ "description": "A successful response."
+ },
+ "default": {
+ "description": "Generic error response.",
+ "schema": {
+ "$ref": "#/definitions/error"
+ }
+ }
+ }
+ }
+ },
"/namespace": {
"post": {
"tags": [
@@ -8737,6 +8939,14 @@ func init() {
}
}
},
+ "mpIntegration": {
+ "type": "object",
+ "properties": {
+ "email": {
+ "type": "string"
+ }
+ }
+ },
"namespace": {
"type": "object",
"required": [
diff --git a/operatorapi/k8s_client.go b/operatorapi/k8s_client.go
index 0736d43f2e..fa6485da38 100644
--- a/operatorapi/k8s_client.go
+++ b/operatorapi/k8s_client.go
@@ -39,6 +39,10 @@ type K8sClientI interface {
createSecret(ctx context.Context, namespace string, secret *v1.Secret, opts metav1.CreateOptions) (*v1.Secret, error)
updateSecret(ctx context.Context, namespace string, secret *v1.Secret, opts metav1.UpdateOptions) (*v1.Secret, error)
getPVC(ctx context.Context, namespace string, pvcName string, opts metav1.GetOptions) (*v1.PersistentVolumeClaim, error)
+ getConfigMap(ctx context.Context, namespace, configMap string, opts metav1.GetOptions) (*v1.ConfigMap, error)
+ createConfigMap(ctx context.Context, namespace string, cm *v1.ConfigMap, opts metav1.CreateOptions) (*v1.ConfigMap, error)
+ updateConfigMap(ctx context.Context, namespace string, cm *v1.ConfigMap, opts metav1.UpdateOptions) (*v1.ConfigMap, error)
+ deleteConfigMap(ctx context.Context, namespace string, name string, opts metav1.DeleteOptions) error
}
// Interface implementation
@@ -87,3 +91,19 @@ func (c *k8sClient) getStorageClasses(ctx context.Context, opts metav1.ListOptio
func (c *k8sClient) getPVC(ctx context.Context, namespace string, pvcName string, opts metav1.GetOptions) (*v1.PersistentVolumeClaim, error) {
return c.client.CoreV1().PersistentVolumeClaims(namespace).Get(ctx, pvcName, opts)
}
+
+func (c *k8sClient) getConfigMap(ctx context.Context, namespace, name string, opts metav1.GetOptions) (*v1.ConfigMap, error) {
+ return c.client.CoreV1().ConfigMaps(namespace).Get(ctx, name, opts)
+}
+
+func (c *k8sClient) createConfigMap(ctx context.Context, namespace string, cm *v1.ConfigMap, opts metav1.CreateOptions) (*v1.ConfigMap, error) {
+ return c.client.CoreV1().ConfigMaps(namespace).Create(ctx, cm, opts)
+}
+
+func (c *k8sClient) updateConfigMap(ctx context.Context, namespace string, cm *v1.ConfigMap, opts metav1.UpdateOptions) (*v1.ConfigMap, error) {
+ return c.client.CoreV1().ConfigMaps(namespace).Update(ctx, cm, opts)
+}
+
+func (c *k8sClient) deleteConfigMap(ctx context.Context, namespace string, name string, opts metav1.DeleteOptions) error {
+ return c.client.CoreV1().ConfigMaps(namespace).Delete(ctx, name, opts)
+}
diff --git a/operatorapi/marketplace.go b/operatorapi/marketplace.go
new file mode 100644
index 0000000000..07f7f2d86c
--- /dev/null
+++ b/operatorapi/marketplace.go
@@ -0,0 +1,184 @@
+// This file is part of MinIO Console Server
+// Copyright (c) 2021 MinIO, Inc.
+//
+// This program is free software: you can redistribute it and/or modify
+// it under the terms of the GNU Affero General Public License as published by
+// the Free Software Foundation, either version 3 of the License, or
+// (at your option) any later version.
+//
+// This program is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+// GNU Affero General Public License for more details.
+//
+// You should have received a copy of the GNU Affero General Public License
+// along with this program. If not, see .
+
+package operatorapi
+
+import (
+ "context"
+ "fmt"
+ "os"
+
+ "github.com/go-openapi/runtime/middleware"
+ "github.com/minio/console/cluster"
+ "github.com/minio/console/models"
+ "github.com/minio/console/operatorapi/operations"
+ "github.com/minio/console/operatorapi/operations/operator_api"
+ errors "github.com/minio/console/restapi"
+ corev1 "k8s.io/api/core/v1"
+ metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
+)
+
+var (
+ mpConfigMapDefault = "mp-config"
+ mpConfigMapKey = "MP_CONFIG_KEY"
+ mpEmail = "email"
+ emailNotSetMsg = "Email was not sent in request"
+)
+
+func registerMarketplaceHandlers(api *operations.OperatorAPI) {
+ api.OperatorAPIGetMPIntegrationHandler = operator_api.GetMPIntegrationHandlerFunc(func(params operator_api.GetMPIntegrationParams, session *models.Principal) middleware.Responder {
+ payload, err := getMPIntegrationResponse(session, params)
+ if err != nil {
+ return operator_api.NewGetMPIntegrationDefault(int(err.Code)).WithPayload(err)
+ }
+ return operator_api.NewGetMPIntegrationOK().WithPayload(payload)
+ })
+
+ api.OperatorAPIPostMPIntegrationHandler = operator_api.PostMPIntegrationHandlerFunc(func(params operator_api.PostMPIntegrationParams, session *models.Principal) middleware.Responder {
+ err := postMPIntegrationResponse(session, params)
+ if err != nil {
+ return operator_api.NewPostMPIntegrationDefault(int(err.Code)).WithPayload(err)
+ }
+ return operator_api.NewPostMPIntegrationCreated()
+ })
+
+ api.OperatorAPIPatchMPIntegrationHandler = operator_api.PatchMPIntegrationHandlerFunc(func(params operator_api.PatchMPIntegrationParams, session *models.Principal) middleware.Responder {
+ err := patchMPIntegrationResponse(session, params)
+ if err != nil {
+ return operator_api.NewPatchMPIntegrationDefault(int(err.Code)).WithPayload(err)
+ }
+ return operator_api.NewPatchMPIntegrationOK()
+ })
+
+ api.OperatorAPIDeleteMPIntegrationHandler = operator_api.DeleteMPIntegrationHandlerFunc(func(params operator_api.DeleteMPIntegrationParams, session *models.Principal) middleware.Responder {
+ if err := deleteMPIntegrationResponse(session, params); err != nil {
+ return operator_api.NewDeleteMPIntegrationDefault(int(err.Code)).WithPayload(err)
+ }
+ return operator_api.NewDeleteMPIntegrationNoContent()
+ })
+}
+
+func getMPIntegrationResponse(session *models.Principal, params operator_api.GetMPIntegrationParams) (*models.MpIntegration, *models.Error) {
+ if true { // This block will be removed once service to register emails is deployed
+ return nil, &models.Error{Code: 501}
+ }
+ clientSet, err := cluster.K8sClient(session.STSSessionToken)
+ ctx, cancel := context.WithCancel(params.HTTPRequest.Context())
+ defer cancel()
+ if err != nil {
+ return nil, errors.ErrorWithContext(ctx, err)
+ }
+ mpEmail, err := getMPEmail(ctx, &k8sClient{client: clientSet})
+ if err != nil {
+ return nil, errors.ErrorWithContext(ctx, errors.ErrNotFound)
+ }
+ return &models.MpIntegration{
+ Email: mpEmail,
+ }, nil
+}
+
+func getMPEmail(ctx context.Context, clientSet K8sClientI) (string, error) {
+ cm, err := clientSet.getConfigMap(ctx, "default", getMPConfigMapKey(mpConfigMapKey), metav1.GetOptions{})
+ if err != nil {
+ return "", err
+ }
+ return cm.Data[mpEmail], nil
+}
+
+func postMPIntegrationResponse(session *models.Principal, params operator_api.PostMPIntegrationParams) *models.Error {
+ if true { // This block will be removed once service to register emails is deployed
+ return &models.Error{Code: 501}
+ }
+ clientSet, err := cluster.K8sClient(session.STSSessionToken)
+ ctx, cancel := context.WithCancel(params.HTTPRequest.Context())
+ defer cancel()
+ if err != nil {
+ return errors.ErrorWithContext(ctx, err)
+ }
+ return setMPIntegration(ctx, params.Body.Email, false, &k8sClient{client: clientSet})
+}
+
+func patchMPIntegrationResponse(session *models.Principal, params operator_api.PatchMPIntegrationParams) *models.Error {
+ if true { // This block will be removed once service to register emails is deployed
+ return &models.Error{Code: 501}
+ }
+ clientSet, err := cluster.K8sClient(session.STSSessionToken)
+ ctx, cancel := context.WithCancel(params.HTTPRequest.Context())
+ defer cancel()
+ if err != nil {
+ return errors.ErrorWithContext(ctx, err)
+ }
+ return setMPIntegration(ctx, params.Body.Email, true, &k8sClient{client: clientSet})
+}
+
+func setMPIntegration(ctx context.Context, email string, override bool, clientSet K8sClientI) *models.Error {
+ if email == "" {
+ return errors.ErrorWithContext(ctx, errors.ErrBadRequest, fmt.Errorf(emailNotSetMsg))
+ }
+ if _, err := setMPEmail(ctx, email, override, clientSet); err != nil {
+ return errors.ErrorWithContext(ctx, err)
+ }
+ return nil
+}
+
+func setMPEmail(ctx context.Context, email string, override bool, clientSet K8sClientI) (*corev1.ConfigMap, error) {
+ cm := createCM(email)
+ if override {
+ return clientSet.updateConfigMap(ctx, "default", cm, metav1.UpdateOptions{})
+ }
+ return clientSet.createConfigMap(ctx, "default", cm, metav1.CreateOptions{})
+}
+
+func createCM(email string) *corev1.ConfigMap {
+ return &corev1.ConfigMap{
+ TypeMeta: metav1.TypeMeta{
+ Kind: "ConfigMap",
+ APIVersion: "v1",
+ },
+ ObjectMeta: metav1.ObjectMeta{
+ Name: getMPConfigMapKey(mpConfigMapKey),
+ Namespace: "default",
+ },
+ Data: map[string]string{mpEmail: email},
+ }
+}
+
+func deleteMPIntegrationResponse(session *models.Principal, params operator_api.DeleteMPIntegrationParams) *models.Error {
+ if true { // This block will be removed once service to register emails is deployed
+ return &models.Error{Code: 501}
+ }
+ clientSet, err := cluster.K8sClient(session.STSSessionToken)
+ ctx, cancel := context.WithCancel(params.HTTPRequest.Context())
+ defer cancel()
+ if err != nil {
+ return errors.ErrorWithContext(ctx, err)
+ }
+ return deleteMPIntegration(ctx, &k8sClient{client: clientSet})
+}
+
+func deleteMPIntegration(ctx context.Context, clientSet K8sClientI) *models.Error {
+ if err := clientSet.deleteConfigMap(ctx, "default", getMPConfigMapKey(mpConfigMapKey), metav1.DeleteOptions{}); err != nil {
+ return errors.ErrorWithContext(ctx, err)
+ }
+ return nil
+}
+
+func getMPConfigMapKey(envVar string) string {
+ if mp := os.Getenv(envVar); mp != "" {
+ return mp
+ }
+ return mpConfigMapDefault
+}
diff --git a/operatorapi/marketplace_test.go b/operatorapi/marketplace_test.go
new file mode 100644
index 0000000000..d73f058a35
--- /dev/null
+++ b/operatorapi/marketplace_test.go
@@ -0,0 +1,225 @@
+// This file is part of MinIO Console Server
+// Copyright (c) 2022 MinIO, Inc.
+//
+// This program is free software: you can redistribute it and/or modify
+// it under the terms of the GNU Affero General Public License as published by
+// the Free Software Foundation, either version 3 of the License, or
+// (at your option) any later version.
+//
+// This program is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+// GNU Affero General Public License for more details.
+//
+// You should have received a copy of the GNU Affero General Public License
+// along with this program. If not, see .
+
+package operatorapi
+
+import (
+ "context"
+ "errors"
+ "net/http"
+ "os"
+ "testing"
+
+ "github.com/minio/console/models"
+ "github.com/minio/console/operatorapi/operations"
+ "github.com/minio/console/operatorapi/operations/operator_api"
+ "github.com/stretchr/testify/assert"
+ "github.com/stretchr/testify/suite"
+ corev1 "k8s.io/api/core/v1"
+ metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
+)
+
+var (
+ testWithError = false
+ errMock = errors.New("mock error")
+ k8sClientGetConfigMapMock func(ctx context.Context, namespace, configMap string, opts metav1.GetOptions) (*corev1.ConfigMap, error)
+ k8sClientCreateConfigMapMock func(ctx context.Context, namespace string, cm *corev1.ConfigMap, opts metav1.CreateOptions) (*corev1.ConfigMap, error)
+ k8sClientUpdateConfigMapMock func(ctx context.Context, namespace string, cm *corev1.ConfigMap, opts metav1.UpdateOptions) (*corev1.ConfigMap, error)
+ k8sClientDeleteConfigMapMock func(ctx context.Context, namespace string, name string, opts metav1.DeleteOptions) error
+)
+
+type MarketplaceTestSuite struct {
+ suite.Suite
+ assert *assert.Assertions
+ kClient k8sClientMock
+ namespace string
+}
+
+func (c k8sClientMock) getConfigMap(ctx context.Context, namespace, configMap string, opts metav1.GetOptions) (*corev1.ConfigMap, error) {
+ return k8sClientGetConfigMapMock(ctx, namespace, configMap, opts)
+}
+
+func (c k8sClientMock) createConfigMap(ctx context.Context, namespace string, cm *corev1.ConfigMap, opts metav1.CreateOptions) (*corev1.ConfigMap, error) {
+ return k8sClientCreateConfigMapMock(ctx, namespace, cm, opts)
+}
+
+func (c k8sClientMock) updateConfigMap(ctx context.Context, namespace string, cm *corev1.ConfigMap, opts metav1.UpdateOptions) (*corev1.ConfigMap, error) {
+ return k8sClientUpdateConfigMapMock(ctx, namespace, cm, opts)
+}
+
+func (c k8sClientMock) deleteConfigMap(ctx context.Context, namespace string, name string, opts metav1.DeleteOptions) error {
+ return k8sClientDeleteConfigMapMock(ctx, namespace, name, opts)
+}
+
+func (suite *MarketplaceTestSuite) SetupSuite() {
+ suite.assert = assert.New(suite.T())
+ suite.namespace = "default"
+ k8sClientGetConfigMapMock = suite.getConfigMapMock
+ k8sClientCreateConfigMapMock = suite.createConfigMapMock
+ k8sClientUpdateConfigMapMock = suite.updateConfigMapMock
+ k8sClientDeleteConfigMapMock = suite.deleteConfigMapMock
+ os.Setenv(mpConfigMapKey, "mp-mock-config")
+}
+
+func (suite *MarketplaceTestSuite) TearDownSuite() {
+ os.Unsetenv(mpConfigMapKey)
+}
+
+func (suite *MarketplaceTestSuite) getConfigMapMock(ctx context.Context, namespace, configMap string, opts metav1.GetOptions) (*corev1.ConfigMap, error) {
+ if testWithError {
+ return nil, errMock
+ }
+ return &corev1.ConfigMap{Data: map[string]string{mpEmail: "mock@mock.com"}}, nil
+}
+
+func (suite *MarketplaceTestSuite) createConfigMapMock(ctx context.Context, namespace string, cm *corev1.ConfigMap, opts metav1.CreateOptions) (*corev1.ConfigMap, error) {
+ if testWithError {
+ return nil, errMock
+ }
+ return &corev1.ConfigMap{}, nil
+}
+
+func (suite *MarketplaceTestSuite) updateConfigMapMock(ctx context.Context, namespace string, cm *corev1.ConfigMap, opts metav1.UpdateOptions) (*corev1.ConfigMap, error) {
+ if testWithError {
+ return nil, errMock
+ }
+ return &corev1.ConfigMap{}, nil
+}
+
+func (suite *MarketplaceTestSuite) deleteConfigMapMock(ctx context.Context, namespace string, name string, opts metav1.DeleteOptions) error {
+ if testWithError {
+ return errMock
+ }
+ return nil
+}
+
+func (suite *MarketplaceTestSuite) TestRegisterMarketplaceHandlers() {
+ api := &operations.OperatorAPI{}
+ suite.assert.Nil(api.OperatorAPIGetMPIntegrationHandler)
+ suite.assert.Nil(api.OperatorAPIPostMPIntegrationHandler)
+ suite.assert.Nil(api.OperatorAPIPatchMPIntegrationHandler)
+ suite.assert.Nil(api.OperatorAPIDeleteMPIntegrationHandler)
+ registerMarketplaceHandlers(api)
+ suite.assert.NotNil(api.OperatorAPIGetMPIntegrationHandler)
+ suite.assert.NotNil(api.OperatorAPIPostMPIntegrationHandler)
+ suite.assert.NotNil(api.OperatorAPIPatchMPIntegrationHandler)
+ suite.assert.NotNil(api.OperatorAPIDeleteMPIntegrationHandler)
+}
+
+// TODO
+// WIP - Complete successful tests to RUD handlers
+// WIP - Add tests to POST handler
+// WIP - Check how to mock k8s objects for tests with no error
+
+func (suite *MarketplaceTestSuite) TestGetMPIntegrationHandlerWithError() {
+ api := &operations.OperatorAPI{}
+ registerMarketplaceHandlers(api)
+ params := operator_api.NewGetMPIntegrationParams()
+ params.HTTPRequest = &http.Request{}
+ response := api.OperatorAPIGetMPIntegrationHandler.Handle(params, &models.Principal{})
+ _, ok := response.(*operator_api.GetMPIntegrationDefault)
+ suite.assert.True(ok)
+}
+
+func (suite *MarketplaceTestSuite) TestPatchMPIntegrationHandlerWithError() {
+ api := &operations.OperatorAPI{}
+ registerMarketplaceHandlers(api)
+ params := operator_api.NewPatchMPIntegrationParams()
+ params.HTTPRequest = &http.Request{}
+ params.Body = &models.MpIntegration{Email: "mock@mock.com"}
+ response := api.OperatorAPIPatchMPIntegrationHandler.Handle(params, &models.Principal{})
+ _, ok := response.(*operator_api.PatchMPIntegrationDefault)
+ suite.assert.True(ok)
+}
+
+func (suite *MarketplaceTestSuite) TestDeleteMPIntegrationHandlerWithError() {
+ api := &operations.OperatorAPI{}
+ registerMarketplaceHandlers(api)
+ params := operator_api.NewDeleteMPIntegrationParams()
+ params.HTTPRequest = &http.Request{}
+ response := api.OperatorAPIDeleteMPIntegrationHandler.Handle(params, &models.Principal{})
+ _, ok := response.(*operator_api.DeleteMPIntegrationDefault)
+ suite.assert.True(ok)
+}
+
+func (suite *MarketplaceTestSuite) TestGetMPEmailWithError() {
+ testWithError = true
+ ctx, cancel := context.WithCancel(context.Background())
+ defer cancel()
+ email, err := getMPEmail(ctx, &suite.kClient)
+ suite.assert.NotNil(err)
+ suite.assert.Empty(email)
+}
+
+func (suite *MarketplaceTestSuite) TestGetMPEmailNoError() {
+ testWithError = false
+ ctx, cancel := context.WithCancel(context.Background())
+ defer cancel()
+ email, err := getMPEmail(ctx, &suite.kClient)
+ suite.assert.Nil(err)
+ suite.assert.NotEmpty(email)
+}
+
+func (suite *MarketplaceTestSuite) TestSetMPIntegrationNoEmail() {
+ ctx, cancel := context.WithCancel(context.Background())
+ defer cancel()
+ err := setMPIntegration(ctx, "", false, &suite.kClient)
+ suite.assert.NotNil(err)
+}
+
+func (suite *MarketplaceTestSuite) TestSetMPIntegrationWithError() {
+ testWithError = true
+ ctx, cancel := context.WithCancel(context.Background())
+ defer cancel()
+ err := setMPIntegration(ctx, "mock@mock.com", false, &suite.kClient)
+ suite.assert.NotNil(err)
+}
+
+func (suite *MarketplaceTestSuite) TestSetMPIntegrationNoError() {
+ testWithError = false
+ ctx, cancel := context.WithCancel(context.Background())
+ defer cancel()
+ err := setMPIntegration(ctx, "mock@mock.com", false, &suite.kClient)
+ suite.assert.Nil(err)
+}
+
+func (suite *MarketplaceTestSuite) TestSetMPIntegrationOverrideNoError() {
+ testWithError = false
+ ctx, cancel := context.WithCancel(context.Background())
+ defer cancel()
+ err := setMPIntegration(ctx, "mock@mock.com", true, &suite.kClient)
+ suite.assert.Nil(err)
+}
+
+func (suite *MarketplaceTestSuite) TestDeleteMPIntegrationWithError() {
+ testWithError = true
+ ctx, cancel := context.WithCancel(context.Background())
+ defer cancel()
+ err := deleteMPIntegration(ctx, &suite.kClient)
+ suite.assert.NotNil(err)
+}
+
+func (suite *MarketplaceTestSuite) TestDeleteMPIntegrationNoError() {
+ testWithError = false
+ ctx, cancel := context.WithCancel(context.Background())
+ defer cancel()
+ err := deleteMPIntegration(ctx, &suite.kClient)
+ suite.assert.Nil(err)
+}
+
+func TestMarketplace(t *testing.T) {
+ suite.Run(t, new(MarketplaceTestSuite))
+}
diff --git a/operatorapi/operations/operator_api.go b/operatorapi/operations/operator_api.go
index e9c37a71e7..7308ff610d 100644
--- a/operatorapi/operations/operator_api.go
+++ b/operatorapi/operations/operator_api.go
@@ -73,6 +73,9 @@ func NewOperatorAPI(spec *loads.Document) *OperatorAPI {
OperatorAPICreateTenantHandler: operator_api.CreateTenantHandlerFunc(func(params operator_api.CreateTenantParams, principal *models.Principal) middleware.Responder {
return middleware.NotImplemented("operation operator_api.CreateTenant has not yet been implemented")
}),
+ OperatorAPIDeleteMPIntegrationHandler: operator_api.DeleteMPIntegrationHandlerFunc(func(params operator_api.DeleteMPIntegrationParams, principal *models.Principal) middleware.Responder {
+ return middleware.NotImplemented("operation operator_api.DeleteMPIntegration has not yet been implemented")
+ }),
OperatorAPIDeletePVCHandler: operator_api.DeletePVCHandlerFunc(func(params operator_api.DeletePVCParams, principal *models.Principal) middleware.Responder {
return middleware.NotImplemented("operation operator_api.DeletePVC has not yet been implemented")
}),
@@ -94,6 +97,9 @@ func NewOperatorAPI(spec *loads.Document) *OperatorAPI {
OperatorAPIGetAllocatableResourcesHandler: operator_api.GetAllocatableResourcesHandlerFunc(func(params operator_api.GetAllocatableResourcesParams, principal *models.Principal) middleware.Responder {
return middleware.NotImplemented("operation operator_api.GetAllocatableResources has not yet been implemented")
}),
+ OperatorAPIGetMPIntegrationHandler: operator_api.GetMPIntegrationHandlerFunc(func(params operator_api.GetMPIntegrationParams, principal *models.Principal) middleware.Responder {
+ return middleware.NotImplemented("operation operator_api.GetMPIntegration has not yet been implemented")
+ }),
OperatorAPIGetMaxAllocatableMemHandler: operator_api.GetMaxAllocatableMemHandlerFunc(func(params operator_api.GetMaxAllocatableMemParams, principal *models.Principal) middleware.Responder {
return middleware.NotImplemented("operation operator_api.GetMaxAllocatableMem has not yet been implemented")
}),
@@ -163,6 +169,12 @@ func NewOperatorAPI(spec *loads.Document) *OperatorAPI {
AuthLogoutHandler: auth.LogoutHandlerFunc(func(params auth.LogoutParams, principal *models.Principal) middleware.Responder {
return middleware.NotImplemented("operation auth.Logout has not yet been implemented")
}),
+ OperatorAPIPatchMPIntegrationHandler: operator_api.PatchMPIntegrationHandlerFunc(func(params operator_api.PatchMPIntegrationParams, principal *models.Principal) middleware.Responder {
+ return middleware.NotImplemented("operation operator_api.PatchMPIntegration has not yet been implemented")
+ }),
+ OperatorAPIPostMPIntegrationHandler: operator_api.PostMPIntegrationHandlerFunc(func(params operator_api.PostMPIntegrationParams, principal *models.Principal) middleware.Responder {
+ return middleware.NotImplemented("operation operator_api.PostMPIntegration has not yet been implemented")
+ }),
OperatorAPIPutTenantYAMLHandler: operator_api.PutTenantYAMLHandlerFunc(func(params operator_api.PutTenantYAMLParams, principal *models.Principal) middleware.Responder {
return middleware.NotImplemented("operation operator_api.PutTenantYAML has not yet been implemented")
}),
@@ -281,6 +293,8 @@ type OperatorAPI struct {
OperatorAPICreateNamespaceHandler operator_api.CreateNamespaceHandler
// OperatorAPICreateTenantHandler sets the operation handler for the create tenant operation
OperatorAPICreateTenantHandler operator_api.CreateTenantHandler
+ // OperatorAPIDeleteMPIntegrationHandler sets the operation handler for the delete m p integration operation
+ OperatorAPIDeleteMPIntegrationHandler operator_api.DeleteMPIntegrationHandler
// OperatorAPIDeletePVCHandler sets the operation handler for the delete p v c operation
OperatorAPIDeletePVCHandler operator_api.DeletePVCHandler
// OperatorAPIDeletePodHandler sets the operation handler for the delete pod operation
@@ -295,6 +309,8 @@ type OperatorAPI struct {
OperatorAPIEnableTenantLoggingHandler operator_api.EnableTenantLoggingHandler
// OperatorAPIGetAllocatableResourcesHandler sets the operation handler for the get allocatable resources operation
OperatorAPIGetAllocatableResourcesHandler operator_api.GetAllocatableResourcesHandler
+ // OperatorAPIGetMPIntegrationHandler sets the operation handler for the get m p integration operation
+ OperatorAPIGetMPIntegrationHandler operator_api.GetMPIntegrationHandler
// OperatorAPIGetMaxAllocatableMemHandler sets the operation handler for the get max allocatable mem operation
OperatorAPIGetMaxAllocatableMemHandler operator_api.GetMaxAllocatableMemHandler
// OperatorAPIGetPVCDescribeHandler sets the operation handler for the get p v c describe operation
@@ -341,6 +357,10 @@ type OperatorAPI struct {
AuthLoginOperatorHandler auth.LoginOperatorHandler
// AuthLogoutHandler sets the operation handler for the logout operation
AuthLogoutHandler auth.LogoutHandler
+ // OperatorAPIPatchMPIntegrationHandler sets the operation handler for the patch m p integration operation
+ OperatorAPIPatchMPIntegrationHandler operator_api.PatchMPIntegrationHandler
+ // OperatorAPIPostMPIntegrationHandler sets the operation handler for the post m p integration operation
+ OperatorAPIPostMPIntegrationHandler operator_api.PostMPIntegrationHandler
// OperatorAPIPutTenantYAMLHandler sets the operation handler for the put tenant y a m l operation
OperatorAPIPutTenantYAMLHandler operator_api.PutTenantYAMLHandler
// AuthSessionCheckHandler sets the operation handler for the session check operation
@@ -473,6 +493,9 @@ func (o *OperatorAPI) Validate() error {
if o.OperatorAPICreateTenantHandler == nil {
unregistered = append(unregistered, "operator_api.CreateTenantHandler")
}
+ if o.OperatorAPIDeleteMPIntegrationHandler == nil {
+ unregistered = append(unregistered, "operator_api.DeleteMPIntegrationHandler")
+ }
if o.OperatorAPIDeletePVCHandler == nil {
unregistered = append(unregistered, "operator_api.DeletePVCHandler")
}
@@ -494,6 +517,9 @@ func (o *OperatorAPI) Validate() error {
if o.OperatorAPIGetAllocatableResourcesHandler == nil {
unregistered = append(unregistered, "operator_api.GetAllocatableResourcesHandler")
}
+ if o.OperatorAPIGetMPIntegrationHandler == nil {
+ unregistered = append(unregistered, "operator_api.GetMPIntegrationHandler")
+ }
if o.OperatorAPIGetMaxAllocatableMemHandler == nil {
unregistered = append(unregistered, "operator_api.GetMaxAllocatableMemHandler")
}
@@ -563,6 +589,12 @@ func (o *OperatorAPI) Validate() error {
if o.AuthLogoutHandler == nil {
unregistered = append(unregistered, "auth.LogoutHandler")
}
+ if o.OperatorAPIPatchMPIntegrationHandler == nil {
+ unregistered = append(unregistered, "operator_api.PatchMPIntegrationHandler")
+ }
+ if o.OperatorAPIPostMPIntegrationHandler == nil {
+ unregistered = append(unregistered, "operator_api.PostMPIntegrationHandler")
+ }
if o.OperatorAPIPutTenantYAMLHandler == nil {
unregistered = append(unregistered, "operator_api.PutTenantYAMLHandler")
}
@@ -739,6 +771,10 @@ func (o *OperatorAPI) initHandlerCache() {
if o.handlers["DELETE"] == nil {
o.handlers["DELETE"] = make(map[string]http.Handler)
}
+ o.handlers["DELETE"]["/mp-integration"] = operator_api.NewDeleteMPIntegration(o.context, o.OperatorAPIDeleteMPIntegrationHandler)
+ if o.handlers["DELETE"] == nil {
+ o.handlers["DELETE"] = make(map[string]http.Handler)
+ }
o.handlers["DELETE"]["/namespaces/{namespace}/tenants/{tenant}/pvc/{PVCName}"] = operator_api.NewDeletePVC(o.context, o.OperatorAPIDeletePVCHandler)
if o.handlers["DELETE"] == nil {
o.handlers["DELETE"] = make(map[string]http.Handler)
@@ -767,6 +803,10 @@ func (o *OperatorAPI) initHandlerCache() {
if o.handlers["GET"] == nil {
o.handlers["GET"] = make(map[string]http.Handler)
}
+ o.handlers["GET"]["/mp-integration"] = operator_api.NewGetMPIntegration(o.context, o.OperatorAPIGetMPIntegrationHandler)
+ if o.handlers["GET"] == nil {
+ o.handlers["GET"] = make(map[string]http.Handler)
+ }
o.handlers["GET"]["/cluster/max-allocatable-memory"] = operator_api.NewGetMaxAllocatableMem(o.context, o.OperatorAPIGetMaxAllocatableMemHandler)
if o.handlers["GET"] == nil {
o.handlers["GET"] = make(map[string]http.Handler)
@@ -856,6 +896,14 @@ func (o *OperatorAPI) initHandlerCache() {
o.handlers["POST"] = make(map[string]http.Handler)
}
o.handlers["POST"]["/logout"] = auth.NewLogout(o.context, o.AuthLogoutHandler)
+ if o.handlers["PATCH"] == nil {
+ o.handlers["PATCH"] = make(map[string]http.Handler)
+ }
+ o.handlers["PATCH"]["/mp-integration"] = operator_api.NewPatchMPIntegration(o.context, o.OperatorAPIPatchMPIntegrationHandler)
+ if o.handlers["POST"] == nil {
+ o.handlers["POST"] = make(map[string]http.Handler)
+ }
+ o.handlers["POST"]["/mp-integration"] = operator_api.NewPostMPIntegration(o.context, o.OperatorAPIPostMPIntegrationHandler)
if o.handlers["PUT"] == nil {
o.handlers["PUT"] = make(map[string]http.Handler)
}
diff --git a/operatorapi/operations/operator_api/delete_m_p_integration.go b/operatorapi/operations/operator_api/delete_m_p_integration.go
new file mode 100644
index 0000000000..d0332e59c2
--- /dev/null
+++ b/operatorapi/operations/operator_api/delete_m_p_integration.go
@@ -0,0 +1,88 @@
+// Code generated by go-swagger; DO NOT EDIT.
+
+// This file is part of MinIO Console Server
+// Copyright (c) 2022 MinIO, Inc.
+//
+// This program is free software: you can redistribute it and/or modify
+// it under the terms of the GNU Affero General Public License as published by
+// the Free Software Foundation, either version 3 of the License, or
+// (at your option) any later version.
+//
+// This program is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+// GNU Affero General Public License for more details.
+//
+// You should have received a copy of the GNU Affero General Public License
+// along with this program. If not, see .
+//
+
+package operator_api
+
+// This file was generated by the swagger tool.
+// Editing this file might prove futile when you re-run the generate command
+
+import (
+ "net/http"
+
+ "github.com/go-openapi/runtime/middleware"
+
+ "github.com/minio/console/models"
+)
+
+// DeleteMPIntegrationHandlerFunc turns a function with the right signature into a delete m p integration handler
+type DeleteMPIntegrationHandlerFunc func(DeleteMPIntegrationParams, *models.Principal) middleware.Responder
+
+// Handle executing the request and returning a response
+func (fn DeleteMPIntegrationHandlerFunc) Handle(params DeleteMPIntegrationParams, principal *models.Principal) middleware.Responder {
+ return fn(params, principal)
+}
+
+// DeleteMPIntegrationHandler interface for that can handle valid delete m p integration params
+type DeleteMPIntegrationHandler interface {
+ Handle(DeleteMPIntegrationParams, *models.Principal) middleware.Responder
+}
+
+// NewDeleteMPIntegration creates a new http.Handler for the delete m p integration operation
+func NewDeleteMPIntegration(ctx *middleware.Context, handler DeleteMPIntegrationHandler) *DeleteMPIntegration {
+ return &DeleteMPIntegration{Context: ctx, Handler: handler}
+}
+
+/* DeleteMPIntegration swagger:route DELETE /mp-integration OperatorAPI deleteMPIntegration
+
+Delete email registered for marketplace integration
+
+*/
+type DeleteMPIntegration struct {
+ Context *middleware.Context
+ Handler DeleteMPIntegrationHandler
+}
+
+func (o *DeleteMPIntegration) ServeHTTP(rw http.ResponseWriter, r *http.Request) {
+ route, rCtx, _ := o.Context.RouteInfo(r)
+ if rCtx != nil {
+ *r = *rCtx
+ }
+ var Params = NewDeleteMPIntegrationParams()
+ uprinc, aCtx, err := o.Context.Authorize(r, route)
+ if err != nil {
+ o.Context.Respond(rw, r, route.Produces, route, err)
+ return
+ }
+ if aCtx != nil {
+ *r = *aCtx
+ }
+ var principal *models.Principal
+ if uprinc != nil {
+ principal = uprinc.(*models.Principal) // this is really a models.Principal, I promise
+ }
+
+ if err := o.Context.BindValidRequest(r, route, &Params); err != nil { // bind params
+ o.Context.Respond(rw, r, route.Produces, route, err)
+ return
+ }
+
+ res := o.Handler.Handle(Params, principal) // actually handle the request
+ o.Context.Respond(rw, r, route.Produces, route, res)
+
+}
diff --git a/operatorapi/operations/operator_api/delete_m_p_integration_parameters.go b/operatorapi/operations/operator_api/delete_m_p_integration_parameters.go
new file mode 100644
index 0000000000..1ba65e9cb5
--- /dev/null
+++ b/operatorapi/operations/operator_api/delete_m_p_integration_parameters.go
@@ -0,0 +1,63 @@
+// Code generated by go-swagger; DO NOT EDIT.
+
+// This file is part of MinIO Console Server
+// Copyright (c) 2022 MinIO, Inc.
+//
+// This program is free software: you can redistribute it and/or modify
+// it under the terms of the GNU Affero General Public License as published by
+// the Free Software Foundation, either version 3 of the License, or
+// (at your option) any later version.
+//
+// This program is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+// GNU Affero General Public License for more details.
+//
+// You should have received a copy of the GNU Affero General Public License
+// along with this program. If not, see .
+//
+
+package operator_api
+
+// This file was generated by the swagger tool.
+// Editing this file might prove futile when you re-run the swagger generate command
+
+import (
+ "net/http"
+
+ "github.com/go-openapi/errors"
+ "github.com/go-openapi/runtime/middleware"
+)
+
+// NewDeleteMPIntegrationParams creates a new DeleteMPIntegrationParams object
+//
+// There are no default values defined in the spec.
+func NewDeleteMPIntegrationParams() DeleteMPIntegrationParams {
+
+ return DeleteMPIntegrationParams{}
+}
+
+// DeleteMPIntegrationParams contains all the bound params for the delete m p integration operation
+// typically these are obtained from a http.Request
+//
+// swagger:parameters DeleteMPIntegration
+type DeleteMPIntegrationParams struct {
+
+ // HTTP Request Object
+ HTTPRequest *http.Request `json:"-"`
+}
+
+// BindRequest both binds and validates a request, it assumes that complex things implement a Validatable(strfmt.Registry) error interface
+// for simple values it will use straight method calls.
+//
+// To ensure default values, the struct must have been initialized with NewDeleteMPIntegrationParams() beforehand.
+func (o *DeleteMPIntegrationParams) BindRequest(r *http.Request, route *middleware.MatchedRoute) error {
+ var res []error
+
+ o.HTTPRequest = r
+
+ if len(res) > 0 {
+ return errors.CompositeValidationError(res...)
+ }
+ return nil
+}
diff --git a/operatorapi/operations/operator_api/delete_m_p_integration_responses.go b/operatorapi/operations/operator_api/delete_m_p_integration_responses.go
new file mode 100644
index 0000000000..e25a447f93
--- /dev/null
+++ b/operatorapi/operations/operator_api/delete_m_p_integration_responses.go
@@ -0,0 +1,113 @@
+// Code generated by go-swagger; DO NOT EDIT.
+
+// This file is part of MinIO Console Server
+// Copyright (c) 2022 MinIO, Inc.
+//
+// This program is free software: you can redistribute it and/or modify
+// it under the terms of the GNU Affero General Public License as published by
+// the Free Software Foundation, either version 3 of the License, or
+// (at your option) any later version.
+//
+// This program is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+// GNU Affero General Public License for more details.
+//
+// You should have received a copy of the GNU Affero General Public License
+// along with this program. If not, see .
+//
+
+package operator_api
+
+// This file was generated by the swagger tool.
+// Editing this file might prove futile when you re-run the swagger generate command
+
+import (
+ "net/http"
+
+ "github.com/go-openapi/runtime"
+
+ "github.com/minio/console/models"
+)
+
+// DeleteMPIntegrationNoContentCode is the HTTP code returned for type DeleteMPIntegrationNoContent
+const DeleteMPIntegrationNoContentCode int = 204
+
+/*DeleteMPIntegrationNoContent A successful response.
+
+swagger:response deleteMPIntegrationNoContent
+*/
+type DeleteMPIntegrationNoContent struct {
+}
+
+// NewDeleteMPIntegrationNoContent creates DeleteMPIntegrationNoContent with default headers values
+func NewDeleteMPIntegrationNoContent() *DeleteMPIntegrationNoContent {
+
+ return &DeleteMPIntegrationNoContent{}
+}
+
+// WriteResponse to the client
+func (o *DeleteMPIntegrationNoContent) WriteResponse(rw http.ResponseWriter, producer runtime.Producer) {
+
+ rw.Header().Del(runtime.HeaderContentType) //Remove Content-Type on empty responses
+
+ rw.WriteHeader(204)
+}
+
+/*DeleteMPIntegrationDefault Generic error response.
+
+swagger:response deleteMPIntegrationDefault
+*/
+type DeleteMPIntegrationDefault struct {
+ _statusCode int
+
+ /*
+ In: Body
+ */
+ Payload *models.Error `json:"body,omitempty"`
+}
+
+// NewDeleteMPIntegrationDefault creates DeleteMPIntegrationDefault with default headers values
+func NewDeleteMPIntegrationDefault(code int) *DeleteMPIntegrationDefault {
+ if code <= 0 {
+ code = 500
+ }
+
+ return &DeleteMPIntegrationDefault{
+ _statusCode: code,
+ }
+}
+
+// WithStatusCode adds the status to the delete m p integration default response
+func (o *DeleteMPIntegrationDefault) WithStatusCode(code int) *DeleteMPIntegrationDefault {
+ o._statusCode = code
+ return o
+}
+
+// SetStatusCode sets the status to the delete m p integration default response
+func (o *DeleteMPIntegrationDefault) SetStatusCode(code int) {
+ o._statusCode = code
+}
+
+// WithPayload adds the payload to the delete m p integration default response
+func (o *DeleteMPIntegrationDefault) WithPayload(payload *models.Error) *DeleteMPIntegrationDefault {
+ o.Payload = payload
+ return o
+}
+
+// SetPayload sets the payload to the delete m p integration default response
+func (o *DeleteMPIntegrationDefault) SetPayload(payload *models.Error) {
+ o.Payload = payload
+}
+
+// WriteResponse to the client
+func (o *DeleteMPIntegrationDefault) WriteResponse(rw http.ResponseWriter, producer runtime.Producer) {
+
+ rw.WriteHeader(o._statusCode)
+ if o.Payload != nil {
+ payload := o.Payload
+ if err := producer.Produce(rw, payload); err != nil {
+ panic(err) // let the recovery middleware deal with this
+ }
+ }
+}
diff --git a/operatorapi/operations/operator_api/delete_m_p_integration_urlbuilder.go b/operatorapi/operations/operator_api/delete_m_p_integration_urlbuilder.go
new file mode 100644
index 0000000000..8b5688b54a
--- /dev/null
+++ b/operatorapi/operations/operator_api/delete_m_p_integration_urlbuilder.go
@@ -0,0 +1,104 @@
+// Code generated by go-swagger; DO NOT EDIT.
+
+// This file is part of MinIO Console Server
+// Copyright (c) 2022 MinIO, Inc.
+//
+// This program is free software: you can redistribute it and/or modify
+// it under the terms of the GNU Affero General Public License as published by
+// the Free Software Foundation, either version 3 of the License, or
+// (at your option) any later version.
+//
+// This program is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+// GNU Affero General Public License for more details.
+//
+// You should have received a copy of the GNU Affero General Public License
+// along with this program. If not, see .
+//
+
+package operator_api
+
+// This file was generated by the swagger tool.
+// Editing this file might prove futile when you re-run the generate command
+
+import (
+ "errors"
+ "net/url"
+ golangswaggerpaths "path"
+)
+
+// DeleteMPIntegrationURL generates an URL for the delete m p integration operation
+type DeleteMPIntegrationURL struct {
+ _basePath string
+}
+
+// WithBasePath sets the base path for this url builder, only required when it's different from the
+// base path specified in the swagger spec.
+// When the value of the base path is an empty string
+func (o *DeleteMPIntegrationURL) WithBasePath(bp string) *DeleteMPIntegrationURL {
+ o.SetBasePath(bp)
+ return o
+}
+
+// SetBasePath sets the base path for this url builder, only required when it's different from the
+// base path specified in the swagger spec.
+// When the value of the base path is an empty string
+func (o *DeleteMPIntegrationURL) SetBasePath(bp string) {
+ o._basePath = bp
+}
+
+// Build a url path and query string
+func (o *DeleteMPIntegrationURL) Build() (*url.URL, error) {
+ var _result url.URL
+
+ var _path = "/mp-integration"
+
+ _basePath := o._basePath
+ if _basePath == "" {
+ _basePath = "/api/v1"
+ }
+ _result.Path = golangswaggerpaths.Join(_basePath, _path)
+
+ return &_result, nil
+}
+
+// Must is a helper function to panic when the url builder returns an error
+func (o *DeleteMPIntegrationURL) Must(u *url.URL, err error) *url.URL {
+ if err != nil {
+ panic(err)
+ }
+ if u == nil {
+ panic("url can't be nil")
+ }
+ return u
+}
+
+// String returns the string representation of the path with query string
+func (o *DeleteMPIntegrationURL) String() string {
+ return o.Must(o.Build()).String()
+}
+
+// BuildFull builds a full url with scheme, host, path and query string
+func (o *DeleteMPIntegrationURL) BuildFull(scheme, host string) (*url.URL, error) {
+ if scheme == "" {
+ return nil, errors.New("scheme is required for a full url on DeleteMPIntegrationURL")
+ }
+ if host == "" {
+ return nil, errors.New("host is required for a full url on DeleteMPIntegrationURL")
+ }
+
+ base, err := o.Build()
+ if err != nil {
+ return nil, err
+ }
+
+ base.Scheme = scheme
+ base.Host = host
+ return base, nil
+}
+
+// StringFull returns the string representation of a complete url
+func (o *DeleteMPIntegrationURL) StringFull(scheme, host string) string {
+ return o.Must(o.BuildFull(scheme, host)).String()
+}
diff --git a/operatorapi/operations/operator_api/get_m_p_integration.go b/operatorapi/operations/operator_api/get_m_p_integration.go
new file mode 100644
index 0000000000..b6b3d9d846
--- /dev/null
+++ b/operatorapi/operations/operator_api/get_m_p_integration.go
@@ -0,0 +1,88 @@
+// Code generated by go-swagger; DO NOT EDIT.
+
+// This file is part of MinIO Console Server
+// Copyright (c) 2022 MinIO, Inc.
+//
+// This program is free software: you can redistribute it and/or modify
+// it under the terms of the GNU Affero General Public License as published by
+// the Free Software Foundation, either version 3 of the License, or
+// (at your option) any later version.
+//
+// This program is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+// GNU Affero General Public License for more details.
+//
+// You should have received a copy of the GNU Affero General Public License
+// along with this program. If not, see .
+//
+
+package operator_api
+
+// This file was generated by the swagger tool.
+// Editing this file might prove futile when you re-run the generate command
+
+import (
+ "net/http"
+
+ "github.com/go-openapi/runtime/middleware"
+
+ "github.com/minio/console/models"
+)
+
+// GetMPIntegrationHandlerFunc turns a function with the right signature into a get m p integration handler
+type GetMPIntegrationHandlerFunc func(GetMPIntegrationParams, *models.Principal) middleware.Responder
+
+// Handle executing the request and returning a response
+func (fn GetMPIntegrationHandlerFunc) Handle(params GetMPIntegrationParams, principal *models.Principal) middleware.Responder {
+ return fn(params, principal)
+}
+
+// GetMPIntegrationHandler interface for that can handle valid get m p integration params
+type GetMPIntegrationHandler interface {
+ Handle(GetMPIntegrationParams, *models.Principal) middleware.Responder
+}
+
+// NewGetMPIntegration creates a new http.Handler for the get m p integration operation
+func NewGetMPIntegration(ctx *middleware.Context, handler GetMPIntegrationHandler) *GetMPIntegration {
+ return &GetMPIntegration{Context: ctx, Handler: handler}
+}
+
+/* GetMPIntegration swagger:route GET /mp-integration OperatorAPI getMPIntegration
+
+Returns email registered for marketplace integration
+
+*/
+type GetMPIntegration struct {
+ Context *middleware.Context
+ Handler GetMPIntegrationHandler
+}
+
+func (o *GetMPIntegration) ServeHTTP(rw http.ResponseWriter, r *http.Request) {
+ route, rCtx, _ := o.Context.RouteInfo(r)
+ if rCtx != nil {
+ *r = *rCtx
+ }
+ var Params = NewGetMPIntegrationParams()
+ uprinc, aCtx, err := o.Context.Authorize(r, route)
+ if err != nil {
+ o.Context.Respond(rw, r, route.Produces, route, err)
+ return
+ }
+ if aCtx != nil {
+ *r = *aCtx
+ }
+ var principal *models.Principal
+ if uprinc != nil {
+ principal = uprinc.(*models.Principal) // this is really a models.Principal, I promise
+ }
+
+ if err := o.Context.BindValidRequest(r, route, &Params); err != nil { // bind params
+ o.Context.Respond(rw, r, route.Produces, route, err)
+ return
+ }
+
+ res := o.Handler.Handle(Params, principal) // actually handle the request
+ o.Context.Respond(rw, r, route.Produces, route, res)
+
+}
diff --git a/operatorapi/operations/operator_api/get_m_p_integration_parameters.go b/operatorapi/operations/operator_api/get_m_p_integration_parameters.go
new file mode 100644
index 0000000000..c9c2f3fb8c
--- /dev/null
+++ b/operatorapi/operations/operator_api/get_m_p_integration_parameters.go
@@ -0,0 +1,63 @@
+// Code generated by go-swagger; DO NOT EDIT.
+
+// This file is part of MinIO Console Server
+// Copyright (c) 2022 MinIO, Inc.
+//
+// This program is free software: you can redistribute it and/or modify
+// it under the terms of the GNU Affero General Public License as published by
+// the Free Software Foundation, either version 3 of the License, or
+// (at your option) any later version.
+//
+// This program is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+// GNU Affero General Public License for more details.
+//
+// You should have received a copy of the GNU Affero General Public License
+// along with this program. If not, see .
+//
+
+package operator_api
+
+// This file was generated by the swagger tool.
+// Editing this file might prove futile when you re-run the swagger generate command
+
+import (
+ "net/http"
+
+ "github.com/go-openapi/errors"
+ "github.com/go-openapi/runtime/middleware"
+)
+
+// NewGetMPIntegrationParams creates a new GetMPIntegrationParams object
+//
+// There are no default values defined in the spec.
+func NewGetMPIntegrationParams() GetMPIntegrationParams {
+
+ return GetMPIntegrationParams{}
+}
+
+// GetMPIntegrationParams contains all the bound params for the get m p integration operation
+// typically these are obtained from a http.Request
+//
+// swagger:parameters GetMPIntegration
+type GetMPIntegrationParams struct {
+
+ // HTTP Request Object
+ HTTPRequest *http.Request `json:"-"`
+}
+
+// BindRequest both binds and validates a request, it assumes that complex things implement a Validatable(strfmt.Registry) error interface
+// for simple values it will use straight method calls.
+//
+// To ensure default values, the struct must have been initialized with NewGetMPIntegrationParams() beforehand.
+func (o *GetMPIntegrationParams) BindRequest(r *http.Request, route *middleware.MatchedRoute) error {
+ var res []error
+
+ o.HTTPRequest = r
+
+ if len(res) > 0 {
+ return errors.CompositeValidationError(res...)
+ }
+ return nil
+}
diff --git a/operatorapi/operations/operator_api/get_m_p_integration_responses.go b/operatorapi/operations/operator_api/get_m_p_integration_responses.go
new file mode 100644
index 0000000000..c20e6c8eef
--- /dev/null
+++ b/operatorapi/operations/operator_api/get_m_p_integration_responses.go
@@ -0,0 +1,133 @@
+// Code generated by go-swagger; DO NOT EDIT.
+
+// This file is part of MinIO Console Server
+// Copyright (c) 2022 MinIO, Inc.
+//
+// This program is free software: you can redistribute it and/or modify
+// it under the terms of the GNU Affero General Public License as published by
+// the Free Software Foundation, either version 3 of the License, or
+// (at your option) any later version.
+//
+// This program is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+// GNU Affero General Public License for more details.
+//
+// You should have received a copy of the GNU Affero General Public License
+// along with this program. If not, see .
+//
+
+package operator_api
+
+// This file was generated by the swagger tool.
+// Editing this file might prove futile when you re-run the swagger generate command
+
+import (
+ "net/http"
+
+ "github.com/go-openapi/runtime"
+
+ "github.com/minio/console/models"
+)
+
+// GetMPIntegrationOKCode is the HTTP code returned for type GetMPIntegrationOK
+const GetMPIntegrationOKCode int = 200
+
+/*GetMPIntegrationOK A successful response.
+
+swagger:response getMPIntegrationOK
+*/
+type GetMPIntegrationOK struct {
+
+ /*
+ In: Body
+ */
+ Payload *models.MpIntegration `json:"body,omitempty"`
+}
+
+// NewGetMPIntegrationOK creates GetMPIntegrationOK with default headers values
+func NewGetMPIntegrationOK() *GetMPIntegrationOK {
+
+ return &GetMPIntegrationOK{}
+}
+
+// WithPayload adds the payload to the get m p integration o k response
+func (o *GetMPIntegrationOK) WithPayload(payload *models.MpIntegration) *GetMPIntegrationOK {
+ o.Payload = payload
+ return o
+}
+
+// SetPayload sets the payload to the get m p integration o k response
+func (o *GetMPIntegrationOK) SetPayload(payload *models.MpIntegration) {
+ o.Payload = payload
+}
+
+// WriteResponse to the client
+func (o *GetMPIntegrationOK) WriteResponse(rw http.ResponseWriter, producer runtime.Producer) {
+
+ rw.WriteHeader(200)
+ if o.Payload != nil {
+ payload := o.Payload
+ if err := producer.Produce(rw, payload); err != nil {
+ panic(err) // let the recovery middleware deal with this
+ }
+ }
+}
+
+/*GetMPIntegrationDefault Generic error response.
+
+swagger:response getMPIntegrationDefault
+*/
+type GetMPIntegrationDefault struct {
+ _statusCode int
+
+ /*
+ In: Body
+ */
+ Payload *models.Error `json:"body,omitempty"`
+}
+
+// NewGetMPIntegrationDefault creates GetMPIntegrationDefault with default headers values
+func NewGetMPIntegrationDefault(code int) *GetMPIntegrationDefault {
+ if code <= 0 {
+ code = 500
+ }
+
+ return &GetMPIntegrationDefault{
+ _statusCode: code,
+ }
+}
+
+// WithStatusCode adds the status to the get m p integration default response
+func (o *GetMPIntegrationDefault) WithStatusCode(code int) *GetMPIntegrationDefault {
+ o._statusCode = code
+ return o
+}
+
+// SetStatusCode sets the status to the get m p integration default response
+func (o *GetMPIntegrationDefault) SetStatusCode(code int) {
+ o._statusCode = code
+}
+
+// WithPayload adds the payload to the get m p integration default response
+func (o *GetMPIntegrationDefault) WithPayload(payload *models.Error) *GetMPIntegrationDefault {
+ o.Payload = payload
+ return o
+}
+
+// SetPayload sets the payload to the get m p integration default response
+func (o *GetMPIntegrationDefault) SetPayload(payload *models.Error) {
+ o.Payload = payload
+}
+
+// WriteResponse to the client
+func (o *GetMPIntegrationDefault) WriteResponse(rw http.ResponseWriter, producer runtime.Producer) {
+
+ rw.WriteHeader(o._statusCode)
+ if o.Payload != nil {
+ payload := o.Payload
+ if err := producer.Produce(rw, payload); err != nil {
+ panic(err) // let the recovery middleware deal with this
+ }
+ }
+}
diff --git a/operatorapi/operations/operator_api/get_m_p_integration_urlbuilder.go b/operatorapi/operations/operator_api/get_m_p_integration_urlbuilder.go
new file mode 100644
index 0000000000..bfd09af711
--- /dev/null
+++ b/operatorapi/operations/operator_api/get_m_p_integration_urlbuilder.go
@@ -0,0 +1,104 @@
+// Code generated by go-swagger; DO NOT EDIT.
+
+// This file is part of MinIO Console Server
+// Copyright (c) 2022 MinIO, Inc.
+//
+// This program is free software: you can redistribute it and/or modify
+// it under the terms of the GNU Affero General Public License as published by
+// the Free Software Foundation, either version 3 of the License, or
+// (at your option) any later version.
+//
+// This program is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+// GNU Affero General Public License for more details.
+//
+// You should have received a copy of the GNU Affero General Public License
+// along with this program. If not, see .
+//
+
+package operator_api
+
+// This file was generated by the swagger tool.
+// Editing this file might prove futile when you re-run the generate command
+
+import (
+ "errors"
+ "net/url"
+ golangswaggerpaths "path"
+)
+
+// GetMPIntegrationURL generates an URL for the get m p integration operation
+type GetMPIntegrationURL struct {
+ _basePath string
+}
+
+// WithBasePath sets the base path for this url builder, only required when it's different from the
+// base path specified in the swagger spec.
+// When the value of the base path is an empty string
+func (o *GetMPIntegrationURL) WithBasePath(bp string) *GetMPIntegrationURL {
+ o.SetBasePath(bp)
+ return o
+}
+
+// SetBasePath sets the base path for this url builder, only required when it's different from the
+// base path specified in the swagger spec.
+// When the value of the base path is an empty string
+func (o *GetMPIntegrationURL) SetBasePath(bp string) {
+ o._basePath = bp
+}
+
+// Build a url path and query string
+func (o *GetMPIntegrationURL) Build() (*url.URL, error) {
+ var _result url.URL
+
+ var _path = "/mp-integration"
+
+ _basePath := o._basePath
+ if _basePath == "" {
+ _basePath = "/api/v1"
+ }
+ _result.Path = golangswaggerpaths.Join(_basePath, _path)
+
+ return &_result, nil
+}
+
+// Must is a helper function to panic when the url builder returns an error
+func (o *GetMPIntegrationURL) Must(u *url.URL, err error) *url.URL {
+ if err != nil {
+ panic(err)
+ }
+ if u == nil {
+ panic("url can't be nil")
+ }
+ return u
+}
+
+// String returns the string representation of the path with query string
+func (o *GetMPIntegrationURL) String() string {
+ return o.Must(o.Build()).String()
+}
+
+// BuildFull builds a full url with scheme, host, path and query string
+func (o *GetMPIntegrationURL) BuildFull(scheme, host string) (*url.URL, error) {
+ if scheme == "" {
+ return nil, errors.New("scheme is required for a full url on GetMPIntegrationURL")
+ }
+ if host == "" {
+ return nil, errors.New("host is required for a full url on GetMPIntegrationURL")
+ }
+
+ base, err := o.Build()
+ if err != nil {
+ return nil, err
+ }
+
+ base.Scheme = scheme
+ base.Host = host
+ return base, nil
+}
+
+// StringFull returns the string representation of a complete url
+func (o *GetMPIntegrationURL) StringFull(scheme, host string) string {
+ return o.Must(o.BuildFull(scheme, host)).String()
+}
diff --git a/operatorapi/operations/operator_api/patch_m_p_integration.go b/operatorapi/operations/operator_api/patch_m_p_integration.go
new file mode 100644
index 0000000000..a1aca74bab
--- /dev/null
+++ b/operatorapi/operations/operator_api/patch_m_p_integration.go
@@ -0,0 +1,88 @@
+// Code generated by go-swagger; DO NOT EDIT.
+
+// This file is part of MinIO Console Server
+// Copyright (c) 2022 MinIO, Inc.
+//
+// This program is free software: you can redistribute it and/or modify
+// it under the terms of the GNU Affero General Public License as published by
+// the Free Software Foundation, either version 3 of the License, or
+// (at your option) any later version.
+//
+// This program is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+// GNU Affero General Public License for more details.
+//
+// You should have received a copy of the GNU Affero General Public License
+// along with this program. If not, see .
+//
+
+package operator_api
+
+// This file was generated by the swagger tool.
+// Editing this file might prove futile when you re-run the generate command
+
+import (
+ "net/http"
+
+ "github.com/go-openapi/runtime/middleware"
+
+ "github.com/minio/console/models"
+)
+
+// PatchMPIntegrationHandlerFunc turns a function with the right signature into a patch m p integration handler
+type PatchMPIntegrationHandlerFunc func(PatchMPIntegrationParams, *models.Principal) middleware.Responder
+
+// Handle executing the request and returning a response
+func (fn PatchMPIntegrationHandlerFunc) Handle(params PatchMPIntegrationParams, principal *models.Principal) middleware.Responder {
+ return fn(params, principal)
+}
+
+// PatchMPIntegrationHandler interface for that can handle valid patch m p integration params
+type PatchMPIntegrationHandler interface {
+ Handle(PatchMPIntegrationParams, *models.Principal) middleware.Responder
+}
+
+// NewPatchMPIntegration creates a new http.Handler for the patch m p integration operation
+func NewPatchMPIntegration(ctx *middleware.Context, handler PatchMPIntegrationHandler) *PatchMPIntegration {
+ return &PatchMPIntegration{Context: ctx, Handler: handler}
+}
+
+/* PatchMPIntegration swagger:route PATCH /mp-integration OperatorAPI patchMPIntegration
+
+Update email registered for marketplace integration
+
+*/
+type PatchMPIntegration struct {
+ Context *middleware.Context
+ Handler PatchMPIntegrationHandler
+}
+
+func (o *PatchMPIntegration) ServeHTTP(rw http.ResponseWriter, r *http.Request) {
+ route, rCtx, _ := o.Context.RouteInfo(r)
+ if rCtx != nil {
+ *r = *rCtx
+ }
+ var Params = NewPatchMPIntegrationParams()
+ uprinc, aCtx, err := o.Context.Authorize(r, route)
+ if err != nil {
+ o.Context.Respond(rw, r, route.Produces, route, err)
+ return
+ }
+ if aCtx != nil {
+ *r = *aCtx
+ }
+ var principal *models.Principal
+ if uprinc != nil {
+ principal = uprinc.(*models.Principal) // this is really a models.Principal, I promise
+ }
+
+ if err := o.Context.BindValidRequest(r, route, &Params); err != nil { // bind params
+ o.Context.Respond(rw, r, route.Produces, route, err)
+ return
+ }
+
+ res := o.Handler.Handle(Params, principal) // actually handle the request
+ o.Context.Respond(rw, r, route.Produces, route, res)
+
+}
diff --git a/operatorapi/operations/operator_api/patch_m_p_integration_parameters.go b/operatorapi/operations/operator_api/patch_m_p_integration_parameters.go
new file mode 100644
index 0000000000..842ec28a2a
--- /dev/null
+++ b/operatorapi/operations/operator_api/patch_m_p_integration_parameters.go
@@ -0,0 +1,102 @@
+// Code generated by go-swagger; DO NOT EDIT.
+
+// This file is part of MinIO Console Server
+// Copyright (c) 2022 MinIO, Inc.
+//
+// This program is free software: you can redistribute it and/or modify
+// it under the terms of the GNU Affero General Public License as published by
+// the Free Software Foundation, either version 3 of the License, or
+// (at your option) any later version.
+//
+// This program is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+// GNU Affero General Public License for more details.
+//
+// You should have received a copy of the GNU Affero General Public License
+// along with this program. If not, see .
+//
+
+package operator_api
+
+// This file was generated by the swagger tool.
+// Editing this file might prove futile when you re-run the swagger generate command
+
+import (
+ "context"
+ "io"
+ "net/http"
+
+ "github.com/go-openapi/errors"
+ "github.com/go-openapi/runtime"
+ "github.com/go-openapi/runtime/middleware"
+ "github.com/go-openapi/validate"
+
+ "github.com/minio/console/models"
+)
+
+// NewPatchMPIntegrationParams creates a new PatchMPIntegrationParams object
+//
+// There are no default values defined in the spec.
+func NewPatchMPIntegrationParams() PatchMPIntegrationParams {
+
+ return PatchMPIntegrationParams{}
+}
+
+// PatchMPIntegrationParams contains all the bound params for the patch m p integration operation
+// typically these are obtained from a http.Request
+//
+// swagger:parameters PatchMPIntegration
+type PatchMPIntegrationParams struct {
+
+ // HTTP Request Object
+ HTTPRequest *http.Request `json:"-"`
+
+ /*
+ Required: true
+ In: body
+ */
+ Body *models.MpIntegration
+}
+
+// BindRequest both binds and validates a request, it assumes that complex things implement a Validatable(strfmt.Registry) error interface
+// for simple values it will use straight method calls.
+//
+// To ensure default values, the struct must have been initialized with NewPatchMPIntegrationParams() beforehand.
+func (o *PatchMPIntegrationParams) BindRequest(r *http.Request, route *middleware.MatchedRoute) error {
+ var res []error
+
+ o.HTTPRequest = r
+
+ if runtime.HasBody(r) {
+ defer r.Body.Close()
+ var body models.MpIntegration
+ if err := route.Consumer.Consume(r.Body, &body); err != nil {
+ if err == io.EOF {
+ res = append(res, errors.Required("body", "body", ""))
+ } else {
+ res = append(res, errors.NewParseError("body", "body", "", err))
+ }
+ } else {
+ // validate body object
+ if err := body.Validate(route.Formats); err != nil {
+ res = append(res, err)
+ }
+
+ ctx := validate.WithOperationRequest(context.Background())
+ if err := body.ContextValidate(ctx, route.Formats); err != nil {
+ res = append(res, err)
+ }
+
+ if len(res) == 0 {
+ o.Body = &body
+ }
+ }
+ } else {
+ res = append(res, errors.Required("body", "body", ""))
+ }
+ if len(res) > 0 {
+ return errors.CompositeValidationError(res...)
+ }
+ return nil
+}
diff --git a/operatorapi/operations/operator_api/patch_m_p_integration_responses.go b/operatorapi/operations/operator_api/patch_m_p_integration_responses.go
new file mode 100644
index 0000000000..00a0df5196
--- /dev/null
+++ b/operatorapi/operations/operator_api/patch_m_p_integration_responses.go
@@ -0,0 +1,113 @@
+// Code generated by go-swagger; DO NOT EDIT.
+
+// This file is part of MinIO Console Server
+// Copyright (c) 2022 MinIO, Inc.
+//
+// This program is free software: you can redistribute it and/or modify
+// it under the terms of the GNU Affero General Public License as published by
+// the Free Software Foundation, either version 3 of the License, or
+// (at your option) any later version.
+//
+// This program is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+// GNU Affero General Public License for more details.
+//
+// You should have received a copy of the GNU Affero General Public License
+// along with this program. If not, see .
+//
+
+package operator_api
+
+// This file was generated by the swagger tool.
+// Editing this file might prove futile when you re-run the swagger generate command
+
+import (
+ "net/http"
+
+ "github.com/go-openapi/runtime"
+
+ "github.com/minio/console/models"
+)
+
+// PatchMPIntegrationOKCode is the HTTP code returned for type PatchMPIntegrationOK
+const PatchMPIntegrationOKCode int = 200
+
+/*PatchMPIntegrationOK A successful response.
+
+swagger:response patchMPIntegrationOK
+*/
+type PatchMPIntegrationOK struct {
+}
+
+// NewPatchMPIntegrationOK creates PatchMPIntegrationOK with default headers values
+func NewPatchMPIntegrationOK() *PatchMPIntegrationOK {
+
+ return &PatchMPIntegrationOK{}
+}
+
+// WriteResponse to the client
+func (o *PatchMPIntegrationOK) WriteResponse(rw http.ResponseWriter, producer runtime.Producer) {
+
+ rw.Header().Del(runtime.HeaderContentType) //Remove Content-Type on empty responses
+
+ rw.WriteHeader(200)
+}
+
+/*PatchMPIntegrationDefault Generic error response.
+
+swagger:response patchMPIntegrationDefault
+*/
+type PatchMPIntegrationDefault struct {
+ _statusCode int
+
+ /*
+ In: Body
+ */
+ Payload *models.Error `json:"body,omitempty"`
+}
+
+// NewPatchMPIntegrationDefault creates PatchMPIntegrationDefault with default headers values
+func NewPatchMPIntegrationDefault(code int) *PatchMPIntegrationDefault {
+ if code <= 0 {
+ code = 500
+ }
+
+ return &PatchMPIntegrationDefault{
+ _statusCode: code,
+ }
+}
+
+// WithStatusCode adds the status to the patch m p integration default response
+func (o *PatchMPIntegrationDefault) WithStatusCode(code int) *PatchMPIntegrationDefault {
+ o._statusCode = code
+ return o
+}
+
+// SetStatusCode sets the status to the patch m p integration default response
+func (o *PatchMPIntegrationDefault) SetStatusCode(code int) {
+ o._statusCode = code
+}
+
+// WithPayload adds the payload to the patch m p integration default response
+func (o *PatchMPIntegrationDefault) WithPayload(payload *models.Error) *PatchMPIntegrationDefault {
+ o.Payload = payload
+ return o
+}
+
+// SetPayload sets the payload to the patch m p integration default response
+func (o *PatchMPIntegrationDefault) SetPayload(payload *models.Error) {
+ o.Payload = payload
+}
+
+// WriteResponse to the client
+func (o *PatchMPIntegrationDefault) WriteResponse(rw http.ResponseWriter, producer runtime.Producer) {
+
+ rw.WriteHeader(o._statusCode)
+ if o.Payload != nil {
+ payload := o.Payload
+ if err := producer.Produce(rw, payload); err != nil {
+ panic(err) // let the recovery middleware deal with this
+ }
+ }
+}
diff --git a/operatorapi/operations/operator_api/patch_m_p_integration_urlbuilder.go b/operatorapi/operations/operator_api/patch_m_p_integration_urlbuilder.go
new file mode 100644
index 0000000000..202035fe1e
--- /dev/null
+++ b/operatorapi/operations/operator_api/patch_m_p_integration_urlbuilder.go
@@ -0,0 +1,104 @@
+// Code generated by go-swagger; DO NOT EDIT.
+
+// This file is part of MinIO Console Server
+// Copyright (c) 2022 MinIO, Inc.
+//
+// This program is free software: you can redistribute it and/or modify
+// it under the terms of the GNU Affero General Public License as published by
+// the Free Software Foundation, either version 3 of the License, or
+// (at your option) any later version.
+//
+// This program is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+// GNU Affero General Public License for more details.
+//
+// You should have received a copy of the GNU Affero General Public License
+// along with this program. If not, see .
+//
+
+package operator_api
+
+// This file was generated by the swagger tool.
+// Editing this file might prove futile when you re-run the generate command
+
+import (
+ "errors"
+ "net/url"
+ golangswaggerpaths "path"
+)
+
+// PatchMPIntegrationURL generates an URL for the patch m p integration operation
+type PatchMPIntegrationURL struct {
+ _basePath string
+}
+
+// WithBasePath sets the base path for this url builder, only required when it's different from the
+// base path specified in the swagger spec.
+// When the value of the base path is an empty string
+func (o *PatchMPIntegrationURL) WithBasePath(bp string) *PatchMPIntegrationURL {
+ o.SetBasePath(bp)
+ return o
+}
+
+// SetBasePath sets the base path for this url builder, only required when it's different from the
+// base path specified in the swagger spec.
+// When the value of the base path is an empty string
+func (o *PatchMPIntegrationURL) SetBasePath(bp string) {
+ o._basePath = bp
+}
+
+// Build a url path and query string
+func (o *PatchMPIntegrationURL) Build() (*url.URL, error) {
+ var _result url.URL
+
+ var _path = "/mp-integration"
+
+ _basePath := o._basePath
+ if _basePath == "" {
+ _basePath = "/api/v1"
+ }
+ _result.Path = golangswaggerpaths.Join(_basePath, _path)
+
+ return &_result, nil
+}
+
+// Must is a helper function to panic when the url builder returns an error
+func (o *PatchMPIntegrationURL) Must(u *url.URL, err error) *url.URL {
+ if err != nil {
+ panic(err)
+ }
+ if u == nil {
+ panic("url can't be nil")
+ }
+ return u
+}
+
+// String returns the string representation of the path with query string
+func (o *PatchMPIntegrationURL) String() string {
+ return o.Must(o.Build()).String()
+}
+
+// BuildFull builds a full url with scheme, host, path and query string
+func (o *PatchMPIntegrationURL) BuildFull(scheme, host string) (*url.URL, error) {
+ if scheme == "" {
+ return nil, errors.New("scheme is required for a full url on PatchMPIntegrationURL")
+ }
+ if host == "" {
+ return nil, errors.New("host is required for a full url on PatchMPIntegrationURL")
+ }
+
+ base, err := o.Build()
+ if err != nil {
+ return nil, err
+ }
+
+ base.Scheme = scheme
+ base.Host = host
+ return base, nil
+}
+
+// StringFull returns the string representation of a complete url
+func (o *PatchMPIntegrationURL) StringFull(scheme, host string) string {
+ return o.Must(o.BuildFull(scheme, host)).String()
+}
diff --git a/operatorapi/operations/operator_api/post_m_p_integration.go b/operatorapi/operations/operator_api/post_m_p_integration.go
new file mode 100644
index 0000000000..433b6e5028
--- /dev/null
+++ b/operatorapi/operations/operator_api/post_m_p_integration.go
@@ -0,0 +1,88 @@
+// Code generated by go-swagger; DO NOT EDIT.
+
+// This file is part of MinIO Console Server
+// Copyright (c) 2022 MinIO, Inc.
+//
+// This program is free software: you can redistribute it and/or modify
+// it under the terms of the GNU Affero General Public License as published by
+// the Free Software Foundation, either version 3 of the License, or
+// (at your option) any later version.
+//
+// This program is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+// GNU Affero General Public License for more details.
+//
+// You should have received a copy of the GNU Affero General Public License
+// along with this program. If not, see .
+//
+
+package operator_api
+
+// This file was generated by the swagger tool.
+// Editing this file might prove futile when you re-run the generate command
+
+import (
+ "net/http"
+
+ "github.com/go-openapi/runtime/middleware"
+
+ "github.com/minio/console/models"
+)
+
+// PostMPIntegrationHandlerFunc turns a function with the right signature into a post m p integration handler
+type PostMPIntegrationHandlerFunc func(PostMPIntegrationParams, *models.Principal) middleware.Responder
+
+// Handle executing the request and returning a response
+func (fn PostMPIntegrationHandlerFunc) Handle(params PostMPIntegrationParams, principal *models.Principal) middleware.Responder {
+ return fn(params, principal)
+}
+
+// PostMPIntegrationHandler interface for that can handle valid post m p integration params
+type PostMPIntegrationHandler interface {
+ Handle(PostMPIntegrationParams, *models.Principal) middleware.Responder
+}
+
+// NewPostMPIntegration creates a new http.Handler for the post m p integration operation
+func NewPostMPIntegration(ctx *middleware.Context, handler PostMPIntegrationHandler) *PostMPIntegration {
+ return &PostMPIntegration{Context: ctx, Handler: handler}
+}
+
+/* PostMPIntegration swagger:route POST /mp-integration OperatorAPI postMPIntegration
+
+Set email to register for marketplace integration
+
+*/
+type PostMPIntegration struct {
+ Context *middleware.Context
+ Handler PostMPIntegrationHandler
+}
+
+func (o *PostMPIntegration) ServeHTTP(rw http.ResponseWriter, r *http.Request) {
+ route, rCtx, _ := o.Context.RouteInfo(r)
+ if rCtx != nil {
+ *r = *rCtx
+ }
+ var Params = NewPostMPIntegrationParams()
+ uprinc, aCtx, err := o.Context.Authorize(r, route)
+ if err != nil {
+ o.Context.Respond(rw, r, route.Produces, route, err)
+ return
+ }
+ if aCtx != nil {
+ *r = *aCtx
+ }
+ var principal *models.Principal
+ if uprinc != nil {
+ principal = uprinc.(*models.Principal) // this is really a models.Principal, I promise
+ }
+
+ if err := o.Context.BindValidRequest(r, route, &Params); err != nil { // bind params
+ o.Context.Respond(rw, r, route.Produces, route, err)
+ return
+ }
+
+ res := o.Handler.Handle(Params, principal) // actually handle the request
+ o.Context.Respond(rw, r, route.Produces, route, res)
+
+}
diff --git a/operatorapi/operations/operator_api/post_m_p_integration_parameters.go b/operatorapi/operations/operator_api/post_m_p_integration_parameters.go
new file mode 100644
index 0000000000..6c07f83017
--- /dev/null
+++ b/operatorapi/operations/operator_api/post_m_p_integration_parameters.go
@@ -0,0 +1,102 @@
+// Code generated by go-swagger; DO NOT EDIT.
+
+// This file is part of MinIO Console Server
+// Copyright (c) 2022 MinIO, Inc.
+//
+// This program is free software: you can redistribute it and/or modify
+// it under the terms of the GNU Affero General Public License as published by
+// the Free Software Foundation, either version 3 of the License, or
+// (at your option) any later version.
+//
+// This program is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+// GNU Affero General Public License for more details.
+//
+// You should have received a copy of the GNU Affero General Public License
+// along with this program. If not, see .
+//
+
+package operator_api
+
+// This file was generated by the swagger tool.
+// Editing this file might prove futile when you re-run the swagger generate command
+
+import (
+ "context"
+ "io"
+ "net/http"
+
+ "github.com/go-openapi/errors"
+ "github.com/go-openapi/runtime"
+ "github.com/go-openapi/runtime/middleware"
+ "github.com/go-openapi/validate"
+
+ "github.com/minio/console/models"
+)
+
+// NewPostMPIntegrationParams creates a new PostMPIntegrationParams object
+//
+// There are no default values defined in the spec.
+func NewPostMPIntegrationParams() PostMPIntegrationParams {
+
+ return PostMPIntegrationParams{}
+}
+
+// PostMPIntegrationParams contains all the bound params for the post m p integration operation
+// typically these are obtained from a http.Request
+//
+// swagger:parameters PostMPIntegration
+type PostMPIntegrationParams struct {
+
+ // HTTP Request Object
+ HTTPRequest *http.Request `json:"-"`
+
+ /*
+ Required: true
+ In: body
+ */
+ Body *models.MpIntegration
+}
+
+// BindRequest both binds and validates a request, it assumes that complex things implement a Validatable(strfmt.Registry) error interface
+// for simple values it will use straight method calls.
+//
+// To ensure default values, the struct must have been initialized with NewPostMPIntegrationParams() beforehand.
+func (o *PostMPIntegrationParams) BindRequest(r *http.Request, route *middleware.MatchedRoute) error {
+ var res []error
+
+ o.HTTPRequest = r
+
+ if runtime.HasBody(r) {
+ defer r.Body.Close()
+ var body models.MpIntegration
+ if err := route.Consumer.Consume(r.Body, &body); err != nil {
+ if err == io.EOF {
+ res = append(res, errors.Required("body", "body", ""))
+ } else {
+ res = append(res, errors.NewParseError("body", "body", "", err))
+ }
+ } else {
+ // validate body object
+ if err := body.Validate(route.Formats); err != nil {
+ res = append(res, err)
+ }
+
+ ctx := validate.WithOperationRequest(context.Background())
+ if err := body.ContextValidate(ctx, route.Formats); err != nil {
+ res = append(res, err)
+ }
+
+ if len(res) == 0 {
+ o.Body = &body
+ }
+ }
+ } else {
+ res = append(res, errors.Required("body", "body", ""))
+ }
+ if len(res) > 0 {
+ return errors.CompositeValidationError(res...)
+ }
+ return nil
+}
diff --git a/operatorapi/operations/operator_api/post_m_p_integration_responses.go b/operatorapi/operations/operator_api/post_m_p_integration_responses.go
new file mode 100644
index 0000000000..308e28d0e3
--- /dev/null
+++ b/operatorapi/operations/operator_api/post_m_p_integration_responses.go
@@ -0,0 +1,113 @@
+// Code generated by go-swagger; DO NOT EDIT.
+
+// This file is part of MinIO Console Server
+// Copyright (c) 2022 MinIO, Inc.
+//
+// This program is free software: you can redistribute it and/or modify
+// it under the terms of the GNU Affero General Public License as published by
+// the Free Software Foundation, either version 3 of the License, or
+// (at your option) any later version.
+//
+// This program is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+// GNU Affero General Public License for more details.
+//
+// You should have received a copy of the GNU Affero General Public License
+// along with this program. If not, see .
+//
+
+package operator_api
+
+// This file was generated by the swagger tool.
+// Editing this file might prove futile when you re-run the swagger generate command
+
+import (
+ "net/http"
+
+ "github.com/go-openapi/runtime"
+
+ "github.com/minio/console/models"
+)
+
+// PostMPIntegrationCreatedCode is the HTTP code returned for type PostMPIntegrationCreated
+const PostMPIntegrationCreatedCode int = 201
+
+/*PostMPIntegrationCreated A successful response.
+
+swagger:response postMPIntegrationCreated
+*/
+type PostMPIntegrationCreated struct {
+}
+
+// NewPostMPIntegrationCreated creates PostMPIntegrationCreated with default headers values
+func NewPostMPIntegrationCreated() *PostMPIntegrationCreated {
+
+ return &PostMPIntegrationCreated{}
+}
+
+// WriteResponse to the client
+func (o *PostMPIntegrationCreated) WriteResponse(rw http.ResponseWriter, producer runtime.Producer) {
+
+ rw.Header().Del(runtime.HeaderContentType) //Remove Content-Type on empty responses
+
+ rw.WriteHeader(201)
+}
+
+/*PostMPIntegrationDefault Generic error response.
+
+swagger:response postMPIntegrationDefault
+*/
+type PostMPIntegrationDefault struct {
+ _statusCode int
+
+ /*
+ In: Body
+ */
+ Payload *models.Error `json:"body,omitempty"`
+}
+
+// NewPostMPIntegrationDefault creates PostMPIntegrationDefault with default headers values
+func NewPostMPIntegrationDefault(code int) *PostMPIntegrationDefault {
+ if code <= 0 {
+ code = 500
+ }
+
+ return &PostMPIntegrationDefault{
+ _statusCode: code,
+ }
+}
+
+// WithStatusCode adds the status to the post m p integration default response
+func (o *PostMPIntegrationDefault) WithStatusCode(code int) *PostMPIntegrationDefault {
+ o._statusCode = code
+ return o
+}
+
+// SetStatusCode sets the status to the post m p integration default response
+func (o *PostMPIntegrationDefault) SetStatusCode(code int) {
+ o._statusCode = code
+}
+
+// WithPayload adds the payload to the post m p integration default response
+func (o *PostMPIntegrationDefault) WithPayload(payload *models.Error) *PostMPIntegrationDefault {
+ o.Payload = payload
+ return o
+}
+
+// SetPayload sets the payload to the post m p integration default response
+func (o *PostMPIntegrationDefault) SetPayload(payload *models.Error) {
+ o.Payload = payload
+}
+
+// WriteResponse to the client
+func (o *PostMPIntegrationDefault) WriteResponse(rw http.ResponseWriter, producer runtime.Producer) {
+
+ rw.WriteHeader(o._statusCode)
+ if o.Payload != nil {
+ payload := o.Payload
+ if err := producer.Produce(rw, payload); err != nil {
+ panic(err) // let the recovery middleware deal with this
+ }
+ }
+}
diff --git a/operatorapi/operations/operator_api/post_m_p_integration_urlbuilder.go b/operatorapi/operations/operator_api/post_m_p_integration_urlbuilder.go
new file mode 100644
index 0000000000..4ee5ecfe5e
--- /dev/null
+++ b/operatorapi/operations/operator_api/post_m_p_integration_urlbuilder.go
@@ -0,0 +1,104 @@
+// Code generated by go-swagger; DO NOT EDIT.
+
+// This file is part of MinIO Console Server
+// Copyright (c) 2022 MinIO, Inc.
+//
+// This program is free software: you can redistribute it and/or modify
+// it under the terms of the GNU Affero General Public License as published by
+// the Free Software Foundation, either version 3 of the License, or
+// (at your option) any later version.
+//
+// This program is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+// GNU Affero General Public License for more details.
+//
+// You should have received a copy of the GNU Affero General Public License
+// along with this program. If not, see .
+//
+
+package operator_api
+
+// This file was generated by the swagger tool.
+// Editing this file might prove futile when you re-run the generate command
+
+import (
+ "errors"
+ "net/url"
+ golangswaggerpaths "path"
+)
+
+// PostMPIntegrationURL generates an URL for the post m p integration operation
+type PostMPIntegrationURL struct {
+ _basePath string
+}
+
+// WithBasePath sets the base path for this url builder, only required when it's different from the
+// base path specified in the swagger spec.
+// When the value of the base path is an empty string
+func (o *PostMPIntegrationURL) WithBasePath(bp string) *PostMPIntegrationURL {
+ o.SetBasePath(bp)
+ return o
+}
+
+// SetBasePath sets the base path for this url builder, only required when it's different from the
+// base path specified in the swagger spec.
+// When the value of the base path is an empty string
+func (o *PostMPIntegrationURL) SetBasePath(bp string) {
+ o._basePath = bp
+}
+
+// Build a url path and query string
+func (o *PostMPIntegrationURL) Build() (*url.URL, error) {
+ var _result url.URL
+
+ var _path = "/mp-integration"
+
+ _basePath := o._basePath
+ if _basePath == "" {
+ _basePath = "/api/v1"
+ }
+ _result.Path = golangswaggerpaths.Join(_basePath, _path)
+
+ return &_result, nil
+}
+
+// Must is a helper function to panic when the url builder returns an error
+func (o *PostMPIntegrationURL) Must(u *url.URL, err error) *url.URL {
+ if err != nil {
+ panic(err)
+ }
+ if u == nil {
+ panic("url can't be nil")
+ }
+ return u
+}
+
+// String returns the string representation of the path with query string
+func (o *PostMPIntegrationURL) String() string {
+ return o.Must(o.Build()).String()
+}
+
+// BuildFull builds a full url with scheme, host, path and query string
+func (o *PostMPIntegrationURL) BuildFull(scheme, host string) (*url.URL, error) {
+ if scheme == "" {
+ return nil, errors.New("scheme is required for a full url on PostMPIntegrationURL")
+ }
+ if host == "" {
+ return nil, errors.New("host is required for a full url on PostMPIntegrationURL")
+ }
+
+ base, err := o.Build()
+ if err != nil {
+ return nil, err
+ }
+
+ base.Scheme = scheme
+ base.Host = host
+ return base, nil
+}
+
+// StringFull returns the string representation of a complete url
+func (o *PostMPIntegrationURL) StringFull(scheme, host string) string {
+ return o.Must(o.BuildFull(scheme, host)).String()
+}
diff --git a/restapi/errors.go b/restapi/errors.go
index 50f5ab07b4..98765f28bb 100644
--- a/restapi/errors.go
+++ b/restapi/errors.go
@@ -30,6 +30,7 @@ var (
ErrDefault = errors.New("an error occurred, please try again")
ErrInvalidLogin = errors.New("invalid Login")
ErrForbidden = errors.New("403 Forbidden")
+ ErrBadRequest = errors.New("400 Bad Request")
ErrFileTooLarge = errors.New("413 File too Large")
ErrInvalidSession = errors.New("invalid session")
ErrNotFound = errors.New("not found")
@@ -81,6 +82,9 @@ func ErrorWithContext(ctx context.Context, err ...interface{}) *models.Error {
if err1.Error() == ErrForbidden.Error() {
errorCode = 403
}
+ if err1.Error() == ErrBadRequest.Error() {
+ errorCode = 400
+ }
if err1 == ErrNotFound {
errorCode = 404
errorMessage = ErrNotFound.Error()
diff --git a/swagger-operator.yml b/swagger-operator.yml
index c7eaf5cb34..6504752581 100644
--- a/swagger-operator.yml
+++ b/swagger-operator.yml
@@ -1232,6 +1232,70 @@ paths:
tags:
- OperatorAPI
+ /mp-integration:
+ get:
+ summary: Returns email registered for marketplace integration
+ operationId: GetMPIntegration
+ responses:
+ 200:
+ description: A successful response.
+ schema:
+ $ref: "#/definitions/mpIntegration"
+ default:
+ description: Generic error response.
+ schema:
+ $ref: "#/definitions/error"
+ tags:
+ - OperatorAPI
+ delete:
+ summary: Delete email registered for marketplace integration
+ operationId: DeleteMPIntegration
+ responses:
+ 204:
+ description: A successful response.
+ default:
+ description: Generic error response.
+ schema:
+ $ref: "#/definitions/error"
+ tags:
+ - OperatorAPI
+ post:
+ summary: Set email to register for marketplace integration
+ operationId: PostMPIntegration
+ parameters:
+ - name: body
+ in: body
+ required: true
+ schema:
+ $ref: "#/definitions/mpIntegration"
+ responses:
+ 201:
+ description: A successful response.
+ default:
+ description: Generic error response.
+ schema:
+ $ref: "#/definitions/error"
+ tags:
+ - OperatorAPI
+ patch:
+ summary: Update email registered for marketplace integration
+ operationId: PatchMPIntegration
+ parameters:
+ - name: body
+ in: body
+ required: true
+ schema:
+ $ref: "#/definitions/mpIntegration"
+ responses:
+ 200:
+ description: A successful response.
+ default:
+ description: Generic error response.
+ schema:
+ $ref: "#/definitions/error"
+ tags:
+ - OperatorAPI
+
/namespaces/{namespace}/tenants/{tenant}/pvc/{PVCName}:
delete:
summary: Delete PVC
@@ -3346,3 +3410,10 @@ definitions:
properties:
domains:
$ref: "#/definitions/domainsConfiguration"
+
+ mpIntegration:
+ type: object
+ properties:
+ email:
+ type: string
+