Browse Source

Merge branch 'master' of github.com-meehawk:porter-dev/porter into fix/logging

Soham Parekh 3 years ago
parent
commit
ea21e7e56d
3 changed files with 53 additions and 25 deletions
  1. 20 0
      api/server/handlers/infra/forms.go
  2. 32 25
      internal/opa/opa.go
  3. 1 0
      workers/jobs/recommender.go

+ 20 - 0
api/server/handlers/infra/forms.go

@@ -408,6 +408,16 @@ tabs:
           value: c6i.xlarge
         - label: c6i.2xlarge
           value: c6i.2xlarge
+        - label: c6i.4xlarge
+          value: c6i.4xlarge
+        - label: m6i.large
+          value: m6i.large
+        - label: m6i.xlarge
+          value: m6i.xlarge
+        - label: m6i.2xlarge
+          value: m6i.2xlarge
+        - label: m6i.4xlarge
+          value: m6i.4xlarge
         - label: r5.large
           value: r5.large
         - value: r5.xlarge
@@ -506,6 +516,16 @@ tabs:
           value: c6i.xlarge
         - label: c6i.2xlarge
           value: c6i.2xlarge
+        - label: c6i.4xlarge
+          value: c6i.4xlarge
+        - label: m6i.large
+          value: m6i.large
+        - label: m6i.xlarge
+          value: m6i.xlarge
+        - label: m6i.2xlarge
+          value: m6i.2xlarge
+        - label: m6i.4xlarge
+          value: m6i.4xlarge
     - type: number-input
       label: Minimum number of EC2 instances to create in the application autoscaling group.
       variable: additional_nodegroup_min_instances

+ 32 - 25
internal/opa/opa.go

@@ -98,35 +98,42 @@ func (runner *KubernetesOPARunner) GetRecommendations(categories []string) ([]*O
 
 	res := make([]*OPARecommenderQueryResult, 0)
 
-	for _, name := range collectionNames {
-		// look up to determine if the name is registered
-		queryCollection, exists := runner.Policies[name]
+	// ping the cluster with a version check to make sure it's reachable - if not, return an error
+	_, err := runner.k8sAgent.Clientset.Discovery().ServerVersion()
 
-		if !exists {
-			return nil, fmt.Errorf("No policies for %s found", name)
-		}
+	if err != nil {
+		fmt.Printf("discovery check failed: %v\n", err.Error())
+	} else {
+		for _, name := range collectionNames {
+			// look up to determine if the name is registered
+			queryCollection, exists := runner.Policies[name]
 
-		var currResults []*OPARecommenderQueryResult
-		var err error
-
-		switch queryCollection.Kind {
-		case HelmRelease:
-			currResults, err = runner.runHelmReleaseQueries(name, queryCollection)
-		case Pod:
-			currResults, err = runner.runPodQueries(name, queryCollection)
-		case CRDList:
-			currResults, err = runner.runCRDListQueries(name, queryCollection)
-		default:
-			fmt.Printf("%s is not a supported query kind", queryCollection.Kind)
-			continue
-		}
+			if !exists {
+				return nil, fmt.Errorf("No policies for %s found", name)
+			}
 
-		if err != nil {
-			fmt.Printf("%s", err.Error())
-			continue
-		}
+			var currResults []*OPARecommenderQueryResult
+			var err error
+
+			switch queryCollection.Kind {
+			case HelmRelease:
+				currResults, err = runner.runHelmReleaseQueries(name, queryCollection)
+			case Pod:
+				currResults, err = runner.runPodQueries(name, queryCollection)
+			case CRDList:
+				currResults, err = runner.runCRDListQueries(name, queryCollection)
+			default:
+				fmt.Printf("%s is not a supported query kind", queryCollection.Kind)
+				continue
+			}
+
+			if err != nil {
+				fmt.Printf("%s", err.Error())
+				continue
+			}
 
-		res = append(res, currResults...)
+			res = append(res, currResults...)
+		}
 	}
 
 	return res, nil

+ 1 - 0
workers/jobs/recommender.go

@@ -204,6 +204,7 @@ func (n *recommender) Run() error {
 			Repo:                      n.repo,
 			DigitalOceanOAuth:         n.doConf,
 			AllowInClusterConnections: false,
+			Timeout:                   5 * time.Second,
 		})
 
 		if err != nil {