Skip to content

Commit 431c17a

Browse files
committed
Some refactor
1 parent 0d1e9ba commit 431c17a

File tree

4 files changed

+36
-12
lines changed

4 files changed

+36
-12
lines changed

api/v1alpha1/constants.go

+2
Original file line numberDiff line numberDiff line change
@@ -55,4 +55,6 @@ const (
5555
HAAVIInfraSettingAnnotationsKey = "aviinfrasetting.ako.vmware.com/name"
5656

5757
AKODeploymentConfigControllerName = "akodeploymentconfig-controller"
58+
59+
AVIControllerEnterpriseOnlyVersion = "v30.0.0"
5860
)

controllers/akodeploymentconfig/user/ako_role.go

-4
Original file line numberDiff line numberDiff line change
@@ -328,10 +328,6 @@ var deprecatePermissionMap = map[string]string{
328328
}
329329

330330
func filterAkoRolePermissionByVersion(log logr.Logger, permissions []*models.Permission, version string) []*models.Permission {
331-
// Add v prefix if not present so semver can parse it
332-
if len(version) > 0 && version[0] != 'v' {
333-
version = "v" + version
334-
}
335331
filtered := []*models.Permission{}
336332
for _, permission := range permissions {
337333
if v, ok := deprecatePermissionMap[*permission.Resource]; ok && semver.Compare(version, v) >= 0 {

controllers/akodeploymentconfig/user/user_controller.go

+12-3
Original file line numberDiff line numberDiff line change
@@ -269,11 +269,15 @@ func (r *AkoUserReconciler) createOrUpdateAviUser(log logr.Logger, aviUsername,
269269
if err != nil {
270270
return err
271271
}
272+
// Add v prefix if not present so semver can parse it
273+
if len(version) > 0 && version[0] != 'v' {
274+
version = "v" + version
275+
}
272276

273277
aviUser, err := r.aviClient.UserGetByName(aviUsername)
274278
// user not found, create one
275279
if aviclient.IsAviUserNonExistentError(err) {
276-
log.Info("AVI User not found, creating a new one")
280+
log.Info("AVI User not found, creating a new user", "user", aviUsername)
277281
// for avi essential version the default tenant is admin
278282
if tenantName == "" {
279283
tenantName = "admin"
@@ -298,6 +302,10 @@ func (r *AkoUserReconciler) createOrUpdateAviUser(log logr.Logger, aviUsername,
298302
},
299303
},
300304
}
305+
// since v30.0.0, there is only enterprise edition
306+
if semver.Compare(version, akoov1alpha1.AVIControllerEnterpriseOnlyVersion) >= 0 {
307+
aviUser.Username = &aviUsername
308+
}
301309
if _, err := r.aviClient.UserCreate(aviUser); err != nil {
302310
return err
303311
}
@@ -314,8 +322,9 @@ func (r *AkoUserReconciler) createOrUpdateAviUser(log logr.Logger, aviUsername,
314322
// Update the password when user found, this is needed when the AVI user was
315323
// created before the mc Secret. And this operation will sync
316324
// the User's password to be the same as mc Secret's
317-
if *aviUser.Password != aviPassword {
325+
if aviUser.Password == nil || *aviUser.Password != aviPassword {
318326
log.Info("AVI User found, updating the password")
327+
aviUser.Password = &aviPassword
319328
if _, err := r.aviClient.UserUpdate(aviUser); err != nil {
320329
return err
321330
}
@@ -325,7 +334,7 @@ func (r *AkoUserReconciler) createOrUpdateAviUser(log logr.Logger, aviUsername,
325334

326335
// getOrCreateAkoUserRole get ako user's role, create one if not exist
327336
func (r *AkoUserReconciler) getOrCreateAkoUserRole(log logr.Logger, roleTenantRef *string, version string) (*models.Role, error) {
328-
log.V(3).Info("Ensure AKO User Role")
337+
log.Info("Ensure AKO User Role")
329338
role, err := r.aviClient.RoleGetByName(akoov1alpha1.AkoUserRoleName)
330339
// not found ako user role, create one
331340
if aviclient.IsAviRoleNonExistentError(err) {

controllers/akodeploymentconfig/user/user_controller_test.go

+22-5
Original file line numberDiff line numberDiff line change
@@ -139,7 +139,7 @@ func SyncAkoUserRoleTest() {
139139
Specify("role has no permissions", func() {
140140
role := &models.Role{}
141141

142-
updated := syncAkoUserRole(role, "v30.2.1")
142+
updated := syncAkoUserRole(role, "v20.0.0")
143143
Expect(updated).To(BeTrue())
144144
Expect(role.Privileges).To(HaveLen(len(AkoRolePermission)))
145145
Expect(role.Privileges).To(ContainElements(AkoRolePermission))
@@ -159,7 +159,7 @@ func SyncAkoUserRoleTest() {
159159
}
160160
}
161161

162-
updated := syncAkoUserRole(role, "v30.2.1")
162+
updated := syncAkoUserRole(role, "v20.0.0")
163163
Expect(updated).To(BeTrue())
164164
Expect(role.Privileges).To(HaveLen(len(AkoRolePermission)))
165165
Expect(role.Privileges).To(ContainElements(AkoRolePermission))
@@ -179,7 +179,7 @@ func SyncAkoUserRoleTest() {
179179
})
180180
}
181181

182-
updated := syncAkoUserRole(role, "v30.2.1")
182+
updated := syncAkoUserRole(role, "v20.0.0")
183183
Expect(updated).To(BeTrue())
184184
Expect(role.Privileges).To(HaveLen(len(AkoRolePermission)))
185185
Expect(role.Privileges).To(ContainElements(AkoRolePermission))
@@ -208,7 +208,7 @@ func SyncAkoUserRoleTest() {
208208
role.Privileges[i], role.Privileges[j] = role.Privileges[j], role.Privileges[i]
209209
})
210210

211-
updated := syncAkoUserRole(role, "v30.2.1")
211+
updated := syncAkoUserRole(role, "v20.0.0")
212212
Expect(updated).To(BeFalse())
213213
Expect(role.Privileges).To(HaveLen(len(AkoRolePermission) + len(additionalPrivileges)))
214214
Expect(role.Privileges).To(ContainElements(AkoRolePermission))
@@ -246,10 +246,27 @@ func SyncAkoUserRoleTest() {
246246
role.Privileges[i], role.Privileges[j] = role.Privileges[j], role.Privileges[i]
247247
})
248248

249-
updated := syncAkoUserRole(role, "v30.2.1")
249+
updated := syncAkoUserRole(role, "v20.0.0")
250250
Expect(updated).To(BeTrue())
251251
Expect(role.Privileges).To(HaveLen(len(AkoRolePermission) + len(additionalPrivileges)))
252252
Expect(role.Privileges).To(ContainElements(AkoRolePermission))
253253
Expect(role.Privileges).To(ContainElements(additionalPrivileges))
254254
})
255+
256+
Specify("AVI Controller is higher than 30.2.1", func() {
257+
role := &models.Role{}
258+
259+
updated := syncAkoUserRole(role, "v30.2.1")
260+
newPermissions := []*models.Permission{}
261+
for _, permission := range AkoRolePermission {
262+
if *permission.Resource == "PERMISSION_PINGACCESSAGENT" {
263+
continue
264+
}
265+
newPermissions = append(newPermissions, permission)
266+
267+
}
268+
Expect(updated).To(BeTrue())
269+
Expect(role.Privileges).To(HaveLen(len(AkoRolePermission) - 1))
270+
Expect(role.Privileges).To(ContainElements(newPermissions))
271+
})
255272
}

0 commit comments

Comments
 (0)