func createRoutesForDomain(ns string, domain string, c *k8sclient.Client, oc *oclient.Client, fac *cmdutil.Factory) error { rc, err := c.Services(ns).List(labels.Everything()) if err != nil { util.Errorf("Failed to load services in namespace %s with error %v", ns, err) return err } items := rc.Items for _, service := range items { // TODO use the external load balancer as a way to know if we should create a route? name := service.ObjectMeta.Name if name != "kubernetes" { routes := oc.Routes(ns) _, err = routes.Get(name) if err != nil { hostName := name + "." + domain route := rapi.Route{ ObjectMeta: kapi.ObjectMeta{ Name: name, }, Host: hostName, ServiceName: name, } // lets create the route _, err = routes.Create(&route) if err != nil { util.Errorf("Failed to create the route %s with error %v", name, err) return err } } } } return nil }
func retrieveLoggingProject(r types.DiagnosticResult, masterCfg *configapi.MasterConfig, osClient *client.Client) string { r.Debug("AGL0010", fmt.Sprintf("masterConfig.AssetConfig.LoggingPublicURL: '%s'", masterCfg.AssetConfig.LoggingPublicURL)) projectName := "" if len(masterCfg.AssetConfig.LoggingPublicURL) == 0 { r.Debug("AGL0017", "masterConfig.AssetConfig.LoggingPublicURL is empty") return projectName } loggingUrl, err := url.Parse(masterCfg.AssetConfig.LoggingPublicURL) if err != nil { r.Error("AGL0011", err, fmt.Sprintf("Unable to parse the loggingPublicURL from the masterConfig '%s'", masterCfg.AssetConfig.LoggingPublicURL)) return projectName } routeList, err := osClient.Routes(kapi.NamespaceAll).List(kapi.ListOptions{LabelSelector: loggingSelector.AsSelector()}) if err != nil { r.Error("AGL0012", err, fmt.Sprintf("There was an error while trying to find the route associated with '%s' which is probably transient: %s", loggingUrl, err)) return projectName } for _, route := range routeList.Items { r.Debug("AGL0013", fmt.Sprintf("Comparing URL to route.Spec.Host: %s", route.Spec.Host)) if loggingUrl.Host == route.Spec.Host { if len(projectName) == 0 { projectName = route.ObjectMeta.Namespace r.Info("AGL0015", fmt.Sprintf("Found route '%s' matching logging URL '%s' in project: '%s'", route.ObjectMeta.Name, loggingUrl.Host, projectName)) } else { r.Warn("AGL0019", nil, fmt.Sprintf("Found additional route '%s' matching logging URL '%s' in project: '%s'. This could mean you have multiple logging deployments.", route.ObjectMeta.Name, loggingUrl.Host, projectName)) } } } if len(projectName) == 0 { message := fmt.Sprintf("Unable to find a route matching the loggingPublicURL defined in the master config '%s'. Check that the URL is correct and aggregated logging is deployed.", loggingUrl) r.Error("AGL0014", errors.New(message), message) return "" } project, err := osClient.Projects().Get(projectName) if err != nil { r.Error("AGL0018", err, fmt.Sprintf("There was an error retrieving project '%s' which is most likely a transient error: %s", projectName, err)) return "" } nodeSelector, ok := project.ObjectMeta.Annotations["openshift.io/node-selector"] if !ok || len(nodeSelector) != 0 { r.Warn("AGL0030", nil, fmt.Sprintf(projectNodeSelectorWarning, projectName)) } return projectName }
func createRoutesForDomain(ns string, domain string, c *k8sclient.Client, oc *oclient.Client, fac *cmdutil.Factory) error { rapi.AddToScheme(kapi.Scheme) rapiv1.AddToScheme(kapi.Scheme) rc, err := c.Services(ns).List(kapi.ListOptions{}) if err != nil { util.Errorf("Failed to load services in namespace %s with error %v", ns, err) return err } var labels = make(map[string]string) labels["provider"] = "fabric8" items := rc.Items for _, service := range items { // TODO use the external load balancer as a way to know if we should create a route? name := service.ObjectMeta.Name if name != "kubernetes" { routes := oc.Routes(ns) _, err = routes.Get(name) if err != nil { hostName := name + "." + domain route := rapi.Route{ ObjectMeta: kapi.ObjectMeta{ Labels: labels, Name: name, }, Spec: rapi.RouteSpec{ Host: hostName, To: kapi.ObjectReference{Name: name}, }, } // lets create the route _, err = routes.Create(&route) if err != nil { util.Errorf("Failed to create the route %s with error %v", name, err) return err } } } } return nil }
//checkKibanaRoutesInOauthClient verifies the client contains the correct redirect uris func checkKibanaRoutesInOauthClient(r types.DiagnosticResult, osClient *client.Client, project string, oauthclient *oauthapi.OAuthClient) { r.Debug("AGL0141", "Checking oauthclient redirectURIs for the logging routes...") routeList, err := osClient.Routes(project).List(kapi.ListOptions{LabelSelector: loggingSelector.AsSelector()}) if err != nil { r.Error("AGL0143", err, fmt.Sprintf("Error retrieving the logging routes: %s", err)) return } redirectUris, err := parseRedirectUris(oauthclient.RedirectURIs) if err != nil { r.Error("AGL0145", err, "Error parsing the OAuthClient.RedirectURIs") return } for _, route := range routeList.Items { if !redirectUris.Has(route.Spec.Host) { message := fmt.Sprintf("OauthClient '%s' does not include a redirectURI for route '%s' which is '%s'", oauthclient.ObjectMeta.Name, route.ObjectMeta.Name, route.Spec.Host) r.Error("AGL0147", errors.New(message), message) } } return }