Skip to content

Commit fa1c27e

Browse files
add helpers for OIDC and HA support
1 parent 7f6abe0 commit fa1c27e

File tree

2 files changed

+84
-36
lines changed

2 files changed

+84
-36
lines changed

edge-apis/client_edge_client.go

Lines changed: 42 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -71,6 +71,8 @@ func NewClientApiClientWithConfig(config *ApiClientConfig) *ClientApiClient {
7171
ret.API = &api
7272
ret.AuthEnabledApi = &api
7373

74+
api.doOnceCacheVersionInfo()
75+
7476
return ret
7577
}
7678

@@ -115,26 +117,16 @@ func (self *ZitiEdgeClient) ListControllers() (*rest_model.ControllersList, erro
115117
}
116118

117119
func (self *ZitiEdgeClient) Authenticate(credentials Credentials, configTypesOverrides []string, httpClient *http.Client) (ApiSession, error) {
118-
self.versionOnce.Do(func() {
119-
if self.useOidcExplicitlySet {
120-
return
121-
}
122-
123-
if self.oidcDynamicallyEnabled {
124-
versionParams := clientInfo.NewListVersionParams()
120+
self.doOnceCacheVersionInfo()
121+
useOidc := false
125122

126-
versionResp, _ := self.Informational.ListVersion(versionParams)
127-
128-
if versionResp != nil {
129-
self.versionInfo = versionResp.Payload.Data
130-
self.useOidc = stringz.Contains(self.versionInfo.Capabilities, string(rest_model.CapabilitiesOIDCAUTH))
131-
}
132-
} else {
133-
self.useOidc = false
134-
}
135-
})
123+
if self.useOidcExplicitlySet {
124+
useOidc = self.useOidc
125+
} else if self.oidcDynamicallyEnabled {
126+
useOidc = self.ControllerSupportsOidc()
127+
}
136128

137-
if self.useOidc {
129+
if useOidc {
138130
return self.oidcAuth(credentials, configTypesOverrides, httpClient)
139131
}
140132

@@ -216,3 +208,35 @@ func (self *ZitiEdgeClient) RefreshApiSession(apiSession ApiSession, httpClient
216208
func (self *ZitiEdgeClient) ExchangeTokens(curTokens *oidc.Tokens[*oidc.IDTokenClaims], httpClient *http.Client) (*oidc.Tokens[*oidc.IDTokenClaims], error) {
217209
return exchangeTokens(self.ClientTransportPool, curTokens, httpClient)
218210
}
211+
212+
func (self *ZitiEdgeClient) ControllerSupportsHa() bool {
213+
self.doOnceCacheVersionInfo()
214+
215+
if self.versionInfo != nil && self.versionInfo.Capabilities != nil {
216+
return stringz.Contains(self.versionInfo.Capabilities, string(rest_model.CapabilitiesHACONTROLLER))
217+
}
218+
219+
return false
220+
}
221+
222+
func (self *ZitiEdgeClient) ControllerSupportsOidc() bool {
223+
self.doOnceCacheVersionInfo()
224+
225+
if self.versionInfo != nil && self.versionInfo.Capabilities != nil {
226+
return stringz.Contains(self.versionInfo.Capabilities, string(rest_model.CapabilitiesOIDCAUTH))
227+
}
228+
229+
return false
230+
}
231+
232+
func (self *ZitiEdgeClient) doOnceCacheVersionInfo() {
233+
self.versionOnce.Do(func() {
234+
versionParams := clientInfo.NewListVersionParams()
235+
236+
versionResp, _ := self.Informational.ListVersion(versionParams)
237+
238+
if versionResp != nil {
239+
self.versionInfo = versionResp.Payload.Data
240+
}
241+
})
242+
}

edge-apis/client_edge_management.go

Lines changed: 42 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -71,6 +71,8 @@ func NewManagementApiClientWithConfig(config *ApiClientConfig) *ManagementApiCli
7171
ret.API = &api
7272
ret.AuthEnabledApi = &api
7373

74+
api.doOnceCacheVersionInfo()
75+
7476
return ret
7577
}
7678

@@ -115,26 +117,16 @@ func (self *ZitiEdgeManagement) ListControllers() (*rest_model.ControllersList,
115117
}
116118

117119
func (self *ZitiEdgeManagement) Authenticate(credentials Credentials, configTypes []string, httpClient *http.Client) (ApiSession, error) {
118-
self.versionOnce.Do(func() {
119-
if self.useOidcExplicitlySet {
120-
return
121-
}
122-
123-
if self.oidcDynamicallyEnabled {
124-
versionParams := manInfo.NewListVersionParams()
120+
self.doOnceCacheVersionInfo()
121+
useOidc := false
125122

126-
versionResp, _ := self.Informational.ListVersion(versionParams)
127-
128-
if versionResp != nil {
129-
self.versionInfo = versionResp.Payload.Data
130-
self.useOidc = stringz.Contains(self.versionInfo.Capabilities, string(rest_model.CapabilitiesOIDCAUTH))
131-
}
132-
} else {
133-
self.useOidc = false
134-
}
135-
})
123+
if self.useOidcExplicitlySet {
124+
useOidc = self.useOidc
125+
} else if self.oidcDynamicallyEnabled {
126+
useOidc = self.ControllerSupportsOidc()
127+
}
136128

137-
if self.useOidc {
129+
if useOidc {
138130
return self.oidcAuth(credentials, configTypes, httpClient)
139131
}
140132

@@ -218,3 +210,35 @@ func (self *ZitiEdgeManagement) RefreshApiSession(apiSession ApiSession, httpCli
218210
func (self *ZitiEdgeManagement) ExchangeTokens(curTokens *oidc.Tokens[*oidc.IDTokenClaims], httpClient *http.Client) (*oidc.Tokens[*oidc.IDTokenClaims], error) {
219211
return exchangeTokens(self.ClientTransportPool, curTokens, httpClient)
220212
}
213+
214+
func (self *ZitiEdgeManagement) ControllerSupportsHa() bool {
215+
self.doOnceCacheVersionInfo()
216+
217+
if self.versionInfo != nil && self.versionInfo.Capabilities != nil {
218+
return stringz.Contains(self.versionInfo.Capabilities, string(rest_model.CapabilitiesHACONTROLLER))
219+
}
220+
221+
return false
222+
}
223+
224+
func (self *ZitiEdgeManagement) ControllerSupportsOidc() bool {
225+
self.doOnceCacheVersionInfo()
226+
227+
if self.versionInfo != nil && self.versionInfo.Capabilities != nil {
228+
return stringz.Contains(self.versionInfo.Capabilities, string(rest_model.CapabilitiesOIDCAUTH))
229+
}
230+
231+
return false
232+
}
233+
234+
func (self *ZitiEdgeManagement) doOnceCacheVersionInfo() {
235+
self.versionOnce.Do(func() {
236+
versionParams := manInfo.NewListVersionParams()
237+
238+
versionResp, _ := self.Informational.ListVersion(versionParams)
239+
240+
if versionResp != nil {
241+
self.versionInfo = versionResp.Payload.Data
242+
}
243+
})
244+
}

0 commit comments

Comments
 (0)