diff --git a/models/tenant_logs.go b/models/tenant_logs.go
index f51caace8..02e6072e2 100644
--- a/models/tenant_logs.go
+++ b/models/tenant_logs.go
@@ -45,6 +45,9 @@ type TenantLogs struct {
// db image
DbImage string `json:"dbImage,omitempty"`
+ // db init image
+ DbInitImage string `json:"dbInitImage,omitempty"`
+
// db labels
DbLabels []*Label `json:"dbLabels"`
diff --git a/operatorapi/embedded_spec.go b/operatorapi/embedded_spec.go
index 0be7e5f5c..166da781a 100644
--- a/operatorapi/embedded_spec.go
+++ b/operatorapi/embedded_spec.go
@@ -4237,6 +4237,9 @@ func init() {
"dbImage": {
"type": "string"
},
+ "dbInitImage": {
+ "type": "string"
+ },
"dbLabels": {
"type": "array",
"items": {
@@ -9642,6 +9645,9 @@ func init() {
"dbImage": {
"type": "string"
},
+ "dbInitImage": {
+ "type": "string"
+ },
"dbLabels": {
"type": "array",
"items": {
diff --git a/operatorapi/tenants.go b/operatorapi/tenants.go
index 61d7813fa..41a017bdf 100644
--- a/operatorapi/tenants.go
+++ b/operatorapi/tenants.go
@@ -1376,10 +1376,9 @@ func getTenantLogsResponse(session *models.Principal, params operator_api.GetTen
return nil, restapi.ErrorWithContext(ctx, err, restapi.ErrUnableToGetTenantLogs)
}
if minTenant.Spec.Log == nil {
- retval := &models.TenantLogs{
+ return &models.TenantLogs{
Disabled: true,
- }
- return retval, nil
+ }, nil
}
annotations := []*models.Annotation{}
for k, v := range minTenant.Spec.Log.Annotations {
@@ -1415,7 +1414,7 @@ func getTenantLogsResponse(session *models.Principal, params operator_api.GetTen
minTenant.Spec.Log.Audit = &miniov2.AuditConfig{DiskCapacityGB: swag.Int(0)}
}
- retval := &models.TenantLogs{
+ tenantLoggingConfiguration := &models.TenantLogs{
Image: minTenant.Spec.Log.Image,
DiskCapacityGB: fmt.Sprintf("%d", *minTenant.Spec.Log.Audit.DiskCapacityGB),
Annotations: annotations,
@@ -1423,6 +1422,7 @@ func getTenantLogsResponse(session *models.Principal, params operator_api.GetTen
NodeSelector: nodeSelector,
ServiceAccountName: minTenant.Spec.Log.ServiceAccountName,
DbImage: minTenant.Spec.Log.Db.Image,
+ DbInitImage: minTenant.Spec.Log.Db.InitImage,
DbAnnotations: dbAnnotations,
DbLabels: dbLabels,
DbNodeSelector: dbNodeSelector,
@@ -1434,6 +1434,7 @@ func getTenantLogsResponse(session *models.Principal, params operator_api.GetTen
var requestedMem string
var requestedDBCPU string
var requestedDBMem string
+
if minTenant.Spec.Log.Resources.Requests != nil {
requestedCPUQ := minTenant.Spec.Log.Resources.Requests["cpu"]
requestedCPU = strconv.FormatInt(requestedCPUQ.Value(), 10)
@@ -1445,12 +1446,12 @@ func getTenantLogsResponse(session *models.Principal, params operator_api.GetTen
requestedDBMemQ := minTenant.Spec.Log.Db.Resources.Requests["memory"]
requestedDBMem = strconv.FormatInt(requestedDBMemQ.Value(), 10)
- retval.LogCPURequest = requestedCPU
- retval.LogMemRequest = requestedMem
- retval.LogDBCPURequest = requestedDBCPU
- retval.LogDBMemRequest = requestedDBMem
+ tenantLoggingConfiguration.LogCPURequest = requestedCPU
+ tenantLoggingConfiguration.LogMemRequest = requestedMem
+ tenantLoggingConfiguration.LogDBCPURequest = requestedDBCPU
+ tenantLoggingConfiguration.LogDBMemRequest = requestedDBMem
}
- return retval, nil
+ return tenantLoggingConfiguration, nil
}
// setTenantLogsResponse returns the logs of a tenant
diff --git a/portal-ui/src/screens/Console/Tenants/AddTenant/Steps/Images.tsx b/portal-ui/src/screens/Console/Tenants/AddTenant/Steps/Images.tsx
index 7e86c3e4e..1d4e37d47 100644
--- a/portal-ui/src/screens/Console/Tenants/AddTenant/Steps/Images.tsx
+++ b/portal-ui/src/screens/Console/Tenants/AddTenant/Steps/Images.tsx
@@ -325,7 +325,7 @@ const Images = ({ classes }: IImagesProps) => {
label="MinIO"
value={imageName}
error={validationErrors["image"] || ""}
- placeholder="E.g. minio/minio:RELEASE.2022-02-26T02-54-46Z"
+ placeholder="minio/minio:RELEASE.2022-02-26T02-54-46Z"
/>
@@ -340,7 +340,7 @@ const Images = ({ classes }: IImagesProps) => {
label="KES"
value={kesImage}
error={validationErrors["kesImage"] || ""}
- placeholder="E.g. minio/kes:v0.17.6"
+ placeholder="minio/kes:v0.17.6"
/>
@@ -357,7 +357,7 @@ const Images = ({ classes }: IImagesProps) => {
label="API"
value={logSearchImage}
error={validationErrors["logSearchImage"] || ""}
- placeholder="E.g. minio/operator:v4.4.10"
+ placeholder="minio/operator:v4.4.22"
/>
@@ -371,7 +371,7 @@ const Images = ({ classes }: IImagesProps) => {
label="PostgreSQL"
value={logSearchPostgresImage}
error={validationErrors["logSearchPostgresImage"] || ""}
- placeholder="E.g. library/postgres:13"
+ placeholder="library/postgres:13"
/>
@@ -385,7 +385,7 @@ const Images = ({ classes }: IImagesProps) => {
label="PostgreSQL Init"
value={logSearchPostgresInitImage}
error={validationErrors["logSearchPostgresInitImage"] || ""}
- placeholder="E.g. library/busybox:1.33.1"
+ placeholder="library/busybox:1.33.1"
/>
@@ -402,7 +402,7 @@ const Images = ({ classes }: IImagesProps) => {
label="Prometheus"
value={prometheusImage}
error={validationErrors["prometheusImage"] || ""}
- placeholder="E.g. quay.io/prometheus/prometheus:latest"
+ placeholder="quay.io/prometheus/prometheus:latest"
/>
@@ -416,7 +416,7 @@ const Images = ({ classes }: IImagesProps) => {
label="Prometheus Sidecar"
value={prometheusSidecarImage}
error={validationErrors["prometheusSidecarImage"] || ""}
- placeholder="E.g. quay.io/prometheus/prometheus:latest"
+ placeholder="library/alpine:latest"
/>
@@ -430,7 +430,7 @@ const Images = ({ classes }: IImagesProps) => {
label="Prometheus Init"
value={prometheusInitImage}
error={validationErrors["prometheusInitImage"] || ""}
- placeholder="E.g. quay.io/prometheus/prometheus:latest"
+ placeholder="library/busybox:1.33.1"
/>
@@ -469,7 +469,7 @@ const Images = ({ classes }: IImagesProps) => {
label="Endpoint"
value={imageRegistry}
error={validationErrors["registry"] || ""}
- placeholder="E.g. https://index.docker.io/v1/"
+ placeholder="https://index.docker.io/v1/"
required
/>
diff --git a/portal-ui/src/screens/Console/Tenants/ListTenants/types.ts b/portal-ui/src/screens/Console/Tenants/ListTenants/types.ts
index 99fe20a4d..6ec4be422 100644
--- a/portal-ui/src/screens/Console/Tenants/ListTenants/types.ts
+++ b/portal-ui/src/screens/Console/Tenants/ListTenants/types.ts
@@ -227,6 +227,7 @@ export interface ITenantLogsStruct {
diskCapacityGB: number;
serviceAccountName: string;
dbImage: string;
+ dbInitImage: string;
dbLabels: IKeyValue[];
dbAnnotations: IKeyValue[];
dbNodeSelector: IKeyValue[];
diff --git a/portal-ui/src/screens/Console/Tenants/TenantDetails/EditTenantLogsModal.tsx b/portal-ui/src/screens/Console/Tenants/TenantDetails/EditTenantLogsModal.tsx
index 0ddb08997..a88074777 100644
--- a/portal-ui/src/screens/Console/Tenants/TenantDetails/EditTenantLogsModal.tsx
+++ b/portal-ui/src/screens/Console/Tenants/TenantDetails/EditTenantLogsModal.tsx
@@ -53,6 +53,7 @@ interface IEditTenantLogsProps {
diskCapacityGB: number;
serviceAccountName: string;
dbImage: string;
+ dbInitImage: string;
dbLabels: IKeyValue[];
dbAnnotations: IKeyValue[];
dbNodeSelector: IKeyValue[];
@@ -97,6 +98,7 @@ const EditTenantLogsModal = ({
dbAnnotations,
dbNodeSelector,
dbImage,
+ dbInitImage,
dbServiceAccountName,
cpuRequest,
memRequest,
@@ -130,6 +132,7 @@ const EditTenantLogsModal = ({
dbNodeSelector.length > 0 ? [...dbNodeSelector] : [{ key: "", value: "" }]
);
const [newDbImage, setNewDbImage] = useState(dbImage);
+ const [newDbInitImage, setNewDbInitImage] = useState(dbInitImage);
const [newDbServiceAccountName, setNewDbServiceAccountName] =
useState(dbServiceAccountName != null ? dbServiceAccountName : "");
const [labelsError, setLabelsError] = useState({});
@@ -184,6 +187,14 @@ const EditTenantLogsModal = ({
/^([a-zA-Z0-9])([a-zA-Z0-9-._])*([a-zA-Z0-9]?)+(\/(([a-zA-Z0-9])([a-zA-Z0-9-._])*([a-zA-Z0-9])?)+)*:([a-zA-Z0-9])[a-zA-Z0-9-.]{0,127}$/,
customPatternMessage: "Invalid image",
});
+ tenantLogValidation.push({
+ fieldKey: `dbInitImage`,
+ required: false,
+ value: newDbInitImage,
+ pattern:
+ /^([a-zA-Z0-9])([a-zA-Z0-9-._])*([a-zA-Z0-9]?)+(\/(([a-zA-Z0-9])([a-zA-Z0-9-._])*([a-zA-Z0-9])?)+)*:([a-zA-Z0-9])[a-zA-Z0-9-.]{0,127}$/,
+ customPatternMessage: "Invalid image",
+ });
tenantLogValidation.push({
fieldKey: `diskCapacityGB`,
required: true,
@@ -243,6 +254,7 @@ const EditTenantLogsModal = ({
}, [
newImage,
newDbImage,
+ newDbInitImage,
newDiskCapacityGB,
newServiceAccountName,
newDbServiceAccountName,
@@ -303,6 +315,7 @@ const EditTenantLogsModal = ({
dbAnnotations: trim(newDbAnnotations),
dbNodeSelector: trim(newDbNodeSelector),
dbImage: newDbImage,
+ dbInitImage: newDbInitImage,
dbServiceAccountName: newDbServiceAccountName,
logCPURequest: newCPURequest,
logMemRequest: newMemRequest + "Gi",
@@ -326,7 +339,7 @@ const EditTenantLogsModal = ({
{
@@ -454,7 +467,7 @@ const EditTenantLogsModal = ({
{
@@ -465,6 +478,21 @@ const EditTenantLogsModal = ({
error={validationErrors[`dbImage`] || ""}
/>
+
+ {
+ setNewDbInitImage(e.target.value);
+ cleanValidation(`dbInitImage`);
+ }}
+ key={`dbInitImage`}
+ error={validationErrors[`dbInitImage`] || ""}
+ />
+
) => {
@@ -263,7 +263,7 @@ const EditTenantMonitoringModal = ({
) => {
@@ -277,7 +277,7 @@ const EditTenantMonitoringModal = ({
) => {
diff --git a/portal-ui/src/screens/Console/Tenants/TenantDetails/TenantLogging.tsx b/portal-ui/src/screens/Console/Tenants/TenantDetails/TenantLogging.tsx
index 723e1ec80..557a590c8 100644
--- a/portal-ui/src/screens/Console/Tenants/TenantDetails/TenantLogging.tsx
+++ b/portal-ui/src/screens/Console/Tenants/TenantDetails/TenantLogging.tsx
@@ -197,6 +197,7 @@ const TenantLogging = ({ classes }: ITenantLogs) => {
diskCapacityGB={logInfo.diskCapacityGB}
serviceAccountName={logInfo.serviceAccountName}
dbImage={logInfo.dbImage}
+ dbInitImage={logInfo.dbInitImage}
dbLabels={logInfo.dbLabels}
dbAnnotations={logInfo.dbAnnotations}
dbNodeSelector={logInfo.dbNodeSelector}
diff --git a/swagger-operator.yml b/swagger-operator.yml
index 650475258..df353ffa8 100644
--- a/swagger-operator.yml
+++ b/swagger-operator.yml
@@ -2912,6 +2912,8 @@ definitions:
type: string
dbImage:
type: string
+ dbInitImage:
+ type: string
dbLabels:
type: array
items: