Skip to content

Commit f2233cc

Browse files
authored
chore(refactor): simplify logic that generates server cert (#24335)
Signed-off-by: Michael Crenshaw <[email protected]>
1 parent 871b0b4 commit f2233cc

File tree

1 file changed

+21
-77
lines changed

1 file changed

+21
-77
lines changed

util/settings/settings.go

Lines changed: 21 additions & 77 deletions
Original file line numberDiff line numberDiff line change
@@ -1576,66 +1576,10 @@ func (mgr *SettingsManager) loadTLSCertificateFromSecret(secret *corev1.Secret)
15761576
return &cert, nil
15771577
}
15781578

1579-
// SaveSettings serializes ArgoCDSettings and upserts it into K8s secret/configmap
1580-
func (mgr *SettingsManager) SaveSettings(settings *ArgoCDSettings) error {
1581-
err := mgr.updateConfigMap(func(argoCDCM *corev1.ConfigMap) error {
1582-
if settings.URL != "" {
1583-
argoCDCM.Data[settingURLKey] = settings.URL
1584-
} else {
1585-
delete(argoCDCM.Data, settingURLKey)
1586-
}
1587-
if settings.DexConfig != "" {
1588-
argoCDCM.Data[settingDexConfigKey] = settings.DexConfig
1589-
} else {
1590-
delete(argoCDCM.Data, settings.DexConfig)
1591-
}
1592-
if settings.OIDCConfigRAW != "" {
1593-
argoCDCM.Data[settingsOIDCConfigKey] = settings.OIDCConfigRAW
1594-
} else {
1595-
delete(argoCDCM.Data, settingsOIDCConfigKey)
1596-
}
1597-
if settings.UiCssURL != "" {
1598-
argoCDCM.Data[settingUICSSURLKey] = settings.UiCssURL
1599-
}
1600-
if settings.UiBannerContent != "" {
1601-
argoCDCM.Data[settingUIBannerContentKey] = settings.UiBannerContent
1602-
} else {
1603-
delete(argoCDCM.Data, settingUIBannerContentKey)
1604-
}
1605-
if settings.UiBannerURL != "" {
1606-
argoCDCM.Data[settingUIBannerURLKey] = settings.UiBannerURL
1607-
} else {
1608-
delete(argoCDCM.Data, settingUIBannerURLKey)
1609-
}
1610-
return nil
1611-
})
1612-
if err != nil {
1613-
return err
1614-
}
1615-
1579+
// saveSignatureAndCertificate serializes the server Signature and Certificate ArgoCDSettings and upserts it into the secret
1580+
func (mgr *SettingsManager) saveSignatureAndCertificate(settings *ArgoCDSettings) error {
16161581
return mgr.updateSecret(func(argoCDSecret *corev1.Secret) error {
16171582
argoCDSecret.Data[settingServerSignatureKey] = settings.ServerSignature
1618-
if settings.WebhookGitHubSecret != "" {
1619-
argoCDSecret.Data[settingsWebhookGitHubSecretKey] = []byte(settings.WebhookGitHubSecret)
1620-
}
1621-
if settings.WebhookGitLabSecret != "" {
1622-
argoCDSecret.Data[settingsWebhookGitLabSecretKey] = []byte(settings.WebhookGitLabSecret)
1623-
}
1624-
if settings.WebhookBitbucketUUID != "" {
1625-
argoCDSecret.Data[settingsWebhookBitbucketUUIDKey] = []byte(settings.WebhookBitbucketUUID)
1626-
}
1627-
if settings.WebhookBitbucketServerSecret != "" {
1628-
argoCDSecret.Data[settingsWebhookBitbucketServerSecretKey] = []byte(settings.WebhookBitbucketServerSecret)
1629-
}
1630-
if settings.WebhookGogsSecret != "" {
1631-
argoCDSecret.Data[settingsWebhookGogsSecretKey] = []byte(settings.WebhookGogsSecret)
1632-
}
1633-
if settings.WebhookAzureDevOpsUsername != "" {
1634-
argoCDSecret.Data[settingsWebhookAzureDevOpsUsernameKey] = []byte(settings.WebhookAzureDevOpsUsername)
1635-
}
1636-
if settings.WebhookAzureDevOpsPassword != "" {
1637-
argoCDSecret.Data[settingsWebhookAzureDevOpsPasswordKey] = []byte(settings.WebhookAzureDevOpsPassword)
1638-
}
16391583
// we only write the certificate to the secret if it's not externally
16401584
// managed.
16411585
if settings.Certificate != nil && !settings.CertificateIsExternal {
@@ -2095,24 +2039,7 @@ func isIncompleteSettingsError(err error) bool {
20952039
// InitializeSettings is used to initialize empty admin password, signature, certificate etc if missing
20962040
func (mgr *SettingsManager) InitializeSettings(insecureModeEnabled bool) (*ArgoCDSettings, error) {
20972041
const letters = "0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz-"
2098-
2099-
cdSettings, err := mgr.GetSettings()
2100-
if err != nil && !isIncompleteSettingsError(err) {
2101-
return nil, err
2102-
}
2103-
if cdSettings == nil {
2104-
cdSettings = &ArgoCDSettings{}
2105-
}
2106-
if cdSettings.ServerSignature == nil {
2107-
// set JWT signature
2108-
signature, err := util.MakeSignature(32)
2109-
if err != nil {
2110-
return nil, fmt.Errorf("error setting JWT signature: %w", err)
2111-
}
2112-
cdSettings.ServerSignature = signature
2113-
log.Info("Initialized server signature")
2114-
}
2115-
err = mgr.UpdateAccount(common.ArgoCDAdminUsername, func(adminAccount *Account) error {
2042+
err := mgr.UpdateAccount(common.ArgoCDAdminUsername, func(adminAccount *Account) error {
21162043
if adminAccount.Enabled {
21172044
now := time.Now().UTC()
21182045
if adminAccount.PasswordHash == "" {
@@ -2152,6 +2079,23 @@ func (mgr *SettingsManager) InitializeSettings(insecureModeEnabled bool) (*ArgoC
21522079
return nil, err
21532080
}
21542081

2082+
cdSettings, err := mgr.GetSettings()
2083+
if err != nil && !isIncompleteSettingsError(err) {
2084+
return nil, err
2085+
}
2086+
if cdSettings == nil {
2087+
cdSettings = &ArgoCDSettings{}
2088+
}
2089+
if cdSettings.ServerSignature == nil {
2090+
// set JWT signature
2091+
signature, err := util.MakeSignature(32)
2092+
if err != nil {
2093+
return nil, fmt.Errorf("error setting JWT signature: %w", err)
2094+
}
2095+
cdSettings.ServerSignature = signature
2096+
log.Info("Initialized server signature")
2097+
}
2098+
21552099
if cdSettings.Certificate == nil && !insecureModeEnabled {
21562100
// generate TLS cert
21572101
hosts := []string{
@@ -2174,7 +2118,7 @@ func (mgr *SettingsManager) InitializeSettings(insecureModeEnabled bool) (*ArgoC
21742118
log.Info("Initialized TLS certificate")
21752119
}
21762120

2177-
err = mgr.SaveSettings(cdSettings)
2121+
err = mgr.saveSignatureAndCertificate(cdSettings)
21782122
if apierrors.IsConflict(err) {
21792123
// assume settings are initialized by another instance of api server
21802124
log.Warnf("conflict when initializing settings. assuming updated by another replica")

0 commit comments

Comments
 (0)