public static CKubernatesConfig Desirialize(string congfigStr) { try { Deserializer yamlDesrializer = new Deserializer(); CKubernatesConfig config = yamlDesrializer.Deserialize <CKubernatesConfig>(congfigStr); return(config); } catch (Exception ex) { throw new Exception(string.Format("Configuration parser error: {0}", ex.Message), ex); } }
public static CKubernetesTokenConnectionSpec GetFromConfigFile(CKubernatesConfig configuration) { if (configuration.Clusters == null) { throw new Exception("No available clustres in user config file"); } CCluster cluster; CUser user; if (configuration.TryGetCurrentContext(out user, out cluster)) { return(new CKubernetesTokenConnectionSpec(cluster.ClusterEndpoint.Server, user.UserCredentials.Token)); } throw new Exception("Configuration not found"); }
public CKubernatesConfig GetConfiguration() { try { var userDir = Environment.GetFolderPath(Environment.SpecialFolder.UserProfile); var kubernetesUserCfg = string.Format(@"{0}\.kube\config", userDir); using (FileStream stream = File.OpenRead(kubernetesUserCfg)) { using (StreamReader reader = new StreamReader(stream)) { string cfgStr = reader.ReadToEnd(); return(CKubernatesConfig.Desirialize(cfgStr)); } } } catch (Exception ex) { throw new Exception("Failed to read configuration from current user profile", ex); } }
public void ApplyConfiguration(Uri endPoint, WebRequestHandler handler) { try { CKubernatesConfig configuration = ConfigurationProvider.GetConfiguration(); CKubernetesSslConnectionSpec spec = CKubernetesSslConnectionSpec.GetFromConfigFile(configuration); if (spec.HostName != endPoint.AbsoluteUri.TrimEnd('/')) { throw new Exception(string.Format("Configuration not found for {0}", endPoint.AbsoluteUri)); } handler.ClientCertificateOptions = ClientCertificateOption.Manual; handler.ClientCertificates.Add(spec.Certificate); handler.ServerCertificateValidationCallback = CertificateValidationCallBack; } catch (Exception ex) { throw new Exception("Applying configuration failed", ex); } }