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