@@ -91,25 +91,26 @@ const (
91
91
92
92
// Standard Status messages for Tenant
93
93
const (
94
- StatusInitialized = "Initialized"
95
- StatusProvisioningCIService = "Provisioning MinIO Cluster IP Service"
96
- StatusProvisioningHLService = "Provisioning MinIO Headless Service"
97
- StatusProvisioningStatefulSet = "Provisioning MinIO Statefulset"
98
- StatusProvisioningConsoleService = "Provisioning Console Service"
99
- StatusProvisioningKESStatefulSet = "Provisioning KES StatefulSet"
100
- StatusProvisioningInitialUsers = "Provisioning initial users"
101
- StatusProvisioningDefaultBuckets = "Provisioning default buckets"
102
- StatusWaitingMinIOCert = "Waiting for MinIO TLS Certificate"
103
- StatusWaitingMinIOClientCert = "Waiting for MinIO TLS Client Certificate"
104
- StatusWaitingKESCert = "Waiting for KES TLS Certificate"
105
- StatusUpdatingMinIOVersion = "Updating MinIO Version"
106
- StatusUpdatingKES = "Updating KES"
107
- StatusNotOwned = "Statefulset not controlled by operator"
108
- StatusFailedAlreadyExists = "Another MinIO Tenant already exists in the namespace"
109
- StatusTenantCredentialsNotSet = "Tenant credentials are not set properly"
110
- StatusInconsistentMinIOVersions = "Different versions across MinIO Pools"
111
- StatusRestartingMinIO = "Restarting MinIO"
112
- StatusDecommissioningNotAllowed = "Pool Decommissioning Not Allowed"
94
+ StatusInitialized = "Initialized"
95
+ StatusProvisioningCIService = "Provisioning MinIO Cluster IP Service"
96
+ StatusProvisioningHLService = "Provisioning MinIO Headless Service"
97
+ StatusProvisioningStatefulSet = "Provisioning MinIO Statefulset"
98
+ StatusProvisioningConsoleService = "Provisioning Console Service"
99
+ StatusProvisioningKESStatefulSet = "Provisioning KES StatefulSet"
100
+ StatusProvisioningInitialUsers = "Provisioning initial users"
101
+ StatusProvisioningInitialUsersStuck = "Provisioning initial users probably stuck, check k8s events"
102
+ StatusProvisioningDefaultBuckets = "Provisioning default buckets"
103
+ StatusWaitingMinIOCert = "Waiting for MinIO TLS Certificate"
104
+ StatusWaitingMinIOClientCert = "Waiting for MinIO TLS Client Certificate"
105
+ StatusWaitingKESCert = "Waiting for KES TLS Certificate"
106
+ StatusUpdatingMinIOVersion = "Updating MinIO Version"
107
+ StatusUpdatingKES = "Updating KES"
108
+ StatusNotOwned = "Statefulset not controlled by operator"
109
+ StatusFailedAlreadyExists = "Another MinIO Tenant already exists in the namespace"
110
+ StatusTenantCredentialsNotSet = "Tenant credentials are not set properly"
111
+ StatusInconsistentMinIOVersions = "Different versions across MinIO Pools"
112
+ StatusRestartingMinIO = "Restarting MinIO"
113
+ StatusDecommissioningNotAllowed = "Pool Decommissioning Not Allowed"
113
114
)
114
115
115
116
// ErrMinIONotReady is the error returned when MinIO is not Ready
@@ -1316,7 +1317,18 @@ func (c *Controller) syncHandler(key string) (Result, error) {
1316
1317
1317
1318
// Ensure we are only provisioning users one time
1318
1319
if ! tenant .Status .ProvisionedUsers && len (tenant .Spec .Users ) > 0 {
1319
- if err := c .createUsers (ctx , tenant , tenantConfiguration ); err != nil {
1320
+ events , _ := c .kubeClientSet .CoreV1 ().Events (tenant .Namespace ).List (ctx , metav1.ListOptions {TypeMeta : metav1.TypeMeta {Kind : "Pod" }})
1321
+ counter := int32 (0 )
1322
+ for _ , event := range events .Items {
1323
+ reason := event .Reason
1324
+ if reason == "UsersCreatedFailed" {
1325
+ counter = counter + 1
1326
+ }
1327
+ if event .Count > counter {
1328
+ counter = event .Count
1329
+ }
1330
+ }
1331
+ if err := c .createUsers (ctx , tenant , tenantConfiguration , counter ); err != nil {
1320
1332
klog .V (2 ).Infof ("Unable to create MinIO users: %v" , err )
1321
1333
c .recorder .Event (tenant , corev1 .EventTypeWarning , "UsersCreatedFailed" , fmt .Sprintf ("Users creation failed: %s" , err ))
1322
1334
// retry after 5sec
0 commit comments