// runHTTPSDiscovery executes HTTPS-based discovery. func runHTTPSDiscovery(hd *kubeadmapi.HTTPSDiscovery) (*clientcmdapi.Config, error) { response, err := http.Get(hd.URL) if err != nil { return nil, err } defer response.Body.Close() kubeconfig, err := ioutil.ReadAll(response.Body) if err != nil { return nil, err } return clientcmd.Load(kubeconfig) }
// ---------------------------------------------------------- // Attempt to open file at path as client config // If there is a problem and errmsg is set, log an error func (d ConfigLoading) canOpenConfigFile(path string, errmsg string, r types.DiagnosticResult) bool { var file *os.File var err error if path == "" { // empty param/envvar return false } else if file, err = os.Open(path); err == nil { r.Debug("DCli1004", fmt.Sprintf("Reading client config at %s", path)) } else if errmsg == "" { r.Debug("DCli1005", fmt.Sprintf("Could not read client config at %s:\n%#v", path, err)) } else if os.IsNotExist(err) { r.Debug("DCli1006", errmsg+"but that file does not exist.") } else if os.IsPermission(err) { r.Error("DCli1007", err, errmsg+"but lack permission to read that file.") } else { r.Error("DCli1008", err, fmt.Sprintf("%sbut there was an error opening it:\n%#v", errmsg, err)) } if file != nil { // it is open for reading defer file.Close() if buffer, err := ioutil.ReadAll(file); err != nil { r.Error("DCli1009", err, fmt.Sprintf("Unexpected error while reading client config file (%s): %v", path, err)) } else if _, err := clientcmd.Load(buffer); err != nil { r.Error("DCli1010", err, fmt.Sprintf(` Error reading YAML from client config file (%s): %v This file may have been truncated or mis-edited. Please fix, remove, or obtain a new client config`, file.Name(), err)) } else { r.Info("DCli1011", fmt.Sprintf("Successfully read a client config file at '%s'", path)) /* Note, we're not going to use this config file directly. * Instead, we'll defer to the openshift client code to assimilate * flags, env vars, and the potential hierarchy of config files * into an actual configuration that the client uses. * However, for diagnostic purposes, record the files we find. */ return true } } return false }
return true, nil } glog.Warningf("error in fetching secret: %s", err) return false, nil }) if err != nil { return nil, fmt.Errorf("timed out waiting for secret: %s", err) } if secret == nil { return nil, fmt.Errorf("unexpected: received null secret %s", secretName) } ok := false data, ok = secret.Data[KubeconfigSecretDataKey] if !ok { return nil, fmt.Errorf("secret does not have data with key: %s", KubeconfigSecretDataKey) } } return clientcmd.Load(data) } } // Returns Clientset for the given cluster. func GetClientsetForCluster(cluster *federation_v1beta1.Cluster) (*fedclientset.Clientset, error) { clusterConfig, err := BuildClusterConfig(cluster) if err != nil && clusterConfig != nil { clientset := fedclientset.NewForConfigOrDie(restclient.AddUserAgent(clusterConfig, userAgentName)) return clientset, nil } return nil, err }
func kubeConfigGetter(d *schema.ResourceData) clientcmd.KubeconfigGetter { return func() (*clientcmdapi.Config, error) { kubeConfigStr := d.Get("configdata").(string) return clientcmd.Load([]byte(kubeConfigStr)) } }