fix(instance): add web key generation to instance defaults (#9815)

# Which Problems Are Solved

Webkeys were not generated with new instances when the webkey feature
flag was enabled for instance defaults. This would cause a redirect loop
with console for new instances on QA / coud.

# How the Problems Are Solved

- uncomment the webkeys section on defaults.yaml
- Fix field naming of webkey config

# Additional Changes

- Add all available features as comments.
- Make the improved performance type enum parsable from the config,
untill now they were just ints.
- Running of the enumer command created missing enum entries for feature
keys.

# Additional Context

- Needs to be back-ported to v3 / next-rc

Co-authored-by: Livio Spring <livio.a@gmail.com>
(cherry picked from commit 91bc71db74)
This commit is contained in:
Tim Möhlmann
2025-04-29 16:54:53 +02:00
committed by Livio Spring
parent 0af5346288
commit 19aacdab26
6 changed files with 171 additions and 47 deletions

File diff suppressed because one or more lines are too long

View File

@@ -172,7 +172,7 @@ func improvedPerformanceTypesToPb(types []feature.ImprovedPerformanceType) []fea
func improvedPerformanceTypeToPb(typ feature.ImprovedPerformanceType) feature_pb.ImprovedPerformance { func improvedPerformanceTypeToPb(typ feature.ImprovedPerformanceType) feature_pb.ImprovedPerformance {
switch typ { switch typ {
case feature.ImprovedPerformanceTypeUnknown: case feature.ImprovedPerformanceTypeUnspecified:
return feature_pb.ImprovedPerformance_IMPROVED_PERFORMANCE_UNSPECIFIED return feature_pb.ImprovedPerformance_IMPROVED_PERFORMANCE_UNSPECIFIED
case feature.ImprovedPerformanceTypeOrgByID: case feature.ImprovedPerformanceTypeOrgByID:
return feature_pb.ImprovedPerformance_IMPROVED_PERFORMANCE_ORG_BY_ID return feature_pb.ImprovedPerformance_IMPROVED_PERFORMANCE_ORG_BY_ID
@@ -205,7 +205,7 @@ func improvedPerformanceListToDomain(list []feature_pb.ImprovedPerformance) []fe
func improvedPerformanceToDomain(typ feature_pb.ImprovedPerformance) feature.ImprovedPerformanceType { func improvedPerformanceToDomain(typ feature_pb.ImprovedPerformance) feature.ImprovedPerformanceType {
switch typ { switch typ {
case feature_pb.ImprovedPerformance_IMPROVED_PERFORMANCE_UNSPECIFIED: case feature_pb.ImprovedPerformance_IMPROVED_PERFORMANCE_UNSPECIFIED:
return feature.ImprovedPerformanceTypeUnknown return feature.ImprovedPerformanceTypeUnspecified
case feature_pb.ImprovedPerformance_IMPROVED_PERFORMANCE_ORG_BY_ID: case feature_pb.ImprovedPerformance_IMPROVED_PERFORMANCE_ORG_BY_ID:
return feature.ImprovedPerformanceTypeOrgByID return feature.ImprovedPerformanceTypeOrgByID
case feature_pb.ImprovedPerformance_IMPROVED_PERFORMANCE_PROJECT_GRANT: case feature_pb.ImprovedPerformance_IMPROVED_PERFORMANCE_PROJECT_GRANT:
@@ -217,6 +217,6 @@ func improvedPerformanceToDomain(typ feature_pb.ImprovedPerformance) feature.Imp
case feature_pb.ImprovedPerformance_IMPROVED_PERFORMANCE_ORG_DOMAIN_VERIFIED: case feature_pb.ImprovedPerformance_IMPROVED_PERFORMANCE_ORG_DOMAIN_VERIFIED:
return feature.ImprovedPerformanceTypeOrgDomainVerified return feature.ImprovedPerformanceTypeOrgDomainVerified
default: default:
return feature.ImprovedPerformanceTypeUnknown return feature.ImprovedPerformanceTypeUnspecified
} }
} }

View File

@@ -109,7 +109,7 @@ func improvedPerformanceTypesToPb(types []feature.ImprovedPerformanceType) []fea
func improvedPerformanceTypeToPb(typ feature.ImprovedPerformanceType) feature_pb.ImprovedPerformance { func improvedPerformanceTypeToPb(typ feature.ImprovedPerformanceType) feature_pb.ImprovedPerformance {
switch typ { switch typ {
case feature.ImprovedPerformanceTypeUnknown: case feature.ImprovedPerformanceTypeUnspecified:
return feature_pb.ImprovedPerformance_IMPROVED_PERFORMANCE_UNSPECIFIED return feature_pb.ImprovedPerformance_IMPROVED_PERFORMANCE_UNSPECIFIED
case feature.ImprovedPerformanceTypeOrgByID: case feature.ImprovedPerformanceTypeOrgByID:
return feature_pb.ImprovedPerformance_IMPROVED_PERFORMANCE_ORG_BY_ID return feature_pb.ImprovedPerformance_IMPROVED_PERFORMANCE_ORG_BY_ID
@@ -142,7 +142,7 @@ func improvedPerformanceListToDomain(list []feature_pb.ImprovedPerformance) []fe
func improvedPerformanceToDomain(typ feature_pb.ImprovedPerformance) feature.ImprovedPerformanceType { func improvedPerformanceToDomain(typ feature_pb.ImprovedPerformance) feature.ImprovedPerformanceType {
switch typ { switch typ {
case feature_pb.ImprovedPerformance_IMPROVED_PERFORMANCE_UNSPECIFIED: case feature_pb.ImprovedPerformance_IMPROVED_PERFORMANCE_UNSPECIFIED:
return feature.ImprovedPerformanceTypeUnknown return feature.ImprovedPerformanceTypeUnspecified
case feature_pb.ImprovedPerformance_IMPROVED_PERFORMANCE_ORG_BY_ID: case feature_pb.ImprovedPerformance_IMPROVED_PERFORMANCE_ORG_BY_ID:
return feature.ImprovedPerformanceTypeOrgByID return feature.ImprovedPerformanceTypeOrgByID
case feature_pb.ImprovedPerformance_IMPROVED_PERFORMANCE_PROJECT_GRANT: case feature_pb.ImprovedPerformance_IMPROVED_PERFORMANCE_PROJECT_GRANT:
@@ -154,6 +154,6 @@ func improvedPerformanceToDomain(typ feature_pb.ImprovedPerformance) feature.Imp
case feature_pb.ImprovedPerformance_IMPROVED_PERFORMANCE_ORG_DOMAIN_VERIFIED: case feature_pb.ImprovedPerformance_IMPROVED_PERFORMANCE_ORG_DOMAIN_VERIFIED:
return feature.ImprovedPerformanceTypeOrgDomainVerified return feature.ImprovedPerformanceTypeOrgDomainVerified
default: default:
return feature.ImprovedPerformanceTypeUnknown return feature.ImprovedPerformanceTypeUnspecified
} }
} }

View File

@@ -57,10 +57,11 @@ type Features struct {
ConsoleUseV2UserApi bool `json:"console_use_v2_user_api,omitempty"` ConsoleUseV2UserApi bool `json:"console_use_v2_user_api,omitempty"`
} }
//go:generate enumer -type ImprovedPerformanceType -trimprefix ImprovedPerformanceType -text
type ImprovedPerformanceType int32 type ImprovedPerformanceType int32
const ( const (
ImprovedPerformanceTypeUnknown = iota ImprovedPerformanceTypeUnspecified ImprovedPerformanceType = iota
ImprovedPerformanceTypeOrgByID ImprovedPerformanceTypeOrgByID
ImprovedPerformanceTypeProjectGrant ImprovedPerformanceTypeProjectGrant
ImprovedPerformanceTypeProject ImprovedPerformanceTypeProject

View File

@@ -0,0 +1,106 @@
// Code generated by "enumer -type ImprovedPerformanceType -trimprefix ImprovedPerformanceType -text"; DO NOT EDIT.
package feature
import (
"fmt"
"strings"
)
const _ImprovedPerformanceTypeName = "UnspecifiedOrgByIDProjectGrantProjectUserGrantOrgDomainVerified"
var _ImprovedPerformanceTypeIndex = [...]uint8{0, 11, 18, 30, 37, 46, 63}
const _ImprovedPerformanceTypeLowerName = "unspecifiedorgbyidprojectgrantprojectusergrantorgdomainverified"
func (i ImprovedPerformanceType) String() string {
if i < 0 || i >= ImprovedPerformanceType(len(_ImprovedPerformanceTypeIndex)-1) {
return fmt.Sprintf("ImprovedPerformanceType(%d)", i)
}
return _ImprovedPerformanceTypeName[_ImprovedPerformanceTypeIndex[i]:_ImprovedPerformanceTypeIndex[i+1]]
}
// An "invalid array index" compiler error signifies that the constant values have changed.
// Re-run the stringer command to generate them again.
func _ImprovedPerformanceTypeNoOp() {
var x [1]struct{}
_ = x[ImprovedPerformanceTypeUnspecified-(0)]
_ = x[ImprovedPerformanceTypeOrgByID-(1)]
_ = x[ImprovedPerformanceTypeProjectGrant-(2)]
_ = x[ImprovedPerformanceTypeProject-(3)]
_ = x[ImprovedPerformanceTypeUserGrant-(4)]
_ = x[ImprovedPerformanceTypeOrgDomainVerified-(5)]
}
var _ImprovedPerformanceTypeValues = []ImprovedPerformanceType{ImprovedPerformanceTypeUnspecified, ImprovedPerformanceTypeOrgByID, ImprovedPerformanceTypeProjectGrant, ImprovedPerformanceTypeProject, ImprovedPerformanceTypeUserGrant, ImprovedPerformanceTypeOrgDomainVerified}
var _ImprovedPerformanceTypeNameToValueMap = map[string]ImprovedPerformanceType{
_ImprovedPerformanceTypeName[0:11]: ImprovedPerformanceTypeUnspecified,
_ImprovedPerformanceTypeLowerName[0:11]: ImprovedPerformanceTypeUnspecified,
_ImprovedPerformanceTypeName[11:18]: ImprovedPerformanceTypeOrgByID,
_ImprovedPerformanceTypeLowerName[11:18]: ImprovedPerformanceTypeOrgByID,
_ImprovedPerformanceTypeName[18:30]: ImprovedPerformanceTypeProjectGrant,
_ImprovedPerformanceTypeLowerName[18:30]: ImprovedPerformanceTypeProjectGrant,
_ImprovedPerformanceTypeName[30:37]: ImprovedPerformanceTypeProject,
_ImprovedPerformanceTypeLowerName[30:37]: ImprovedPerformanceTypeProject,
_ImprovedPerformanceTypeName[37:46]: ImprovedPerformanceTypeUserGrant,
_ImprovedPerformanceTypeLowerName[37:46]: ImprovedPerformanceTypeUserGrant,
_ImprovedPerformanceTypeName[46:63]: ImprovedPerformanceTypeOrgDomainVerified,
_ImprovedPerformanceTypeLowerName[46:63]: ImprovedPerformanceTypeOrgDomainVerified,
}
var _ImprovedPerformanceTypeNames = []string{
_ImprovedPerformanceTypeName[0:11],
_ImprovedPerformanceTypeName[11:18],
_ImprovedPerformanceTypeName[18:30],
_ImprovedPerformanceTypeName[30:37],
_ImprovedPerformanceTypeName[37:46],
_ImprovedPerformanceTypeName[46:63],
}
// ImprovedPerformanceTypeString retrieves an enum value from the enum constants string name.
// Throws an error if the param is not part of the enum.
func ImprovedPerformanceTypeString(s string) (ImprovedPerformanceType, error) {
if val, ok := _ImprovedPerformanceTypeNameToValueMap[s]; ok {
return val, nil
}
if val, ok := _ImprovedPerformanceTypeNameToValueMap[strings.ToLower(s)]; ok {
return val, nil
}
return 0, fmt.Errorf("%s does not belong to ImprovedPerformanceType values", s)
}
// ImprovedPerformanceTypeValues returns all values of the enum
func ImprovedPerformanceTypeValues() []ImprovedPerformanceType {
return _ImprovedPerformanceTypeValues
}
// ImprovedPerformanceTypeStrings returns a slice of all String values of the enum
func ImprovedPerformanceTypeStrings() []string {
strs := make([]string, len(_ImprovedPerformanceTypeNames))
copy(strs, _ImprovedPerformanceTypeNames)
return strs
}
// IsAImprovedPerformanceType returns "true" if the value is listed in the enum definition. "false" otherwise
func (i ImprovedPerformanceType) IsAImprovedPerformanceType() bool {
for _, v := range _ImprovedPerformanceTypeValues {
if i == v {
return true
}
}
return false
}
// MarshalText implements the encoding.TextMarshaler interface for ImprovedPerformanceType
func (i ImprovedPerformanceType) MarshalText() ([]byte, error) {
return []byte(i.String()), nil
}
// UnmarshalText implements the encoding.TextUnmarshaler interface for ImprovedPerformanceType
func (i *ImprovedPerformanceType) UnmarshalText(text []byte) error {
var err error
*i, err = ImprovedPerformanceTypeString(string(text))
return err
}

View File

@@ -7,11 +7,11 @@ import (
"strings" "strings"
) )
const _KeyName = "unspecifiedlogin_default_orgtrigger_introspection_projectionslegacy_introspectionuser_schematoken_exchangeactionsimproved_performanceweb_keydebug_oidc_parent_erroroidc_single_v1_session_terminationdisable_user_token_eventenable_back_channel_logoutlogin_v2permission_check_v2console_use_v2_user_api" const _KeyName = "unspecifiedlogin_default_orgtrigger_introspection_projectionslegacy_introspectionuser_schematoken_exchangeactions_deprecatedimproved_performanceweb_keydebug_oidc_parent_erroroidc_single_v1_session_terminationdisable_user_token_eventenable_back_channel_logoutlogin_v2permission_check_v2console_use_v2_user_api"
var _KeyIndex = [...]uint16{0, 11, 28, 61, 81, 92, 106, 113, 133, 140, 163, 197, 221, 247, 255, 274, 297} var _KeyIndex = [...]uint16{0, 11, 28, 61, 81, 92, 106, 124, 144, 151, 174, 208, 232, 258, 266, 285, 308}
const _KeyLowerName = "unspecifiedlogin_default_orgtrigger_introspection_projectionslegacy_introspectionuser_schematoken_exchangeactionsimproved_performanceweb_keydebug_oidc_parent_erroroidc_single_v1_session_terminationdisable_user_token_eventenable_back_channel_logoutlogin_v2permission_check_v2console_use_v2_user_api" const _KeyLowerName = "unspecifiedlogin_default_orgtrigger_introspection_projectionslegacy_introspectionuser_schematoken_exchangeactions_deprecatedimproved_performanceweb_keydebug_oidc_parent_erroroidc_single_v1_session_terminationdisable_user_token_eventenable_back_channel_logoutlogin_v2permission_check_v2console_use_v2_user_api"
func (i Key) String() string { func (i Key) String() string {
if i < 0 || i >= Key(len(_KeyIndex)-1) { if i < 0 || i >= Key(len(_KeyIndex)-1) {
@@ -57,26 +57,26 @@ var _KeyNameToValueMap = map[string]Key{
_KeyLowerName[81:92]: KeyUserSchema, _KeyLowerName[81:92]: KeyUserSchema,
_KeyName[92:106]: KeyTokenExchange, _KeyName[92:106]: KeyTokenExchange,
_KeyLowerName[92:106]: KeyTokenExchange, _KeyLowerName[92:106]: KeyTokenExchange,
_KeyName[106:113]: KeyActionsDeprecated, _KeyName[106:124]: KeyActionsDeprecated,
_KeyLowerName[106:113]: KeyActionsDeprecated, _KeyLowerName[106:124]: KeyActionsDeprecated,
_KeyName[113:133]: KeyImprovedPerformance, _KeyName[124:144]: KeyImprovedPerformance,
_KeyLowerName[113:133]: KeyImprovedPerformance, _KeyLowerName[124:144]: KeyImprovedPerformance,
_KeyName[133:140]: KeyWebKey, _KeyName[144:151]: KeyWebKey,
_KeyLowerName[133:140]: KeyWebKey, _KeyLowerName[144:151]: KeyWebKey,
_KeyName[140:163]: KeyDebugOIDCParentError, _KeyName[151:174]: KeyDebugOIDCParentError,
_KeyLowerName[140:163]: KeyDebugOIDCParentError, _KeyLowerName[151:174]: KeyDebugOIDCParentError,
_KeyName[163:197]: KeyOIDCSingleV1SessionTermination, _KeyName[174:208]: KeyOIDCSingleV1SessionTermination,
_KeyLowerName[163:197]: KeyOIDCSingleV1SessionTermination, _KeyLowerName[174:208]: KeyOIDCSingleV1SessionTermination,
_KeyName[197:221]: KeyDisableUserTokenEvent, _KeyName[208:232]: KeyDisableUserTokenEvent,
_KeyLowerName[197:221]: KeyDisableUserTokenEvent, _KeyLowerName[208:232]: KeyDisableUserTokenEvent,
_KeyName[221:247]: KeyEnableBackChannelLogout, _KeyName[232:258]: KeyEnableBackChannelLogout,
_KeyLowerName[221:247]: KeyEnableBackChannelLogout, _KeyLowerName[232:258]: KeyEnableBackChannelLogout,
_KeyName[247:255]: KeyLoginV2, _KeyName[258:266]: KeyLoginV2,
_KeyLowerName[247:255]: KeyLoginV2, _KeyLowerName[258:266]: KeyLoginV2,
_KeyName[255:274]: KeyPermissionCheckV2, _KeyName[266:285]: KeyPermissionCheckV2,
_KeyLowerName[255:274]: KeyPermissionCheckV2, _KeyLowerName[266:285]: KeyPermissionCheckV2,
_KeyName[274:297]: KeyConsoleUseV2UserApi, _KeyName[285:308]: KeyConsoleUseV2UserApi,
_KeyLowerName[274:297]: KeyConsoleUseV2UserApi, _KeyLowerName[285:308]: KeyConsoleUseV2UserApi,
} }
var _KeyNames = []string{ var _KeyNames = []string{
@@ -86,16 +86,16 @@ var _KeyNames = []string{
_KeyName[61:81], _KeyName[61:81],
_KeyName[81:92], _KeyName[81:92],
_KeyName[92:106], _KeyName[92:106],
_KeyName[106:113], _KeyName[106:124],
_KeyName[113:133], _KeyName[124:144],
_KeyName[133:140], _KeyName[144:151],
_KeyName[140:163], _KeyName[151:174],
_KeyName[163:197], _KeyName[174:208],
_KeyName[197:221], _KeyName[208:232],
_KeyName[221:247], _KeyName[232:258],
_KeyName[247:255], _KeyName[258:266],
_KeyName[255:274], _KeyName[266:285],
_KeyName[274:297], _KeyName[285:308],
} }
// KeyString retrieves an enum value from the enum constants string name. // KeyString retrieves an enum value from the enum constants string name.