From 1d72b07a91a197670652fe2b36170086a67cc17e Mon Sep 17 00:00:00 2001 From: Michael Parker Date: Thu, 17 Oct 2019 16:23:52 -0500 Subject: [PATCH 1/2] fix: retry on failed deletes for roles --- keycloak/role.go | 10 +++++++++- 1 file changed, 9 insertions(+), 1 deletion(-) diff --git a/keycloak/role.go b/keycloak/role.go index 17f0dd75c..00e7ac6ba 100644 --- a/keycloak/role.go +++ b/keycloak/role.go @@ -2,6 +2,7 @@ package keycloak import ( "fmt" + "log" ) type Role struct { @@ -91,7 +92,14 @@ func (keycloakClient *KeycloakClient) UpdateRole(role *Role) error { } func (keycloakClient *KeycloakClient) DeleteRole(realmId, id string) error { - return keycloakClient.delete(fmt.Sprintf("/realms/%s/roles-by-id/%s", realmId, id), nil) + err := keycloakClient.delete(fmt.Sprintf("/realms/%s/roles-by-id/%s", realmId, id), nil) + if err != nil { + log.Printf("[DEBUG] Failed to delete role with id %s. Trying again...", id) + + return keycloakClient.delete(fmt.Sprintf("/realms/%s/roles-by-id/%s", realmId, id), nil) + } + + return nil } func (keycloakClient *KeycloakClient) AddCompositesToRole(role *Role, compositeRoles []*Role) error { From 01be791357191146000ae89ff4530bfcf2a5f805 Mon Sep 17 00:00:00 2001 From: Michael Parker Date: Thu, 17 Oct 2019 16:24:28 -0500 Subject: [PATCH 2/2] fix: use whole numbers for duration seconds to avoid flaky tests --- provider/resource_keycloak_ldap_user_federation_test.go | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/provider/resource_keycloak_ldap_user_federation_test.go b/provider/resource_keycloak_ldap_user_federation_test.go index 1d3ba9fb7..1a75eb61d 100644 --- a/provider/resource_keycloak_ldap_user_federation_test.go +++ b/provider/resource_keycloak_ldap_user_federation_test.go @@ -128,10 +128,10 @@ func TestAccKeycloakLdapUserFederation_basicUpdateAll(t *testing.T) { firstValidatePasswordPolicy := randomBool() firstPagination := randomBool() - firstConnectionTimeout, _ := keycloak.GetDurationStringFromMilliseconds(strconv.Itoa(acctest.RandIntRange(1000, 3600000))) - secondConnectionTimeout, _ := keycloak.GetDurationStringFromMilliseconds(strconv.Itoa(acctest.RandIntRange(1000, 3600000))) - firstReadTimeout, _ := keycloak.GetDurationStringFromMilliseconds(strconv.Itoa(acctest.RandIntRange(1000, 3600000))) - secondReadTimeout, _ := keycloak.GetDurationStringFromMilliseconds(strconv.Itoa(acctest.RandIntRange(1000, 3600000))) + firstConnectionTimeout, _ := keycloak.GetDurationStringFromMilliseconds(strconv.Itoa(acctest.RandIntRange(1, 3600) * 1000)) + secondConnectionTimeout, _ := keycloak.GetDurationStringFromMilliseconds(strconv.Itoa(acctest.RandIntRange(1, 3600) * 1000)) + firstReadTimeout, _ := keycloak.GetDurationStringFromMilliseconds(strconv.Itoa(acctest.RandIntRange(1, 3600) * 1000)) + secondReadTimeout, _ := keycloak.GetDurationStringFromMilliseconds(strconv.Itoa(acctest.RandIntRange(1, 3600) * 1000)) firstLdap := &keycloak.LdapUserFederation{ RealmId: realmName,