Просмотр исходного кода

fallback to server metadata default helm chart repos

Mohammed Nafees 3 лет назад
Родитель
Сommit
adbd3bf1a6
3 измененных файлов с 48 добавлено и 9 удалено
  1. 23 0
      api/client/base.go
  2. 1 1
      api/server/router/base.go
  3. 24 8
      cli/cmd/preview/utils.go

+ 23 - 0
api/client/base.go

@@ -0,0 +1,23 @@
+package client
+
+import (
+	"context"
+
+	sharedConfig "github.com/porter-dev/porter/api/server/shared/config"
+)
+
+func (c *Client) GetPorterInstanceMetadata(ctx context.Context) (*sharedConfig.Metadata, error) {
+	resp := &sharedConfig.Metadata{}
+
+	err := c.getRequest(
+		"/metadata",
+		nil,
+		resp,
+	)
+
+	if err != nil {
+		return nil, err
+	}
+
+	return resp, nil
+}

+ 1 - 1
api/server/router/base.go

@@ -81,7 +81,7 @@ func GetBaseRoutes(
 		Router:   r,
 	})
 
-	// GET /api/capabilities -> user.NewUserCreateHandler
+	// GET /api/metadata -> metadata.NewMetadataGetHandler
 	getMetadataEndpoint := factory.NewAPIEndpoint(
 		&types.APIRequestMetadata{
 			Verb:   types.APIVerbGet,

+ 24 - 8
cli/cmd/preview/utils.go

@@ -60,38 +60,54 @@ func GetSource(projectID uint, resourceName string, input map[string]interface{}
 		output.Version = "latest"
 	}
 
-	output.IsApplication = output.Repo == "https://charts.getporter.dev"
+	apiClient := config.GetAPIClient()
+
+	serverMetadata, err := apiClient.GetPorterInstanceMetadata(context.Background())
+
+	if err != nil {
+		return nil, fmt.Errorf("error fetching Porter instance metadata: %w", err)
+	}
 
 	if output.Repo == "" {
-		output.Repo = "https://charts.getporter.dev"
+		if serverMetadata.DefaultAppHelmRepoURL != "" {
+			output.Repo = serverMetadata.DefaultAppHelmRepoURL
+		} else {
+			output.Repo = "https://charts.getporter.dev"
+		}
 
 		values, err := existsInRepo(projectID, output.Name, output.Version, output.Repo)
 
 		if err == nil {
-			// found in "https://charts.getporter.dev"
 			output.SourceValues = values
-			output.IsApplication = true
+			output.IsApplication = output.Repo == "https://charts.getporter.dev"
+
 			return output, nil
 		}
 
-		output.Repo = "https://chart-addons.getporter.dev"
+		if serverMetadata.DefaultAddonHelmRepoURL != "" {
+			output.Repo = serverMetadata.DefaultAddonHelmRepoURL
+		} else {
+			output.Repo = "https://chart-addons.getporter.dev"
+		}
 
 		values, err = existsInRepo(projectID, output.Name, output.Version, output.Repo)
 
 		if err == nil {
-			// found in https://chart-addons.getporter.dev
 			output.SourceValues = values
+
 			return output, nil
 		}
 
-		return nil, fmt.Errorf("error parsing source for resource '%s': source does not exist in "+
-			"'https://charts.getporter.dev' or 'https://chart-addons.getporter.dev'", resourceName)
+		return nil, fmt.Errorf("error parsing source for resource '%s': source chart does not exist in the default "+
+			"Helm repositories", resourceName)
 	} else {
 		// we look in the passed-in repo
 		values, err := existsInRepo(projectID, output.Name, output.Version, output.Repo)
 
 		if err == nil {
 			output.SourceValues = values
+			output.IsApplication = output.Repo == "https://charts.getporter.dev"
+
 			return output, nil
 		}
 	}