Skip to content

Commit 05273b7

Browse files
cilerlerk8s-ci-robot
authored andcommitted
added support for GCP (#227)
fixes #226 neither GCP one nor Azure one supports renew expired token feature
1 parent 1600e44 commit 05273b7

File tree

1 file changed

+57
-23
lines changed

1 file changed

+57
-23
lines changed

src/KubernetesClient/KubernetesClientConfiguration.ConfigFile.cs

Lines changed: 57 additions & 23 deletions
Original file line numberDiff line numberDiff line change
@@ -239,34 +239,68 @@ private void SetUserDetails(K8SConfiguration k8SConfig, Context activeContext)
239239

240240
if (userDetails.UserCredentials.AuthProvider != null)
241241
{
242-
if (userDetails.UserCredentials.AuthProvider.Name == "azure" &&
243-
userDetails.UserCredentials.AuthProvider.Config != null &&
244-
userDetails.UserCredentials.AuthProvider.Config.ContainsKey("access-token"))
242+
if (userDetails.UserCredentials.AuthProvider.Config != null
243+
&& userDetails.UserCredentials.AuthProvider.Config.ContainsKey("access-token"))
245244
{
246-
var config = userDetails.UserCredentials.AuthProvider.Config;
247-
if (config.ContainsKey("expires-on"))
245+
switch (userDetails.UserCredentials.AuthProvider.Name)
248246
{
249-
var expiresOn = Int32.Parse(config["expires-on"]);
250-
DateTimeOffset expires;
251-
#if NET452
252-
var epoch = new DateTimeOffset(1970, 1, 1, 0, 0, 0, TimeSpan.Zero);
253-
expires = epoch.AddSeconds(expiresOn);
254-
#else
255-
expires = DateTimeOffset.FromUnixTimeSeconds(expiresOn);
256-
#endif
257-
258-
if (DateTimeOffset.Compare(expires, DateTimeOffset.Now) <= 0)
247+
case "azure":
259248
{
260-
var tenantId = config["tenant-id"];
261-
var clientId = config["client-id"];
262-
var apiServerId = config["apiserver-id"];
263-
var refresh = config["refresh-token"];
264-
var newToken = RenewAzureToken(tenantId, clientId, apiServerId, refresh);
265-
config["access-token"] = newToken;
249+
var config = userDetails.UserCredentials.AuthProvider.Config;
250+
if (config.ContainsKey("expires-on"))
251+
{
252+
var expiresOn = Int32.Parse(config["expires-on"]);
253+
DateTimeOffset expires;
254+
#if NET452
255+
var epoch = new DateTimeOffset(1970, 1, 1, 0, 0, 0, TimeSpan.Zero);
256+
expires = epoch.AddSeconds(expiresOn);
257+
#else
258+
expires = DateTimeOffset.FromUnixTimeSeconds(expiresOn);
259+
#endif
260+
261+
if (DateTimeOffset.Compare(expires
262+
, DateTimeOffset.Now)
263+
<= 0)
264+
{
265+
var tenantId = config["tenant-id"];
266+
var clientId = config["client-id"];
267+
var apiServerId = config["apiserver-id"];
268+
var refresh = config["refresh-token"];
269+
var newToken = RenewAzureToken(tenantId
270+
, clientId
271+
, apiServerId
272+
, refresh);
273+
config["access-token"] = newToken;
274+
}
275+
}
276+
277+
AccessToken = config["access-token"];
278+
userCredentialsFound = true;
279+
break;
280+
}
281+
case "gcp":
282+
{
283+
var config = userDetails.UserCredentials.AuthProvider.Config;
284+
const string keyExpire = "expiry";
285+
if (config.ContainsKey(keyExpire))
286+
{
287+
if (DateTimeOffset.TryParse(config[keyExpire]
288+
, out DateTimeOffset expires))
289+
{
290+
if (DateTimeOffset.Compare(expires
291+
, DateTimeOffset.Now)
292+
<= 0)
293+
{
294+
throw new KubeConfigException("Refresh not supported.");
295+
}
296+
}
297+
}
298+
299+
AccessToken = config["access-token"];
300+
userCredentialsFound = true;
301+
break;
266302
}
267303
}
268-
AccessToken = config["access-token"];
269-
userCredentialsFound = true;
270304
}
271305
}
272306

0 commit comments

Comments
 (0)