From e2e8cbe46ca753ff909725279318198b2766c7b3 Mon Sep 17 00:00:00 2001 From: Daniel Valdivia Date: Tue, 4 Aug 2020 22:32:41 -0700 Subject: [PATCH] Erasure Coding Parity (#231) --- models/create_tenant_request.go | 3 +++ restapi/admin_tenants.go | 14 +++++++++++++- restapi/embedded_spec.go | 6 ++++++ swagger.yml | 2 ++ 4 files changed, 24 insertions(+), 1 deletion(-) diff --git a/models/create_tenant_request.go b/models/create_tenant_request.go index a7a6bd6d8..17767a538 100644 --- a/models/create_tenant_request.go +++ b/models/create_tenant_request.go @@ -51,6 +51,9 @@ type CreateTenantRequest struct { // encryption Encryption *EncryptionConfiguration `json:"encryption,omitempty"` + // erasure coding parity + ErasureCodingParity int64 `json:"erasureCodingParity,omitempty"` + // idp Idp *IdpConfiguration `json:"idp,omitempty"` diff --git a/restapi/admin_tenants.go b/restapi/admin_tenants.go index 7a18bef9d..35d28a2e8 100644 --- a/restapi/admin_tenants.go +++ b/restapi/admin_tenants.go @@ -399,6 +399,18 @@ func getTenantCreatedResponse(session *models.Principal, params admin_api.Create return nil, err } + var envrionmentVariables []corev1.EnvVar + // Check the Erasure Coding Parity for validity and pass it to Tenant + if tenantReq.ErasureCodingParity > 0 { + if tenantReq.ErasureCodingParity < 2 && tenantReq.ErasureCodingParity > 8 { + return nil, errors.New("invalid Erasure Coding Value") + } + envrionmentVariables = append(envrionmentVariables, corev1.EnvVar{ + Name: "MINIO_STORAGE_CLASS_STANDARD", + Value: fmt.Sprintf("%d", tenantReq.ErasureCodingParity), + }) + } + //Construct a MinIO Instance with everything we are getting from parameters minInst := operator.Tenant{ ObjectMeta: metav1.ObjectMeta{ @@ -410,7 +422,7 @@ func getTenantCreatedResponse(session *models.Principal, params admin_api.Create CredsSecret: &corev1.LocalObjectReference{ Name: secretName, }, - Env: []corev1.EnvVar{}, + Env: envrionmentVariables, }, } idpEnabled := false diff --git a/restapi/embedded_spec.go b/restapi/embedded_spec.go index 8aa1c22a7..c4cd4a3bd 100644 --- a/restapi/embedded_spec.go +++ b/restapi/embedded_spec.go @@ -2036,6 +2036,9 @@ func init() { "type": "object", "$ref": "#/definitions/encryptionConfiguration" }, + "erasureCodingParity": { + "type": "integer" + }, "idp": { "type": "object", "$ref": "#/definitions/idpConfiguration" @@ -5952,6 +5955,9 @@ func init() { "type": "object", "$ref": "#/definitions/encryptionConfiguration" }, + "erasureCodingParity": { + "type": "integer" + }, "idp": { "type": "object", "$ref": "#/definitions/idpConfiguration" diff --git a/swagger.yml b/swagger.yml index 29a51a7ab..8c02cec10 100644 --- a/swagger.yml +++ b/swagger.yml @@ -1827,6 +1827,8 @@ definitions: default: true namespace: type: string + erasureCodingParity: + type: integer annotations: type: object additionalProperties: