示例#1
0
 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);
     }
 }
示例#2
0
        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);
            }
        }